import type { ConfigProvenance, OrchestratorConfig, RoleName, ThinkingLevel } from "../core/config.js"; import { type ModelSelectionIdentity, type RoutingDecision, type RoutingStage, type TaskFeatures } from "../core/modelRouting.js"; import { type TaskFeatureEvidence } from "../core/taskFeatures.js"; import { type PiModelLike } from "./piModelCatalog.js"; export interface PiRoutingCandidate { provider: string; model: string; family?: string; thinking: ThinkingLevel; rank: number; score?: number; estimatedCostUsd?: number; profileVersion?: string; reason: string; } export interface PiRoutingPlan { engine: OrchestratorConfig["routing"]["engine"]; policyVersion: string; taskFeatures: TaskFeatures; taskFeaturesHash: string; candidates: readonly PiRoutingCandidate[]; decision?: RoutingDecision; } export interface CreatePiRoutingPlanInput { config: OrchestratorConfig; provenance: ConfigProvenance; stage: RoutingStage; role: RoleName; available: readonly PiModelLike[]; evidence: TaskFeatureEvidence | string; priorSelections?: readonly ModelSelectionIdentity[]; /** Compute active capability policy for a read-only preview without changing configured engine behavior. */ forceCapability?: boolean; } export declare function piRoutingRunVersion(config: OrchestratorConfig, provenance: ConfigProvenance): string; export declare function createPiRoutingPlan(input: CreatePiRoutingPlanInput): PiRoutingPlan;