import { Intersection, Matrix4, Mesh, Object3D, Sphere, Vector2Tuple } from 'three'; import { Signal } from '@preact/signals-core'; import { OrderInfo } from '../order.js'; import { RootContext } from '../context.js'; import { Container } from '../components/container.js'; import { Component } from '../components/component.js'; export type AllowedPointerEventsType = 'all' | ((poinerId: number, pointerType: string, pointerState: unknown) => boolean) | { allow: string | Array; } | { deny: string | Array; }; declare module 'three' { interface Object3D extends PointerEventsProperties { spherecast?(sphere: Sphere, intersects: Array): void; intersectChildren?: boolean; interactableDescendants?: Array; ancestorsHaveListeners?: boolean; defaultPointerEvents?: PointerEventsProperties['pointerEvents']; } } export type PointerEventsProperties = { pointerEvents?: 'none' | 'auto' | 'listener'; pointerEventsType?: AllowedPointerEventsType; pointerEventsOrder?: number; }; export declare function makePanelSpherecast(root: Signal, globalSphereWithLocalScale: Sphere, globalPanelMatrixSignal: Signal, object: Object3D): Exclude; export declare function setupBoundingSphere(target: Sphere, pixelSize: Signal, globalMatrixSignal: Signal, size: Signal, abortSignal: AbortSignal): void; /** * clips the sphere / raycast * also marks the mesh as a interaction panel */ export declare function makeClippedCast>(component: Component, fn: T, root: Signal, parent: Signal, orderInfoSignal: Signal): (raycaster: Parameters[0], intersects: Parameters[1]) => unknown;