import { Signal } from "@preact/signals"; declare type Signalable = Array | ((...args: any[]) => any) | string | boolean | number | bigint | symbol | undefined | null; declare type Storeable = { [key: string]: (() => any) | Signalable | Storeable; }; declare type ReadOnlyDeep = { readonly [P in keyof T]: ReadOnlyDeep; }; export interface IDeepSignal { value: ReadOnlyDeep; peek: () => ReadOnlyDeep; } export declare type DeepSignal = IDeepSignal & { [K in keyof T]: T[K] extends Signalable ? Signal : T[K] extends Storeable ? DeepSignal : Signal; }; export declare const deepSignal: (initialValue: T) => DeepSignal; export declare const useDeepSignal: (initial: T | (() => T)) => DeepSignal; export {};