import type { DB } from '../../data/db/index.js'; export interface StepDefinition { readonly name: string; readonly async?: boolean; readonly handler: (ctx: StepContext) => Promise; } export interface StepContext { readonly db: DB; readonly input: TInput; readonly runId: string; readonly stepIndex: number; readonly tenant: string; readonly metadata: Record; } export interface PipelineConfig { readonly name: string; readonly database: string; readonly steps: readonly StepDefinition[]; } export type PipelineStatus = 'running' | 'waiting' | 'completed' | 'failed'; export type StepStatus = 'pending' | 'running' | 'completed' | 'failed'; export interface PipelineRun { readonly id: string; readonly pipelineName: string; readonly status: PipelineStatus; readonly currentStep: number; readonly input: unknown; readonly startedAt: Date; readonly completedAt: Date | null; readonly error: unknown | null; } export interface StepRunResult { readonly stepName: string; readonly status: StepStatus; readonly output: unknown | null; readonly startedAt: Date | null; readonly completedAt: Date | null; readonly error: unknown | null; } export interface PipelineExecuteContext { readonly tenant: string; readonly metadata?: Record; } export interface Pipeline { execute(db: DB, input: unknown, context: PipelineExecuteContext): Promise; resume(db: DB, runId: string, stepOutput: unknown): Promise; getStatus(db: DB, runId: string): Promise; readonly definition: PipelineConfig; } //# sourceMappingURL=types.d.ts.map