/**
 * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
import { Mat3, Mat4, Vec2, Vec3, Vec4 } from '../../mol-math/linear-algebra';
import { ValueCell } from '../../mol-util';
import { GLRenderingContext } from './compat';
import { RenderableSchema } from '../../mol-gl/renderable/schema';
import { ValueOf } from '../../mol-util/type-helpers';
export declare type UniformKindValue = {
    'b': boolean;
    'b[]': boolean[];
    'f': number;
    'f[]': number[];
    'i': number;
    'i[]': number[];
    'v2': Vec2;
    'v2[]': number[];
    'v3': Vec3;
    'v3[]': number[];
    'v4': Vec4;
    'v4[]': number[];
    'm3': Mat3;
    'm3[]': number[];
    'm4': Mat4;
    'm4[]': number[];
    't': number;
    't[]': number[];
};
export declare type UniformKind = keyof UniformKindValue;
export declare type UniformType = ValueOf<UniformKindValue>;
export declare type UniformValues = {
    [k: string]: ValueCell<UniformType>;
};
export declare type UniformsList = [string, ValueCell<UniformType>][];
export declare function getUniformType(gl: GLRenderingContext, kind: UniformKind): number | undefined;
export declare type UniformSetter = (gl: GLRenderingContext, location: number, value: any) => void;
export declare type UniformSetters = {
    [k: string]: UniformSetter;
};
export declare function getUniformSetters(schema: RenderableSchema): UniformSetters;
export declare function getUniformGlslType(kind: UniformKind): string;
export declare function isUniformValueScalar(kind: UniformKind): boolean;
export declare function cloneUniformValues(uniformValues: UniformValues): UniformValues;
