import type { ProviderDnsRecord } from "./registrar.js";
export interface DesiredDnsState {
    domain?: string;
    records: ProviderDnsRecord[];
}
export type DnsPlanOperationType = "create" | "delete" | "update" | "unchanged";
export interface DnsPlanOperation {
    op: DnsPlanOperationType;
    record: ProviderDnsRecord;
    current?: ProviderDnsRecord;
}
export interface DnsPlan {
    domain: string;
    creates: number;
    updates: number;
    deletes: number;
    unchanged: number;
    operations: DnsPlanOperation[];
}
export type DnsApplyBlockReason = "confirmation-required" | "delete-confirmation-required" | "delete-apply-unsupported";
export declare function normalizeDnsRecord(record: ProviderDnsRecord, domain: string): ProviderDnsRecord;
export declare function parseDesiredDnsState(input: string, domainHint?: string): DesiredDnsState;
export declare function createDnsPlan(domain: string, current: ProviderDnsRecord[], desired: ProviderDnsRecord[]): DnsPlan;
export declare function planHasChanges(plan: DnsPlan): boolean;
export declare function selectChangedDnsRecords(plan: DnsPlan, desired: ProviderDnsRecord[]): ProviderDnsRecord[];
export declare function getDnsApplyBlockReason(plan: DnsPlan, opts: {
    yes?: boolean;
    allowDelete?: boolean;
}, deleteSupported?: boolean): DnsApplyBlockReason | undefined;
//# sourceMappingURL=dns-plan.d.ts.map