import type { ProviderId, RequestFingerprintSerializerId } from "../types.js"; export type ProfileTriState = "supported" | "unsupported" | "unknown"; export type ProfileEvidenceSource = "user-config" | "builtin" | "catalog" | "family" | "observed" | "default"; export type ProfileConfidence = "exact" | "high" | "inferred" | "unknown"; export interface ProfileEvidence { readonly source: ProfileEvidenceSource; readonly confidence: ProfileConfidence; readonly observedAt?: string | undefined; readonly detail?: string | undefined; } export type WireApi = RequestFingerprintSerializerId; export type SystemMessagePolicy = "single-leading" | "developer-fallback" | "provider-system-field"; export type ProfileAuthType = "bearer" | "custom-headers" | "query" | "proxy-headers" | "none-keyless" | "native"; export interface TransportSpec { readonly authType: ProfileAuthType; readonly keyEnv?: string | undefined; readonly baseUrlEnv?: string | undefined; readonly headers?: Readonly> | undefined; readonly chatPath?: string | undefined; readonly modelsPath?: string | undefined; readonly keyless?: boolean | undefined; readonly systemPolicy: SystemMessagePolicy; } export interface ProfileCapabilities { readonly tools: ProfileTriState; readonly images: ProfileTriState; readonly structuredOutput: ProfileTriState; readonly streamOptions: ProfileTriState; readonly acceptedParameters?: readonly string[] | undefined; } export interface SamplingPolicySpec { readonly omit: readonly string[]; readonly defaults: Readonly>; } /** Matrix 02§Required conceptual split: the generation fact is independent of controls. */ export type ReasoningGeneration = "none" | "optional" | "default-on" | "mandatory" | "unknown"; export type ReasoningControlDialect = "openai-effort" | "openai-nested-reasoning" | "anthropic-thinking" | "deepseek-thinking" | "qwen-enable-thinking" | "kimi-template-thinking" | "glm-enable-thinking" | "chat-template-thinking" | "nemotron-reasoning-budget" | "gemini-thinking-config" | "meta-reasoning-effort" | "ollama-think" | "groq-model-specific" | "modal-advertised-effort" | "openrouter-reasoning-max-tokens" | "none"; export type ReasoningDisableForm = "effort-none" | "effort-minimal-floor" | "thinking-disabled" | "thinking-budget-zero" | "template-thinking-false" | "template-enable-thinking-false" | "enable-thinking-false" | "omit-control" | "none-documented"; export type ReasoningOutputShape = "reasoning-content" | "reasoning-field" | "signed-thinking-block" | "thought-signature" | "encrypted-reasoning-items" | "structured-details" | "ollama-thinking"; export type FinalTurnPreservation = "required" | "supported" | "unsupported" | "unknown"; export interface ReasoningControlSpec { readonly dialect: ReasoningControlDialect; readonly status: ProfileTriState; readonly evidence: ProfileEvidence; } /** Route-level replay contract; the first four map onto artifact replay scope. */ export type ProfileReplayScope = "none" | "tool-turn" | "next-turn" | "all-history" | "server-state" | "configurable"; export type ReplayOptIn = "qwen-preserve-thinking" | "kimi-thinking-keep" | "openrouter-reasoning-context"; export interface ReasoningCapability { readonly generation: ReasoningGeneration; readonly generationEvidence: ProfileEvidence; readonly control: ReasoningControlSpec; readonly acceptedEfforts: readonly string[]; readonly disable: ProfileTriState; readonly disableForm?: ReasoningDisableForm | undefined; readonly outputShapes: readonly ReasoningOutputShape[]; readonly replayScope: ProfileReplayScope; readonly finalTurnPreservation: FinalTurnPreservation; readonly replayOptIn?: ReplayOptIn | undefined; readonly defaultEffort?: string | undefined; readonly minOutputTokens?: number | undefined; } export interface OutputBudgetPolicy { readonly sharedReasoningCap: boolean; readonly visibleAnswerReserveTokens: number; readonly mandatoryReasoningReserveTokens: number; } export type LimitSource = "provider-doc" | "catalog" | "user-config" | "family-default" | "unknown"; export interface ContextLimitSpec { readonly contextTokens?: number | undefined; readonly outputTokens?: number | undefined; readonly source: LimitSource; } export type CachePolicyKind = "automatic-prefix" | "affinity-key" | "explicit-breakpoint" | "none-documented" | "unknown"; export interface CachePolicySpec { readonly kind: CachePolicyKind; readonly affinityField?: string | undefined; readonly isolationField?: string | undefined; readonly cacheAffectingFields: readonly string[]; readonly evidence?: ProfileEvidence | undefined; } export interface UsageAliasSpec { readonly cachedInput?: readonly string[] | undefined; readonly uncachedInput?: readonly string[] | undefined; readonly cacheWrite?: readonly string[] | undefined; readonly reasoningOutput?: readonly string[] | undefined; } export type StreamTerminalProof = "done-sentinel" | "finish-reason" | "message-stop" | "response-completed" | "response-incomplete" | "done-true" | "usage-chunk"; export declare const CHAT_COMPLETIONS_TERMINAL_PROOFS: readonly StreamTerminalProof[]; export interface TerminalPolicySpec { readonly proofs: readonly StreamTerminalProof[]; readonly naturalEofAccepted: boolean; readonly evidence: ProfileEvidence; } export interface ProviderProfileRoute { readonly provider: string; readonly model: string; readonly wireApi: WireApi; readonly endpointHash?: string | undefined; readonly credentialHash?: string | undefined; readonly configGeneration?: string | undefined; readonly profileVersion: 1; } export interface ProviderProfile { readonly version: 1; readonly route: ProviderProfileRoute; readonly transport: TransportSpec; readonly capabilities: ProfileCapabilities; readonly reasoning: ReasoningCapability; readonly sampling: SamplingPolicySpec; readonly outputBudget: OutputBudgetPolicy; readonly limits: ContextLimitSpec; readonly cache: CachePolicySpec; readonly usage: UsageAliasSpec; readonly terminal: TerminalPolicySpec; readonly evidence: ProfileEvidence; } export interface ProviderProfileLayer { readonly evidence: ProfileEvidence; readonly transport?: Partial | undefined; readonly capabilities?: Partial | undefined; readonly reasoning?: (Partial> & { readonly control?: Partial | undefined; }) | undefined; readonly outputBudget?: Partial | undefined; readonly sampling?: Partial | undefined; readonly limits?: Partial | undefined; readonly cache?: Partial | undefined; readonly usage?: Partial | undefined; readonly terminal?: Partial | undefined; } export interface ProviderProfileSourceLayers { readonly userConfig?: ProviderProfileLayer | undefined; readonly builtin?: ProviderProfileLayer | undefined; readonly catalog?: ProviderProfileLayer | undefined; readonly modelFamily?: ProviderProfileLayer | undefined; readonly family?: ProviderProfileLayer | undefined; readonly observed?: ProviderProfileLayer | undefined; } export declare const PARSED_OUTPUT_SHAPES: readonly ReasoningOutputShape[]; export declare const DEFAULT_CONTROL_REJECTION_TTL_MS: number; export declare function resolveProviderProfile(input: { provider: string; model: string; wireApi?: WireApi | undefined; endpointHash?: string | undefined; credentialHash?: string | undefined; configGeneration?: string | undefined; layers?: ProviderProfileSourceLayers | undefined; }): ProviderProfile; export interface ControlRejectionScope { readonly provider: string; readonly model: string; readonly endpointHash?: string | undefined; readonly credentialHash?: string | undefined; readonly configGeneration?: string | undefined; } export interface ControlRejectionKey extends ControlRejectionScope { readonly field: string; readonly value?: string | undefined; } export declare function recordControlRejection(key: ControlRejectionKey, options?: { ttlMs?: number; now?: number; } | undefined): void; export declare function isControlRejected(key: ControlRejectionKey, now?: number | undefined): boolean; export declare function activeControlRejections(scope: ControlRejectionScope, now?: number | undefined): readonly ControlRejectionKey[]; export declare function clearControlRejections(): void; export declare function applyObservedControlRejections(profile: ProviderProfile, now?: number | undefined): ProviderProfile; export declare function profileSummary(profile: ProviderProfile): { provider: string; model: string; wireApi: WireApi; reasoning: { generation: ReasoningGeneration; controlDialect: ReasoningControlDialect; controlStatus: ProfileTriState; disable: ProfileTriState; replayScope: ProfileReplayScope; finalTurnPreservation: FinalTurnPreservation; evidenceSources: readonly ProfileEvidenceSource[]; }; capabilities: ProfileCapabilities; limits: ContextLimitSpec; cache: { kind: CachePolicyKind; }; terminal: { proofs: readonly StreamTerminalProof[]; naturalEofAccepted: boolean; }; evidence: ProfileEvidence; }; export declare function isBuiltInProviderId(provider: string): provider is ProviderId;