import { type TypedQueryClient } from "../generated/storage-kit/index.js";
import { type DomainProvisioningJob, type DomainDnsReconciliation, type DomainProvisioningProviderState, type DomainProvisioningRequest, type DomainProvisioningStore, type PortfolioDomainRegistration, type RegisteredDomainDetail, type HostedDnsRecord } from "../lib/provisioning.js";
export declare class DomainsProvisioningRepo implements DomainProvisioningStore {
    private readonly db;
    private readonly domains;
    constructor(db: TypedQueryClient);
    private assertCanonicalRequestHash;
    private resolveUniqueReservationConflict;
    reserve(request: DomainProvisioningRequest, requestHash: string): Promise<DomainProvisioningJob>;
    reserveAdoption(request: DomainProvisioningRequest, requestHash: string, detail: RegisteredDomainDetail, initialProviderState?: DomainProvisioningProviderState): Promise<DomainProvisioningJob>;
    get(id: string): Promise<DomainProvisioningJob | null>;
    getByName(name: string): Promise<DomainProvisioningJob | null>;
    getPortfolioRegistration(name: string): Promise<PortfolioDomainRegistration | null>;
    listRunnable(limit: number): Promise<DomainProvisioningJob[]>;
    claim(id: string, leaseToken: string, leaseUntil: string): Promise<DomainProvisioningJob | null>;
    update(id: string, patch: Partial<Pick<DomainProvisioningJob, "status" | "provider_state" | "attempts" | "error" | "lease_token" | "lease_until">>, leaseToken?: string): Promise<DomainProvisioningJob | null>;
    markPortfolioReady(job: DomainProvisioningJob, detail: RegisteredDomainDetail): Promise<void>;
    listDnsReconciliations(name: string, query: {
        id?: string;
        idempotency_key?: string;
        limit: number;
        offset: number;
    }): Promise<DomainDnsReconciliation[]>;
    reserveDnsReconciliation(input: {
        job: DomainProvisioningJob;
        idempotencyKey: string;
        requestHash: string;
        records: HostedDnsRecord[];
    }): Promise<DomainDnsReconciliation>;
    withDnsZoneLock<T>(zoneId: string, work: (store: DomainProvisioningStore) => Promise<T>): Promise<T>;
    claimDnsReconciliation(id: string, leaseToken: string, leaseUntil: string): Promise<DomainDnsReconciliation | null>;
    updateDnsReconciliation(id: string, patch: Partial<Pick<DomainDnsReconciliation, "status" | "result" | "error" | "lease_token" | "lease_until">>, leaseToken: string): Promise<DomainDnsReconciliation | null>;
}
//# sourceMappingURL=provisioning-repo.d.ts.map