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;
