import type { CanonSession } from './canonPull.js'; /** Where an archived session's bytes live: git blob ids in the store (part order), plus the events sidecar. */ export interface ArchivedSessionRef { store: string; /** Repo path of the logical session under archive/ (e.g. archive/2026-08/canon/claude-code//.jsonl). */ path: string; blobs: string[]; sidecarBlob?: string; /** False when any of the session's blobs is not in the local object store (partial clone) — never fetched here. */ local: boolean; } /** Sizes of the blobs present locally (missing ones absent from the map) — one batch call, no fetch. */ export declare function localBlobSizes(store: string, shas: string[]): Map; /** * Archived canonical sessions (HEAD `archive//canon/…`) whose logical path is NOT live — a live copy * always wins. A session archived in more than one month bucket resolves to the newest bucket. Same grouping and * uuid rules as discoverCanonSessions (parts-aware, events sidecars excluded, empty mains skipped). */ export declare function discoverArchivedCanonSessions(store: string, live: Iterable, opts?: { home?: string; }): CanonSession[]; /** Stream a session's JSONL lines — disk parts for a live session, git blobs for an archived one. */ export declare function sessionLines(s: CanonSession): AsyncGenerator; /** Stream the events sidecar's lines (nothing when the session has none). */ export declare function sidecarLines(s: CanonSession): AsyncGenerator; //# sourceMappingURL=canonArchiveRead.d.ts.map