import { type MutableRefObject } from "react"; import type { Message, Provider } from "@kenkaiiii/gg-ai"; import type { SessionManager, TurnMetricPayload } from "../../core/session-manager.js"; import type { SessionStats } from "../session-summary.js"; /** Minimal session-store surface the persistence layer mirrors into. */ interface PersistenceSessionStore { messages: Message[]; sessionPath?: string; sessionId?: string; } interface UseSessionPersistenceOptions { sessionManagerRef: MutableRefObject; sessionPathRef: MutableRefObject; sessionStatsRef: MutableRefObject; persistedIndexRef: MutableRefObject; messagesRef: MutableRefObject; turnMetricsRef: MutableRefObject; cwdRef: MutableRefObject; currentProvider: Provider; currentModel: string; sessionStore?: PersistenceSessionStore; onCompactedSession?: (sessionId: string) => Promise; } export interface SessionPersistence { appendMessagesToSession: (sessionPath: string, messages: readonly Message[], startIndex: number) => Promise; persistCompactedSession: (compactedMessages: readonly Message[]) => Promise; persistNewMessages: () => Promise; } /** * Owns session message persistence: appending new turn messages, persisting a * compacted checkpoint, and keeping `persistedIndexRef`/`sessionStatsRef`/the * session store in sync. Extracted verbatim from `App.tsx`. */ export declare function useSessionPersistence({ sessionManagerRef, sessionPathRef, sessionStatsRef, persistedIndexRef, messagesRef, turnMetricsRef, cwdRef, currentProvider, currentModel, sessionStore, onCompactedSession, }: UseSessionPersistenceOptions): SessionPersistence; export {}; //# sourceMappingURL=useSessionPersistence.d.ts.map