import * as zrUtil from 'zrender/lib/core/util.js'; 
 | 
import { AllPropTypes, Dictionary } from 'zrender/lib/core/types.js'; 
 | 
import { ColorString, BuiltinVisualProperty, VisualOptionPiecewise, VisualOptionUnit, ParsedValue } from '../util/types.js'; 
 | 
declare type RawValue = ParsedValue; 
 | 
declare type VisualValue = AllPropTypes<VisualOptionUnit>; 
 | 
declare type NormalizedValue = number; 
 | 
declare type MappingMethod = 'linear' | 'piecewise' | 'category' | 'fixed'; 
 | 
interface Normalizer { 
 | 
    (this: VisualMapping, value?: RawValue): NormalizedValue; 
 | 
} 
 | 
interface ColorMapper { 
 | 
    (this: VisualMapping, value: RawValue | NormalizedValue, isNormalized?: boolean, out?: number[]): ColorString | number[]; 
 | 
} 
 | 
interface DoMap { 
 | 
    (this: VisualMapping, normalzied?: NormalizedValue, value?: RawValue): VisualValue; 
 | 
} 
 | 
interface VisualValueGetter { 
 | 
    (key: string): VisualValue; 
 | 
} 
 | 
interface VisualValueSetter { 
 | 
    (key: string, value: VisualValue): void; 
 | 
} 
 | 
interface VisualHandler { 
 | 
    applyVisual(this: VisualMapping, value: RawValue, getter: VisualValueGetter, setter: VisualValueSetter): void; 
 | 
    _normalizedToVisual: { 
 | 
        linear(this: VisualMapping, normalized: NormalizedValue): VisualValue; 
 | 
        category(this: VisualMapping, normalized: NormalizedValue): VisualValue; 
 | 
        piecewise(this: VisualMapping, normalzied: NormalizedValue, value: RawValue): VisualValue; 
 | 
        fixed(this: VisualMapping): VisualValue; 
 | 
    }; 
 | 
    /** 
 | 
     * Get color mapping for the outside usage. 
 | 
     * Currently only used in `color` visual. 
 | 
     * 
 | 
     * The last parameter out is cached color array. 
 | 
     */ 
 | 
    getColorMapper?: (this: VisualMapping) => ColorMapper; 
 | 
} 
 | 
interface VisualMappingPiece { 
 | 
    index?: number; 
 | 
    value?: number | string; 
 | 
    interval?: [number, number]; 
 | 
    close?: [0 | 1, 0 | 1]; 
 | 
    text?: string; 
 | 
    visual?: VisualOptionPiecewise; 
 | 
} 
 | 
export interface VisualMappingOption { 
 | 
    type?: BuiltinVisualProperty; 
 | 
    mappingMethod?: MappingMethod; 
 | 
    /** 
 | 
     * required when mappingMethod is 'linear' 
 | 
     */ 
 | 
    dataExtent?: [number, number]; 
 | 
    /** 
 | 
     *  required when mappingMethod is 'piecewise'. 
 | 
     *  Visual for only each piece can be specified 
 | 
     * [ 
 | 
     *   {value: someValue}, 
 | 
     *   {interval: [min1, max1], visual: {...}}, 
 | 
     *   {interval: [min2, max2]} 
 | 
     *  ],. 
 | 
     */ 
 | 
    pieceList?: VisualMappingPiece[]; 
 | 
    /** 
 | 
     * required when mappingMethod is 'category'. If no option.categories, categories is set as [0, 1, 2, ...]. 
 | 
     */ 
 | 
    categories?: (string | number)[]; 
 | 
    /** 
 | 
     * Whether loop mapping when mappingMethod is 'category'. 
 | 
     * @default false 
 | 
     */ 
 | 
    loop?: boolean; 
 | 
    /** 
 | 
     * Visual data 
 | 
     * when mappingMethod is 'category', visual data can be array or object 
 | 
     * (like: {cate1: '#222', none: '#fff'}) 
 | 
     * or primary types (which represents default category visual), otherwise visual 
 | 
     * can be array or primary (which will be normalized to array). 
 | 
     */ 
 | 
    visual?: VisualValue[] | Dictionary<VisualValue> | VisualValue; 
 | 
} 
 | 
interface VisualMappingInnerPiece extends VisualMappingPiece { 
 | 
    originIndex: number; 
 | 
} 
 | 
interface VisualMappingInnerOption extends VisualMappingOption { 
 | 
    hasSpecialVisual: boolean; 
 | 
    pieceList: VisualMappingInnerPiece[]; 
 | 
    /** 
 | 
     * Map to get category index 
 | 
     */ 
 | 
    categoryMap: Dictionary<number>; 
 | 
    /** 
 | 
     * Cached parsed rgba array from string to avoid parse every time. 
 | 
     */ 
 | 
    parsedVisual: number[][]; 
 | 
    visual?: VisualValue[] | Dictionary<VisualValue>; 
 | 
} 
 | 
declare class VisualMapping { 
 | 
    option: VisualMappingInnerOption; 
 | 
    type: BuiltinVisualProperty; 
 | 
    mappingMethod: MappingMethod; 
 | 
    applyVisual: VisualHandler['applyVisual']; 
 | 
    getColorMapper: VisualHandler['getColorMapper']; 
 | 
    _normalizeData: Normalizer; 
 | 
    _normalizedToVisual: DoMap; 
 | 
    constructor(option: VisualMappingOption); 
 | 
    mapValueToVisual(value: RawValue): VisualValue; 
 | 
    getNormalizer(): zrUtil.Bind1<Normalizer, this>; 
 | 
    static visualHandlers: { 
 | 
        [key in BuiltinVisualProperty]: VisualHandler; 
 | 
    }; 
 | 
    /** 
 | 
     * List available visual types. 
 | 
     * 
 | 
     * @public 
 | 
     * @return {Array.<string>} 
 | 
     */ 
 | 
    static listVisualTypes(): ("symbol" | "color" | "opacity" | "decal" | "symbolSize" | "liftZ" | "colorAlpha" | "colorLightness" | "colorSaturation" | "colorHue")[]; 
 | 
    /** 
 | 
     * @public 
 | 
     */ 
 | 
    static isValidType(visualType: string): boolean; 
 | 
    /** 
 | 
     * Convenient method. 
 | 
     * Visual can be Object or Array or primary type. 
 | 
     */ 
 | 
    static eachVisual<Ctx, T>(visual: T | T[] | Dictionary<T>, callback: (visual: T, key?: string | number) => void, context?: Ctx): void; 
 | 
    static mapVisual<Ctx, T>(visual: T, callback: (visual: T, key?: string | number) => T, context?: Ctx): T; 
 | 
    static mapVisual<Ctx, T>(visual: T[], callback: (visual: T, key?: string | number) => T[], context?: Ctx): T[]; 
 | 
    static mapVisual<Ctx, T>(visual: Dictionary<T>, callback: (visual: T, key?: string | number) => Dictionary<T>, context?: Ctx): Dictionary<T>; 
 | 
    /** 
 | 
     * Retrieve visual properties from given object. 
 | 
     */ 
 | 
    static retrieveVisuals(obj: Dictionary<any>): VisualOptionPiecewise; 
 | 
    /** 
 | 
     * Give order to visual types, considering colorSaturation, colorAlpha depends on color. 
 | 
     * 
 | 
     * @public 
 | 
     * @param {(Object|Array)} visualTypes If Object, like: {color: ..., colorSaturation: ...} 
 | 
     *                                     IF Array, like: ['color', 'symbol', 'colorSaturation'] 
 | 
     * @return {Array.<string>} Sorted visual types. 
 | 
     */ 
 | 
    static prepareVisualTypes(visualTypes: { 
 | 
        [key in BuiltinVisualProperty]?: any; 
 | 
    } | BuiltinVisualProperty[]): (keyof VisualOptionUnit)[]; 
 | 
    /** 
 | 
     * 'color', 'colorSaturation', 'colorAlpha', ... are depends on 'color'. 
 | 
     * Other visuals are only depends on themself. 
 | 
     */ 
 | 
    static dependsOn(visualType1: BuiltinVisualProperty, visualType2: BuiltinVisualProperty): boolean; 
 | 
    /** 
 | 
     * @param value 
 | 
     * @param pieceList [{value: ..., interval: [min, max]}, ...] 
 | 
     *                         Always from small to big. 
 | 
     * @param findClosestWhenOutside Default to be false 
 | 
     * @return index 
 | 
     */ 
 | 
    static findPieceIndex(value: number, pieceList: VisualMappingPiece[], findClosestWhenOutside?: boolean): number; 
 | 
} 
 | 
export default VisualMapping; 
 |