import { Logger } from '@n8n/backend-common';
import type { ICredentialType, ICredentialTypeData, INodeCredentialDescription, INodeType, INodeTypeData, INodeTypeDescription, INodeTypeNameVersion, IVersionedNodeType, KnownNodesAndCredentials } from 'n8n-workflow';
export type Types = {
    nodes: INodeTypeDescription[];
    credentials: ICredentialType[];
};
export declare abstract class DirectoryLoader {
    readonly directory: string;
    protected excludeNodes: string[];
    protected includeNodes: string[];
    isLazyLoaded: boolean;
    loadedNodes: INodeTypeNameVersion[];
    nodeTypes: INodeTypeData;
    credentialTypes: ICredentialTypeData;
    known: KnownNodesAndCredentials;
    types: Types;
    private typesReleased;
    readonly nodesByCredential: Record<string, string[]>;
    protected readonly logger: Logger;
    protected removeNonIncludedNodes: boolean;
    constructor(directory: string, excludeNodes?: string[], includeNodes?: string[]);
    abstract packageName: string;
    abstract loadAll(): Promise<void>;
    reset(): void;
    releaseTypes(): void;
    ensureTypesLoaded(): Promise<void>;
    protected resolvePath(file: string): string;
    protected extractNodeTypes(fullNodeTypes: string[], packageName: string): string[];
    private loadClass;
    loadNodeFromFile(filePath: string, packageVersion?: string): void;
    getNode(nodeType: string): import("n8n-workflow").LoadedClass<INodeType | IVersionedNodeType>;
    loadCredentialFromFile(filePath: string): void;
    getCredential(credentialType: string): import("n8n-workflow").LoadedClass<ICredentialType>;
    getCredentialsForNode(object: IVersionedNodeType | INodeType): INodeCredentialDescription[];
    getVersionedNodeTypeAll(object: IVersionedNodeType | INodeType): INodeType[];
    private getCodex;
    private addCodex;
    private addLoadOptionsMethods;
    private applySpecialNodeParameters;
    private getIconPath;
    private fixIconPaths;
    static applyDeclarativeNodeOptionParameters(nodeType: INodeType): void;
    private unloadAll;
}
