import { SystemLogLevel } from './Types'; export declare type MetricScopeMap = Map; export declare type MetricLabelMap = Map; export declare type MetricResult = { scope_id: number; label_id: number; start: number; end: number; }; export declare type SessionResult = { metricLabels: string[]; metricScopes: string[]; results: MetricResult[]; sessionName: string; sessionStart: number; sessionEnd: number; }; export declare type StartSessionOptions = { keepLabels?: boolean; keepScopes?: boolean; keepResults?: boolean; }; export declare type NewMeticOptions = { label?: string; scope?: string; }; /** * Used to collect metrics during runtime */ export interface Instrumentor { beginSession(name: string, options?: StartSessionOptions): void; endSession(): SessionResult; newLabel(name: string): number; newScope(name: string): number; metric(options?: NewMeticOptions): MetricCollector; } interface InstrumentorConstructor { new (): Instrumentor; prototype: Instrumentor; } export interface MetricCollector { start(): () => void; } declare const Instrumentor: InstrumentorConstructor; export default Instrumentor; export declare function SetInstrumentorLogger(newLogger: (level: SystemLogLevel, message: any) => void): void;