import type { ClaimedTask } from '../types'; export interface ReapResult { reclaimed: number; deadLettered: number; missed: number; } export interface ExpiredLeaseRef { id: string; claimedEpoch: number; } export interface ExpiredLeaseRow extends ClaimedTask { dispatchedAt: Date | null; } export interface ReaperTaskStore { findExpiredLeases(limit: number): Promise; reclaimExpired(ref: ExpiredLeaseRef, backoffMs: number, errorMessage: string): Promise; deadLetterExpired(ref: ExpiredLeaseRef, errorMessage: string): Promise; completeExpired(ref: ExpiredLeaseRef): Promise; retireMissedPending(limit: number): Promise; } export interface ReaperOptions { batchSize: number; } export declare const DEFAULT_REAPER_OPTIONS: ReaperOptions; export interface ReaperHooks { onRowError?: (taskId: string, error: unknown) => void; onRetireError?: (error: unknown) => void; onDeadLetter?: (task: { taskId: string; attempts: number; maxAttempts: number; }) => void; onCompletedAfterDispatch?: (task: { taskId: string; }) => void; } export declare function reap(store: ReaperTaskStore, options?: ReaperOptions, hooks?: ReaperHooks, signal?: AbortSignal): Promise;