import { Store as VuexStore, Module, CommitOptions, DispatchOptions, } from 'vuex' import { getters, Getters } from './getters' import { mutations, Mutations, MutationTypes } from './mutations' import { actions, Actions, ActionTypes } from './actions' import { RootState } from '~/store/index' interface State { main: Map } const state: State = { main: new Map(), } const data_module: Module = { state, mutations, actions, getters, } export default data_module type Store = Omit, 'commit' | 'getters' | 'dispatch' > & { commit[1]>( key: K, payload: P, options?: CommitOptions ): ReturnType } & { getters: { [K in keyof Getters]: ReturnType } } & { dispatch( key: K, payload: Parameters[1], options?: DispatchOptions ): ReturnType } export { State, ActionTypes, MutationTypes, Store }