import { WorkflowDefinitionData } from '../../types/config';
import { IWorkflowContext } from '../../types/runtime';

export interface IPersistence {
  // Workflow Definition Persistence (Optional but useful)
  saveDefinition(definition: WorkflowDefinitionData): Promise<void>;
  loadDefinition(definitionId: string, version?: number): Promise<WorkflowDefinitionData | null>;
  listDefinitions?(): Promise<WorkflowDefinitionData[]>; // Optional

  // Workflow Instance State Persistence
  saveState(context: IWorkflowContext): Promise<void>;
  loadState(workflowId: string): Promise<IWorkflowContext | null>;
  deleteState?(workflowId: string): Promise<void>; // Optional
  // findStatesByStatus?(status: NodeStatus): Promise<IWorkflowContext[]>; // Optional querying
}