import { z } from 'zod';
export declare const TransportSchema: z.ZodEnum<["stdio", "http"]>;
export type Transport = z.infer<typeof TransportSchema>;
export declare const ConfigSchema: z.ZodObject<{
    /**
     * ELS API key для stdio transport / fallback. В HTTP-режиме ключ берётся
     * из заголовка `Authorization: Bearer els_...` запроса.
     */
    elsApiKey: z.ZodDefault<z.ZodString>;
    elsBaseUrl: z.ZodString;
    logLevel: z.ZodDefault<z.ZodEnum<["trace", "debug", "info", "warn", "error", "fatal"]>>;
    disabledTools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    /**
     * Таймаут upstream-запроса в ELS, мс. Единый таймаут на все ELS-вызовы;
     * AI-tools при появлении получат отдельный (более длинный).
     */
    upstreamTimeoutMs: z.ZodDefault<z.ZodNumber>;
    transport: z.ZodDefault<z.ZodEnum<["stdio", "http"]>>;
    httpPort: z.ZodDefault<z.ZodNumber>;
    oidcIssuer: z.ZodDefault<z.ZodString>;
    oidcJwksUrl: z.ZodString;
    oidcAudience: z.ZodDefault<z.ZodString>;
    /**
     * Fallback appSlug: используется когда LK resolver
     * `GET /api/internal/users/{sub}/apps` недоступен (404/500/timeout) или
     * для всех OIDC-юзеров до его реализации.
     */
    oidcDemoAppSlug: z.ZodOptional<z.ZodString>;
    publicUrl: z.ZodDefault<z.ZodString>;
    corsOrigins: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    /** Включена ли PII-редакция в ответах tools. */
    redactionEnabled: z.ZodDefault<z.ZodBoolean>;
    /** Whitelist полей для редакции (пусто → редактим все известные). */
    redactionFields: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    /** Postgres connection для audit/usage. Если пусто — модули в no-op. */
    mcpDatabaseUrl: z.ZodOptional<z.ZodString>;
    /** AppId по умолчанию (для stdio-mode, когда контекст не задан). */
    defaultAppId: z.ZodDefault<z.ZodString>;
    /** Tier по умолчанию (для stdio-mode / прокси-режима). */
    defaultTier: z.ZodDefault<z.ZodEnum<["FREE", "STANDARD", "PREMIUM", "UNLIMITED"]>>;
    /**
     * LK API base URL (для резолва apps по OIDC sub и tier по appSlug).
     * Если пустой — используются fallbacks (oidcDemoAppSlug, defaultTier).
     * TODO: ожидаемые эндпоинты на LK:
     *   GET {lkApiBaseUrl}/api/internal/users/{sub}/apps   — список appSlugs
     *   GET {lkApiBaseUrl}/api/internal/apps/{slug}/billing/tier — tier name
     */
    lkApiBaseUrl: z.ZodOptional<z.ZodString>;
    /** Internal-API service-token для авторизации в LK (если требуется). */
    lkApiToken: z.ZodOptional<z.ZodString>;
    /** Redis URL для cache layer. */
    redisUrl: z.ZodDefault<z.ZodString>;
    /** Включить cache layer. Если false — методы CachedElsClient прозрачно прокидываются в ElsClient. */
    cacheEnabled: z.ZodDefault<z.ZodBoolean>;
    /**
     * Per-class TTL overrides. Ключи — имена CacheClass из `cache/policies.ts`.
     * Значения — секунды (целые ≥ 0; 0 эффективно отключает кэш для класса).
     * Source ENV: `MCP_CACHE_TTL_OVERRIDE_<CLASS>` (напр. `MCP_CACHE_TTL_OVERRIDE_LOG_DETAILS=7200`).
     */
    cacheTtlOverrides: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
    /** Включить Prometheus metrics endpoint (`/els/metrics`). */
    metricsEnabled: z.ZodDefault<z.ZodBoolean>;
    /** OTLP endpoint для OpenTelemetry traces. Если не задан — tracing disabled. */
    otelExporterOtlpEndpoint: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    elsApiKey: string;
    elsBaseUrl: string;
    logLevel: "fatal" | "error" | "warn" | "info" | "debug" | "trace";
    disabledTools: string[];
    upstreamTimeoutMs: number;
    transport: "stdio" | "http";
    httpPort: number;
    oidcIssuer: string;
    oidcJwksUrl: string;
    oidcAudience: string;
    publicUrl: string;
    corsOrigins: string[];
    redactionEnabled: boolean;
    redactionFields: string[];
    defaultAppId: string;
    defaultTier: "FREE" | "STANDARD" | "PREMIUM" | "UNLIMITED";
    redisUrl: string;
    cacheEnabled: boolean;
    cacheTtlOverrides: Record<string, number>;
    metricsEnabled: boolean;
    oidcDemoAppSlug?: string | undefined;
    mcpDatabaseUrl?: string | undefined;
    lkApiBaseUrl?: string | undefined;
    lkApiToken?: string | undefined;
    otelExporterOtlpEndpoint?: string | undefined;
}, {
    elsBaseUrl: string;
    oidcJwksUrl: string;
    elsApiKey?: string | undefined;
    logLevel?: "fatal" | "error" | "warn" | "info" | "debug" | "trace" | undefined;
    disabledTools?: string[] | undefined;
    upstreamTimeoutMs?: number | undefined;
    transport?: "stdio" | "http" | undefined;
    httpPort?: number | undefined;
    oidcIssuer?: string | undefined;
    oidcAudience?: string | undefined;
    oidcDemoAppSlug?: string | undefined;
    publicUrl?: string | undefined;
    corsOrigins?: string[] | undefined;
    redactionEnabled?: boolean | undefined;
    redactionFields?: string[] | undefined;
    mcpDatabaseUrl?: string | undefined;
    defaultAppId?: string | undefined;
    defaultTier?: "FREE" | "STANDARD" | "PREMIUM" | "UNLIMITED" | undefined;
    lkApiBaseUrl?: string | undefined;
    lkApiToken?: string | undefined;
    redisUrl?: string | undefined;
    cacheEnabled?: boolean | undefined;
    cacheTtlOverrides?: Record<string, number> | undefined;
    metricsEnabled?: boolean | undefined;
    otelExporterOtlpEndpoint?: string | undefined;
}>;
export type Config = z.infer<typeof ConfigSchema>;
export declare function loadConfig(env?: NodeJS.ProcessEnv): Config;
//# sourceMappingURL=config.d.ts.map