import Contracts = require("../Declarations/Contracts");
import TelemetryClient = require("../Library/TelemetryClient");
import HttpRequestParser = require("./HttpRequestParser");
declare class AutoCollectHttpRequests {
    static INSTANCE: AutoCollectHttpRequests;
    private static alreadyAutoCollectedFlag;
    private _client;
    private _isEnabled;
    private _isInitialized;
    private _isAutoCorrelating;
    constructor(client: TelemetryClient);
    enable(isEnabled: boolean): void;
    useAutoCorrelation(isEnabled: boolean, forceClsHooked?: boolean): void;
    isInitialized(): boolean;
    isAutoCorrelating(): boolean;
    private _generateCorrelationContext(requestParser);
    private _initialize();
    /**
     * Tracks a request synchronously (doesn't wait for response 'finish' event)
     */
    static trackRequestSync(client: TelemetryClient, telemetry: Contracts.NodeHttpRequestTelemetry): void;
    /**
     * Tracks a request by listening to the response 'finish' event
     */
    static trackRequest(client: TelemetryClient, telemetry: Contracts.NodeHttpRequestTelemetry, _requestParser?: HttpRequestParser): void;
    /**
     * Add the target correlationId to the response headers, if not already provided.
     */
    private static addResponseCorrelationIdHeader(client, response);
    private static endRequest(client, requestParser, telemetry, ellapsedMilliseconds?, error?);
    dispose(): void;
}
export = AutoCollectHttpRequests;
