import { AppObject, AppObjectEntity } from "@vived/core";
import { AppObjectRepo } from "@vived/core";
import { Vector2 } from "@vived/core";
export interface MouseInputEvent {
    position: Vector2;
    button: number;
    event: MouseEvent;
}
export interface MouseWheelEvent {
    position: Vector2;
    event: WheelEvent;
}
export interface MouseController {
    onClick?: (e: MouseInputEvent) => void;
    onDoubleClick?: (e: MouseInputEvent) => void;
    onDown?: (e: MouseInputEvent) => void;
    onUp?: (e: MouseInputEvent) => void;
    onMove?: (e: MouseInputEvent) => void;
    onWheel?: (e: MouseWheelEvent) => void;
}
export declare abstract class MouseInputEntity extends AppObjectEntity {
    static readonly type = "MouseInputEntity";
    abstract get eventElement(): HTMLElement | undefined;
    abstract setEventElement(eventElement: HTMLElement): void;
    abstract clearInputElement(): void;
    abstract registerController(controller: MouseController): void;
    abstract removeController(controller: MouseController): void;
    static get: (appObjects: AppObjectRepo) => MouseInputEntity | undefined;
}
export declare function makeMouseInput(appObject: AppObject): MouseInputEntity;
//# sourceMappingURL=MouseInput.d.ts.map