/** * Flow and interaction validation logic. */ import type { IndexDatabase } from '../../../db/database.js'; import type { Flow, Interaction, InteractionWithPaths } from '../../../db/schema.js'; export interface ValidationOptions { maxSteps: number; } export declare const DEFAULT_VALIDATION_OPTIONS: ValidationOptions; export type FlowValidationErrorType = 'invalid_entry_point_module' | 'invalid_entry_point' | 'invalid_interaction_id' | 'max_steps_exceeded' | 'duplicate_slug'; export interface FlowValidationError { type: FlowValidationErrorType; message: string; flowId?: number; flowName?: string; } export type FlowValidationWarningType = 'no_steps' | 'missing_description'; export interface FlowValidationWarning { type: FlowValidationWarningType; message: string; severity: 'low' | 'medium' | 'high'; } export interface FlowValidationResult { valid: boolean; errors: FlowValidationError[]; warnings: FlowValidationWarning[]; } export declare class FlowValidator { private db; private options; constructor(db: IndexDatabase, options?: ValidationOptions); /** * Validate a single flow. */ validateFlow(flow: Flow): FlowValidationResult; /** * Validate all flows in the database. */ validateAllFlows(): Map; /** * Find duplicate slugs. */ findDuplicateSlugs(): Array<{ slug: string; flows: Flow[]; }>; } export interface InteractionValidationError { type: 'invalid_module_id'; message: string; interactionId: number; } export declare function validateInteraction(db: IndexDatabase, interaction: Interaction): InteractionValidationError[]; export interface CoverageGap { fromModuleId: number; toModuleId: number; fromModulePath: string; toModulePath: string; weight: number; } /** * Find interactions not covered by any flow. */ export declare function findUncoveredInteractions(db: IndexDatabase): InteractionWithPaths[]; /** * Find module edges that don't have interactions. */ export declare function findMissingInteractions(db: IndexDatabase): CoverageGap[]; //# sourceMappingURL=flow-validation.d.ts.map