import type { Synth } from "../synth"; import { Buffer, BufferProps } from "./buffer"; import { Shader } from "./shader"; export declare const GL_POINTS = 0; export declare const GL_LINES = 1; export declare const GL_LINE_LOOP = 2; export declare const GL_LINE_STRIP = 3; export declare const GL_TRIANGLES = 4; export declare const GL_TRIANGLE_STRIP = 5; export declare const GL_TRIANGLE_FAN = 6; export interface VAOProps { name?: string; attrs?: Record; cells?: Buffer | BufferProps; elements?: number; count?: number; rasterizerDiscard?: boolean; primitive?: number; instances?: number; } export declare const PRIMITIVE_MAP: { triangles: number; points: number; lines: number; line_loop: number; line_strip: number; triangle_strip: number; triangle_fan: number; }; export declare class VAO { synth: Synth; name: string; attributes: Record; indices?: Buffer; _elements: number; _count: number; _primitive: number; _instances: number; _rasterizerDiscard: boolean; buffer: WebGLVertexArrayObject; constructor(synth: Synth, props?: VAOProps & { primitive?: keyof typeof PRIMITIVE_MAP | number; }); hasAttr(name: string): boolean; attr(name: string, attr: Buffer | BufferProps): this; attrs(attrs: Record): this; deleteAttr(name: string, deleteBuffer?: boolean): this; cells(cells: Buffer | BufferProps): this; elements(elements: number): this; count(count: number): this; primitive(primitive: number): this; rasterizerDiscard(rasterizerDiscard?: boolean): this; instances(instances?: number): this; bindVertexAttrs(shader: Shader): this; clear(): void; clone(): VAO; }