import { View } from '@nativescript/core';
import { HandlerOptions, LongPressGestureHandlerOptions, NativeViewGestureHandlerOptions, PanGestureHandlerOptions, PinchGestureHandlerOptions, RotationGestureHandlerOptions, TapGestureHandlerOptions } from './gesturehandler';
import { BaseGestureRootView, BaseNative, GestureHandlerStateEvent, GestureHandlerTouchEvent, GestureState, GestureStateEventData, GestureTouchEventData, HandlerType, ManagerBase, OptionsTypeMap, TypeMap, ViewDisposeEvent, ViewInitEvent } from './gesturehandler.common';
export { GestureState, GestureHandlerStateEvent, GestureHandlerTouchEvent, GestureStateEventData, GestureTouchEventData, HandlerType, ViewInitEvent, ViewDisposeEvent };
export declare class GestureRootView extends BaseGestureRootView {
    createNativeView(): com.nativescript.gesturehandler.PageLayout;
    initNativeView(): void;
    disposeNativeView(): void;
    get registry(): any;
}
export declare function install(overrideNGestures?: boolean): void;
export declare abstract class Handler<T extends com.swmansion.gesturehandler.GestureHandler<any>, U extends HandlerOptions> extends BaseNative<T, U> {
    hitSlop: any;
    enabled: boolean;
    shouldCancelWhenOutside: boolean;
    shouldStartGesture: (arg: any) => boolean;
    manager: WeakRef<Manager>;
    touchListener: com.swmansion.gesturehandler.OnTouchEventListener<T>;
    nativeGetterKey: string;
    getExtraData(handler: T): {
        positions: any[];
        numberOfPointers: number;
    };
    initNativeView(native: T, options: U): void;
    disposeNativeView(): void;
    handleShouldStartGesture(handler: T, event: android.view.MotionEvent): boolean;
    onTouchEvent(handler: T, event: android.view.MotionEvent): void;
    onStateChange(handler: T, state: number, prevState: number): void;
    tag: number;
    attachedView: View;
    setTag(tag: number): void;
    getTag(): number;
    getView(): globalAndroid.view.View;
    cancel(): void;
    attachToView(view: View): void;
    detachFromView(view?: View): void;
}
export declare class TapGestureHandler extends Handler<com.swmansion.gesturehandler.TapGestureHandler, TapGestureHandlerOptions> {
    numberOfTaps: number;
    maxDurationMs: number;
    maxDelayMs: number;
    maxDeltaX: number;
    maxDeltaY: number;
    maxDist: number;
    minPointers: number;
    createNative(options: any): com.swmansion.gesturehandler.TapGestureHandler;
    getExtraData(handler: com.swmansion.gesturehandler.TapGestureHandler): {
        positions: any[];
        numberOfPointers: number;
    } & {
        x: number;
        y: number;
        absoluteX: number;
        absoluteY: number;
    };
}
export declare class PanGestureHandler extends Handler<com.swmansion.gesturehandler.PanGestureHandler, PanGestureHandlerOptions> {
    minDist: number;
    activeOffsetXStart: number;
    activeOffsetXEnd: number;
    failOffsetXStart: number;
    failOffsetXEnd: number;
    activeOffsetYStart: number;
    activeOffsetYEnd: number;
    failOffsetYStart: number;
    failOffsetYEnd: number;
    minVelocity: number;
    minVelocityX: number;
    minVelocityY: number;
    minPointers: number;
    maxPointers: number;
    avgTouches: number;
    numberOfPointers: number;
    createNative(options: any): com.swmansion.gesturehandler.PanGestureHandler;
    getExtraData(handler: com.swmansion.gesturehandler.PanGestureHandler): {
        positions: any[];
        numberOfPointers: number;
    } & {
        x: number;
        y: number;
        absoluteX: number;
        absoluteY: number;
        translationX: number;
        translationY: number;
        velocityX: number;
        velocityY: number;
    };
}
export declare class PinchGestureHandler extends Handler<com.swmansion.gesturehandler.PinchGestureHandler, PinchGestureHandlerOptions> {
    minSpan: number;
    createNative(options: any): com.swmansion.gesturehandler.PinchGestureHandler;
    getExtraData(handler: com.swmansion.gesturehandler.PinchGestureHandler): {
        positions: any[];
        numberOfPointers: number;
    } & {
        x: number;
        y: number;
        absoluteX: number;
        absoluteY: number;
        scale: number;
        focalX: number;
        focalY: number;
        velocity: number;
    };
}
export declare enum FlingDirection {
    DIRECTION_LEFT,
    DIRECTION_UP,
    DIRECTION_DOWN,
    DIRECTION_RIGHT
}
export declare class FlingGestureHandler extends Handler<com.swmansion.gesturehandler.FlingGestureHandler, TapGestureHandlerOptions> {
    numberOfPointers: number;
    direction: number;
    createNative(options: any): com.swmansion.gesturehandler.FlingGestureHandler;
    getExtraData(handler: com.swmansion.gesturehandler.FlingGestureHandler): {
        positions: any[];
        numberOfPointers: number;
    } & {
        direction: string;
    };
}
export declare class LongPressGestureHandler extends Handler<com.swmansion.gesturehandler.LongPressGestureHandler, LongPressGestureHandlerOptions> {
    minDurationMs: number;
    maxDist: number;
    createNative(options: any): com.swmansion.gesturehandler.LongPressGestureHandler;
    getExtraData(handler: com.swmansion.gesturehandler.LongPressGestureHandler): {
        positions: any[];
        numberOfPointers: number;
    } & {
        x: number;
        y: number;
        absoluteX: number;
        absoluteY: number;
    };
}
export declare class RotationGestureHandler extends Handler<com.swmansion.gesturehandler.RotationGestureHandler, RotationGestureHandlerOptions> {
    createNative(options: any): com.swmansion.gesturehandler.RotationGestureHandler;
    getExtraData(handler: com.swmansion.gesturehandler.RotationGestureHandler): {
        positions: any[];
        numberOfPointers: number;
    } & {
        x: number;
        y: number;
        absoluteX: number;
        absoluteY: number;
        rotation: number;
        anchorX: number;
        anchorY: number;
        velocity: number;
    };
}
export declare class NativeViewGestureHandler extends Handler<com.swmansion.gesturehandler.NativeViewGestureHandler, NativeViewGestureHandlerOptions> {
    shouldActivateOnStart: boolean;
    disallowInterruption: boolean;
    createNative(options: any): com.swmansion.gesturehandler.NativeViewGestureHandler;
    getExtraData(handler: com.swmansion.gesturehandler.NativeViewGestureHandler): {
        positions: any[];
        numberOfPointers: number;
    } & {
        pointerInside: boolean;
    };
}
export declare class Manager extends ManagerBase {
    _interactionManager: com.nativescript.gesturehandler.GestureHandlerInteractionController;
    configureInteractions<T extends com.swmansion.gesturehandler.GestureHandler<any>, U extends HandlerOptions>(handler: Handler<T, U>, options?: U): void;
    get interactionManager(): com.nativescript.gesturehandler.GestureHandlerInteractionController;
    static sManager: Manager;
    static getInstance(): Manager;
    createGestureHandler<T extends HandlerType>(handlerName: T, handlerTag: number, config?: OptionsTypeMap[T]): TypeMap[T];
    findRegistry(view: View): com.swmansion.gesturehandler.GestureHandlerRegistryImpl;
    attachGestureHandlerToView<T extends com.swmansion.gesturehandler.GestureHandler<any> = com.swmansion.gesturehandler.GestureHandler<any>>(handler: Handler<T, any>, view: View): void;
    detachGestureHandlerFromView<T extends com.swmansion.gesturehandler.GestureHandler<any> = com.swmansion.gesturehandler.GestureHandler<any>>(handler: Handler<T, any>, view: View): void;
    viewListeners: Map<View, Map<number, {
        init: () => void;
        dispose: () => void;
    }>>;
    attachGestureHandler<T extends com.swmansion.gesturehandler.GestureHandler<any> = com.swmansion.gesturehandler.GestureHandler<any>>(handler: Handler<T, any>, view: View): void;
    detachGestureHandler<T extends com.swmansion.gesturehandler.GestureHandler<any> = com.swmansion.gesturehandler.GestureHandler<any>>(handler: Handler<T, any>, view: View): void;
}
