import { type NameSlots } from "../session-name"; import type { ContentTier, Conversation, ConversationMessage, ConversationMeta, MessageSender, MessageSnapshot } from "../types"; import { type DiscoveredConversationFile, type ScannerProvider } from "./provider"; export interface CursorAccumulator { sessionId: string; latestTimestamp: string; messageCount: number; lastMessageSender: MessageSender; isSubagent: boolean; parentSessionUuid: string | null; subagentId: string | null; firstUser: MessageSnapshot | null; nameSlots: NameSlots; lastUser: MessageSnapshot | null; lastAssistant: MessageSnapshot | null; isImportedFromClaude: boolean; isImportedFromCodex: boolean; toolNames: string[]; previewParts: string[]; previewLength: number; snippetParts: string[]; snippetLength: number; } export declare class CursorProvider implements ScannerProvider { readonly name: "cursor"; discover(roots: string[]): Promise; canParse(filePath: string, sample: string): boolean; createEmptyAccumulator(): CursorAccumulator; reduceEntry(acc: CursorAccumulator, entry: Record, tier: ContentTier): void; finalize(acc: CursorAccumulator, filePath: string, account: string, tier: ContentTier): ConversationMeta | null; } export declare function looksLikeCursorChatEntry(entry: Record): boolean; export declare function unwrapCursorUserText(text: string): string; export declare function timestampFromCursorUserText(text: string): string; export declare function parseCursorJsonlLine(line: string, index?: number): ConversationMessage | null; export declare function reduceCursorEntry(acc: CursorAccumulator, entry: Record, tier: ContentTier): void; export declare function finalizeCursorMeta(acc: CursorAccumulator, filePath: string, account: string, tier: ContentTier): ConversationMeta | null; export declare function decodeCursorProjectSlug(slug: string): string | null; export declare function parseCursorConversation(filePath: string, account: string): Promise; //# sourceMappingURL=cursor.d.ts.map