/**
 * Constraint Debugging and Testing Utilities for Epic 1: Universal MakerKit Core System
 * Comprehensive debugging tools for constraint handling and validation
 * Part of Task 1.5.5: Create constraint debugging and testing utilities
 */
import { ConstraintHandlingResult, ConstraintType } from './constraint-types';
/**
 * Constraint debugging session information
 */
export interface ConstraintDebuggingSession {
    sessionId: string;
    startTime: Date;
    tableName: string;
    constraints: any[];
    testData: any[];
    results: ConstraintTestResult[];
    summary: ConstraintDebuggingSummary;
}
/**
 * Result of constraint testing
 */
export interface ConstraintTestResult {
    constraintName: string;
    constraintType: ConstraintType;
    testDataIndex: number;
    originalData: any;
    result: ConstraintHandlingResult;
    handlerUsed: string;
    executionTime: number;
    issues: ConstraintIssue[];
    recommendations: string[];
}
/**
 * Constraint issue identification
 */
export interface ConstraintIssue {
    severity: 'critical' | 'high' | 'medium' | 'low';
    type: 'handler_not_found' | 'constraint_violation' | 'performance' | 'data_quality' | 'business_logic';
    message: string;
    suggestedFix: string;
    affectedField?: string;
    relatedConstraints?: string[];
}
/**
 * Summary of debugging session
 */
export interface ConstraintDebuggingSummary {
    totalConstraints: number;
    totalTests: number;
    successfulHandling: number;
    failedHandling: number;
    bypassRequired: number;
    averageExecutionTime: number;
    issueDistribution: Record<string, number>;
    handlerUsageStats: Record<string, number>;
    recommendations: string[];
}
/**
 * Constraint performance metrics
 */
export interface ConstraintPerformanceMetrics {
    constraintName: string;
    handlerName: string;
    averageExecutionTime: number;
    minExecutionTime: number;
    maxExecutionTime: number;
    totalExecutions: number;
    successRate: number;
    memoryUsage?: number;
}
/**
 * Comprehensive Constraint Debugging Utilities
 */
export declare class ConstraintDebuggingUtilities {
    private client;
    private multiTableResolver;
    private slugManager;
    private activeSessions;
    private performanceMetrics;
    constructor(client: any);
    /**
     * Start a comprehensive constraint debugging session
     */
    startDebuggingSession(tableName: string, constraints: any[], testData: any[]): Promise<string>;
    /**
     * Run comprehensive constraint tests
     */
    runConstraintTests(sessionId: string): Promise<ConstraintDebuggingSession>;
    /**
     * Test a single constraint with specific data
     */
    private testSingleConstraint;
    /**
     * Analyze constraint handling for issues
     */
    private analyzeConstraintIssues;
    /**
     * Analyze MakerKit-specific business logic issues
     */
    private analyzeMakerKitBusinessLogic;
    /**
     * Generate recommendations for constraint handling
     */
    private generateRecommendations;
    /**
     * Generate MakerKit-specific recommendations
     */
    private generateMakerKitRecommendations;
    /**
     * Update performance metrics
     */
    private updatePerformanceMetrics;
    /**
     * Update session summary
     */
    private updateSessionSummary;
    /**
     * Generate session-level recommendations
     */
    private generateSessionRecommendations;
    /**
     * Generate detailed debugging report
     */
    generateDebuggingReport(sessionId: string, format?: 'json' | 'markdown' | 'html'): string;
    /**
     * Generate markdown debugging report
     */
    private generateMarkdownReport;
    /**
     * Generate HTML debugging report
     */
    private generateHtmlReport;
    /**
     * Helper methods
     */
    private generateSessionId;
    private identifyHandlerUsed;
    private inferConstraintType;
    private isMakerKitConstraint;
    /**
     * Clean up debugging session
     */
    endDebuggingSession(sessionId: string): void;
    /**
     * Get all active sessions
     */
    getActiveSessions(): string[];
}
export default ConstraintDebuggingUtilities;
//# sourceMappingURL=constraint-debugging-utilities.d.ts.map