import ProgramConfiguration from '../data/program_configuration';
import Context from '../gl/context';
import type SegmentVector from '../data/segment';
import type VertexBuffer from '../gl/vertex_buffer';
import type IndexBuffer from '../gl/index_buffer';
import type DepthMode from '../gl/depth_mode';
import type StencilMode from '../gl/stencil_mode';
import type ColorMode from '../gl/color_mode';
import type CullFaceMode from '../gl/cull_face_mode';
import type { UniformBindings, UniformValues, UniformLocations } from './uniform_binding';
import type { BinderUniform } from '../data/program_configuration';
export declare type DrawMode = WebGLRenderingContext['LINES'] | WebGLRenderingContext['TRIANGLES'] | WebGLRenderingContext['LINE_STRIP'];
declare class Program<Us extends UniformBindings> {
    program: WebGLProgram;
    attributes: {
        [_: string]: number;
    };
    numAttributes: number;
    fixedUniforms: Us;
    binderUniforms: Array<BinderUniform>;
    failedToCreate: boolean;
    constructor(context: Context, name: string, source: {
        fragmentSource: string;
        vertexSource: string;
        staticAttributes: Array<string>;
        staticUniforms: Array<string>;
    }, configuration: ProgramConfiguration | undefined | null, fixedUniforms: (b: Context, a: UniformLocations) => Us, showOverdrawInspector: boolean);
    draw(context: Context, drawMode: DrawMode, depthMode: Readonly<DepthMode>, stencilMode: Readonly<StencilMode>, colorMode: Readonly<ColorMode>, cullFaceMode: Readonly<CullFaceMode>, uniformValues: UniformValues<Us>, layerID: string, layoutVertexBuffer: VertexBuffer, indexBuffer: IndexBuffer, segments: SegmentVector, currentProperties?: any, zoom?: number | null, configuration?: ProgramConfiguration | null, dynamicLayoutBuffer?: VertexBuffer | null, dynamicLayoutBuffer2?: VertexBuffer | null): void;
}
export default Program;
//# sourceMappingURL=program.d.ts.map