export interface ProtectedControlState { schema: "portfolio-release-control-state/v1"; currentManifestDigest: string | null; currentReleaseId: string | null; publisherFence: number; latestLedgerHeadHash: string; latestLedgerRevision: number; releaseTrustPolicyDigest: string; activeTransaction: null | Record; } export interface ProductionPrepareInput { root: string; archivePath: string; transactionId: string; smokeCommand: string; } export interface ProductionActivateInput { root: string; transactionId: string; expectedCurrentManifestDigest: string | null; expectedFence: number; } export interface ProductionRollbackInput extends ProductionPrepareInput, ProductionActivateInput { targetReleaseId: string; } export interface TestTransactionInput { root: string; archivePath: string; transactionId: string; testOnlyVerification: { trustPolicyPath: string; verifySignedReleaseEnvelope: (input: any) => any; }; testClock?: () => string; smokeCheck?: (input: { releaseDir: string; manifestDigest: string; }) => Promise; smokeCommand?: string; expectedCurrentManifestDigest?: string | null; expectedFence?: number; crashPoint?: "before-swap" | "after-swap"; testPreparationCrashPoint?: | "after-intent" | "after-extract" | "after-immutable" | "after-release-rename" | "after-receipt"; testBeforeCommit?: () => Promise; testBeforePointerSwap?: () => Promise; targetReleaseId?: string; lock?: boolean; } export function readControlState(root: string): Promise; export function prepareRelease( input: ProductionPrepareInput, ): Promise>; export function prepareReleaseForTest( input: TestTransactionInput, ): Promise>; export function activateRelease( input: ProductionActivateInput, ): Promise>; export function activateReleaseForTest( input: TestTransactionInput, ): Promise>; export function rollbackRelease( input: ProductionRollbackInput, ): Promise>; export function rollbackReleaseForTest( input: TestTransactionInput, ): Promise>; export function cleanupOrphanStages(root: string): Promise;