export interface SamplingConfig {
    enabled: boolean;
    rules: {
        alwaysLog: {
            levels: string[];
            paths: string[];
            conditions: string[];
        };
        neverLog: {
            paths: string[];
        };
        dynamic: {
            qpsThreshold: number;
            minSampleRate: number;
            maxSampleRate: number;
        };
    };
}
export interface SamplingDecision {
    shouldLog: boolean;
    reason: 'always' | 'never' | 'sampled' | 'not_sampled';
    sampleRate?: number;
}
export declare class SamplingService {
    private config;
    private qpsWindow;
    private currentQps;
    constructor();
    shouldLog(context: {
        level: string;
        path: string;
        duration?: number;
        statusCode?: number;
    }): SamplingDecision;
    private matchesNeverLog;
    private matchesAlwaysLog;
    private calculateSampleRate;
    private updateQps;
    recordRequest(): void;
    private matchPath;
    private evaluateCondition;
    getConfig(): SamplingConfig;
    updateConfig(config: Partial<SamplingConfig>): void;
    getCurrentQps(): number;
    getCurrentSampleRate(): number;
    getStats(): {
        enabled: boolean;
        currentQps: number;
        currentSampleRate: number;
        qpsThreshold: number;
    };
}
