import React from 'react'; export interface SubscriptionContainerProviderProps { initialState: State | (() => State); children: React.ReactNode; } export declare type Equality = (a: T, b: T) => boolean; export interface SubscriptionContainer { Provider: React.ComponentType>; useContainer: () => Value; useState: () => State; useSelector(selector: (state: State) => TSelected, eq?: Equality): TSelected; useWhenValueChange(selector: (state: State) => TSelected, cb: (s: TSelected) => void, eq?: Equality): any; } export interface SubscriptioHookOptions { getState(): State; setState(s: ((s: State) => State) | State): any; updateState(s: (s: State) => void): any; subscribe(cb: (s: State) => void): () => void; } export declare type SubscriptionHook = (options: SubscriptioHookOptions) => Value; export declare function createSubscriptionContainer(useHook: SubscriptionHook, { isEqual }?: { isEqual: (a: any, b: any) => boolean; }): SubscriptionContainer;