import type { LiveMessageState, MessageReceipt, RenderedMessageBatch } from "./types.js"; export type { LiveMessagePhase, LiveMessageState } from "./types.js"; export type LivePreviewFinalizerDraft = { flush: () => Promise; id: () => TId | undefined; seal?: () => Promise; discardPending?: () => Promise; clear: () => Promise; }; export type LivePreviewFinalizerResultKind = "normal-delivered" | "normal-skipped" | "preview-finalized" | "preview-retained"; export type LivePreviewFinalizerResult = { kind: LivePreviewFinalizerResultKind; liveState?: LiveMessageState; }; export type FinalizableLivePreviewAdapter = { draft?: LivePreviewFinalizerDraft; buildFinalEdit: (payload: TPayload) => TEdit | undefined; editFinal: (id: TId, edit: TEdit) => Promise; resolveFinalizedId?: (id: TId, edit: TEdit) => TId | undefined; createPreviewReceipt?: (id: TId, edit: TEdit) => MessageReceipt; onPreviewFinalized?: (id: TId, receipt: MessageReceipt, liveState: LiveMessageState) => Promise | void; buildSupplementalPayload?: (payload: TPayload) => TPayload | undefined; deliverSupplemental?: (payload: TPayload) => Promise; handlePreviewEditError?: (params: { error: unknown; id: TId; edit: TEdit; payload: TPayload; liveState: LiveMessageState; }) => "fallback" | "retain" | Promise<"fallback" | "retain">; logPreviewEditFailure?: (error: unknown) => void; }; export declare function defineFinalizableLivePreviewAdapter(adapter: FinalizableLivePreviewAdapter): FinalizableLivePreviewAdapter; export declare function createLiveMessageState(params?: { receipt?: MessageReceipt; lastRendered?: RenderedMessageBatch; canFinalizeInPlace?: boolean; }): LiveMessageState; export declare function markLiveMessageFinalized(state: LiveMessageState, receipt: MessageReceipt): LiveMessageState; export declare function createPreviewMessageReceipt(params: { id: unknown; threadId?: string; replyToId?: string; sentAt?: number; raw?: unknown; }): MessageReceipt; export declare function deliverFinalizableLivePreview(params: { kind: "tool" | "block" | "final"; payload: TPayload; liveState?: LiveMessageState; draft?: LivePreviewFinalizerDraft; buildFinalEdit: (payload: TPayload) => TEdit | undefined; editFinal: (id: TId, edit: TEdit) => Promise; resolveFinalizedId?: (id: TId, edit: TEdit) => TId | undefined; deliverNormally: (payload: TPayload) => Promise; createPreviewReceipt?: (id: TId, edit: TEdit) => MessageReceipt; onPreviewFinalized?: (id: TId, receipt: MessageReceipt, liveState: LiveMessageState) => Promise | void; buildSupplementalPayload?: (payload: TPayload) => TPayload | undefined; deliverSupplemental?: (payload: TPayload) => Promise; handlePreviewEditError?: (params: { error: unknown; id: TId; edit: TEdit; payload: TPayload; liveState: LiveMessageState; }) => "fallback" | "retain" | Promise<"fallback" | "retain">; onNormalDelivered?: () => Promise | void; logPreviewEditFailure?: (error: unknown) => void; }): Promise>; export declare function deliverWithFinalizableLivePreviewAdapter(params: { kind: "tool" | "block" | "final"; payload: TPayload; liveState?: LiveMessageState; adapter?: FinalizableLivePreviewAdapter; deliverNormally: (payload: TPayload) => Promise; onNormalDelivered?: () => Promise | void; }): Promise>; export declare function markLiveMessagePreviewUpdated(state: LiveMessageState, rendered: RenderedMessageBatch): LiveMessageState; export declare function markLiveMessageCancelled(state: LiveMessageState): LiveMessageState;