import { Attributes } from "graphology-types"; import type Sigma from "../sigma.js"; import type { RenderParams } from "../types.js"; import { InstancedProgramDefinition, ProgramAttributeSpecification, ProgramDefinition, ProgramInfo } from "./utils.js"; export declare abstract class AbstractProgram { constructor(_gl: WebGLRenderingContext, _pickGl: WebGLRenderingContext, _renderer: Sigma); abstract reallocate(capacity: number): void; abstract render(params: RenderParams): void; abstract kill(): void; } export declare abstract class Program implements AbstractProgram, InstancedProgramDefinition { VERTICES: number; VERTEX_SHADER_SOURCE: string; FRAGMENT_SHADER_SOURCE: string; UNIFORMS: ReadonlyArray; ATTRIBUTES: Array; METHOD: number; CONSTANT_ATTRIBUTES: Array; CONSTANT_DATA: number[][]; ATTRIBUTES_ITEMS_COUNT: number; STRIDE: number; renderer: Sigma; array: Float32Array; constantArray: Float32Array; capacity: number; verticesCount: number; normalProgram: ProgramInfo; pickProgram: ProgramInfo | null; isInstanced: boolean; abstract getDefinition(): ProgramDefinition | InstancedProgramDefinition; constructor(gl: WebGLRenderingContext | WebGL2RenderingContext, pickingBuffer: WebGLFramebuffer | null, renderer: Sigma); kill(): void; protected getProgramInfo(name: "normal" | "pick", gl: WebGLRenderingContext | WebGL2RenderingContext, vertexShaderSource: string, fragmentShaderSource: string, frameBuffer: WebGLFramebuffer | null): ProgramInfo; protected bindProgram(program: ProgramInfo): void; protected unbindProgram(program: ProgramInfo): void; protected bindAttribute(attr: ProgramAttributeSpecification, program: ProgramInfo, offset: number, setDivisor?: boolean): number; protected unbindAttribute(attr: ProgramAttributeSpecification, program: ProgramInfo, unsetDivisor?: boolean): void; reallocate(capacity: number): void; hasNothingToRender(): boolean; abstract setUniforms(params: RenderParams, programInfo: ProgramInfo): void; protected renderProgram(params: RenderParams, programInfo: ProgramInfo): void; render(params: RenderParams): void; drawWebGL(method: number, { gl, frameBuffer }: ProgramInfo): void; } declare class _ProgramClass extends Program { getDefinition(): ProgramDefinition | InstancedProgramDefinition; setUniforms(_params: RenderParams, _programInfo: ProgramInfo): undefined; } export type ProgramType = typeof _ProgramClass; export {};