import { TgdCodeBloc } from "../shader/code";
import { WebglAttributeType, WebglUniformType } from "..";
import { TgdProgram } from "../program";
export declare abstract class TgdMaterial {
    /**
     * Example:
     * ```
     * {
     *   varNormal: "vec3",
     *   varUV: "vec2"
     * }
     * ```
     */
    readonly varyings: {
        [name: string]: WebglAttributeType;
    };
    readonly uniforms: {
        [name: string]: WebglUniformType;
    };
    /**
     * The code of a `vec4 applyMaterial()` function.
     */
    abstract readonly fragmentShaderCode: TgdCodeBloc;
    /**
     * The code of a `void applyMaterial()` function.
     */
    abstract readonly vertexShaderCode: TgdCodeBloc;
    /**
     * Body of the function `vec4 getPosition(vec4 pos)` of the vertex shader.
     *
     * By default, this body is `return pos;`.
     * Yo can use this code to apply any transformation on the vertex position
     * before convertion to screen space.
     */
    vertexShaderCodeForGetPosition?: TgdCodeBloc;
    abstract setUniforms(program: TgdProgram, time: number, delay: number): void;
}
//# sourceMappingURL=material.d.ts.map