UNPKG

@sandstack/neuron

Version:

Neuron is a lightweight framework agnostic global state manager for Javascript apps, with React support

14 lines (13 loc) 618 B
import { INeuron } from "../core"; export declare function useSubscriber<T, A, S>(neuron: INeuron<T, A>, slice?: (state: T) => S): [StateOrSlice<S, T>, Actions<T, S, A>]; export type StateOrSlice<T, S> = unknown extends T ? T extends unknown ? S : T : T; export type Actions<T, S, A> = unknown extends S ? T extends unknown ? { set: SetState<T>; } & A : { set: SetState<T>; setSlice: SetState<S>; } & A : { set: SetState<T>; setSlice: SetState<S>; } & A; export type SetState<T> = T extends boolean ? (state: boolean | ((prev: boolean) => boolean)) => void : (state: T | ((prev: T) => T)) => void;