import { ParamDef } from '@pylinka/graph'; /** * Knob store implementing the KnobBus contract (REQUIREMENTS.md §11.5). * Holds the current vec4 value per named knob; systems pull these into their * value table each frame. `set`/`get` are O(1) and allocation-free once a knob * is registered (registration happens at construction from the ParamDefs, or * lazily on first set of an unknown name — a create-path allocation). */ interface KnobBus { set(name: string, x: number, y?: number, z?: number, w?: number): void; get(name: string): number; } declare class KnobStore implements KnobBus { private readonly values; constructor(params?: ParamDef[]); set(name: string, x: number, y?: number, z?: number, w?: number): void; get(name: string): number; /** Read all four components (used by the uniform flush). */ vec4(name: string, out: Float32Array, offset: number): void; has(name: string): boolean; } export { KnobStore as K, type KnobBus as a };