export class TransformFeedback {
    /**
     *
     * @type {String}
     * @private
     */
    private __source;
    /**
     *
     * @type {WebGLProgram}
     * @private
     */
    private __program;
    /**
     * Uniform location pointers from GL context. Order matches order of uniform specification array
     * @type {number[]}
     * @private
     */
    private __uniform_locations;
    /**
     *
     * @type {ParticleAttributeSpecification[]}
     */
    attributes: ParticleAttributeSpecification[];
    /**
     * How much space does a single vertex require
     * @type {number}
     * @private
     */
    private __attribute_byte_size;
    /**
     *
     * @type {ParticleAttributeSpecification[]}
     */
    uniforms: ParticleAttributeSpecification[];
    /**
     *
     * @type {FunctionModuleRegistry}
     * @private
     */
    private __function_registry;
    /**
     *
     * @type {WebGLTransformFeedback}
     * @private
     */
    private __transform_feedback;
    /**
     *
     * @type {WebGL2RenderingContext}
     * @private
     */
    private __context;
    /**
     *
     * @type {number}
     * @private
     */
    private __output_buffer_handle;
    /**
     *
     * @type {number}
     * @private
     */
    private __output_buffer_size;
    /**
     *
     * @return {String}
     */
    getSourceCode(): string;
    /**
     * @param {string} source
     */
    setSourceCode(source: string): void;
    /**
     *
     * @param {ParticleAttributeSpecification[]} attributes
     */
    setAttributes(attributes: ParticleAttributeSpecification[]): void;
    /**
     *
     * @param {ParticleAttributeSpecification[]} attributes
     */
    setUniforms(attributes: ParticleAttributeSpecification[]): void;
    __updateAttributeByteSize(): void;
    /**
     *
     * @param {EmitterAttributeData} attribute_source
     * @private
     */
    private __prepareOutputBuffer;
    /**
     *
     * @param {Array} uniform_values
     * @param {EmitterAttributeData} attributeSource
     */
    execute(uniform_values: any[], attributeSource: EmitterAttributeData): void;
    /**
     *
     * @param {string} name
     * @return {number}
     */
    getUniformIndexByName(name: string): number;
    /**
     *
     * @private
     */
    private __buildUniformPointers;
    /**
     * 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
     */
    readOutput(target: EmitterAttributeData): void;
    isCompiled(): boolean;
    dispose(): void;
    __outpub_buffer_handle: any;
    /**
     *
     * @param {WebGL2RenderingContext} gl
     */
    compile(gl: WebGL2RenderingContext): void;
}
//# sourceMappingURL=TransformFeedback.d.ts.map