import type { RefObject } from 'react'; type DescriptorNamePolyfill = 'accelerometer' | 'accessibility-events' | 'ambient-light-sensor' | 'background-sync' | 'camera' | 'clipboard-read' | 'clipboard-write' | 'gyroscope' | 'magnetometer' | 'microphone' | 'notifications' | 'payment-handler' | 'persistent-storage' | 'push' | 'speaker'; export type GeneralPermissionDescriptor = PermissionDescriptor | { name: DescriptorNamePolyfill; }; export type PermissionDesc = GeneralPermissionDescriptor | GeneralPermissionDescriptor['name'] | false; export interface UsePermissionOptions { /** * Expose more controls * * @defaultValue false */ controls?: Controls; /** * Whether to query immediately * * @defaultValue true */ immediate?: boolean; /** * */ onStateChange?: (state: PermissionState) => void; } export type UsePermissionReturns = Controls extends true ? { /** * if the permission is supported */ isSupported: boolean; /** * Query the permission status */ stateRef: RefObject; /** * Query the permission status */ query(): Promise; } : RefObject; /** * A React Hook that helps to query the permission status of a browser feature. */ export declare function usePermission(permissionDesc: PermissionDesc, options?: UsePermissionOptions): UsePermissionReturns; export declare function usePermission(permissionDesc: PermissionDesc, options: UsePermissionOptions): UsePermissionReturns; export {};