import { type S3Client } from "@aws-sdk/client-s3"; import type { DeployCallbacks } from "../../types/callbacks.js"; export interface OrphanSweepSummary { /** Marked buckets that survived the CFN destroy and were emptied + deleted SDK-side. */ swept: string[]; /** Marked buckets that still exist but could not be removed — warned, never fails the destroy. */ failed: string[]; } /** * Convergent post-CFN orphan sweep (AC3.3). After CFN reports the stack gone, * any bucket captured pre-destroy that still exists AND still carries a * DESTROY-intent marker is emptied and deleted SDK-side, so re-running an * interrupted destroy converges instead of stranding marked buckets. * * Convergence is bounded by capture-before-destroy: the captured list dies * with the process, so a crash after CFN reports the stack gone but before * this sweep completes leaves survivors a re-run cannot see — the deleted * stack no longer lists its resources, and the re-run captures nothing. * * The tag re-probe is the name-reuse guard: a bucket recreated by another * owner after CFN deleted the original classifies "retained" and is never * touched. Already-gone buckets are convergence, not failures. The sweep * never fails the destroy — per-bucket problems warn and continue. */ export declare function sweepOrphanedDestroyBuckets(s3Client: S3Client, bucketNames: readonly string[], callbacks?: DeployCallbacks, abortSignal?: AbortSignal): Promise;