import { z } from 'zod';
export declare const AIConfigSchema: z.ZodObject<{
    openai: z.ZodObject<{
        apiKey: z.ZodString;
        model: z.ZodDefault<z.ZodEnum<["gpt-4", "gpt-4-turbo", "gpt-3.5-turbo"]>>;
        maxTokens: z.ZodDefault<z.ZodNumber>;
        temperature: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        model: "gpt-4" | "gpt-4-turbo" | "gpt-3.5-turbo";
        temperature: number;
        maxTokens: number;
        apiKey: string;
    }, {
        apiKey: string;
        model?: "gpt-4" | "gpt-4-turbo" | "gpt-3.5-turbo" | undefined;
        temperature?: number | undefined;
        maxTokens?: number | undefined;
    }>;
    googleCloud: z.ZodObject<{
        projectId: z.ZodOptional<z.ZodString>;
        keyFilename: z.ZodOptional<z.ZodString>;
        apiKey: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        apiKey?: string | undefined;
        projectId?: string | undefined;
        keyFilename?: string | undefined;
    }, {
        apiKey?: string | undefined;
        projectId?: string | undefined;
        keyFilename?: string | undefined;
    }>;
    pinecone: z.ZodObject<{
        apiKey: z.ZodString;
        environment: z.ZodString;
        indexName: z.ZodDefault<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        environment: string;
        apiKey: string;
        indexName: string;
    }, {
        environment: string;
        apiKey: string;
        indexName?: string | undefined;
    }>;
    removeBg: z.ZodObject<{
        apiKey: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        apiKey: string;
    }, {
        apiKey: string;
    }>;
    redis: z.ZodObject<{
        url: z.ZodDefault<z.ZodString>;
        ttl: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        url: string;
        ttl: number;
    }, {
        url?: string | undefined;
        ttl?: number | undefined;
    }>;
    rateLimit: z.ZodObject<{
        windowMs: z.ZodDefault<z.ZodNumber>;
        maxRequests: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        windowMs: number;
        maxRequests: number;
    }, {
        windowMs?: number | undefined;
        maxRequests?: number | undefined;
    }>;
    costOptimization: z.ZodObject<{
        enableCaching: z.ZodDefault<z.ZodBoolean>;
        enableBatching: z.ZodDefault<z.ZodBoolean>;
        maxCostPerRequest: z.ZodDefault<z.ZodNumber>;
        useCheaperModelsThreshold: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        enableCaching: boolean;
        enableBatching: boolean;
        maxCostPerRequest: number;
        useCheaperModelsThreshold: number;
    }, {
        enableCaching?: boolean | undefined;
        enableBatching?: boolean | undefined;
        maxCostPerRequest?: number | undefined;
        useCheaperModelsThreshold?: number | undefined;
    }>;
}, "strip", z.ZodTypeAny, {
    openai: {
        model: "gpt-4" | "gpt-4-turbo" | "gpt-3.5-turbo";
        temperature: number;
        maxTokens: number;
        apiKey: string;
    };
    googleCloud: {
        apiKey?: string | undefined;
        projectId?: string | undefined;
        keyFilename?: string | undefined;
    };
    pinecone: {
        environment: string;
        apiKey: string;
        indexName: string;
    };
    removeBg: {
        apiKey: string;
    };
    redis: {
        url: string;
        ttl: number;
    };
    rateLimit: {
        windowMs: number;
        maxRequests: number;
    };
    costOptimization: {
        enableCaching: boolean;
        enableBatching: boolean;
        maxCostPerRequest: number;
        useCheaperModelsThreshold: number;
    };
}, {
    openai: {
        apiKey: string;
        model?: "gpt-4" | "gpt-4-turbo" | "gpt-3.5-turbo" | undefined;
        temperature?: number | undefined;
        maxTokens?: number | undefined;
    };
    googleCloud: {
        apiKey?: string | undefined;
        projectId?: string | undefined;
        keyFilename?: string | undefined;
    };
    pinecone: {
        environment: string;
        apiKey: string;
        indexName?: string | undefined;
    };
    removeBg: {
        apiKey: string;
    };
    redis: {
        url?: string | undefined;
        ttl?: number | undefined;
    };
    rateLimit: {
        windowMs?: number | undefined;
        maxRequests?: number | undefined;
    };
    costOptimization: {
        enableCaching?: boolean | undefined;
        enableBatching?: boolean | undefined;
        maxCostPerRequest?: number | undefined;
        useCheaperModelsThreshold?: number | undefined;
    };
}>;
export type AIConfig = z.infer<typeof AIConfigSchema>;
export declare const defaultAIConfig: AIConfig;
export declare function validateAIConfig(config: unknown): AIConfig;
//# sourceMappingURL=config.d.ts.map