{
  "version": 3,
  "sources": ["../../../src/methods/initApp/initApp.ts"],
  "sourcesContent": ["import { safeWindow } from 'constants/window.constants';\nimport { defineCustomElements } from 'lib/sdkDappUi';\nimport { LogoutManager } from 'managers/LogoutManager/LogoutManager';\nimport { ToastManager } from 'managers/ToastManager';\nimport { registerCallbacks } from 'managers/TransactionManager/helpers/sessionCallbacks';\nimport { restoreProvider } from 'providers/helpers/restoreProvider';\nimport { ProviderFactory } from 'providers/ProviderFactory';\nimport { ICustomProvider } from 'providers/types/providerFactory.types';\nimport { getDefaultNativeAuthConfig } from 'services/nativeAuth/methods/getDefaultNativeAuthConfig';\nimport { NativeAuthConfigType } from 'services/nativeAuth/nativeAuth.types';\nimport {\n  setNativeAuthConfig,\n  setWalletConnectConfig,\n  setProviderSettings\n} from 'store/actions/config/configActions';\nimport { initializeNetwork } from 'store/actions/network/initializeNetwork';\nimport { defaultStorageCallback } from 'store/storage';\nimport { initStore } from 'store/store';\nimport { ThemesEnum } from 'types/theme.types';\nimport { refreshAccount } from 'utils/account/refreshAccount';\nimport { switchTheme } from 'utils/visual/switchTheme';\nimport { InitAppType } from './initApp.types';\nimport { getIsLoggedIn } from '../account/getIsLoggedIn';\nimport { setGasStationMetadata } from './gasStationMetadata/setGasStationMetadata';\nimport { waitForStoreRehydration } from './helpers/waitForStoreRehydration';\nimport { getAccount } from '../account/getAccount';\nimport { trackTransactions } from '../trackTransactions/trackTransactions';\nimport { registerWebsocketListener } from './websocket/registerWebsocket';\n\nconst defaultInitAppProps = {\n  storage: {\n    getStorageCallback: defaultStorageCallback\n  }\n};\n\n/**\n * Flag indicating whether the app has already been initialized.\n *\n * Prevents repeated initialization steps such as provider restoration,\n * websocket listener registration, and transaction tracking setup.\n * This ensures that multiple calls to `initApp` do not cause duplicated\n * subscriptions or side effects.\n *\n * @internal\n */\nlet isAppInitialized = false;\nlet isInitializing = false;\n\n/**\n * Reset the initialization state. Used primarily for testing.\n * @internal\n */\nexport function resetInitAppState() {\n  isAppInitialized = false;\n  isInitializing = false;\n}\n\n/**\n * Initializes the dApp with the given configuration.\n * @param props - The configuration for the dApp initialization.\n *\n * @example\n * ```ts\n   initApp({\n      nativeAuth: true,\n      environment: EnvironmentsEnum.devnet\n   });\n *  ```\n * */\nexport async function initApp({\n  storage = defaultInitAppProps.storage,\n  dAppConfig,\n  customProviders\n}: InitAppType) {\n  if (isInitializing) {\n    return;\n  }\n\n  isInitializing = true;\n\n  const defaultTheme = dAppConfig?.theme ?? ThemesEnum.dark;\n  await defineCustomElements();\n\n  switchTheme(defaultTheme);\n\n  const { getStorageCallback } = storage;\n\n  const store = initStore(getStorageCallback);\n\n  await waitForStoreRehydration({\n    store,\n    getStorageCallback\n  });\n\n  const { apiAddress } = await initializeNetwork({\n    customNetworkConfig: dAppConfig.network,\n    environment: dAppConfig.environment\n  });\n\n  let nativeAuthConfig: NativeAuthConfigType | null = null;\n\n  if (dAppConfig?.nativeAuth) {\n    nativeAuthConfig =\n      typeof dAppConfig.nativeAuth === 'boolean' &&\n      dAppConfig.nativeAuth === true\n        ? getDefaultNativeAuthConfig({ apiAddress })\n        : getDefaultNativeAuthConfig(dAppConfig.nativeAuth);\n  }\n\n  setNativeAuthConfig(nativeAuthConfig);\n  setWalletConnectConfig(dAppConfig?.providers?.walletConnect ?? null);\n  setProviderSettings(dAppConfig?.providers?.settings ?? null);\n\n  const isLoggedIn = getIsLoggedIn();\n  const account = getAccount();\n  const toastManager = ToastManager.getInstance();\n  await toastManager.init({\n    successfulToastLifetime:\n      dAppConfig.transactionTracking?.successfulToastLifetime\n  });\n\n  const usedProviders: ICustomProvider[] = [\n    ...((safeWindow as any)?.multiversx?.providers ?? []),\n    ...(customProviders || [])\n  ];\n\n  const uniqueProviders = usedProviders.filter(\n    (provider, index, arr) =>\n      index === arr.findIndex((item) => item.type === provider.type)\n  );\n\n  ProviderFactory.customProviders = uniqueProviders || [];\n\n  if (!isAppInitialized) {\n    await restoreProvider();\n\n    if (isLoggedIn) {\n      await refreshAccount();\n      await registerWebsocketListener(account.address);\n      trackTransactions();\n      LogoutManager.getInstance().init();\n      registerCallbacks({\n        onSuccess: dAppConfig.transactionTracking?.onSuccess,\n        onFail: dAppConfig.transactionTracking?.onFail\n      });\n    }\n  }\n\n  if (account?.shard != null) {\n    await setGasStationMetadata({\n      shard: Number(account.shard),\n      apiAddress\n    });\n  }\n\n  isAppInitialized = true;\n  isInitializing = false;\n}\n"],
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,sBAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAA2B,sCAC3BC,EAAqC,yBACrCC,EAA8B,gDAC9BC,EAA6B,iCAC7BC,EAAkC,gEAClCC,EAAgC,6CAChCC,EAAgC,qCAEhCC,EAA2C,kEAE3CC,EAIO,8CACPC,EAAkC,mDAClCC,EAAuC,yBACvCC,EAA0B,uBAC1BC,EAA2B,6BAC3BC,EAA+B,wCAC/BC,EAA4B,oCAE5BC,EAA8B,oCAC9BC,EAAsC,sDACtCC,EAAwC,6CACxCC,EAA2B,iCAC3BC,EAAkC,kDAClCC,EAA0C,yCAE1C,MAAMC,EAAsB,CAC1B,QAAS,CACP,mBAAoB,wBACtB,CACF,EAYA,IAAIC,EAAmB,GACnBC,EAAiB,GAMd,SAASzB,GAAoB,CAClCwB,EAAmB,GACnBC,EAAiB,EACnB,CAcA,eAAsB1B,EAAQ,CAC5B,QAAA2B,EAAUH,EAAoB,QAC9B,WAAAI,EACA,gBAAAC,CACF,EAAgB,CACd,GAAIH,EACF,OAGFA,EAAiB,GAEjB,MAAMI,EAAeF,GAAY,OAAS,aAAW,KACrD,QAAM,wBAAqB,KAE3B,eAAYE,CAAY,EAExB,KAAM,CAAE,mBAAAC,CAAmB,EAAIJ,EAEzBK,KAAQ,aAAUD,CAAkB,EAE1C,QAAM,2BAAwB,CAC5B,MAAAC,EACA,mBAAAD,CACF,CAAC,EAED,KAAM,CAAE,WAAAE,CAAW,EAAI,QAAM,qBAAkB,CAC7C,oBAAqBL,EAAW,QAChC,YAAaA,EAAW,WAC1B,CAAC,EAED,IAAIM,EAAgD,KAEhDN,GAAY,aACdM,EACE,OAAON,EAAW,YAAe,WACjCA,EAAW,aAAe,MACtB,8BAA2B,CAAE,WAAAK,CAAW,CAAC,KACzC,8BAA2BL,EAAW,UAAU,MAGxD,uBAAoBM,CAAgB,KACpC,0BAAuBN,GAAY,WAAW,eAAiB,IAAI,KACnE,uBAAoBA,GAAY,WAAW,UAAY,IAAI,EAE3D,MAAMO,KAAa,iBAAc,EAC3BC,KAAU,cAAW,EAE3B,MADqB,eAAa,YAAY,EAC3B,KAAK,CACtB,wBACER,EAAW,qBAAqB,uBACpC,CAAC,EAOD,MAAMS,EALmC,CACvC,GAAK,cAAoB,YAAY,WAAa,CAAC,EACnD,GAAIR,GAAmB,CAAC,CAC1B,EAEsC,OACpC,CAACS,EAAUC,EAAOC,IAChBD,IAAUC,EAAI,UAAWC,GAASA,EAAK,OAASH,EAAS,IAAI,CACjE,EAEA,kBAAgB,gBAAkBD,GAAmB,CAAC,EAEjDZ,IACH,QAAM,mBAAgB,EAElBU,IACF,QAAM,kBAAe,EACrB,QAAM,6BAA0BC,EAAQ,OAAO,KAC/C,qBAAkB,EAClB,gBAAc,YAAY,EAAE,KAAK,KACjC,qBAAkB,CAChB,UAAWR,EAAW,qBAAqB,UAC3C,OAAQA,EAAW,qBAAqB,MAC1C,CAAC,IAIDQ,GAAS,OAAS,MACpB,QAAM,yBAAsB,CAC1B,MAAO,OAAOA,EAAQ,KAAK,EAC3B,WAAAH,CACF,CAAC,EAGHR,EAAmB,GACnBC,EAAiB,EACnB",
  "names": ["initApp_exports", "__export", "initApp", "resetInitAppState", "__toCommonJS", "import_window", "import_sdkDappUi", "import_LogoutManager", "import_ToastManager", "import_sessionCallbacks", "import_restoreProvider", "import_ProviderFactory", "import_getDefaultNativeAuthConfig", "import_configActions", "import_initializeNetwork", "import_storage", "import_store", "import_theme", "import_refreshAccount", "import_switchTheme", "import_getIsLoggedIn", "import_setGasStationMetadata", "import_waitForStoreRehydration", "import_getAccount", "import_trackTransactions", "import_registerWebsocket", "defaultInitAppProps", "isAppInitialized", "isInitializing", "storage", "dAppConfig", "customProviders", "defaultTheme", "getStorageCallback", "store", "apiAddress", "nativeAuthConfig", "isLoggedIn", "account", "uniqueProviders", "provider", "index", "arr", "item"]
}
