/**
 * Delivery Run Coordinator — `uap agent` + `uap deploy` integration
 *
 * Makes a delivery run a first-class citizen of the multi-agent coordination
 * layer:
 *
 *  - registers an ephemeral agent for the run (visible in `uap agent status`)
 *  - announces work intent on the project root (overlap detection warns
 *    other agents — and this run — about concurrent edits)
 *  - heartbeats every loop turn so the run never shows as stale
 *  - marks work complete and deregisters when the loop finishes
 *  - on success, can queue a commit of the applied files into the deploy
 *    batcher (`uap deploy status` / `uap deploy flush`)
 *
 * Everything is fail-soft via lazy imports: a missing/locked coordination DB
 * degrades to a no-op coordinator rather than blocking delivery.
 */
import type { DeliveryResult, IterationRecord } from './convergence-loop.js';
export interface RunCoordinator {
    /** Agent id registered for this run; null when coordination is degraded. */
    readonly agentId: string | null;
    /** Overlap warnings returned by the work announcement (may be empty). */
    readonly overlapWarnings: string[];
    /** Heartbeat + status update per loop turn (wire into onIteration). */
    onIteration(record: IterationRecord): void;
    /** Complete the announced work and deregister the agent. */
    finish(result: DeliveryResult): Promise<void>;
    /** Queue a commit of the run's applied files into the deploy batcher. */
    queueDeploy(result: DeliveryResult, message: string): Promise<number | null>;
}
export interface RunCoordinatorOptions {
    instruction: string;
    projectRoot: string;
    modelId: string;
    /** Estimated minutes for the announcement (default 15) */
    estimatedMinutes?: number;
    /** Coordination DB override (tests); defaults to the shared coordination DB */
    dbPath?: string;
}
/** All files the loop applied across its iteration history, deduplicated. */
export declare function collectAppliedFiles(result: DeliveryResult): string[];
/**
 * Register this delivery run with the coordination service and announce its
 * work. Returns a no-op coordinator when the coordination layer is
 * unavailable — delivery must never fail because coordination did.
 */
export declare function createRunCoordinator(options: RunCoordinatorOptions): Promise<RunCoordinator>;
//# sourceMappingURL=run-coordinator.d.ts.map