import { PolyScene } from '../PolyScene';
import { Vector2 } from 'three';
import { IUniformN, IUniformTexture, IUniformV2 } from '../../nodes/utils/code/gl/Uniforms';
import { GlParamConfig } from '../../nodes/gl/code/utils/GLParamConfig';
import { ParamType } from '../../poly/ParamType';
import { PolyDictionary } from '../../../types/GlobalTypes';
import { IUniforms } from '../../../core/geometry/Material';
export declare enum UniformName {
    TIME = "time",
    RESOLUTION = "resolution",
    SPOTLIGHTS_RAYMARCHING = "spotLightsRayMarching",
    DIRECTIONALLIGHTS_RAYMARCHING = "directionalLightsRayMarching",
    POINTLIGHTS_RAYMARCHING = "pointLightsRayMarching"
}
export interface IUniformsWithTime extends IUniforms {
    time: IUniformN;
}
export interface IUniformsWithResolution extends IUniforms {
    resolution: IUniformV2;
}
interface AddUniformOptions {
    paramConfigs: readonly GlParamConfig<ParamType>[];
    additionalTextureUniforms: PolyDictionary<IUniformTexture>;
    timeDependent: boolean;
    resolutionDependent: boolean;
    raymarchingLightsWorldCoordsDependent: boolean;
}
export declare class UniformsController {
    private scene;
    constructor(scene: PolyScene);
    addUniforms(uniforms: IUniforms, options: AddUniformOptions): void;
    addTimeUniform(uniforms: IUniforms): void;
    removeTimeUniform(uniforms: IUniforms): void;
    timeUniformValue(): number;
    addResolutionUniforms(uniforms: IUniforms): void;
    removeResolutionUniform(uniforms: IUniforms): void;
    updateResolution(resolution: Vector2, pixelRatio: number): void;
    addRaymarchingUniforms(uniforms: IUniforms): void;
    removeRaymarchingUniform(uniforms: IUniforms): void;
}
export {};
