/** * Export names an application's own stacks emit for the runtime to read back. * * These names are a contract between `@fjall/components-infrastructure`, * which emits them as CloudFormation exports at synth, and the runtime * consumers that address the live resources they name: deploy-core's * `EcsServiceResolver` (the ECS services `fjall services`, `fjall rollout`, * a code-only deploy, a rollback and a restart act on) and the fjall.io * webapp's VPC CIDR capture. Both sides MUST call these functions rather than * compose or pattern-match the string themselves. The producer once built * the service name from `toPascalCase(appName)` while the consumer searched * exports for the app name as written, so no hyphenated app could resolve * its services; and a substring match on the consumer side returned a * sibling app's services whenever one name contained the other. * * Every builder takes RAW names — the CloudFormation stack name, the * cluster's construct id, the service's manifest name, the VPC's construct * id — never a pre-sanitised token, so the two sides cannot normalise * differently. `stackName` is the stack the output lives in * (`getApplicationStackName`), which is what makes the name unique per * account and region: export names are a flat namespace, and a name built * only from the literal ids inside a pattern is shared by every app that * uses that pattern. * * The `is*ExportName` predicates identify an output that CLAIMS the contract * (they read the marker suffix, case-sensitively). A consumer that selects * by predicate must then verify the claim by rebuilding the name from the * output's own value and refuse the output when the two disagree — the * predicate is a filter, never proof. */ /** * Qualify an export name with the stack that emits it. The suffix stays * last: every builder below composes through this function, and the * predicates read the tail. */ export declare function stackScopedExportName(stackName: string, suffix: string): string; export declare const DEPLOYABLE_SERVICE_EXPORT_MARKER = "DeployableService"; export declare const DEPLOYABLE_CLUSTER_EXPORT_MARKER = "DeployableCluster"; export declare const CLUSTER_ARN_EXPORT_MARKER = "ClusterArn"; export declare const VPC_CIDR_EXPORT_MARKER = "-vpc-cidr"; /** * Export carrying the ARN of one deployable ECS service. * * `clusterName` is the ECS cluster's construct id, which is also its physical * cluster name; `serviceName` is the service's manifest name, which is also * its physical ECS service name. Both therefore reappear verbatim in the * exported ARN (`…:service//`), so a consumer can * rebuild this name from the ARN alone and check the export against it. */ export declare function deployableServiceExportName(stackName: string, clusterName: string, serviceName: string): string; /** * The unqualified form constructs 2.0.0 through 7.x emitted, before 8.0.0 * qualified every export with its stack. Consumers accept it so an app last * deployed on those versions still resolves; nothing emits it any more. */ export declare function legacyDeployableServiceExportName(clusterName: string, serviceName: string): string; export declare function isDeployableServiceExportName(exportName: string): boolean; /** Export carrying the ARN of a cluster that holds deployable services. */ export declare function deployableClusterExportName(stackName: string, clusterName: string): string; /** Export carrying an ECS cluster's ARN under its plain name. */ export declare function clusterArnExportName(stackName: string, clusterName: string): string; /** * Construct id of the VPC `App.getApp(name, { network })` creates in the * app's Network stack — the id the VPC CIDR export is keyed on. */ export declare function defaultVpcConstructId(appName: string): string; /** * Export carrying a VPC's CIDR block. The construct id is load-bearing: a * stack holding two VPCs (`app.addNetwork`) would otherwise emit one name * twice, and CloudFormation rejects the template. */ export declare function vpcCidrExportName(stackName: string, vpcConstructId: string): string; /** * The form constructs before 8.0.0 emitted, keyed on the stack alone. * Accepted by consumers for apps last deployed on those versions. */ export declare function legacyVpcCidrExportName(stackName: string): string; export declare function isVpcCidrExportName(exportName: string): boolean;