export interface StartupProfileEvent { name: string; startMs: number; durationMs: number; phase?: string; kind?: "event" | "gap"; detail?: Record; } export interface StartupProfileSnapshot { enabled: boolean; startedAt: string; startedAtMs?: number; elapsedMs: number; events: StartupProfileEvent[]; } export interface StartupProfileEventOptions { phase?: string; kind?: "event" | "gap"; detail?: Record; } export interface StartupProfileMergeOptions { gapThresholdMs?: number; } export interface StartupProfileFormatOptions { prefix?: string; } export interface StartupProfiler { readonly enabled: boolean; time(name: string, action: () => Promise | T, options?: StartupProfileEventOptions): Promise; mark(name: string, durationMs?: number, options?: StartupProfileEventOptions): void; toJSON(): StartupProfileSnapshot; } export interface StartupProfilerOptions { enabled?: boolean; now?: () => number; wallClockNow?: () => number; } export declare function createStartupProfiler(options?: StartupProfilerOptions): StartupProfiler; export declare function createStartupProfilerFromEnv(env: Record): StartupProfiler; export declare function mergeStartupProfiles(mainProfile: StartupProfileSnapshot, workerProfile: StartupProfileSnapshot, options?: StartupProfileMergeOptions): StartupProfileSnapshot; export declare function formatStartupSummary(profile: StartupProfileSnapshot, options?: StartupProfileFormatOptions): string; export declare function formatStartupProfile(profile: StartupProfileSnapshot, options?: StartupProfileFormatOptions): string; export declare function writeStartupProfileJson(filePath: string, profile: StartupProfileSnapshot): void; export declare function formatStartupDuration(value: number): string;