/**
 * How much a gesture's vertical travel must exceed its horizontal travel
 * before an `'inline'` scroller gives it up. Above 1, so horizontal wins the
 * ambiguous middle; see the file header for why the split is deliberately
 * unfair, and how the gestures past the browser's own 45° line are handled.
 */
export declare const VERTICAL_DOMINANCE = 2;
/**
 * Horizontal travel a claimed-but-unpanned gesture needs before it counts as
 * a swipe. Roughly the shortest flick the browser itself will page on.
 */
export declare const SWIPE_DISTANCE = 32;
export type OwnedAxis = 'all' | 'inline';
export type OwnScrollGestureOptions = {
    /** Skip while the scroller is hidden; a hidden panel keeps its layout box,
     * so its listeners would otherwise still be live. */
    isEnabled?: boolean;
    /**
     * Called when a claimed gesture ended without the browser having scrolled
     * the element at all — the diagonal swipes `touch-action: pan-x` refuses.
     *
     * `direction` is the sign to move the scroll offset by, so it composes
     * directly: `scrollBy({left: direction * pageWidth})`. It is physical, and
     * therefore correct in both directions of writing.
     *
     * Only fires for `'inline'`. A gesture the browser panned reports nothing,
     * so momentum and snapping are never second-guessed.
     */
    onSwipe?: (direction: 1 | -1) => void;
};
/**
 * Claim touch gestures that start on `ref`'s element, so an ancestor cannot
 * reinterpret them as its own drag.
 *
 * @param ref - the scroll container
 * @param axis - `'all'` to take every touch, `'inline'` to take only the
 *   horizontal ones and leave vertical drags to the sheet
 * @param options - see {@link OwnScrollGestureOptions}
 */
export declare function useOwnScrollGesture(ref: React.RefObject<HTMLElement | null>, axis?: OwnedAxis, options?: OwnScrollGestureOptions): void;
//# sourceMappingURL=useOwnScrollGesture.d.ts.map