/**
 * Re-exports of members and types that historically used to live here, but have been moved to a more apt package.
 *
 * Re-exported here for backwards compatibility.
 *
 * To satisfy the (jsii) use of these types in the public API of this package, we do the following:
 *
 * - Re-declare the types that we use in this assembly here (`declare class ...`).
 * - Copy the implementation from the upstream library.
 *
 * That way we satisfy the jsii and backwards compatibility checker, while keeping the implementation
 * centralized in a single place.
 */
import { ASSET_PREFIX_SEPARATOR, ASSET_RESOURCE_METADATA_DOCKER_BUILD_ARGS_KEY, ASSET_RESOURCE_METADATA_DOCKER_BUILD_CONTEXTS_KEY, ASSET_RESOURCE_METADATA_DOCKER_BUILD_SECRETS_KEY, ASSET_RESOURCE_METADATA_DOCKER_BUILD_SSH_KEY, ASSET_RESOURCE_METADATA_DOCKER_BUILD_TARGET_KEY, ASSET_RESOURCE_METADATA_DOCKER_CACHE_DISABLED_KEY, ASSET_RESOURCE_METADATA_DOCKER_CACHE_FROM_KEY, ASSET_RESOURCE_METADATA_DOCKER_CACHE_TO_KEY, ASSET_RESOURCE_METADATA_DOCKER_OUTPUTS_KEY, ASSET_RESOURCE_METADATA_DOCKERFILE_PATH_KEY, ASSET_RESOURCE_METADATA_ENABLED_CONTEXT, ASSET_RESOURCE_METADATA_IS_BUNDLED_KEY, ASSET_RESOURCE_METADATA_PATH_KEY, ASSET_RESOURCE_METADATA_PROPERTY_KEY, AVAILABILITY_ZONE_FALLBACK_CONTEXT_KEY, CloudAssembly as CloudAssembly_, CloudAssemblyBuilder as CloudAssemblyBuilder_, ENDPOINT_SERVICE_AVAILABILITY_ZONE_PROVIDER, PATH_METADATA_KEY, PROVIDER_ERROR_KEY, SSMPARAM_NO_INVALIDATE, UNKNOWN_ACCOUNT, UNKNOWN_REGION, type AmiContextResponse, type AvailabilityZonesContextResponse, type EndpointServiceAvailabilityZonesContextResponse, type StackMetadata } from '@aws-cdk/cloud-assembly-api';
import type * as cxschema from '@aws-cdk/cloud-assembly-schema';
export { ASSET_PREFIX_SEPARATOR, ASSET_RESOURCE_METADATA_DOCKER_BUILD_ARGS_KEY, ASSET_RESOURCE_METADATA_DOCKER_BUILD_CONTEXTS_KEY, ASSET_RESOURCE_METADATA_DOCKER_BUILD_SECRETS_KEY, ASSET_RESOURCE_METADATA_DOCKER_BUILD_SSH_KEY, ASSET_RESOURCE_METADATA_DOCKER_BUILD_TARGET_KEY, ASSET_RESOURCE_METADATA_DOCKER_CACHE_DISABLED_KEY, ASSET_RESOURCE_METADATA_DOCKER_CACHE_FROM_KEY, ASSET_RESOURCE_METADATA_DOCKER_CACHE_TO_KEY, ASSET_RESOURCE_METADATA_DOCKER_OUTPUTS_KEY, ASSET_RESOURCE_METADATA_DOCKERFILE_PATH_KEY, ASSET_RESOURCE_METADATA_ENABLED_CONTEXT, ASSET_RESOURCE_METADATA_IS_BUNDLED_KEY, ASSET_RESOURCE_METADATA_PATH_KEY, ASSET_RESOURCE_METADATA_PROPERTY_KEY, AVAILABILITY_ZONE_FALLBACK_CONTEXT_KEY, ENDPOINT_SERVICE_AVAILABILITY_ZONE_PROVIDER, PATH_METADATA_KEY, PROVIDER_ERROR_KEY, SSMPARAM_NO_INVALIDATE, UNKNOWN_ACCOUNT, UNKNOWN_REGION, AmiContextResponse, AvailabilityZonesContextResponse, EndpointServiceAvailabilityZonesContextResponse, StackMetadata, };
/**
 * @deprecated The official definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface SynthesisMessage {
    readonly level: SynthesisMessageLevel;
    readonly id: string;
    readonly entry: cxschema.MetadataEntry;
}
/**
 * @deprecated The official definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export declare enum SynthesisMessageLevel {
    INFO = "info",
    WARNING = "warning",
    ERROR = "error"
}
/**
 * Represents a deployable cloud application.
 */
export declare class CloudAssembly implements cxschema.ICloudAssembly {
    /**
     * Return whether the given object is a CloudAssembly.
     *
     * We do attribute detection since we can't reliably use 'instanceof'.
     */
    static isCloudAssembly(x: any): x is CloudAssembly;
    /**
     * Cleans up any temporary assembly directories that got created in this process
     *
     * If a Cloud Assembly is emitted to a temporary directory, its directory gets
     * added to a list. This function iterates over that list and deletes each
     * directory in it, to free up disk space.
     *
     * This function will normally be called automatically during Node process
     * exit and so you don't need to call this. However, some test environments do
     * not properly trigger Node's `exit` event. Notably: Jest does not trigger
     * the `exit` event (<https://github.com/jestjs/jest/issues/10927>).
     *
     * ## Cleaning up temporary directories in jest
     *
     * For Jest, you have to make sure this function is called at the end of the
     * test suite instead:
     *
     * ```js
     * import { CloudAssembly } from 'aws-cdk-lib/cx-api';
     *
     * afterAll(CloudAssembly.cleanupTemporaryDirectories);
     * ```
     *
     * Alternatively, you can use the `setupFilesAfterEnv` feature and use a
     * provided helper script to automatically inject the above into every
     * test file, so you don't have to do it by hand.
     *
     * ```
     * $ npx jest --setupFilesAfterEnv aws-cdk-lib/testhelpers/jest-autoclean
     * ```
     *
     * Or put the following into `jest.config.js`:
     *
     * ```js
     * module.exports = {
     *   // ...
     *   setupFilesAfterEnv: ['aws-cdk-lib/testhelpers/jest-cleanup'],
     * };
     * ```
     */
    static cleanupTemporaryDirectories(): void;
    /**
     * The root directory of the cloud assembly.
     */
    readonly directory: string;
    /**
     * The schema version of the assembly manifest.
     */
    readonly version: string;
    /**
     * All artifacts included in this assembly.
     */
    readonly artifacts: CloudArtifact[];
    /**
     * Runtime information such as module versions used to synthesize this assembly.
     */
    readonly runtime: cxschema.RuntimeInfo;
    /**
     * The raw assembly manifest.
     */
    readonly manifest: cxschema.AssemblyManifest;
    /**
     * Reads a cloud assembly from the specified directory.
     * @param directory - The root directory of the assembly.
     */
    constructor(directory: string, loadOptions?: cxschema.LoadManifestOptions);
    /**
     * Attempts to find an artifact with a specific identity.
     * @returns A `CloudArtifact` object or `undefined` if the artifact does not exist in this assembly.
     * @param id - The artifact ID
     */
    tryGetArtifact(id: string): CloudArtifact | undefined;
    /**
     * Returns a CloudFormation stack artifact from this assembly.
     *
     * Will only search the current assembly.
     *
     * @param stackName - the name of the CloudFormation stack.
     * @throws if there is no stack artifact by that name
     * @throws if there is more than one stack with the same stack name. You can
     * use `getStackArtifact(stack.artifactId)` instead.
     * @returns a `CloudFormationStackArtifact` object.
     */
    getStackByName(stackName: string): CloudFormationStackArtifact;
    /**
     * Returns a CloudFormation stack artifact from this assembly.
     *
     * @param artifactId - the artifact id of the stack (can be obtained through `stack.artifactId`).
     * @throws if there is no stack artifact with that id
     * @returns a `CloudFormationStackArtifact` object.
     */
    getStackArtifact(artifactId: string): CloudFormationStackArtifact;
    private tryGetArtifactRecursively;
    /**
     * Returns all the stacks, including the ones in nested assemblies
     */
    get stacksRecursively(): CloudFormationStackArtifact[];
    /**
     * Returns a nested assembly artifact.
     *
     * @param artifactId - The artifact ID of the nested assembly
     */
    getNestedAssemblyArtifact(artifactId: string): NestedCloudAssemblyArtifact;
    /**
     * Returns a nested assembly.
     *
     * @param artifactId - The artifact ID of the nested assembly
     */
    getNestedAssembly(artifactId: string): CloudAssembly;
    /**
     * Returns the tree metadata artifact from this assembly.
     * @throws if there is no metadata artifact by that name
     * @returns a `TreeCloudArtifact` object if there is one defined in the manifest, `undefined` otherwise.
     */
    tree(): TreeCloudArtifact | undefined;
    /**
     * @returns all the CloudFormation stack artifacts that are included in this assembly.
     */
    get stacks(): CloudFormationStackArtifact[];
    /**
     * The nested assembly artifacts in this assembly
     */
    get nestedAssemblies(): NestedCloudAssemblyArtifact[];
    private validateDeps;
    private renderArtifacts;
}
/**
 * Represents an artifact within a cloud assembly.
 */
export declare class CloudArtifact {
    readonly assembly: CloudAssembly;
    readonly id: string;
    /**
     * Returns a subclass of `CloudArtifact` based on the artifact type defined in the artifact manifest.
     *
     * @param assembly - The cloud assembly from which to load the artifact
     * @param id - The artifact ID
     * @param artifact - The artifact manifest
     * @returns the `CloudArtifact` that matches the artifact type or `undefined` if it's an artifact type that is unrecognized by this module.
     */
    static fromManifest(assembly: CloudAssembly, id: string, artifact: cxschema.ArtifactManifest): CloudArtifact | undefined;
    /**
     * The artifact's manifest
     */
    readonly manifest: cxschema.ArtifactManifest;
    /**
     * The set of messages extracted from the artifact's metadata.
     */
    readonly messages: SynthesisMessage[];
    /**
     * Cache of resolved dependencies.
     */
    private _deps?;
    protected constructor(assembly: CloudAssembly, id: string, manifest: cxschema.ArtifactManifest);
    /**
     * Returns all the artifacts that this artifact depends on.
     */
    get dependencies(): CloudArtifact[];
    /**
     * @returns all the metadata entries of a specific type in this artifact.
     */
    findMetadataByType(type: string): MetadataEntryResult[];
    private renderMessages;
    /**
     * An identifier that shows where this artifact is located in the tree
     * of nested assemblies, based on their manifests. Defaults to the normal
     * id. Should only be used in user interfaces.
     */
    get hierarchicalId(): string;
    /**
     * Returns the metadata associated with this Cloud Artifact
     */
    get metadata(): Record<string, cxschema.MetadataEntry[]>;
}
export declare class CloudFormationStackArtifact extends CloudArtifact {
    /**
     * Checks if `art` is an instance of this class.
     *
     * Use this method instead of `instanceof` to properly detect `CloudFormationStackArtifact`
     * instances, even when the construct library is symlinked.
     *
     * Explanation: in JavaScript, multiple copies of the `cx-api` library on
     * disk are seen as independent, completely different libraries. As a
     * consequence, the class `CloudFormationStackArtifact` in each copy of the `cx-api` library
     * is seen as a different class, and an instance of one class will not test as
     * `instanceof` the other class. `npm install` will not create installations
     * like this, but users may manually symlink construct libraries together or
     * use a monorepo tool: in those cases, multiple copies of the `cx-api`
     * library can be accidentally installed, and `instanceof` will behave
     * unpredictably. It is safest to avoid using `instanceof`, and using
     * this type-testing method instead.
     */
    static isCloudFormationStackArtifact(art: any): art is CloudFormationStackArtifact;
    /**
     * The file name of the template.
     */
    readonly templateFile: string;
    /**
     * The original name as defined in the CDK app.
     */
    readonly originalName: string;
    /**
     * Any assets associated with this stack.
     */
    readonly assets: cxschema.AssetMetadataEntry[];
    /**
     * CloudFormation parameters to pass to the stack.
     */
    readonly parameters: {
        [id: string]: string;
    };
    /**
     * CloudFormation tags to pass to the stack.
     */
    readonly tags: {
        [id: string]: string;
    };
    /**
     * SNS Topics that will receive stack events.
     */
    readonly notificationArns?: string[];
    /**
     * The physical name of this stack.
     */
    readonly stackName: string;
    /**
     * A string that represents this stack. Should only be used in user
     * interfaces. If the stackName has not been set explicitly, or has been set
     * to artifactId, it will return the hierarchicalId of the stack. Otherwise,
     * it will return something like "<hierarchicalId> (<stackName>)"
     */
    readonly displayName: string;
    /**
     * The environment into which to deploy this artifact.
     */
    readonly environment: Environment;
    /**
     * The role that needs to be assumed to deploy the stack
     *
     * @default - No role is assumed (current credentials are used)
     */
    readonly assumeRoleArn?: string;
    /**
     * External ID to use when assuming role for cloudformation deployments
     *
     * @default - No external ID
     */
    readonly assumeRoleExternalId?: string;
    /**
     * Additional options to pass to STS when assuming the role for cloudformation deployments.
     *
     * - `RoleArn` should not be used. Use the dedicated `assumeRoleArn` property instead.
     * - `ExternalId` should not be used. Use the dedicated `assumeRoleExternalId` instead.
     * - `TransitiveTagKeys` defaults to use all keys (if any) specified in `Tags`. E.g, all tags are transitive by default.
     *
     * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/STS.html#assumeRole-property
     * @default - No additional options.
     */
    readonly assumeRoleAdditionalOptions?: {
        [key: string]: any;
    };
    /**
     * The role that is passed to CloudFormation to execute the change set
     *
     * @default - No role is passed (currently assumed role/credentials are used)
     */
    readonly cloudFormationExecutionRoleArn?: string;
    /**
     * The role to use to look up values from the target AWS account
     *
     * @default - No role is assumed (current credentials are used)
     */
    readonly lookupRole?: cxschema.BootstrapRole;
    /**
     * If the stack template has already been included in the asset manifest, its asset URL
     *
     * @default - Not uploaded yet, upload just before deploying
     */
    readonly stackTemplateAssetObjectUrl?: string;
    /**
     * Version of bootstrap stack required to deploy this stack
     *
     * @default - No bootstrap stack required
     */
    readonly requiresBootstrapStackVersion?: number;
    /**
     * Name of SSM parameter with bootstrap stack version
     *
     * @default - Discover SSM parameter by reading stack
     */
    readonly bootstrapStackVersionSsmParameter?: string;
    /**
     * Whether termination protection is enabled for this stack.
     */
    readonly terminationProtection?: boolean;
    /**
     * Whether this stack should be validated by the CLI after synthesis
     *
     * @default - false
     */
    readonly validateOnSynth?: boolean;
    private _template;
    constructor(assembly: CloudAssembly, artifactId: string, artifact: cxschema.ArtifactManifest);
    /**
     * Full path to the template file
     */
    get templateFullPath(): string;
    /**
     * The CloudFormation template for this stack.
     */
    get template(): any;
}
/**
 * Asset manifest is a description of a set of assets which need to be built and published
 */
export declare class AssetManifestArtifact extends CloudArtifact {
    /**
     * Checks if `art` is an instance of this class.
     *
     * Use this method instead of `instanceof` to properly detect `AssetManifestArtifact`
     * instances, even when the construct library is symlinked.
     *
     * Explanation: in JavaScript, multiple copies of the `cx-api` library on
     * disk are seen as independent, completely different libraries. As a
     * consequence, the class `AssetManifestArtifact` in each copy of the `cx-api` library
     * is seen as a different class, and an instance of one class will not test as
     * `instanceof` the other class. `npm install` will not create installations
     * like this, but users may manually symlink construct libraries together or
     * use a monorepo tool: in those cases, multiple copies of the `cx-api`
     * library can be accidentally installed, and `instanceof` will behave
     * unpredictably. It is safest to avoid using `instanceof`, and using
     * this type-testing method instead.
     */
    static isAssetManifestArtifact(this: void, art: any): art is AssetManifestArtifact;
    /**
     * The file name of the asset manifest
     */
    readonly file: string;
    /**
     * Version of bootstrap stack required to deploy this stack
     */
    readonly requiresBootstrapStackVersion: number | undefined;
    /**
     * Name of SSM parameter with bootstrap stack version
     *
     * @default - Discover SSM parameter by reading stack
     */
    readonly bootstrapStackVersionSsmParameter?: string;
    private _contents?;
    constructor(assembly: CloudAssembly, name: string, artifact: cxschema.ArtifactManifest);
    /**
     * The Asset Manifest contents
     */
    get contents(): cxschema.AssetManifest;
}
/**
 * Asset manifest is a description of a set of assets which need to be built and published
 */
export declare class NestedCloudAssemblyArtifact extends CloudArtifact {
    /**
     * Checks if `art` is an instance of this class.
     *
     * Use this method instead of `instanceof` to properly detect `NestedCloudAssemblyArtifact`
     * instances, even when the construct library is symlinked.
     *
     * Explanation: in JavaScript, multiple copies of the `cx-api` library on
     * disk are seen as independent, completely different libraries. As a
     * consequence, the class `NestedCloudAssemblyArtifact` in each copy of the `cx-api` library
     * is seen as a different class, and an instance of one class will not test as
     * `instanceof` the other class. `npm install` will not create installations
     * like this, but users may manually symlink construct libraries together or
     * use a monorepo tool: in those cases, multiple copies of the `cx-api`
     * library can be accidentally installed, and `instanceof` will behave
     * unpredictably. It is safest to avoid using `instanceof`, and using
     * this type-testing method instead.
     */
    static isNestedCloudAssemblyArtifact(art: any): art is NestedCloudAssemblyArtifact;
    /**
     * The relative directory name of the asset manifest
     */
    readonly directoryName: string;
    /**
     * Display name
     */
    readonly displayName: string;
    /**
     * The nested Assembly
     */
    readonly nestedAssembly: CloudAssembly;
    constructor(assembly: CloudAssembly, name: string, artifact: cxschema.ArtifactManifest);
    /**
     * Full path to the nested assembly directory
     */
    get fullPath(): string;
}
export declare class TreeCloudArtifact extends CloudArtifact {
    /**
     * Checks if `art` is an instance of this class.
     *
     * Use this method instead of `instanceof` to properly detect `TreeCloudArtifact`
     * instances, even when the construct library is symlinked.
     *
     * Explanation: in JavaScript, multiple copies of the `cx-api` library on
     * disk are seen as independent, completely different libraries. As a
     * consequence, the class `TreeCloudArtifact` in each copy of the `cx-api` library
     * is seen as a different class, and an instance of one class will not test as
     * `instanceof` the other class. `npm install` will not create installations
     * like this, but users may manually symlink construct libraries together or
     * use a monorepo tool: in those cases, multiple copies of the `cx-api`
     * library can be accidentally installed, and `instanceof` will behave
     * unpredictably. It is safest to avoid using `instanceof`, and using
     * this type-testing method instead.
     */
    static isTreeCloudArtifact(art: any): art is TreeCloudArtifact;
    readonly file: string;
    constructor(assembly: CloudAssembly, name: string, artifact: cxschema.ArtifactManifest);
}
/**
 * @deprecated The official definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface MetadataEntryResult extends cxschema.MetadataEntry {
    /**
     * The path in which this entry was defined.
     */
    readonly path: string;
}
/**
 * Models an AWS execution environment, for use within the CDK toolkit.
 *
 * @deprecated The official definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface Environment {
    /** The arbitrary name of this environment (user-set, or at least user-meaningful) */
    readonly name: string;
    /** The AWS account this environment deploys into */
    readonly account: string;
    /** The AWS region name where this environment deploys into */
    readonly region: string;
}
/**
 * Can be used to build a cloud assembly.
 */
export declare class CloudAssemblyBuilder {
    /**
     * The root directory of the resulting cloud assembly.
     */
    readonly outdir: string;
    /**
     * The directory where assets of this Cloud Assembly should be stored
     */
    readonly assetOutdir: string;
    private readonly artifacts;
    private readonly missing;
    private readonly parentBuilder?;
    /**
     * Initializes a cloud assembly builder.
     * @param outdir - The output directory, uses temporary directory if undefined
     */
    constructor(outdir?: string, props?: CloudAssemblyBuilderProps);
    /**
     * Adds an artifact into the cloud assembly.
     * @param id - The ID of the artifact.
     * @param manifest - The artifact manifest
     */
    addArtifact(id: string, manifest: cxschema.ArtifactManifest): void;
    /**
     * Reports that some context is missing in order for this cloud assembly to be fully synthesized.
     * @param missing - Missing context information.
     */
    addMissing(missing: cxschema.MissingContext): void;
    /**
     * Finalizes the cloud assembly into the output directory returns a
     * `CloudAssembly` object that can be used to inspect the assembly.
     */
    buildAssembly(options?: AssemblyBuildOptions): CloudAssembly;
    /**
     * Creates a nested cloud assembly
     */
    createNestedAssembly(artifactId: string, displayName: string): CloudAssemblyBuilder;
    /**
     * Delete the cloud assembly directory
     */
    delete(): void;
}
/**
 * Convert one CloudAssembly type to another (public to private and vice-versa)
 *
 * @internal
 */
export declare function _convertCloudAssembly(x: CloudAssembly_): CloudAssembly;
export declare function _convertCloudAssembly(x: CloudAssembly): CloudAssembly_;
/**
 * Convert one CloudAssemblyBuilder type to another (public to private and vice-versa)
 *
 * @internal
 */
export declare function _convertCloudAssemblyBuilder(x: CloudAssemblyBuilder_): CloudAssemblyBuilder;
export declare function _convertCloudAssemblyBuilder(x: CloudAssemblyBuilder): CloudAssemblyBuilder_;
/**
 * Construction properties for CloudAssemblyBuilder
 */
export interface CloudAssemblyBuilderProps {
    /**
     * Use the given asset output directory
     *
     * @default - Same as the manifest outdir
     */
    readonly assetOutdir?: string;
    /**
     * If this builder is for a nested assembly, the parent assembly builder
     *
     * @default - This is a root assembly
     */
    readonly parentBuilder?: CloudAssemblyBuilder;
}
export interface AssemblyBuildOptions {
}
/**
 * Placeholders which can be used manifests
 *
 * These can occur both in the Asset Manifest as well as the general
 * Cloud Assembly manifest.
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export declare class EnvironmentPlaceholders {
    /**
     * Insert this into the destination fields to be replaced with the current region
     */
    static readonly CURRENT_REGION = "${AWS::Region}";
    /**
     * Insert this into the destination fields to be replaced with the current account
     */
    static readonly CURRENT_ACCOUNT = "${AWS::AccountId}";
    /**
     * Insert this into the destination fields to be replaced with the current partition
     */
    static readonly CURRENT_PARTITION = "${AWS::Partition}";
    /**
     * Replace the environment placeholders in all strings found in a complex object.
     *
     * Duplicated between cdk-assets and aws-cdk CLI because we don't have a good single place to put it
     * (they're nominally independent tools).
     */
    static replace(object: any, values: EnvironmentPlaceholderValues): any;
    /**
     * Like 'replace', but asynchronous
     */
    static replaceAsync(object: any, provider: IEnvironmentPlaceholderProvider): Promise<any>;
    private static recurse;
}
/**
 * Return the appropriate values for the environment placeholders
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface EnvironmentPlaceholderValues {
    /**
     * Return the region
     */
    readonly region: string;
    /**
     * Return the account
     */
    readonly accountId: string;
    /**
     * Return the partition
     */
    readonly partition: string;
}
/**
 * Return the appropriate values for the environment placeholders
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface IEnvironmentPlaceholderProvider {
    /**
     * Return the region
     */
    region(): Promise<string>;
    /**
     * Return the account
     */
    accountId(): Promise<string>;
    /**
     * Return the partition
     */
    partition(): Promise<string>;
}
/**
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export declare class EnvironmentUtils {
    static parse(environment: string): Environment;
    /**
     * Build an environment object from an account and region
     */
    static make(account: string, region: string): Environment;
    /**
     * Format an environment string from an account and region
     */
    static format(account: string, region: string): string;
}
/**
 * Properties of a discovered SecurityGroup.
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface SecurityGroupContextResponse {
    /**
     * The security group's id.
     */
    readonly securityGroupId: string;
    /**
     * Whether the security group allows all outbound traffic. This will be true
     * when the security group has all-protocol egress permissions to access both
     * `0.0.0.0/0` and `::/0`.
     */
    readonly allowAllOutbound: boolean;
}
/**
 * The type of subnet group.
 * Same as SubnetType in the aws-cdk-lib/aws-ec2 package,
 * but we can't use that because of cyclical dependencies.
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export declare enum VpcSubnetGroupType {
    /** Public subnet group type. */
    PUBLIC = "Public",
    /** Private subnet group type. */
    PRIVATE = "Private",
    /** Isolated subnet group type. */
    ISOLATED = "Isolated"
}
/**
 * A subnet representation that the VPC provider uses.
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface VpcSubnet {
    /** The identifier of the subnet. */
    readonly subnetId: string;
    /**
     * The code of the availability zone this subnet is in
     * (for example, 'us-west-2a').
     */
    readonly availabilityZone: string;
    /** The identifier of the route table for this subnet. */
    readonly routeTableId: string;
    /**
     * CIDR range of the subnet
     *
     * @default - CIDR information not available
     */
    readonly cidr?: string;
}
/**
 * A group of subnets returned by the VPC provider.
 * The included subnets do NOT have to be symmetric!
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface VpcSubnetGroup {
    /**
     * The name of the subnet group,
     * determined by looking at the tags of of the subnets
     * that belong to it.
     */
    readonly name: string;
    /** The type of the subnet group. */
    readonly type: VpcSubnetGroupType;
    /**
     * The subnets that are part of this group.
     * There is no condition that the subnets have to be symmetric
     * in the group.
     */
    readonly subnets: VpcSubnet[];
}
/**
 * Properties of a discovered VPC
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface VpcContextResponse {
    /**
     * VPC id
     */
    readonly vpcId: string;
    /**
     * VPC cidr
     *
     * @default - CIDR information not available
     */
    readonly vpcCidrBlock?: string;
    /**
     * AZs
     */
    readonly availabilityZones: string[];
    /**
     * IDs of all public subnets
     *
     * Element count: #(availabilityZones) · #(publicGroups)
     */
    readonly publicSubnetIds?: string[];
    /**
     * Name of public subnet groups
     *
     * Element count: #(publicGroups)
     */
    readonly publicSubnetNames?: string[];
    /**
     * Route Table IDs of public subnet groups.
     *
     * Element count: #(availabilityZones) · #(publicGroups)
     */
    readonly publicSubnetRouteTableIds?: string[];
    /**
     * IDs of all private subnets
     *
     * Element count: #(availabilityZones) · #(privateGroups)
     */
    readonly privateSubnetIds?: string[];
    /**
     * Name of private subnet groups
     *
     * Element count: #(privateGroups)
     */
    readonly privateSubnetNames?: string[];
    /**
     * Route Table IDs of private subnet groups.
     *
     * Element count: #(availabilityZones) · #(privateGroups)
     */
    readonly privateSubnetRouteTableIds?: string[];
    /**
     * IDs of all isolated subnets
     *
     * Element count: #(availabilityZones) · #(isolatedGroups)
     */
    readonly isolatedSubnetIds?: string[];
    /**
     * Name of isolated subnet groups
     *
     * Element count: #(isolatedGroups)
     */
    readonly isolatedSubnetNames?: string[];
    /**
     * Route Table IDs of isolated subnet groups.
     *
     * Element count: #(availabilityZones) · #(isolatedGroups)
     */
    readonly isolatedSubnetRouteTableIds?: string[];
    /**
     * The VPN gateway ID
     */
    readonly vpnGatewayId?: string;
    /**
     * The subnet groups discovered for the given VPC.
     * Unlike the above properties, this will include asymmetric subnets,
     * if the VPC has any.
     * This property will only be populated if `VpcContextQuery.returnAsymmetricSubnets`
     * is true.
     *
     * @default - no subnet groups will be returned unless `VpcContextQuery.returnAsymmetricSubnets` is true
     */
    readonly subnetGroups?: VpcSubnetGroup[];
    /**
     * The region in which the VPC is in.
     *
     * @default - Region of the parent stack
     */
    readonly region?: string;
    /**
     * The ID of the AWS account that owns the VPC.
     *
     * @default the account id of the parent stack
     */
    readonly ownerAccountId?: string;
}
/**
 * Load balancer ip address type.
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export declare enum LoadBalancerIpAddressType {
    /**
     * IPV4 ip address
     */
    IPV4 = "ipv4",
    /**
     * Dual stack address
     */
    DUAL_STACK = "dualstack",
    /**
     * IPv6 only public addresses, with private IPv4 and IPv6 addresses
     */
    DUAL_STACK_WITHOUT_PUBLIC_IPV4 = "dualstack-without-public-ipv4"
}
/**
 * Properties of a discovered load balancer
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface LoadBalancerContextResponse {
    /**
     * The ARN of the load balancer.
     */
    readonly loadBalancerArn: string;
    /**
     * The hosted zone ID of the load balancer's name.
     */
    readonly loadBalancerCanonicalHostedZoneId: string;
    /**
     * Load balancer's DNS name
     */
    readonly loadBalancerDnsName: string;
    /**
     * Type of IP address
     */
    readonly ipAddressType: LoadBalancerIpAddressType;
    /**
     * Load balancer's security groups
     */
    readonly securityGroupIds: string[];
    /**
     * Load balancer's VPC
     */
    readonly vpcId: string;
}
/**
 * Properties of a discovered load balancer listener.
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface LoadBalancerListenerContextResponse {
    /**
     * The ARN of the listener.
     */
    readonly listenerArn: string;
    /**
     * The port the listener is listening on.
     */
    readonly listenerPort: number;
    /**
     * The security groups of the load balancer.
     */
    readonly securityGroupIds: string[];
}
/**
 * Properties of a discovered key
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface KeyContextResponse {
    /**
     * Id of the key
     */
    readonly keyId: string;
}
/**
 * Query to hosted zone context provider
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface EndpointServiceAvailabilityZonesContextQuery {
    /**
     * Query account
     */
    readonly account?: string;
    /**
     * Query region
     */
    readonly region?: string;
    /**
     * Query service name
     */
    readonly serviceName?: string;
}
/**
 * Artifact properties for CloudFormation stacks.
 *
 * @deprecated The definition of this type has moved to `@aws-cdk/cloud-assembly-api`.
 */
export interface AwsCloudFormationStackProperties {
    /**
     * A file relative to the assembly root which contains the CloudFormation template for this stack.
     */
    readonly templateFile: string;
    /**
     * Values for CloudFormation stack parameters that should be passed when the stack is deployed.
     */
    readonly parameters?: {
        [id: string]: string;
    };
    /**
     * The name to use for the CloudFormation stack.
     * @default - name derived from artifact ID
     */
    readonly stackName?: string;
    /**
     * Whether to enable termination protection for this stack.
     *
     * @default false
     */
    readonly terminationProtection?: boolean;
}
