import { Annotation } from '../annotations'; import { Series } from '../Series'; import { AxisOptions } from '../../types'; import { Scale } from '../../scales'; import { PluginManagerImpl } from '../../plugins'; import { ChartState, SerializeOptions, DeserializeOptions } from '../../serialization'; export interface StateManagerContext { viewBounds: { xMin: number; xMax: number; yMin: number; yMax: number; }; xAxisOptions: AxisOptions; xScale: Scale; yAxisOptionsMap: Map; yScales: Map; primaryYAxisId: string; series: Map; pluginManager: PluginManagerImpl; showLegend: boolean; showControls: boolean; showStatistics: boolean; autoScroll: boolean; getAnnotations: () => Annotation[]; clearAnnotations: () => void; addAnnotation: (annotation: Annotation) => void; updateXAxis: (options: Partial) => void; updateYAxis: (id: string, options: Partial) => void; removeSeries: (id: string) => void; addSeries: (options: any) => void; requestRender: () => void; } export declare class ChartStateManager { private ctx; constructor(ctx: StateManagerContext); /** Swap the X scale (e.g. broken-axis plugin) — the context holds a snapshot. */ setXScale(scale: Scale): void; /** * Export complete chart state */ serialize(options?: SerializeOptions): ChartState; /** * Restore chart from saved state */ deserialize(state: ChartState, options?: DeserializeOptions): void; /** * Convert current state to URL-safe hash */ toUrlHash(compress?: boolean): string; /** * Load state from URL hash */ fromUrlHash(hash: string, compressed?: boolean): void; }