import type * as cxapi from '@aws-cdk/cloud-assembly-api';
import type { Deployments } from '../deployments';
import type { IoHelper } from '../io/private';
export interface ResourceOrphanerProps {
    readonly deployments: Deployments;
    readonly ioHelper: IoHelper;
    readonly roleArn?: string;
    readonly toolkitStackName?: string;
}
/**
 * A resource that will be orphaned.
 */
export interface OrphanedResource {
    readonly logicalId: string;
    readonly resourceType: string;
    readonly cdkPath: string;
}
/**
 * The result of planning an orphan operation.
 */
export interface OrphanPlan {
    /** The stack being modified */
    readonly stackName: string;
    /** Resources that will be detached from the stack */
    readonly orphanedResources: OrphanedResource[];
    /** Execute the orphan operation (3 CloudFormation deployments) */
    execute(): Promise<OrphanResult>;
}
/**
 * The result of executing an orphan operation.
 */
export interface OrphanResult {
    /** Resource mapping JSON for use with `cdk import --resource-mapping` */
    readonly resourceMapping: Record<string, Record<string, string>>;
}
/**
 * Orphans all resources under construct path(s) from a CloudFormation stack.
 *
 * Usage:
 *   const plan = await orphaner.makePlan(stack, constructPaths);
 *   // inspect plan.orphanedResources
 *   const result = await plan.execute();
 */
export declare class ResourceOrphaner {
    private readonly deployments;
    private readonly ioHelper;
    private readonly roleArn?;
    private readonly toolkitStackName?;
    constructor(props: ResourceOrphanerProps);
    /**
     * Analyze the stack and build a plan of what will be orphaned.
     * This is read-only — no changes are made until `plan.execute()` is called.
     */
    makePlan(stack: cxapi.CloudFormationStackArtifact, constructPaths: string[]): Promise<OrphanPlan>;
    private execute;
    /**
     * Deploy a template override to the stack.
     */
    private deployStack;
    /**
     * Resolve GetAtt attribute values for orphaned resources.
     *
     * Current strategy: inject temporary Outputs into the stack that reference
     * each GetAtt, deploy, then read the resolved values from DescribeStacks.
     *
     * This function is intentionally decoupled from the rest of the orphan flow
     * so it can be replaced with a Cloud Control API-based approach later.
     *
     * Returns a complete map of resolved values (Ref + attrs) for each logical ID.
     */
    private resolveGetAttValues;
    private findGetAttReferences;
    private getResourceIdentifiers;
}
//# sourceMappingURL=orphaner.d.ts.map