import { IModuleCallbacksMap, IModuleMutableProps, IModuleStaticProps } from '../../base';
export interface IPointersStaticProps extends IModuleStaticProps {
    /**
     * The element that listens for pointer events.
     *
     * Ensure the element has the appropriate [touch-action](https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action)
     * property to prevent conflicts with browser gestures.
     */
    container: HTMLElement | SVGElement;
    /**
     * Calculate coordinates relative to the container.
     * @default false
     */
    relative?: boolean;
    /**
     * Determines which mouse buttons trigger events.
     * - 0: Main button pressed, usually the left button or the un-initialized state
     * - 1: Auxiliary button pressed, usually the wheel button or the middle button (if present)
     * - 2: Secondary button pressed, usually the right button
     * - 3: Fourth button, typically the Browser Back button
     * - 4: Fifth button, typically the Browser Forward button
     *
     * See [MouseEvent.button](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button).
     *
     * @default [0]
     */
    buttons?: number[];
    /**
     * Minimum number of active pointers required to trigger the "start" callback.
     * @default 1
     */
    minPointers?: number;
    /**
     * Maximum number of pointers that can be tracked simultaneously.
     * @default 5
     */
    maxPointers?: number;
    /**
     * Disable user selection on drag.
     * @default true
     */
    disableUserSelect?: boolean;
}
export interface IPointersMutableProps extends IModuleMutableProps {
    /**
     * Enables or disables pointer events.
     * @default true
     */
    enabled?: boolean;
}
export interface IPointersCallbacksMap extends IModuleCallbacksMap {
    /**
     * Fired when the required number of pointers is reached.
     */
    start: undefined;
    /**
     * Fired when a pointer is added.
     */
    pointerdown: {
        event: PointerEvent;
        pointer: IPointersItem;
    };
    /**
     * Fired when a pointer moves.
     */
    pointermove: {
        event: PointerEvent;
        pointer: IPointersItem;
    };
    /**
     * Fired when a pointer is removed.
     */
    pointerup: {
        pointer: IPointersItem;
    };
    /**
     * Fired when pointer events are canceled.
     */
    end: undefined;
}
export interface IPointersVec2 {
    /** X-coordinate relative to the container. */
    x: number;
    /** Y-coordinate relative to the container. */
    y: number;
}
export interface IPointersItem {
    /** Unique pointer identifier. */
    id: number;
    /** Index assigned to the pointer. */
    index: number;
    /** Coordinates at the start of the interaction. */
    start: IPointersVec2;
    /** Previous recorded coordinates. */
    prev: IPointersVec2;
    /** Current pointer coordinates. */
    current: IPointersVec2;
    /** Movement offset from the starting position. */
    diff: IPointersVec2;
    /** Movement offset from the previous position. */
    step: IPointersVec2;
    /** Total accumulated movement since start. */
    accum: IPointersVec2;
}
//# sourceMappingURL=types.d.ts.map