import { KeyedSet } from './utils';
import { ValueFormatter } from './value-formatters';
import { FileFormat } from './file-format-spec';
export interface FrameInfo {
key: string | number;
name: string;
file?: string;
line?: number;
col?: number;
}
export declare class HasWeights {
private selfWeight;
private totalWeight;
getSelfWeight(): number;
getTotalWeight(): number;
addToTotalWeight(delta: number): void;
addToSelfWeight(delta: number): void;
overwriteWeightWith(other: HasWeights): void;
}
export declare class Frame extends HasWeights {
key: string | number;
name: string;
file?: string;
line?: number;
col?: number;
private constructor();
static root: Frame;
static getOrInsert(set: KeyedSet, info: FrameInfo): Frame;
}
export declare class CallTreeNode extends HasWeights {
readonly frame: Frame;
readonly parent: CallTreeNode | null;
children: CallTreeNode[];
isRoot(): boolean;
private frozen;
isFrozen(): boolean;
freeze(): void;
constructor(frame: Frame, parent: CallTreeNode | null);
}
export interface ProfileGroup {
name: string;
indexToView: number;
profiles: Profile[];
}
export declare class Profile {
protected name: string;
protected totalWeight: number;
protected frames: KeyedSet;
protected appendOrderCalltreeRoot: CallTreeNode;
protected groupedCalltreeRoot: CallTreeNode;
getAppendOrderCalltreeRoot(): CallTreeNode;
getGroupedCalltreeRoot(): CallTreeNode;
protected samples: CallTreeNode[];
protected weights: number[];
protected valueFormatter: ValueFormatter;
constructor(totalWeight?: number);
formatValue(v: number): string;
setValueFormatter(f: ValueFormatter): void;
getWeightUnit(): FileFormat.ValueUnit;
getName(): string;
setName(name: string): void;
getTotalWeight(): number;
private totalNonIdleWeight;
getTotalNonIdleWeight(): number;
protected sortGroupedCallTree(): void;
forEachCallGrouped(openFrame: (node: CallTreeNode, value: number) => void, closeFrame: (node: CallTreeNode, value: number) => void): void;
forEachCall(openFrame: (node: CallTreeNode, value: number) => void, closeFrame: (node: CallTreeNode, value: number) => void): void;
forEachFrame(fn: (frame: Frame) => void): void;
getProfileWithRecursionFlattened(): Profile;
getInvertedProfileForCallersOf(focalFrameInfo: FrameInfo): Profile;
getProfileForCalleesOf(focalFrameInfo: FrameInfo): Profile;
demangle(): Promise;
remapNames(callback: (name: string) => string): void;
}
export declare class StackListProfileBuilder extends Profile {
_appendSample(stack: FrameInfo[], weight: number, useAppendOrder: boolean): void;
appendSampleWithWeight(stack: FrameInfo[], weight: number): void;
private pendingSample;
appendSampleWithTimestamp(stack: FrameInfo[], timestamp: number): void;
build(): Profile;
}
export declare class CallTreeProfileBuilder extends Profile {
private appendOrderStack;
private groupedOrderStack;
private framesInStack;
private stack;
private lastValue;
private addWeightsToFrames;
private addWeightsToNodes;
private _enterFrame;
enterFrame(frameInfo: FrameInfo, value: number): void;
private _leaveFrame;
leaveFrame(frameInfo: FrameInfo, value: number): void;
build(): Profile;
}