import type { ReadonlySignal } from '@nonoun/native-core'; import type { CommandBus } from './command-bus.ts'; export interface WorkflowState { readonly id: string; readonly onEntry?: string; readonly onExit?: string; readonly initial?: string; readonly children?: readonly WorkflowState[]; } export interface WorkflowTransition { readonly from: string; readonly event: string; readonly to: string; readonly guard?: (context: WorkflowContext) => boolean; readonly action?: string; } export interface WorkflowDefinition { readonly id: string; readonly initial: string; readonly states: readonly WorkflowState[]; readonly transitions: readonly WorkflowTransition[]; readonly context?: Record; } export interface WorkflowContext { readonly [key: string]: unknown; } export interface TransitionRecord { readonly id: string; readonly timestamp: number; readonly event: string; readonly from: string; readonly to: string; readonly guardsPassed: readonly string[]; readonly guardsBlocked: readonly string[]; readonly action?: string; } export interface WorkflowSnapshot { readonly definitionId: string; readonly currentState: string; readonly context: WorkflowContext; readonly history: readonly TransitionRecord[]; readonly timestamp: number; } export interface TransitionExplanation { readonly would: boolean; readonly from: string; readonly to: string | null; readonly blockedGuards: readonly string[]; } export declare class WorkflowEngine { #private; readonly currentState: ReadonlySignal; readonly context: ReadonlySignal; readonly history: ReadonlySignal; readonly running: ReadonlySignal; constructor(definition: WorkflowDefinition, bus?: CommandBus); start(): void; send(event: string, data?: unknown): TransitionRecord | null; stop(): void; setContext(key: string, value: unknown): void; getContext(key: string): T | undefined; getAvailableEvents(): readonly string[]; canSend(event: string): boolean; explain(event: string): TransitionExplanation; snapshot(): WorkflowSnapshot; static restore(snapshot: WorkflowSnapshot, definition: WorkflowDefinition, bus?: CommandBus): WorkflowEngine; destroy(): void; } export declare function createWorkflowEngine(definition: WorkflowDefinition, bus?: CommandBus): WorkflowEngine; //# sourceMappingURL=workflow.d.ts.map