///
import { XIntersection } from "@coconut-xr/xinteraction";
import { MutableRefObject, RefObject } from "react";
import { Color, ColorRepresentation, MeshBasicMaterial, Object3D, PositionalAudio as PositionalAudioImpl } from "three";
import React from "react";
export declare const CursorBasicMaterial: (new (...args: any[]) => {
onBeforeCompile(shader: import("three").Shader, renderer: import("three").WebGLRenderer): void;
alphaTest: number;
alphaToCoverage: boolean;
blendDst: import("three").BlendingDstFactor;
blendDstAlpha: number | null;
blendEquation: import("three").BlendingEquation;
blendEquationAlpha: number | null;
blending: import("three").Blending;
blendSrc: 210 | import("three").BlendingDstFactor;
blendSrcAlpha: number | null;
clipIntersection: boolean;
clippingPlanes: any;
clipShadows: boolean;
colorWrite: boolean;
defines: {
[key: string]: any;
} | undefined;
depthFunc: import("three").DepthModes;
depthTest: boolean;
depthWrite: boolean;
id: number;
stencilWrite: boolean;
stencilFunc: import("three").StencilFunc;
stencilRef: number;
stencilWriteMask: number;
stencilFuncMask: number;
stencilFail: import("three").StencilOp;
stencilZFail: import("three").StencilOp;
stencilZPass: import("three").StencilOp;
readonly isMaterial: true;
name: string;
needsUpdate: boolean;
opacity: number;
polygonOffset: boolean;
polygonOffsetFactor: number;
polygonOffsetUnits: number;
precision: "highp" | "mediump" | "lowp" | null;
premultipliedAlpha: boolean;
dithering: boolean;
side: import("three").Side;
shadowSide: import("three").Side | null;
toneMapped: boolean;
transparent: boolean;
type: string;
uuid: string;
vertexColors: boolean;
visible: boolean;
userData: any;
version: number;
clone(): any;
copy(material: import("three").Material): any;
dispose(): void;
customProgramCacheKey(): string;
setValues(values: import("three").MaterialParameters): void;
toJSON(meta?: any): any;
addEventListener(type: T_1, listener: import("three").EventListener): void;
hasEventListener(type: T_2, listener: import("three").EventListener): boolean;
removeEventListener(type: T_3, listener: import("three").EventListener): void;
dispatchEvent(event: import("three").Event): void;
}) & typeof MeshBasicMaterial;
export declare const RayBasicMaterial: (new (...args: any[]) => {
onBeforeCompile(shader: import("three").Shader, renderer: import("three").WebGLRenderer): void;
alphaTest: number;
alphaToCoverage: boolean;
blendDst: import("three").BlendingDstFactor;
blendDstAlpha: number | null;
blendEquation: import("three").BlendingEquation;
blendEquationAlpha: number | null;
blending: import("three").Blending;
blendSrc: 210 | import("three").BlendingDstFactor;
blendSrcAlpha: number | null;
clipIntersection: boolean;
clippingPlanes: any;
clipShadows: boolean;
colorWrite: boolean;
defines: {
[key: string]: any;
} | undefined;
depthFunc: import("three").DepthModes;
depthTest: boolean;
depthWrite: boolean;
id: number;
stencilWrite: boolean;
stencilFunc: import("three").StencilFunc;
stencilRef: number;
stencilWriteMask: number;
stencilFuncMask: number;
stencilFail: import("three").StencilOp;
stencilZFail: import("three").StencilOp;
stencilZPass: import("three").StencilOp;
readonly isMaterial: true;
name: string;
needsUpdate: boolean;
opacity: number;
polygonOffset: boolean;
polygonOffsetFactor: number;
polygonOffsetUnits: number;
precision: "highp" | "mediump" | "lowp" | null;
premultipliedAlpha: boolean;
dithering: boolean;
side: import("three").Side;
shadowSide: import("three").Side | null;
toneMapped: boolean;
transparent: boolean;
type: string;
uuid: string;
vertexColors: boolean;
visible: boolean;
userData: any;
version: number;
clone(): any;
copy(material: import("three").Material): any;
dispose(): void;
customProgramCacheKey(): string;
setValues(values: import("three").MaterialParameters): void;
toJSON(meta?: any): any;
addEventListener(type: T_1, listener: import("three").EventListener): void;
hasEventListener(type: T_2, listener: import("three").EventListener): boolean;
removeEventListener(type: T_3, listener: import("three").EventListener): void;
dispatchEvent(event: import("three").Event): void;
}) & typeof MeshBasicMaterial;
export declare function isTouchscreen(inputSource: XRInputSource): boolean;
export declare function updateCursorTransformation(inputSource: XRInputSource, intersections: ReadonlyArray, cursorRef: RefObject, cursorOffset: number): void;
export declare function updateRayTransformation(intersections: ReadonlyArray, maxLength: number, rayRef: RefObject): void;
export declare function triggerVibration(intersections: ReadonlyArray, inputSource: XRInputSource, refPrevIntersected: MutableRefObject): void;
export declare function updateColor(pressed: boolean, material: {
color: Color;
}, normalColor: ColorRepresentation, pressColor: ColorRepresentation): void;
export declare function updateCursorDistanceOpacity(material: {
opacity: number;
}, distance: number, smallestDistance: number, highestDistance: number, cursorOpacity: number): void;
export declare const PositionalAudio: React.ForwardRefExoticComponent<{
volume: number;
url: string;
} & React.RefAttributes>;
export * from "./canvas.js";
export * from "./grab-controller.js";
export * from "./grab-hand.js";
export * from "./pointer-controller.js";
export * from "./pointer-hand.js";
export * from "./touch-hand.js";
export * from "./teleport.js";
export * from "./koestlich.js";
export * from "./grabbable.js";
export * from "./controllers.js";
export * from "./hands.js";