import type { IAABBBounds, IBounds, IBoundsLike, IMatrix } from '@visactor/vutils';
import type { IExportType, IStage, IStageParams, ILayer, IColor, IOption3D, ICamera, vec3, IDirectionLight, ITicker, IRenderService, IPickerService, IPluginService, ISyncHook, IDrawContext, IWindow, ILayerService, ITimeline, IOptimizeType, LayerMode, PickResult, IPlugin, IGraphicService, IRenderServiceDrawParams } from '../interface';
import type { Layer } from './layer';
import { Group } from '../graphic/group';
type IStageState = 'rendering' | 'normal';
export declare class Stage extends Group implements IStage {
    parent: IStage | null;
    state: IStageState;
    private _background;
    protected nextFrameRenderLayerSet: Set<Layer>;
    protected willNextFrameRender: boolean;
    protected _cursor: string;
    renderCount: number;
    dirtyBounds: IBounds | null;
    option3d?: IOption3D;
    light?: IDirectionLight;
    camera?: ICamera;
    renderStyle?: string;
    hooks: {
        beforeRender: ISyncHook<[IStage]>;
        afterRender: ISyncHook<[IStage]>;
        afterClearScreen: ISyncHook<[IRenderServiceDrawParams]>;
        afterClearRect: ISyncHook<[IRenderServiceDrawParams]>;
    };
    set viewBox(b: IBoundsLike);
    get viewBox(): IAABBBounds;
    get x(): number;
    set x(x: number);
    get y(): number;
    set y(y: number);
    get width(): number;
    set width(w: number);
    get viewWidth(): number;
    set viewWidth(w: number);
    get viewHeight(): number;
    set viewHeight(h: number);
    get height(): number;
    set height(h: number);
    get dpr(): number;
    set dpr(r: number);
    get background(): string | IColor;
    set background(b: string | IColor);
    get defaultLayer(): ILayer;
    protected _ticker: ITicker;
    autoRender: boolean;
    autoRefresh: boolean;
    _enableLayout: boolean;
    htmlAttribute: boolean | string | any;
    reactAttribute: boolean | string | any;
    increaseAutoRender: boolean;
    view3dTranform: boolean;
    readonly window: IWindow;
    private readonly global;
    readonly renderService: IRenderService;
    protected pickerService?: IPickerService;
    readonly pluginService: IPluginService;
    readonly layerService: ILayerService;
    readonly graphicService: IGraphicService;
    private _eventSystem?;
    private get eventSystem();
    protected _beforeRender?: (stage: IStage) => void;
    protected _afterRender?: (stage: IStage) => void;
    protected _afterClearScreen?: (drawParams: any) => void;
    protected _afterClearRect?: (drawParams: any) => void;
    protected _skipRender?: number;
    protected _afterNextRenderCbs?: ((stage: IStage) => void)[];
    protected lastRenderparams?: Partial<IDrawContext>;
    protected interactiveLayer?: ILayer;
    protected supportInteractiveLayer: boolean;
    protected timeline: ITimeline;
    params: Partial<IStageParams>;
    protected tickedBeforeRender: boolean;
    readonly rafId: number;
    get ticker(): ITicker;
    set ticker(ticker: ITicker);
    constructor(params?: Partial<IStageParams>);
    initAnimate(params: Partial<IStageParams>): void;
    startAnimate(): void;
    pauseRender(sr?: number): void;
    resumeRender(): void;
    protected tryInitEventSystem(): void;
    preventRender(prevent: boolean): void;
    optmize(params: IOptimizeType): void;
    protected optmizeRender(skipRenderWithOutRange?: boolean): void;
    protected _onVisibleChange: (visible: boolean) => void;
    getTimeline(): ITimeline;
    get3dOptions(options: IOption3D): {
        center: {
            x?: number;
            y?: number;
            z?: number;
            dx?: number;
            dy?: number;
            dz?: number;
        };
        light: {
            dir?: vec3;
            color?: string;
            ambient?: number;
        };
        alpha: number;
        beta: number;
        camera: any;
        fieldRatio: number;
        fieldDepth: number;
        enableView3dTransform?: boolean;
        gama?: number;
    };
    set3dOptions(options: IOption3D): void;
    protected beforeRender: (stage: IStage) => void;
    protected afterClearScreen: (drawParams: any) => void;
    protected afterClearRect: (drawParams: any) => void;
    protected afterRender: (stage: IStage) => void;
    protected afterTickCb: () => void;
    setBeforeRender(cb: (stage: IStage) => void): void;
    setAfterRender(cb: (stage: IStage) => void): void;
    afterNextRender(cb: (stage: IStage) => void): void;
    enableView3dTransform(): void;
    disableView3dTranform(): void;
    enableAutoRender(): void;
    disableAutoRender(): void;
    enableAutoRefresh(): void;
    disableAutoRefresh(): void;
    enableIncrementalAutoRender(): void;
    disableIncrementalAutoRender(): void;
    enableDirtyBounds(): void;
    disableDirtyBounds(): void;
    enableLayout(): void;
    disableLayout(): void;
    enableHtmlAttribute(container?: any): void;
    disableHtmlAttribute(): void;
    enableReactAttribute(container?: any): void;
    disableReactAttribute(): void;
    getPluginsByName(name: string): IPlugin[];
    protected tryUpdateAABBBounds(): IAABBBounds;
    combineLayer(ILayer1: ILayer, ILayer2: ILayer): ILayer;
    createLayer(canvasId?: string, layerMode?: LayerMode): ILayer;
    sortLayer(cb: (ILayer1: ILayer, layer2: ILayer) => number): void;
    removeLayer(ILayerId: number): ILayer | false;
    tryInitInteractiveLayer(): void;
    clearViewBox(color?: string): void;
    render(layers?: ILayer[], params?: Partial<IDrawContext>): void;
    protected combineLayersToWindow(): void;
    renderNextFrame(layers?: ILayer[], force?: boolean): void;
    _doRenderInThisFrame(): void;
    protected renderLayerList(layerList: ILayer[], params?: Partial<IDrawContext>): void;
    resizeWindow(w: number, h: number, rerender?: boolean): void;
    resize(w: number, h: number, rerender?: boolean): void;
    resizeView(w: number, h: number, rerender?: boolean): void;
    setViewBox(viewBox: IBoundsLike, rerender: boolean): void;
    setViewBox(x: number, y: number, w: number, h: number, rerender: boolean): void;
    setDpr(dpr: number, rerender?: boolean): void;
    setOrigin(x: number, y: number): void;
    export(type: IExportType): HTMLCanvasElement | ImageData;
    pick(x: number, y: number): PickResult | false;
    setToFrame(t: number): void;
    release(): void;
    setStage(stage?: IStage): void;
    dirty(b: IBounds, matrix?: IMatrix): void;
    getLayer(name: string): undefined | ILayer;
    renderTo(window: IWindow): void;
    renderToNewWindow(fullImage?: boolean, viewBox?: IAABBBounds): IWindow;
    toCanvas(fullImage?: boolean, viewBox?: IAABBBounds): HTMLCanvasElement | null;
    setCursor(mode?: string): void;
    getCursor(): string;
    eventPointTransform(e: PointerEvent | WheelEvent | TouchEvent): {
        x: number;
        y: number;
    };
    pauseTriggerEvent(): void;
    resumeTriggerEvent(): void;
    getPickerService(): IPickerService;
    reInit(): void;
}
export {};
