/** * Web Locks API lock request options */ type LockOptions = { /** * The lock mode - "exclusive" (default) or "shared" */ mode?: "exclusive" | "shared"; /** * If true, the lock request will only succeed if the lock is available immediately */ ifAvailable?: boolean; /** * If true, any held locks with the same name will be released first */ steal?: boolean; /** * AbortSignal to cancel the lock request */ signal?: AbortSignal; }; /** * Hook configuration options */ type UseWebLocksApiOptions = { /** * Enable periodic checking of lock state (disabled by default) */ periodicCheck?: boolean; /** * Interval in milliseconds for periodic checks (default: 1000ms) */ checkInterval?: number; }; /** * useWebLocksApi hook return type */ type UseWebLocksApiReturn = { /** * Whether Web Locks API is supported */ isSupported: boolean; /** * Whether the resource is currently locked */ isLocked: boolean; /** * Number of pending lock requests for this resource */ waitingCount: number; /** * Current error state */ error: Error | null; /** * The resource name being managed */ resourceName: string; /** * Acquire a lock on the resource */ acquire: (callback: () => Promise | T, options?: LockOptions) => Promise; /** * Release the current lock */ release: () => void; /** * Query the current lock state */ query: () => Promise; }; /** * useWebLocksApi * @description Hook for coordinating operations across tabs/workers with Web Locks API * @see {@link https://rooks.vercel.app/docs/hooks/useWebLocksApi} */ declare function useWebLocksApi(resourceName: string, options?: UseWebLocksApiOptions): UseWebLocksApiReturn; export { useWebLocksApi };