/** * Pinned-name detection: a resource is custom-named iff the property named by * the registry schema's `primaryIdentifier` (fallback: the small * `@fjall/util` map for types whose identifier is a generated attribute) is * explicitly present in the synthesised template with a LITERAL value. The * template is the source of truth — CDK-generated names arrive as intrinsics * (`Ref` / `Fn::*`) or are omitted entirely, so a literal string here means * the author pinned the physical name. * * `replacement-required ∧ custom-named ⇒ pinned-name-replacement`: the update * fails at apply time with "CloudFormation cannot update a stack when a * custom-named resource requires replacing" — the Phase 2 destruction gate * consumes this signal; Phase 1 annotates it on the plan row. */ /** * Detect a pinned physical name on a template resource. Returns the literal * name, or undefined when the resource is CDK-named (intrinsic or absent) or * the naming property cannot be determined. */ export declare function findPinnedPhysicalName(params: { resourceType: string; /** The resource's template `Properties` block. */ properties: Record | undefined; /** Registry `primaryIdentifier` pointers, when the oracle resolved them. */ primaryIdentifier?: readonly string[]; }): string | undefined; /** * Extract a resource's `Properties` block from a parsed CloudFormation * template without asserting the template's overall shape. */ export declare function resourcePropertiesFromTemplate(template: unknown, logicalId: string): Record | undefined;