import { ChartTheme } from '../theme'; import { Series } from './Series'; export interface ChartLegendCallbacks { onMove: (x: number, y: number) => void; onResize?: (width: number) => void; onInteractionStart?: () => void; onInteractionEnd?: () => void; onHoverStart?: () => void; onHoverEnd?: () => void; /** * Called when mouse enters a series item in legend * @param series - The series being hovered * @param highlightColor - Whether to apply color highlighting (from options) */ onSeriesHoverStart?: (series: Series, highlightColor: boolean) => void; /** * Called when mouse leaves a series item in legend * @param series - The series that was hovered * @param highlightColor - Whether color highlighting was applied */ onSeriesHoverEnd?: (series: Series, highlightColor: boolean) => void; onToggleVisibility?: (series: Series) => void; } /** Options for ChartLegend component */ export interface ChartLegendOptions { x?: number; y?: number; width?: number; /** * Highlight series color on hover (default: false) * When false, series still comes to foreground but color doesn't change */ highlightOnHover?: boolean; /** * Bring series to foreground (z-index) on hover (default: true) */ bringToFrontOnHover?: boolean; /** Allow dragging the legend (default: true) */ draggable?: boolean; /** Allow resizing the legend (default: true) */ resizable?: boolean; } export declare class ChartLegend { private container; private visualContainer; private header; private content; private theme; private series; private callbacks; private swatchCanvases; private options; private isDragging; private isResizing; private dragOffsetX; private dragOffsetY; constructor(parent: HTMLElement, theme: ChartTheme, options: ChartLegendOptions, callbacks: ChartLegendCallbacks); private updateStyle; private initDragging; update(series: Series[]): void; private render; updateSeriesStyle(s: Series): void; private paintSwatch; /** * Internal symbol drawing logic (shared with canvas export) */ private drawSymbol; draw(ctx: CanvasRenderingContext2D, dpr: number): void; updateTheme(theme: ChartTheme): void; setWidth(width: number): void; setVisible(visible: boolean): void; destroy(): void; }