import Signal from "../../../core/events/signal/Signal";
import Vector2 from "../../../core/geom/Vector2";
import Vector3 from "../../../core/geom/Vector3";
import {InputDeviceSwitch} from "./InputDeviceSwitch";

export class PointerDevice {
    constructor(element:EventTarget)

    start(): void

    stop(): void

    readonly position: Vector2

    readonly buttons: InputDeviceSwitch[]

    readonly mouseButtonLeft: InputDeviceSwitch
    readonly mouseButtonRight: InputDeviceSwitch
    readonly mouseButtonMiddle: InputDeviceSwitch

    readonly on: {
        down: Signal<Vector2, MouseEvent | TouchEvent>,
        up: Signal<Vector2, MouseEvent | TouchEvent>,
        move: Signal<Vector2 /*position*/, MouseEvent | TouchEvent, Vector2 /*delta*/>,
        tap: Signal<Vector2, MouseEvent | TouchEvent>,
        drag: Signal<Vector2, Vector2, Vector2, MouseEvent | TouchEvent>,
        dragStart: Signal<Vector2, MouseEvent | TouchEvent>,
        dragEnd: Signal<Vector2>,
        wheel: Signal<Vector3, Vector2, WheelEvent>,
    }
}
