import type { IBaseScale } from '@visactor/vscale';
import { CartesianSeries } from '../cartesian/cartesian';
import type { IMark, IRectMark, ITextMark } from '../../mark/interface';
import type { Datum, DirectionType } from '../../typings';
import type { IBarSeriesSpec, IBarSeriesTheme } from './interface';
import type { IAxisHelper } from '../../component/axis/cartesian/interface';
import type { IModelInitOption } from '../../model/interface';
import type { SeriesMarkMap } from '../interface';
import { SeriesMarkNameEnum } from '../interface/type';
import { DataView } from '@visactor/vdataset';
import { BarSeriesSpecTransformer } from './bar-transformer';
import type { ICompilableData } from '../../compile/data';
export declare const DefaultBandWidth = 6;
export declare class BarSeries<T extends IBarSeriesSpec = IBarSeriesSpec> extends CartesianSeries<T> {
    static readonly type: string;
    type: string;
    protected _barMarkName: string;
    protected _barMarkType: string;
    static readonly builtInTheme: Record<string, IBarSeriesTheme>;
    static readonly mark: SeriesMarkMap;
    static readonly transformerConstructor: any;
    readonly transformerConstructor: typeof BarSeriesSpecTransformer;
    protected _bandPosition: number;
    protected _barMark: IRectMark;
    protected _barBackgroundMark: IRectMark;
    protected _barBackgroundViewData: ICompilableData;
    initMark(): void;
    protected _initBarBackgroundMark(): void;
    initMarkStyle(): void;
    initLabelMarkStyle(textMark: ITextMark): void;
    protected initTooltip(): void;
    protected _statisticViewData(): void;
    init(option: IModelInitOption): void;
    private _shouldDoPreCalculate;
    private _calculateStackRectPosition;
    private _calculateRectPosition;
    protected _dataToPosX(datum: Datum): number;
    protected _dataToPosX1(datum: Datum): number;
    protected _dataToPosY(datum: Datum): number;
    protected _dataToPosY1(datum: Datum): number;
    protected _getLinearBarRange: (start: number, end: number) => number[];
    protected _getBarXStart: (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => any;
    protected _getBarXEnd: (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => any;
    protected _getLinearBarXRange: (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => number[];
    protected _getBarYStart: (datum: Datum, scale: IBaseScale) => any;
    protected _getBarYEnd: (datum: Datum, scale: IBaseScale) => any;
    protected _getLinearBarYRange: (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => number[];
    initBandRectMarkStyle(): void;
    protected _initStackBarMarkStyle(): void;
    initLinearRectMarkStyle(): void;
    protected _getBarBackgroundXStart: (scale: IBaseScale) => number;
    protected _getBarBackgroundXEnd: (scale: IBaseScale) => number;
    protected _getBarBackgroundYStart: (scale: IBaseScale) => number;
    protected _getBarBackgroundYEnd: (scale: IBaseScale) => number;
    protected _initBandBarBackgroundMarkStyle(): void;
    initAnimation(): void;
    protected _getBarWidth(axisHelper: IAxisHelper, scaleDepth?: number): number;
    protected _getPosition(direction: DirectionType, datum: Datum, scaleDepth?: number, mark?: SeriesMarkNameEnum): number;
    protected _barBackgroundPositionXEncoder?: (datum: Datum) => number;
    protected _getBarBackgroundPositionXEncoder: () => (datum: Datum) => number;
    protected _setBarBackgroundPositionXEncoder: (encoder: (datum: Datum) => number) => void;
    dataToBarBackgroundPositionX(datum: Datum, scaleDepth?: number): number;
    protected _barBackgroundPositionYEncoder?: (datum: Datum) => number;
    protected _getBarBackgroundPositionYEncoder: () => (datum: Datum) => number;
    protected _setBarBackgroundPositionYEncoder: (encoder: (datum: Datum) => number) => void;
    dataToBarBackgroundPositionY(datum: Datum, scaleDepth?: number): number;
    onLayoutEnd(): void;
    onDataUpdate(): void;
    compile(): void;
    getDefaultShapeType(): string;
    getActiveMarks(): IMark[];
    compileData(): void;
    fillData(): void;
    viewDataUpdate(d: DataView): void;
    release(): void;
}
export declare const registerBarSeries: () => void;
