import AppThunkAction from "@insite/client-framework/Common/AppThunkAction";
import { AnyShellAction } from "@insite/shell/Store/Reducers";
import ShellState from "@insite/shell/Store/ShellState";
import { RouterActions } from "redux-first-history";

export type ShellDispatch = (action: AnyShellAction | ShellThunkAction | RouterActions | AppThunkAction) => void;

/** Used as a hint on action creators so that its "dispatch" and "getState" params are correctly typed. */
export default interface ShellThunkAction {
    (dispatch: ShellDispatch, getState: () => ShellState): void;
}
