/**
 * Walk an object tree depth-first, calling visitor on every node.
 */
export declare function walkObject(obj: any, visitor: (value: any) => void): void;
/**
 * Replace all {Ref}, {Fn::GetAtt}, and {Fn::Sub} references to a logical ID with literal values.
 */
export declare function replaceInObject(obj: any, logicalId: string, values: {
    ref: string;
    attrs: Record<string, string>;
}): any;
/**
 * Replace all references to a logical ID across Resources, Outputs, and Conditions.
 */
export declare function replaceReferences(template: any, logicalId: string, values: {
    ref: string;
    attrs: Record<string, string>;
}): void;
/**
 * Remove all DependsOn references to a logical ID from the template.
 */
export declare function removeDependsOn(template: any, logicalId: string): void;
import type { DeployStackResult, SuccessfulDeployStackResult } from '../../deployments/deployment-result';
/**
 * Verify a deploy result completed successfully.
 */
export declare function assertDeploySucceeded(result: DeployStackResult, step: string): asserts result is SuccessfulDeployStackResult;
/**
 * CloudFormation requires at least one resource in the template.
 * Add a placeholder if all resources were removed.
 */
export declare function ensureNonEmptyResources(template: any): void;
/**
 * Split construct paths into a stack ID and construct-level paths.
 *
 * The stack is the longest `availableStackIds` entry that prefixes the path,
 * so staged stacks (slash-delimited `hierarchicalId`) resolve correctly. All
 * paths must reference the same stack.
 */
export declare function resolveStackAndConstructPaths(paths: string[], availableStackIds: string[]): {
    stackId: string;
    constructPaths: string[];
};
//# sourceMappingURL=helpers.d.ts.map