import { type CapabilityRequirement } from './equivalence-council.js'; import type { RoutePlanInput } from './routing-contracts.js'; export interface RouteSelector { readonly providerId?: string; readonly modelId?: string; readonly alias?: string; readonly transportProviderId?: string; readonly diagnosticAccountRef?: string; } export type RouteStrategy = { readonly kind: 'last-enrolled'; } | { readonly kind: 'ordered'; readonly preferences: readonly RouteSelector[]; } | { readonly kind: 'round-robin'; readonly scope: 'new-affinity'; }; export interface RouteRule { readonly match: { readonly requestedModel?: string; readonly alias?: string; readonly intent?: 'coding' | 'general' | 'reasoning' | 'fast'; readonly capabilities?: readonly CapabilityRequirement[]; }; readonly strategy?: RouteStrategy; readonly preferences?: readonly RouteSelector[]; readonly fallback?: { readonly fallbackMode?: RoutePolicy['fallbackMode']; readonly allowEquivalentModels?: boolean; readonly rotateEquivalentAccounts?: boolean; }; } export interface RoutePolicy { readonly strategy: RouteStrategy; readonly rules: readonly RouteRule[]; readonly fallbackMode: 'retest-preferred' | 'one-way'; readonly negativeCacheTtlMs: number; readonly maxAttempts: number; readonly preferSameTransport: boolean; readonly stickyAccount: boolean; readonly rotateEquivalentAccounts: boolean; readonly allowEquivalentModels: boolean; } export interface RoutePolicyProfile { readonly name: string; readonly revision: string; readonly policy: RoutePolicy; } export declare const DEFAULT_ROUTE_POLICY: RoutePolicy; export declare class RoutePolicyError extends Error { readonly issues: readonly string[]; constructor(issues: readonly string[]); } export declare const validateRoutePolicy: (policy: RoutePolicy) => void; export declare const describeRoutePolicy: (policy: RoutePolicy) => string; export declare const resolveRoutePolicy: (policy: RoutePolicy, input: RoutePlanInput) => RoutePolicy; export declare const resolveRouteStrategy: (policy: RoutePolicy, input: RoutePlanInput) => RouteStrategy; export declare class InMemoryRoutePolicyProfiles { private readonly profiles; private activeName?; constructor(profiles?: readonly RoutePolicyProfile[]); set(profile: RoutePolicyProfile): void; list(): readonly RoutePolicyProfile[]; activate(name: string, expectedRevision?: string): RoutePolicyProfile; active(): RoutePolicyProfile | undefined; } //# sourceMappingURL=routing-policy.d.ts.map