export type Updater = | TOutput | ((input: TInput) => TOutput); export interface BackoffOptions { base?: number; factor?: number; maximum?: number; } export type Path = string | readonly (string | number)[]; export type TypedArray = Exclude; export interface DebounceOptions { leading?: boolean; trailing?: boolean; maxWait?: number; } export interface DebouncedFunction< T extends (...args: any[]) => any, > { ( this: ThisParameterType, ...args: Parameters ): ReturnType | undefined; cancel(): void; flush(): ReturnType | undefined; pending(): boolean; } export interface TimeoutOptions { reason?: unknown; signal?: AbortSignal | null; } export declare function isObject(value: unknown): value is object; export declare function isPlainObject( value: unknown ): value is Record; export declare function functionalUpdate( updater: Updater, input: TInput ): TOutput; export declare function resolveValue( value: TResult | ((...args: TArgs) => TResult), ...args: TArgs ): TResult; export declare function stableHash(value: unknown): string | undefined; export declare function partialMatch( candidate: unknown, filter: unknown ): boolean; export declare function replaceEqualDeep(previous: T, next: T): T; export declare function deepEqual(left: unknown, right: unknown): boolean; export declare function deepClone(value: T): T; export declare function toPath(path: Path | null | undefined): Array; export declare function getIn( object: unknown, path: Path, fallback?: T ): T; export declare function setIn( object: TObject, path: Path, value: TValue ): TObject | TValue; export declare function isDefined( value: T ): value is Exclude; export declare function isNullish( value: unknown ): value is null | undefined; export declare function isString(value: unknown): value is string; export declare function isNumber(value: unknown): value is number; export declare function isBoolean(value: unknown): value is boolean; export declare function isFunction( value: unknown ): value is (...args: any[]) => unknown; export declare function isDate(value: unknown): value is Date; export declare function isRegExp(value: unknown): value is RegExp; export declare function isMap( value: unknown ): value is Map; export declare function isSet(value: unknown): value is Set; export declare function isTypedArray( value: unknown ): value is TypedArray; export declare function isPromiseLike( value: unknown ): value is PromiseLike; export declare function compact( items: Iterable ): T[]; export declare function pick< T extends object, K extends keyof T, >(object: T, keys: Iterable): Pick; export declare function omit< T extends object, K extends keyof T, >(object: T, keys: Iterable): Omit; export declare function groupBy( items: Iterable, selector: (item: T, index: number) => K ): Record; export declare function keyBy( items: Iterable, selector: (item: T, index: number) => K ): Record; export declare function uniqueBy( items: Iterable, selector?: (item: T, index: number) => K ): T[]; export declare function sleep(milliseconds: number): Promise; export declare function sleep(milliseconds: number, value: T): Promise; export declare function exponentialBackoffDelay( attempt: number, options?: BackoffOptions ): number; export declare function withTimeout( promise: PromiseLike | T, milliseconds: number, options?: TimeoutOptions ): Promise; export declare function throwIfAborted( signal?: AbortSignal | null ): void; export declare function isAbortError( error: unknown ): error is Error & { name: 'AbortError' }; export declare function noop(...args: unknown[]): void; export declare function identity(value: T): T; export declare function once any>( callback: T ): ( this: ThisParameterType, ...args: Parameters ) => ReturnType; export declare function debounce any>( callback: T, wait: number, options?: DebounceOptions ): DebouncedFunction; export declare function throttle any>( callback: T, wait: number, options?: Pick ): DebouncedFunction; export declare class Subscribable { listeners: Set<(value: T) => void>; subscribe(listener: (value: T) => void): () => void; notify(value: T): void; protected onSubscribe?(): void; protected onUnsubscribe?(): void; } export declare class FocusManager extends Subscribable { focused: boolean | undefined; cleanup: (() => void) | null; setFocused(focused: boolean | undefined): void; isFocused(): boolean; } export declare class OnlineManager extends Subscribable { online: boolean; cleanup: (() => void) | null; setOnline(online: boolean): void; isOnline(): boolean; } export declare const focusManager: FocusManager; export declare const onlineManager: OnlineManager;