import { Expr } from '../gpu/contract'; /** One item's field accessors at a loop index (the packed vec4 lane, decoded per kind). */ export interface ListItemAt { /** `position` fields: vec2 in the stored (x, 1−y) convention — what a position uniform holds. */ position: (field: string) => Expr; /** `color` fields: linear rgba vec4. */ color: (field: string) => Expr; /** `number` / `boolean` fields: f32 (booleans are ±1). */ number: (field: string) => Expr; } export interface ListRef { /** The live item count (f32 uniform). */ count: Expr; /** Field accessors for item `i` (an Expr indexing the lane arrays). */ at: (i: Expr) => ListItemAt; } /** Bind a list prop's uniforms. */ export declare function listOf(params: { uniforms: Record; }, prop: string): ListRef; /** * Sum a per-item expression over a list: `var acc = zero; for (i < count) { acc += body(i) }`. * `zero` sets the accumulator type (`'f32'` or `'vec3f'`). Statement machinery — see the module * header for the hoisting rule. */ export declare function accumulate(list: ListRef, body: (i: Expr) => Expr, opts?: { zero?: 'f32' | 'vec3f'; deps?: Expr[]; hint?: string; }): Expr; //# sourceMappingURL=lists.d.ts.map