import type { DataView } from '@visactor/vdataset';
import type { IRegion } from '../../region/interface';
import { BaseComponent } from '../base/base-component';
import type { IEffect } from '../../model/interface';
import type { ILayoutRect, ILayoutType, IOrientType, IPoint, StringOrNumber } from '../../typings';
import { CompilableData } from '../../compile/data/compilable-data';
import type { ILegend, ILegendCommonSpec } from './interface';
import type { IGraphic, IGroup } from '@visactor/vrender-core';
export declare abstract class BaseLegend<T extends ILegendCommonSpec> extends BaseComponent<T> implements ILegend {
    layoutType: ILayoutType;
    layoutZIndex: number;
    layoutLevel: number;
    static specKey: string;
    specKey: string;
    protected _orient: IOrientType;
    get orient(): IOrientType;
    protected _visible: boolean;
    get visible(): boolean;
    protected _position: 'start' | 'middle' | 'end';
    get position(): "start" | "end" | "middle";
    protected _legendData: CompilableData;
    getLegendData(): any;
    private _preSelectedData;
    protected _selectedData: StringOrNumber[];
    getSelectedData(): StringOrNumber[];
    protected _legendComponent: IGroup;
    private _cacheAttrs;
    effect: IEffect;
    protected _seriesUserId?: StringOrNumber[];
    protected _seriesIndex?: number[];
    protected _regionUserId?: StringOrNumber[];
    protected _regionUserIndex?: number[];
    setAttrFromSpec(): void;
    created(): void;
    onRender(ctx: any): void;
    _compareSpec(spec: T, prevSpec: T): {
        change: boolean;
        reMake: boolean;
        reRender: boolean;
        reSize: boolean;
        reCompile: boolean;
    };
    changeRegions(regions: IRegion[]): void;
    protected abstract _initLegendData(): DataView;
    protected abstract _initSelectedData(): void;
    protected abstract _getLegendAttributes(rect: ILayoutRect): any;
    protected abstract _getLegendConstructor(): any;
    protected abstract _initEvent(): void;
    private _bindLegendDataChange;
    protected initData(): void;
    setSelectedData(selectedData: StringOrNumber[]): void;
    afterSetLayoutStartPoint(pos: IPoint): void;
    getBoundsInRect(rect: ILayoutRect, fullSpace: ILayoutRect): {
        x1: number;
        y1: number;
        x2: number;
        y2: number;
    };
    onDataUpdate(): void;
    protected _getNeedClearVRenderComponents(): IGraphic[];
    clear(): void;
}
