import type { CrosshairClickEvent, CrosshairValue } from './TimeSeriesChart'; import type { Range } from './providers/RangeSelectionProvider'; import type { PlotRenderer, PlotUtilitiesFn } from './renderers/types'; export type CursorState = { state: 'off' | 'hover'; cursor: { /** left in pixels, relative to `cursorEl` */ left: number; /** top in pixels, relative to `cursorEl` */ top: number; /** time index */ index: number; } | null; /** selection */ selection: { left: number; width: number; } | null; /** series index */ seriesIndex: number | null; /** active plot that user is interacting with */ active: boolean; }; type CursorPluginFactoryOptions = { id: string; plotUtilitiesFn: PlotUtilitiesFn; plotRenderer: PlotRenderer; cursorEl?: HTMLElement; scaleFactor: number; onChange: (state: CursorState) => void; onCrosshairChange?: (crosshairValue?: CrosshairValue) => void; onCrosshairClick?: (event: CrosshairClickEvent) => void; onRangeSelection?: (range: Range, e: MouseEvent) => void; }; type CursorPluginFactoryResponse = { setCrosshairValue: (crosshairValue?: CrosshairValue) => void; cleanupEventListeners: () => void; setupEventListeners: () => void; }; export declare function cursorPluginFactory({ id, plotUtilitiesFn, plotRenderer, cursorEl, scaleFactor, onChange, onCrosshairChange, onCrosshairClick, onRangeSelection, }: CursorPluginFactoryOptions): CursorPluginFactoryResponse; type UseCursorPluginParams = { id: string; plotUtilitiesFn: PlotUtilitiesFn; plotRenderer: PlotRenderer; cursorEl?: HTMLElement; scaleFactor: number; crosshairValue?: CrosshairValue; onCrosshairChange?: (crosshairValue?: CrosshairValue) => void; onCrosshairClick?: (event: CrosshairClickEvent) => void; onRangeSelection?: (range: Range) => void; }; type UseCursorPluginResponse = { cursorState?: CursorState; }; export declare const useCursorPlugin: ({ id, plotUtilitiesFn, plotRenderer, cursorEl, scaleFactor, crosshairValue, onCrosshairChange, onCrosshairClick, onRangeSelection, }: UseCursorPluginParams) => UseCursorPluginResponse; export {};