import { type DeliveryQueue, type QueueEditSession, type QueuedCommand, type QueuedMessage, type QueueLane } from "./queue-state.ts"; export type QueueModes = Record; /** Attachments always keep a row in message form. */ export declare function itemCommand(item: Pick, "text" | "images">): QueuedCommand | undefined; /** Only the contiguous same-lane head is dispatchable. */ export declare function headDeliveryBatch(timeline: readonly QueuedMessage[]): QueuedMessage[]; export declare function laneIsHeld(queue: DeliveryQueue, edit: QueueEditSession | undefined, modes: QueueModes, lane: QueueLane): boolean; export declare function takeMessageBatch(queue: DeliveryQueue, edit: QueueEditSession | undefined, modes: QueueModes, lane: QueueLane): QueuedMessage[]; export declare function shouldHoldFailedRun(paused: boolean, hasRows: boolean): boolean; export declare function canRecoverCompaction(errorHold: boolean, overflow: boolean, failed: boolean): boolean; /** Recovery never releases an explicit user pause. Shared by TUI and headless. */ export declare class QueueRunHold { paused: boolean; errorHold: boolean; pause(): void; resume(): void; failed(hasRows: boolean): void; recovered(): void; compacted(overflow: boolean, failed: boolean): void; }