import EventEmitter from 'eventemitter3';
import { TextureSource } from './sources/TextureSource';
import { TextureLayout } from './TextureLayout';
import { TextureMatrix } from './TextureMatrix';
import type { Rectangle } from '../../../../maths/shapes/Rectangle';
import type { BufferSourceOptions } from './sources/BufferImageSource';
import type { TextureSourceOptions } from './sources/TextureSource';
import type { TextureLayoutOptions } from './TextureLayout';
export interface TextureOptions {
    source?: TextureSource;
    layout?: TextureLayout | TextureLayoutOptions;
    label?: string;
    frame?: Rectangle;
}
export interface BindableTexture {
    source: TextureSource;
}
export declare class Texture extends EventEmitter<{
    update: Texture;
    destroy: Texture;
}> implements BindableTexture {
    static from(id: string | TextureSource | TextureSourceOptions): Texture;
    static fromBuffer(options: BufferSourceOptions): Texture;
    label?: string;
    id: number;
    styleSourceKey: number;
    /**
     * Has the texture been destroyed?
     * @readonly
     */
    destroyed: boolean;
    private _textureMatrix;
    /** @internal */
    _layout: TextureLayout;
    /** @internal */
    _source: TextureSource;
    constructor({ source, layout, label, frame }?: TextureOptions);
    set source(value: TextureSource);
    get source(): TextureSource;
    get layout(): TextureLayout;
    set layout(value: TextureLayout);
    get textureMatrix(): TextureMatrix;
    set frameWidth(value: number);
    get frameWidth(): number;
    set frameHeight(value: number);
    get frameHeight(): number;
    set frameX(value: number);
    get frameX(): number;
    set frameY(value: number);
    get frameY(): number;
    /** The width of the Texture in pixels. */
    get width(): number;
    /** The height of the Texture in pixels. */
    get height(): number;
    /**
     * Destroys this texture
     * @param destroySource - Destroy the source when the texture is destroyed.
     */
    destroy(destroySource?: boolean): void;
    /**
     * @internal
     */
    protected onUpdate(): void;
    /** @deprecated since 8.0.0 */
    get baseTexture(): TextureSource;
    static EMPTY: Texture;
    static WHITE: Texture;
}
