import type { TSLStorageNode } from '../../types/tsl.js'; export interface GPUInteractionBufferOptions { maxColliders: number; maxGridLinks: number; maxGlobalColliders: number; } export interface GPUInteractionBufferArrays { colliderMeta: Uint32Array; colliderSource: Uint32Array; colliderPosition: Float32Array; colliderQuaternion: Float32Array; colliderLinearVelocity: Float32Array; colliderAngularVelocity: Float32Array; colliderShapeData: Float32Array; colliderMaterial: Float32Array; colliderAabbMinimum: Float32Array; colliderAabbMaximum: Float32Array; colliderScanCount: Uint32Array; gridCellOffsets: Uint32Array; gridCellCursors: Uint32Array; gridColliderIds: Uint32Array; gridLinkCount: Uint32Array; globalColliderIds: Uint32Array; globalColliderCount: Uint32Array; } export interface GPUInteractionBufferNodes { colliderMeta: TSLStorageNode<'uvec4'>; colliderSource: TSLStorageNode<'uvec4'>; colliderPosition: TSLStorageNode<'vec4'>; colliderQuaternion: TSLStorageNode<'vec4'>; colliderLinearVelocity: TSLStorageNode<'vec4'>; colliderAngularVelocity: TSLStorageNode<'vec4'>; colliderShapeData: TSLStorageNode<'vec4'>; colliderMaterial: TSLStorageNode<'vec4'>; colliderAabbMinimum: TSLStorageNode<'vec4'>; colliderAabbMaximum: TSLStorageNode<'vec4'>; colliderScanCount: TSLStorageNode<'uint'>; gridCellOffsets: TSLStorageNode<'uint'>; gridCellCursors: TSLStorageNode<'uint'>; gridColliderIds: TSLStorageNode<'uint'>; gridLinkCount: TSLStorageNode<'uint'>; globalColliderIds: TSLStorageNode<'uint'>; globalColliderCount: TSLStorageNode<'uint'>; } export interface GPUInteractionAtomicBufferNodes { gridCellOffsets: TSLStorageNode<'uint'>; gridCellCursors: TSLStorageNode<'uint'>; gridLinkCount: TSLStorageNode<'uint'>; globalColliderCount: TSLStorageNode<'uint'>; } export interface GPUInteractionColliderRecord { meta: ArrayLike; source: ArrayLike; position: ArrayLike; quaternion: ArrayLike; linearVelocity: ArrayLike; angularVelocity: ArrayLike; shapeData: ArrayLike; material: ArrayLike; aabbMinimum: ArrayLike; aabbMaximum: ArrayLike; } declare class GPUInteractionBuffers { maxColliders: number; maxGridLinks: number; maxGlobalColliders: number; arrays: GPUInteractionBufferArrays; nodes: GPUInteractionBufferNodes; atomic: GPUInteractionAtomicBufferNodes; constructor(options: GPUInteractionBufferOptions, cellCount: number); setScanCount(count: number): void; clearRange(base: number, capacity: number): void; writeCollider(slot: number, collider: GPUInteractionColliderRecord): void; markRangeUpdated(): void; dispose(): void; } export { GPUInteractionBuffers };