import { IAttribute, IElements, IModel, IModelDrawOptions, IModelInitializationOptions, IUniform } from '@antv/l7-core';
import regl from 'l7regl';
/**
 * adaptor for regl.DrawCommand
 */
export default class ReglModel implements IModel {
    private reGl;
    private destroyed;
    private drawCommand;
    private drawPickCommand;
    private drawParams;
    private options;
    private uniforms;
    constructor(reGl: regl.Regl, options: IModelInitializationOptions);
    updateAttributesAndElements(attributes: {
        [key: string]: IAttribute;
    }, elements: IElements): void;
    updateAttributes(attributes: {
        [key: string]: IAttribute;
    }): void;
    addUniforms(uniforms: {
        [key: string]: IUniform;
    }): void;
    draw(options: IModelDrawOptions, pick?: boolean): void;
    destroy(): void;
    /**
     * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#depth-buffer
     */
    private initDepthDrawParams;
    /**
     * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#blending
     */
    private initBlendDrawParams;
    /**
     * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#stencil
     */
    private initStencilDrawParams;
    /**
     * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#culling
     */
    private initCullDrawParams;
    /**
     * 考虑结构体命名, eg:
     * a: { b: 1 }  ->  'a.b'
     * a: [ { b: 1 } ] -> 'a[0].b'
     */
    private extractUniforms;
    private extractUniformsRecursively;
}
