import type Context from '../gl/context';
import type { RGBAImage, AlphaImage } from '../util/image';
export declare type TextureFormat = WebGLRenderingContext['RGBA'] | WebGLRenderingContext['ALPHA'];
export declare type TextureFilter = WebGLRenderingContext['LINEAR'] | WebGLRenderingContext['LINEAR_MIPMAP_NEAREST'] | WebGLRenderingContext['NEAREST'];
export declare type TextureWrap = WebGLRenderingContext['REPEAT'] | WebGLRenderingContext['CLAMP_TO_EDGE'] | WebGLRenderingContext['MIRRORED_REPEAT'];
declare type EmptyImage = {
    width: number;
    height: number;
    data: null;
};
declare type DataTextureImage = RGBAImage | AlphaImage | EmptyImage;
export declare type TextureImage = HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageData | ImageBitmap | DataTextureImage;
declare class Texture {
    context: Context;
    size: [number, number];
    texture: WebGLTexture;
    format: TextureFormat;
    filter: TextureFilter | undefined | null;
    wrap: TextureWrap | undefined | null;
    useMipmap: boolean;
    constructor(context: Context, image: TextureImage, format: TextureFormat, options?: {
        premultiply?: boolean;
        useMipmap?: boolean;
    } | null);
    update(image: TextureImage, options?: {
        premultiply?: boolean;
        useMipmap?: boolean;
    } | null, position?: {
        x: number;
        y: number;
    }): void;
    bind(filter: TextureFilter, wrap: TextureWrap, minFilter?: TextureFilter | null): void;
    isSizePowerOfTwo(): boolean;
    destroy(): void;
}
export default Texture;
//# sourceMappingURL=texture.d.ts.map