import { DeepMaybeObservable, ReadonlyObservable } from '@usels/core'; import { ConfigurableWindow } from '../../shared/configurable.mjs'; import '@legendapp/state'; interface UseIdleOptions extends ConfigurableWindow { /** Timeout in ms before idle state (default: 60000) */ timeout?: number; /** Events to listen for activity (default: mousemove, mousedown, resize, keydown, touchstart, wheel) */ events?: string[]; /** Also listen to visibilitychange (default: true) */ listenForVisibilityChange?: boolean; /** Initial idle state (default: false) */ initialState?: boolean; } interface UseIdleReturn { /** Whether the user is currently idle */ idle$: ReadonlyObservable; /** Timestamp of last user activity */ lastActive$: ReadonlyObservable; /** Reset the idle timer */ reset: () => void; } /** * Framework-agnostic idle tracker. * * Monitors user interaction events (mouse, keyboard, touch, resize) and * sets `idle$` to `true` after a configurable timeout with no activity. */ declare function createIdle(options?: DeepMaybeObservable): UseIdleReturn; export { type UseIdleOptions, type UseIdleReturn, createIdle };