import { combineReducers } from 'redux'; import auth, { State as AuthState } from 'app/components/auth/reducer'; import user, { User } from 'app/components/user/reducer'; import accounts, { State as AccountsState, } from 'app/components/accounts/reducer'; import i18n, { State as I18nState } from 'app/components/i18n/reducer'; import popup, { State as PopupState } from 'app/components/ui/popup/reducer'; import bsod from 'app/components/ui/bsod/reducer'; import apps, { Apps } from 'app/components/dev/apps/reducer'; import { ThunkDispatch, ThunkAction as ReduxThunkAction } from 'redux-thunk'; import { Store as ReduxStore } from 'redux'; export interface RootState { auth: AuthState; accounts: AccountsState; user: User; popup: PopupState; apps: Apps; i18n: I18nState; } export interface Action { type: string; payload?: T; } export type Dispatch = ThunkDispatch< RootState, undefined, T >; export type GetState = () => RootState; export type ThunkAction = ReduxThunkAction< T, RootState, undefined, Action >; export type Store = ReduxStore & { dispatch: Dispatch; }; export default combineReducers({ bsod, auth, user, accounts, i18n, popup, apps, });