import type { Color, Vector2, Vector3, Vector4 } from 'three/webgpu'; import type { TSLNode } from '../types/tsl.js'; export type UniformPlusType = 'float' | 'vec2' | 'vec3' | 'vec4' | 'color'; /** Runtime values accepted by each `uniformPlus()` node type. */ export interface UniformPlusValueMap { float: number; vec2: Vector2; vec3: Vector3; vec4: Vector4; color: Color; } export type UniformPlusValue = UniformPlusValueMap[UniformPlusType]; export interface UniformPlusOptions { name: string; type: TType; } /** Stable public result surface shared by live uniforms and optimized constants. */ export type UniformPlusResult = TSLNode; /** * Like `uniform()`, but in production emits a const node to reduce uniform bandwidth. * In development, it keeps a live uniform with a readable name for GUI tweaking. */ export declare function uniformPlus(value: UniformPlusValueMap[TType], options: UniformPlusOptions): UniformPlusResult;