import { EventHandlers, ThreeEvent } from "@react-three/fiber/dist/declarations/src/core/events.js"; import { Vector2 } from "three"; import { Bucket } from "./bucket.js"; export type ExtendedThreeEvent = ThreeEvent & { preventDefault: () => void; }; export type ExtendEventhandler = EventHandler extends (event: ThreeEvent) => void ? (event: ExtendedThreeEvent) => void : EventHandler; export type ExtendedEventHandlers = { [Key in keyof EventHandlers]?: ExtendEventhandler; }; export declare abstract class ScrollHandler implements EventHandlers { protected abstract readonly bucket: Bucket; protected isDying: boolean; private prevInteractionMap; protected abstract parent: ScrollHandler | undefined; protected scrollVelocity: Vector2; customEvents: ExtendedEventHandlers; onContextMenu: (event: ThreeEvent) => void; onDoubleClick: (event: ThreeEvent) => void; onPointerOver: (event: ThreeEvent) => void; onPointerLeave: (event: ThreeEvent) => void; onPointerMissed(event: MouseEvent): void; onPointerCancel: (event: ThreeEvent) => void; private onPointerNotPressed; cleanupHandler(): void; onPointerUp: (event: ThreeEvent) => void; onPointerOut: (event: ThreeEvent) => void; onPointerDown: (event: ThreeEvent) => void; onPointerEnter: (event: ThreeEvent) => void; onPointerMove: (event: ThreeEvent) => void; onWheel: (event: ThreeEvent) => void; onClick: (event: ThreeEvent) => void; protected abstract onScroll(distanceX: number, distanceY: number): boolean; applyScrollVelocity(deltaTime: number): void; }