import type { ReactNode } from 'react'; import type { UniformControl } from '../../../catalog/shaders'; /** One field's value: a scalar uniform or a vecN (e.g. an RGB triple). */ export type FieldValue = number | readonly number[]; type FormValues = Readonly>; /** The live form state a field reads/writes via `useField`. */ export type ControlFormContextValue = { readonly values: FormValues; readonly setField: (key: string, value: FieldValue) => void; readonly disabled: boolean; /** The form's test-id scope (`kld..`); fields append their uniform. */ readonly path: string; /** The control descriptors, so `` can resolve one by name. */ readonly controls?: readonly UniformControl[]; }; export declare const ControlFormContext: import("react").Context; export type ControlFormProps = { /** The layer id this form patches; the discriminator in the emitted patch. */ readonly id: string; /** The layer's baked uniforms; the form seeds from these at mount. */ readonly uniforms: FormValues; /** Emitted (debounced) with the layer id and the current edited uniforms. */ readonly onPatch: (patch: { id: string; uniforms: Record; }) => void; /** Disables every field in the form (read by `useField`). */ readonly disabled?: boolean; /** Trailing-edge debounce for the emit, in ms. 0 (default) emits per change. */ readonly debounceMs?: number; /** The shader's control descriptors; lets children use ``. */ readonly controls?: readonly UniformControl[]; readonly children: ReactNode; }; export declare function ControlForm({ id, uniforms, onPatch, disabled, debounceMs, controls, children, }: ControlFormProps): import("react/jsx-runtime").JSX.Element; export {}; //# sourceMappingURL=control-form.d.ts.map