import { ReadonlySignal } from "@preact-signals/unified-signals"; import { ExplicitFalsy } from "./explicitFalsy"; export interface Accessor { (): T; } export type Reactive = ReadonlySignal | Accessor; export type AnyReactive = Reactive; export type GetTruthyValue = T extends Accessor ? U : T extends ReadonlySignal ? U : never; export type GetValue = T extends Accessor ? U : T extends ReadonlySignal ? U : never; export interface Setter { (value: (prev: T) => T): T; (value: Exclude): T; (value: Exclude | ((prev: T) => T)): T; } export type CreateFunction = (...args: TArgs) => TResult;