import type Database from 'better-sqlite3'; import type { ExpandedFlow, Flow, FlowCoverageStats, FlowDefinitionStep, FlowStakeholder, FlowStep, FlowSubflowStep, FlowWithDefinitionSteps, FlowWithSteps, InteractionWithPaths } from '../schema.js'; export interface FlowInsertOptions { entryPointModuleId?: number; entryPointId?: number; entryPath?: string; stakeholder?: FlowStakeholder; description?: string; actionType?: string; targetEntity?: string; tier?: number; } export interface FlowUpdateOptions { name?: string; entryPointModuleId?: number; entryPointId?: number; entryPath?: string; stakeholder?: FlowStakeholder; description?: string; actionType?: string; targetEntity?: string; } export interface FlowStats { flowCount: number; withEntryPointCount: number; byStakeholder: Record; avgStepsPerFlow: number; } /** * Repository for flow (user journey) operations. */ export declare class FlowRepository { private db; constructor(db: Database.Database); /** * Insert a new flow. */ insert(name: string, slug: string, options?: FlowInsertOptions): number; /** * Get flow by ID. */ getById(id: number): Flow | null; /** * Get flow by slug. */ getBySlug(slug: string): Flow | null; /** * Get all flows. */ getAll(): Flow[]; /** * Get flows by stakeholder. */ getByStakeholder(stakeholder: FlowStakeholder): Flow[]; /** * Get flows by entry point definition ID. */ getByEntryPoint(entryPointId: number): Flow[]; /** * Get flows by entry point module ID. */ getByEntryPointModule(entryPointModuleId: number): Flow[]; /** * Get flow with all its steps and interaction details. */ getWithSteps(flowId: number): FlowWithSteps | null; /** * Update a flow. */ update(flowId: number, updates: FlowUpdateOptions): boolean; /** * Delete a flow (cascade deletes steps). */ delete(flowId: number): boolean; /** * Delete all flows. */ clear(): number; /** * Get count of flows. */ getCount(): number; /** * Add a step to a flow. */ addStep(flowId: number, interactionId: number, stepOrder?: number): void; /** * Add multiple steps to a flow in order. */ addSteps(flowId: number, interactionIds: number[]): void; /** * Remove a step from a flow. */ removeStep(flowId: number, stepOrder: number): boolean; /** * Clear all steps from a flow. */ clearSteps(flowId: number): number; /** * Get steps for a flow. */ getSteps(flowId: number): FlowStep[]; /** * Reorder steps in a flow. */ reorderSteps(flowId: number, interactionIds: number[]): void; /** * Add a definition-level step to a flow. */ addDefinitionStep(flowId: number, fromDefinitionId: number, toDefinitionId: number, stepOrder?: number): void; /** * Add multiple definition-level steps to a flow in order. */ addDefinitionSteps(flowId: number, steps: Array<{ fromDefinitionId: number; toDefinitionId: number; }>): void; /** * Clear all definition-level steps from a flow. */ clearDefinitionSteps(flowId: number): number; /** * Get definition-level steps for a flow. */ getDefinitionSteps(flowId: number): FlowDefinitionStep[]; /** * Get flow with all its definition-level steps and details. */ getWithDefinitionSteps(flowId: number): FlowWithDefinitionSteps | null; /** * Get count of definition-level steps for a flow. */ getDefinitionStepCount(flowId: number): number; /** * Add subflow step references to a composite flow. */ addSubflowSteps(flowId: number, subflowIds: number[]): void; /** * Get subflow steps for a composite flow. */ getSubflowSteps(flowId: number): FlowSubflowStep[]; /** * Clear all subflow steps from a flow. */ clearSubflowSteps(flowId: number): number; /** * Get flows by tier. */ getByTier(tier: number): Flow[]; /** * Expand a flow to its ordered list of interactions. */ expand(flowId: number): ExpandedFlow | null; /** * Get flow statistics. */ getStats(): FlowStats; /** * Get flow coverage statistics. * Shows how many interactions are covered by flows. */ getCoverage(): FlowCoverageStats; /** * Get flows that include a specific interaction. */ getFlowsWithInteraction(interactionId: number): Flow[]; /** * Get flows that involve a specific definition (as from or to in definition steps). */ getFlowsWithDefinition(definitionId: number): Flow[]; /** * Get uncovered interactions (not part of any flow). */ getUncoveredInteractions(): InteractionWithPaths[]; } //# sourceMappingURL=flow-repository.d.ts.map