import React, { Dispatch } from 'react'; declare type Obj = { [index: string]: any; }; interface Action extends Obj { type: string; } export declare type Reducer = (state: S, action: Action) => S; export declare type DispatchAction = Dispatch; declare type Actions = { [Property in keyof Type]: ReturnType; }; declare type Optional = { [Property in keyof Type]?: Type[Property]; }; export declare function createReducerContext(reducer: Reducer, actions: A, initialState: S, referenceContext?: boolean, equalityTest?: (a: any, b: any) => boolean): { Provider: ({ children, initState, initRefState, }: { children: React.ReactNode; initState?: Optional; initRefState?: Optional; }) => JSX.Element; useActions: () => Actions; useSelector: (selector: (state: S) => any) => any; useReference: () => { current: any; }; } | { Provider: ({ children, initState, initRefState, }: { children: React.ReactNode; initState?: Optional; initRefState?: Optional; }) => JSX.Element; useActions: () => Actions; useSelector: (selector: (state: S) => any) => any; useReference?: undefined; }; export {};