export declare type Command = { frag: string; vert: string; blend?: boolean; attributes: { [key: string]: (props: Props) => Attribute; }; uniforms: { [key: string]: (props: Props) => number | number[]; }; textures?: { [key: string]: (props: Props) => ReturnType; }; viewport?: (props: Props) => { width: number; height: number; x: number; y: number; }; primitive: "points" | "lines" | "line strip" | "line loop" | "triangles" | "triangle strip" | "triangle fan"; instances?: (props: Props) => number; offset: (props: Props) => number; count: (props: Props) => number; }; export declare function program(gl: WebGLRenderingContext, { frag, vert, blend, attributes, uniforms, textures, primitive, offset, count, instances, viewport, }: Command): { render: (props: Props) => void; }; export declare type Attribute = { buffer: WebGLBuffer; offset?: number; stride: number; size: number; divisor?: number; }; export declare function texture(gl: WebGLRenderingContext, { data }: { data: TexImageSource; }): { id: WebGLTexture | null; unit: number; textureId: number; }; export declare type Gbuffer = ReturnType; export declare function buffer(gl: WebGLRenderingContext, usage?: number): { gpu: WebGLBuffer; data: (source_: Float32Array) => void; subdata: (source: BufferSource, offset: number) => void; destroy: () => void; length(): number; cpu(len: number): Float32Array; };