import { BaseChartConfig, ChartPadding, PlotArea } from './types';
import { LiveRegion } from '../utils/a11y';
/** Accessible data point for keyboard navigation */
export interface AccessibleDataPoint {
    /** Unique identifier for this point */
    id: string;
    /** X coordinate for focus indicator */
    x: number;
    /** Y coordinate for focus indicator */
    y: number;
    /** Label for screen readers */
    label: string;
    /** Value for screen readers */
    value: string | number;
    /** Series name if applicable */
    series?: string;
    /** Raw data point */
    data: unknown;
}
export declare abstract class BaseChart {
    protected canvas: HTMLCanvasElement;
    protected ctx: CanvasRenderingContext2D;
    protected container: HTMLElement;
    protected width: number;
    protected height: number;
    protected padding: ChartPadding;
    protected responsive: boolean;
    protected animate: boolean;
    protected chartId: string;
    protected destroyed: boolean;
    protected liveRegion: LiveRegion | null;
    private resizeObserver;
    private readonly boundHandleKeyDown;
    private readonly boundHandleFocus;
    private readonly boundHandleBlur;
    protected readonly labelId: string;
    protected readonly descId: string;
    protected readonly tableId: string;
    private wrapperEl;
    private accessiblePoints;
    private focusedPointIndex;
    private focusIndicator;
    private hiddenTable;
    protected chartTitle: string;
    protected chartDescription: string;
    constructor(config: BaseChartConfig);
    protected get plotArea(): PlotArea;
    protected clear(): void;
    protected setupCanvas(): void;
    abstract render(): void;
    resize(width?: number, height?: number): void;
    toDataURL(type?: string): string;
    destroy(): void;
    /** Create hidden accessible elements */
    private createAccessibleElements;
    /** Create focus indicator overlay */
    private createFocusIndicator;
    /** Update the accessible title and description */
    protected updateAccessibleInfo(): void;
    /**
     * Register accessible data points for keyboard navigation.
     * Subclasses should call this after rendering with their data points.
     */
    protected setAccessiblePoints(points: AccessibleDataPoint[]): void;
    /** Update the hidden data table for screen readers */
    private updateHiddenTable;
    /** Handle keyboard navigation */
    private handleKeyDown;
    /** Handle chart focus */
    private handleFocus;
    /** Handle chart blur */
    private handleBlur;
    /** Update the focus indicator position */
    private updateFocusIndicator;
    /** Hide the focus indicator */
    private hideFocusIndicator;
    /** Announce the current focused point */
    private announcePoint;
    /**
     * Called when a data point is activated (Enter/Space pressed).
     * Subclasses can override to handle point selection.
     */
    protected onPointActivated(point: AccessibleDataPoint): void;
    /**
     * Helper to generate accessible points from data.
     * Subclasses can use this as a template.
     */
    protected generateAccessiblePoint(id: string, x: number, y: number, label: string, value: string | number, data: unknown, series?: string): AccessibleDataPoint;
}
//# sourceMappingURL=base.d.ts.map