import { FullGestureState, WebKitGestureEvent, UserGestureConfig } from '@use-gesture/vanilla';
export type PinchState = Omit<FullGestureState<'pinch'>, 'event'> & {
    event: PointerEvent | TouchEvent | WheelEvent | WebKitGestureEvent;
};
export type DragState = Omit<FullGestureState<'drag'>, 'event'> & {
    event: PointerEvent | TouchEvent | WheelEvent | WebKitGestureEvent;
};
declare const Gesture: (target: EventTarget, _handlers: Partial<import("@use-gesture/vanilla").NativeHandlers<import("@use-gesture/vanilla").EventTypes> & import("@use-gesture/vanilla").UserHandlers<import("@use-gesture/vanilla").EventTypes>>, _config?: UserGestureConfig) => import("@use-gesture/vanilla/dist/declarations/src/Recognizer").Recognizer<undefined>;
export type GestureHandler = {
    onDrag?: (state: DragState) => void;
    onDragStart?: (state: DragState) => void;
    onDragEnd?: (state: DragState) => void;
    onPinch?: (state: PinchState) => void;
    onPinchStart?: (state: PinchState) => void;
    onPinchEnd?: (state: PinchState) => void;
};
export type UseGestureConfig = {
    destroyInvisible?: boolean;
    visible?: boolean;
};
type UseGrestureReturn = {
    gesture: ReturnType<typeof Gesture> | null;
    destroy: () => void;
    create: (target: Element, handler: GestureHandler, config?: UserGestureConfig) => void;
};
export default function useGesture(config: UseGestureConfig): UseGrestureReturn;
export {};
