import type { CodeBuilderSearchResult, NodeRequest, NodeTypeParser } from '@n8n/ai-utilities/node-catalog';
import { Logger } from '@n8n/backend-common';
import { LoadNodesAndCredentials } from '../load-nodes-and-credentials';
export type NodeFilter = (nodeId: string) => boolean;
export interface SearchNodesOptions {
    nodeFilter?: NodeFilter;
}
export interface NodeTypeDefinitionRequest {
    nodeId: string;
    version?: string;
    resource?: string;
    operation?: string;
    mode?: string;
}
export interface NodeTypeDefinitionResult {
    content: string;
    version?: string;
    error?: string;
    builderHint?: string;
}
export declare class NodeCatalogService {
    private readonly loadNodesAndCredentials;
    private readonly logger;
    private nodeTypeParser;
    private nodeDefinitionDirs;
    private descriptionsById;
    private initPromise;
    private readonly searchStates;
    private readonly getCache;
    private readonly getDefinitionCache;
    private readonly suggestCache;
    constructor(loadNodesAndCredentials: LoadNodesAndCredentials, logger: Logger);
    initialize(): Promise<void>;
    getNodeTypeParser(): NodeTypeParser;
    getNodeDefinitionDirs(): string[];
    searchNodes(queries: string[], options?: SearchNodesOptions): Promise<CodeBuilderSearchResult>;
    getNodeTypes(nodeIds: NodeRequest[]): Promise<string>;
    getNodeTypeDefinition(request: NodeTypeDefinitionRequest): Promise<NodeTypeDefinitionResult>;
    getSuggestedNodes(categories: string[]): Promise<string>;
    private doInitialize;
    private refreshNodeTypes;
    private indexDescriptions;
    private toDefinitionRequest;
    private getBuiltinNodeTypeDefinition;
    private getSynthesizedNodeTypeDefinition;
    private selectDescription;
    private versionNotFoundError;
    private resolveBuiltinNodeDefinitionDirs;
}
