/** * Pure, total session-metric aggregation. Never throws, never does I/O. Honest sums: absent * cost/tokens count as 0 (never NaN); the window is max(end) − min(start) over parseable timestamps * (an unparseable start is skipped from the window, never a crash). */ import type { SessionMetrics, SessionTraceItem } from "./types.js"; /** * The session's wall-clock window in ns: [min start, max effective end] over the parseable * timestamps. An unparseable start is skipped (never a crash); a clock-skewed/absent end falls back * to its own start. A session with no parseable timestamps yields 0/0. This is the SINGLE definition * of "a session's time window" — both `aggregateSession` (for `windowMs`) and `SessionTimeline` (for * the per-trace bar denominator) consume it, so the window semantics live in one place. */ export declare function sessionBounds(items: SessionTraceItem[]): { startNs: bigint; endNs: bigint; }; export declare function aggregateSession(items: SessionTraceItem[]): SessionMetrics;