import { closeOpenAICodexWebSocketSessions } from "@bastani/pi-ai/api/openai-codex-responses"; import { type Api, type AssistantMessageEventStream, type Context, type Model, type ModelFastRoute, type OpenAICodexResponsesOptions, type OpenAIResponsesOptions, type ProviderHeaders, type SimpleStreamOptions, type StreamOptions, type ThinkingLevel, type TranscriptContext } from "@bastani/pi-ai/compat"; export interface FastRouteStreamOptions extends SimpleStreamOptions { serviceTier?: ModelFastRoute["serviceTier"]; } export interface FastRouteStreamers { streamSimple: (model: Model, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream; streamOpenAIResponses: (model: Model<"openai-responses">, context: TranscriptContext, options?: OpenAIResponsesOptions) => AssistantMessageEventStream; streamOpenAICodexResponses: (model: Model<"openai-codex-responses">, context: TranscriptContext, options?: OpenAICodexResponsesOptions) => AssistantMessageEventStream; } /** * Explicit route metadata is the only source of fast semantics. A model whose ID merely ends in * `-fast` — a provider, `models.json`, or extension model that owns that exact ID — routes normally. */ export declare function getModelFastRoute(model: Pick, "fastRoute">): ModelFastRoute | undefined; /** * The model ID this request sends upstream. An OpenAI-style fast route sends the base model and * carries a priority service tier instead; a provider with real fast siblings sends its own * advertised ID, which is already the canonical one. The canonical `-fast` identity always stays on * the model object Atomic selected, persisted, and records — only the serialized request differs. */ export declare function resolveUpstreamModelId(model: Pick, "fastRoute" | "id">): string; /** * Whether a model uses the first-party OpenAI Codex provider identity and endpoint. * A renamed provider on the same protocol remains non-first-party. */ export declare function usesFirstPartyCodexRouting(model: Pick, "baseUrl" | "provider">): boolean; /** A provider alias or proxy still uses the shared ChatGPT Codex protocol when its API does. */ export declare function usesChatGptCodexTransport(model: Pick, "api">): boolean; /** * Eager first-party routing headers for a model that carries an OpenAI-style fast route. * * Derived entirely from the model: the headers are added only when the model's own `fastRoute` * declares the priority tier and the model uses first-party Codex routing, and the hint names the * route's upstream model ID — the same value the request serializes and * `withChatGptCodexTransportRouting` reads from route metadata. There is no caller-supplied enable * flag, so a model without a route can never be granted this identity. */ export declare function withCodexFastRouteHeaders(model: Pick, "baseUrl" | "fastRoute" | "id" | "provider">, headers: ProviderHeaders | undefined): ProviderHeaders | undefined; /** Attach the route's service tier to the outgoing stream options. */ export declare function withFastRouteStreamOptions(fastRoute: ModelFastRoute | undefined, options: SimpleStreamOptions | undefined): FastRouteStreamOptions | undefined; /** A service-tier route needs pi-ai's native adapters; `streamSimple` drops `serviceTier`. */ export declare function shouldUseNativeFastRoute(model: Pick, "api">, options: FastRouteStreamOptions | undefined): boolean; type CloseCodexWebSocketSessions = typeof closeOpenAICodexWebSocketSessions; export declare function withChatGptCodexTransportRouting(model: Model, options: TOptions, closeWebSocketSessions?: CloseCodexWebSocketSessions): TOptions; export declare function mapFastRouteReasoningEffort(model: Model, reasoning: ThinkingLevel | undefined): ThinkingLevel | undefined; export declare function buildOpenAIResponsesFastRouteOptions(model: Model, options: FastRouteStreamOptions | undefined): OpenAIResponsesOptions; export declare function buildOpenAICodexResponsesFastRouteOptions(model: Model, options: FastRouteStreamOptions | undefined): OpenAICodexResponsesOptions; /** * Stream a request whose canonical selected model carries fast-route metadata. The provider adapter * translates only the serialized request to the route's upstream ID; the model object keeps its * canonical `-fast` identity. */ export declare function streamWithFastRoute(model: Model, context: Context, options: FastRouteStreamOptions | undefined, streamers?: FastRouteStreamers): AssistantMessageEventStream; export {}; //# sourceMappingURL=fast-model-routing.d.ts.map