import type { RollbackFailure, StackLevelEvent } from "../../aws/utils/stackOperationOutcome.js"; export interface HoldFacts { readonly stackName: string; /** The reconcile's failure, masked where `holdRollback` builds the facts. */ readonly reason: string; /** Each rolled image-tag parameter and the tag the rollout rolled it to. */ readonly overrides: Readonly>; /** How long the update was followed, and how long the stack is waited on to come to rest. */ readonly budgetMs: number; /** Whether the follow saw the update start. */ readonly startSeen: boolean; } /** `a`, `a and b`, `a, b and c`. */ export declare function listed(items: readonly string[]): string; /** Today's warning for rolled keys whose parameter the stack does not declare. */ export declare function skippedKeysWarning(stackName: string, skippedKeys: readonly string[]): string; export declare function reconciledAtRestInfo(facts: HoldFacts): string; /** Why a stack that refuses updates is UPDATE_ROLLBACK_FAILED, as far as the rollout can tell it is not its own doing. */ export interface ForeignWedge { readonly origin: "unseen-start" | "later-operation"; /** CloudFormation's StackStatusReason, raw. */ readonly statusReason?: string; } /** W1: held, and nothing CloudFormation did moved what the rollout rolled. */ export declare function unmovedWarning(facts: HoldFacts, wedge?: ForeignWedge): string; /** W2: held, after restoring what CloudFormation's rollback moved. */ export declare function restoredWarning(facts: HoldFacts, status: string, moved: readonly string[], restored: readonly string[]): string; /** The cancel while the update was followed, or before the stack was seen at rest. */ export declare function followCancelWarning(facts: HoldFacts): string; export interface RestoreProgress { /** Each restore that landed: `service app to `. */ readonly restored: readonly string[]; /** The moved entities the rollout had not restored when it was cancelled. */ readonly notRestored: readonly string[]; /** One sentence for each entity the rollout could not hold before the cancel, pre-masked. */ readonly findings: readonly string[]; /** Each service whose ECS deployment a restore started and did not see end. */ readonly unended: readonly string[]; /** The service whose update the cancel cut short, which ECS may have accepted. */ readonly mayHaveStarted?: string; } /** The cancel once the stack was at rest. */ export declare function restCancelWarning(facts: HoldFacts, status: string, progress: RestoreProgress): string; /** E3: the stack was still mid-operation when the wait for rest ran out. */ export declare function stillInProgressMessage(facts: HoldFacts, status: string): string; /** E4: whether the stack came to rest could not be read. `why` is pre-masked. */ export declare function restUnreadableMessage(facts: HoldFacts, why: string): string; /** E6: the stack could not be found. */ export declare function stackAbsentMessage(facts: HoldFacts): string; /** What CloudFormation did to the update, as the not-held message opens. */ export declare function cloudFormationAccount(facts: HoldFacts, status: string, rolledBack: boolean): string; /** E1/E8: a restore that did not land. `reason` is ECS's or Lambda's verdict, pre-masked. */ export declare function restoreFailedFinding(label: string, lane: string, reason: string): string; /** E5: an entity whose state could not be read. `reason` is pre-masked. */ export declare function unreadFinding(label: string, reason: string): string; /** E-foreign: moved, but not by CloudFormation's rollback of this rollout's update, or not provably. */ export declare function foreignFinding(label: string, from: string, lane: string, clause: string): string; /** An entity that moved again between the read and the write. */ export declare function changedFinding(label: string, now: string): string; /** E7: the lease was denied before a write. */ export declare function leaseDeniedStop(next: string, notRestored: readonly string[]): string; /** Another operation began on the stack before a write, or whether one had could not be read. `why` is pre-masked. */ export declare function stackMovedOnStop(facts: HoldFacts, next: string, notRestored: readonly string[], seen: { readonly status: string; } | { readonly why: string; }): string; /** E2: CloudFormation's rollback of the update failed, or the stack is wedged and whose rollback failed could not be told. */ export type FailedRollback = { readonly kind: "ours"; readonly end: StackLevelEvent; readonly failures: readonly RollbackFailure[]; } | { readonly kind: "unclear"; /** CloudFormation's StackStatusReason, raw. */ readonly statusReason?: string; /** Pre-masked. */ readonly why: string; }; export interface NotHeldReport { /** CloudFormation's part, from `cloudFormationAccount`. */ readonly account: string; /** One sentence for each entity the rollout could not hold. */ readonly findings: readonly string[]; /** Why the restores stopped short, when they did. */ readonly stopped?: string; /** Each restore that landed: `service app to `. */ readonly restored: readonly string[]; readonly failedRollback?: FailedRollback; } /** E1, E2, E5, E7, E8 and E-foreign, together. */ export declare function notHeldMessage(facts: HoldFacts, report: NotHeldReport): string;