import { ReadonlySignal, Signal } from "@preact-signals/unified-signals"; import { CollectionTypes } from "./collectionHandlers"; import { type RawSymbol, type ShallowReactiveMarker } from "./reactivity"; type BaseTypes = string | number | boolean; export type UnwrapSignal = T extends DeepSignal ? UnwrapSignalSimple : T extends Signal ? V : T extends ReadonlySignal ? V : UnwrapSignalSimple; export type UnwrapSignalSimple = T extends Function | CollectionTypes | BaseTypes | Signal | { [RawSymbol]?: true; } ? T : T extends ReadonlyArray ? { [K in keyof T]: UnwrapSignalSimple; } : T extends object & { [ShallowReactiveMarker]?: never; } ? { [P in keyof T]: P extends symbol ? T[P] : UnwrapSignal; } : T; export declare class DeepSignal extends Signal { constructor(value: T); set value(value: T); get value(): T; } export interface DeepSignal extends Signal { __not_exist_deepSignal: true; } export type WrapDeepSignal = T extends Signal ? T : DeepSignal>; /** * * Takes an inner value and returns a reactive and mutable signal, with deepReactive inside of it. * * @param value - The object to wrap in the deepSignal. */ export declare const deepSignal: (value: T) => WrapDeepSignal; export {};