import { TelescopeService } from '../../core/services/telescope.service';
import { TelescopeConfig } from '../../core/interfaces/telescope-config.interface';
import { RequestContext, ResponseContext } from './request-watcher.interceptor';
import { DataMaskingService } from '../../core/services/data-masking.service';
import { EnhancedCircuitBreakerService } from '../../core/services/enhanced-circuit-breaker.service';
import { EnhancedMemoryManagerService } from '../../core/services/enhanced-memory-manager.service';
import { AdaptiveSamplingService } from '../../core/services/adaptive-sampling.service';
export interface RequestWatcherConfig {
    enabled: boolean;
    excludePaths: string[];
    sampling: {
        enabled: boolean;
        rate: number;
        rules: SamplingRule[];
    };
    security: {
        maskSensitiveData: boolean;
        logResponseBodies: boolean;
        logSuccessfulResponseBodies: boolean;
        sensitiveKeys: string[];
    };
    performance: {
        slowRequestThreshold: number;
        collectMetrics: boolean;
    };
    filters: {
        methods: string[];
        statusCodes: number[];
        contentTypes: string[];
    };
}
export interface SamplingRule {
    path: string;
    method?: string;
    statusCode?: number;
    rate: number;
    priority: number;
}
export interface RequestMetrics {
    totalRequests: number;
    slowRequests: number;
    errorRequests: number;
    averageResponseTime: number;
    requestsPerSecond: number;
    statusCodeDistribution: Record<number, number>;
    methodDistribution: Record<string, number>;
}
export declare class RequestWatcherService {
    private readonly telescopeService;
    private readonly telescopeConfig;
    private readonly dataMaskingService;
    private readonly circuitBreakerService;
    private readonly memoryManagerService;
    private readonly adaptiveSamplingService;
    private readonly logger;
    private readonly config;
    private readonly requestMetrics;
    constructor(telescopeService: TelescopeService, telescopeConfig: TelescopeConfig, dataMaskingService: DataMaskingService, circuitBreakerService: EnhancedCircuitBreakerService, memoryManagerService: EnhancedMemoryManagerService, adaptiveSamplingService: AdaptiveSamplingService);
    private buildConfig;
    private initializeMetrics;
    trackRequest(requestContext: RequestContext, responseContext: ResponseContext, error: Error | null): Promise<void>;
    private createTelescopeEntry;
    private generateFamilyHash;
    private generateTags;
    private updateMetrics;
    getMetrics(): RequestMetrics & {
        samplingStats: any;
        memoryStats: any;
        circuitBreakerStats: any;
    };
    clearMetrics(): Promise<void>;
    getExcludedPaths(): string[];
    shouldSampleRequest(request: any): boolean;
    shouldMaskBody(body: any): boolean;
    shouldLogSuccessfulResponseBodies(): boolean;
}
