import { Stage } from './Stage';
import { Ticker } from '../system/Ticker';
import { Matrix } from '../geom/Matrix';
import { Vector } from '../geom/Vector';
import { Rectangle } from '../geom/Rectangle';
import { TouchEvent } from '../event/TouchEvent';
import { EventEmitter } from '../event/EventEmitter';
export declare class Layer extends EventEmitter {
    static pixelRatio: number;
    name: string;
    tag: string;
    touchable: boolean;
    protected $x: number;
    protected $y: number;
    protected $width: number;
    protected $height: number;
    protected $anchorX: number;
    protected $anchorY: number;
    protected $skewX: number;
    protected $skewY: number;
    protected $scaleX: number;
    protected $scaleY: number;
    protected $rotation: number;
    protected $alpha: number;
    protected $visible: boolean;
    protected $smoothing: boolean;
    protected $background: string;
    protected $stage: Stage;
    protected $parent: Layer;
    protected $children: Array<Layer>;
    protected $dirty: boolean;
    protected $shouldEmitTap: boolean;
    protected $touches: Array<boolean>;
    protected readonly $canvas: HTMLCanvasElement;
    protected readonly $context: CanvasRenderingContext2D;
    constructor();
    get x(): number;
    set x(x: number);
    get y(): number;
    set y(y: number);
    get width(): number;
    set width(width: number);
    get height(): number;
    set height(height: number);
    get anchorX(): number;
    set anchorX(anchorX: number);
    get anchorY(): number;
    set anchorY(anchorY: number);
    get skewX(): number;
    set skewX(skewX: number);
    get skewY(): number;
    set skewY(skewY: number);
    get scaleX(): number;
    set scaleX(scaleX: number);
    get scaleY(): number;
    set scaleY(scaleY: number);
    get rotation(): number;
    set rotation(rotation: number);
    get alpha(): number;
    set alpha(alpha: number);
    get visible(): boolean;
    set visible(visible: boolean);
    get smoothing(): boolean;
    set smoothing(smoothing: boolean);
    get background(): string;
    set background(background: string);
    get stage(): Stage;
    get parent(): Layer;
    get numChildren(): number;
    get ticker(): Ticker;
    get canvas(): HTMLCanvasElement;
    addChild(child: Layer): this;
    addChildAt(child: Layer, index: number): this;
    replaceChild(oldChild: Layer, newChild: Layer): this;
    getChildByName(name: string): Layer;
    getChildrenByTag(tag: string): Array<Layer>;
    getChildAt(index: number): Layer;
    getChildIndex(child: Layer): number;
    hasChild(child: Layer): boolean;
    swapChildren(child1: Layer, child2: Layer): this;
    swapChildrenAt(index1: number, index2: number): this;
    setChildIndex(child: Layer, index: number): this;
    removeChild(child: Layer): this;
    removeChildAt(index: number): this;
    removeChildByName(name: string): this;
    removeChildrenByTag(tag: string): this;
    removeAllChildren(): this;
    removeSelf(): this;
    protected $markDirty(sizeDirty?: boolean): void;
    protected $markParentDirty(): void;
    protected $resizeCanvas(): void;
    protected $resizeParentCanvas(): void;
    protected $getTransform(): Matrix;
    protected $getChildTransform(child: Layer): Matrix;
    protected $getChildBounds(child: Layer): Rectangle;
    protected $getContentBounds(): Rectangle;
    protected $emitTouchEvent(event: TouchEvent, inside: boolean): boolean;
    protected $emitAdded(parent: Layer): void;
    protected $emitRemoved(): void;
    protected $emitAddedToStage(stage: Stage): void;
    protected $emitRemovedFromStage(): void;
    protected $localHitTest(vector: Vector): boolean;
    protected $isChildVisible(child: Layer): boolean;
    protected $drawChild(child: Layer): number;
    protected $render(): number;
    on(type: string, listener: (...args: any[]) => void): this;
    off(type: string, listener?: (...args: any[]) => void): this;
}
