/**
 * Domain provisioning daemon — reconciles a set of domains toward `ready`.
 *
 * Each tick: gather live signals per domain, derive its lifecycle state, and run
 * the next action (register / create_cf_zone / delegate_ns / check_ns_propagation
 * / verify_dns / finalize). Signals + actions are injected so the loop is fully
 * testable; the CLI wires real Route53/Cloudflare/DNS calls. State is derived
 * live (no separate persistence needed), so a restart simply re-derives.
 */
import { type DomainSignals, type DomainProvAction } from "./provision-state.js";
export interface DomainReconcileDeps {
    gatherSignals: (domain: string) => Promise<DomainSignals>;
    runAction: (domain: string, action: DomainProvAction) => Promise<void>;
    log?: (event: string, detail: Record<string, unknown>) => void;
}
export interface DomainReconcileSummary {
    processed: number;
    advanced: number;
    ready: number;
    errors: number;
}
export declare function reconcileDomainTick(domains: string[], deps: DomainReconcileDeps): Promise<DomainReconcileSummary>;
export interface DomainDaemonOptions extends DomainReconcileDeps {
    intervalSec?: number;
    maxTicks?: number;
    shouldStop?: () => boolean;
    sleep?: (ms: number) => Promise<void>;
}
export declare function runDomainDaemon(domains: () => Promise<string[]>, opts: DomainDaemonOptions): Promise<DomainReconcileSummary>;
//# sourceMappingURL=domain-daemon.d.ts.map