import { type ModelEquivalenceCouncil } from './equivalence-council.js'; import type { AccountDirectoryPort, AffinityDescription, Clock, IdFactory, PreparedRouteAttempt, AffinityMutationEvent, RoutePlan, RoutePlanInput, RoutePlanner, VerifiedRoutingSubject, RouteModelInventoryEntry } from './routing-contracts.js'; import { InMemoryRoutePolicyProfiles } from './routing-policy.js'; export interface InMemoryRoutePlannerOptions { readonly directory: AccountDirectoryPort; readonly council?: ModelEquivalenceCouncil; readonly profiles?: InMemoryRoutePolicyProfiles; readonly clock?: Clock; readonly idFactory?: IdFactory; readonly planTtlMs?: number; readonly maximumPlanEntries?: number; readonly maximumAffinityEntries?: number; readonly maximumRoundRobinEntries?: number; readonly affinityAudit?: (event: AffinityMutationEvent) => void; } export declare class InMemoryRoutePlanner implements RoutePlanner { private readonly options; private readonly plans; private readonly affinities; private readonly roundRobin; private readonly clock; private readonly ids; private readonly council; private readonly profiles; private readonly health; private readonly planTtlMs; private readonly maximumPlanEntries; private readonly maximumAffinityEntries; private readonly maximumRoundRobinEntries; constructor(options: InMemoryRoutePlannerOptions); listModels(subject: VerifiedRoutingSubject): Promise; plan(subject: VerifiedRoutingSubject, input: RoutePlanInput): Promise; prepareAttempt(subject: VerifiedRoutingSubject, planRef: string, candidateRef: string, requestId: string, attemptIndex: number): Promise; describeAffinity(subject: VerifiedRoutingSubject, key: string, workspaceId?: string): AffinityDescription | null; promoteAffinity(subject: VerifiedRoutingSubject, planRef: string, candidateRef: string, expectedRevision?: number): AffinityDescription; rebindAffinity(subject: VerifiedRoutingSubject, planRef: string, candidateRef: string, expectedRevision?: number): AffinityDescription; resetAffinity(subject: VerifiedRoutingSubject, key: string, expectedRevision?: number, workspaceId?: string): boolean; private mutateAffinity; private bind; private isAffinityTarget; private evictPlans; private commitRoundRobin; private releaseRoundRobin; private touchRoundRobin; private trimPlans; private trim; } //# sourceMappingURL=route-planner.d.ts.map