import { ListItemFieldConfig, MousePositionConfig, PropConfig, PropUIConfig } from '../types'; /** Identity marker transform — how the bridge/renderer recognise a list prop (the colorStops precedent). */ export declare const listPropTransform: (value: unknown) => unknown; export interface ListPropSpec { item: Record; maxItems: number; minItems?: number; itemLabel?: string; } /** Declare a list prop. `default` is the initial items; the spec rides inside `ui`. */ export declare function listPropConfig>(spec: ListPropSpec, cfg: { default: Item[]; description: string; label: string; group: string; }): PropConfig; /** The list spec of a prop config (or metadata entry), else null. */ export declare function listSpecOf(config: { transform?: unknown; ui?: PropUIConfig; } | undefined): ListPropSpec | null; export declare const listFieldName: (prop: string, field: string) => string; export declare const listCountName: (prop: string) => string; /** Is this field value a mouse-position driver standing in for a position? */ export declare function isPositionDriver(value: unknown): value is MousePositionConfig; /** The path key a list element's driver state is filed under: `lights.0.position`. */ export declare const listDriverPath: (prop: string, index: number, field: string) => string; /** Parse a list driver path back into its parts (null for a plain prop name). */ export declare function parseListDriverPath(key: string): { prop: string; index: number; field: string; } | null; /** Resolved (transformed, driver-substituted) field values — what CPU consumers read. */ export type ResolvedListItem = Record; export interface ResolveListOptions { /** Colour string → linear rgba (the bridge's `colorToRGBA`). */ color: (value: string) => [number, number, number, number]; /** Live value for a driven position field (already in the stored `(x, 1−y)` convention), else undefined. */ drivenPosition?: (index: number, field: string, driver: MousePositionConfig) => { x: number; y: number; } | undefined; } /** * Resolve raw items into transformed values: positions in the stored `(x, 1−y)` convention * (drivers substituted by their live value, or parked at their origin before the first tick), * colours as linear rgba, numbers/booleans as numbers. Items beyond `maxItems` are dropped; * missing fields take the item spec's default. */ export declare function resolveListItems(items: unknown, spec: ListPropSpec, opts: ResolveListOptions): ResolvedListItem[]; /** A resolved field as its vec4 uniform lane. */ export declare function listFieldLane(value: ResolvedListItem[string]): [number, number, number, number]; /** * Pack resolved items into the fixed-size per-field lane arrays (FLAT `maxItems × 4` floats — the * uniform store's array-handle mirror format) + the count. */ export declare function packList(items: ResolvedListItem[], spec: ListPropSpec): { count: number; fields: Record; }; /** Does any item carry a position driver? (The renderer re-packs such lists per frame.) */ export declare function listHasDrivers(items: unknown, spec: ListPropSpec): boolean; //# sourceMappingURL=listProps.d.ts.map