import { IModule, NeuronOptions, ClientName, ClientMethods, NeuronKey } from "../core";
import { DynamicNeuronHook } from "./useNeuron";
import { Actions, StateOrSlice } from "./useSubscriber";
export declare class NeuronClient implements INeuronClient {
    neuron: ReactClientNeuron;
    useNeuron: <T = unknown>(neuronKey: NeuronKey) => [T, (newState: T | ((prev: T) => T)) => void];
    readonly name?: ClientName;
    readonly client: ClientMethods;
    constructor(options?: ClientOptions);
}
interface INeuronClient {
    readonly name?: Readonly<ClientName>;
    readonly client: ClientMethods;
    readonly neuron: ReactClientNeuron;
    readonly useNeuron: DynamicNeuronHook;
}
export interface ClientOptions {
    name?: ClientName;
    modules?: IModule[];
}
export type ReactClientNeuron = <T, A = unknown>(initialState: T, options?: NeuronOptions<T, A>) => <S>(slice?: ((state: T) => S) | undefined) => [StateOrSlice<S, T>, Actions<T, S, A>];
export {};
