import { Point } from '@mathigon/euclid'; import { CanvasView, ElementView, SVGParentView } from './elements'; declare global { interface Window { IntersectionObserver?: IntersectionObserver; ResizeObserver: any; } interface Event { handled?: boolean; } } export type ScreenEvent = PointerEvent | TouchEvent | MouseEvent; export type ScrollEvent = { top: number; }; export type EventCallback = (e: any) => void; /** Gets the pointer position from an event. */ export declare function pointerPosition(e: any): Point; /** * Gets the pointer position from an event triggered on an `` element, in * the coordinate system of the `` element. */ export declare function svgPointerPosn(event: ScreenEvent, $svg: SVGParentView): Point; /** * Gets the pointer position from an event triggered on an `` element, * in the coordinate system of the `` element. */ export declare function canvasPointerPosition(event: ScreenEvent, $canvas: CanvasView): Point; /** * Get the target element for an event, including for touch/pointer events * that started on a different element. */ export declare function getEventTarget(event: ScreenEvent): ElementView; export declare function stopEvent(event: Event): void; interface SlideEventOptions { down?: (p: Point) => void; start?: (p: Point) => void; move?: (p: Point, start: Point, last: Point) => void; end?: (last: Point, start: Point) => void; up?: (last: Point, start: Point) => void; click?: (p: Point) => void; justInside?: boolean; accessible?: boolean; $box?: ElementView; } export declare function slide($el: ElementView, fns: SlideEventOptions): void; interface OverEventOptions { enter?: () => void; move?: (p: Point) => void; exit?: () => void; } export declare function pointerOver($el: ElementView, fns: OverEventOptions): void; interface HoverEventOptions { enter?: () => void; exit?: () => void; preventMouseover?: () => boolean; canFocusWithin?: boolean; delay?: number; exitDelay?: number; $clickTarget?: ElementView; } export declare function hover($el: ElementView, options: HoverEventOptions): void; export declare function bindEvent($el: ElementView, event: string, fn: EventCallback, options?: EventListenerOptions): void; export declare function unbindEvent($el: ElementView, event: string, fn?: EventCallback): void; export {};