import type { LiveComponent, LiveElement } from '@use-gpu/live'; import type { FromSchema, TypedArray, StorageSource, LambdaSource, DataSchema } from '@use-gpu/core'; type BooleanList = boolean | boolean[] | ((i: number) => boolean); export type SegmentsInfo = { positions: TypedArray; dims: number; chunks: number[] | TypedArray; groups: number[] | TypedArray | null; loops: boolean[] | boolean; starts: boolean[] | boolean; ends: boolean[] | boolean; }; export type SegmentDecorator = (args: SegmentsInfo) => Record; export type DataProps = { /** WGSL schema of input data + accessors */ schema: S; /** Input data, array of structs of values/arrays, or 1 struct, if data is not virtualized */ data?: Record | (Record)[]; /** Input data accessors, if data is virtualized */ virtual?: Record any>; /** Input length, if data is virtualized */ count?: number; /** Input items to skip */ skip?: number; /** Input version, if data is virtualized. Controls re-upload if set. */ version?: number; /** Resample data on every animation frame. */ live?: boolean; /** Data will never change */ immutable?: boolean; /** Global flag or per item `isLoop` accessor */ loop?: BooleanList; /** Global flag or per item `hasStart` accessor */ start?: BooleanList; /** Global flag or per item `hasEnd` accessor */ end?: BooleanList; /** Segment decorator(s) */ segments?: SegmentDecorator; /** Segments from tensor dimensions */ tensor?: number[]; /** Receive 1 source per field, in virtual struct-of-array format. Leave empty to yeet sources instead. */ render?: (sources: FromSchema) => LiveElement; children?: (sources: FromSchema) => LiveElement; }; /** Aggregate array-of-structs with fields `T | T[] | T[][]` into grouped storage sources. */ export declare const Data: LiveComponent>; export {};