import type { LiveComponent, LiveElement } from '@use-gpu/live'; import type { ElementType, TensorArray, VectorLike, Emitter } from '@use-gpu/core'; export type SamplerProps = { /** Sample count up to [width, height, depth, layers] */ size?: number[]; /** Shorthand for size=[length] */ length?: number; /** Axis to sample on (1D) */ axis?: string; /** Axes to sample on (2D+) */ axes?: string; /** Sample origin to maintain alignment to */ origin?: VectorLike; /** WGSL type per sample */ format?: string; /** Input emitter expression */ expr?: Emitter; /** Input range to sample on each axis. Use RangeContext if omitted. */ range?: [number, number][]; /** Extra padding samples to add outside the input range. */ padding?: number; /** Emit N items per `expr` call. Output size is `[items, ...size]` if > 1. */ items?: number; /** Emit 0 or N items per `expr` call. Output size is `[N]` or `[items, N]`. */ sparse?: boolean; /** Use centered samples (0.5, 1.5, ..., N-0.5) instead of edge-to-edge samples (0, 1, ..., N). */ centered?: boolean[] | boolean; /** Add current indices `i`, `j`, `k`, `l` to the `expr` arguments. */ index?: boolean; /** Add current `TimeContext` to the `expr` arguments. */ time?: boolean; /** Resample `data` or `expr` on every animation frame. */ live?: boolean; /** Inject into DataContext under this key(s) */ as?: S; /** Omit to provide data context instead. */ render?: S extends any[] ? (data: Record, TensorArray>) => LiveElement : (data: TensorArray) => LiveElement; children?: LiveElement | ((S extends any[] ? (data: Record, TensorArray>) => LiveElement : (data: TensorArray) => LiveElement)); }; /** Up-to-4D array of a WGSL type. Samples a given `expr` on the given `range`. */ export declare const Sampler: LiveComponent>; /** @hidden */ export declare const Sampled: LiveComponent>;