import { View } from '@nativescript/core';
import { FlingGestureHandlerOptions, ForceTouchGestureHandlerOptions, 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 enum FlingDirection {
    DIRECTION_LEFT = 2,
    DIRECTION_UP = 4,
    DIRECTION_DOWN = 8,
    DIRECTION_RIGHT = 1
}
export declare function install(overrideNGestures?: boolean): void;
export declare class GestureRootView extends BaseGestureRootView {
}
export declare class HandlerDelegate extends NSObject implements GestureHandlerDelegate {
    static ObjCProtocols: {
        prototype: GestureHandlerDelegate;
    }[];
    private _owner;
    static new(): HandlerDelegate;
    static initWithOwner(owner: WeakRef<Handler<any, any>>): HandlerDelegate;
    gestureHandlerDidChangeStatePrevStateExtraDataView(handler: GestureHandler, state: GestureHandlerState, prevState: GestureHandlerState, extraData: NSDictionary<any, any>, view: UIView & {
        nsView?: WeakRef<View>;
    }): void;
    gestureHandlerTouchEventOnViewStateExtraData(handler: GestureHandler, view: UIView & {
        nsView?: WeakRef<View>;
    }, state: GestureHandlerState, extraData: NSDictionary<any, any>): void;
    gestureHandlerShouldActivateForEvent(handler: GestureHandler, extraData: NSDictionary<any, any>): any;
}
export declare class Handler<T extends GestureHandler, U extends HandlerOptions> extends BaseNative<T, U> {
    manager: WeakRef<Manager>;
    delegate: HandlerDelegate;
    enabled: boolean;
    shouldCancelWhenOutside: boolean;
    createNative(): any;
    attachedView: View;
    nativeGetterKey: string;
    attachToView(view: View): void;
    detachFromView(view?: View): void;
    getTag(): number;
    setTag(value: any): void;
    getView(): View;
    cancel(): void;
}
export declare class TapHandler extends Handler<TapGestureHandler, TapGestureHandlerOptions> {
    numberOfTaps: number;
    maxDurationMs: number;
    maxDelayMs: number;
    maxDeltaX: number;
    maxDeltaY: number;
    maxDist: number;
    minPointers: number;
}
export declare class PanHandler extends Handler<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;
}
export declare class PinchHandler extends Handler<PinchGestureHandler, PinchGestureHandlerOptions> {
    minSpan: number;
}
export declare class FlingHandler extends Handler<FlingGestureHandler, FlingGestureHandlerOptions> {
    numberOfPointers: number;
    direction: number;
}
export declare class ForceTouchGestureHandler extends Handler<ForceTouchHandler, ForceTouchGestureHandlerOptions> {
    minForce: number;
    maxForce: number;
}
export declare class LongPressHandler extends Handler<LongPressGestureHandler, LongPressGestureHandlerOptions> {
    minDurationMs: number;
    maxDist: number;
}
export declare class RotationHandler extends Handler<RotationGestureHandler, RotationGestureHandlerOptions> {
}
export declare class NativeViewHandler extends Handler<NativeViewGestureHandler, NativeViewGestureHandlerOptions> {
    shouldActivateOnStart: boolean;
    disallowInterruption: boolean;
}
export declare class Manager extends ManagerBase {
    _manager: GestureHandlerManager;
    get manager(): GestureHandlerManager;
    static sManager: Manager;
    static getInstance(): Manager;
    createGestureHandler<T extends HandlerType>(handlerName: T, handlerTag: number, config?: OptionsTypeMap[T]): TypeMap[T];
    viewListeners: Map<View, Map<number, {
        init: () => void;
        dispose: () => void;
    }>>;
    attachGestureHandler(handler: Handler<any, any>, view: View): void;
    detachGestureHandler(handlerTag: number, view: View): void;
}
