/** * THE consent spelling for a Route53 record set, shared by every release * ceremony (the deploy takeover ticket — standalone CLI AND the cascade's * engine gate — and the sync-remediation residue ticket): `/` * for simple records — byte-identical to the pre-variant convention, so * existing docs and scripts keep working — and * `/@` for routing-policy variants. The name is * normalised (lowercased, trailing dot stripped, Route53 octal escapes * decoded) and the type uppercased, exactly the shape the rendered ticket * shows, so the operator copies it verbatim between surfaces. * * Homed in deploy-core (P6): the cascade's engine takeover gate mints these * names, so the grammar lives beside the gate; the CLI re-exports it — * declared ONCE, never per-surface. * * The ceremony itself (`evaluateDestructionConsents`, `computeTicketDigest`, * the Ink consent screen) treats the spelling as an opaque exact-match * string — only the minting and release arms speak this grammar. */ /** Parsed identity of a consent spelling — the release arms' key material. */ export interface RecordConsentIdentity { /** Normalised record name (lowercase, no trailing dot). */ readonly name: string; /** Uppercase record type. */ readonly type: string; /** Routing-policy variant; absent for simple records. */ readonly setIdentifier?: string; } export declare function recordPhysicalName(name: string, type: string, setIdentifier?: string): string; /** * Inverse of {@link recordPhysicalName}. The grammar is anchored on the * `/` boundary, NOT on the first `@` in the string: record names may * contain `@` (the zone-apex spelling exists) and a SetIdentifier is free * text that may itself contain `/` and `@`. Minted names are lowercased, so * no uppercase type token can occur inside the name — the FIRST `/` followed * by an uppercase type token that terminates at `@` or end-of-string is * therefore the unambiguous split, and everything after that `@` (the first * one following the type) is the identifier, verbatim. Returns `undefined` * for strings that were never minted by `recordPhysicalName`. */ export declare function parseRecordPhysicalName(physicalName: string): RecordConsentIdentity | undefined;