import type { StackSelector } from '../../api/cloud-assembly';
/**
 * The source of the resource mappings to be used for refactoring.
 */
export declare class MappingSource {
    /**
     * The mapping will be automatically generated based on a comparison of
     * the deployed stacks and the local stacks.
     *
     * @param exclude - A list of resource locations to exclude from the mapping.
     */
    static auto(exclude?: string[]): MappingSource;
    /**
     * An explicitly provided list of mappings, which will be used for refactoring.
     */
    static explicit(groups: MappingGroup[]): MappingSource;
    /**
     * An explicitly provided list of mappings, which will be used for refactoring,
     * but in reverse, that is, the source locations will become the destination
     * locations and vice versa.
     */
    static reverse(groups: MappingGroup[]): MappingSource;
    private constructor();
}
export interface RefactorOptions {
    /**
     * Whether to only show the proposed refactor, without applying it
     *
     * @default false
     */
    readonly dryRun?: boolean;
    /**
     * Criteria for selecting stacks to deploy
     *
     * @default - all stacks
     */
    stacks?: StackSelector;
    /**
     * How the toolkit should obtain the mappings
     */
    mappingSource?: MappingSource;
}
export interface MappingGroup {
    /**
     * The account ID of the environment in which the mapping is valid.
     */
    account: string;
    /**
     * The region of the environment in which the mapping is valid.
     */
    region: string;
    /**
     * A collection of resource mappings, where each key is the source location
     * and the value is the destination location. Locations must be in the format
     * `StackName.LogicalId`. The source must refer to a location where there is
     * a resource currently deployed, while the destination must refer to a
     * location that is not already occupied by any resource.
     *
     */
    resources: {
        [key: string]: string;
    };
}
