declare const GPUInteractionShape: Readonly<{ readonly SPHERE: 0; readonly BOX: 1; readonly CAPSULE: 2; readonly PLANE: 3; readonly TORUS: 4; }>; declare const GPUInteractionSourceKind: Readonly<{ readonly NONE: 0; readonly AVBD: 1; readonly PACKED: 2; readonly CUSTOM: 3; }>; declare const GPUInteractionColliderFlag: Readonly<{ readonly ACTIVE: 1; readonly STATIC: 2; readonly KINEMATIC: 4; readonly DYNAMIC: 8; readonly AFFECT_BOIDS: 16; readonly AFFECT_FLUID: 32; readonly AFFECT_SMOKE: 64; readonly FEEDBACK: 128; }>; declare const GPUInteractionFeedbackSlot: Readonly<{ readonly NONE: 4294967295; }>; declare const GPU_INTERACTION_COLLIDER_BYTES = 160; declare const AFFECT_FLAG_BY_NAME: Readonly<{ readonly boids: 16; readonly fluid: 32; readonly smoke: 64; }>; type GPUInteractionShapeCode = typeof GPUInteractionShape[keyof typeof GPUInteractionShape]; type GPUInteractionSourceKindCode = typeof GPUInteractionSourceKind[keyof typeof GPUInteractionSourceKind]; type GPUInteractionColliderFlagValue = typeof GPUInteractionColliderFlag[keyof typeof GPUInteractionColliderFlag]; type GPUInteractionAffectsTarget = keyof typeof AFFECT_FLAG_BY_NAME; type GPUInteractionMotionType = 'static' | 'kinematic' | 'dynamic' | number; type GPUInteractionVector3Input = readonly number[] | (ArrayBufferView & ArrayLike); type GPUInteractionVector3 = [number, number, number]; type GPUInteractionShapeData = [number, number, number, number]; interface GPUInteractionIntegerAssertionOptions { allowZero?: boolean | undefined; } interface GPUInteractionShapeNormalizationOptions { allowTorus?: boolean | undefined; } interface GPUInteractionSphereShapeDescriptor { type: 'sphere'; radius: number; } interface GPUInteractionBoxShapeDescriptor { type: 'box'; halfExtents: GPUInteractionVector3Input; } interface GPUInteractionCapsuleShapeDescriptor { type: 'capsule'; radius: number; halfHeight: number; } interface GPUInteractionPlaneShapeDescriptor { type: 'plane'; normal: GPUInteractionVector3Input; constant?: number | undefined; } interface GPUInteractionTorusShapeDescriptor { type: 'torus'; majorRadius: number; tubeRadius: number; } type GPUInteractionShapeDescriptor = GPUInteractionSphereShapeDescriptor | GPUInteractionBoxShapeDescriptor | GPUInteractionCapsuleShapeDescriptor | GPUInteractionPlaneShapeDescriptor | GPUInteractionTorusShapeDescriptor; type GPUInteractionNormalizedSphereShape = Readonly<{ type: 'sphere'; shapeType: typeof GPUInteractionShape.SPHERE; data: GPUInteractionShapeData; }>; type GPUInteractionNormalizedBoxShape = Readonly<{ type: 'box'; shapeType: typeof GPUInteractionShape.BOX; data: GPUInteractionShapeData; }>; type GPUInteractionNormalizedCapsuleShape = Readonly<{ type: 'capsule'; shapeType: typeof GPUInteractionShape.CAPSULE; data: GPUInteractionShapeData; }>; type GPUInteractionNormalizedPlaneShape = Readonly<{ type: 'plane'; shapeType: typeof GPUInteractionShape.PLANE; data: GPUInteractionShapeData; }>; type GPUInteractionNormalizedTorusShape = Readonly<{ type: 'torus'; shapeType: typeof GPUInteractionShape.TORUS; data: GPUInteractionShapeData; }>; type GPUInteractionNormalizedShape = GPUInteractionNormalizedSphereShape | GPUInteractionNormalizedBoxShape | GPUInteractionNormalizedCapsuleShape | GPUInteractionNormalizedPlaneShape | GPUInteractionNormalizedTorusShape; type GPUInteractionNormalizedShapeFor = TShape extends GPUInteractionSphereShapeDescriptor ? GPUInteractionNormalizedSphereShape : TShape extends GPUInteractionBoxShapeDescriptor ? GPUInteractionNormalizedBoxShape : TShape extends GPUInteractionCapsuleShapeDescriptor ? GPUInteractionNormalizedCapsuleShape : TShape extends GPUInteractionPlaneShapeDescriptor ? GPUInteractionNormalizedPlaneShape : GPUInteractionNormalizedTorusShape; declare function assertPositiveInteger(value: unknown, name: string, { allowZero }?: GPUInteractionIntegerAssertionOptions): number; declare function normalizeInteractionShape(shape: TShape, options?: GPUInteractionShapeNormalizationOptions): GPUInteractionNormalizedShapeFor; declare function getAffectsFlags(affects?: readonly GPUInteractionAffectsTarget[]): number; declare function getMotionFlag(motionType: GPUInteractionMotionType): GPUInteractionColliderFlagValue; export { GPUInteractionShape, GPUInteractionSourceKind, GPUInteractionColliderFlag, GPUInteractionFeedbackSlot, GPU_INTERACTION_COLLIDER_BYTES, assertPositiveInteger, normalizeInteractionShape, getAffectsFlags, getMotionFlag, }; export type { GPUInteractionAffectsTarget, GPUInteractionBoxShapeDescriptor, GPUInteractionCapsuleShapeDescriptor, GPUInteractionColliderFlagValue, GPUInteractionIntegerAssertionOptions, GPUInteractionMotionType, GPUInteractionNormalizedBoxShape, GPUInteractionNormalizedCapsuleShape, GPUInteractionNormalizedPlaneShape, GPUInteractionNormalizedShape, GPUInteractionNormalizedShapeFor, GPUInteractionNormalizedSphereShape, GPUInteractionNormalizedTorusShape, GPUInteractionPlaneShapeDescriptor, GPUInteractionShapeCode, GPUInteractionShapeData, GPUInteractionShapeDescriptor, GPUInteractionShapeNormalizationOptions, GPUInteractionSourceKindCode, GPUInteractionSphereShapeDescriptor, GPUInteractionTorusShapeDescriptor, GPUInteractionVector3, GPUInteractionVector3Input, };