import type { FileHandle } from 'node:fs/promises'; import { z } from 'zod'; import type { CompactedToolMetadata } from './compaction-provenance.js'; import { type EvidenceBudget } from './io.js'; export declare const entrySchema: z.ZodObject<{ offset: z.ZodNumber; length: z.ZodNumber; sha256: z.ZodString; seq: z.ZodNumber; /** The turn the record belongs to; absent for a record outside any turn. */ turnId: z.ZodOptional; source: z.ZodEnum<["tool_completed", "message_completed", "compaction_shed:system", "compaction_shed:summary", "compaction_shed:user", "compaction_shed:assistant", "compaction_shed:tool"]>; part: z.ZodDefault; toolName: z.ZodOptional; toolUseId: z.ZodOptional; isError: z.ZodOptional; truncated: z.ZodBoolean; spill: z.ZodOptional; filter: z.ZodString; tokenFilter: z.ZodOptional; }, "strip", z.ZodTypeAny, { length: number; filter: string; source: "tool_completed" | "message_completed" | "compaction_shed:system" | "compaction_shed:summary" | "compaction_shed:user" | "compaction_shed:assistant" | "compaction_shed:tool"; offset: number; seq: number; part: number; sha256: string; truncated: boolean; isError?: boolean | undefined; turnId?: string | undefined; toolName?: string | undefined; toolUseId?: string | undefined; spill?: string | undefined; tokenFilter?: string | undefined; }, { length: number; filter: string; source: "tool_completed" | "message_completed" | "compaction_shed:system" | "compaction_shed:summary" | "compaction_shed:user" | "compaction_shed:assistant" | "compaction_shed:tool"; offset: number; seq: number; sha256: string; truncated: boolean; isError?: boolean | undefined; turnId?: string | undefined; part?: number | undefined; toolName?: string | undefined; toolUseId?: string | undefined; spill?: string | undefined; tokenFilter?: string | undefined; }>; export type IndexEntry = z.infer; export declare const positionSchema: z.ZodObject<{ offset: z.ZodNumber; seq: z.ZodNumber; textIndex: z.ZodDefault; }, "strip", z.ZodTypeAny, { offset: number; seq: number; textIndex: number; }, { offset: number; seq: number; textIndex?: number | undefined; }>; export type IndexPosition = z.infer; export interface IndexPage { start: IndexPosition; entries: IndexEntry[]; next: IndexPosition | null; records: number; } /** Seals addresses and cursors to one scope and one state of the source. */ export interface EvidenceSeal { pack(value: unknown): string; unpack(value: string): unknown; } /** * The seal of one session log. Its key is derived from the log's first * record, so an address or cursor stays valid across a restart while the * source is unchanged, and never validates against another session. */ export declare function evidenceSeal(sessionStart: Uint8Array, sourceKey: string): EvidenceSeal; export declare function toolEntry(record: Record, offset: number, bytes: Buffer): IndexEntry | null; /** Validate all textual parts of a record before publishing any part of it. */ export declare function recordTexts(record: Record): ({ source: string; text: string; } & CompactedToolMetadata)[]; /** * Index the text of at most 64 records (64 textual parts, 4 MiB of input) * from `start`. Every record must belong to the session and continue the * log's seq; the first must be `session_started`. */ export declare function indexPage(handle: FileHandle, size: number, sessionId: string, start: IndexPosition, budget: EvidenceBudget): Promise<{ page: IndexPage; cacheHit: boolean; }>; //# sourceMappingURL=index-page.d.ts.map