import { EventEmitter } from 'events';
import type { GatewayRequest, GatewayResponse } from '../types/gateway-types';
export interface ChaosOptions {
    enabled: boolean;
    failures: {
        networkLatency: {
            probability: number;
            minMs: number;
            maxMs: number;
        };
        serviceFailure: {
            probability: number;
            statusCodes: number[];
        };
        timeouts: {
            probability: number;
            duration: number;
        };
        resourceExhaustion: {
            probability: number;
            type: 'cpu' | 'memory' | 'connections';
        };
        malformedResponse: {
            probability: number;
            types: ('truncated' | 'invalid-json' | 'empty' | 'huge')[];
        };
    };
    seed?: number;
}
export declare class ChaosError extends Error {
    readonly type: string;
    readonly injectedAt: number;
    constructor(message: string, type: string, injectedAt?: number);
}
export declare class ChaosMiddleware extends EventEmitter {
    private readonly options;
    private random;
    private injectionCount;
    constructor(options: ChaosOptions);
    injectChaosAsync(request: GatewayRequest): Promise<void>;
    transformResponse(response: GatewayResponse): GatewayResponse;
    private shouldInject;
    private injectNetworkLatencyAsync;
    private selectRandomStatusCode;
    private selectRandomType;
    private simulateResourceExhaustionAsync;
    private simulateCPUSpikeAsync;
    private simulateMemoryPressureAsync;
    private createMalformedResponse;
    private sleepAsync;
    getStatistics(): {
        enabled: boolean;
        injections: Record<string, number>;
        uptime: number;
    };
    reset(): void;
    enable(): void;
    disable(): void;
}
//# sourceMappingURL=chaos-middleware.d.ts.map