import type { ShaderLike } from '../../shared';
import type { GlRenderer } from '../GlRenderer';
import type { GlProgram } from './GlProgram';
import { GlSystem } from '../system';
import { GlProgramData } from './GlProgramData';
export declare class GlShaderSystem extends GlSystem {
    install(renderer: GlRenderer): void;
    readonly glProgramDatas: Map<number, GlProgramData>;
    currentProgram: GlProgram | null;
    uniforms: {
        projectionMatrix: number[];
        viewMatrix: number[];
    };
    bind(source: ShaderLike | null): void;
    useProgram(glProgram: GlProgram | null): void;
    getGlProgramData(source: GlProgram): GlProgramData;
    protected _createGlProgramData(glProgram: GlProgram): GlProgramData;
    protected _createGlShader(source: string, target: number): WebGLShader;
    updateUniforms(source: ShaderLike): void;
    reset(): void;
    destroy(): void;
}
