stonex
1
2import { StonexModules, StonexStore } from '.'
3
4/**
5* StoreBinder it is structure which helps Stonex Module to connect with Store
6*/
7export declare interface StoreBinder<State, MP = any> {
8getState: () => State,
9moduleName: string
10modules: StonexModules<MP>
11resetState: (callback?: (state: any) => any) => void
12setState: (changes: (((state: State) => Partial<State>) | Partial<State>), callback?: (state: State) => any) => any
13}
14
15/**
16* Function which creates and returns StoreBinder
17*
18* @param {string} moduleName
19* @param {StonexStore<MP>} store
20*/
21export const createStoreBinder = <MP, State>(
22moduleName: string,
23store: StonexStore<MP>,
24): StoreBinder<State, MP> => ({
25getState: store.getState.bind(store, moduleName),
26moduleName,
27modules: store.modules,
28resetState: store.resetState.bind(store, moduleName),
29setState: store.setState.bind(store, moduleName),
30})
31