import { DOMRefValue, FocusableRefValue, FocusableRef } from '@react-types/shared'; import { RefObject, Ref, MutableRefObject } from 'react'; declare function canUseDOM(): boolean; declare const isBrowser: boolean; declare function getUserAgentBrowser(navigator: Navigator): "Chrome for iOS" | "Edge" | "Silk" | "Chrome" | "Firefox" | "AOSP" | "IE" | "Safari" | "WebKit" | null; type UserAgentBrowser = NonNullable>; declare function getUserAgentOS(navigator: Navigator): "Android" | "iOS" | "Windows" | "Mac" | "Chrome OS" | "Firefox OS" | null; type UserAgentOS = NonNullable>; declare function detectDeviceType(navigator: Navigator): "tablet" | "phone" | "desktop"; type UserAgentDeviceType = NonNullable>; declare function detectOS(os: UserAgentOS): boolean; declare function detectBrowser(browser: UserAgentBrowser): boolean; declare function detectTouch(): boolean; declare function createDOMRef(ref: RefObject): DOMRefValue; declare function createFocusableRef(domRef: RefObject, focusableRef?: RefObject): FocusableRefValue; declare function useDOMRef(ref?: RefObject | Ref): RefObject; declare function useFocusableRef(ref: FocusableRef, focusableRef?: RefObject): RefObject; interface ContextValue { ref?: MutableRefObject; } declare function useSyncRef(context: ContextValue, ref: RefObject): void; /** * Checks if two DOMRect objects intersect each other. * * @param rect1 - The first DOMRect object. * @param rect2 - The second DOMRect object. * @returns A boolean indicating whether the two DOMRect objects intersect. */ declare function areRectsIntersecting(rect1: DOMRect, rect2: DOMRect): boolean; export { type ContextValue, type UserAgentBrowser, type UserAgentDeviceType, type UserAgentOS, areRectsIntersecting, canUseDOM, createDOMRef, createFocusableRef, detectBrowser, detectDeviceType, detectOS, detectTouch, getUserAgentBrowser, getUserAgentOS, isBrowser, useDOMRef, useFocusableRef, useSyncRef };