import type { BaseNodeData, ListItem } from '../components';
import type { PreviewNodeConnectionInfo } from '../hooks';
import type { CategoryManifest, HandleManifest, NodeManifest } from '../schema/node-definition';
import { CategoryTree } from './CategoryTree';
interface NodeHandles {
    source?: HandleManifest[];
    target?: HandleManifest[];
}
export declare class NodeTypeRegistry {
    private categoryById;
    private nodeByType;
    private nodeHandles;
    private categoriesByParent;
    private nodesByCategory;
    private categoryAncestors;
    private categoryDescendants;
    private categoryTree;
    registerNodeManifests(nodes: NodeManifest[]): void;
    registerManifest(nodeManifests: NodeManifest[], categoryManifests: CategoryManifest[]): void;
    getManifest(nodeType: string): NodeManifest | undefined;
    getAllManifests(): NodeManifest[];
    getAllCategories(): string[];
    getAllNodeTypes(): string[];
    getHandlesByNodeType(nodeType: string): NodeHandles;
    getDefaultHandle(nodeType: string, handleType: 'source' | 'target'): HandleManifest | undefined;
    createDefaultData(nodeType: string, label?: string): BaseNodeData;
    getCategoryTree(): CategoryTree | null;
    clear(): void;
    isValidCategoryForConnection(categoryId: string, previewNodeConnectionInfo: PreviewNodeConnectionInfo[] | null | undefined): boolean;
    isValidNodeForConnection(nodeType: string, previewNodeConnectionInfo: PreviewNodeConnectionInfo[] | null | undefined): boolean;
    private createConnectionValidator;
    getNodeOptions(options: {
        connections?: PreviewNodeConnectionInfo[] | null;
        category?: string;
        search?: string;
        flattenAll?: boolean;
        flattenSinglePath?: boolean;
    }): ListItem[];
}
export {};
//# sourceMappingURL=NodeTypeRegistry.d.ts.map