import { type Route53Client } from "@aws-sdk/client-route-53"; import { type Result } from "@fjall/generator"; /** * The EXECUTION ARM of the record-release ceremonies: the deploy takeover * gate (standalone CLI and the cascade's engine gate, P6) and the sync * remediation surface both delete consented record sets through this one * helper. Homed in deploy-core so the cascade gate never re-implements the * delete grammar the CLI already proved; the CLI re-exports it. */ /** * Normalised `name|TYPE|setIdentifier` key shared with the zone classifier's * vocabulary. The third segment is empty for simple records, so a key names * exactly ONE record set: either the simple record or one routing-policy * variant — never a variant family. */ export declare function recordSetKey(name: string, type: string, setIdentifier?: string): string; export interface DeletedRecordSet { readonly name: string; readonly type: string; /** Present when the deleted record set was a routing-policy variant. */ readonly setIdentifier?: string; } /** * Delete the record sets matching the supplied normalised * `name|TYPE|setIdentifier` keys — the execution arm of the release * ceremonies (sync remediation and the deploy takeover). Callers reach this * ONLY after `evaluateDestructionConsents` satisfied the ticket; the helper * itself adds a structural guard: SOA and NS deletions are refused outright * (the zone's own records ride the zone lifecycle; NS delegation removal has * its own destroy-mirror machinery with its own ceremony). * * Each Route53 DELETE requires the record set's exact live shape, so the zone * is re-listed here and matching is by the FULL key: one consented key * deletes exactly one record set — a routing-policy sibling with a different * SetIdentifier is never touched. */ export declare function deleteRecordSetsByKey(route53: Pick, hostedZoneId: string, keys: ReadonlySet, abortSignal?: AbortSignal): Promise>;