import type { IRegionConstructor } from '../../region/interface';
import { ChartData } from '../chart-meta/data';
import type { Datum, IMarkStateSpec, IRegionQuerier, MaybeArray, IPadding, IRect, StringOrNumber, IChartSpec, IDataValues, ILayoutRect, ILayoutOrientPadding } from '../../typings';
import type { ILayoutItem, LayoutCallBack } from '../../layout/interface';
import type { ILayoutModelState, IModel, IModelOption, IModelSpecInfo, IUpdateSpecResult } from '../../model/interface';
import type { IChart, IChartLayoutOption, IChartRenderOption, IChartOption, IChartEvaluateOption, ILayoutParams, DimensionIndexOption, IChartSpecTransformerOption, IChartSpecTransformer } from '../interface';
import type { ISeries, ISeriesConstructor } from '../../series/interface';
import type { IRegion } from '../../region/interface';
import type { IComponent, IComponentConstructor } from '../../component/interface';
import type { IMark, IRectMark } from '../../mark/interface';
import type { IEvent } from '../../event/interface';
import type { DataView } from '@visactor/vdataset';
import type { DataSet } from '@visactor/vdataset';
import type { IParserOptions } from '@visactor/vdataset';
import type { IBoundsLike, Maybe } from '@visactor/vutils';
import type { IRunningConfig as IMorphConfig, IView } from '@visactor/vgrammar-core';
import { CompilableBase } from '../../compile/compilable-base';
import type { IGlobalScale } from '../../scale/interface';
export declare class BaseChart<T extends IChartSpec> extends CompilableBase implements IChart {
    readonly type: string;
    readonly seriesType: string;
    readonly transformerConstructor: new (option: IChartSpecTransformerOption) => IChartSpecTransformer;
    readonly id: number;
    protected _spec: T;
    getSpec(): T;
    setSpec(s: T): void;
    getOption(): IChartOption;
    protected _regions: IRegion[];
    protected _series: ISeries[];
    protected _components: IComponent[];
    protected _layoutFunc: LayoutCallBack;
    protected _layoutRect: IRect;
    getLayoutRect(): IRect;
    protected _viewRect: ILayoutRect;
    getViewRect(): ILayoutRect;
    protected _viewBox: IBoundsLike;
    protected _layoutTag: boolean;
    getLayoutTag(): boolean;
    setLayoutTag(tag: boolean, morphConfig?: IMorphConfig, renderNextTick?: boolean): boolean;
    protected _modelOption: IModelOption;
    protected _globalScale: IGlobalScale;
    getGlobalScale(): IGlobalScale;
    protected _idMap: Map<number, IModel | IMark>;
    protected _event: IEvent;
    getEvent(): IEvent;
    protected _dataSet: DataSet;
    protected _chartData: ChartData;
    get chartData(): ChartData;
    protected _option: IChartOption;
    readonly state: ILayoutModelState;
    padding: IPadding;
    protected _paddingSpec: ILayoutOrientPadding;
    protected _canvasRect: ILayoutRect;
    protected _backgroundMark: IRectMark;
    constructor(spec: T, option: IChartOption);
    created(transformer: Maybe<IChartSpecTransformer>): void;
    init(): void;
    reDataFlow(): void;
    onResize(width: number, height: number, reRender?: boolean): void;
    updateViewBox(viewBox: IBoundsLike, reLayout: boolean): void;
    private _createBackground;
    protected _createRegion(constructor: IRegionConstructor, specInfo: IModelSpecInfo): void;
    protected _createSeries(constructor: ISeriesConstructor, specInfo: IModelSpecInfo): void;
    getAllSeries: () => ISeries[];
    getSeriesById(id: number): ISeries | undefined;
    protected _createComponent(constructor: IComponentConstructor, specInfo: IModelSpecInfo): void;
    getAllComponents(): IComponent[];
    getAllModels(): IModel[];
    getModelInFilter(filter: string | {
        type: string;
        index: number;
    } | ((model: IModel) => boolean)): IModel;
    private _createLayout;
    setLayout(layout: LayoutCallBack): void;
    private _initLayoutFunc;
    layout(params: ILayoutParams): void;
    onLayoutStart(option: IChartLayoutOption): void;
    onLayoutEnd(option: IChartLayoutOption): void;
    onEvaluateEnd(option: IChartEvaluateOption): void;
    getLayoutElements(): ILayoutItem[];
    getRegionsInIndex: (index?: number[]) => IRegion[];
    getAllRegions: () => IRegion[];
    getRegionsInIds: (ids: number[]) => IRegion[];
    getRegionsInQuerier: (region?: MaybeArray<IRegionQuerier>) => IRegion[];
    getRegionsInUserId: (userId: StringOrNumber) => IRegion | undefined;
    getRegionsInUserIdOrIndex: (user_ids?: StringOrNumber[], index?: number[]) => IRegion[];
    getComponents: () => IComponent[];
    getSeriesInIndex: (index?: number[]) => ISeries[];
    getSeriesInIds: (ids?: number[]) => ISeries[];
    getSeriesInUserId: (userId: StringOrNumber) => ISeries | undefined;
    getSeriesInUserIdOrIndex: (user_ids?: StringOrNumber[], index?: number[]) => ISeries[];
    getComponentByIndex: (key: string, index: number) => IComponent;
    getComponentsByKey: (key: string) => IComponent[];
    getComponentByUserId: (userId: StringOrNumber) => IComponent;
    getComponentsByType: (type: string) => IComponent[];
    getModelById(id: number): IModel | undefined;
    getModelByUserId(userId: StringOrNumber): IModel | undefined;
    getAllMarks(): IMark[];
    getMarkById(id: number): IMark | undefined;
    getMarkByUserName(name: string): IMark[];
    updateData(id: StringOrNumber, data: unknown, updateGlobalScale?: boolean, options?: IParserOptions): void;
    updateFullData(data: IDataValues | IDataValues[], updateGlobalScale?: boolean): void;
    onRender(option: IChartRenderOption): void;
    setCanvasRect(width: number, height: number): void;
    getCanvasRect(): Omit<IRect, 'x' | 'y'>;
    getSeriesData(id: StringOrNumber | undefined, index: number | undefined): DataView | undefined;
    private _transformSpecScale;
    private _createGlobalScale;
    updateGlobalScaleDomain(): void;
    updateGlobalScale(result: IUpdateSpecResult): void;
    updateGlobalScaleTheme(): void;
    private _getSpecKeys;
    updateSpec(spec: T): {
        change: boolean;
        reMake: boolean;
        reRender: boolean;
        reSize: boolean;
        reCompile: boolean;
    };
    updateChartConfig(result: IUpdateSpecResult, oldSpec: IChartSpec): void;
    updateDataSpec(): void;
    updateRegionSpec(result: IUpdateSpecResult): void;
    updateComponentSpec(result: IUpdateSpecResult): void;
    updateSeriesSpec(result: IUpdateSpecResult): void;
    getCanvas(): HTMLCanvasElement;
    private _updateLayoutRect;
    setCurrentTheme(): void;
    reInit(): void;
    clear(): void;
    compile(): void;
    afterCompile(): void;
    compileLayout(): void;
    compileBackground(): void;
    compileRegions(): void;
    compileSeries(): void;
    compileComponents(): void;
    release(): void;
    onLayout(srView: IView): void;
    updateState(state: Record<string, Omit<IMarkStateSpec<unknown>, 'style'>>, filter?: (series: ISeries, mark: IMark, stateKey: string) => boolean): void;
    setSelected(datum: MaybeArray<any> | null, filter?: (series: ISeries, mark: IMark) => boolean, region?: IRegionQuerier): void;
    setHovered(datum: MaybeArray<Datum> | null, filter?: (series: ISeries, mark: IMark) => boolean, region?: IRegionQuerier): void;
    clearState(state: string): void;
    clearAllStates(): void;
    clearSelected(): void;
    clearHovered(): void;
    private _initEvent;
    protected _enableMarkAnimation(states: string | string[]): void;
    protected _disableMarkAnimation(states: string | string[]): void;
    protected _setStateInDatum(stateKey: string, checkReverse: boolean, datum: MaybeArray<Datum> | null, filter?: (series: ISeries, mark: IMark) => boolean, region?: IRegionQuerier): void;
    setDimensionIndex(value: StringOrNumber, opt: DimensionIndexOption): void;
    getColorScheme(): import("../..").IThemeColorScheme;
}
