import type { RankedRouteCandidate } from './route-selection.js'; import type { AffinityDescription, IdFactory, RouteAvailabilityDiagnostic, RoutePlan, VerifiedRoutingSubject } from './routing-contracts.js'; import type { RoutePolicy } from './routing-policy.js'; export interface StoredCandidate extends RankedRouteCandidate { readonly candidateRef: string; } export interface StoredPlan { readonly plan: RoutePlan; readonly subjectRef: string; readonly affinityRef?: string; readonly affinityRevision?: number; readonly policyProfileName?: string; readonly policyProfileRevision?: string; readonly hadAffinity: boolean; readonly candidates: readonly StoredCandidate[]; readonly policy: RoutePolicy; readonly claimedAttempts: Set; readonly roundRobinKey?: string; } export interface StoredAffinity extends AffinityDescription { readonly accountRef: string; readonly workspaceId?: string; } export declare class RoutePlanError extends Error { readonly code: 'no-route' | 'unknown-model' | 'capabilities-unmet' | 'invalid-plan' | 'expired-plan' | 'stale-candidate' | 'conflict'; readonly diagnostic?: RouteAvailabilityDiagnostic | undefined; constructor(message: string, code: 'no-route' | 'unknown-model' | 'capabilities-unmet' | 'invalid-plan' | 'expired-plan' | 'stale-candidate' | 'conflict', diagnostic?: RouteAvailabilityDiagnostic | undefined); } export declare const subjectRef: (subject: VerifiedRoutingSubject) => string; export declare const routingOwnerRef: (subject: VerifiedRoutingSubject) => string; export declare const affinityRef: (subject: VerifiedRoutingSubject, affinityKey: string, workspaceId?: string) => string; export declare const mergeRoutePolicy: (base: RoutePolicy, override?: Partial) => RoutePolicy; export declare class SequentialIdFactory implements IdFactory { private sequence; next(prefix: 'plan' | 'candidate' | 'attempt'): string; } //# sourceMappingURL=route-planner-state.d.ts.map