import type { View } from '../core/view';
import type { EventData } from '../../data/observable';
export interface GesturesObserverDefinition {
    /**
     * Registers a gesture observer to a view and gesture.
     * @param type - Type of the gesture.
     */
    observe(type: any): void;
    /**
     * Disconnects the gesture observer.
     */
    disconnect(): void;
    /**
     * Singular gesture type (e.g. GestureTypes.tap) attached to the observer.
     * Does not support plural gesture types (e.g.
     * GestureTypes.tap & GestureTypes.doubleTap).
     */
    type: any;
    /**
     * A function that will be executed when a gesture is received.
     */
    callback: (args: any) => void;
    /**
     * A context which will be used as `this` in callback execution.
     */
    context: any;
    /**
     * An internal Android specific method used to pass the motion event to the correct gesture observer.
     */
    androidOnTouchEvent: (motionEvent: any) => void;
}
export declare enum GestureEvents {
    gestureAttached = "gestureAttached",
    touchDown = "touchDown",
    touchUp = "touchUp"
}
export declare enum GestureTypes {
    tap = 1,
    doubleTap = 2,
    pinch = 4,
    pan = 8,
    swipe = 16,
    rotation = 32,
    longPress = 64,
    touch = 128
}
export declare enum GestureStateTypes {
    cancelled = 0,
    began = 1,
    changed = 2,
    ended = 3
}
export declare enum SwipeDirection {
    right = 1,
    left = 2,
    up = 4,
    down = 8
}
export declare enum TouchAction {
    down = "down",
    up = "up",
    move = "move",
    cancel = "cancel"
}
export interface GestureEventData extends EventData {
    type: GestureTypes;
    view: View;
    ios: any;
    android: any;
}
export interface TapGestureEventData extends GestureEventData {
    getPointerCount(): number;
    getX(): number;
    getY(): number;
}
export interface TouchGestureEventData extends TapGestureEventData {
    action: 'up' | 'move' | 'down' | 'cancel';
    getActivePointers(): Array<Pointer>;
    getAllPointers(): Array<Pointer>;
}
export interface Pointer {
    android: any;
    ios: any;
    getX(): number;
    getY(): number;
    getXPixels(): number;
    getXDIP(): number;
    getYPixels(): number;
    getYDIP(): number;
}
export interface GestureEventDataWithState extends GestureEventData {
    state: number;
}
export interface PinchGestureEventData extends GestureEventDataWithState {
    scale: number;
    getFocusX(): number;
    getFocusY(): number;
}
export interface SwipeGestureEventData extends GestureEventData {
    direction: SwipeDirection;
}
export interface PanGestureEventData extends GestureEventDataWithState {
    deltaX: number;
    deltaY: number;
}
export interface RotationGestureEventData extends GestureEventDataWithState {
    rotation: number;
}
