export interface ProfilerFrame { /** A function instance name. */ readonly name: string; /** Index in the trace.resources array. */ readonly resourceId?: number; /** 1-based index of the line. */ readonly line?: number; /** 1-based index of the column. */ readonly column?: number; } export interface ProfilerStack { /** Index in the trace.stacks array. */ readonly parentId?: number; /** Index in the trace.frames array. */ readonly frameId: number; } export interface ProfilerSample { /** High resolution time relative to the profiling session's time origin. */ readonly timestamp: number; /** Index in the trace.stacks array. */ readonly stackId?: number; } export type ProfilerResource = string; export interface ProfilerTrace { /** An array of profiler resources. */ readonly resources: ProfilerResource[]; /** An array of profiler frames. */ readonly frames: ProfilerFrame[]; /** An array of profiler stacks. */ readonly stacks: ProfilerStack[]; /** An array of profiler samples. */ readonly samples: ProfilerSample[]; } export interface ProfilerInitOptions { /** Sample interval in ms. */ readonly sampleInterval: number; /** Max buffer size in number of samples. */ readonly maxBufferSize: number; } export interface Profiler extends EventTarget { /** Sample interval in ms. */ readonly sampleInterval: number; /** True if profiler is stopped. */ readonly stopped: boolean; new (options: ProfilerInitOptions): Profiler; stop(): Promise; addEventListener(type: K, listener: (this: typeof globalThis, ev: ProfilerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: typeof globalThis, ev: ProfilerEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; } interface ProfilerEventMap { samplebufferfull: SampleBufferFullEvent; } export interface SampleBufferFullEvent extends Event { readonly target: Profiler; } export {};