/// import { WorkflowDefinition } from '@smithers-orchestrator/driver/WorkflowDefinition'; type CoverableWorkflow = WorkflowDefinition | { readonly default: WorkflowDefinition; }; type WorkflowCoverageApproval = { readonly approved: boolean; readonly note?: string; readonly decidedBy?: string; readonly optionKey?: string; readonly output?: unknown; }; type WorkflowCoverageApprovalValue = boolean | "approve" | "deny" | WorkflowCoverageApproval; type WorkflowCoverageApprovalResolver = (context: WorkflowCoverageTaskContext) => WorkflowCoverageApprovalValue | Promise; type WorkflowCoverageEventResolver = (context: WorkflowCoverageEventContext) => unknown | Promise; type WorkflowCoverageTaskContext = { readonly nodeId: string; readonly label?: string; readonly iteration: number; readonly input: unknown; readonly passIndex: number; }; type WorkflowCoverageEventContext = WorkflowCoverageTaskContext & { readonly eventName: string; readonly correlationId?: string; }; type WorkflowCoverageOptions = { readonly input?: unknown; readonly inputs?: readonly unknown[]; readonly mocks?: Readonly>; readonly approvals?: WorkflowCoverageApprovalValue | WorkflowCoverageApprovalResolver | Readonly>; readonly signals?: Readonly>; readonly events?: Readonly>; readonly maxLoopIterations?: number; readonly expectedNodes?: readonly string[]; readonly allowUnreached?: readonly string[]; readonly executeCompute?: boolean; readonly executeSideEffects?: boolean; readonly rootDir?: string; readonly workflowPath?: string | null; readonly assert?: boolean; }; type WorkflowCoverageValidation = { readonly passIndex: number; readonly nodeId: string; readonly iteration: number; readonly valid: boolean; readonly message?: string; }; type WorkflowCoverageDecision = { readonly passIndex: number; readonly nodeId: string; readonly iteration: number; readonly approved: boolean; readonly note?: string; readonly decidedBy?: string; }; type WorkflowCoverageFailure = { readonly passIndex: number; readonly nodeId?: string; readonly code?: string; readonly message: string; readonly cause: unknown; }; type WorkflowCoveragePass = { readonly passIndex: number; readonly input: unknown; readonly status: string; readonly executed: string[]; readonly outputs: Record; readonly taskOutputs: Record; readonly finalOutput: unknown; readonly definedNodes: string[]; readonly unexecuted: string[]; readonly validations: WorkflowCoverageValidation[]; readonly approvals: WorkflowCoverageDecision[]; readonly errors: WorkflowCoverageFailure[]; readonly unusedMocks: string[]; readonly warnings: string[]; }; type WorkflowCoverageResult = { readonly status: "finished" | "failed"; readonly passes: WorkflowCoveragePass[]; readonly executed: string[]; readonly outputs: Record; readonly taskOutputs: Record; readonly finalOutputs: unknown[]; readonly definedNodes: string[]; readonly coveredNodes: string[]; readonly unexecuted: string[]; readonly unreached: string[]; readonly validations: WorkflowCoverageValidation[]; readonly approvals: WorkflowCoverageDecision[]; readonly errors: WorkflowCoverageFailure[]; readonly allowUnreached: string[]; }; declare class WorkflowCoverageError extends Error { readonly result: WorkflowCoverageResult; constructor(message: string, result: WorkflowCoverageResult); } declare function coverWorkflow(workflowModule: CoverableWorkflow, options?: WorkflowCoverageOptions): Promise; declare function expectFullCoverage(result: WorkflowCoverageResult): WorkflowCoverageResult; export { type CoverableWorkflow, type WorkflowCoverageApproval, type WorkflowCoverageApprovalResolver, type WorkflowCoverageApprovalValue, type WorkflowCoverageDecision, WorkflowCoverageError, type WorkflowCoverageEventContext, type WorkflowCoverageEventResolver, type WorkflowCoverageFailure, type WorkflowCoverageOptions, type WorkflowCoveragePass, type WorkflowCoverageResult, type WorkflowCoverageTaskContext, type WorkflowCoverageValidation, coverWorkflow, expectFullCoverage };