import type { Config } from '../config/schema.js'; import type { SessionInput } from '../storage/sqlite/session-input-repository.js'; import { ComposioSessionsAdapter } from './composio-sessions.js'; import type { ConnectionWaitSnapshot } from '@xopcai/gateway-contract'; export type ConnectionAction = { waitId: string; expectedSessionId: string; expectedVersion: number; idempotencyKey: string; action: 'connect' | 'check' | 'continue' | 'skip' | 'cancel' | 'select_account' | 'confirm_scope' | 'replace_source'; needKey?: string; accountId?: string; candidateRef?: string; }; /** Authorization lives at click time. Chat history contains only immutable explanations. */ export declare class ConnectionRecoveryService { private readonly deps; private readonly busy; private timer?; private polling; start(): void; stop(): void; poll(): Promise; constructor(deps: { getConfig: () => Config; saveConfig: (config: Config) => Promise<{ saved: boolean; error?: string; }>; drain: (sessionKey: string) => void; adapter?: ComposioSessionsAdapter; }); private get adapter(); snapshot(sessionKey: string): ConnectionWaitSnapshot; private view; private ensureInstallation; private checkCapabilities; preflight(input: SessionInput): Promise; act(sessionKey: string, action: ConnectionAction): Promise<{ snapshot: ConnectionWaitSnapshot; authorizationUrl?: string; }>; }