import { GenerateOptions } from "./generate.js";
import { CustomResourceDefinition } from "./upstream.js";
type CRDResult = {
    name: string;
    crd: CustomResourceDefinition;
    version: string;
};
type ClassContextResult = {
    line: string;
    insideClass: boolean;
    braceBalance: number;
};
/**
 * Performs post-processing on generated TypeScript files.
 *
 * @param allResults The array of CRD results.
 * @param opts The options for post-processing.
 */
export declare function postProcessing(allResults: CRDResult[], opts: GenerateOptions): Promise<void>;
/**
 * Creates a map linking each file to its corresponding CRD result.
 *
 * @param allResults - The array of CRD results.
 * @returns A map linking file names to their corresponding CRD results.
 */
export declare function mapFilesToCRD(allResults: CRDResult[]): Record<string, CRDResult>;
/**
 * Processes the list of files, applying CRD post-processing to each.
 *
 * @param files - The list of file names to process.
 * @param fileResultMap - A map linking file names to their corresponding CRD results.
 * @param opts - Options for the generation process.
 */
export declare function processFiles(files: string[], fileResultMap: Record<string, CRDResult>, opts: GenerateOptions): Promise<void>;
/**
 * Handles the processing of a single file: reading, modifying, and writing back to disk.
 *
 * @param filePath - The path to the file to be processed.
 * @param fileResult - The associated CRD result for this file.
 * @param fileResult.name - The name of the schema.
 * @param fileResult.crd - The CustomResourceDefinition object.
 * @param fileResult.version - The version of the CRD.
 * @param opts - Options for the generation process.
 */
export declare function processAndModifySingleFile(filePath: string, fileResult: CRDResult, opts: GenerateOptions): void;
/**
 * Processes the TypeScript file content, applying wrapping and property modifications.
 *
 * @param content The content of the TypeScript file.
 * @param name The name of the schema.
 * @param crd The CustomResourceDefinition object.
 * @param version The version of the CRD.
 * @param opts The options for processing.
 * @returns The processed TypeScript file content.
 */
export declare function applyCRDPostProcessing(content: string, name: string, crd: CustomResourceDefinition, version: string, opts: GenerateOptions): string;
/**
 * Retrieves the properties of the `GenericKind` class, excluding dynamic properties like `[key: string]: any`.
 *
 * @returns An array of property names that belong to `GenericKind`.
 */
export declare function getGenericKindProperties(): string[];
/**
 * Collects interface names from TypeScript file lines.
 *
 * @param lines The lines of the file content.
 * @returns A set of found interface names.
 */
export declare function collectInterfaceNames(lines: string[]): Set<string>;
/**
 * Identifies whether a line declares a class that extends `GenericKind`.
 *
 * @param line The current line of code.
 * @returns True if the line defines a class that extends `GenericKind`, false otherwise.
 */
export declare function isClassExtendingGenericKind(line: string): boolean;
/**
 * Adjusts the brace balance to determine if the parser is within a class definition.
 *
 * @param line The current line of code.
 * @param braceBalance The current balance of curly braces.
 * @returns The updated brace balance.
 */
export declare function updateBraceBalance(line: string, braceBalance: number): number;
/**
 * Wraps the generated TypeScript file with fluent client elements (`GenericKind` and `RegisterKind`).
 *
 * @param lines The generated TypeScript lines.
 * @param name The name of the schema.
 * @param crd The CustomResourceDefinition object.
 * @param version The version of the CRD.
 * @param npmPackage The NPM package name for the fluent client.
 * @returns The processed TypeScript lines.
 */
export declare function wrapWithFluentClient(lines: string[], name: string, crd: CustomResourceDefinition, version: string, npmPackage?: string): string[];
/**
 * Processes the lines of the TypeScript file, focusing on classes extending `GenericKind`.
 *
 * @param lines The lines of the file content.
 * @param genericKindProperties The list of properties from `GenericKind`.
 * @param foundInterfaces The set of found interfaces in the file.
 * @returns The processed lines.
 */
export declare function processLines(lines: string[], genericKindProperties: string[], foundInterfaces: Set<string>): string[];
/**
 * Processes a single line inside a class extending `GenericKind`.
 *
 * @param line The current line of code.
 * @param insideClass Whether we are inside a class context.
 * @param braceBalance The current brace balance to detect when we exit the class.
 * @param genericKindProperties The list of properties from `GenericKind`.
 * @param foundInterfaces The set of found interfaces in the file.
 * @returns An object containing the updated line, updated insideClass flag, and braceBalance.
 */
export declare function processClassContext(line: string, insideClass: boolean, braceBalance: number, genericKindProperties: string[], foundInterfaces: Set<string>): ClassContextResult;
/**
 * Handles logging for errors with stack trace.
 *
 * @param error The error object to log.
 * @param filePath The path of the file being processed.
 * @param logFn The logging function.
 */
export declare function logError(error: Error, filePath: string, logFn: (msg: string) => void): void;
export {};
//# sourceMappingURL=postProcessing.d.ts.map