import { type IConstruct } from 'constructs'; /** * Turn all dependencies added via `source.node.addDependency(target)` into concrete dependencies. * * The semantics are that every construct underneath the source construct * depends on every construct underneath the target construct, but we reify this by * only applying the dependency between closest "source container" and "target container", * which may be for example stacks, and then we can get away with adding a single stack dependency. * * These will either turn into: * * - `stack.addStackDependency()` calls * - `resource.addResourceDependency()` calls * * As is appropriate for the constructs involved. */ export declare function reifyConstructDependencies(root: IConstruct): void; /** * Concretely apply a single dependency * * This finds the closest related dependency containers and applies the right operation. */ export declare function dispatchDependencyOperation(op: DependencyOperation): void; export type DependencyOperation = { readonly kind: 'add'; readonly source: IConstruct; readonly target: IConstruct; readonly reason: string; } | { readonly kind: 'remove'; readonly source: IConstruct; readonly target: IConstruct; };