import { MeterProvider } from "@opentelemetry/sdk-metrics";
import { ReadableSpan } from "@opentelemetry/sdk-trace-base";
import { ApplicationInsightsConfig } from "../shared/configuration/config";
/**
 * Azure Monitor PerformanceCounter Metrics
 */
export declare class PerformanceCounterMetrics {
    private _internalConfig;
    private _collectionInterval;
    private _meterProvider;
    private _azureExporter;
    private _metricReader;
    private _meter;
    private _requestDurationHistogram;
    private _requestRateGauge;
    private _requestRateGaugeCallback;
    private _memoryPrivateBytesGauge;
    private _memoryPrivateBytesGaugeCallback;
    private _memoryAvailableBytesGauge;
    private _memoryAvailableBytesGaugeCallback;
    private _processorTimeGauge;
    private _processorTimeGaugeCallback;
    private _processTimeGauge;
    private _processTimeGaugeCallback;
    private _totalCount;
    private _intervalExecutionTime;
    private _lastRequestRate;
    private _lastAppCpuUsage;
    private _lastHrtime;
    private _lastCpus;
    private _lastCpusProcess;
    /**
     * Creates performance counter instruments.
     * @param options - Distro configuration.
     * @param config - Application Insights configuration.
     */
    constructor(config: ApplicationInsightsConfig, options?: {
        collectionInterval: number;
    });
    /**
    * Shutdown Meter Provider it will return no-op Meters after being called.
    */
    shutdown(): Promise<void>;
    /**
     * Force flush Meter Provider.
     */
    flush(): Promise<void>;
    /**
     *Get OpenTelemetry MeterProvider
     */
    getMeterProvider(): MeterProvider;
    /**
     * Record Span metrics
     */
    recordSpan(span: ReadableSpan): void;
    private _getRequestRate;
    private _getPrivateMemory;
    private _getAvailableMemory;
    private _getTotalCombinedCpu;
    private _getProcessorTime;
    private _getProcessTime;
}
