export type CorpusParams = { session?: string; projectFolder?: string; includeSessionIds?: string[]; excludeSessionIds?: string[]; days?: number; since?: string; until?: string; asOf?: string; maxFiles?: number; maxBytes?: number; maxRecords?: number; maxScanMs?: number; }; export type EventWindow = { since: number; until: number; asOf: number; clock: "message.timestamp then entry.timestamp; Unix milliseconds/explicit timezone"; }; export type CorpusRecord = { entry: any; key: string; line: number; time: number | undefined; selected: boolean; duplicate: boolean; }; type CorpusDirectoryEntry = { name: string; isDirectory(): boolean; isFile(): boolean; }; type CorpusDirectory = AsyncIterable; export type CorpusDiscoveryFilesystem = { opendir(path: string): Promise; stat(path: string): Promise<{ mtimeMs: number; }>; }; export type SourceFingerprint = { size: number; mtimeMs: number; ctimeMs: number; ino: number; dev: number; }; export declare function sourceFingerprint(value: SourceFingerprint): SourceFingerprint; export type CorpusSource = { path: string; sourceId: string; id: string; headerId?: string; parentPath?: string; version?: number; format: "native" | "unsupported"; records: CorpusRecord[]; bytes: number; fingerprint?: SourceFingerprint; lineageId?: string; malformedLines: number; unsupportedRecords: number; unknownTimestamps: number; unresolvedLineage: number; identityConflicts: number; duplicateEvents: number; selectedEvents: number; excludedEvents: number; oversizedRecords: number; unreadable: boolean; changed: boolean; truncated: boolean; missingIdentity: boolean; }; export type CorpusCoverage = { discoveredFiles: number; processedFiles: number; logicalSessions: number; unsupportedFiles: number; entriesVisited: number; candidatesSeen: number; candidatesOmitted: number; bytesRead: number; recordsRead: number; messageOccurrences: number; uniqueMessages: number; selectedEvents: number; excludedEvents: number; unknownTimestamps: number; duplicateEvents: number; unreadableFiles: number; unreadableDirectories: number; changedFiles: number; truncatedFiles: number; unresolvedLineage: number; identityConflicts: number; unsupportedRecords: number; oversizedRecords: number; malformedLines: number; missingIdentities: number; selectionUncertainty: number; observedFirst?: number; observedLast?: number; discoveryComplete: boolean; stopReason?: "cancelled" | "deadline" | "byte_limit" | "record_limit" | "directory_limit" | "discovery_deadline"; }; export declare function eventTime(value: unknown): number | undefined; export declare function eventWindow(params: CorpusParams, now?: number): EventWindow; export declare function scanSessionCorpus(params: CorpusParams, cwd: string, signal?: AbortSignal, progress?: (files: number, bytes: number) => void, discoveryFilesystem?: CorpusDiscoveryFilesystem): Promise<{ sources: CorpusSource[]; coverage: CorpusCoverage; window: EventWindow; limits: { files: number; bytes: number; records: number; ms: number; }; continueAnalysis: () => boolean; }>; export declare function corpusIncomplete(coverage: CorpusCoverage): boolean; export {}; //# sourceMappingURL=session-corpus.d.ts.map