import * as plugins from '../plugins.js';
import { type INetworkProxyOptions } from './classes.np.types.js';
import { ConnectionPool } from './classes.np.connectionpool.js';
import { ProxyRouter } from '../classes.router.js';
/**
 * Interface for tracking metrics
 */
export interface IMetricsTracker {
    incrementRequestsServed(): void;
    incrementFailedRequests(): void;
}
/**
 * Handles HTTP request processing and proxying
 */
export declare class RequestHandler {
    private options;
    private connectionPool;
    private router;
    private defaultHeaders;
    private logger;
    private metricsTracker;
    constructor(options: INetworkProxyOptions, connectionPool: ConnectionPool, router: ProxyRouter);
    /**
     * Set the metrics tracker instance
     */
    setMetricsTracker(tracker: IMetricsTracker): void;
    /**
     * Set default headers to be included in all responses
     */
    setDefaultHeaders(headers: {
        [key: string]: string;
    }): void;
    /**
     * Get all default headers
     */
    getDefaultHeaders(): {
        [key: string]: string;
    };
    /**
     * Apply CORS headers to response if configured
     */
    private applyCorsHeaders;
    /**
     * Apply default headers to response
     */
    private applyDefaultHeaders;
    /**
     * Handle an HTTP request
     */
    handleRequest(req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse): Promise<void>;
}
