import { CodeMaker } from 'codemaker';
import { GenerateOptions, ImportBase } from './base';
import { ImportSpec } from '../config';
export interface ManifestObjectDefinition {
    apiVersion?: string;
    kind?: string;
    items?: ManifestObjectDefinition[];
    metadata?: {
        name?: string;
    };
    spec?: {
        group: string;
        names: {
            kind: string;
            [key: string]: any;
        };
        versions?: Array<{
            name: string;
            schema?: {
                openAPIV3Schema?: any;
            };
            [key: string]: any;
        }>;
        version?: string;
        validation?: {
            openAPIV3Schema?: any;
        };
        [key: string]: any;
    };
}
export declare class CustomResourceDefinition {
    private readonly kind;
    private readonly versions;
    readonly group: string;
    constructor(manifest: ManifestObjectDefinition);
    merge(crd: CustomResourceDefinition): void;
    private addVersions;
    get key(): string;
    generateTypeScript(code: CodeMaker, options: GenerateOptions): Promise<void>;
}
export declare class ImportCustomResourceDefinition extends ImportBase {
    static fromSpec(importSpec: ImportSpec): Promise<ImportCustomResourceDefinition>;
    readonly rawManifest: string;
    private readonly groups;
    private constructor();
    get moduleNames(): string[];
    protected generateTypeScript(code: CodeMaker, moduleName: string, options: GenerateOptions): Promise<void>;
}
export declare function safeParseCrds(manifest: string): ManifestObjectDefinition[];
