// Copyright (c) 2019 Gonzalo Müller Bravo. import { Context, Dispatch, ReactElement, ReactNode, Reducer, ReducerAction, ReducerState } from 'react' declare type Dispatcher = Dispatch declare type ReducerContextState = ReducerState> declare type ReducerContextDispatcher = Dispatcher>> declare type ReducerContextValue = [ReducerContextState, ReducerContextDispatcher] declare type ReducerContextDefaultValue = ReducerContextValue | null declare interface ReducerContextProps { context: Context>; reducer: Reducer; initialState: ReducerState>; children: ReactNode; } declare interface ReducerContextInterface { state: ReducerState>; dispatch: ReducerContextDispatcher; } declare function ReducerContext(props: ReducerContextProps): ReactElement> declare function useReducerContext( context: Context> ): ReducerContextInterface declare function useReducerState( context: Context> ): ReducerState> declare function useReducerDispatcher( context: Context> ): ReducerContextDispatcher export { ReducerContext as default, ReducerContextProps, ReducerContextDefaultValue, ReducerContextValue, ReducerContextInterface, useReducerContext, useReducerState, useReducerDispatcher, Dispatcher }