import Statistics from '../statistics';
interface Profiler {
    sectionTimes: {
        [name: string]: SectionStat;
    };
}
export declare const cNoSizeTrack = -2;
export declare const cUninitializedSize = -1;
type NumberStat = {
    total: number;
    max: number;
    min: number;
    avg: number;
    c: number;
};
type BigNumberStat = {
    total: bigint;
    max: bigint;
    min: bigint;
    avg: bigint;
    c: number;
};
type SectionStat = BigNumberStat & {
    name: string;
    internal: boolean;
    req: NumberStat;
    resp: NumberStat;
    start: bigint;
    end: bigint;
    started: boolean;
    reentryCount: number;
    reentryCountEver: number;
};
type TimesDataReport = {
    name: string;
    minMs: number;
    maxMs: number;
    totalMs: number;
    avgMs: number;
    c: number;
    data: NumberStat | Record<string, unknown>;
    dataReq: NumberStat | Record<string, unknown>;
};
type ScopedTimesDataReport = {
    scopedTimes: TimesDataReport[];
    cycle?: number;
    node?: string;
    id?: string;
};
export interface NodeLoad {
    internal: number;
    external: number;
}
export declare let profilerInstance: Profiler;
declare class Profiler {
    sectionTimes: {
        [name: string]: SectionStat;
    };
    scopedSectionTimes: {
        [name: string]: SectionStat;
    };
    eventCounters: Map<string, Map<string, number>>;
    stackHeight: number;
    netInternalStackHeight: number;
    netExternalStackHeight: number;
    statisticsInstance: Statistics;
    constructor();
    setStatisticsInstance(statistics: Statistics): void;
    registerEndpoints(): void;
    profileSectionStart(sectionName: string, internal?: boolean): void;
    profileSectionEnd(sectionName: string, internal?: boolean): void;
    scopedProfileSectionStart(sectionName: string, internal?: boolean, messageSize?: number): void;
    scopedProfileSectionEnd(sectionName: string, messageSize?: number): void;
    cleanInt(x: number): number;
    getTotalBusyInternal(): {
        duty: number;
        netInternlDuty: number;
        netExternlDuty: number;
    };
    clearTimes(): void;
    clearScopedTimes(): void;
    printAndClearReport(): string;
    printAndClearScopedReport(): string;
    scopedTimesDataReport(): ScopedTimesDataReport;
}
export default Profiler;
