import { DatabaseSync } from 'node:sqlite'; import type { TeamCodexEvent, TeamCodexTurnTiming } from './team-codex-contract.js'; export interface CodexTimingSource { sessionId: string; homeKey?: string; live?: boolean; /** Cloud turn hashes must be resolved through an exact account/source/task binding. */ turns?: Map; } /** Reads only lifecycle metadata in one explicitly bound rollout. No history directory scan, * transcript import, Hook changes, or synchronous multi-gigabyte file reads. */ export declare class TeamCodexTurnTimingReader { private readonly home; private readonly now; private scans; private pending; constructor(home?: string, now?: () => number); read(source: CodexTimingSource, turns: readonly string[]): Promise>; /** Exact, validated local rollout; callers still enforce account/task ownership. */ location(source: CodexTimingSource): string | undefined; private scan; } /** Stable account/task cache survives restart and a source file later being archived/removed. */ export declare class TeamCodexTurnTimingStore { private readonly db; private readonly reader; constructor(db: DatabaseSync, home?: string, now?: () => number); read(source: CodexTimingSource, events: readonly TeamCodexEvent[]): Promise>; /** Caller revalidates the account and task after asynchronous reads, before committing. */ project(scope: string, source: CodexTimingSource, events: readonly TeamCodexEvent[], fresh: Map): TeamCodexEvent[]; } //# sourceMappingURL=team-codex-turn-timing.d.ts.map