import { MeterProvider } from "@opentelemetry/sdk-metrics";
import type { ReadableSpan } from "@opentelemetry/sdk-trace-base";
import type { AzureMonitorOpenTelemetryOptions } from "../types.js";
import type { LogRecord } from "@opentelemetry/sdk-logs";
/**
 * Azure Monitor PerformanceCounter Metrics
 */
export declare class PerformanceCounterMetrics {
    private internalConfig;
    private collectionInterval;
    private meterProvider;
    private azureExporter;
    private meter;
    private requestDurationHistogram;
    private requestRateGauge;
    private requestRateGaugeCallback;
    private memoryPrivateBytesGauge;
    private memoryPrivateBytesGaugeCallback;
    private memoryAvailableBytesGauge;
    private memoryAvailableBytesGaugeCallback;
    private processorTimeGauge;
    private processorTimeGaugeCallback;
    private processTimeNormalizedGauge;
    private processTimeNormalizedGaugeCallback;
    private processTimeGauge;
    private processTimeGaugeCallback;
    private exceptionCountGauge;
    private exceptionCountGaugeCallback;
    private lastExceptionRate;
    private totalCount;
    private intervalExecutionTime;
    private lastRequestRate;
    private lastAppCpuUsage;
    private lastHrtime;
    private lastCpus;
    private lastCpusProcess;
    private totalExceptionCount;
    /**
     * Creates performance counter instruments.
     * @param options - Distro configuration.
     * @param config - Application Insights configuration.
     */
    constructor(config: AzureMonitorOpenTelemetryOptions, 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
     * @internal
     */
    recordSpan(span: ReadableSpan): void;
    /**
     * Record Log metrics
     * @internal
     */
    recordLog(logRecord: LogRecord): void;
    private getRequestRate;
    private getPrivateMemory;
    private getAvailableMemory;
    private getTotalCombinedCpu;
    private getProcessorTime;
    private getNormalizedProcessTime;
    private getProcessTime;
    private getExceptionRate;
}
//# sourceMappingURL=performanceCounters.d.ts.map