import { Request, Response, NextFunction } from 'express';
import { Logger } from '../../utils/logger';
export interface LoggingConfig {
    skipPaths?: string[];
    logRequestBody?: boolean;
    logResponseBody?: boolean;
    logHeaders?: boolean;
    maxBodyLength?: number;
    sensitiveHeaders?: string[];
    sensitiveBodyFields?: string[];
}
export interface RequestLogData {
    requestId: string;
    method: string;
    url: string;
    userAgent?: string;
    ip: string;
    headers?: Record<string, string>;
    body?: any;
    timestamp: string;
    contentLength?: number;
}
export interface ResponseLogData {
    requestId: string;
    statusCode: number;
    contentLength?: number;
    responseTime: number;
    headers?: Record<string, string>;
    body?: any;
    timestamp: string;
}
export declare class LoggingMiddleware {
    private readonly logger;
    private readonly config;
    constructor(logger: Logger, config?: LoggingConfig);
    createMiddleware(): (req: Request, res: Response, next: NextFunction) => void;
    private shouldSkipLogging;
    private generateRequestId;
    private logRequest;
    private logResponse;
    private getClientIP;
    private sanitizeHeaders;
    private sanitizeBody;
    private getLogLevel;
}
export declare function createLoggingMiddleware(logger: Logger, config?: LoggingConfig): (req: Request, res: Response, next: NextFunction) => void;
//# sourceMappingURL=LoggingMiddleware.d.ts.map