import { Action as ReduxAction } from 'redux'; import { PutEffect } from 'redux-saga/effects'; import { ThunkAction, ThunkDispatch } from 'redux-thunk'; import { ModelState } from '../../components/store/model-state'; export interface Action extends ReduxAction { payload: object; undoable: boolean; } export interface RedoableAction extends Action { redoable: true; } export type AsyncAction = ThunkAction; export type Dispatch = ThunkDispatch; export type AsyncDispatch ThunkAction> = (...args: Parameters) => ReturnType>; declare module 'redux-saga/effects' { function put(action: A | AsyncAction): PutEffect; }