import { MetricsDataCollection, IPerfSensorInterfaceOptions, NanoSeconds_BigInt, SensorInterfaceType } from '@oaklean/profiler-core';
import { BaseSensorInterface } from '../BaseSensorInterface';
/**
 * This SensorInterface uses the data provided by the perf command line tool.
 * This Provider can only be used on Linux with Perf installed and a CPU that supports RAPL
 *
 * Man Page to perf:
 * https://linux.die.net/man/1/perf
 */
export declare enum PerfEvent {
    ENERGY_CORES = "power/energy-cores/",
    ENERGY_RAM = "power/energy-ram/"
}
export type MeasurementTypeAvailable = {
    [PerfEvent.ENERGY_CORES]: boolean;
    [PerfEvent.ENERGY_RAM]: boolean;
};
export declare class PerfSensorInterface extends BaseSensorInterface {
    private _executable;
    private _options;
    private _childProcess;
    private _startTime;
    private _stopTime;
    private _availableMeasurementTypes;
    private cleanExit;
    constructor(options: IPerfSensorInterfaceOptions, debugOptions?: {
        startTime: NanoSeconds_BigInt;
        stopTime: NanoSeconds_BigInt;
    });
    type(): SensorInterfaceType;
    commandLineArgs(): Promise<string[]>;
    canBeExecuted(): Promise<boolean>;
    availableMeasurementTypes(): Promise<MeasurementTypeAvailable>;
    checkEventAvailability(eventName: string): Promise<boolean>;
    isRunning(): boolean;
    static runningInstances(): string[];
    getOutputContent(): string | undefined;
    readSensorValues(pid: number): Promise<MetricsDataCollection | undefined>;
    get startTime(): NanoSeconds_BigInt | undefined;
    get stopTime(): NanoSeconds_BigInt | undefined;
    startProfiling(): Promise<void>;
    stopProfiling(): Promise<void>;
}
