import { LinearScale, LogScale, SymlogScale } from '@visactor/vscale';
type IRange = {
    max?: number;
    min?: number;
};
export declare class LinearAxisScale {
    protected _extend: {
        [key: string]: number;
    };
    _scale: LinearScale | LogScale | SymlogScale;
    _scales: (LinearScale | LogScale | SymlogScale)[];
    nice: boolean;
    zero: boolean;
    domain: Required<IRange>;
    expand?: IRange;
    forceTickCount?: number;
    tickCount?: number;
    niceType?: 'tickCountFirst' | 'accurateFirst';
    type?: 'linear' | 'time' | 'log' | 'symlog';
    constructor(type?: 'linear' | 'time' | 'log' | 'symlog');
    setExtraAttrFromSpec(nice: boolean, zero: boolean, range: Required<IRange>, expand?: IRange, base?: number, constant?: number): void;
    transformScaleDomain(): void;
    setScaleNice(): void;
    setLogScaleNice(): void;
    setLinearScaleNice(): void;
    dataToPosition(values: any[]): number;
    valueToPosition(value: any): number;
    computeLinearDomain(data: {
        min: number;
        max: number;
    }[]): number[];
    protected expandDomain(domain: number[]): void;
    protected niceDomain(domain: number[]): number[];
    protected niceMinMax(): void;
    protected includeZero(domain: number[]): void;
    setExtendDomain(key: string, value: number | undefined): void;
    protected extendDomain(domain: number[]): void;
    protected setDomainMinMax(domain: number[]): void;
    setZero(zero: boolean): void;
    updateScaleDomain(): void;
    computeDomain(data: {
        min: number;
        max: number;
    }[]): number[];
    protected updateScaleDomainByModel(domain?: number[]): void;
    updateRange(newRange: [number, number]): void;
}
export {};
