import { Program3D } from "./Program3D";
import { IndexBuffer3D } from "./IndexBuffer3D";
import { VertexBuffer3D } from "./VertexBuffer3D";
import { TextureBase } from "./textures/TextureBase";
import { Texture } from "./textures/Texture";
import { CubeTexture } from "./textures/CubeTexture";
import { RectangleTexture } from "./textures/RectangleTexture";
import { VideoTexture } from "./textures/VideoTexture";
import { EventDispatcher } from "../events/EventDispatcher";
import { Matrix3D } from "../geom/Matrix3D";
import { ByteArray } from "../utils/ByteArray";
import { Rectangle } from "../geom/Rectangle";
import { BitmapData } from "../display/BitmapData";
export declare class Context3D extends EventDispatcher {
    canvas: HTMLCanvasElement;
    gl: WebGLRenderingContext;
    private currentProgram;
    private currentTextures;
    private currentVBufs;
    constructor();
    static get supportsVideoTexture(): boolean;
    get driverInfo(): string;
    dispose(recreate?: boolean): void;
    get enableErrorChecking(): boolean;
    set enableErrorChecking(toggle: boolean);
    configureBackBuffer(width: number, height: number, antiAlias: number, enableDepthAndStencil?: boolean, wantsBestResolution?: boolean): void;
    clear(red?: number, green?: number, blue?: number, alpha?: number, depth?: number, stencil?: number, mask?: number): void;
    drawTriangles(indexBuffer: IndexBuffer3D, firstIndex?: number, numTriangles?: number): void;
    present(): void;
    setProgram(program: Program3D): void;
    setProgramConstantsFromVector(programType: string, firstRegister: number, data: number[], numRegisters?: number): void;
    setProgramConstantsFromMatrix(programType: string, firstRegister: number, matrix: Matrix3D, transposedMatrix?: boolean): void;
    setProgramConstantsFromByteArray(programType: string, firstRegister: number, numRegisters: number, data: ByteArray, byteArrayOffset: number): void;
    setProgramConstantsFromVectorGL(name: string, data: number[], numRegisters?: number): void;
    setProgramConstantsFromMatrixGL(name: string, matrix: Matrix3D, transposedMatrix?: boolean): void;
    setProgramConstantsFromByteArrayGL(name: string, numRegisters: number, data: ByteArray, byteArrayOffset: number): void;
    private getUniformLocationName;
    private getUniformLocation;
    setVertexBufferAt(index: number, buffer: VertexBuffer3D, bufferOffset?: number, format?: string): void;
    setVertexBufferAtGL(name: string, buffer: VertexBuffer3D, bufferOffset?: number, format?: string): void;
    setBlendFactors(sourceFactor: string, destinationFactor: string): void;
    setColorMask(red: boolean, green: boolean, blue: boolean, alpha: boolean): void;
    setDepthTest(depthMask: boolean, passCompareMode: string): void;
    setTextureAt(sampler: number, texture: TextureBase): void;
    setRenderToTexture(texture: TextureBase, enableDepthAndStencil?: boolean, antiAlias?: number, surfaceSelector?: number, colorOutputIndex?: number): void;
    setRenderToBackBuffer(): void;
    private setRenderToTextureInternal;
    setCulling(triangleFaceToCull: string): void;
    setStencilActions(triangleFace?: string, compareMode?: string, actionOnBothPass?: string, actionOnDepthFail?: string, actionOnDepthPassStencilFail?: string): void;
    setStencilReferenceValue(referenceValue: number, readMask?: number, writeMask?: number): void;
    setScissorRectangle(rectangle: Rectangle): void;
    createVertexBuffer(numVertices: number, data32PerVertex: number, bufferUsage?: string): VertexBuffer3D;
    createIndexBuffer(numIndices: number, bufferUsage?: string): IndexBuffer3D;
    createTexture(width: number, height: number, format: string, optimizeForRenderToTexture: boolean, streamingLevels?: number): Texture;
    createCubeTexture(size: number, format: string, optimizeForRenderToTexture: boolean, streamingLevels?: number): CubeTexture;
    createRectangleTexture(width: number, height: number, format: string, optimizeForRenderToTexture: boolean): RectangleTexture;
    createProgram(): Program3D;
    drawToBitmapData(destination: BitmapData): void;
    setSamplerStateAt(sampler: number, wrap: string, filter: string, mipfilter: string): void;
    get profile(): string;
    private setTextureInternal;
    setTextureAtGL(name: string, sampler: number, texture: Texture): void;
    private setCubeTextureInternal;
    private setRectangleTextureInternal;
    private setVideoTextureInternal;
    get backBufferWidth(): number;
    get backBufferHeight(): number;
    get maxBackBufferWidth(): number;
    set maxBackBufferWidth(width: number);
    get maxBackBufferHeight(): number;
    set maxBackBufferHeight(height: number);
    createVideoTexture(): VideoTexture;
}
