import { ExternalStore } from "@snort/shared"; import { type QueryTraceEvent } from "./query"; export interface TimelineEntry { event: QueryTraceEvent; queryName?: string; runtime?: number; } export interface TraceTimelineSnapshot { entries: ReadonlyArray; enabled: boolean; } /** * Collects and manages trace reports in a timeline */ export declare class TraceTimeline extends ExternalStore { #private; constructor(); /** * Enable/disable timeline collection */ setEnabled(enabled: boolean): void; get enabled(): boolean; takeSnapshot(): TraceTimelineSnapshot; /** * Add a trace event to the timeline */ addTrace(event: QueryTraceEvent, queryName?: string): void; /** * Get all timeline entries */ getEntries(): ReadonlyArray; /** * Get entries within a time range */ getEntriesInRange(startTime: number, endTime: number): Array; /** * Get entries for a specific relay */ getEntriesForRelay(relayAddress: string): Array; /** * Get entries for a specific query */ getEntriesForQuery(queryId: string): Array; /** * Clear all timeline entries */ clear(): void; /** * Export timeline to Google Trace Event Format (for Chrome tracing / Perfetto) * https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview */ exportGoogleTrace(): { traceEvents: Record[]; displayTimeUnit: string; metadata: { "trace-type": string; }; }; } //# sourceMappingURL=trace-timeline.d.ts.map