export interface BuilderHintVariation {
    content: string;
    displayOptions?: {
        show?: Record<string, unknown[]>;
        hide?: Record<string, unknown[]>;
    };
}
export interface ParameterBuilderHint {
    propertyHint: string;
    placeholderSupported?: boolean;
}
export interface NodeProperty {
    name: string;
    displayName: string;
    type: string;
    description?: string;
    hint?: string;
    builderHint?: ParameterBuilderHint;
    default?: unknown;
    required?: boolean;
    options?: Array<{
        name: string;
        value?: string | number | boolean;
        description?: string;
        displayName?: string;
        builderHint?: ParameterBuilderHint;
        values?: NodeProperty[];
    }>;
    displayOptions?: {
        show?: Record<string, unknown[]>;
        hide?: Record<string, unknown[]>;
    };
    disabledOptions?: {
        show?: Record<string, unknown[]>;
        hide?: Record<string, unknown[]>;
    };
    typeOptions?: Record<string, unknown>;
    noDataExpression?: boolean;
    modes?: Array<{
        name: string;
        displayName?: string;
        type?: string;
        typeOptions?: Record<string, unknown>;
    }>;
}
export interface NodeTypeDescription {
    name: string;
    displayName: string;
    description?: string;
    group: string[];
    version: number | number[];
    defaultVersion?: number;
    properties: NodeProperty[];
    credentials?: Array<{
        name: string;
        required?: boolean;
    }>;
    inputs: string[] | Array<{
        type: string;
        displayName?: string;
    }>;
    outputs: string[] | Array<{
        type: string;
        displayName?: string;
    }>;
    subtitle?: string;
    usableAsTool?: boolean;
    hidden?: boolean;
    documentationUrl?: string;
    schemaPath?: string;
}
export interface DiscriminatorCombination {
    resource?: string;
    operation?: string;
    mode?: string;
    authentication?: string;
    trigger?: string;
    [key: string]: string | undefined;
}
export interface VersionGroup {
    versions: number[];
    highestVersion: number;
    properties: NodeProperty[];
}
export interface OutputSchema {
    resource: string;
    operation: string;
    schema: JsonSchema;
}
export interface JsonSchema {
    type?: string | string[];
    properties?: Record<string, JsonSchema>;
    items?: JsonSchema;
    additionalProperties?: boolean | JsonSchema;
    required?: string[];
    oneOf?: JsonSchema[];
    anyOf?: JsonSchema[];
    allOf?: JsonSchema[];
    enum?: unknown[];
    const?: unknown;
    $ref?: string;
}
export declare function discoverSchemasForNode(nodeName: string, version: number, schemaPath?: string): OutputSchema[];
export declare function jsonSchemaToTypeScript(schema: JsonSchema, indent?: number): string;
export declare function findSchemaForOperation(schemas: OutputSchema[], resource: string, operation: string): OutputSchema | undefined;
export interface ConfigTypeInfo {
    typeName: string;
    resource?: string;
    operation?: string;
    discriminators: Record<string, string>;
}
export interface DiscriminatedUnionResult {
    code: string;
    configTypes: ConfigTypeInfo[];
}
export declare function narrowDisplayOptionsByDisabled(prop: NodeProperty): {
    displayOptions: NodeProperty['displayOptions'];
    fullyDisabled: boolean;
};
export declare function tryMergeUxForkVariants(a: NodeProperty['displayOptions'] | undefined, b: NodeProperty['displayOptions'] | undefined): NodeProperty['displayOptions'] | null;
export declare function mapPropertyType(prop: NodeProperty, discriminatorContext?: DiscriminatorCombination): string;
export declare function extractDiscriminatorCombinations(node: NodeTypeDescription): DiscriminatorCombination[];
export declare function getPropertiesForCombination(node: NodeTypeDescription, combination: DiscriminatorCombination): NodeProperty[];
export declare function propertyAppliesToVersion(prop: NodeProperty, version: number): boolean;
export declare function filterPropertiesForVersion(properties: NodeProperty[], version: number): NodeProperty[];
export declare function generateDiscriminatedUnion(node: NodeTypeDescription): string;
export declare function generatePropertyJSDoc(prop: NodeProperty, discriminatorContext?: DiscriminatorCombination): string;
export declare function generateNodeJSDoc(node: NodeTypeDescription): string;
export declare function generatePropertyLine(prop: NodeProperty, optional: boolean, discriminatorContext?: DiscriminatorCombination): string;
export declare function groupVersionsByProperties(nodes: NodeTypeDescription[]): VersionGroup[];
export declare function getHighestVersion(version: number | number[]): number;
export declare function versionToTypeName(version: number): string;
export declare function nodeNameToFileName(nodeName: string): string;
export declare function getPackageName(nodeName: string): string;
export declare function buildDiscriminatorPath(combo: DiscriminatorCombination): string;
export declare function hasDiscriminatorPattern(node: NodeTypeDescription): boolean;
export interface DiscriminatorTree {
    type: 'resource_operation' | 'single';
    resources?: Map<string, string[]>;
    discriminatorName?: string;
    discriminatorValues?: string[];
}
export declare function buildDiscriminatorTree(combinations: DiscriminatorCombination[]): DiscriminatorTree;
export declare function generateSharedFile(node: NodeTypeDescription, version: number, _importDepth?: number): string;
export declare function generateDiscriminatorFile(node: NodeTypeDescription, version: number, combo: DiscriminatorCombination, props: NodeProperty[], schema?: JsonSchema, _importDepth?: number): string;
export declare function generateResourceIndexFile(node: NodeTypeDescription, version: number, resource: string, operations: string[]): string;
export declare function generateSplitVersionIndexFile(node: NodeTypeDescription, version: number, tree: DiscriminatorTree): string;
export declare function planSplitVersionFiles(node: NodeTypeDescription, version: number): Map<string, string>;
export declare function versionToFileName(version: number): string;
export declare function generateSingleVersionTypeFile(node: NodeTypeDescription, specificVersion: number): string;
export declare function generateVersionIndexFile(node: NodeTypeDescription, versions: number[], splitVersions?: Set<number>): string;
export declare function generateNodeTypeFile(nodes: NodeTypeDescription | NodeTypeDescription[]): string;
export declare function generateIndexFile(nodes: NodeTypeDescription[]): string;
export interface AIInputTypeInfo {
    type: string;
    required: boolean;
    displayOptions?: {
        show?: Record<string, unknown[]>;
        hide?: Record<string, unknown[]>;
    };
}
export declare function extractAIInputTypes(node: NodeTypeDescription): AIInputTypeInfo[];
export declare function extractAIInputTypesFromBuilderHint(node: NodeTypeDescription, combo?: DiscriminatorCombination): AIInputTypeInfo[];
export declare function generateNarrowedSubnodeConfig(aiInputTypes: AIInputTypeInfo[], nodeName: string, versionSuffix: string, comboSuffix?: string): string | null;
export declare function getSubnodeInstanceTypeImports(aiInputTypes: AIInputTypeInfo[]): string[];
export declare function extractOutputTypes(node: NodeTypeDescription): string[];
export declare function groupNodesByOutputType(nodes: NodeTypeDescription[]): Record<string, string[]>;
export declare function generateSubnodeUnionTypes(nodes: NodeTypeDescription[]): string;
export declare function generateSubnodesFile(nodes: NodeTypeDescription[]): string;
export declare function getSubnodeOutputType(node: NodeTypeDescription): string | undefined;
export declare function loadNodeTypes(jsonPath: string, packageName?: string): Promise<NodeTypeDescription[]>;
export interface GenerationOptions {
    nodes: NodeTypeDescription[];
    outputDir: string;
}
export interface GenerationResult {
    nodeCount: number;
}
export declare function orchestrateGeneration(options: GenerationOptions): Promise<GenerationResult>;
export declare function generateTypes(): Promise<void>;
