import type { Api, Model, StreamOptions, TranscriptContext } from '@earendil-works/pi-ai'; import type { AccountModelApi, AccountModelDescriptor } from './account-model-catalog.ts'; import type { CoreCompatibleProvider } from './pi-provider-bridge.ts'; import type { GitHubCopilotOAuthCredential } from './copilot-grant.ts'; import { CopilotResponsesReplayError } from './responses-replay-compat.ts'; import type { ResponsesRetryReplay } from './responses-replay-compat.ts'; import { CopilotStreamIdleError, CopilotStreamLiveness } from './copilot-stream-liveness.ts'; export type ManagedWireAbortCode = 'COPILOT_PREVIEW_CREDENTIAL_CHANGED' | 'COPILOT_PREVIEW_DISPOSED'; /** Identity, not upstream error text, proves that the plugin revoked this wire. */ export declare class ManagedWireAbortError extends Error { readonly code: ManagedWireAbortCode; constructor(code: ManagedWireAbortCode); } /** Per-call authorization/lifetime checks supplied by the owning route. */ export interface PreviewProviderGuard { readonly signal: AbortSignal; assertActive(): void; assertAccount(credential: GitHubCopilotOAuthCredential): void; beforeWire(model: Model, options?: StreamOptions): Promise<{ signal: AbortSignal; release(): void; dispatch?(): void; }>; /** Actual model HTTP 401, excluding proven Responses replay-scope failures; no request replay. */ onUnauthorized?(): void; /** Dispatch-local, verified replay failure; never inferred from SDK error text. */ onReplayFailure?(error: CopilotResponsesReplayError): void; /** Preserve an owned abort cause before SDK terminal delivery and lease cleanup. */ onWireAbort?(code: ManagedWireAbortCode): void; /** Request-local safe guidance from a verified HTTP response; undefined clears prior evidence. */ onRequestBodyTimeout?(diagnostic: string | undefined): void; /** Optional HTTP byte-idle bound paired with a separate native semantic deadline. */ readonly streamIdleTimeoutMs?: number; onStreamLiveness?(control: Pick): void; onStreamIdleTimeout?(error: CopilotStreamIdleError): void; } /** Guard for one selected model in an account-bound descriptor snapshot. */ export interface AccountProviderGuard extends PreviewProviderGuard { /** Explicit lossless HTTP encoding; default-off and independent of context admission. */ readonly responsesRequestCompression?: boolean; /** Explicit compatibility override for all managed Responses requests. */ readonly responsesOmitTemperature?: boolean; /** Explicit, request-admitted recovery; absent by default. */ recoverReplay?(payload: unknown): unknown; /** Only exact verified scope HTTP failures may offer recovery evidence. */ onReplayScopeRejected?(body: string | undefined): void; readonly selectedModelId?: string; readonly retryReplay?: ResponsesRetryReplay; readonly retrySignal?: AbortSignal; /** Per-dispatch admission after native context conversion, before starting a model wire. */ inspectRequest?(model: Model, context: TranscriptContext, options?: StreamOptions): void; /** Optional auxiliary-call deadline fence immediately before native Fetch dispatch. */ requestCheckpoint?(): void; assertEntitled(credential: GitHubCopilotOAuthCredential, modelId: string): void; } /** The independent prompt limit is retained for the route's budget guard, not folded into context capacity. */ export type AccountPiModel = Model & { readonly maxInputTokens?: number; readonly unmappedReasoningEfforts: readonly string[]; readonly minThinkingBudget?: number; readonly maxThinkingBudget?: number; }; export declare function copilotPublicHeaders(): Readonly>; /** Materialize advertised capabilities only; model names and the local static catalog never select the API. */ export declare function accountModelFromDescriptor(descriptor: AccountModelDescriptor, baseURL: string): AccountPiModel; /** Create a descriptor-driven, OAuth-only provider using native SDK serialization for all supported endpoints. */ export declare function createAccountProvider(descriptors: readonly AccountModelDescriptor[], guard: AccountProviderGuard, baseURL: string): { provider: CoreCompatibleProvider; models: readonly AccountPiModel[]; }; //# sourceMappingURL=preview-provider.d.ts.map