import { type ScrollAnchor, type ScrollGeometry } from '../../scroll-anchor.js'; import type { CopyHit } from './copy-geometry.js'; import type { HistoryScrollController } from './scroll-controller-types.js'; import type { MountedCardSpan } from './scrollbar-geometry.js'; import { type SelectionBandStore } from './selection-band-store.js'; import type { HistoryEntry } from './types.js'; export interface UseHistoryControllerOptions { geometry: ScrollGeometry; effectiveAnchor: ScrollAnchor | null; groupIds: readonly number[]; termWidth: number; vp: number; copyHitsRef: { current: CopyHit[]; }; liveToolCopyHitRef: { current: CopyHit | null; }; mountedGroupSpansRef: { current: readonly MountedCardSpan[]; }; selectionRef: { current: { anchor: { row: number; col: number; } | null; head: { row: number; col: number; } | null; inProgress: boolean; }; }; entriesByIdRef: { current: Map; }; toolStreamRef: { current: { name: string; text: string; startedAt: number; } | null | undefined; }; /** External store for the drag-selection highlight band. The controller * publishes selection geometry here so the rail leaf can re-render on * drag motion WITHOUT any history card re-rendering. */ selectionBandStore?: SelectionBandStore | undefined; setAnchor: (anchor: { id: number; clip: number; } | null) => void; setMountBump: (bump: number) => void; controllerRef?: { current: HistoryScrollController | null; } | undefined; } export declare function useHistoryController(opts: UseHistoryControllerOptions): { controller: HistoryScrollController; applyAnchor: (next: ScrollAnchor | null) => void; effectiveAnchorRef: { current: ScrollAnchor | null; }; geometryRef: { current: ScrollGeometry; }; groupIdsRef: { current: readonly number[]; }; }; //# sourceMappingURL=use-history-controller.d.ts.map