import { Page } from 'playwright';
export declare enum FaultType {
    NETWORK_LATENCY = "network_latency",
    NETWORK_TIMEOUT = "network_timeout",
    NETWORK_DISCONNECTION = "network_disconnection",
    PACKET_LOSS = "packet_loss",
    MEMORY_PRESSURE = "memory_pressure",
    CPU_SPIKE = "cpu_spike",
    DISK_SPACE = "disk_space",
    DATABASE_ERROR = "database_error",
    API_DOWNTIME = "api_downtime",
    SERVICE_DEGRADATION = "service_degradation"
}
export interface BaseFault {
    type: FaultType;
    config: Record<string, any>;
}
export interface NetworkFault extends BaseFault {
    type: FaultType.NETWORK_LATENCY | FaultType.NETWORK_TIMEOUT | FaultType.NETWORK_DISCONNECTION | FaultType.PACKET_LOSS;
    config: {
        urlPattern: string;
        latencyMs?: number;
        timeoutMs?: number;
        lossPercentage?: number;
    };
}
export interface ResourceFault extends BaseFault {
    type: FaultType.MEMORY_PRESSURE | FaultType.CPU_SPIKE | FaultType.DISK_SPACE;
    config: {
        limitMB?: number;
        durationMs?: number;
        intensity?: number;
        availableKB?: number;
    };
}
export interface ServiceFault extends BaseFault {
    type: FaultType.DATABASE_ERROR | FaultType.API_DOWNTIME | FaultType.SERVICE_DEGRADATION;
    config: {
        urlPattern: string;
        errorRate?: number;
        statusCode?: number;
        degradationFactor?: number;
    };
}
export type Fault = NetworkFault | ResourceFault | ServiceFault;
interface ActiveFault {
    id: string;
    fault: Fault;
    timestamp: number;
    handler?: any;
}
interface TestScenario {
    name: string;
    faults: Fault[];
    expectedBehavior: string;
}
export declare class FaultInjectionEngine {
    private activeFaults;
    private sessionData;
    constructor();
    injectFault(page: Page, fault: Fault): Promise<string>;
    private injectNetworkLatency;
    private injectNetworkTimeout;
    private injectNetworkDisconnection;
    private injectPacketLoss;
    private injectMemoryPressure;
    private injectCPUSpike;
    private injectDiskSpace;
    private injectDatabaseError;
    private injectAPIDowntime;
    private injectServiceDegradation;
    removeFault(page: Page, faultId: string): Promise<void>;
    clearAllFaults(page: Page): Promise<void>;
    getActiveFaults(): ActiveFault[];
    getSessionData(): typeof this.sessionData;
    generateTestScenarios(): Promise<TestScenario[]>;
}
export {};
//# sourceMappingURL=fault-injection-engine.d.ts.map