import type { CloudFormationStackArtifact } from '@aws-cdk/cloud-assembly-api'; import type { Export, StackResourceSummary } from '@aws-sdk/client-cloudformation'; import type { NestedStackTemplates } from './nested-stack-helpers'; import type { Template } from './stack-helpers'; import type { SDK } from '../aws-auth/private'; import type { ResourceMetadata } from '../resource-metadata'; export interface ListStackResources { listStackResources(): Promise; } export declare class LazyListStackResources implements ListStackResources { private readonly sdk; private readonly stackName; private stackResources; constructor(sdk: SDK, stackName: string); listStackResources(): Promise; } export interface LookupExport { lookupExport(name: string): Promise; } export declare class LookupExportError extends Error { } export declare class LazyLookupExport implements LookupExport { private readonly sdk; private cachedExports; constructor(sdk: SDK); lookupExport(name: string): Promise; private listExports; } export declare class CfnEvaluationException extends Error { } export interface ResourceDefinition { readonly LogicalId: string; readonly Type: string; readonly Properties: { [p: string]: any; }; } export interface EvaluateCloudFormationTemplateProps { readonly stackArtifact: CloudFormationStackArtifact; readonly stackName?: string; readonly template?: Template; readonly parameters: { [parameterName: string]: string; }; readonly account: string; readonly region: string; readonly partition: string; readonly sdk: SDK; readonly nestedStacks?: { [nestedStackLogicalId: string]: NestedStackTemplates; }; } export declare class EvaluateCloudFormationTemplate { readonly stackArtifact: CloudFormationStackArtifact; private readonly stackName; private readonly template; private readonly context; private readonly account; private readonly region; private readonly partition; private readonly sdk; private readonly nestedStacks; private readonly stackResources; private readonly lookupExport; private cachedUrlSuffix; private _cloudControl; constructor(props: EvaluateCloudFormationTemplateProps); private get cloudControl(); createNestedEvaluateCloudFormationTemplate(stackName: string, nestedTemplate: Template, nestedStackParameters: { [parameterName: string]: any; }): Promise; establishResourcePhysicalName(logicalId: string, physicalNameInCfnTemplate: any): Promise; findPhysicalNameFor(logicalId: string): Promise; findLogicalIdForPhysicalName(physicalName: string): Promise; findReferencesTo(logicalId: string): Array; evaluateCfnExpression(cfnExpression: any): Promise; /** * Best-effort attempt to construct the Cloud Control API primary identifier for a resource. * * Cloud Control compound identifiers are pipe-delimited, ordered by the `primaryIdentifier` * array in the resource type schema (e.g. `DatabaseName|TableName` for `AWS::Glue::Table`). * * CloudFormation's `PhysicalResourceId` (the `physicalId` parameter here) is the `Ref` return * value for the resource, which is resource-type-specific and may not correspond to the Cloud * Control Primary Identifier. * * For properties present in the template, we resolve them directly. For properties NOT in the * template (e.g. service-generated read-only values), we fall back to `physicalId`. This is * only correct when: * * - Exactly one property in the identifier is missing from the template, AND * - That property happens to be the one that `Ref` returns for this resource type. * * If multiple properties are missing, `physicalId` is reused for all of them. */ evaluateCloudControlIdentifier(logicalId: string, resourceType: string, physicalId: string): Promise; getResourceProperty(logicalId: string, propertyName: string): any; metadataFor(logicalId: string): ResourceMetadata | undefined; private references; private parseIntrinsic; private findRefTarget; private findGetAttTarget; private findNestedStack; private formatResourceAttribute; private getServiceOfResource; private getResourceTypeArnPartOfResource; } /** * Resources where the CloudFormation physical resource ID ({ Ref }) disagrees * with the Cloud Control API primary identifier. * * Maps resource type to the CC primary identifier property names. * For resources NOT in this map, the physical resource ID can be used * directly as the CC primary identifier. */ export declare const RESOURCE_TYPE_PRIMARY_IDENTIFIERS: { [type: string]: string[]; }; //# sourceMappingURL=evaluate-cloudformation-template.d.ts.map