import { ComponentPublicInstance, Ref } from 'vue'; import { DrawerRootContext } from './context'; export declare const CLOSE_THRESHOLD = 0.25; export declare const SCROLL_LOCK_TIMEOUT = 100; export declare const BORDER_RADIUS = 8; export declare const NESTED_DISPLACEMENT = 16; export declare const WINDOW_TOP_OFFSET = 26; export declare const DRAG_CLASS = "vaul-dragging"; export interface WithFadeFromProps { snapPoints: (number | string)[]; fadeFromIndex: number; } export interface WithoutFadeFromProps { snapPoints?: (number | string)[]; fadeFromIndex?: never; } export type DrawerRootProps = { activeSnapPoint?: number | string | null; closeThreshold?: number; shouldScaleBackground?: boolean; scrollLockTimeout?: number; fixed?: boolean; dismissible?: boolean; modal?: boolean; open?: boolean; defaultOpen?: boolean; nested?: boolean; } & (WithFadeFromProps | WithoutFadeFromProps); export interface UseDrawerProps { open: Ref; snapPoints: Ref<(number | string)[] | undefined>; dismissible: Ref; nested: Ref; fixed: Ref; modal: Ref; shouldScaleBackground: Ref; activeSnapPoint: Ref; fadeFromIndex: Ref; closeThreshold: Ref; scrollLockTimeout: Ref; } export interface DrawerRootEmits { (e: 'drag', percentageDragged: number): void; (e: 'release', open: boolean): void; (e: 'close'): void; (e: 'update:open', open: boolean): void; (e: 'update:activeSnapPoint', val: string | number): void; (e: 'finish'): void; } export interface DialogEmitHandlers { emitDrag: (percentageDragged: number) => void; emitRelease: (open: boolean) => void; emitClose: () => void; emitOpenChange: (open: boolean) => void; emitFinish: () => void; } export interface Drawer { isOpen: Ref; hasBeenOpened: Ref; isVisible: Ref; drawerRef: Ref; overlayRef: Ref; isDragging: Ref; dragStartTime: Ref; isAllowedToDrag: Ref; snapPoints: Ref<(number | string)[] | undefined>; activeSnapPoint: Ref; pointerStartY: Ref; dismissible: Ref; drawerHeightRef: Ref; snapPointsOffset: Ref; onPress: (event: PointerEvent) => void; onDrag: (event: PointerEvent) => void; onRelease: (event: PointerEvent) => void; closeDrawer: () => void; } export declare function useDrawer(props: UseDrawerProps & DialogEmitHandlers): DrawerRootContext;