/**
 * Model Profile Loader
 *
 * Loads model profiles from config/model-profiles/*.json at runtime.
 * Previously these profiles were reference-only documentation; now they
 * can be consumed by the ModelRouter for richer configuration.
 *
 * Profiles include pricing, rate limits, server optimization settings,
 * and running configurations that the hardcoded ModelPresets lack.
 */
import { z } from 'zod';
/**
 * Schema for a model profile JSON file.
 * Validates the structure while allowing provider-specific extensions.
 */
export declare const ModelProfileSchema: z.ZodObject<{
    _profile: z.ZodString;
    _description: z.ZodOptional<z.ZodString>;
    model: z.ZodString;
    provider: z.ZodOptional<z.ZodString>;
    api_base_url: z.ZodOptional<z.ZodString>;
    max_tokens: z.ZodDefault<z.ZodNumber>;
    temperature: z.ZodDefault<z.ZodNumber>;
    top_p: z.ZodOptional<z.ZodNumber>;
    timeout_ms: z.ZodDefault<z.ZodNumber>;
    context_window: z.ZodDefault<z.ZodNumber>;
    optimize_for_tool_calls: z.ZodDefault<z.ZodBoolean>;
    enable_thinking: z.ZodDefault<z.ZodBoolean>;
    dynamic_temperature: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodDefault<z.ZodBoolean>;
        decay: z.ZodOptional<z.ZodNumber>;
        floor: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        enabled: boolean;
        decay?: number | undefined;
        floor?: number | undefined;
    }, {
        enabled?: boolean | undefined;
        decay?: number | undefined;
        floor?: number | undefined;
    }>>;
    tool_call_batching: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodDefault<z.ZodBoolean>;
        system_prompt_suffix: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        enabled: boolean;
        system_prompt_suffix?: string | undefined;
    }, {
        enabled?: boolean | undefined;
        system_prompt_suffix?: string | undefined;
    }>>;
    pricing: z.ZodOptional<z.ZodObject<{
        input_per_1m: z.ZodNumber;
        output_per_1m: z.ZodNumber;
        cache_write_per_1m: z.ZodOptional<z.ZodNumber>;
        cache_read_per_1m: z.ZodOptional<z.ZodNumber>;
        currency: z.ZodDefault<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        input_per_1m: number;
        output_per_1m: number;
        currency: string;
        cache_write_per_1m?: number | undefined;
        cache_read_per_1m?: number | undefined;
    }, {
        input_per_1m: number;
        output_per_1m: number;
        cache_write_per_1m?: number | undefined;
        cache_read_per_1m?: number | undefined;
        currency?: string | undefined;
    }>>;
    rate_limits: z.ZodOptional<z.ZodObject<{
        requests_per_minute: z.ZodOptional<z.ZodNumber>;
        tokens_per_minute: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        requests_per_minute?: number | undefined;
        tokens_per_minute?: number | undefined;
    }, {
        requests_per_minute?: number | undefined;
        tokens_per_minute?: number | undefined;
    }>>;
    running_config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
    model: string;
    temperature: number;
    _profile: string;
    max_tokens: number;
    timeout_ms: number;
    context_window: number;
    optimize_for_tool_calls: boolean;
    enable_thinking: boolean;
    provider?: string | undefined;
    _description?: string | undefined;
    api_base_url?: string | undefined;
    top_p?: number | undefined;
    dynamic_temperature?: {
        enabled: boolean;
        decay?: number | undefined;
        floor?: number | undefined;
    } | undefined;
    tool_call_batching?: {
        enabled: boolean;
        system_prompt_suffix?: string | undefined;
    } | undefined;
    pricing?: {
        input_per_1m: number;
        output_per_1m: number;
        currency: string;
        cache_write_per_1m?: number | undefined;
        cache_read_per_1m?: number | undefined;
    } | undefined;
    rate_limits?: {
        requests_per_minute?: number | undefined;
        tokens_per_minute?: number | undefined;
    } | undefined;
    running_config?: Record<string, unknown> | undefined;
}, {
    model: string;
    _profile: string;
    provider?: string | undefined;
    temperature?: number | undefined;
    _description?: string | undefined;
    api_base_url?: string | undefined;
    max_tokens?: number | undefined;
    top_p?: number | undefined;
    timeout_ms?: number | undefined;
    context_window?: number | undefined;
    optimize_for_tool_calls?: boolean | undefined;
    enable_thinking?: boolean | undefined;
    dynamic_temperature?: {
        enabled?: boolean | undefined;
        decay?: number | undefined;
        floor?: number | undefined;
    } | undefined;
    tool_call_batching?: {
        enabled?: boolean | undefined;
        system_prompt_suffix?: string | undefined;
    } | undefined;
    pricing?: {
        input_per_1m: number;
        output_per_1m: number;
        cache_write_per_1m?: number | undefined;
        cache_read_per_1m?: number | undefined;
        currency?: string | undefined;
    } | undefined;
    rate_limits?: {
        requests_per_minute?: number | undefined;
        tokens_per_minute?: number | undefined;
    } | undefined;
    running_config?: Record<string, unknown> | undefined;
}>;
export type ModelProfile = z.infer<typeof ModelProfileSchema>;
/**
 * Load a single model profile from a JSON file.
 * Returns null if the file doesn't exist or fails validation.
 */
export declare function loadModelProfile(filePath: string): ModelProfile | null;
/**
 * Load all model profiles from a directory.
 * Returns a map of profile name to profile data.
 */
export declare function loadAllModelProfiles(profileDir?: string): Map<string, ModelProfile>;
/**
 * Get the active model profile based on UAP_MODEL_PROFILE env var.
 * Falls back to 'generic' if not set.
 */
export declare function getActiveModelProfile(profileDir?: string): ModelProfile | null;
//# sourceMappingURL=profile-loader.d.ts.map