export declare namespace FileFormat { export type Profile = EventedProfile | SampledProfile; export interface File { $schema: 'https://www.speedscope.app/file-format-schema.json'; shared: { frames: Frame[]; }; profiles: Profile[]; name?: string; activeProfileIndex?: number; exporter?: string; } export interface Frame { name: string; file?: string; line?: number; col?: number; } export enum ProfileType { EVENTED = "evented", SAMPLED = "sampled" } export interface IProfile { type: ProfileType; } export interface EventedProfile extends IProfile { type: ProfileType.EVENTED; name: string; unit: ValueUnit; startValue: number; endValue: number; events: (OpenFrameEvent | CloseFrameEvent)[]; } type SampledStack = number[]; export interface SampledProfile extends IProfile { type: ProfileType.SAMPLED; name: string; unit: ValueUnit; startValue: number; endValue: number; samples: SampledStack[]; weights: number[]; } export type ValueUnit = 'none' | 'nanoseconds' | 'microseconds' | 'milliseconds' | 'seconds' | 'bytes'; export enum EventType { OPEN_FRAME = "O", CLOSE_FRAME = "C" } export interface IEvent { type: EventType; at: number; } interface OpenFrameEvent extends IEvent { type: EventType.OPEN_FRAME; frame: number; } interface CloseFrameEvent extends IEvent { type: EventType.CLOSE_FRAME; frame: number; } export {}; }