import type { SessionId } from '../../types/ids/index.js'; import type { ChildSessionSummary, EvidenceHit, EvidenceSearchOptions, IndexedBatch, IndexedPendingDecision, IndexedSession, IndexedTurn, ListSessionsOptions } from './index.js'; import { type IndexSink, SessionIndexBase, type SessionRow } from './rebuild.js'; import { type ExternalRefKind, type ExternalRefTarget } from './refs.js'; /** * The index without SQLite: the same rows, derived from the same records by * the same projection, held in memory for the life of the object. * * Used where `node:sqlite` does not load (Node 20, and Node 22 before 22.13). * {@link ScanSessionIndex.load} reads every log under a home; nothing is * written to disk, so each process derives its own copy. */ export declare class ScanSessionIndex extends SessionIndexBase { #private; readonly backend: "scan"; /** An empty index; fill it with `indexSession`, `refresh` or `sync`. */ constructor(); /** Derive the index for a home from every log under it. */ static load(home: string): Promise; /** * One process, one event loop: the sink is only touched synchronously, so * a unit of work cannot interleave with another. A failure part way leaves * the rows it wrote; the next refresh of that log re-derives it. */ protected transaction(work: (sink: IndexSink) => T): T; protected readSession(sessionId: SessionId): SessionRow | undefined; protected indexedSessionIds(): SessionId[]; listSessions(options?: ListSessionsOptions): Promise; listTurns(sessionId: SessionId): Promise; listChildren(sessionId: SessionId): Promise; listPendingDecisions(options?: { sessionId?: SessionId; }): Promise; resolveExternal(protocol: string, kind: ExternalRefKind, externalId: string): Promise; listExternalRefs(sessionId: SessionId): Promise; batches(options?: { sessionId?: SessionId; }): Promise; searchEvidence(options: EvidenceSearchOptions): Promise; close(): void; } //# sourceMappingURL=scan.d.ts.map