export interface BuilderHintVariation { content: string; displayOptions?: { show?: Record; hide?: Record; }; } 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; hide?: Record; }; disabledOptions?: { show?: Record; hide?: Record; }; typeOptions?: Record; noDataExpression?: boolean; modes?: Array<{ name: string; displayName?: string; type?: string; typeOptions?: Record; }>; } 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; 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; } 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; 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; 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): 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; hide?: Record; }; } 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; 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; export interface GenerationOptions { nodes: NodeTypeDescription[]; outputDir: string; } export interface GenerationResult { nodeCount: number; } export declare function orchestrateGeneration(options: GenerationOptions): Promise; export declare function generateTypes(): Promise;