import type { IEvent } from '../event/interface';
import type { IEffect, IModel, IModelInitOption, IModelOption, IModelRenderOption, IModelEvaluateOption, IModelSpec, IModelMarkInfo, IModelSpecInfo } from './interface';
import type { CoordinateType } from '../typings/coordinate';
import type { ICompileMarkConfig, IMark, IMarkOption, IMarkRaw, IMarkStyle } from '../mark/interface';
import type { Datum, StateValueType, ConvertToMarkStyleSpec, ICommonSpec, StringOrNumber, IRect, ILayoutRect } from '../typings';
import type { CompilableData } from '../compile/data/compilable-data';
import type { IGroupMark } from '@visactor/vgrammar-core';
import { MarkSet } from '../mark/mark-set';
import type { ILayoutItem } from '../layout/interface';
import { CompilableBase } from '../compile/compilable-base';
import { BaseModelSpecTransformer } from './base-model-transformer';
export declare abstract class BaseModel<T extends IModelSpec> extends CompilableBase implements IModel {
    readonly transformerConstructor: typeof BaseModelSpecTransformer;
    protected _spec: T;
    getSpec(): T;
    getSpecPath(): (string | number)[];
    getSpecInfoPath(): (string | number)[];
    readonly type: string;
    readonly modelType: string;
    readonly id: number;
    userId: StringOrNumber | undefined;
    readonly event: IEvent;
    readonly effect: IEffect;
    protected _data: CompilableData;
    getData(): CompilableData;
    protected _layout?: ILayoutItem;
    get layout(): ILayoutItem;
    readonly specKey: string;
    protected _option: IModelOption;
    getOption(): IModelOption;
    protected _marks: MarkSet;
    getMarks(): IMark[];
    getMarkNameMap(): Record<string, IMark>;
    getMarkSet(): MarkSet;
    getChart(): import("../chart/interface").IChart;
    protected get _theme(): any;
    protected _lastLayoutRect: ILayoutRect;
    constructor(spec: T, option: IModelOption);
    coordinate?: CoordinateType;
    protected _releaseEvent(): void;
    created(): void;
    init(option: IModelInitOption): void;
    afterInit(): void;
    getVisible(): boolean;
    onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void;
    onLayoutEnd(ctx: any): void;
    onEvaluateEnd(ctx: IModelEvaluateOption): void;
    abstract onRender(ctx: IModelRenderOption): void;
    onDataUpdate(): void;
    beforeRelease(): void;
    release(): void;
    updateSpec(spec: T): {
        change: boolean;
        reMake: boolean;
        reRender: boolean;
        reSize: boolean;
        reCompile: boolean;
    };
    protected _compareSpec(spec: T, prevSpec: T): {
        change: boolean;
        reMake: boolean;
        reRender: boolean;
        reSize: boolean;
        reCompile: boolean;
    };
    reInit(spec?: T): void;
    updateLayoutAttribute(): void;
    setAttrFromSpec(): void;
    protected _convertMarkStyle<T extends ICommonSpec = ICommonSpec>(style: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>): Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>;
    setMarkStyle<T extends ICommonSpec>(mark: IMarkRaw<T>, style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>, state?: StateValueType, level?: number): void;
    initMarkStyleWithSpec(mark?: IMark, spec?: any, key?: string): void;
    protected stateKeyToSignalName(key: string, opt?: string): string;
    compileData(): void;
    compileMarks(group?: string | IGroupMark): void;
    protected _createMark<T extends IMark>(markInfo: IModelMarkInfo, option?: Partial<IMarkOption>, config?: ICompileMarkConfig): T;
    protected _getDataIdKey(): string | ((datum: Datum) => string) | undefined;
    getColorScheme(): import("..").IThemeColorScheme;
    getSpecInfo(): IModelSpecInfo<any>;
    getSpecIndex(): number;
}
