// Type definitions for https://wicg.github.io/js-self-profiling/ declare namespace JSSelfProfiling { type Marker = 'script' | 'gc' | 'style' | 'layout' | 'paint' | 'other'; type Sample = { timestamp: number; stackId: number; marker?: Marker; }; type Stack = { frameId: number; parentId?: number; }; type Frame = { name: string; resourceId?: number; line?: number; column?: number; }; type Trace = { resources: string[]; frames: Frame[]; stacks: Stack[]; samples: Sample[]; }; type BufferFullCallback = (trace: Trace) => void; interface Profiler { sampleInterval: number; stopped: boolean; new (options: {sampleInterval: number; maxBufferSize: number}): Profiler; addEventListener(event: 'samplebufferfull', callback: BufferFullCallback): void; stop: () => Promise; } }