import type { ProviderEvent, ProviderInterruptTurnInput, ProviderKind, ProviderRespondToRequestInput, ProviderSendTurnInput, ProviderSession, ProviderSessionStartInput, ProviderStopSessionInput, ProviderTurnStartResult, } from "@t3tools/contracts"; export interface ProviderThreadTurnSnapshot { id: string; items: unknown[]; } export interface ProviderThreadSnapshot { threadId: string; turns: ProviderThreadTurnSnapshot[]; } export interface ProviderAdapter { readonly kind: ProviderKind; onEvent(listener: (event: ProviderEvent) => void): () => void; hasSession(sessionId: string): boolean; startSession(input: ProviderSessionStartInput): Promise; sendTurn(input: ProviderSendTurnInput): Promise; interruptTurn(input: ProviderInterruptTurnInput): Promise; respondToRequest(input: ProviderRespondToRequestInput): Promise; stopSession(input: ProviderStopSessionInput): void; listSessions(): ProviderSession[]; readThread(sessionId: string): Promise; rollbackThread(sessionId: string, numTurns: number): Promise; stopAll(): void; dispose(): void; }