import { DragElastic, Transition, Variants, motion } from 'framer-motion';
export interface SwipePosition {
    x?: number;
    opacity?: number;
    zIndex?: number;
}
export interface SwipeConfig {
    type?: keyof typeof motion;
    vertical?: boolean;
    length?: number;
    index?: number;
    slide?: boolean;
    loop?: boolean;
    elastic?: DragElastic | Function;
    out?: number;
    threshold?: number;
    variants?: Variants | Function;
    transition?: Transition;
    onSwipe?: Function;
    onDrag?: Function;
}
export type Swipe = boolean | SwipeConfig | undefined;
interface SwipeOutput {
    as: any;
    custom: number;
    index: number;
    direction: number;
    elastic: DragElastic;
    out: number;
    threshold: number;
    variants: (i?: number) => Variants | undefined;
    animate: string;
    transition: Transition;
    drag: boolean | 'x' | 'y' | undefined;
    dragElastic: DragElastic;
    dragConstraints: {
        top?: number;
        bottom?: number;
        left?: number;
        right?: number;
    };
    onDrag: (e: MouseEvent | TouchEvent | PointerEvent, info: {
        offset: {
            x: number;
            y: number;
        };
        delta: {
            x: number;
            y: number;
        };
        velocity: {
            x: number;
            y: number;
        };
    }) => void;
    onDragEnd: (e: MouseEvent | TouchEvent | PointerEvent, info: {
        offset: {
            x: number;
            y: number;
        };
        delta: {
            x: number;
            y: number;
        };
        velocity: {
            x: number;
            y: number;
        };
    }) => void;
}
export interface SwipeProps {
    as?: any;
    custom?: number;
    index?: number;
    direction?: number;
    elastic?: DragElastic;
    out?: number;
    threshold?: number;
    variants?: Variants | ((i?: number) => Variants | undefined);
    animate?: string;
    transition?: Transition;
    drag?: boolean | 'x' | 'y' | undefined;
    dragElastic?: DragElastic;
    dragConstraints?: {
        top?: number;
        bottom?: number;
        left?: number;
        right?: number;
    };
    onDrag?: (e: MouseEvent | TouchEvent | PointerEvent, info: {
        offset: {
            x: number;
            y: number;
        };
        delta: {
            x: number;
            y: number;
        };
        velocity: {
            x: number;
            y: number;
        };
    }) => void;
    onDragEnd?: (e: MouseEvent | TouchEvent | PointerEvent, info: {
        offset: {
            x: number;
            y: number;
        };
        delta: {
            x: number;
            y: number;
        };
        velocity: {
            x: number;
            y: number;
        };
    }) => void;
}
export default function useSwipe(config?: Swipe): SwipeOutput | undefined;
export {};
//# sourceMappingURL=useSwipe.d.ts.map