/**
 * Pure types of the session-stats domain: the ONE home of the `sessionStats`
 * projection-key declaration, free of this package's host-side value imports
 * (cordis context, zod, the llm chunk predicate). Two namespace projections
 * serve it — `./types` for host consumers, `./client` for client aggregates —
 * with zero content duplication.
 *
 * @module @deepseek-ai/dsh-session-stats/types
 */
export {};
/**
 * Whole-log conversation figures, independent of how much history a client
 * has paged in. Counts and wall times all fold from the complete durable log;
 * every field is 0 until its first contributing event lands. Field names
 * mirror the client window fold so an assembly without this unit can fall
 * back to it wholesale.
 */
export interface SessionStatsProjection {
    /** Distinct turns carrying at least one closed step (`step/end`); rejected or empty turns are uncounted. */
    turns: number;
    /** Closed steps (`step/end` events) — completed, failed, and cancelled steps alike. */
    steps: number;
    /** Summed model wall time (`step/start` → `assistant/message`) over steps that assembled a message. */
    llmMs: number;
    /** Summed tool wall time over `tool/call` → `tool/result` pairs matched by callId. */
    toolMs: number;
    /** Summed first-token latency (`step/start` → first non-empty delta chunk) over `ttftSteps`. */
    ttftMs: number;
    /** Steps carrying a recorded first token. */
    ttftSteps: number;
    /** Summed decode wall time (first token → `assistant/message`) over steps that also report output tokens. */
    decodeMs: number;
    /** Summed provider output tokens over the same decode-timed steps. */
    decodeTokens: number;
}
declare module '@deepseek-ai/dsh-session-projection/types' {
    interface SessionProjectionMap {
        /** Whole-log turn/step counts and wall times; see {@link SessionStatsProjection}. */
        sessionStats: SessionStatsProjection;
    }
}
//# sourceMappingURL=types.d.ts.map