import type { IGroup, ITextGraphicAttribute, TextAlignType, TextBaselineType, IGraphic, IText } from '@visactor/vrender-core';
import type { Dict } from '@visactor/vutils';
import { AbstractComponent } from '../core/base';
import type { Point } from '../core/type';
import type { TagAttributes } from '../tag';
import type { AxisBaseAttributes, AxisItem, TransformedAxisItem, TickLineItem } from './type';
export declare abstract class AxisBase<T extends AxisBaseAttributes> extends AbstractComponent<Required<T>> {
    name: string;
    protected _innerView: IGroup;
    getInnerView(): IGroup;
    protected _prevInnerView: {
        [key: string]: IGraphic;
    };
    getPrevInnerView(): {
        [key: string]: IGraphic<Partial<import("@visactor/vrender-core").IGraphicAttribute>>;
    };
    protected data: TransformedAxisItem[];
    protected tickLineItems: TickLineItem[];
    protected subTickLineItems: TickLineItem[];
    protected axisLabelLayerSize: Dict<{
        width: number;
        height: number;
        textAlign: string;
        textBaseline: string;
        labelPos: number;
    }>;
    protected axisLabelsContainer: IGroup | null;
    protected axisContainer: IGroup;
    private _lastHover;
    private _lastSelect;
    protected abstract renderLine(container: IGroup): void;
    abstract isInValidValue(value: number): boolean;
    abstract getTickCoord(value: number): Point;
    abstract getVerticalVector(offset: number, inside: boolean, point: Point): [number, number];
    abstract getRelativeVector(point?: Point): [number, number];
    protected abstract getTitleAttribute(): TagAttributes;
    protected abstract beforeLabelsOverlap(labelShapes: IText[], labelData: AxisItem[], labelContainer: IGroup, layer: number, layerCount: number): void;
    protected abstract handleLabelsOverlap(labelShapes: IText[], labelData: AxisItem[], labelContainer: IGroup, layer: number, layerCount: number): void;
    protected abstract afterLabelsOverlap(labelShapes: IText[], labelData: AxisItem[], labelContainer: IGroup, layer: number, layerCount: number): void;
    protected abstract getLabelAlign(vector: [number, number], inside?: boolean, angle?: number): {
        textAlign: TextAlignType;
        textBaseline: TextBaselineType;
    };
    getBoundsWithoutRender(attributes: Partial<T>): import("@visactor/vutils").IBounds;
    protected render(): void;
    private _bindEvent;
    private _onHover;
    private _onUnHover;
    private _onClick;
    protected _renderInner(container: IGroup): void;
    protected renderTicks(container: IGroup): void;
    protected renderLabels(container: IGroup, items: AxisItem[], layer: number): IGroup;
    protected renderTitle(container: IGroup): void;
    protected getVerticalCoord(point: Point, offset: number, inside: boolean): Point;
    protected getTickLineItems(): TickLineItem[];
    protected getSubTickLineItems(): TickLineItem[];
    private _getTickLineAttribute;
    private _getLabelAttribute;
    protected getLabelPosition(point: Point, vector: [number, number], text: string | number, style: Partial<ITextGraphicAttribute>): Point;
    private _transformItems;
    release(): void;
}
