import { DiscoveredRoute, RouteValidationResult, RouteFixSuggestion } from './types'; /** * Validation rule configuration */ export interface ValidationRule { /** Rule ID */ readonly id: string; /** Rule name */ readonly name: string; /** Rule description */ readonly description: string; /** Severity level */ readonly severity: 'error' | 'warning'; /** Whether the rule is enabled by default */ readonly enabledByDefault: boolean; /** Validation function */ readonly validate: (route: DiscoveredRoute, allRoutes: readonly DiscoveredRoute[]) => ValidationRuleResult | null; } /** * Result of a validation rule check */ export interface ValidationRuleResult { readonly passed: boolean; readonly message?: string; readonly suggestion?: RouteFixSuggestion; } /** * Validation options */ export interface ValidationOptions { /** Maximum allowed nesting depth */ maxNestingDepth?: number; /** Require loader functions for data routes */ requireLoaders?: boolean; /** Require error boundaries */ requireErrorBoundaries?: boolean; /** Check for consistent naming */ checkNamingConventions?: boolean; /** List of disabled rules */ disabledRules?: readonly string[]; } /** * All built-in validation rules */ export declare const BUILT_IN_RULES: readonly ValidationRule[]; /** * Validate a single route against all rules */ export declare function validateRoute(route: DiscoveredRoute, allRoutes: readonly DiscoveredRoute[], rules?: readonly ValidationRule[], options?: ValidationOptions): RouteValidationResult; /** * Validate all routes */ export declare function validateAllRoutes(routes: readonly DiscoveredRoute[], options?: ValidationOptions): RouteValidationResult; /** * Generate a validation report */ export declare function generateValidationReport(result: RouteValidationResult): string; /** * Auto-fix result */ export interface AutoFixResult { readonly applied: readonly RouteFixSuggestion[]; readonly skipped: readonly RouteFixSuggestion[]; readonly errors: readonly { suggestion: RouteFixSuggestion; error: Error; }[]; } /** * Apply auto-fixable suggestions * Note: This returns the fix operations to be performed, actual file operations * should be done by the caller (Vite plugin or CLI) */ export declare function getAutoFixOperations(suggestions: readonly RouteFixSuggestion[]): { fileRenames: Array<{ oldPath: string; newPath: string; }>; contentChanges: Array<{ filePath: string; search: string; replace: string; }>; };