import { type SessionBindingScope, type SessionQuestion, type SessionQuestionVerifier } from '@dharma-ai-labs/agent-fabric-contracts'; type Mode = 'bridge_owned' | 'cooperative'; type FailureCode = 'provider_unavailable' | 'budget_denied' | 'validation_failed' | 'execution_failed'; type Registration = { bindingId: string; workspaceId: string; endpointId: string; repositoryBindingId: string; membershipId: string; deviceId: string; provider: 'codex'; mode: Mode; revision: number; state: 'attached' | 'detached'; leaseUntil: string; replay: boolean; }; type Acknowledgement = { questionId: string; taskId: string; targetBindingId: string; state: 'queued' | 'accepted' | 'answered' | 'failed'; replay: boolean; correlationId: string; }; type Reply = { questionId: string; taskId: string; outcome: 'answered' | 'failed'; answer: string; failureCode: FailureCode | null; }; type Observation = { questionId: string; taskId: string; targetBindingId: string; state: 'preparing' | 'queued' | 'accepted' | 'answered' | 'failed' | 'expired' | 'unavailable'; answer: string | null; failureCode: FailureCode | null; replyReceiptHash: string | null; correlationId: string; }; export declare function providerSessionTextIsSafe(value: unknown, multiline?: boolean): value is string; export declare function createProviderSessionChannel(input: { transport: { signedPost(route: string, body: unknown): Promise>; }; scope: SessionBindingScope; mode: Mode; expectedRevision: number; assertOwner(): Promise; currentExpiresAt?: () => string | null | Promise; verifier: Pick; authorizeContent(content: string, kind: 'question' | 'answer'): Promise; now?: () => Date; }): { inspect: () => Promise; reconnect: () => Promise<{ correlationId: string | null; bindingId: string; workspaceId: string; endpointId: string; repositoryBindingId: string; membershipId: string; deviceId: string; provider: "codex"; mode: Mode; revision: number; state: "attached" | "detached"; leaseUntil: string; replay: boolean; }>; attach: () => Promise<{ correlationId: string | null; bindingId: string; workspaceId: string; endpointId: string; repositoryBindingId: string; membershipId: string; deviceId: string; provider: "codex"; mode: Mode; revision: number; state: "attached" | "detached"; leaseUntil: string; replay: boolean; }>; heartbeat: () => Promise<{ correlationId: string | null; bindingId: string; workspaceId: string; endpointId: string; repositoryBindingId: string; membershipId: string; deviceId: string; provider: "codex"; mode: Mode; revision: number; state: "attached" | "detached"; leaseUntil: string; replay: boolean; }>; detach: () => Promise<{ correlationId: string | null; bindingId: string; workspaceId: string; endpointId: string; repositoryBindingId: string; membershipId: string; deviceId: string; provider: "codex"; mode: Mode; revision: number; state: "attached" | "detached"; leaseUntil: string; replay: boolean; }>; inbox: () => Promise; ask: (request: { targetBindingId: string; taskId: string; category: string; question: string; maximumProviderCostCents: number; }, context?: { signal: AbortSignal; }) => Promise; accept: (questionId: string, taskId: string) => Promise; reply: (request: Reply) => Promise; read: (questionId: string, taskId: string, targetBindingId: string, context?: { signal: AbortSignal; }) => Promise; }; export {}; //# sourceMappingURL=providerSessionChannel.d.ts.map