import type { AABBBounds, IBoundsLike } from '@visactor/vutils';
import type { IDrawToParams, IGraphic, IGroup, ILayer, ILayerDrawParams, IStage, IGlobal, ILayerHandlerContribution, IDrawContext, ILayerHandlerDrawParams, IDrawContribution, IWindow, ILayerParams, LayerMode } from '../interface';
import { Group } from '../graphic/group';
type BlendMode = 'normal';
export declare class Layer extends Group implements ILayer {
    parent: any;
    _dpr: number;
    main: boolean;
    renderCount: number;
    afterDrawCbs: ((l: this) => void)[];
    imageData?: ImageData;
    blendMode: BlendMode;
    background: ILayer['background'];
    opacity: number;
    layer: this;
    subLayers: Map<number, {
        layer: ILayer;
        group?: IGroup;
        zIndex: number;
        drawContribution?: IDrawContribution;
    }>;
    get offscreen(): boolean;
    get layerMode(): LayerMode;
    get width(): number;
    get height(): number;
    get viewWidth(): number;
    get viewHeight(): number;
    pickable: boolean;
    get dirtyBound(): AABBBounds;
    get dpr(): number;
    stage?: IStage;
    protected global: IGlobal;
    protected window: IWindow;
    protected layerHandler: ILayerHandlerContribution;
    constructor(stage: IStage, global: IGlobal, window: IWindow, params: ILayerParams);
    combineSubLayer(removeIncrementalKey?: boolean): void;
    getNativeHandler(): ILayerHandlerContribution;
    setStage(stage?: IStage, layer?: ILayer): void;
    pick(x: number, y: number): {
        graphic?: IGraphic;
        group?: IGroup;
    } | false;
    protected tryRenderSecondaryLayer(params: ILayerDrawParams, userParams?: Partial<IDrawContext>): void;
    render(params: ILayerDrawParams, userParams?: Partial<IDrawContext>): void;
    resize(w: number, h: number): void;
    resizeView(w: number, h: number): void;
    setDpr(dpr: number): void;
    afterDraw(cb: (l: this) => void): void;
    startAnimate(t: number): void;
    setToFrame(t: number): void;
    prepare(dirtyBounds: IBoundsLike, params: ILayerHandlerDrawParams): void;
    release(): void;
    drawTo(target: IWindow, params: IDrawToParams): void;
}
export {};
