{
  "version": 3,
  "sources": ["../../src/store/store.ts", "../../src/store/middleware/logoutMiddleware.ts", "../../src/store/middleware/applyMiddlewares.ts", "../../src/store/actions/loginInfo/loginInfoActions.ts"],
  "sourcesContent": ["import { createJSONStorage, devtools, persist } from 'zustand/middleware';\nimport { immer } from 'zustand/middleware/immer';\nimport { createStore } from 'zustand/vanilla';\nimport { applyMiddlewares } from './middleware';\nimport { accountSlice } from './slices/account';\nimport { cacheSlice } from './slices/cache';\nimport { configSlice } from './slices/config';\nimport { loginInfoSlice } from './slices/loginInfo';\nimport { networkSlice } from './slices/network';\nimport { toastSlice } from './slices/toast';\nimport { transactionsSlice } from './slices/transactions';\nimport { uiSlice } from './slices/ui';\nimport {\n  InMemoryStorage,\n  defaultStorageCallback,\n  StorageCallback\n} from './storage';\nimport { StoreType } from './store.types';\n\nexport type MutatorsIn = [\n  ['zustand/devtools', never],\n  ['zustand/persist', unknown],\n  ['zustand/immer', never]\n];\n\nexport type MutatorsOut = [\n  ['zustand/devtools', never],\n  ['zustand/persist', StoreType],\n  ['zustand/immer', never]\n];\n\nexport const createDAppStore = (getStorageCallback: StorageCallback) => {\n  const store = createStore<StoreType, MutatorsOut>(\n    devtools(\n      persist(\n        immer((...args) => ({\n          network: networkSlice(...args),\n          account: accountSlice(...args),\n          loginInfo: loginInfoSlice(...args),\n          config: configSlice(...args),\n          transactions: transactionsSlice(...args),\n          toasts: toastSlice(...args),\n          cache: cacheSlice(...args),\n          ui: uiSlice(...args)\n        })),\n        {\n          name: 'sdk-dapp-store',\n          storage: createJSONStorage(getStorageCallback)\n        }\n      ),\n      {\n        name: 'sdk-dapp'\n      }\n    )\n  );\n  store.subscribe(applyMiddlewares);\n  return store;\n};\n\nexport type StoreApi = ReturnType<typeof createDAppStore>;\n\nlet store: StoreApi;\n\nexport const setDAppStore = (_store: StoreApi) => {\n  store = _store;\n};\n\nexport const getStore = () => {\n  if (!store) {\n    setDAppStore(createDAppStore(() => new InMemoryStorage()));\n  }\n  return store;\n};\n\n/**\n * Initialize store with the preferred storage by passing a callback.\n * Default storage is localStorage.\n * You can pass your own storage.\n * Call this function before using store, ideally before app bootstrapping.\n * @param getStorageCallback\n * @default () => localStorage\n * @returns persistent store instance\n * @example\n * initStore(() => window.localStorage);\n * initStore(() => window.sessionStorage);\n * initStore(() => new InMemoryStorage());\n * */\nexport const initStore = (getStorageCallback = defaultStorageCallback) => {\n  const dappStore = createDAppStore(getStorageCallback);\n  setDAppStore(dappStore);\n  return dappStore;\n};\n\nexport const getState = () => getStore().getState();\n", "import { WritableDraft } from 'immer';\nimport { Address } from 'lib/sdkCore';\nimport {\n  addLoginExpiresAt,\n  removeLoginExpiresAt\n} from 'store/actions/loginInfo/loginInfoActions';\nimport {\n  accountInfoSelector,\n  isLoggedInSelector\n} from 'store/selectors/accountSelectors';\nimport { loginExpiresAtSelector } from 'store/selectors/loginInfoSelectors';\nimport { initialState as initialAccountState } from 'store/slices/account/accountSlice';\nimport { initialState as initialLoginInfoState } from 'store/slices/loginInfo/loginInfoSlice';\nimport { initialState as initialToastState } from 'store/slices/toast/toastSlice';\nimport { initialState as initialTransactionsState } from 'store/slices/transactions/transactionsSlice';\nimport { getStore } from 'store/store';\nimport { StoreType } from '../store.types';\n\nexport const resetStore = (store: WritableDraft<StoreType>) => {\n  store.account = initialAccountState;\n  store.loginInfo = initialLoginInfoState;\n  store.transactions = initialTransactionsState;\n  store.toasts = initialToastState;\n};\n\nexport function getNewLoginExpiresTimestamp() {\n  return new Date().setHours(new Date().getHours() + 24);\n}\n\nexport function setLoginExpiresAt(expiresAt: number | null) {\n  if (expiresAt == null) {\n    removeLoginExpiresAt();\n    return;\n  }\n  addLoginExpiresAt(expiresAt);\n}\n\nexport const logoutMiddleware = (state: StoreType) => {\n  const isLoggedIn = isLoggedInSelector(state);\n  const loginTimestamp = loginExpiresAtSelector(state);\n  const { address, publicKey } = accountInfoSelector(state);\n\n  if (address && publicKey !== new Address(address).toHex()) {\n    resetStore(state);\n  }\n\n  if (!isLoggedIn) {\n    return;\n  }\n\n  if (loginTimestamp == null) {\n    setLoginExpiresAt(getNewLoginExpiresTimestamp());\n    return;\n  }\n\n  const now = Date.now();\n  const isExpired = loginTimestamp - now < 0;\n\n  if (isExpired) {\n    // logout\n    setLoginExpiresAt(null);\n    getStore().setState(resetStore, false, {\n      type: 'logoutMiddleware',\n      // @ts-ignore\n      payload: {\n        value: null\n      }\n    });\n  }\n};\n", "import { StoreType } from '../store.types';\nimport { logoutMiddleware } from './logoutMiddleware';\n\nexport const applyMiddlewares = (state: StoreType, _prevState: StoreType) => {\n  logoutMiddleware(state);\n};\n", "import { ProviderType } from 'providers/types/providerFactory.types';\nimport {\n  LedgerLoginType,\n  WalletConnectLoginType\n} from 'store/slices/loginInfo/loginInfo.types';\nimport { getStore } from 'store/store';\nimport { TokenLoginType } from 'types/login.types';\n\nexport const setProviderType = <T extends ProviderType = ProviderType>(\n  providerType: T\n) =>\n  getStore().setState(\n    ({ loginInfo: state }) => {\n      state.providerType = providerType;\n    },\n    false,\n    {\n      type: 'setProviderType',\n      // @ts-ignore\n      payload: {\n        value: providerType\n      }\n    }\n  );\n\nexport const setTokenLogin = (tokenLogin: TokenLoginType) =>\n  getStore().setState(\n    ({ loginInfo: state }) => {\n      state.tokenLogin = tokenLogin;\n    },\n    false,\n    {\n      type: 'setTokenLogin',\n      // @ts-ignore\n      payload: {\n        value: tokenLogin\n      }\n    }\n  );\n\nexport const setLoginToken = (loginToken: string) =>\n  getStore().setState(\n    ({ loginInfo: state }) => {\n      if (state.tokenLogin != null) {\n        state.tokenLogin.loginToken = loginToken;\n        return;\n      }\n      state.tokenLogin = {\n        loginToken\n      };\n    },\n    false,\n    {\n      type: 'setLoginToken',\n      // @ts-ignore\n      payload: {\n        value: loginToken\n      }\n    }\n  );\n\nexport const setTokenLoginSignature = (signature: string) =>\n  getStore().setState(\n    ({ loginInfo: state }) => {\n      if (state?.tokenLogin != null) {\n        state.tokenLogin.signature = signature;\n      }\n    },\n    false,\n    {\n      type: 'setTokenLoginSignature',\n      // @ts-ignore\n      payload: {\n        value: signature\n      }\n    }\n  );\n\nexport const setWalletConnectLogin = (\n  walletConnectLogin: WalletConnectLoginType | null\n) =>\n  getStore().setState(\n    ({ loginInfo: state }) => {\n      state.walletConnectLogin = walletConnectLogin;\n    },\n    false,\n    {\n      type: 'setWalletConnectLogin',\n      // @ts-ignore\n      payload: {\n        value: walletConnectLogin\n      }\n    }\n  );\n\nexport const setLedgerLogin = (ledgerLogin: LedgerLoginType | null) =>\n  getStore().setState(\n    ({ loginInfo: state }) => {\n      state.ledgerLogin = ledgerLogin;\n    },\n    false,\n    {\n      type: 'setLedgerLogin',\n      // @ts-ignore\n      payload: {\n        value: ledgerLogin\n      }\n    }\n  );\n\nexport const setIsWalletConnectV2Initialized = (isInitialized: boolean) =>\n  getStore().setState(\n    ({ loginInfo: state }) => {\n      state.isWalletConnectV2Initialized = isInitialized;\n    },\n    false,\n    {\n      type: 'setIsWalletConnectV2Initialized',\n      // @ts-ignore\n      payload: {\n        value: isInitialized\n      }\n    }\n  );\n\nexport const removeLoginExpiresAt = () =>\n  getStore().setState(\n    ({ loginInfo: state }) => {\n      state.loginExpiresAt = null;\n    },\n    false,\n    {\n      type: 'removeLoginExpiresAt',\n      // @ts-ignore\n      payload: {\n        value: null\n      }\n    }\n  );\n\nexport const addLoginExpiresAt = (expiresAt: number) =>\n  getStore().setState(\n    ({ loginInfo: state }) => {\n      state.loginExpiresAt = expiresAt;\n    },\n    false,\n    {\n      type: 'addLoginExpiresAt',\n      // @ts-ignore\n      payload: {\n        value: expiresAt\n      }\n    }\n  );\n"],
  "mappings": "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",
  "names": ["createJSONStorage", "devtools", "persist", "immer", "createStore", "resetStore", "store", "initialState", "getNewLoginExpiresTimestamp", "setLoginExpiresAt", "expiresAt", "removeLoginExpiresAt", "addLoginExpiresAt", "logoutMiddleware", "state", "isLoggedIn", "isLoggedInSelector", "loginTimestamp", "loginExpiresAtSelector", "address", "publicKey", "accountInfoSelector", "Address", "now", "getStore", "applyMiddlewares", "state", "_prevState", "logoutMiddleware", "createDAppStore", "getStorageCallback", "store", "createStore", "devtools", "persist", "immer", "args", "networkSlice", "accountSlice", "loginInfoSlice", "configSlice", "transactionsSlice", "toastSlice", "cacheSlice", "uiSlice", "createJSONStorage", "applyMiddlewares", "setDAppStore", "_store", "getStore", "InMemoryStorage", "initStore", "defaultStorageCallback", "dappStore", "getState", "setProviderType", "providerType", "getStore", "state", "setTokenLogin", "tokenLogin", "setLoginToken", "loginToken", "setTokenLoginSignature", "signature", "setWalletConnectLogin", "walletConnectLogin", "setLedgerLogin", "ledgerLogin", "setIsWalletConnectV2Initialized", "isInitialized", "removeLoginExpiresAt", "addLoginExpiresAt", "expiresAt"]
}
