import { IDraggersRegistry } from "@inweb/viewer-core";
/**
 * A draggers registry. Use this registry to register custom draggers.
 *
 * To implement custom dragger:
 *
 * 1. Define a dragger class implements {@link IDragger}.
 * 2. Define a constructor with a `viewer` parameter and add mouse event listeners for the specified viewer.
 * 3. Define the dragger logic in the event listeners. For example, listen for the `mousemove` event and
 *    zoom in/out when the left mouse button is pressed.
 * 4. Override {@link IDragger.dispose} and remove mouse event listeners from the viewer.
 * 5. Register dragger provider in the draggers registry by calling the {@link draggers.registerDragger}.
 *
 * @example Implementing a custom dragger.
 *
 * ```javascript
 * import { IDragger, draggers, Viewer } from "@inweb/viewer-visualize";
 *
 * class MyDragger implements IDragger {
 *   protected viewer: Viewer;
 *
 *   constructor(viewer: Viewer) {
 *     this.viewer = viewer;
 *     this.viewer.addEventListener("pointermove", this.onPointerMove);
 *   }
 *
 *   override dispose() {
 *     this.viewer.removeEventListener("pointermove", this.onPointerMove);
 *   }
 *
 *   onPointerMove = (event: PointerEvent) => {
 *     // place custom logic here
 *   };
 * }
 *
 * draggers.registerDragger("MyDragger", (viewer): IDragger => new MyDragger(viewer));
 * ```
 *
 * @example Activating a custom dragger.
 *
 * ```javascript
 * viewer.setActiveDragger("MyDragger");
 * ```
 */
declare const draggers: IDraggersRegistry;
export { draggers };
