import { type GatewayModelTarget, type GatewayTaskIntent } from "./types.js"; import type { GatewayMetricsSnapshot } from "./metrics.js"; import type { ModelCostValuation } from "@zhivex-ai/core"; export interface GatewayQualityProfile { target: GatewayModelTarget; intent: GatewayTaskIntent; score: number; version: string; } export interface GatewayAdaptiveRoutingPolicy { version: string; /** Select latency relevant to the workload; full attempt is the legacy default. */ latencyMetric?: "total" | "ttft"; minSamples?: number; /** Probe one allowed cold destination every N operations. Disabled unless configured. */ explorationEvery?: number; throughputScale?: number; /** Conservative normalized penalties used for allowed missing signals. */ missingSignalPenalty?: number; minQuality?: number; weights: { latency: number; cost: number; quality: number; load: number; errorRate: number; throughput?: number; }; latencyScaleMs: number; costScale: number; coldStart: "allow" | "reject"; unknownCost: "allow" | "reject"; missingQuality: "allow" | "reject"; qualityProfiles?: GatewayQualityProfile[]; } export interface GatewayAdaptiveCandidate { target: GatewayModelTarget; score?: number; exclusions: string[]; missingSignals: string[]; metrics?: GatewayMetricsSnapshot; cost?: ModelCostValuation; quality?: { score: number; version: string; }; } export declare const validateAdaptivePolicy: (policy: GatewayAdaptiveRoutingPolicy) => void; export declare const scoreAdaptiveTarget: (policy: GatewayAdaptiveRoutingPolicy, target: GatewayModelTarget, intent: GatewayTaskIntent, metrics?: GatewayMetricsSnapshot, cost?: ModelCostValuation) => GatewayAdaptiveCandidate; /** Explicit starting policies. Calibrate scales and quality profiles against your own workloads. */ export declare const createGatewayRoutingPolicy: (preset: "interactive" | "economy" | "quality", overrides?: Partial) => GatewayAdaptiveRoutingPolicy; //# sourceMappingURL=adaptive-routing.d.ts.map