import { Subject } from "rxjs";
import { IXYScales, Scales } from "../../../core/common/scales/types";
import { IDataSeries, IRendererEventPayload } from "../../../core/common/types";
import { IRectangleAccessors } from "../../accessors/rectangle-accessors";
import { IHighlightStrategy, IRenderSeries } from "../../types";
import { BarRenderer } from "../bar-renderer";
export type SelectedDatPointIdxFn = (seriesId: string) => number;
export declare class BarHighlightStrategy implements IHighlightStrategy<IRectangleAccessors, BarRenderer> {
    protected scaleKey: keyof IXYScales;
    protected levels: number;
    protected selectedDataPointIdxFn?: SelectedDatPointIdxFn | undefined;
    /**
     * @param scaleKey scale that will be used for searching for the data point that will be highlighted
     * @param levels for band scales, how many levels deep do we go to compare values
     */
    constructor(scaleKey: keyof IXYScales, levels?: number, selectedDataPointIdxFn?: SelectedDatPointIdxFn | undefined);
    getDataPointIndex(renderer: BarRenderer, series: IDataSeries<IRectangleAccessors>, values: {
        [p: string]: any;
    }, scales: Scales): number;
    findDataPointByValue(series: IDataSeries<IRectangleAccessors>, value: any, scaleKey: keyof IXYScales, scales?: Scales): number;
    highlightDataPoint(renderer: BarRenderer, renderSeries: IRenderSeries<IRectangleAccessors>, dataPointIndex: number, rendererSubject: Subject<IRendererEventPayload>): void;
    draw(renderer: BarRenderer, renderSeries: IRenderSeries<IRectangleAccessors>, rendererSubject: Subject<IRendererEventPayload>): void;
}
