/**
 *
 * @param {WebGLRenderingContext|WebGL2RenderingContext} gl
 * @param shader
 * @param type
 * @return {string}
 */
export function getShaderErrors(gl: WebGLRenderingContext | WebGL2RenderingContext, shader: any, type: any): string;
/**
 * Fragment shader is there to satisfy requirement of 2 shaders to compile shader program in WebGL, in actuality it is unused
 * @type {string}
 */
export const WRITE_WHITE_FRAGMENT_SHADER: string;
export class GLSLSimulationShader {
    /**
     * @param {NodeGraph} graph
     * @param {ParticleAttributeSpecification[]} attributes
     * @param {ParticleAttributeSpecification[]} uniforms
     * @returns {GLSLSimulationShader}
     */
    static from(graph: NodeGraph, attributes?: ParticleAttributeSpecification[], uniforms?: ParticleAttributeSpecification[]): GLSLSimulationShader;
    /**
     *
     * @type {NodeGraph}
     */
    graph: NodeGraph;
    /**
     *
     * @type {FunctionModuleRegistry}
     * @private
     */
    private __function_registry;
    __tf: TransformFeedback;
    /**
     *
     * @param {FunctionModuleRegistry} function_registry
     */
    setFunctionRegistry(function_registry: FunctionModuleRegistry): void;
    /**
     *
     * @param {NodeGraph} graph
     */
    setGraph(graph: NodeGraph): void;
    /**
     *
     * @param {ParticleAttributeSpecification[]} attributes
     */
    setAttributes(attributes: ParticleAttributeSpecification[]): void;
    get attributes(): ParticleAttributeSpecification[];
    /**
     *
     * @param {ParticleAttributeSpecification[]} attributes
     */
    setUniforms(attributes: ParticleAttributeSpecification[]): void;
    get uniforms(): ParticleAttributeSpecification[];
    /**
     *
     * @return {String}
     */
    getSourceCode(): string;
    build(): void;
    /**
     *
     * @param {Array} uniform_values
     * @param {EmitterAttributeData} attributeSource
     */
    execute(uniform_values: any[], attributeSource: EmitterAttributeData): void;
    /**
     * GL context uses it's own internal buffers that are not shared with JS context, because of this - it is necessary to copy data out
     * @param {EmitterAttributeData} target
     * @private
     */
    private __copyFromOutput;
    dispose(): void;
    /**
     *
     * @param {WebGL2RenderingContext} gl
     */
    compile(gl: WebGL2RenderingContext): void;
}
import { TransformFeedback } from "./TransformFeedback.js";
import { ParticleAttributeSpecification } from "../particle/ParticleAttributeSpecification.js";
//# sourceMappingURL=GLSLSimulationShader.d.ts.map