import type { ExecutorResult, Loop, StoredWorkflowEvent, WorkflowSpec, WorkflowStep } from "../types.js"; export declare const PRIVATE_OPERATION_EVENT_TYPES: readonly ["private_operation_descriptor", "private_operation_admitted", "private_operation_terminal"]; export type PrivateOperationEventType = (typeof PRIVATE_OPERATION_EVENT_TYPES)[number]; export type OperationTerminalState = "succeeded" | "failed" | "timed_out" | "cancelled" | "skipped"; export interface OperationAuthorityBinding { authorityId: string; tenantId: string; } export interface PrivateOperationDescriptor { schema: "openloops.private_operation_descriptor.v1"; operationId: string; operationTemplateId: string; workflowRunId: string; workflowId: string; workflowDefinitionHash: string; entityRevision: string; stepId: string; attempt: number; idempotencyKey: string; authority: OperationAuthorityBinding; descriptorRef: string; descriptorDigest: string; } export interface OperationAdmissionReceipt { schema: "openloops.operation_receipt.v1"; receiptId: string; receiptKind: "admission"; operationId: string; operationTemplateId: string; workflowRunId: string; stepId: string; authority: OperationAuthorityBinding; state: "admitted"; } export interface OperationTerminalReceipt { schema: "openloops.operation_receipt.v1"; receiptId: string; receiptKind: "terminal"; operationId: string; operationTemplateId: string; workflowRunId: string; stepId: string; authority: OperationAuthorityBinding; state: OperationTerminalState; resultRef: string; outputRef?: string; exitCode?: number; durationMs?: number; } export interface OperationReceiptLookupCaps { maxCalls: number; maxRecords: number; maxBytes: number; maxWallMs: number; } export interface OperationReceiptState { descriptor: PrivateOperationDescriptor; admission?: OperationAdmissionReceipt; terminal?: OperationTerminalReceipt; } export declare const DEFAULT_OPERATION_LOOKUP_CAPS: Readonly; export type LoopMutationAction = "pause" | "resume" | "stop"; export type LoopMutationTerminalState = "succeeded" | "dry_run"; export interface LoopMutationEnvelope { schema: "openloops.loop_mutation.v1"; operationId: string; stepId: string; targetId: string; action: LoopMutationAction; expectedRevision: string; approvedPlanDigest: string; manifestDigest: string; descriptorRef: string; descriptorDigest: string; dryRun?: boolean; } export interface LoopMutationBinding extends LoopMutationEnvelope { authority: OperationAuthorityBinding; bindingDigest: string; leaseId: string; } export interface PublicLoopMutationBinding extends Omit { descriptorCommitment: string; } export interface LoopMutationAdmissionReceipt { schema: "openloops.loop_mutation_receipt.v1"; receiptId: string; receiptKind: "admission"; operationId: string; stepId: string; targetId: string; action: LoopMutationAction; expectedRevision: string; authority: OperationAuthorityBinding; bindingDigest: string; descriptorCommitment: string; descriptorDigest: string; state: "admitted"; createdAt: string; } export interface LoopMutationTerminalReceipt { schema: "openloops.loop_mutation_receipt.v1"; receiptId: string; receiptKind: "terminal"; operationId: string; stepId: string; targetId: string; action: LoopMutationAction; expectedRevision: string; authority: OperationAuthorityBinding; bindingDigest: string; state: LoopMutationTerminalState; resultRevision: string; resultStatus: Loop["status"]; createdAt: string; } export interface LoopMutationResult { binding: LoopMutationBinding; admission: LoopMutationAdmissionReceipt; terminal: LoopMutationTerminalReceipt; loop: Loop; replayed: boolean; } export interface PublicLoopMutationResult extends Omit { binding: PublicLoopMutationBinding; } export interface LoopMutationLookupCaps { maxCalls: number; maxRecords: number; maxBytes: number; maxWallMs: number; } export declare const DEFAULT_LOOP_MUTATION_LOOKUP_CAPS: Readonly; export declare function privateOperationDescriptorDigest(target: WorkflowStep["target"]): string; export declare function loopMutationDescriptorCommitment(descriptorRef: string): string; export declare function isPrivateOperationEventType(value: string): value is PrivateOperationEventType; export declare function operationTemplateId(workflow: Pick, step: Pick): string; export declare function loopOperationTemplateId(loop: { id: string; updatedAt: string; }): string; export declare function createPrivateOperationDescriptor(input: { workflow: WorkflowSpec; workflowRunId: string; step: WorkflowStep; attempt?: number; idempotencyKey: string; authority: OperationAuthorityBinding; }): PrivateOperationDescriptor; export declare function operationAdmissionReceipt(descriptor: PrivateOperationDescriptor): OperationAdmissionReceipt; export declare function operationTerminalReceipt(descriptor: PrivateOperationDescriptor, result: Pick): OperationTerminalReceipt; export declare function parsePrivateOperationDescriptor(value: unknown): PrivateOperationDescriptor; export declare function parseOperationAdmissionReceipt(value: unknown): OperationAdmissionReceipt; export declare function parseOperationTerminalReceipt(value: unknown): OperationTerminalReceipt; export declare function lookupOperationReceiptState(events: readonly StoredWorkflowEvent[], query: { workflowRunId: string; stepId: string; authority: OperationAuthorityBinding; operationId?: string; }, caps?: OperationReceiptLookupCaps): OperationReceiptState; export declare function normalizeLoopMutationEnvelope(value: unknown, authority: OperationAuthorityBinding): LoopMutationBinding; export declare function loopMutationAdmissionReceipt(binding: LoopMutationBinding, createdAt: string): LoopMutationAdmissionReceipt; export declare function publicLoopMutationResult(result: LoopMutationResult): PublicLoopMutationResult; export declare function loopMutationTerminalReceipt(binding: LoopMutationBinding, loop: Loop, createdAt: string): LoopMutationTerminalReceipt; export declare function privateOperationEventsForWorkflowRun(input: { workflow: WorkflowSpec; workflowRunId: string; attempt?: number; idempotencyKey: string; authority: OperationAuthorityBinding; }): Array<{ eventType: "private_operation_descriptor"; stepId: string; payload: Record; }>;