import type { AlphaMode, GlRenderer, ScaleMode, TextureFormat, TextureLikeObject, TextureLikeReactiveObject, TextureSource, WrapMode } from '../../../core';
import { Resource } from '../../../core';
export interface Texture2DProperties<T extends TextureSource = TextureSource> extends Partial<Omit<TextureLikeObject, 'source'>> {
    source?: T;
}
export declare class Texture2D<T extends TextureSource = TextureSource> extends Resource implements TextureLikeReactiveObject {
    static get EMPTY(): Texture2D;
    static get WHITE(): Texture2D;
    static get BLACK(): Texture2D;
    static get RED(): Texture2D;
    static get GREEN(): Texture2D;
    static get BLUE(): Texture2D;
    uploadMethodId: string;
    source: T;
    width: number;
    height: number;
    pixelRatio: number;
    format: TextureFormat;
    alphaMode: AlphaMode;
    mipLevelCount: number;
    mipmap: boolean;
    addressModeU: WrapMode;
    addressModeV: WrapMode;
    addressModeW: WrapMode;
    magFilter: ScaleMode;
    minFilter: ScaleMode;
    mipmapFilter: ScaleMode;
    isPowerOfTwo: boolean;
    get sourceWidth(): number;
    get sourceHeight(): number;
    get pixelWidth(): number;
    get pixelHeight(): number;
    constructor(properties?: Texture2DProperties<T>);
    isValid(): boolean;
    protected _updateProperty(key: string, value: any, oldValue: any): void;
    updateSize(): void;
    activate(renderer: GlRenderer, location?: number): boolean;
    inactivate(renderer: GlRenderer): void;
    destroy(): void;
}
