export type GatewayStartupTraceEntry = {
    name: string;
    durationMs: number;
};
export type GatewayStartupTraceSnapshot = {
    entries: GatewayStartupTraceEntry[];
    totalMs: number;
    summary: string;
    recordedAtMs: number;
};
type StartupTraceLogger = {
    info: (message: string, meta?: Record<string, unknown>) => void;
};
type GatewayStartupTraceOptions = {
    now?: () => number;
    live?: boolean;
    liveLogger?: StartupTraceLogger | null;
};
export declare function getLastGatewayStartupTraceSnapshot(): GatewayStartupTraceSnapshot | null;
export declare function resetLastGatewayStartupTraceSnapshotForTest(): void;
export declare function createGatewayStartupTrace(opts?: GatewayStartupTraceOptions): {
    measureSync<T>(name: string, run: () => T): T;
    measure<T>(name: string, run: () => Promise<T> | T): Promise<T>;
    entries(): GatewayStartupTraceEntry[];
    totalMs(): number;
    summary(): string;
    logSummary(logger: StartupTraceLogger): void;
};
export {};
