import { type CSSProperties, type Dispatch, type SetStateAction, type UIEventHandler } from 'react';
import { type SnapPoint, type SnapPointChange } from './controllers/BottomSheetController';
export type UseBottomSheetOptions = {
    sheetCSSProperty: string;
    backdropCSSProperty: string;
    snapPoint: SnapPoint;
    blocked?: boolean;
    onSnapPointChange?: SnapPointChange;
    onDismiss?: VoidFunction;
};
export type UseBottomSheetHandlers = {
    onTouchStart: UIEventHandler<HTMLElement>;
    onTouchMove: UIEventHandler<HTMLElement>;
    onTouchEnd: UIEventHandler<HTMLElement>;
    onTouchCancel: UIEventHandler<HTMLElement>;
    onMouseDown: UIEventHandler<HTMLElement>;
    onMouseMove: UIEventHandler<HTMLElement>;
    onMouseUp: UIEventHandler<HTMLElement>;
    onMouseLeave: UIEventHandler<HTMLElement>;
};
export type UseBottomSheetResult = [
    {
        initialStyle?: CSSProperties;
        setSheetEl: Dispatch<SetStateAction<HTMLElement | null>>;
        setSheetScrollEl: Dispatch<SetStateAction<HTMLElement | null>>;
        setBackdropEl: Dispatch<SetStateAction<HTMLElement | null>>;
    },
    UseBottomSheetHandlers | undefined
];
/**
 * # Checklist
 *
 * ## Возможности
 *
 * - [x] есть возможность открывать до определенного размера (см. `snapPoint`)
 * - [x] есть возможность закрыть при сильном смахивании вниз
 * - [x] есть возможность отключить взаимодействие на определённых элементах используя data-атрибут
 * - [x] есть возможность отключить взаимодействие на определённых элементах используя stopPropagation()
 *
 * ## Анимации
 *
 * - [x] оверлей становится светлее в зависимости от процента сворачивания
 *    - [x] при `snapPoint !== 'auto'` процент высчитывается относительно переданного `snapPoint.initial`
 * - [x] при перетаскивании за пределы есть анимация натяжения
 *   > note: в `ModalPage` этого эффекта нет при высоте 100% из-за `max-block-size: 100%`
 *
 * ## Пограничные кейсы
 *
 * - [x] ⚠️ не блокирует взаимодействие с _горизонтальным_ скроллом
 * - [x] ⚠️ не блокирует взаимодействие с _вертикальным_ скроллом
 * - [x] ⚠️ не блокирует взаимодействие с полями ввода
 * - [x] ⚠️ не блокирует взаимодействие с элементами вне корневого элемента
 *
 * @private
 */
export declare const useBottomSheet: (enabled: boolean, { blocked, snapPoint, sheetCSSProperty, backdropCSSProperty, onSnapPointChange: onSnapPointChangeProp, onDismiss: onDismissProp, }: UseBottomSheetOptions) => UseBottomSheetResult;
//# sourceMappingURL=useBottomSheet.d.ts.map