import { MarkerBaseState, MarkerEditorProperties, IPoint } from '@markerjs/markerjs3'; /** * Types only - safe for SSR */ interface TimedPoint extends IPoint { timestamp: number; } /** * Represents laser pointer marker's state. */ export interface LaserPointerMarkerState extends MarkerBaseState { /** * Points of the laser path. */ points: Array; /** * Whether the laser pointer is active. */ isActive: boolean; /** * Size of the laser dot */ dotSize: number; } declare const FreehandMarker: typeof import('@markerjs/markerjs3').FreehandMarker, FreehandMarkerEditor: typeof import('@markerjs/markerjs3').FreehandMarkerEditor; /** * A smooth laser pointer similar to Slack's huddle drawing tool * @summary Laser pointer marker * @group Markers */ export declare class LaserPointerMarker extends FreehandMarker { static typeName: string; static title: string; static applyDefaultFilter: boolean; /** * Points with timestamps for fade effect */ protected timedPoints: TimedPoint[]; /** * The main dot element - made public for editor access */ laserDot?: SVGCircleElement; /** * The trail element */ protected laserTrail?: SVGPathElement; /** * Duration in milliseconds that trail points remain visible */ protected trailDuration: number; /** * Animation frame ID */ protected animationFrameId: number | null; /** * Current pointer position */ protected currentPosition: IPoint; /** * Whether the pointer is currently active/visible */ protected isActive: boolean; /** * Size of the laser dot */ protected dotSize: number; constructor(container: SVGGElement); /** * Get current dot size */ get getDotSize(): number; /** * Set dot size */ set setDotSize(value: number); /** * Updates the current position */ updatePosition(point: IPoint): void; /** * Generates trail path based on recent points */ getTrailPath(): string; /** * Starts animation loop */ startAnimation(): void; /** * Stops animation loop */ stopAnimation(): void; /** * Creates the visual elements for the laser pointer */ createVisual(): void; /** * Updates visual elements */ adjustVisual(): void; /** * Sets active state of the laser pointer */ setActive(active: boolean): void; /** * Completely removes the visual elements when the tool is no longer in use */ clearVisuals(): void; /** * Disposes the marker and cleans up. */ dispose(): void; /** * Returns marker's state that can be restored in the future. */ getState(): LaserPointerMarkerState; /** * Restores previously saved marker state. * * @param state - previously saved state. */ restoreState(state: MarkerBaseState): void; } /** * Editor for laser pointer markers. * * @summary Laser pointer marker editor. * @group Editors */ export declare class LaserPointerMarkerEditor extends FreehandMarkerEditor { private lastPointerPosition; private isPointerDown; constructor(properties: MarkerEditorProperties); /** * Sets up the custom cursor for the laser pointer tool */ private setupCustomCursor; /** * Update laser pointer on mouse move */ manipulate(point: IPoint): void; /** * Updates cursor visibility and position */ private updateCursorVisibility; /** * Show on mouse down */ pointerDown(point: IPoint, target?: EventTarget, ev?: PointerEvent): void; /** * Hide on mouse up */ pointerUp(point: IPoint, ev?: PointerEvent): void; /** * Override select to ensure cursor is set correctly */ select(): void; /** * Override deselect to restore default cursor */ deselect(): void; /** * When user switches to a different tool or finishes using this tool */ dispose(): void; } export {};