/** * Delta apply: reimport or delete keys from dirty registry (SPEC_F §F.8). */ import type { MigrationRun } from './registry.ts'; import type { MigrationRedisClient } from './redis-client.ts'; /** Run row plus dirty-apply throughput, pending counts and ETA, passed to `onProgress`. */ export interface DirtyProgress extends MigrationRun { dirty_elapsed_seconds: number; dirty_keys_per_second: number; dirty_keys_processed: number; dirty_keys_fetched: number; dirty_reconciled_total: number; dirty_pending: number; dirty_pending_dirty: number; dirty_pending_deleted: number; dirty_eta_seconds: number | null; } export interface ApplyDirtyOptions { /** PRAGMA preset. Default `'default'`. */ pragmaTemplate?: string; /** Dirty keys fetched per batch. Default 200. */ batch_keys?: number; /** Max requests/s; 0 = no limit. Default 0. */ max_rps?: number; /** Concurrent key imports. Default 1. */ concurrency?: number; /** Minimum interval between progress callbacks. Default 2000. */ progress_interval_ms?: number; /** Called after each batch with the current run row. */ onProgress?: (run: DirtyProgress) => void | Promise; } /** * Apply dirty keys: for each key in registry with state=dirty, reimport from Redis or delete in destination. */ export declare function runApplyDirty(redisClient: MigrationRedisClient, dbPath: string, runId: string, options?: ApplyDirtyOptions): Promise;