import { type Result } from "@fjall/generator"; import { type BackupVaultVerdict } from "@fjall/util"; import type { DeploymentContext, StepOutput } from "../../types/deployment/index.js"; /** * The deploy context for one pass against a vault verdict. Each pass gets its * OWN context object: the verdict is what the construct synthesises from, and * the import flag is derived from it here and nowhere else — an `unowned` * verdict is the import pass, every other verdict deploys plainly. */ export declare function withBackupVaultVerdict(context: DeploymentContext, verdict: BackupVaultVerdict): DeploymentContext; export declare function isBackupVaultImportPass(context: DeploymentContext): boolean; export declare function formatBackupVaultReownNote(accountLabel: string, region: string): string; export interface BackupVaultConvergeSeam { /** The same ownership probe the pass before the import ran. */ probe: () => Promise>; /** Synth + step warnings + engine-compat gate for one context. */ synth: (context: DeploymentContext) => Promise>; deploy: (context: DeploymentContext) => Promise>; } /** * After a successful import deploy, converge in the same account operation: * re-probe (the vault must now be `owned` — anything else is "re-own did not * take"), re-synth against the owned verdict (the re-owned template: intent * restored, live key, no lock declared), deploy again. Returns the converge * context so the caller finishes the account against it (outputs, OIDC * reconcile, hash persistence). * * Failures are forwarded as the seams produce them: the probe pre-masks at * construction, the synth seam's messages are masked at source, and this * helper's own refusals carry identifiers only. */ export declare function convergeAfterBackupVaultReown(baseContext: DeploymentContext, accountLabel: string, region: string, seam: BackupVaultConvergeSeam): Promise>;