import { HashMap } from 'tvrender/lib/core/util.js';
import { DataFormatMixin } from '../../model/mixin/dataFormat.js';
import ComponentModel from '../../model/Component.js';
import { ComponentOption, AnimationOptionMixin, Dictionary } from '../../util/types.js';
import Model from '../../model/Model.js';
import GlobalModel from '../../model/Global.js';
import { LineStyleProps } from '../../model/mixin/lineStyle.js';
import { TextStyleProps } from 'tvrender/lib/graphic/Text.js';
declare type MarkerStatisticType = 'min' | 'max' | 'last' | 'rawLast' | 'dataMin' | 'dataMax';
export interface IMarkLabelData {
    name: string;
    type?: MarkerStatisticType;
    valueIndex?: number;
    valueDim?: string;
    value?: string | number;
    title?: string;
    text?: string;
    lineStyle?: LineStyleProps;
    textStyle?: TextStyleProps;
    showLine?: boolean;
    showName?: boolean;
    showTitle?: boolean;
    precision?: number;
    $action?: 'remove';
    customColor?: boolean;
    countDown?: {
        value: number;
        show: boolean;
        dataTimeDiff?: number;
        nextTime?: number;
    };
}
export interface MarkLabelOption extends ComponentOption, AnimationOptionMixin {
    silent?: boolean;
    data?: IMarkLabelDataDir;
    mainType?: 'markLabel';
    lineStyle?: LineStyleProps;
    /**
     * itemStyle for symbol
     */
    textStyle?: TextStyleProps;
    isAvoidOverlap?: boolean;
}
export declare type IMarkLabelDataDir = Dictionary<IMarkLabelData>;
declare class MarkLabelModal<Opts extends MarkLabelOption = MarkLabelOption> extends ComponentModel<Opts> {
    static type: string;
    type: string;
    preventAutoZ: boolean;
    /**
     * If marker model is created by self from series
     */
    static readonly dependencies: string[];
    static defaultOption: MarkLabelOption;
    labelMap: HashMap<IMarkLabelDataDir>;
    init(option: Opts, parentModel: Model, ecModel: GlobalModel): void;
    /**
     * @overrite
     */
    mergeOption(newOpt: Opts, ecModel: GlobalModel): void;
    _mergeOption(newOpt: Opts, ecModel: GlobalModel): void;
}
interface MarkLabelModal<Opts extends MarkLabelOption = MarkLabelOption> extends DataFormatMixin {
}
export default MarkLabelModal;
