import { AppObject } from "@vived/core";
import { AppObjectEntity } from "@vived/core";
import { AppObjectRepo } from "@vived/core";
import { Vector2 } from "@vived/core";
export interface TouchInputEvent {
    touchCount: number;
    touchCenter: Vector2;
    touches: TouchData[];
    event: TouchEvent;
}
export interface TouchData {
    id: number;
    position: Vector2;
    touch?: Touch;
}
export interface TouchController {
    onTouchStart?: (e: TouchInputEvent) => void;
    onTouchMove?: (e: TouchInputEvent) => void;
    onTouchEnd?: (e: TouchInputEvent) => void;
    onTouchCancel?: (e: TouchInputEvent) => void;
    onTap?: (e: TouchInputEvent) => void;
}
export declare abstract class TouchInputEntity extends AppObjectEntity {
    static readonly type = "TouchInputEntity";
    abstract get eventElement(): HTMLElement | undefined;
    abstract eventElementBounds?: DOMRect;
    abstract setEventElement: (eventElement: HTMLElement) => void;
    abstract clearInputElement: () => void;
    abstract updateInputElementBounds: () => void;
    abstract registerController: (controller: TouchController) => void;
    abstract removeController: (controller: TouchController) => void;
    static get: (appObjects: AppObjectRepo) => TouchInputEntity | undefined;
}
export declare function makeTouchInput(appObject: AppObject): TouchInputEntity;
//# sourceMappingURL=TouchInput.d.ts.map