/** * Application infrastructure stacks. * * UsEast1Certificates is the app-owned us-east-1 certificate stack (domain * gold-plating D3, BYO CloudFront path — components/infrastructure * `App.getUsEast1CertificateStack`). It exists only when a CloudFront-facing * pattern carries a custom domain outside us-east-1, so ordering derivations * include it ONLY when the post-synth manifest proves it * (`AppResourceFlags.hasUsEast1Certificates`) — a fixed-set entry would make * every deploy attempt a stack that does not exist. It must deploy BEFORE Cdn * (the distribution consumes its certificate ARN through cross-region * references) and destroy AFTER Cdn. * * UsEast1CdnLogging is the app-owned us-east-1 CloudFront standard-logging * (v2) stack (components/infrastructure `App.getUsEast1CdnLoggingStack`). * CloudWatch vends CloudFront delivery sources, destinations and deliveries * in us-east-1 only, so a logging CDN whose app deploys elsewhere creates * them there. It CONSUMES the Cdn stack's distribution and bucket ARNs * through cross-region references, so it is the mirror of the certificate * stack: it deploys AFTER Cdn and is destroyed BEFORE it, and it is likewise * conditional — a CDN in a us-east-1 app never creates it. */ export declare const APPLICATION_STACKS: { readonly NETWORK: "Network"; readonly DATABASE: "Database"; readonly STORAGE: "Storage"; readonly COMPUTE: "Compute"; readonly US_EAST_1_CERTIFICATES: "UsEast1Certificates"; readonly CDN: "Cdn"; readonly US_EAST_1_CDN_LOGGING: "UsEast1CdnLogging"; readonly MESSAGING: "Messaging"; }; export type ApplicationStack = (typeof APPLICATION_STACKS)[keyof typeof APPLICATION_STACKS]; export declare function isApplicationStack(value: string): value is ApplicationStack; /** * CloudFormation stack name of one of an application's stacks. * * This is the derivation `@fjall/components-infrastructure` uses to NAME the * stack at synth (`App` keys every stack on `toPascalCase(appName)` and the * stack id is the CloudFormation stack name), so it is the only way runtime * code may address one: a re-implementation agrees with the construct for a * lowercase app name and diverges for `billing-api` or `WebApp`, which is how * a hand-rolled `${appName}Network` shipped through typecheck and every * kebab-named fixture before failing for the first hyphenated app. Both sides * call this function; neither composes the string. */ export declare function getApplicationStackName(appName: string, stack: ApplicationStack): string;