import type { Agent } from '@deepseek-ai/dsh-agent'; export declare const replyReplayBlockContract: "assistant-delivery/reply-replay-block/v1"; export declare class ReplyReplayBlockedError extends Error { readonly operationId: string; readonly code: "reply-replay-blocked"; constructor(operationId: string); } export interface ReplyReplayBlockedAttempt { readonly sequence: number; readonly operationId: string; readonly inputDigest: string; readonly observedAt: number; readonly blocked: true; } export interface ReplyReplayBlockSnapshot { readonly contract: typeof replyReplayBlockContract; readonly operationId: string; readonly maximumAttempts: number; readonly expiresAt: number; readonly status: 'active' | 'closed' | 'expired' | 'attempt-limit' | 'owner-unloaded'; readonly invalidated: boolean; readonly attempts: readonly ReplyReplayBlockedAttempt[]; } export interface ReplyReplayBlockHandle { readonly contract: typeof replyReplayBlockContract; snapshot(): ReplyReplayBlockSnapshot; close(): void; } export interface ReplyReplayBlockConfig { readonly operationId: string; readonly maximumAttempts: number; readonly expiresAt: number; } export interface ReplyReplayInput { readonly idempotencyKey: string; readonly text: string; readonly format?: 'markdown' | 'model-picker' | 'permission-picker' | 'plain'; readonly modelPicker?: unknown; readonly permissionPicker?: unknown; readonly replyToEventId?: string; } /** Stable digest of the exact Delivery reply input observed at the fence. */ export declare function replyReplayInputDigest(input: ReplyReplayInput): string; /** * Permanently fences Delivery replies for one exact Agent object. The WeakMap * tombstone intentionally survives handle close, expiry, attempt exhaustion, * and agent Context disposal so a later call never falls back to delivery. */ export declare function blockAgentRepliesForReplay(agent: Agent, config: ReplyReplayBlockConfig): ReplyReplayBlockHandle; /** Called by the Service before binding lookup, Policy, adapter selection, or Outbox mutation. */ export declare function assertReplyReplayAllowed(agent: Agent | undefined, input: ReplyReplayInput): void; //# sourceMappingURL=reply-replay.d.ts.map