import { z } from 'zod';
declare const ConfigSchema: z.ZodObject<{
    apiKey: z.ZodOptional<z.ZodString>;
    baseUrl: z.ZodDefault<z.ZodString>;
    nodeEnv: z.ZodDefault<z.ZodEnum<["development", "production", "test"]>>;
    logLevel: z.ZodDefault<z.ZodEnum<["error", "warn", "info", "debug"]>>;
    defaultModels: z.ZodObject<{
        text2img: z.ZodDefault<z.ZodString>;
        img2img: z.ZodDefault<z.ZodString>;
        video: z.ZodDefault<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        text2img: string;
        img2img: string;
        video: string;
    }, {
        text2img?: string | undefined;
        img2img?: string | undefined;
        video?: string | undefined;
    }>;
    cache: z.ZodObject<{
        enabled: z.ZodDefault<z.ZodBoolean>;
        ttl: z.ZodDefault<z.ZodNumber>;
        maxSize: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        enabled: boolean;
        ttl: number;
        maxSize: number;
    }, {
        enabled?: boolean | undefined;
        ttl?: number | undefined;
        maxSize?: number | undefined;
    }>;
    limits: z.ZodObject<{
        maxImageSize: z.ZodDefault<z.ZodNumber>;
        maxBatchSize: z.ZodDefault<z.ZodNumber>;
        requestTimeout: z.ZodDefault<z.ZodNumber>;
        maxConcurrentRequests: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        maxImageSize: number;
        maxBatchSize: number;
        requestTimeout: number;
        maxConcurrentRequests: number;
    }, {
        maxImageSize?: number | undefined;
        maxBatchSize?: number | undefined;
        requestTimeout?: number | undefined;
        maxConcurrentRequests?: number | undefined;
    }>;
    fileOutput: z.ZodObject<{
        saveLocation: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        saveLocation?: string | undefined;
    }, {
        saveLocation?: string | undefined;
    }>;
    security: z.ZodObject<{
        validateInputs: z.ZodDefault<z.ZodBoolean>;
        sanitizeLogs: z.ZodDefault<z.ZodBoolean>;
        allowedImageFormats: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    }, "strip", z.ZodTypeAny, {
        validateInputs: boolean;
        sanitizeLogs: boolean;
        allowedImageFormats: string[];
    }, {
        validateInputs?: boolean | undefined;
        sanitizeLogs?: boolean | undefined;
        allowedImageFormats?: string[] | undefined;
    }>;
}, "strip", z.ZodTypeAny, {
    baseUrl: string;
    nodeEnv: "development" | "production" | "test";
    logLevel: "error" | "warn" | "info" | "debug";
    defaultModels: {
        text2img: string;
        img2img: string;
        video: string;
    };
    cache: {
        enabled: boolean;
        ttl: number;
        maxSize: number;
    };
    limits: {
        maxImageSize: number;
        maxBatchSize: number;
        requestTimeout: number;
        maxConcurrentRequests: number;
    };
    fileOutput: {
        saveLocation?: string | undefined;
    };
    security: {
        validateInputs: boolean;
        sanitizeLogs: boolean;
        allowedImageFormats: string[];
    };
    apiKey?: string | undefined;
}, {
    defaultModels: {
        text2img?: string | undefined;
        img2img?: string | undefined;
        video?: string | undefined;
    };
    cache: {
        enabled?: boolean | undefined;
        ttl?: number | undefined;
        maxSize?: number | undefined;
    };
    limits: {
        maxImageSize?: number | undefined;
        maxBatchSize?: number | undefined;
        requestTimeout?: number | undefined;
        maxConcurrentRequests?: number | undefined;
    };
    fileOutput: {
        saveLocation?: string | undefined;
    };
    security: {
        validateInputs?: boolean | undefined;
        sanitizeLogs?: boolean | undefined;
        allowedImageFormats?: string[] | undefined;
    };
    apiKey?: string | undefined;
    baseUrl?: string | undefined;
    nodeEnv?: "development" | "production" | "test" | undefined;
    logLevel?: "error" | "warn" | "info" | "debug" | undefined;
}>;
export type Config = z.infer<typeof ConfigSchema>;
declare class ConfigurationLoader {
    private static instance;
    static load(): Config;
    static reset(): void;
    static getMaskedApiKey(apiKey: string): string;
}
export declare function getConfig(): Config;
export declare const config: {
    baseUrl: string;
    nodeEnv: "development" | "production" | "test";
    logLevel: "error" | "warn" | "info" | "debug";
    defaultModels: {
        text2img: string;
        img2img: string;
        video: string;
    };
    cache: {
        enabled: boolean;
        ttl: number;
        maxSize: number;
    };
    limits: {
        maxImageSize: number;
        maxBatchSize: number;
        requestTimeout: number;
        maxConcurrentRequests: number;
    };
    fileOutput: {
        saveLocation?: string | undefined;
    };
    security: {
        validateInputs: boolean;
        sanitizeLogs: boolean;
        allowedImageFormats: string[];
    };
    apiKey?: string | undefined;
};
export declare const getMaskedApiKey: (apiKey: string) => string;
export declare const resetConfig: () => void;
export { ConfigurationLoader };
//# sourceMappingURL=config.d.ts.map