import type { RuntimeManifestIdentity, RuntimePromotionOwnedSlotName } from './runtime-promotion-journal-schema.js'; import type { DurableClosedPromotionJournal, DurableOpenPromotionJournal, RuntimePromotionJournalController } from './runtime-promotion-journal.js'; import type { RuntimeMutationOutcome } from './runtime-promotion-transitions-common.js'; export type { RuntimeMutationOutcome } from './runtime-promotion-transitions-common.js'; export interface RuntimePromotionTransitionDependencies { readonly now?: () => number; } type OpenTransition = (receipt: DurableOpenPromotionJournal) => Promise; type RuntimePostcondition = (receipt: DurableOpenPromotionJournal, outcome: RuntimeMutationOutcome) => Promise; type ManifestVerification = (receipt: DurableOpenPromotionJournal, manifest: RuntimeManifestIdentity | null) => Promise; /** * The only Task 3.5 journal-writing surface. * * Each method consumes an exact controller-issued receipt and either emits the * one legal next receipt or fails before journal mutation. Callers never * assemble a raw journal record, intent, postcondition, counter, or terminal. */ export interface RuntimePromotionTransitionWriter { readonly verifySource: (receipt: DurableOpenPromotionJournal, manifest: RuntimeManifestIdentity) => Promise; readonly verifyDestination: ManifestVerification; readonly bindAuthoredPrepared: OpenTransition; readonly recordDestinationParentCreateIntent: OpenTransition; readonly recordDestinationReady: RuntimePostcondition; readonly advancePreexistingDestinationReady: OpenTransition; readonly recordRuntimeStageCreateIntent: OpenTransition; readonly recordRuntimeStaged: (receipt: DurableOpenPromotionJournal, outcome: RuntimeMutationOutcome, manifest: RuntimeManifestIdentity) => Promise; readonly recordDestinationBackupCreateIntent: OpenTransition; readonly recordDestinationBackedUp: RuntimePostcondition; readonly recordDestinationInstallIntent: OpenTransition; readonly recordRuntimeInstalled: RuntimePostcondition; readonly bindAuthoredCommitted: OpenTransition; readonly recordSourceRetireIntent: OpenTransition; readonly recordSourceRetired: RuntimePostcondition; readonly recordAuthorityVerified: ManifestVerification; readonly sealCommitted: OpenTransition; readonly beginRollback: OpenTransition; readonly recordRuntimeRollbackIntent: OpenTransition; readonly recordRuntimeRolledBack: RuntimePostcondition; readonly recordUnmaterializedAuthoredRolledBack: OpenTransition; readonly bindAuthoredRolledBack: OpenTransition; readonly sealRolledBack: ManifestVerification; readonly close: (receipt: DurableOpenPromotionJournal) => Promise; readonly recordCleanupIntent: (receipt: DurableClosedPromotionJournal, slot: RuntimePromotionOwnedSlotName) => Promise; readonly recordCleanupPostcondition: (receipt: DurableClosedPromotionJournal, slot: RuntimePromotionOwnedSlotName, outcome: RuntimeMutationOutcome) => Promise; readonly unlinkClean: (receipt: DurableClosedPromotionJournal) => Promise; } export declare function createRuntimePromotionTransitionWriter(controller: RuntimePromotionJournalController, dependencies?: RuntimePromotionTransitionDependencies): RuntimePromotionTransitionWriter; //# sourceMappingURL=runtime-promotion-transitions.d.ts.map