export interface SignalLifecycleHook { onInit?: (value: T) => void; onChange?: (newValue: T, actionName?: string) => void; onDispose?: () => void; } export type TBeforeDevtoolsPushFn = (newValue: T, push: (value: T, actionName?: string) => void, actionName?: string) => void; export interface SignalOptions { key?: string; base?: string; isDisabled?: boolean; beforeDevtoolsPush?: TBeforeDevtoolsPushFn; hooks?: SignalLifecycleHook[]; } export type SignalOptionsOrKey = SignalOptions | string;