import Model from '../../model/Model.js'; 
 | 
import ComponentModel from '../../model/Component.js'; 
 | 
import { ComponentOption, BoxLayoutOptionMixin, BorderOptionMixin, ColorString, LabelOption, LayoutOrient, CommonTooltipOption, ItemStyleOption, LineStyleOption } from '../../util/types.js'; 
 | 
import { Dictionary } from 'zrender/lib/core/types.js'; 
 | 
import GlobalModel from '../../model/Global.js'; 
 | 
import { ItemStyleProps } from '../../model/mixin/itemStyle.js'; 
 | 
import { LineStyleProps } from './../../model/mixin/lineStyle.js'; 
 | 
import { PathStyleProps } from 'zrender/lib/graphic/Path.js'; 
 | 
declare type SelectorType = 'all' | 'inverse'; 
 | 
export interface LegendSelectorButtonOption { 
 | 
    type?: SelectorType; 
 | 
    title?: string; 
 | 
} 
 | 
/** 
 | 
 * T: the type to be extended 
 | 
 * ET: extended type for keys of T 
 | 
 * ST: special type for T to be extended 
 | 
 */ 
 | 
declare type ExtendPropertyType<T, ET, ST extends { 
 | 
    [key in keyof T]: any; 
 | 
}> = { 
 | 
    [key in keyof T]: key extends keyof ST ? T[key] | ET | ST[key] : T[key] | ET; 
 | 
}; 
 | 
export interface LegendItemStyleOption extends ExtendPropertyType<ItemStyleOption, 'inherit', { 
 | 
    borderWidth: 'auto'; 
 | 
}> { 
 | 
} 
 | 
export interface LegendLineStyleOption extends ExtendPropertyType<LineStyleOption, 'inherit', { 
 | 
    width: 'auto'; 
 | 
}> { 
 | 
    inactiveColor?: ColorString; 
 | 
    inactiveWidth?: number; 
 | 
} 
 | 
export interface LegendStyleOption { 
 | 
    /** 
 | 
     * Icon of the legend items. 
 | 
     * @default 'roundRect' 
 | 
     */ 
 | 
    icon?: string; 
 | 
    /** 
 | 
     * Color when legend item is not selected 
 | 
     */ 
 | 
    inactiveColor?: ColorString; 
 | 
    /** 
 | 
     * Border color when legend item is not selected 
 | 
     */ 
 | 
    inactiveBorderColor?: ColorString; 
 | 
    /** 
 | 
     * Border color when legend item is not selected 
 | 
     */ 
 | 
    inactiveBorderWidth?: number | 'auto'; 
 | 
    /** 
 | 
     * Legend label formatter 
 | 
     */ 
 | 
    formatter?: string | ((name: string) => string); 
 | 
    itemStyle?: LegendItemStyleOption; 
 | 
    lineStyle?: LegendLineStyleOption; 
 | 
    textStyle?: LabelOption; 
 | 
    symbolRotate?: number | 'inherit'; 
 | 
    /** 
 | 
     * @deprecated 
 | 
     */ 
 | 
    symbolKeepAspect?: boolean; 
 | 
} 
 | 
interface DataItem extends LegendStyleOption { 
 | 
    name?: string; 
 | 
    icon?: string; 
 | 
    textStyle?: LabelOption; 
 | 
    tooltip?: unknown; 
 | 
} 
 | 
export interface LegendTooltipFormatterParams { 
 | 
    componentType: 'legend'; 
 | 
    legendIndex: number; 
 | 
    name: string; 
 | 
    $vars: ['name']; 
 | 
} 
 | 
export interface LegendIconParams { 
 | 
    itemWidth: number; 
 | 
    itemHeight: number; 
 | 
    /** 
 | 
     * symbolType is from legend.icon, legend.data.icon, or series visual 
 | 
     */ 
 | 
    icon: string; 
 | 
    iconRotate: number | 'inherit'; 
 | 
    symbolKeepAspect: boolean; 
 | 
    itemStyle: PathStyleProps; 
 | 
    lineStyle: LineStyleProps; 
 | 
} 
 | 
export interface LegendSymbolStyleOption { 
 | 
    itemStyle?: ItemStyleProps; 
 | 
    lineStyle?: LineStyleProps; 
 | 
} 
 | 
export interface LegendOption extends ComponentOption, LegendStyleOption, BoxLayoutOptionMixin, BorderOptionMixin { 
 | 
    mainType?: 'legend'; 
 | 
    show?: boolean; 
 | 
    orient?: LayoutOrient; 
 | 
    align?: 'auto' | 'left' | 'right'; 
 | 
    backgroundColor?: ColorString; 
 | 
    /** 
 | 
     * Border radius of background rect 
 | 
     * @default 0 
 | 
     */ 
 | 
    borderRadius?: number | number[]; 
 | 
    /** 
 | 
     * Padding between legend item and border. 
 | 
     * Support to be a single number or an array. 
 | 
     * @default 5 
 | 
     */ 
 | 
    padding?: number | number[]; 
 | 
    /** 
 | 
     * Gap between each legend item. 
 | 
     * @default 10 
 | 
     */ 
 | 
    itemGap?: number; 
 | 
    /** 
 | 
     * Width of legend symbol 
 | 
     */ 
 | 
    itemWidth?: number; 
 | 
    /** 
 | 
     * Height of legend symbol 
 | 
     */ 
 | 
    itemHeight?: number; 
 | 
    selectedMode?: boolean | 'single' | 'multiple'; 
 | 
    /** 
 | 
     * selected map of each item. Default to be selected if item is not in the map 
 | 
     */ 
 | 
    selected?: Dictionary<boolean>; 
 | 
    /** 
 | 
     * Buttons for all select or inverse select. 
 | 
     * @example 
 | 
     *  selector: [{type: 'all or inverse', title: xxx}] 
 | 
     *  selector: true 
 | 
     *  selector: ['all', 'inverse'] 
 | 
     */ 
 | 
    selector?: (LegendSelectorButtonOption | SelectorType)[] | boolean; 
 | 
    selectorLabel?: LabelOption; 
 | 
    emphasis?: { 
 | 
        selectorLabel?: LabelOption; 
 | 
    }; 
 | 
    /** 
 | 
     * Position of selector buttons. 
 | 
     */ 
 | 
    selectorPosition?: 'auto' | 'start' | 'end'; 
 | 
    /** 
 | 
     * Gap between each selector button 
 | 
     */ 
 | 
    selectorItemGap?: number; 
 | 
    /** 
 | 
     * Gap between selector buttons group and legend main items. 
 | 
     */ 
 | 
    selectorButtonGap?: number; 
 | 
    data?: (string | DataItem)[]; 
 | 
    /** 
 | 
     * Tooltip option 
 | 
     */ 
 | 
    tooltip?: CommonTooltipOption<LegendTooltipFormatterParams>; 
 | 
} 
 | 
declare class LegendModel<Ops extends LegendOption = LegendOption> extends ComponentModel<Ops> { 
 | 
    static type: string; 
 | 
    type: string; 
 | 
    static readonly dependencies: string[]; 
 | 
    readonly layoutMode: { 
 | 
        readonly type: "box"; 
 | 
        readonly ignoreSize: true; 
 | 
    }; 
 | 
    private _data; 
 | 
    private _availableNames; 
 | 
    init(option: Ops, parentModel: Model, ecModel: GlobalModel): void; 
 | 
    mergeOption(option: Ops, ecModel: GlobalModel): void; 
 | 
    _updateSelector(option: Ops): void; 
 | 
    optionUpdated(): void; 
 | 
    _updateData(ecModel: GlobalModel): void; 
 | 
    getData(): Model<DataItem>[]; 
 | 
    select(name: string): void; 
 | 
    unSelect(name: string): void; 
 | 
    toggleSelected(name: string): void; 
 | 
    allSelect(): void; 
 | 
    inverseSelect(): void; 
 | 
    isSelected(name: string): boolean; 
 | 
    getOrient(): { 
 | 
        index: 0; 
 | 
        name: 'horizontal'; 
 | 
    }; 
 | 
    getOrient(): { 
 | 
        index: 1; 
 | 
        name: 'vertical'; 
 | 
    }; 
 | 
    static defaultOption: LegendOption; 
 | 
} 
 | 
export default LegendModel; 
 |