import * as clazzUtil from '../util/clazz.js'; 
 | 
import { Dictionary } from 'zrender/lib/core/types.js'; 
 | 
import SeriesData from '../data/SeriesData.js'; 
 | 
import { DimensionName, ScaleDataValue, OptionDataValue, DimensionLoose, ScaleTick } from '../util/types.js'; 
 | 
import { ScaleRawExtentInfo } from '../coord/scaleRawExtentInfo.js'; 
 | 
declare abstract class Scale<SETTING extends Dictionary<unknown> = Dictionary<unknown>> { 
 | 
    type: string; 
 | 
    private _setting; 
 | 
    protected _extent: [number, number]; 
 | 
    private _isBlank; 
 | 
    readonly rawExtentInfo: ScaleRawExtentInfo; 
 | 
    constructor(setting?: SETTING); 
 | 
    getSetting<KEY extends keyof SETTING>(name: KEY): SETTING[KEY]; 
 | 
    /** 
 | 
     * Parse input val to valid inner number. 
 | 
     * Notice: This would be a trap here, If the implementation 
 | 
     * of this method depends on extent, and this method is used 
 | 
     * before extent set (like in dataZoom), it would be wrong. 
 | 
     * Nevertheless, parse does not depend on extent generally. 
 | 
     */ 
 | 
    abstract parse(val: OptionDataValue): number; 
 | 
    /** 
 | 
     * Whether contain the given value. 
 | 
     */ 
 | 
    abstract contain(val: ScaleDataValue): boolean; 
 | 
    /** 
 | 
     * Normalize value to linear [0, 1], return 0.5 if extent span is 0. 
 | 
     */ 
 | 
    abstract normalize(val: ScaleDataValue): number; 
 | 
    /** 
 | 
     * Scale normalized value to extent. 
 | 
     */ 
 | 
    abstract scale(val: number): number; 
 | 
    /** 
 | 
     * Set extent from data 
 | 
     */ 
 | 
    unionExtent(other: [number, number]): void; 
 | 
    /** 
 | 
     * Set extent from data 
 | 
     */ 
 | 
    unionExtentFromData(data: SeriesData, dim: DimensionName | DimensionLoose): void; 
 | 
    /** 
 | 
     * Get extent 
 | 
     * 
 | 
     * Extent is always in increase order. 
 | 
     */ 
 | 
    getExtent(): [number, number]; 
 | 
    /** 
 | 
     * Set extent 
 | 
     */ 
 | 
    setExtent(start: number, end: number): void; 
 | 
    /** 
 | 
     * If value is in extent range 
 | 
     */ 
 | 
    isInExtentRange(value: number): boolean; 
 | 
    /** 
 | 
     * When axis extent depends on data and no data exists, 
 | 
     * axis ticks should not be drawn, which is named 'blank'. 
 | 
     */ 
 | 
    isBlank(): boolean; 
 | 
    /** 
 | 
     * When axis extent depends on data and no data exists, 
 | 
     * axis ticks should not be drawn, which is named 'blank'. 
 | 
     */ 
 | 
    setBlank(isBlank: boolean): void; 
 | 
    /** 
 | 
     * Update interval and extent of intervals for nice ticks 
 | 
     * 
 | 
     * @param splitNumber Approximated tick numbers. Optional. 
 | 
     *        The implementation of `niceTicks` should decide tick numbers 
 | 
     *        whether `splitNumber` is given. 
 | 
     * @param minInterval Optional. 
 | 
     * @param maxInterval Optional. 
 | 
     */ 
 | 
    abstract calcNiceTicks(splitNumber?: number, minInterval?: number, maxInterval?: number): void; 
 | 
    abstract calcNiceExtent(opt?: { 
 | 
        splitNumber?: number; 
 | 
        fixMin?: boolean; 
 | 
        fixMax?: boolean; 
 | 
        minInterval?: number; 
 | 
        maxInterval?: number; 
 | 
    }): void; 
 | 
    /** 
 | 
     * @return label of the tick. 
 | 
     */ 
 | 
    abstract getLabel(tick: ScaleTick): string; 
 | 
    abstract getTicks(): ScaleTick[]; 
 | 
    abstract getMinorTicks(splitNumber: number): number[][]; 
 | 
    static registerClass: clazzUtil.ClassManager['registerClass']; 
 | 
    static getClass: clazzUtil.ClassManager['getClass']; 
 | 
} 
 | 
export default Scale; 
 |