@multiversx/sdk-dapp-liquidity 0.2.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. package/README.md +186 -0
  2. package/all-networks-EJIVYZ_i.mjs +4 -0
  3. package/all-networks-NYACMyeN.js +4 -0
  4. package/api/confirmRate.d.ts +11 -0
  5. package/api/confirmRate.js +30 -0
  6. package/api/confirmRate.mjs +29 -0
  7. package/api/getChains.d.ts +6 -0
  8. package/api/getChains.js +12 -0
  9. package/api/getChains.mjs +11 -0
  10. package/api/getRate.d.ts +10 -0
  11. package/api/getRate.js +28 -0
  12. package/api/getRate.mjs +27 -0
  13. package/api/getTokens.d.ts +7 -0
  14. package/api/getTokens.js +14 -0
  15. package/api/getTokens.mjs +13 -0
  16. package/api/getTokensBalances.d.ts +8 -0
  17. package/api/getTokensBalances.js +17 -0
  18. package/api/getTokensBalances.mjs +16 -0
  19. package/api/getTransactions.d.ts +7 -0
  20. package/api/getTransactions.js +14 -0
  21. package/api/getTransactions.mjs +13 -0
  22. package/api/index.d.ts +7 -0
  23. package/api/index.js +17 -0
  24. package/api/index.mjs +16 -0
  25. package/api/sendTransactions.d.ts +11 -0
  26. package/api/sendTransactions.js +29 -0
  27. package/api/sendTransactions.mjs +28 -0
  28. package/api/tests/confirmRate.spec.d.ts +1 -0
  29. package/api/tests/confirmRate.spec.js +124 -0
  30. package/api/tests/confirmRate.spec.mjs +122 -0
  31. package/api/tests/getChains.spec.d.ts +1 -0
  32. package/api/tests/getChains.spec.js +37 -0
  33. package/api/tests/getChains.spec.mjs +35 -0
  34. package/api/tests/getRate.spec.d.ts +1 -0
  35. package/api/tests/getRate.spec.js +83 -0
  36. package/api/tests/getRate.spec.mjs +81 -0
  37. package/api/tests/getTokens.spec.d.ts +1 -0
  38. package/api/tests/getTokens.spec.js +60 -0
  39. package/api/tests/getTokens.spec.mjs +58 -0
  40. package/api/tests/getTransactions.spec.d.ts +1 -0
  41. package/api/tests/getTransactions.spec.js +89 -0
  42. package/api/tests/getTransactions.spec.mjs +87 -0
  43. package/api/tests/sendTransactions.spec.d.ts +1 -0
  44. package/api/tests/sendTransactions.spec.js +83 -0
  45. package/api/tests/sendTransactions.spec.mjs +81 -0
  46. package/bignumber-B8vjg9qn.js +1334 -0
  47. package/bignumber-CKZkoo0g.mjs +1334 -0
  48. package/constants/index.d.ts +1 -0
  49. package/constants/index.js +5 -0
  50. package/constants/index.mjs +4 -0
  51. package/default-BYtXv70Z.mjs +4 -0
  52. package/default-H3AbmzFV.js +4 -0
  53. package/dto/Chain.dto.d.ts +16 -0
  54. package/dto/Chain.dto.js +2 -0
  55. package/dto/Chain.dto.mjs +1 -0
  56. package/dto/ConfirmRate.dto.d.ts +11 -0
  57. package/dto/ConfirmRate.dto.js +2 -0
  58. package/dto/ConfirmRate.dto.mjs +1 -0
  59. package/dto/Token.dto.d.ts +14 -0
  60. package/dto/Token.dto.js +2 -0
  61. package/dto/Token.dto.mjs +1 -0
  62. package/dto/TokenBalance.dto.d.ts +4 -0
  63. package/dto/TokenBalance.dto.js +2 -0
  64. package/dto/TokenBalance.dto.mjs +1 -0
  65. package/dto/Transaction.dto.d.ts +14 -0
  66. package/dto/Transaction.dto.js +2 -0
  67. package/dto/Transaction.dto.mjs +1 -0
  68. package/dto/index.d.ts +5 -0
  69. package/dto/index.js +2 -0
  70. package/dto/index.mjs +1 -0
  71. package/helpers/base64Utils.d.ts +3 -0
  72. package/helpers/base64Utils.js +32 -0
  73. package/helpers/base64Utils.mjs +31 -0
  74. package/helpers/decodeLoginToken.d.ts +9 -0
  75. package/helpers/decodeLoginToken.js +28 -0
  76. package/helpers/decodeLoginToken.mjs +27 -0
  77. package/helpers/decodeToken.d.ts +11 -0
  78. package/helpers/decodeToken.js +40 -0
  79. package/helpers/decodeToken.mjs +39 -0
  80. package/helpers/getApiURL.d.ts +1 -0
  81. package/helpers/getApiURL.js +8 -0
  82. package/helpers/getApiURL.mjs +7 -0
  83. package/helpers/getBridgeURL.d.ts +1 -0
  84. package/helpers/getBridgeURL.js +8 -0
  85. package/helpers/getBridgeURL.mjs +7 -0
  86. package/helpers/getMvxApiURL.d.ts +1 -0
  87. package/helpers/getMvxApiURL.js +8 -0
  88. package/helpers/getMvxApiURL.mjs +7 -0
  89. package/helpers/getMvxChainId.d.ts +1 -0
  90. package/helpers/getMvxChainId.js +8 -0
  91. package/helpers/getMvxChainId.mjs +7 -0
  92. package/helpers/getMvxExplorerAddress.d.ts +1 -0
  93. package/helpers/getMvxExplorerAddress.js +8 -0
  94. package/helpers/getMvxExplorerAddress.mjs +7 -0
  95. package/helpers/index.d.ts +9 -0
  96. package/helpers/index.js +23 -0
  97. package/helpers/index.mjs +22 -0
  98. package/helpers/serializeTransaction.d.ts +3 -0
  99. package/helpers/serializeTransaction.js +9 -0
  100. package/helpers/serializeTransaction.mjs +8 -0
  101. package/helpers/tests/base64Utils.spec.d.ts +1 -0
  102. package/helpers/tests/base64Utils.spec.js +30 -0
  103. package/helpers/tests/base64Utils.spec.mjs +28 -0
  104. package/helpers/tests/decodeLoginToken.spec.d.ts +1 -0
  105. package/helpers/tests/decodeLoginToken.spec.js +35 -0
  106. package/helpers/tests/decodeLoginToken.spec.mjs +33 -0
  107. package/helpers/tests/decodeToken.spec.d.ts +1 -0
  108. package/helpers/tests/decodeToken.spec.js +28 -0
  109. package/helpers/tests/decodeToken.spec.mjs +26 -0
  110. package/index-B9WqxUXM.mjs +91 -0
  111. package/index-BXwpbIDQ.mjs +107 -0
  112. package/index-CnudU77V.js +329 -0
  113. package/index-DSnomXRI.mjs +68025 -0
  114. package/index-DZHiA1sX.js +107 -0
  115. package/index-cvy2-uZ_.js +67946 -0
  116. package/index.d.ts +6 -0
  117. package/index.js +189 -0
  118. package/index.mjs +185 -0
  119. package/package.json +107 -0
  120. package/react-B9sQBOh0.mjs +3040 -0
  121. package/react-BaXyw3AO.js +3040 -0
  122. package/react-CNXJSTCv.js +38 -0
  123. package/react-CSQpf1zk.mjs +38 -0
  124. package/reactjs/components/AccountAddress/AccountAddress.d.ts +6 -0
  125. package/reactjs/components/AccountAddress/AccountAddress.js +25 -0
  126. package/reactjs/components/AccountAddress/AccountAddress.mjs +24 -0
  127. package/reactjs/components/AccountAddress/index.d.ts +1 -0
  128. package/reactjs/components/AccountAddress/index.js +5 -0
  129. package/reactjs/components/AccountAddress/index.mjs +4 -0
  130. package/reactjs/components/AmountCard/AmountCard.d.ts +6 -0
  131. package/reactjs/components/AmountCard/AmountCard.js +33 -0
  132. package/reactjs/components/AmountCard/AmountCard.mjs +32 -0
  133. package/reactjs/components/AmountCard/index.d.ts +1 -0
  134. package/reactjs/components/AmountCard/index.js +5 -0
  135. package/reactjs/components/AmountCard/index.mjs +4 -0
  136. package/reactjs/components/AmountInput/AmountInput.d.ts +13 -0
  137. package/reactjs/components/AmountInput/AmountInput.js +61 -0
  138. package/reactjs/components/AmountInput/AmountInput.mjs +60 -0
  139. package/reactjs/components/AmountInput/index.d.ts +1 -0
  140. package/reactjs/components/AmountInput/index.js +5 -0
  141. package/reactjs/components/AmountInput/index.mjs +4 -0
  142. package/reactjs/components/BridgeForm/BridgeForm.d.ts +16 -0
  143. package/reactjs/components/BridgeForm/BridgeForm.js +680 -0
  144. package/reactjs/components/BridgeForm/BridgeForm.mjs +679 -0
  145. package/reactjs/components/BridgeForm/index.d.ts +1 -0
  146. package/reactjs/components/BridgeForm/index.js +5 -0
  147. package/reactjs/components/BridgeForm/index.mjs +4 -0
  148. package/reactjs/components/BridgeHistory/BridgeHistory.d.ts +4 -0
  149. package/reactjs/components/BridgeHistory/BridgeHistory.js +233 -0
  150. package/reactjs/components/BridgeHistory/BridgeHistory.mjs +232 -0
  151. package/reactjs/components/BridgeHistory/index.d.ts +1 -0
  152. package/reactjs/components/BridgeHistory/index.js +5 -0
  153. package/reactjs/components/BridgeHistory/index.mjs +4 -0
  154. package/reactjs/components/Connect/BridgeAccountDisplay.d.ts +6 -0
  155. package/reactjs/components/Connect/BridgeAccountDisplay.js +85 -0
  156. package/reactjs/components/Connect/BridgeAccountDisplay.mjs +84 -0
  157. package/reactjs/components/Connect/BridgeConnectButton.d.ts +7 -0
  158. package/reactjs/components/Connect/BridgeConnectButton.js +26 -0
  159. package/reactjs/components/Connect/BridgeConnectButton.mjs +25 -0
  160. package/reactjs/components/Connect/CustomConnectButton.d.ts +7 -0
  161. package/reactjs/components/Connect/CustomConnectButton.js +42 -0
  162. package/reactjs/components/Connect/CustomConnectButton.mjs +41 -0
  163. package/reactjs/components/Connect/MvxAccountDisplay.d.ts +9 -0
  164. package/reactjs/components/Connect/MvxAccountDisplay.js +75 -0
  165. package/reactjs/components/Connect/MvxAccountDisplay.mjs +74 -0
  166. package/reactjs/components/Connect/MvxConnectButton.d.ts +11 -0
  167. package/reactjs/components/Connect/MvxConnectButton.js +43 -0
  168. package/reactjs/components/Connect/MvxConnectButton.mjs +42 -0
  169. package/reactjs/components/Connect/SwitchChainButton.d.ts +7 -0
  170. package/reactjs/components/Connect/SwitchChainButton.js +33 -0
  171. package/reactjs/components/Connect/SwitchChainButton.mjs +32 -0
  172. package/reactjs/components/Connect/index.d.ts +6 -0
  173. package/reactjs/components/Connect/index.js +15 -0
  174. package/reactjs/components/Connect/index.mjs +14 -0
  175. package/reactjs/components/CopyButton/CopyButton.d.ts +6 -0
  176. package/reactjs/components/CopyButton/CopyButton.js +42 -0
  177. package/reactjs/components/CopyButton/CopyButton.mjs +41 -0
  178. package/reactjs/components/CopyButton/index.d.ts +1 -0
  179. package/reactjs/components/CopyButton/index.js +5 -0
  180. package/reactjs/components/CopyButton/index.mjs +4 -0
  181. package/reactjs/components/CopyButton/utils/copyToClipboard.d.ts +1 -0
  182. package/reactjs/components/CopyButton/utils/copyToClipboard.js +38 -0
  183. package/reactjs/components/CopyButton/utils/copyToClipboard.mjs +37 -0
  184. package/reactjs/components/CopyButton/utils/index.d.ts +1 -0
  185. package/reactjs/components/CopyButton/utils/index.js +5 -0
  186. package/reactjs/components/CopyButton/utils/index.mjs +4 -0
  187. package/reactjs/components/DisplayAmount/DisplayAmount.d.ts +21 -0
  188. package/reactjs/components/DisplayAmount/DisplayAmount.js +91 -0
  189. package/reactjs/components/DisplayAmount/DisplayAmount.mjs +90 -0
  190. package/reactjs/components/DisplayAmount/components/AnimateNumber/AnimateNumber.d.ts +7 -0
  191. package/reactjs/components/DisplayAmount/components/AnimateNumber/AnimateNumber.js +40 -0
  192. package/reactjs/components/DisplayAmount/components/AnimateNumber/AnimateNumber.mjs +39 -0
  193. package/reactjs/components/DisplayAmount/components/AnimateNumber/index.d.ts +0 -0
  194. package/reactjs/components/DisplayAmount/components/AnimateNumber/index.js +2 -0
  195. package/reactjs/components/DisplayAmount/components/AnimateNumber/index.mjs +1 -0
  196. package/reactjs/components/DisplayAmount/components/PrecisedAmount/PrecisedAmount.d.ts +14 -0
  197. package/reactjs/components/DisplayAmount/components/PrecisedAmount/PrecisedAmount.js +62 -0
  198. package/reactjs/components/DisplayAmount/components/PrecisedAmount/PrecisedAmount.mjs +61 -0
  199. package/reactjs/components/DisplayAmount/components/index.d.ts +0 -0
  200. package/reactjs/components/DisplayAmount/components/index.js +2 -0
  201. package/reactjs/components/DisplayAmount/components/index.mjs +1 -0
  202. package/reactjs/components/DisplayAmount/index.d.ts +1 -0
  203. package/reactjs/components/DisplayAmount/index.js +5 -0
  204. package/reactjs/components/DisplayAmount/index.mjs +4 -0
  205. package/reactjs/components/DisplayAmount/utils/index.d.ts +1 -0
  206. package/reactjs/components/DisplayAmount/utils/index.js +5 -0
  207. package/reactjs/components/DisplayAmount/utils/index.mjs +4 -0
  208. package/reactjs/components/DisplayAmount/utils/truncateAmount.d.ts +1 -0
  209. package/reactjs/components/DisplayAmount/utils/truncateAmount.js +22 -0
  210. package/reactjs/components/DisplayAmount/utils/truncateAmount.mjs +21 -0
  211. package/reactjs/components/SmallLoader/SmallLoader.d.ts +4 -0
  212. package/reactjs/components/SmallLoader/SmallLoader.js +22 -0
  213. package/reactjs/components/SmallLoader/SmallLoader.mjs +21 -0
  214. package/reactjs/components/SmallLoader/index.d.ts +1 -0
  215. package/reactjs/components/SmallLoader/index.js +5 -0
  216. package/reactjs/components/SmallLoader/index.mjs +4 -0
  217. package/reactjs/components/TokenSelector/TokenSelector.d.ts +16 -0
  218. package/reactjs/components/TokenSelector/TokenSelector.js +158 -0
  219. package/reactjs/components/TokenSelector/TokenSelector.mjs +157 -0
  220. package/reactjs/components/TokenSelector/components/ChainSelect/ChainSelect.d.ts +8 -0
  221. package/reactjs/components/TokenSelector/components/ChainSelect/ChainSelect.js +86 -0
  222. package/reactjs/components/TokenSelector/components/ChainSelect/ChainSelect.mjs +85 -0
  223. package/reactjs/components/TokenSelector/components/ChainSelect/components/ChainOptionLabel.d.ts +11 -0
  224. package/reactjs/components/TokenSelector/components/ChainSelect/components/ChainOptionLabel.js +45 -0
  225. package/reactjs/components/TokenSelector/components/ChainSelect/components/ChainOptionLabel.mjs +44 -0
  226. package/reactjs/components/TokenSelector/components/ChainSelect/components/FormatChainOptionLabel.d.ts +6 -0
  227. package/reactjs/components/TokenSelector/components/ChainSelect/components/FormatChainOptionLabel.js +19 -0
  228. package/reactjs/components/TokenSelector/components/ChainSelect/components/FormatChainOptionLabel.mjs +18 -0
  229. package/reactjs/components/TokenSelector/components/ChainSelect/components/IndicatorSeparator.d.ts +3 -0
  230. package/reactjs/components/TokenSelector/components/ChainSelect/components/IndicatorSeparator.js +7 -0
  231. package/reactjs/components/TokenSelector/components/ChainSelect/components/IndicatorSeparator.mjs +6 -0
  232. package/reactjs/components/TokenSelector/components/ChainSelect/components/SelectedChainOption.d.ts +4 -0
  233. package/reactjs/components/TokenSelector/components/ChainSelect/components/SelectedChainOption.js +33 -0
  234. package/reactjs/components/TokenSelector/components/ChainSelect/components/SelectedChainOption.mjs +32 -0
  235. package/reactjs/components/TokenSelector/components/ChainSelect/types/chainSelectOption.d.ts +10 -0
  236. package/reactjs/components/TokenSelector/components/ChainSelect/types/chainSelectOption.js +2 -0
  237. package/reactjs/components/TokenSelector/components/ChainSelect/types/chainSelectOption.mjs +1 -0
  238. package/reactjs/components/TokenSelector/components/ChainSelect/types/partialChainOption.d.ts +10 -0
  239. package/reactjs/components/TokenSelector/components/ChainSelect/types/partialChainOption.js +2 -0
  240. package/reactjs/components/TokenSelector/components/ChainSelect/types/partialChainOption.mjs +1 -0
  241. package/reactjs/components/TokenSelector/components/SelectContainer.d.ts +7 -0
  242. package/reactjs/components/TokenSelector/components/SelectContainer.js +41 -0
  243. package/reactjs/components/TokenSelector/components/SelectContainer.mjs +40 -0
  244. package/reactjs/components/TokenSelector/components/SelectContent.d.ts +10 -0
  245. package/reactjs/components/TokenSelector/components/SelectContent.js +93 -0
  246. package/reactjs/components/TokenSelector/components/SelectContent.mjs +92 -0
  247. package/reactjs/components/TokenSelector/components/SelectedOption.d.ts +5 -0
  248. package/reactjs/components/TokenSelector/components/SelectedOption.js +29 -0
  249. package/reactjs/components/TokenSelector/components/SelectedOption.mjs +28 -0
  250. package/reactjs/components/TokenSelector/components/TokenIcon.d.ts +8 -0
  251. package/reactjs/components/TokenSelector/components/TokenIcon.js +82 -0
  252. package/reactjs/components/TokenSelector/components/TokenIcon.mjs +81 -0
  253. package/reactjs/components/TokenSelector/components/TokenItem.d.ts +7 -0
  254. package/reactjs/components/TokenSelector/components/TokenItem.js +69 -0
  255. package/reactjs/components/TokenSelector/components/TokenItem.mjs +68 -0
  256. package/reactjs/components/TokenSelector/components/TokenList.d.ts +7 -0
  257. package/reactjs/components/TokenSelector/components/TokenList.js +21 -0
  258. package/reactjs/components/TokenSelector/components/TokenList.mjs +20 -0
  259. package/reactjs/components/TokenSelector/components/TokenSymbol.d.ts +9 -0
  260. package/reactjs/components/TokenSelector/components/TokenSymbol.js +26 -0
  261. package/reactjs/components/TokenSelector/components/TokenSymbol.mjs +25 -0
  262. package/reactjs/components/TokenSelector/index.d.ts +1 -0
  263. package/reactjs/components/TokenSelector/index.js +5 -0
  264. package/reactjs/components/TokenSelector/index.mjs +4 -0
  265. package/reactjs/components/TransactionToast/TransactionToast.d.ts +9 -0
  266. package/reactjs/components/TransactionToast/TransactionToast.js +54 -0
  267. package/reactjs/components/TransactionToast/TransactionToast.mjs +53 -0
  268. package/reactjs/components/TransactionToast/TransactionToastContainer.d.ts +3 -0
  269. package/reactjs/components/TransactionToast/TransactionToastContainer.js +21 -0
  270. package/reactjs/components/TransactionToast/TransactionToastContainer.mjs +20 -0
  271. package/reactjs/components/TransactionToast/index.d.ts +2 -0
  272. package/reactjs/components/TransactionToast/index.js +7 -0
  273. package/reactjs/components/TransactionToast/index.mjs +6 -0
  274. package/reactjs/components/TrimAddress/TrimAddress.d.ts +8 -0
  275. package/reactjs/components/TrimAddress/TrimAddress.js +26 -0
  276. package/reactjs/components/TrimAddress/TrimAddress.mjs +25 -0
  277. package/reactjs/components/TrimAddress/index.d.ts +1 -0
  278. package/reactjs/components/TrimAddress/index.js +5 -0
  279. package/reactjs/components/TrimAddress/index.mjs +4 -0
  280. package/reactjs/components/base/MxButton/MxButton.d.ts +13 -0
  281. package/reactjs/components/base/MxButton/MxButton.js +72 -0
  282. package/reactjs/components/base/MxButton/MxButton.mjs +71 -0
  283. package/reactjs/components/base/MxButton/index.d.ts +1 -0
  284. package/reactjs/components/base/MxButton/index.js +5 -0
  285. package/reactjs/components/base/MxButton/index.mjs +4 -0
  286. package/reactjs/components/base/MxCard/MxCard.d.ts +10 -0
  287. package/reactjs/components/base/MxCard/MxCard.js +55 -0
  288. package/reactjs/components/base/MxCard/MxCard.mjs +54 -0
  289. package/reactjs/components/base/MxCard/index.d.ts +1 -0
  290. package/reactjs/components/base/MxCard/index.js +5 -0
  291. package/reactjs/components/base/MxCard/index.mjs +4 -0
  292. package/reactjs/components/base/MxLink/MxLink.d.ts +10 -0
  293. package/reactjs/components/base/MxLink/MxLink.js +71 -0
  294. package/reactjs/components/base/MxLink/MxLink.mjs +70 -0
  295. package/reactjs/components/base/MxLink/index.d.ts +1 -0
  296. package/reactjs/components/base/MxLink/index.js +5 -0
  297. package/reactjs/components/base/MxLink/index.mjs +4 -0
  298. package/reactjs/components/base/MxSearch/MxSearch.d.ts +10 -0
  299. package/reactjs/components/base/MxSearch/MxSearch.js +70 -0
  300. package/reactjs/components/base/MxSearch/MxSearch.mjs +69 -0
  301. package/reactjs/components/base/MxSearch/index.d.ts +1 -0
  302. package/reactjs/components/base/MxSearch/index.js +5 -0
  303. package/reactjs/components/base/MxSearch/index.mjs +4 -0
  304. package/reactjs/components/base/MxSlideover/MxSlideover.d.ts +10 -0
  305. package/reactjs/components/base/MxSlideover/MxSlideover.js +79 -0
  306. package/reactjs/components/base/MxSlideover/MxSlideover.mjs +78 -0
  307. package/reactjs/components/base/MxSlideover/index.d.ts +1 -0
  308. package/reactjs/components/base/MxSlideover/index.js +5 -0
  309. package/reactjs/components/base/MxSlideover/index.mjs +4 -0
  310. package/reactjs/components/base/MxTooltip/MxTooltip.d.ts +23 -0
  311. package/reactjs/components/base/MxTooltip/MxTooltip.js +163 -0
  312. package/reactjs/components/base/MxTooltip/MxTooltip.mjs +162 -0
  313. package/reactjs/components/base/MxTooltip/components/TooltipContainer/TooltipContainer.d.ts +11 -0
  314. package/reactjs/components/base/MxTooltip/components/TooltipContainer/TooltipContainer.js +34 -0
  315. package/reactjs/components/base/MxTooltip/components/TooltipContainer/TooltipContainer.mjs +33 -0
  316. package/reactjs/components/base/MxTooltip/components/TooltipContainer/index.d.ts +1 -0
  317. package/reactjs/components/base/MxTooltip/components/TooltipContainer/index.js +5 -0
  318. package/reactjs/components/base/MxTooltip/components/TooltipContainer/index.mjs +4 -0
  319. package/reactjs/components/base/MxTooltip/components/TooltipContent/TooltipContent.d.ts +13 -0
  320. package/reactjs/components/base/MxTooltip/components/TooltipContent/TooltipContent.js +28 -0
  321. package/reactjs/components/base/MxTooltip/components/TooltipContent/TooltipContent.mjs +27 -0
  322. package/reactjs/components/base/MxTooltip/components/TooltipContent/index.d.ts +1 -0
  323. package/reactjs/components/base/MxTooltip/components/TooltipContent/index.js +5 -0
  324. package/reactjs/components/base/MxTooltip/components/TooltipContent/index.mjs +4 -0
  325. package/reactjs/components/base/MxTooltip/components/index.d.ts +2 -0
  326. package/reactjs/components/base/MxTooltip/components/index.js +7 -0
  327. package/reactjs/components/base/MxTooltip/components/index.mjs +6 -0
  328. package/reactjs/components/base/MxTooltip/index.d.ts +1 -0
  329. package/reactjs/components/base/MxTooltip/index.js +5 -0
  330. package/reactjs/components/base/MxTooltip/index.mjs +4 -0
  331. package/reactjs/components/base/index.d.ts +6 -0
  332. package/reactjs/components/base/index.js +15 -0
  333. package/reactjs/components/base/index.mjs +14 -0
  334. package/reactjs/components/index.d.ts +13 -0
  335. package/reactjs/components/index.js +51 -0
  336. package/reactjs/components/index.mjs +50 -0
  337. package/reactjs/constants/chains.d.ts +35 -0
  338. package/reactjs/constants/chains.js +38 -0
  339. package/reactjs/constants/chains.mjs +37 -0
  340. package/reactjs/constants/index.d.ts +3 -0
  341. package/reactjs/constants/index.js +12 -0
  342. package/reactjs/constants/index.mjs +11 -0
  343. package/reactjs/context/Web3AppProvider.d.ts +12 -0
  344. package/reactjs/context/Web3AppProvider.js +29 -0
  345. package/reactjs/context/Web3AppProvider.mjs +28 -0
  346. package/reactjs/context/queryClient.d.ts +3 -0
  347. package/reactjs/context/queryClient.js +12 -0
  348. package/reactjs/context/queryClient.mjs +11 -0
  349. package/reactjs/context/useWeb3App.d.ts +1 -0
  350. package/reactjs/context/useWeb3App.js +13 -0
  351. package/reactjs/context/useWeb3App.mjs +12 -0
  352. package/reactjs/hooks/index.d.ts +11 -0
  353. package/reactjs/hooks/index.js +32 -0
  354. package/reactjs/hooks/index.mjs +31 -0
  355. package/reactjs/hooks/useAccount.d.ts +77 -0
  356. package/reactjs/hooks/useAccount.js +18 -0
  357. package/reactjs/hooks/useAccount.mjs +17 -0
  358. package/reactjs/hooks/useBalances.d.ts +10 -0
  359. package/reactjs/hooks/useBalances.js +7 -0
  360. package/reactjs/hooks/useBalances.mjs +6 -0
  361. package/reactjs/hooks/useBridgeFormik.d.ts +98 -0
  362. package/reactjs/hooks/useBridgeFormik.js +182 -0
  363. package/reactjs/hooks/useBridgeFormik.mjs +181 -0
  364. package/reactjs/hooks/useDebounce.d.ts +1 -0
  365. package/reactjs/hooks/useDebounce.js +14 -0
  366. package/reactjs/hooks/useDebounce.mjs +13 -0
  367. package/reactjs/hooks/useFetchBridgeData.d.ts +45 -0
  368. package/reactjs/hooks/useFetchBridgeData.js +44 -0
  369. package/reactjs/hooks/useFetchBridgeData.mjs +43 -0
  370. package/reactjs/hooks/useFetchTokens.d.ts +42 -0
  371. package/reactjs/hooks/useFetchTokens.js +105 -0
  372. package/reactjs/hooks/useFetchTokens.mjs +104 -0
  373. package/reactjs/hooks/useGetChainId.d.ts +1 -0
  374. package/reactjs/hooks/useGetChainId.js +12 -0
  375. package/reactjs/hooks/useGetChainId.mjs +11 -0
  376. package/reactjs/hooks/useResolveTokenChain.d.ts +9 -0
  377. package/reactjs/hooks/useResolveTokenChain.js +21 -0
  378. package/reactjs/hooks/useResolveTokenChain.mjs +20 -0
  379. package/reactjs/hooks/useSendTransactions.d.ts +3 -0
  380. package/reactjs/hooks/useSendTransactions.js +19 -0
  381. package/reactjs/hooks/useSendTransactions.mjs +18 -0
  382. package/reactjs/hooks/useSignTransaction.d.ts +69 -0
  383. package/reactjs/hooks/useSignTransaction.js +17 -0
  384. package/reactjs/hooks/useSignTransaction.mjs +16 -0
  385. package/reactjs/hooks/validation/index.d.ts +4 -0
  386. package/reactjs/hooks/validation/index.js +11 -0
  387. package/reactjs/hooks/validation/index.mjs +10 -0
  388. package/reactjs/hooks/validation/useAmountSchema.d.ts +2 -0
  389. package/reactjs/hooks/validation/useAmountSchema.js +31 -0
  390. package/reactjs/hooks/validation/useAmountSchema.mjs +13 -0
  391. package/reactjs/hooks/validation/useSecondAmountSchema.d.ts +2 -0
  392. package/reactjs/hooks/validation/useSecondAmountSchema.js +27 -0
  393. package/reactjs/hooks/validation/useSecondAmountSchema.mjs +9 -0
  394. package/reactjs/hooks/validation/useTestHasEnoughFunds.d.ts +3 -0
  395. package/reactjs/hooks/validation/useTestHasEnoughFunds.js +38 -0
  396. package/reactjs/hooks/validation/useTestHasEnoughFunds.mjs +37 -0
  397. package/reactjs/hooks/validation/useTestIsConnected.d.ts +3 -0
  398. package/reactjs/hooks/validation/useTestIsConnected.js +21 -0
  399. package/reactjs/hooks/validation/useTestIsConnected.mjs +20 -0
  400. package/reactjs/index.d.ts +10 -0
  401. package/reactjs/index.js +153 -0
  402. package/reactjs/index.mjs +149 -0
  403. package/reactjs/init/index.d.ts +1 -0
  404. package/reactjs/init/index.js +5 -0
  405. package/reactjs/init/index.mjs +4 -0
  406. package/reactjs/init/init.d.ts +48 -0
  407. package/reactjs/init/init.js +53 -0
  408. package/reactjs/init/init.mjs +35 -0
  409. package/reactjs/init/tests/init.spec.d.ts +1 -0
  410. package/reactjs/init/tests/init.spec.js +108 -0
  411. package/reactjs/init/tests/init.spec.mjs +106 -0
  412. package/reactjs/queries/index.d.ts +7 -0
  413. package/reactjs/queries/index.js +20 -0
  414. package/reactjs/queries/index.mjs +19 -0
  415. package/reactjs/queries/useGetAllTokens.query.d.ts +3 -0
  416. package/reactjs/queries/useGetAllTokens.query.js +31 -0
  417. package/reactjs/queries/useGetAllTokens.query.mjs +30 -0
  418. package/reactjs/queries/useGetChains.query.d.ts +3 -0
  419. package/reactjs/queries/useGetChains.query.js +31 -0
  420. package/reactjs/queries/useGetChains.query.mjs +30 -0
  421. package/reactjs/queries/useGetEvmTokensBalances.query.d.ts +22 -0
  422. package/reactjs/queries/useGetEvmTokensBalances.query.js +78 -0
  423. package/reactjs/queries/useGetEvmTokensBalances.query.mjs +77 -0
  424. package/reactjs/queries/useGetHistory.query.d.ts +4 -0
  425. package/reactjs/queries/useGetHistory.query.js +47 -0
  426. package/reactjs/queries/useGetHistory.query.mjs +46 -0
  427. package/reactjs/queries/useGetMvxTokensBalances.query.d.ts +23 -0
  428. package/reactjs/queries/useGetMvxTokensBalances.query.js +60 -0
  429. package/reactjs/queries/useGetMvxTokensBalances.query.mjs +59 -0
  430. package/reactjs/queries/useGetRate.mutation.d.ts +6 -0
  431. package/reactjs/queries/useGetRate.mutation.js +19 -0
  432. package/reactjs/queries/useGetRate.mutation.mjs +18 -0
  433. package/reactjs/queries/useGetTokens.query.d.ts +3 -0
  434. package/reactjs/queries/useGetTokens.query.js +34 -0
  435. package/reactjs/queries/useGetTokens.query.mjs +33 -0
  436. package/reactjs/reexports.d.ts +6 -0
  437. package/reactjs/reexports.js +21 -0
  438. package/reactjs/reexports.mjs +17 -0
  439. package/reactjs/utils/delay.d.ts +1 -0
  440. package/reactjs/utils/delay.js +7 -0
  441. package/reactjs/utils/delay.mjs +6 -0
  442. package/reactjs/utils/formatAmount.d.ts +7 -0
  443. package/reactjs/utils/formatAmount.js +24 -0
  444. package/reactjs/utils/formatAmount.mjs +23 -0
  445. package/reactjs/utils/getCleanStringAmount.d.ts +4 -0
  446. package/reactjs/utils/getCleanStringAmount.js +12 -0
  447. package/reactjs/utils/getCleanStringAmount.mjs +11 -0
  448. package/reactjs/utils/getCompletePathname.d.ts +1 -0
  449. package/reactjs/utils/getCompletePathname.js +6 -0
  450. package/reactjs/utils/getCompletePathname.mjs +5 -0
  451. package/reactjs/utils/getInitialTokens.d.ts +8 -0
  452. package/reactjs/utils/getInitialTokens.js +13 -0
  453. package/reactjs/utils/getInitialTokens.mjs +12 -0
  454. package/reactjs/utils/hasEnoughFunds.d.ts +5 -0
  455. package/reactjs/utils/hasEnoughFunds.js +20 -0
  456. package/reactjs/utils/hasEnoughFunds.mjs +19 -0
  457. package/reactjs/utils/index.d.ts +12 -0
  458. package/reactjs/utils/index.js +27 -0
  459. package/reactjs/utils/index.mjs +26 -0
  460. package/reactjs/utils/isStringFloat.d.ts +1 -0
  461. package/reactjs/utils/isStringFloat.js +22 -0
  462. package/reactjs/utils/isStringFloat.mjs +21 -0
  463. package/reactjs/utils/mxClsx.d.ts +3 -0
  464. package/reactjs/utils/mxClsx.js +21 -0
  465. package/reactjs/utils/mxClsx.mjs +20 -0
  466. package/reactjs/utils/pipe.d.ts +7 -0
  467. package/reactjs/utils/pipe.js +26 -0
  468. package/reactjs/utils/pipe.mjs +25 -0
  469. package/reactjs/utils/removeCommas.d.ts +1 -0
  470. package/reactjs/utils/removeCommas.js +7 -0
  471. package/reactjs/utils/removeCommas.mjs +6 -0
  472. package/reactjs/utils/roundAmount.d.ts +1 -0
  473. package/reactjs/utils/roundAmount.js +41 -0
  474. package/reactjs/utils/roundAmount.mjs +40 -0
  475. package/reactjs/utils/testNumber.d.ts +1 -0
  476. package/reactjs/utils/testNumber.js +5 -0
  477. package/reactjs/utils/testNumber.mjs +4 -0
  478. package/store/inMemoryStore.d.ts +12 -0
  479. package/store/inMemoryStore.js +40 -0
  480. package/store/inMemoryStore.mjs +39 -0
  481. package/types/batchTransactions.d.ts +6 -0
  482. package/types/batchTransactions.js +2 -0
  483. package/types/batchTransactions.mjs +1 -0
  484. package/types/index.d.ts +4 -0
  485. package/types/index.js +2 -0
  486. package/types/index.mjs +1 -0
  487. package/types/rate.d.ts +11 -0
  488. package/types/rate.js +2 -0
  489. package/types/rate.mjs +1 -0
  490. package/types/token.d.ts +12 -0
  491. package/types/token.js +2 -0
  492. package/types/token.mjs +1 -0
  493. package/types/transaction.d.ts +14 -0
  494. package/types/transaction.js +2 -0
  495. package/types/transaction.mjs +1 -0
  496. package/useBalances-Bxtc4GNK.js +199 -0
  497. package/useBalances-DA3zEruz.mjs +199 -0
  498. package/w3m-modal-DCcF1qEB.js +356 -0
  499. package/w3m-modal-DK3G5GJp.mjs +356 -0
@@ -0,0 +1,3040 @@
1
+ import { aR as ConstantsUtil, aU as W3mFrameHelpers, aV as W3mFrameSchema, aW as W3mFrameConstants, aX as SECURE_SITE_SDK, aY as SECURE_SITE_SDK_VERSION, aZ as k, a_ as DEFAULT_LOG_LEVEL, a$ as A, b0 as E, b1 as W3mFrameStorage, b2 as W3mFrameRpcConstants, b3 as ConstantsUtil$1, b4 as EnsController, b5 as solanaDevnet, b6 as solana, aO as SIWXUtil, aD as AccountController, aH as OptionsController, aC as CoreHelperUtil, b7 as ConstantsUtil$2, aA as ChainController, b8 as bs58, b9 as StorageUtil, az as ProviderUtil, aI as ModalController, aB as ConnectorController, aE as ConnectionController, ba as BlockchainApiController, aK as AssetUtil, bb as PublicStateController, bc as EventsController, bd as AlertController, aP as ThemeController, s as setColorTheme, a as setThemeVariables, aQ as SnackController, aN as RouterController, be as WalletUtil, aJ as ApiController, bf as getW3mThemeVariables, bg as NetworkUtil, bh as M } from "./index-DSnomXRI.mjs";
2
+ import { b as useAppKitNetworkCore } from "./react-CSQpf1zk.mjs";
3
+ import { http, fallback, toHex } from "viem";
4
+ import "viem/chains";
5
+ import { g as getAppKit } from "./index-BXwpbIDQ.mjs";
6
+ const ParseUtil = {
7
+ validateCaipAddress(address) {
8
+ var _a;
9
+ if (((_a = address.split(":")) == null ? void 0 : _a.length) !== 3) {
10
+ throw new Error("Invalid CAIP Address");
11
+ }
12
+ return address;
13
+ },
14
+ parseCaipAddress(caipAddress) {
15
+ const parts = caipAddress.split(":");
16
+ if (parts.length !== 3) {
17
+ throw new Error(`Invalid CAIP-10 address: ${caipAddress}`);
18
+ }
19
+ const [chainNamespace, chainId, address] = parts;
20
+ if (!chainNamespace || !chainId || !address) {
21
+ throw new Error(`Invalid CAIP-10 address: ${caipAddress}`);
22
+ }
23
+ return {
24
+ chainNamespace,
25
+ chainId,
26
+ address
27
+ };
28
+ },
29
+ parseCaipNetworkId(caipNetworkId) {
30
+ const parts = caipNetworkId.split(":");
31
+ if (parts.length !== 2) {
32
+ throw new Error(`Invalid CAIP-2 network id: ${caipNetworkId}`);
33
+ }
34
+ const [chainNamespace, chainId] = parts;
35
+ if (!chainNamespace || !chainId) {
36
+ throw new Error(`Invalid CAIP-2 network id: ${caipNetworkId}`);
37
+ }
38
+ return {
39
+ chainNamespace,
40
+ chainId
41
+ };
42
+ }
43
+ };
44
+ function shouldHandleEvent(eventKey, data = {}) {
45
+ var _a;
46
+ return typeof (data == null ? void 0 : data.type) === "string" && ((_a = data == null ? void 0 : data.type) == null ? void 0 : _a.includes(eventKey));
47
+ }
48
+ class W3mFrame {
49
+ constructor({ projectId, isAppClient = false, chainId = "eip155:1", enableLogger = true }) {
50
+ this.iframe = null;
51
+ this.rpcUrl = ConstantsUtil.BLOCKCHAIN_API_RPC_URL;
52
+ this.initFrame = () => {
53
+ const isFrameInitialized = document.getElementById("w3m-iframe");
54
+ if (this.iframe && !isFrameInitialized) {
55
+ document.body.appendChild(this.iframe);
56
+ }
57
+ };
58
+ this.events = {
59
+ registerFrameEventHandler: (id, callback, signal) => {
60
+ function eventHandler({ data }) {
61
+ if (!shouldHandleEvent(W3mFrameConstants.FRAME_EVENT_KEY, data)) {
62
+ return;
63
+ }
64
+ const frameEvent = W3mFrameSchema.frameEvent.parse(data);
65
+ if (frameEvent.id === id) {
66
+ callback(frameEvent);
67
+ window.removeEventListener("message", eventHandler);
68
+ }
69
+ }
70
+ if (W3mFrameHelpers.isClient) {
71
+ window.addEventListener("message", eventHandler);
72
+ signal.addEventListener("abort", () => {
73
+ window.removeEventListener("message", eventHandler);
74
+ });
75
+ }
76
+ },
77
+ onFrameEvent: (callback) => {
78
+ if (W3mFrameHelpers.isClient) {
79
+ window.addEventListener("message", ({ data }) => {
80
+ if (!shouldHandleEvent(W3mFrameConstants.FRAME_EVENT_KEY, data)) {
81
+ return;
82
+ }
83
+ const frameEvent = W3mFrameSchema.frameEvent.parse(data);
84
+ callback(frameEvent);
85
+ });
86
+ }
87
+ },
88
+ onAppEvent: (callback) => {
89
+ if (W3mFrameHelpers.isClient) {
90
+ window.addEventListener("message", ({ data }) => {
91
+ if (!shouldHandleEvent(W3mFrameConstants.APP_EVENT_KEY, data)) {
92
+ return;
93
+ }
94
+ const appEvent = W3mFrameSchema.appEvent.parse(data);
95
+ callback(appEvent);
96
+ });
97
+ }
98
+ },
99
+ postAppEvent: (event) => {
100
+ var _a;
101
+ if (W3mFrameHelpers.isClient) {
102
+ if (!((_a = this.iframe) == null ? void 0 : _a.contentWindow)) {
103
+ throw new Error("W3mFrame: iframe is not set");
104
+ }
105
+ W3mFrameSchema.appEvent.parse(event);
106
+ this.iframe.contentWindow.postMessage(event, "*");
107
+ }
108
+ },
109
+ postFrameEvent: (event) => {
110
+ if (W3mFrameHelpers.isClient) {
111
+ if (!parent) {
112
+ throw new Error("W3mFrame: parent is not set");
113
+ }
114
+ W3mFrameSchema.frameEvent.parse(event);
115
+ parent.postMessage(event, "*");
116
+ }
117
+ }
118
+ };
119
+ this.projectId = projectId;
120
+ this.frameLoadPromise = new Promise((resolve, reject) => {
121
+ this.frameLoadPromiseResolver = { resolve, reject };
122
+ });
123
+ if (isAppClient) {
124
+ this.frameLoadPromise = new Promise((resolve, reject) => {
125
+ this.frameLoadPromiseResolver = { resolve, reject };
126
+ });
127
+ if (W3mFrameHelpers.isClient) {
128
+ const iframe = document.createElement("iframe");
129
+ iframe.id = "w3m-iframe";
130
+ iframe.src = `${SECURE_SITE_SDK}?projectId=${projectId}&chainId=${chainId}&version=${SECURE_SITE_SDK_VERSION}&enableLogger=${enableLogger}`;
131
+ iframe.name = "w3m-secure-iframe";
132
+ iframe.style.position = "fixed";
133
+ iframe.style.zIndex = "999999";
134
+ iframe.style.display = "none";
135
+ iframe.style.animationDelay = "0s, 50ms";
136
+ iframe.style.borderBottomLeftRadius = `clamp(0px, var(--wui-border-radius-l), 44px)`;
137
+ iframe.style.borderBottomRightRadius = `clamp(0px, var(--wui-border-radius-l), 44px)`;
138
+ this.iframe = iframe;
139
+ this.iframe.onerror = () => {
140
+ var _a;
141
+ (_a = this.frameLoadPromiseResolver) == null ? void 0 : _a.reject("Unable to load email login dependency");
142
+ };
143
+ this.events.onFrameEvent((event) => {
144
+ var _a;
145
+ if (event.type === "@w3m-frame/READY") {
146
+ (_a = this.frameLoadPromiseResolver) == null ? void 0 : _a.resolve(void 0);
147
+ }
148
+ });
149
+ }
150
+ }
151
+ }
152
+ get networks() {
153
+ const data = [
154
+ "eip155:1",
155
+ "eip155:5",
156
+ "eip155:11155111",
157
+ "eip155:10",
158
+ "eip155:420",
159
+ "eip155:42161",
160
+ "eip155:421613",
161
+ "eip155:137",
162
+ "eip155:80001",
163
+ "eip155:42220",
164
+ "eip155:1313161554",
165
+ "eip155:1313161555",
166
+ "eip155:56",
167
+ "eip155:97",
168
+ "eip155:43114",
169
+ "eip155:43113",
170
+ "eip155:324",
171
+ "eip155:280",
172
+ "eip155:100",
173
+ "eip155:8453",
174
+ "eip155:84531",
175
+ "eip155:84532",
176
+ "eip155:7777777",
177
+ "eip155:999",
178
+ "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
179
+ "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z",
180
+ "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"
181
+ ].map((id) => ({
182
+ [id]: {
183
+ rpcUrl: `${this.rpcUrl}/v1/?chainId=${id}&projectId=${this.projectId}`,
184
+ chainId: id
185
+ }
186
+ }));
187
+ return Object.assign({}, ...data);
188
+ }
189
+ }
190
+ class W3mFrameLogger {
191
+ constructor(projectId) {
192
+ var _a;
193
+ const loggerOptions = k({
194
+ level: DEFAULT_LOG_LEVEL
195
+ });
196
+ const { logger, chunkLoggerController } = A({
197
+ opts: loggerOptions
198
+ });
199
+ this.logger = E(logger, this.constructor.name);
200
+ this.chunkLoggerController = chunkLoggerController;
201
+ if (typeof window !== "undefined" && ((_a = this.chunkLoggerController) == null ? void 0 : _a.downloadLogsBlobInBrowser)) {
202
+ if (!window.downloadAppKitLogsBlob) {
203
+ window.downloadAppKitLogsBlob = {};
204
+ }
205
+ window.downloadAppKitLogsBlob["sdk"] = () => {
206
+ var _a2;
207
+ if ((_a2 = this.chunkLoggerController) == null ? void 0 : _a2.downloadLogsBlobInBrowser) {
208
+ this.chunkLoggerController.downloadLogsBlobInBrowser({
209
+ projectId
210
+ });
211
+ }
212
+ };
213
+ }
214
+ }
215
+ }
216
+ class W3mFrameProvider {
217
+ constructor({ projectId, chainId, enableLogger = true, onTimeout }) {
218
+ this.openRpcRequests = [];
219
+ if (enableLogger) {
220
+ this.w3mLogger = new W3mFrameLogger(projectId);
221
+ }
222
+ this.w3mFrame = new W3mFrame({ projectId, isAppClient: true, chainId, enableLogger });
223
+ this.onTimeout = onTimeout;
224
+ if (this.getLoginEmailUsed()) {
225
+ this.w3mFrame.initFrame();
226
+ }
227
+ this.w3mFrame.events.onFrameEvent((event) => {
228
+ if (event.type === W3mFrameConstants.FRAME_GET_USER_SUCCESS) {
229
+ this.user = event.payload;
230
+ }
231
+ });
232
+ }
233
+ getLoginEmailUsed() {
234
+ return Boolean(W3mFrameStorage.get(W3mFrameConstants.EMAIL_LOGIN_USED_KEY));
235
+ }
236
+ getEmail() {
237
+ return W3mFrameStorage.get(W3mFrameConstants.EMAIL);
238
+ }
239
+ getUsername() {
240
+ return W3mFrameStorage.get(W3mFrameConstants.SOCIAL_USERNAME);
241
+ }
242
+ async reload() {
243
+ var _a;
244
+ try {
245
+ this.w3mFrame.initFrame();
246
+ await this.appEvent({
247
+ type: W3mFrameConstants.APP_RELOAD
248
+ });
249
+ } catch (error) {
250
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error reloading iframe");
251
+ throw error;
252
+ }
253
+ }
254
+ async connectEmail(payload) {
255
+ var _a;
256
+ try {
257
+ W3mFrameHelpers.checkIfAllowedToTriggerEmail();
258
+ this.w3mFrame.initFrame();
259
+ const response = await this.appEvent({
260
+ type: W3mFrameConstants.APP_CONNECT_EMAIL,
261
+ payload
262
+ });
263
+ this.setNewLastEmailLoginTime();
264
+ return response;
265
+ } catch (error) {
266
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error connecting email");
267
+ throw error;
268
+ }
269
+ }
270
+ async connectDevice() {
271
+ var _a;
272
+ try {
273
+ return this.appEvent({
274
+ type: W3mFrameConstants.APP_CONNECT_DEVICE
275
+ });
276
+ } catch (error) {
277
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error connecting device");
278
+ throw error;
279
+ }
280
+ }
281
+ async connectOtp(payload) {
282
+ var _a;
283
+ try {
284
+ return this.appEvent({
285
+ type: W3mFrameConstants.APP_CONNECT_OTP,
286
+ payload
287
+ });
288
+ } catch (error) {
289
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error connecting otp");
290
+ throw error;
291
+ }
292
+ }
293
+ async isConnected() {
294
+ var _a;
295
+ try {
296
+ if (!this.getLoginEmailUsed()) {
297
+ return { isConnected: false };
298
+ }
299
+ const response = await this.appEvent({
300
+ type: W3mFrameConstants.APP_IS_CONNECTED
301
+ });
302
+ if (!response.isConnected) {
303
+ this.deleteAuthLoginCache();
304
+ }
305
+ return response;
306
+ } catch (error) {
307
+ this.deleteAuthLoginCache();
308
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error checking connection");
309
+ throw error;
310
+ }
311
+ }
312
+ async getChainId() {
313
+ var _a;
314
+ try {
315
+ const response = await this.appEvent({
316
+ type: W3mFrameConstants.APP_GET_CHAIN_ID
317
+ });
318
+ this.setLastUsedChainId(response.chainId);
319
+ return response;
320
+ } catch (error) {
321
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error getting chain id");
322
+ throw error;
323
+ }
324
+ }
325
+ async getSocialRedirectUri(payload) {
326
+ var _a;
327
+ try {
328
+ this.w3mFrame.initFrame();
329
+ return this.appEvent({
330
+ type: W3mFrameConstants.APP_GET_SOCIAL_REDIRECT_URI,
331
+ payload
332
+ });
333
+ } catch (error) {
334
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error getting social redirect uri");
335
+ throw error;
336
+ }
337
+ }
338
+ async updateEmail(payload) {
339
+ var _a;
340
+ try {
341
+ const response = await this.appEvent({
342
+ type: W3mFrameConstants.APP_UPDATE_EMAIL,
343
+ payload
344
+ });
345
+ this.setNewLastEmailLoginTime();
346
+ return response;
347
+ } catch (error) {
348
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error updating email");
349
+ throw error;
350
+ }
351
+ }
352
+ async updateEmailPrimaryOtp(payload) {
353
+ var _a;
354
+ try {
355
+ return this.appEvent({
356
+ type: W3mFrameConstants.APP_UPDATE_EMAIL_PRIMARY_OTP,
357
+ payload
358
+ });
359
+ } catch (error) {
360
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error updating email primary otp");
361
+ throw error;
362
+ }
363
+ }
364
+ async updateEmailSecondaryOtp(payload) {
365
+ var _a;
366
+ try {
367
+ const response = await this.appEvent({
368
+ type: W3mFrameConstants.APP_UPDATE_EMAIL_SECONDARY_OTP,
369
+ payload
370
+ });
371
+ this.setLoginSuccess(response.newEmail);
372
+ return response;
373
+ } catch (error) {
374
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error updating email secondary otp");
375
+ throw error;
376
+ }
377
+ }
378
+ async syncTheme(payload) {
379
+ var _a;
380
+ try {
381
+ return this.appEvent({
382
+ type: W3mFrameConstants.APP_SYNC_THEME,
383
+ payload
384
+ });
385
+ } catch (error) {
386
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error syncing theme");
387
+ throw error;
388
+ }
389
+ }
390
+ async syncDappData(payload) {
391
+ var _a;
392
+ try {
393
+ return this.appEvent({
394
+ type: W3mFrameConstants.APP_SYNC_DAPP_DATA,
395
+ payload
396
+ });
397
+ } catch (error) {
398
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error syncing dapp data");
399
+ throw error;
400
+ }
401
+ }
402
+ async getSmartAccountEnabledNetworks() {
403
+ var _a;
404
+ try {
405
+ const response = await this.appEvent({
406
+ type: W3mFrameConstants.APP_GET_SMART_ACCOUNT_ENABLED_NETWORKS
407
+ });
408
+ this.persistSmartAccountEnabledNetworks(response.smartAccountEnabledNetworks);
409
+ return response;
410
+ } catch (error) {
411
+ this.persistSmartAccountEnabledNetworks([]);
412
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error getting smart account enabled networks");
413
+ throw error;
414
+ }
415
+ }
416
+ async setPreferredAccount(type) {
417
+ var _a;
418
+ try {
419
+ return this.appEvent({
420
+ type: W3mFrameConstants.APP_SET_PREFERRED_ACCOUNT,
421
+ payload: { type }
422
+ });
423
+ } catch (error) {
424
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error setting preferred account");
425
+ throw error;
426
+ }
427
+ }
428
+ async connect(payload) {
429
+ var _a;
430
+ try {
431
+ const chainId = (payload == null ? void 0 : payload.chainId) || this.getLastUsedChainId() || 1;
432
+ const response = await this.appEvent({
433
+ type: W3mFrameConstants.APP_GET_USER,
434
+ payload: { ...payload, chainId }
435
+ });
436
+ this.setLoginSuccess(response.email);
437
+ this.setLastUsedChainId(response.chainId);
438
+ return response;
439
+ } catch (error) {
440
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error connecting");
441
+ throw error;
442
+ }
443
+ }
444
+ async getUser(payload) {
445
+ var _a;
446
+ try {
447
+ const chainId = (payload == null ? void 0 : payload.chainId) || this.getLastUsedChainId() || 1;
448
+ const response = await this.appEvent({
449
+ type: W3mFrameConstants.APP_GET_USER,
450
+ payload: { ...payload, chainId }
451
+ });
452
+ return response;
453
+ } catch (error) {
454
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error connecting");
455
+ throw error;
456
+ }
457
+ }
458
+ async connectSocial(uri) {
459
+ var _a;
460
+ try {
461
+ const response = await this.appEvent({
462
+ type: W3mFrameConstants.APP_CONNECT_SOCIAL,
463
+ payload: { uri }
464
+ });
465
+ if (response.userName) {
466
+ this.setSocialLoginSuccess(response.userName);
467
+ }
468
+ return response;
469
+ } catch (error) {
470
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error connecting social");
471
+ throw error;
472
+ }
473
+ }
474
+ async getFarcasterUri() {
475
+ var _a;
476
+ try {
477
+ this.w3mFrame.initFrame();
478
+ const response = await this.appEvent({
479
+ type: W3mFrameConstants.APP_GET_FARCASTER_URI
480
+ });
481
+ return response;
482
+ } catch (error) {
483
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error getting farcaster uri");
484
+ throw error;
485
+ }
486
+ }
487
+ async connectFarcaster() {
488
+ var _a;
489
+ try {
490
+ const response = await this.appEvent({
491
+ type: W3mFrameConstants.APP_CONNECT_FARCASTER
492
+ });
493
+ if (response.userName) {
494
+ this.setSocialLoginSuccess(response.userName);
495
+ }
496
+ return response;
497
+ } catch (error) {
498
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error connecting farcaster");
499
+ throw error;
500
+ }
501
+ }
502
+ async switchNetwork(chainId) {
503
+ var _a;
504
+ try {
505
+ const response = await this.appEvent({
506
+ type: W3mFrameConstants.APP_SWITCH_NETWORK,
507
+ payload: { chainId }
508
+ });
509
+ this.setLastUsedChainId(response.chainId);
510
+ return response;
511
+ } catch (error) {
512
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error switching network");
513
+ throw error;
514
+ }
515
+ }
516
+ async disconnect() {
517
+ var _a;
518
+ try {
519
+ const response = await this.appEvent({
520
+ type: W3mFrameConstants.APP_SIGN_OUT
521
+ });
522
+ this.deleteAuthLoginCache();
523
+ return response;
524
+ } catch (error) {
525
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error }, "Error disconnecting");
526
+ throw error;
527
+ }
528
+ }
529
+ async request(req) {
530
+ var _a, _b, _c, _d;
531
+ try {
532
+ if (W3mFrameRpcConstants.GET_CHAIN_ID === req.method) {
533
+ return this.getLastUsedChainId();
534
+ }
535
+ (_a = this.rpcRequestHandler) == null ? void 0 : _a.call(this, req);
536
+ const response = await this.appEvent({
537
+ type: W3mFrameConstants.APP_RPC_REQUEST,
538
+ payload: req
539
+ });
540
+ (_b = this.rpcSuccessHandler) == null ? void 0 : _b.call(this, response, req);
541
+ return response;
542
+ } catch (error) {
543
+ (_c = this.rpcErrorHandler) == null ? void 0 : _c.call(this, error, req);
544
+ (_d = this.w3mLogger) == null ? void 0 : _d.logger.error({ error }, "Error requesting");
545
+ throw error;
546
+ }
547
+ }
548
+ onRpcRequest(callback) {
549
+ this.rpcRequestHandler = callback;
550
+ }
551
+ onRpcSuccess(callback) {
552
+ this.rpcSuccessHandler = callback;
553
+ }
554
+ onRpcError(callback) {
555
+ this.rpcErrorHandler = callback;
556
+ }
557
+ onIsConnected(callback) {
558
+ this.w3mFrame.events.onFrameEvent((event) => {
559
+ if (event.type === W3mFrameConstants.FRAME_IS_CONNECTED_SUCCESS && event.payload.isConnected) {
560
+ callback();
561
+ }
562
+ });
563
+ }
564
+ onNotConnected(callback) {
565
+ this.w3mFrame.events.onFrameEvent((event) => {
566
+ if (event.type === W3mFrameConstants.FRAME_IS_CONNECTED_ERROR) {
567
+ callback();
568
+ }
569
+ if (event.type === W3mFrameConstants.FRAME_IS_CONNECTED_SUCCESS && !event.payload.isConnected) {
570
+ callback();
571
+ }
572
+ });
573
+ }
574
+ onConnect(callback) {
575
+ this.w3mFrame.events.onFrameEvent((event) => {
576
+ if (event.type === W3mFrameConstants.FRAME_GET_USER_SUCCESS) {
577
+ callback(event.payload);
578
+ }
579
+ });
580
+ }
581
+ onSocialConnected(callback) {
582
+ this.w3mFrame.events.onFrameEvent((event) => {
583
+ if (event.type === W3mFrameConstants.FRAME_CONNECT_SOCIAL_SUCCESS) {
584
+ callback(event.payload);
585
+ }
586
+ });
587
+ }
588
+ async getCapabilities() {
589
+ try {
590
+ const capabilities = await this.request({
591
+ method: "wallet_getCapabilities"
592
+ });
593
+ return capabilities || {};
594
+ } catch {
595
+ return {};
596
+ }
597
+ }
598
+ onSetPreferredAccount(callback) {
599
+ this.w3mFrame.events.onFrameEvent((event) => {
600
+ if (event.type === W3mFrameConstants.FRAME_SET_PREFERRED_ACCOUNT_SUCCESS) {
601
+ callback(event.payload);
602
+ } else if (event.type === W3mFrameConstants.FRAME_SET_PREFERRED_ACCOUNT_ERROR) {
603
+ callback({ type: W3mFrameRpcConstants.ACCOUNT_TYPES.EOA });
604
+ }
605
+ });
606
+ }
607
+ onGetSmartAccountEnabledNetworks(callback) {
608
+ this.w3mFrame.events.onFrameEvent((event) => {
609
+ if (event.type === W3mFrameConstants.FRAME_GET_SMART_ACCOUNT_ENABLED_NETWORKS_SUCCESS) {
610
+ callback(event.payload.smartAccountEnabledNetworks);
611
+ } else if (event.type === W3mFrameConstants.FRAME_GET_SMART_ACCOUNT_ENABLED_NETWORKS_ERROR) {
612
+ callback([]);
613
+ }
614
+ });
615
+ }
616
+ getAvailableChainIds() {
617
+ return Object.keys(this.w3mFrame.networks);
618
+ }
619
+ rejectRpcRequests() {
620
+ var _a;
621
+ try {
622
+ this.openRpcRequests.forEach(({ abortController, method }) => {
623
+ if (!W3mFrameRpcConstants.SAFE_RPC_METHODS.includes(method)) {
624
+ abortController.abort();
625
+ }
626
+ });
627
+ this.openRpcRequests = [];
628
+ } catch (e) {
629
+ (_a = this.w3mLogger) == null ? void 0 : _a.logger.error({ error: e }, "Error aborting RPC request");
630
+ }
631
+ }
632
+ async appEvent(event) {
633
+ await this.w3mFrame.frameLoadPromise;
634
+ let timer = void 0;
635
+ function replaceEventType(type2) {
636
+ return type2.replace("@w3m-app/", "");
637
+ }
638
+ const abortController = new AbortController();
639
+ const type = replaceEventType(event.type);
640
+ const shouldCheckForTimeout = [
641
+ W3mFrameConstants.APP_CONNECT_EMAIL,
642
+ W3mFrameConstants.APP_CONNECT_DEVICE,
643
+ W3mFrameConstants.APP_CONNECT_OTP,
644
+ W3mFrameConstants.APP_CONNECT_SOCIAL,
645
+ W3mFrameConstants.APP_GET_SOCIAL_REDIRECT_URI
646
+ ].map(replaceEventType).includes(type);
647
+ if (shouldCheckForTimeout) {
648
+ timer = setTimeout(() => {
649
+ var _a;
650
+ (_a = this.onTimeout) == null ? void 0 : _a.call(this);
651
+ abortController.abort();
652
+ }, 3e4);
653
+ }
654
+ return new Promise((resolve, reject) => {
655
+ var _a, _b, _c;
656
+ const id = Math.random().toString(36).substring(7);
657
+ (_c = (_a = this.w3mLogger) == null ? void 0 : (_b = _a.logger).info) == null ? void 0 : _c.call(_b, { event, id }, "Sending app event");
658
+ this.w3mFrame.events.postAppEvent({ ...event, id });
659
+ if (type === "RPC_REQUEST") {
660
+ const rpcEvent = event;
661
+ this.openRpcRequests = [...this.openRpcRequests, { ...rpcEvent.payload, abortController }];
662
+ }
663
+ abortController.signal.addEventListener("abort", () => {
664
+ if (type === "RPC_REQUEST") {
665
+ reject(new Error("Request was aborted"));
666
+ } else if (type !== "GET_FARCASTER_URI") {
667
+ reject(new Error("Something went wrong"));
668
+ }
669
+ });
670
+ function handler(framEvent, logger) {
671
+ var _a2, _b2, _c2;
672
+ if (framEvent.id !== id) {
673
+ return;
674
+ }
675
+ (_b2 = logger == null ? void 0 : (_a2 = logger.logger).info) == null ? void 0 : _b2.call(_a2, { framEvent, id }, "Received frame response");
676
+ if (framEvent.type === `@w3m-frame/${type}_SUCCESS`) {
677
+ if (timer) {
678
+ clearTimeout(timer);
679
+ }
680
+ if ("payload" in framEvent) {
681
+ resolve(framEvent.payload);
682
+ }
683
+ resolve(void 0);
684
+ } else if (framEvent.type === `@w3m-frame/${type}_ERROR`) {
685
+ if (timer) {
686
+ clearTimeout(timer);
687
+ }
688
+ if ("payload" in framEvent) {
689
+ reject(new Error(((_c2 = framEvent.payload) == null ? void 0 : _c2.message) || "An error occurred"));
690
+ }
691
+ reject(new Error("An error occurred"));
692
+ }
693
+ }
694
+ this.w3mFrame.events.registerFrameEventHandler(id, (frameEvent) => handler(frameEvent, this.w3mLogger), abortController.signal);
695
+ });
696
+ }
697
+ setNewLastEmailLoginTime() {
698
+ W3mFrameStorage.set(W3mFrameConstants.LAST_EMAIL_LOGIN_TIME, Date.now().toString());
699
+ }
700
+ setSocialLoginSuccess(username) {
701
+ W3mFrameStorage.set(W3mFrameConstants.SOCIAL_USERNAME, username);
702
+ }
703
+ setLoginSuccess(email) {
704
+ if (email) {
705
+ W3mFrameStorage.set(W3mFrameConstants.EMAIL, email);
706
+ }
707
+ W3mFrameStorage.set(W3mFrameConstants.EMAIL_LOGIN_USED_KEY, "true");
708
+ W3mFrameStorage.delete(W3mFrameConstants.LAST_EMAIL_LOGIN_TIME);
709
+ }
710
+ deleteAuthLoginCache() {
711
+ W3mFrameStorage.delete(W3mFrameConstants.EMAIL_LOGIN_USED_KEY);
712
+ W3mFrameStorage.delete(W3mFrameConstants.EMAIL);
713
+ W3mFrameStorage.delete(W3mFrameConstants.LAST_USED_CHAIN_KEY);
714
+ W3mFrameStorage.delete(W3mFrameConstants.SOCIAL_USERNAME);
715
+ }
716
+ setLastUsedChainId(chainId) {
717
+ if (chainId) {
718
+ W3mFrameStorage.set(W3mFrameConstants.LAST_USED_CHAIN_KEY, String(chainId));
719
+ }
720
+ }
721
+ getLastUsedChainId() {
722
+ const chainId = W3mFrameStorage.get(W3mFrameConstants.LAST_USED_CHAIN_KEY) ?? void 0;
723
+ const numberChainId = Number(chainId);
724
+ return isNaN(numberChainId) ? chainId : numberChainId;
725
+ }
726
+ persistSmartAccountEnabledNetworks(networks) {
727
+ W3mFrameStorage.set(W3mFrameConstants.SMART_ACCOUNT_ENABLED_NETWORKS, networks.join(","));
728
+ }
729
+ }
730
+ const PresetsUtil = {
731
+ NetworkImageIds: {
732
+ 1: "ba0ba0cd-17c6-4806-ad93-f9d174f17900",
733
+ 42161: "3bff954d-5cb0-47a0-9a23-d20192e74600",
734
+ 43114: "30c46e53-e989-45fb-4549-be3bd4eb3b00",
735
+ 56: "93564157-2e8e-4ce7-81df-b264dbee9b00",
736
+ 250: "06b26297-fe0c-4733-5d6b-ffa5498aac00",
737
+ 10: "ab9c186a-c52f-464b-2906-ca59d760a400",
738
+ 137: "41d04d42-da3b-4453-8506-668cc0727900",
739
+ 100: "02b53f6a-e3d4-479e-1cb4-21178987d100",
740
+ 9001: "f926ff41-260d-4028-635e-91913fc28e00",
741
+ 324: "b310f07f-4ef7-49f3-7073-2a0a39685800",
742
+ 314: "5a73b3dd-af74-424e-cae0-0de859ee9400",
743
+ 4689: "34e68754-e536-40da-c153-6ef2e7188a00",
744
+ 1088: "3897a66d-40b9-4833-162f-a2c90531c900",
745
+ 1284: "161038da-44ae-4ec7-1208-0ea569454b00",
746
+ 1285: "f1d73bb6-5450-4e18-38f7-fb6484264a00",
747
+ 7777777: "845c60df-d429-4991-e687-91ae45791600",
748
+ 42220: "ab781bbc-ccc6-418d-d32d-789b15da1f00",
749
+ 8453: "7289c336-3981-4081-c5f4-efc26ac64a00",
750
+ 1313161554: "3ff73439-a619-4894-9262-4470c773a100",
751
+ 2020: "b8101fc0-9c19-4b6f-ec65-f6dfff106e00",
752
+ 2021: "b8101fc0-9c19-4b6f-ec65-f6dfff106e00",
753
+ "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp": "a1b58899-f671-4276-6a5e-56ca5bd59700",
754
+ "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z": "a1b58899-f671-4276-6a5e-56ca5bd59700",
755
+ EtWTRABZaYq6iMfeYKouRu166VU2xqa1: "a1b58899-f671-4276-6a5e-56ca5bd59700",
756
+ "000000000019d6689c085ae165831e93": "21c895fa-e105-4829-9434-378bb54fa600",
757
+ "000000000933ea01ad0ee984209779ba": "220bcb01-ba47-41d3-fe5b-e29bbc4a4b00"
758
+ },
759
+ ConnectorImageIds: {
760
+ [ConstantsUtil.CONNECTOR_ID.COINBASE]: "0c2840c3-5b04-4c44-9661-fbd4b49e1800",
761
+ [ConstantsUtil.CONNECTOR_ID.COINBASE_SDK]: "0c2840c3-5b04-4c44-9661-fbd4b49e1800",
762
+ [ConstantsUtil.CONNECTOR_ID.SAFE]: "461db637-8616-43ce-035a-d89b8a1d5800",
763
+ [ConstantsUtil.CONNECTOR_ID.LEDGER]: "54a1aa77-d202-4f8d-0fb2-5d2bb6db0300",
764
+ [ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT]: "ef1a1fcf-7fe8-4d69-bd6d-fda1345b4400",
765
+ [ConstantsUtil.CONNECTOR_ID.INJECTED]: "07ba87ed-43aa-4adf-4540-9e6a2b9cae00"
766
+ },
767
+ ConnectorNamesMap: {
768
+ [ConstantsUtil.CONNECTOR_ID.INJECTED]: "Browser Wallet",
769
+ [ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT]: "WalletConnect",
770
+ [ConstantsUtil.CONNECTOR_ID.COINBASE]: "Coinbase",
771
+ [ConstantsUtil.CONNECTOR_ID.COINBASE_SDK]: "Coinbase",
772
+ [ConstantsUtil.CONNECTOR_ID.LEDGER]: "Ledger",
773
+ [ConstantsUtil.CONNECTOR_ID.SAFE]: "Safe"
774
+ }
775
+ };
776
+ const HelpersUtil = {
777
+ getCaipTokens(tokens) {
778
+ if (!tokens) {
779
+ return void 0;
780
+ }
781
+ const caipTokens = {};
782
+ Object.entries(tokens).forEach(([id, token]) => {
783
+ caipTokens[`${ConstantsUtil$1.EIP155}:${id}`] = token;
784
+ });
785
+ return caipTokens;
786
+ },
787
+ isLowerCaseMatch(str1, str2) {
788
+ return (str1 == null ? void 0 : str1.toLowerCase()) === (str2 == null ? void 0 : str2.toLowerCase());
789
+ }
790
+ };
791
+ const ErrorUtil = {
792
+ UniversalProviderErrors: {
793
+ UNAUTHORIZED_DOMAIN_NOT_ALLOWED: {
794
+ message: "Unauthorized: origin not allowed",
795
+ alertErrorKey: "INVALID_APP_CONFIGURATION"
796
+ },
797
+ JWT_VALIDATION_ERROR: {
798
+ message: "JWT validation error: JWT Token is not yet valid",
799
+ alertErrorKey: "JWT_TOKEN_NOT_VALID"
800
+ },
801
+ INVALID_KEY: {
802
+ message: "Unauthorized: invalid key",
803
+ alertErrorKey: "INVALID_PROJECT_ID"
804
+ }
805
+ },
806
+ ALERT_ERRORS: {
807
+ SWITCH_NETWORK_NOT_FOUND: {
808
+ shortMessage: "Network Not Found",
809
+ longMessage: "Network not found - please make sure it is included in 'networks' array in createAppKit function"
810
+ },
811
+ INVALID_APP_CONFIGURATION: {
812
+ shortMessage: "Invalid App Configuration",
813
+ longMessage: () => `Origin ${isSafe() ? window.origin : "unknown"} not found on Allowlist - update configuration on cloud.reown.com`
814
+ },
815
+ SOCIALS_TIMEOUT: {
816
+ shortMessage: "Invalid App Configuration",
817
+ longMessage: () => "There was an issue loading the embedded wallet. Please verify that your domain is allowed at cloud.reown.com"
818
+ },
819
+ JWT_TOKEN_NOT_VALID: {
820
+ shortMessage: "Session Expired",
821
+ longMessage: "Invalid session found on UniversalProvider - please check your time settings and connect again"
822
+ },
823
+ INVALID_PROJECT_ID: {
824
+ shortMessage: "Invalid App Configuration",
825
+ longMessage: "Invalid Project ID - update configuration"
826
+ },
827
+ PROJECT_ID_NOT_CONFIGURED: {
828
+ shortMessage: "Project ID Not Configured",
829
+ longMessage: "Project ID Not Configured - update configuration on cloud.reown.com"
830
+ }
831
+ }
832
+ };
833
+ function isSafe() {
834
+ return typeof window !== "undefined";
835
+ }
836
+ const LoggerUtil = {
837
+ createLogger(onError, level = "error") {
838
+ const loggerOptions = k({
839
+ level
840
+ });
841
+ const { logger } = A({
842
+ opts: loggerOptions
843
+ });
844
+ logger.error = (...args) => {
845
+ for (const arg of args) {
846
+ if (arg instanceof Error) {
847
+ onError(arg, ...args);
848
+ return;
849
+ }
850
+ }
851
+ onError(void 0, ...args);
852
+ };
853
+ return logger;
854
+ }
855
+ };
856
+ const RPC_URL_HOST = "rpc.walletconnect.org";
857
+ function getBlockchainApiRpcUrl(caipNetworkId, projectId) {
858
+ const url = new URL("https://rpc.walletconnect.org/v1/");
859
+ url.searchParams.set("chainId", caipNetworkId);
860
+ url.searchParams.set("projectId", projectId);
861
+ return url.toString();
862
+ }
863
+ const WC_HTTP_RPC_SUPPORTED_CHAINS = [
864
+ "near:mainnet",
865
+ "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
866
+ "eip155:1101",
867
+ "eip155:56",
868
+ "eip155:42161",
869
+ "eip155:7777777",
870
+ "eip155:59144",
871
+ "eip155:324",
872
+ "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
873
+ "eip155:5000",
874
+ "solana:4sgjmw1sunhzsxgspuhpqldx6wiyjntz",
875
+ "eip155:80084",
876
+ "eip155:5003",
877
+ "eip155:100",
878
+ "eip155:8453",
879
+ "eip155:42220",
880
+ "eip155:1313161555",
881
+ "eip155:17000",
882
+ "eip155:1",
883
+ "eip155:300",
884
+ "eip155:1313161554",
885
+ "eip155:1329",
886
+ "eip155:84532",
887
+ "eip155:421614",
888
+ "eip155:11155111",
889
+ "eip155:8217",
890
+ "eip155:43114",
891
+ "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z",
892
+ "eip155:999999999",
893
+ "eip155:11155420",
894
+ "eip155:80002",
895
+ "eip155:97",
896
+ "eip155:43113",
897
+ "eip155:137",
898
+ "eip155:10",
899
+ "eip155:1301",
900
+ "bip122:000000000019d6689c085ae165831e93",
901
+ "bip122:000000000933ea01ad0ee984209779ba"
902
+ ];
903
+ const CaipNetworksUtil = {
904
+ extendRpcUrlWithProjectId(rpcUrl, projectId) {
905
+ let isReownUrl = false;
906
+ try {
907
+ const url = new URL(rpcUrl);
908
+ isReownUrl = url.host === RPC_URL_HOST;
909
+ } catch (e) {
910
+ isReownUrl = false;
911
+ }
912
+ if (isReownUrl) {
913
+ const url = new URL(rpcUrl);
914
+ if (!url.searchParams.has("projectId")) {
915
+ url.searchParams.set("projectId", projectId);
916
+ }
917
+ return url.toString();
918
+ }
919
+ return rpcUrl;
920
+ },
921
+ isCaipNetwork(network) {
922
+ return "chainNamespace" in network && "caipNetworkId" in network;
923
+ },
924
+ getChainNamespace(network) {
925
+ if (this.isCaipNetwork(network)) {
926
+ return network.chainNamespace;
927
+ }
928
+ return ConstantsUtil.CHAIN.EVM;
929
+ },
930
+ getCaipNetworkId(network) {
931
+ if (this.isCaipNetwork(network)) {
932
+ return network.caipNetworkId;
933
+ }
934
+ return `${ConstantsUtil.CHAIN.EVM}:${network.id}`;
935
+ },
936
+ getDefaultRpcUrl(caipNetwork, caipNetworkId, projectId) {
937
+ var _a, _b, _c;
938
+ const defaultRpcUrl = (_c = (_b = (_a = caipNetwork.rpcUrls) == null ? void 0 : _a.default) == null ? void 0 : _b.http) == null ? void 0 : _c[0];
939
+ if (WC_HTTP_RPC_SUPPORTED_CHAINS.includes(caipNetworkId)) {
940
+ return getBlockchainApiRpcUrl(caipNetworkId, projectId);
941
+ }
942
+ return defaultRpcUrl || "";
943
+ },
944
+ extendCaipNetwork(caipNetwork, { customNetworkImageUrls, projectId, customRpc }) {
945
+ var _a, _b, _c, _d;
946
+ const caipNetworkId = this.getCaipNetworkId(caipNetwork);
947
+ const chainNamespace = this.getChainNamespace(caipNetwork);
948
+ const chainDefaultUrl = (_c = (_b = (_a = caipNetwork == null ? void 0 : caipNetwork.rpcUrls) == null ? void 0 : _a["chainDefault"]) == null ? void 0 : _b.http) == null ? void 0 : _c[0];
949
+ let rpcUrl = "";
950
+ if (customRpc) {
951
+ rpcUrl = ((_d = caipNetwork.rpcUrls.default.http) == null ? void 0 : _d[0]) || "";
952
+ } else {
953
+ rpcUrl = this.getDefaultRpcUrl(caipNetwork, caipNetworkId, projectId);
954
+ }
955
+ return {
956
+ ...caipNetwork,
957
+ chainNamespace,
958
+ caipNetworkId,
959
+ assets: {
960
+ imageId: PresetsUtil.NetworkImageIds[caipNetwork.id],
961
+ imageUrl: customNetworkImageUrls == null ? void 0 : customNetworkImageUrls[caipNetwork.id]
962
+ },
963
+ rpcUrls: {
964
+ ...caipNetwork.rpcUrls,
965
+ default: {
966
+ http: [rpcUrl]
967
+ },
968
+ chainDefault: {
969
+ http: [chainDefaultUrl || caipNetwork.rpcUrls.default.http[0] || ""]
970
+ }
971
+ }
972
+ };
973
+ },
974
+ extendCaipNetworks(caipNetworks, { customNetworkImageUrls, projectId, customRpcChainIds }) {
975
+ return caipNetworks.map((caipNetwork) => CaipNetworksUtil.extendCaipNetwork(caipNetwork, {
976
+ customNetworkImageUrls,
977
+ projectId,
978
+ customRpc: customRpcChainIds == null ? void 0 : customRpcChainIds.includes(caipNetwork.id)
979
+ }));
980
+ },
981
+ getViemTransport(caipNetwork) {
982
+ var _a;
983
+ const defaultRpcUrl = (_a = caipNetwork.rpcUrls.default.http) == null ? void 0 : _a[0];
984
+ if (!WC_HTTP_RPC_SUPPORTED_CHAINS.includes(caipNetwork.caipNetworkId)) {
985
+ return http(defaultRpcUrl);
986
+ }
987
+ return fallback([
988
+ http(defaultRpcUrl, {
989
+ fetchOptions: {
990
+ headers: {
991
+ "Content-Type": "text/plain"
992
+ }
993
+ }
994
+ }),
995
+ http(defaultRpcUrl)
996
+ ]);
997
+ }
998
+ };
999
+ class W3mFrameProviderSingleton {
1000
+ // eslint-disable-next-line @typescript-eslint/no-empty-function -- This is a singleton
1001
+ constructor() {
1002
+ }
1003
+ static getInstance({ projectId, chainId, enableLogger, onTimeout }) {
1004
+ if (!W3mFrameProviderSingleton.instance) {
1005
+ W3mFrameProviderSingleton.instance = new W3mFrameProvider({
1006
+ projectId,
1007
+ chainId,
1008
+ enableLogger,
1009
+ onTimeout
1010
+ });
1011
+ }
1012
+ return W3mFrameProviderSingleton.instance;
1013
+ }
1014
+ }
1015
+ const WcConstantsUtil = {
1016
+ ERROR_CODE_UNRECOGNIZED_CHAIN_ID: 4902,
1017
+ ERROR_CODE_DEFAULT: 5e3
1018
+ };
1019
+ const WcHelpersUtil = {
1020
+ getMethodsByChainNamespace(chainNamespace) {
1021
+ switch (chainNamespace) {
1022
+ case "solana":
1023
+ return [
1024
+ "solana_signMessage",
1025
+ "solana_signTransaction",
1026
+ "solana_requestAccounts",
1027
+ "solana_getAccounts",
1028
+ "solana_signAllTransactions",
1029
+ "solana_signAndSendTransaction"
1030
+ ];
1031
+ case "eip155":
1032
+ return [
1033
+ "personal_sign",
1034
+ "eth_sign",
1035
+ "eth_signTransaction",
1036
+ "eth_signTypedData",
1037
+ "eth_signTypedData_v3",
1038
+ "eth_signTypedData_v4",
1039
+ "eth_sendRawTransaction",
1040
+ "eth_sendTransaction",
1041
+ "wallet_getCapabilities",
1042
+ "wallet_sendCalls",
1043
+ "wallet_showCallsStatus",
1044
+ "wallet_getCallsStatus",
1045
+ "wallet_grantPermissions",
1046
+ "wallet_revokePermissions",
1047
+ "wallet_switchEthereumChain",
1048
+ //EIP-7811
1049
+ "wallet_getAssets"
1050
+ ];
1051
+ case "bip122":
1052
+ return ["sendTransfer", "signMessage", "signPsbt", "getAccountAddresses"];
1053
+ default:
1054
+ return [];
1055
+ }
1056
+ },
1057
+ createNamespaces(caipNetworks) {
1058
+ return caipNetworks.reduce((acc, chain) => {
1059
+ const { id, chainNamespace, rpcUrls } = chain;
1060
+ const rpcUrl = rpcUrls.default.http[0];
1061
+ const methods = this.getMethodsByChainNamespace(chainNamespace);
1062
+ if (!acc[chainNamespace]) {
1063
+ acc[chainNamespace] = {
1064
+ methods,
1065
+ events: ["accountsChanged", "chainChanged"],
1066
+ chains: [],
1067
+ rpcMap: {}
1068
+ };
1069
+ }
1070
+ const caipNetworkId = `${chainNamespace}:${id}`;
1071
+ const namespace = acc[chainNamespace];
1072
+ namespace.chains.push(caipNetworkId);
1073
+ switch (caipNetworkId) {
1074
+ case solana.caipNetworkId:
1075
+ namespace.chains.push(solana.deprecatedCaipNetworkId);
1076
+ break;
1077
+ case solanaDevnet.caipNetworkId:
1078
+ namespace.chains.push(solanaDevnet.deprecatedCaipNetworkId);
1079
+ break;
1080
+ }
1081
+ if ((namespace == null ? void 0 : namespace.rpcMap) && rpcUrl) {
1082
+ namespace.rpcMap[id] = rpcUrl;
1083
+ }
1084
+ return acc;
1085
+ }, {});
1086
+ },
1087
+ resolveReownName: async (name) => {
1088
+ var _a;
1089
+ const wcNameAddress = await EnsController.resolveName(name);
1090
+ const networkNameAddresses = Object.values(wcNameAddress == null ? void 0 : wcNameAddress.addresses) || [];
1091
+ return ((_a = networkNameAddresses[0]) == null ? void 0 : _a.address) || false;
1092
+ },
1093
+ getChainsFromNamespaces(namespaces = {}) {
1094
+ return Object.values(namespaces).flatMap((namespace) => {
1095
+ const chains = namespace.chains || [];
1096
+ const accountsChains = namespace.accounts.map((account) => {
1097
+ const [chainNamespace, chainId] = account.split(":");
1098
+ return `${chainNamespace}:${chainId}`;
1099
+ });
1100
+ return Array.from(/* @__PURE__ */ new Set([...chains, ...accountsChains]));
1101
+ });
1102
+ },
1103
+ isSessionEventData(data) {
1104
+ return typeof data === "object" && data !== null && "id" in data && "topic" in data && "params" in data && typeof data.params === "object" && data.params !== null && "chainId" in data.params && "event" in data.params && typeof data.params.event === "object" && data.params.event !== null;
1105
+ }
1106
+ };
1107
+ class WalletConnectConnector {
1108
+ constructor({ provider, caipNetworks, namespace }) {
1109
+ this.id = ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT;
1110
+ this.name = PresetsUtil.ConnectorNamesMap[ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT];
1111
+ this.type = "WALLET_CONNECT";
1112
+ this.imageId = PresetsUtil.ConnectorImageIds[ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT];
1113
+ this.caipNetworks = caipNetworks;
1114
+ this.provider = provider;
1115
+ this.chain = namespace;
1116
+ }
1117
+ get chains() {
1118
+ return this.caipNetworks;
1119
+ }
1120
+ async connectWalletConnect() {
1121
+ const isAuthenticated = await this.authenticate();
1122
+ if (!isAuthenticated) {
1123
+ await this.provider.connect({
1124
+ optionalNamespaces: WcHelpersUtil.createNamespaces(this.caipNetworks)
1125
+ });
1126
+ }
1127
+ return {
1128
+ clientId: await this.provider.client.core.crypto.getClientId(),
1129
+ session: this.provider.session
1130
+ };
1131
+ }
1132
+ async disconnect() {
1133
+ await this.provider.disconnect();
1134
+ }
1135
+ async authenticate() {
1136
+ const chains = this.chains.map((network) => network.caipNetworkId);
1137
+ return SIWXUtil.universalProviderAuthenticate({
1138
+ universalProvider: this.provider,
1139
+ chains,
1140
+ methods: OPTIONAL_METHODS
1141
+ });
1142
+ }
1143
+ }
1144
+ const OPTIONAL_METHODS = [
1145
+ "eth_accounts",
1146
+ "eth_requestAccounts",
1147
+ "eth_sendRawTransaction",
1148
+ "eth_sign",
1149
+ "eth_signTransaction",
1150
+ "eth_signTypedData",
1151
+ "eth_signTypedData_v3",
1152
+ "eth_signTypedData_v4",
1153
+ "eth_sendTransaction",
1154
+ "personal_sign",
1155
+ "wallet_switchEthereumChain",
1156
+ "wallet_addEthereumChain",
1157
+ "wallet_getPermissions",
1158
+ "wallet_requestPermissions",
1159
+ "wallet_registerOnboarding",
1160
+ "wallet_watchAsset",
1161
+ "wallet_scanQRCode",
1162
+ // EIP-5792
1163
+ "wallet_getCallsStatus",
1164
+ "wallet_sendCalls",
1165
+ "wallet_getCapabilities",
1166
+ // EIP-7715
1167
+ "wallet_grantPermissions",
1168
+ "wallet_revokePermissions",
1169
+ //EIP-7811
1170
+ "wallet_getAssets"
1171
+ ];
1172
+ class AdapterBlueprint {
1173
+ /**
1174
+ * Creates an instance of AdapterBlueprint.
1175
+ * @param {AdapterBlueprint.Params} params - The parameters for initializing the adapter
1176
+ */
1177
+ constructor(params) {
1178
+ this.availableConnectors = [];
1179
+ this.eventListeners = /* @__PURE__ */ new Map();
1180
+ if (params) {
1181
+ this.construct(params);
1182
+ }
1183
+ }
1184
+ /**
1185
+ * Initializes the adapter with the given parameters.
1186
+ * @param {AdapterBlueprint.Params} params - The parameters for initializing the adapter
1187
+ */
1188
+ construct(params) {
1189
+ this.caipNetworks = params.networks;
1190
+ this.projectId = params.projectId;
1191
+ this.namespace = params.namespace;
1192
+ }
1193
+ /**
1194
+ * Gets the available connectors.
1195
+ * @returns {Connector[]} An array of available connectors
1196
+ */
1197
+ get connectors() {
1198
+ return this.availableConnectors;
1199
+ }
1200
+ /**
1201
+ * Gets the supported networks.
1202
+ * @returns {CaipNetwork[]} An array of supported networks
1203
+ */
1204
+ get networks() {
1205
+ return this.caipNetworks || [];
1206
+ }
1207
+ /**
1208
+ * Sets the auth provider.
1209
+ * @param {W3mFrameProvider} authProvider - The auth provider instance
1210
+ */
1211
+ setAuthProvider(authProvider) {
1212
+ this.addConnector({
1213
+ id: ConstantsUtil.CONNECTOR_ID.AUTH,
1214
+ type: "AUTH",
1215
+ name: ConstantsUtil.CONNECTOR_NAMES.AUTH,
1216
+ provider: authProvider,
1217
+ imageId: PresetsUtil.ConnectorImageIds[ConstantsUtil.CONNECTOR_ID.AUTH],
1218
+ chain: this.namespace,
1219
+ chains: []
1220
+ });
1221
+ }
1222
+ /**
1223
+ * Adds one or more connectors to the available connectors list.
1224
+ * @param {...Connector} connectors - The connectors to add
1225
+ */
1226
+ addConnector(...connectors) {
1227
+ const connectorsAdded = /* @__PURE__ */ new Set();
1228
+ this.availableConnectors = [...connectors, ...this.availableConnectors].filter((connector) => {
1229
+ if (connectorsAdded.has(connector.id)) {
1230
+ return false;
1231
+ }
1232
+ connectorsAdded.add(connector.id);
1233
+ return true;
1234
+ });
1235
+ this.emit("connectors", this.availableConnectors);
1236
+ }
1237
+ setStatus(status, chainNamespace) {
1238
+ AccountController.setStatus(status, chainNamespace);
1239
+ }
1240
+ /**
1241
+ * Adds an event listener for a specific event.
1242
+ * @template T
1243
+ * @param {T} eventName - The name of the event
1244
+ * @param {EventCallback<T>} callback - The callback function to be called when the event is emitted
1245
+ */
1246
+ on(eventName, callback) {
1247
+ var _a;
1248
+ if (!this.eventListeners.has(eventName)) {
1249
+ this.eventListeners.set(eventName, /* @__PURE__ */ new Set());
1250
+ }
1251
+ (_a = this.eventListeners.get(eventName)) == null ? void 0 : _a.add(callback);
1252
+ }
1253
+ /**
1254
+ * Removes an event listener for a specific event.
1255
+ * @template T
1256
+ * @param {T} eventName - The name of the event
1257
+ * @param {EventCallback<T>} callback - The callback function to be removed
1258
+ */
1259
+ off(eventName, callback) {
1260
+ const listeners = this.eventListeners.get(eventName);
1261
+ if (listeners) {
1262
+ listeners.delete(callback);
1263
+ }
1264
+ }
1265
+ /**
1266
+ * Removes all event listeners.
1267
+ */
1268
+ removeAllEventListeners() {
1269
+ this.eventListeners.forEach((listeners) => {
1270
+ listeners.clear();
1271
+ });
1272
+ }
1273
+ /**
1274
+ * Emits an event with the given name and optional data.
1275
+ * @template T
1276
+ * @param {T} eventName - The name of the event to emit
1277
+ * @param {EventData[T]} [data] - The optional data to be passed to the event listeners
1278
+ */
1279
+ emit(eventName, data) {
1280
+ const listeners = this.eventListeners.get(eventName);
1281
+ if (listeners) {
1282
+ listeners.forEach((callback) => callback(data));
1283
+ }
1284
+ }
1285
+ /**
1286
+ * Connects to WalletConnect.
1287
+ * @param {number | string} [_chainId] - Optional chain ID to connect to
1288
+ */
1289
+ async connectWalletConnect(_chainId) {
1290
+ const connector = this.getWalletConnectConnector();
1291
+ const result = await connector.connectWalletConnect();
1292
+ return { clientId: result.clientId };
1293
+ }
1294
+ /**
1295
+ * Switches the network.
1296
+ * @param {AdapterBlueprint.SwitchNetworkParams} params - Network switching parameters
1297
+ */
1298
+ async switchNetwork(params) {
1299
+ const { caipNetwork, providerType } = params;
1300
+ if (!params.provider) {
1301
+ return;
1302
+ }
1303
+ const provider = "provider" in params.provider ? params.provider.provider : params.provider;
1304
+ if (providerType === "WALLET_CONNECT") {
1305
+ provider.setDefaultChain(caipNetwork.caipNetworkId);
1306
+ return;
1307
+ }
1308
+ if (provider && providerType === "AUTH") {
1309
+ const authProvider = provider;
1310
+ await authProvider.switchNetwork(caipNetwork.caipNetworkId);
1311
+ const user = await authProvider.getUser({
1312
+ chainId: caipNetwork.caipNetworkId,
1313
+ preferredAccountType: OptionsController.state.defaultAccountTypes[caipNetwork.chainNamespace]
1314
+ });
1315
+ this.emit("switchNetwork", user);
1316
+ }
1317
+ }
1318
+ getWalletConnectConnector() {
1319
+ const connector = this.connectors.find((c) => c instanceof WalletConnectConnector);
1320
+ if (!connector) {
1321
+ throw new Error("WalletConnectConnector not found");
1322
+ }
1323
+ return connector;
1324
+ }
1325
+ }
1326
+ class UniversalAdapter extends AdapterBlueprint {
1327
+ setUniversalProvider(universalProvider) {
1328
+ this.addConnector(new WalletConnectConnector({
1329
+ provider: universalProvider,
1330
+ caipNetworks: this.caipNetworks || [],
1331
+ namespace: this.namespace
1332
+ }));
1333
+ }
1334
+ async connect(params) {
1335
+ return Promise.resolve({
1336
+ id: "WALLET_CONNECT",
1337
+ type: "WALLET_CONNECT",
1338
+ chainId: Number(params.chainId),
1339
+ provider: this.provider,
1340
+ address: ""
1341
+ });
1342
+ }
1343
+ async disconnect() {
1344
+ try {
1345
+ const connector = this.getWalletConnectConnector();
1346
+ await connector.disconnect();
1347
+ } catch (error) {
1348
+ console.warn("UniversalAdapter:disconnect - error", error);
1349
+ }
1350
+ }
1351
+ async getAccounts({ namespace }) {
1352
+ var _a, _b, _c, _d;
1353
+ const provider = this.provider;
1354
+ const addresses = ((_d = (_c = (_b = (_a = provider == null ? void 0 : provider.session) == null ? void 0 : _a.namespaces) == null ? void 0 : _b[namespace]) == null ? void 0 : _c.accounts) == null ? void 0 : _d.map((account) => {
1355
+ const [, , address] = account.split(":");
1356
+ return address;
1357
+ }).filter((address, index, self) => self.indexOf(address) === index)) || [];
1358
+ return Promise.resolve({
1359
+ accounts: addresses.map((address) => CoreHelperUtil.createAccount(namespace, address, namespace === "bip122" ? "payment" : "eoa"))
1360
+ });
1361
+ }
1362
+ async syncConnectors() {
1363
+ return Promise.resolve();
1364
+ }
1365
+ async getBalance(params) {
1366
+ var _a, _b, _c, _d, _e;
1367
+ const isBalanceSupported = params.caipNetwork && ConstantsUtil$2.BALANCE_SUPPORTED_CHAINS.includes((_a = params.caipNetwork) == null ? void 0 : _a.chainNamespace);
1368
+ if (!isBalanceSupported || ((_b = params.caipNetwork) == null ? void 0 : _b.testnet)) {
1369
+ return {
1370
+ balance: "0.00",
1371
+ symbol: ((_c = params.caipNetwork) == null ? void 0 : _c.nativeCurrency.symbol) || ""
1372
+ };
1373
+ }
1374
+ if (AccountController.state.balanceLoading && params.chainId === ((_d = ChainController.state.activeCaipNetwork) == null ? void 0 : _d.id)) {
1375
+ return {
1376
+ balance: AccountController.state.balance || "0.00",
1377
+ symbol: AccountController.state.balanceSymbol || ""
1378
+ };
1379
+ }
1380
+ const balances = await AccountController.fetchTokenBalance();
1381
+ const balance = balances.find((b) => {
1382
+ var _a2, _b2;
1383
+ return b.chainId === `${(_a2 = params.caipNetwork) == null ? void 0 : _a2.chainNamespace}:${params.chainId}` && b.symbol === ((_b2 = params.caipNetwork) == null ? void 0 : _b2.nativeCurrency.symbol);
1384
+ });
1385
+ return {
1386
+ balance: (balance == null ? void 0 : balance.quantity.numeric) || "0.00",
1387
+ symbol: (balance == null ? void 0 : balance.symbol) || ((_e = params.caipNetwork) == null ? void 0 : _e.nativeCurrency.symbol) || ""
1388
+ };
1389
+ }
1390
+ async signMessage(params) {
1391
+ var _a, _b, _c;
1392
+ const { provider, message, address } = params;
1393
+ if (!provider) {
1394
+ throw new Error("UniversalAdapter:signMessage - provider is undefined");
1395
+ }
1396
+ let signature = "";
1397
+ if (((_a = ChainController.state.activeCaipNetwork) == null ? void 0 : _a.chainNamespace) === ConstantsUtil.CHAIN.SOLANA) {
1398
+ const response = await provider.request({
1399
+ method: "solana_signMessage",
1400
+ params: {
1401
+ message: bs58.encode(new TextEncoder().encode(message)),
1402
+ pubkey: address
1403
+ }
1404
+ }, (_b = ChainController.state.activeCaipNetwork) == null ? void 0 : _b.caipNetworkId);
1405
+ signature = response.signature;
1406
+ } else {
1407
+ signature = await provider.request({
1408
+ method: "personal_sign",
1409
+ params: [message, address]
1410
+ }, (_c = ChainController.state.activeCaipNetwork) == null ? void 0 : _c.caipNetworkId);
1411
+ }
1412
+ return { signature };
1413
+ }
1414
+ // -- Transaction methods ---------------------------------------------------
1415
+ /**
1416
+ *
1417
+ * These methods are supported only on `wagmi` and `ethers` since the Solana SDK does not support them in the same way.
1418
+ * These function definition is to have a type parity between the clients. Currently not in use.
1419
+ */
1420
+ async estimateGas() {
1421
+ return Promise.resolve({
1422
+ gas: BigInt(0)
1423
+ });
1424
+ }
1425
+ async getProfile() {
1426
+ return Promise.resolve({
1427
+ profileImage: "",
1428
+ profileName: ""
1429
+ });
1430
+ }
1431
+ async sendTransaction() {
1432
+ return Promise.resolve({
1433
+ hash: ""
1434
+ });
1435
+ }
1436
+ async writeContract() {
1437
+ return Promise.resolve({
1438
+ hash: ""
1439
+ });
1440
+ }
1441
+ async getEnsAddress() {
1442
+ return Promise.resolve({
1443
+ address: false
1444
+ });
1445
+ }
1446
+ parseUnits() {
1447
+ return 0n;
1448
+ }
1449
+ formatUnits() {
1450
+ return "0";
1451
+ }
1452
+ async getCapabilities() {
1453
+ return Promise.resolve({});
1454
+ }
1455
+ async grantPermissions() {
1456
+ return Promise.resolve({});
1457
+ }
1458
+ async revokePermissions() {
1459
+ return Promise.resolve("0x");
1460
+ }
1461
+ async syncConnection() {
1462
+ return Promise.resolve({
1463
+ id: "WALLET_CONNECT",
1464
+ type: "WALLET_CONNECT",
1465
+ chainId: 1,
1466
+ provider: this.provider,
1467
+ address: ""
1468
+ });
1469
+ }
1470
+ // eslint-disable-next-line @typescript-eslint/require-await
1471
+ async switchNetwork(params) {
1472
+ var _a, _b, _c, _d, _e, _f;
1473
+ const { caipNetwork } = params;
1474
+ const connector = this.getWalletConnectConnector();
1475
+ if (caipNetwork.chainNamespace === ConstantsUtil.CHAIN.EVM) {
1476
+ try {
1477
+ await ((_a = connector.provider) == null ? void 0 : _a.request({
1478
+ method: "wallet_switchEthereumChain",
1479
+ params: [{ chainId: toHex(caipNetwork.id) }]
1480
+ }));
1481
+ } catch (switchError) {
1482
+ if (switchError.code === WcConstantsUtil.ERROR_CODE_UNRECOGNIZED_CHAIN_ID || switchError.code === WcConstantsUtil.ERROR_CODE_DEFAULT || ((_c = (_b = switchError == null ? void 0 : switchError.data) == null ? void 0 : _b.originalError) == null ? void 0 : _c.code) === WcConstantsUtil.ERROR_CODE_UNRECOGNIZED_CHAIN_ID) {
1483
+ try {
1484
+ await ((_f = connector.provider) == null ? void 0 : _f.request({
1485
+ method: "wallet_addEthereumChain",
1486
+ params: [
1487
+ {
1488
+ chainId: toHex(caipNetwork.id),
1489
+ rpcUrls: [(_d = caipNetwork == null ? void 0 : caipNetwork.rpcUrls["chainDefault"]) == null ? void 0 : _d.http],
1490
+ chainName: caipNetwork.name,
1491
+ nativeCurrency: caipNetwork.nativeCurrency,
1492
+ blockExplorerUrls: [(_e = caipNetwork.blockExplorers) == null ? void 0 : _e.default.url]
1493
+ }
1494
+ ]
1495
+ }));
1496
+ } catch (error) {
1497
+ throw new Error("Chain is not supported");
1498
+ }
1499
+ }
1500
+ }
1501
+ }
1502
+ connector.provider.setDefaultChain(caipNetwork.caipNetworkId);
1503
+ }
1504
+ getWalletConnectProvider() {
1505
+ const connector = this.connectors.find((c) => c.type === "WALLET_CONNECT");
1506
+ const provider = connector == null ? void 0 : connector.provider;
1507
+ return provider;
1508
+ }
1509
+ }
1510
+ let isInitialized = false;
1511
+ class AppKit {
1512
+ constructor(options) {
1513
+ var _a;
1514
+ this.chainNamespaces = [];
1515
+ this.initPromise = void 0;
1516
+ this.reportedAlertErrors = {};
1517
+ this.setStatus = (status, chain) => {
1518
+ StorageUtil.setConnectionStatus(status);
1519
+ AccountController.setStatus(status, chain);
1520
+ };
1521
+ this.getIsConnectedState = () => Boolean(ChainController.state.activeCaipAddress);
1522
+ this.setAllAccounts = (addresses, chain) => {
1523
+ AccountController.setAllAccounts(addresses, chain);
1524
+ OptionsController.setHasMultipleAddresses((addresses == null ? void 0 : addresses.length) > 1);
1525
+ };
1526
+ this.addAddressLabel = (address, label, chain) => {
1527
+ AccountController.addAddressLabel(address, label, chain);
1528
+ };
1529
+ this.removeAddressLabel = (address, chain) => {
1530
+ AccountController.removeAddressLabel(address, chain);
1531
+ };
1532
+ this.getCaipAddress = (chainNamespace) => {
1533
+ if (ChainController.state.activeChain === chainNamespace || !chainNamespace) {
1534
+ return ChainController.state.activeCaipAddress;
1535
+ }
1536
+ return ChainController.getAccountProp("caipAddress", chainNamespace);
1537
+ };
1538
+ this.getAddressByChainNamespace = (chainNamespace) => ChainController.getAccountProp("address", chainNamespace);
1539
+ this.getAddress = (chainNamespace) => {
1540
+ if (ChainController.state.activeChain === chainNamespace || !chainNamespace) {
1541
+ return AccountController.state.address;
1542
+ }
1543
+ return ChainController.getAccountProp("address", chainNamespace);
1544
+ };
1545
+ this.getProvider = (namespace) => ProviderUtil.getProvider(namespace);
1546
+ this.getProviderType = (namespace) => ProviderUtil.state.providerIds[namespace];
1547
+ this.getPreferredAccountType = () => AccountController.state.preferredAccountType;
1548
+ this.setCaipAddress = (caipAddress, chain) => {
1549
+ AccountController.setCaipAddress(caipAddress, chain);
1550
+ };
1551
+ this.setBalance = (balance, balanceSymbol, chain) => {
1552
+ AccountController.setBalance(balance, balanceSymbol, chain);
1553
+ };
1554
+ this.setProfileName = (profileName, chain) => {
1555
+ AccountController.setProfileName(profileName, chain);
1556
+ };
1557
+ this.setProfileImage = (profileImage, chain) => {
1558
+ AccountController.setProfileImage(profileImage, chain);
1559
+ };
1560
+ this.setUser = (user) => {
1561
+ AccountController.setUser(user);
1562
+ if (OptionsController.state.enableEmbedded) {
1563
+ ModalController.close();
1564
+ }
1565
+ };
1566
+ this.resetAccount = (chain) => {
1567
+ AccountController.resetAccount(chain);
1568
+ };
1569
+ this.setCaipNetwork = (caipNetwork) => {
1570
+ ChainController.setActiveCaipNetwork(caipNetwork);
1571
+ };
1572
+ this.getCaipNetwork = (chainNamespace) => {
1573
+ var _a2;
1574
+ if (chainNamespace) {
1575
+ return (_a2 = ChainController.getRequestedCaipNetworks(chainNamespace).filter((c) => c.chainNamespace === chainNamespace)) == null ? void 0 : _a2[0];
1576
+ }
1577
+ return ChainController.state.activeCaipNetwork || this.defaultCaipNetwork;
1578
+ };
1579
+ this.getCaipNetworkId = () => {
1580
+ const network = this.getCaipNetwork();
1581
+ if (network) {
1582
+ return network.id;
1583
+ }
1584
+ return void 0;
1585
+ };
1586
+ this.getCaipNetworks = (namespace) => ChainController.getRequestedCaipNetworks(namespace);
1587
+ this.getActiveChainNamespace = () => ChainController.state.activeChain;
1588
+ this.setRequestedCaipNetworks = (requestedCaipNetworks, chain) => {
1589
+ ChainController.setRequestedCaipNetworks(requestedCaipNetworks, chain);
1590
+ };
1591
+ this.getApprovedCaipNetworkIds = () => ChainController.getAllApprovedCaipNetworkIds();
1592
+ this.setApprovedCaipNetworksData = (namespace) => ChainController.setApprovedCaipNetworksData(namespace);
1593
+ this.resetNetwork = (namespace) => {
1594
+ ChainController.resetNetwork(namespace);
1595
+ };
1596
+ this.setConnectors = (connectors) => {
1597
+ const allConnectors = [...ConnectorController.getConnectors(), ...connectors];
1598
+ ConnectorController.setConnectors(allConnectors);
1599
+ };
1600
+ this.addConnector = (connector) => {
1601
+ ConnectorController.addConnector(connector);
1602
+ };
1603
+ this.getConnectors = () => ConnectorController.getConnectors();
1604
+ this.resetWcConnection = () => {
1605
+ ConnectionController.resetWcConnection();
1606
+ };
1607
+ this.fetchIdentity = (request) => BlockchainApiController.fetchIdentity(request);
1608
+ this.setAddressExplorerUrl = (addressExplorerUrl, chain) => {
1609
+ AccountController.setAddressExplorerUrl(addressExplorerUrl, chain);
1610
+ };
1611
+ this.setSmartAccountDeployed = (isDeployed, chain) => {
1612
+ AccountController.setSmartAccountDeployed(isDeployed, chain);
1613
+ };
1614
+ this.setConnectedWalletInfo = (connectedWalletInfo, chain) => {
1615
+ AccountController.setConnectedWalletInfo(connectedWalletInfo, chain);
1616
+ };
1617
+ this.setSmartAccountEnabledNetworks = (smartAccountEnabledNetworks, chain) => {
1618
+ ChainController.setSmartAccountEnabledNetworks(smartAccountEnabledNetworks, chain);
1619
+ };
1620
+ this.setPreferredAccountType = (preferredAccountType, chain) => {
1621
+ AccountController.setPreferredAccountType(preferredAccountType, chain);
1622
+ };
1623
+ this.getReownName = (address) => EnsController.getNamesForAddress(address);
1624
+ this.setEIP6963Enabled = (enabled) => {
1625
+ OptionsController.setEIP6963Enabled(enabled);
1626
+ };
1627
+ this.setClientId = (clientId) => {
1628
+ BlockchainApiController.setClientId(clientId);
1629
+ };
1630
+ this.getConnectorImage = (connector) => AssetUtil.getConnectorImage(connector);
1631
+ this.handleUnsafeRPCRequest = () => {
1632
+ if (this.isOpen()) {
1633
+ if (this.isTransactionStackEmpty()) {
1634
+ return;
1635
+ }
1636
+ this.redirect("ApproveTransaction");
1637
+ } else {
1638
+ this.open({ view: "ApproveTransaction" });
1639
+ }
1640
+ };
1641
+ this.options = options;
1642
+ this.version = options.sdkVersion;
1643
+ this.caipNetworks = this.extendCaipNetworks(options);
1644
+ this.chainNamespaces = [
1645
+ ...new Set((_a = this.caipNetworks) == null ? void 0 : _a.map((caipNetwork) => caipNetwork.chainNamespace))
1646
+ ];
1647
+ this.defaultCaipNetwork = this.extendDefaultCaipNetwork(options);
1648
+ this.chainAdapters = this.createAdapters(options.adapters);
1649
+ this.initialize(options);
1650
+ this.sendInitializeEvent(options);
1651
+ }
1652
+ static getInstance() {
1653
+ return this.instance;
1654
+ }
1655
+ async initialize(options) {
1656
+ this.initControllers(options);
1657
+ await this.initChainAdapters();
1658
+ await this.injectModalUi();
1659
+ await this.syncExistingConnection();
1660
+ PublicStateController.set({ initialized: true });
1661
+ }
1662
+ sendInitializeEvent(options) {
1663
+ var _a;
1664
+ const { ...optionsCopy } = options;
1665
+ delete optionsCopy.adapters;
1666
+ EventsController.sendEvent({
1667
+ type: "track",
1668
+ event: "INITIALIZE",
1669
+ properties: {
1670
+ ...optionsCopy,
1671
+ networks: options.networks.map((n) => n.id),
1672
+ siweConfig: {
1673
+ options: ((_a = options.siweConfig) == null ? void 0 : _a.options) || {}
1674
+ }
1675
+ }
1676
+ });
1677
+ }
1678
+ // -- Public -------------------------------------------------------------------
1679
+ async open(options) {
1680
+ await this.injectModalUi();
1681
+ if ((options == null ? void 0 : options.uri) && this.universalProvider) {
1682
+ ConnectionController.setUri(options.uri);
1683
+ }
1684
+ if (options == null ? void 0 : options.namespace) {
1685
+ ConnectorController.setFilterByNamespace(options.namespace);
1686
+ }
1687
+ await ModalController.open(options);
1688
+ }
1689
+ async close() {
1690
+ await this.injectModalUi();
1691
+ ModalController.close();
1692
+ }
1693
+ setLoading(loading) {
1694
+ ModalController.setLoading(loading);
1695
+ }
1696
+ // -- Adapter Methods ----------------------------------------------------------
1697
+ getError() {
1698
+ return "";
1699
+ }
1700
+ getChainId() {
1701
+ var _a;
1702
+ return (_a = ChainController.state.activeCaipNetwork) == null ? void 0 : _a.id;
1703
+ }
1704
+ switchNetwork(appKitNetwork) {
1705
+ var _a;
1706
+ const network = (_a = this.caipNetworks) == null ? void 0 : _a.find((n) => n.id === appKitNetwork.id);
1707
+ if (!network) {
1708
+ AlertController.open(ErrorUtil.ALERT_ERRORS.SWITCH_NETWORK_NOT_FOUND, "error");
1709
+ return;
1710
+ }
1711
+ ChainController.switchActiveNetwork(network);
1712
+ }
1713
+ getWalletProvider() {
1714
+ return ChainController.state.activeChain ? ProviderUtil.state.providers[ChainController.state.activeChain] : null;
1715
+ }
1716
+ getWalletProviderType() {
1717
+ return ChainController.state.activeChain ? ProviderUtil.state.providerIds[ChainController.state.activeChain] : null;
1718
+ }
1719
+ subscribeProviders(callback) {
1720
+ return ProviderUtil.subscribeProviders(callback);
1721
+ }
1722
+ getThemeMode() {
1723
+ return ThemeController.state.themeMode;
1724
+ }
1725
+ getThemeVariables() {
1726
+ return ThemeController.state.themeVariables;
1727
+ }
1728
+ setThemeMode(themeMode) {
1729
+ ThemeController.setThemeMode(themeMode);
1730
+ setColorTheme(ThemeController.state.themeMode);
1731
+ }
1732
+ setTermsConditionsUrl(termsConditionsUrl) {
1733
+ OptionsController.setTermsConditionsUrl(termsConditionsUrl);
1734
+ }
1735
+ setPrivacyPolicyUrl(privacyPolicyUrl) {
1736
+ OptionsController.setPrivacyPolicyUrl(privacyPolicyUrl);
1737
+ }
1738
+ setThemeVariables(themeVariables) {
1739
+ ThemeController.setThemeVariables(themeVariables);
1740
+ setThemeVariables(ThemeController.state.themeVariables);
1741
+ }
1742
+ subscribeTheme(callback) {
1743
+ return ThemeController.subscribe(callback);
1744
+ }
1745
+ getWalletInfo() {
1746
+ return AccountController.state.connectedWalletInfo;
1747
+ }
1748
+ subscribeAccount(callback) {
1749
+ function updateVal() {
1750
+ const authConnector = ConnectorController.getAuthConnector();
1751
+ callback({
1752
+ allAccounts: AccountController.state.allAccounts,
1753
+ caipAddress: ChainController.state.activeCaipAddress,
1754
+ address: CoreHelperUtil.getPlainAddress(ChainController.state.activeCaipAddress),
1755
+ isConnected: Boolean(ChainController.state.activeCaipAddress),
1756
+ status: AccountController.state.status,
1757
+ embeddedWalletInfo: authConnector ? {
1758
+ user: AccountController.state.user,
1759
+ authProvider: AccountController.state.socialProvider || "email",
1760
+ accountType: AccountController.state.preferredAccountType,
1761
+ isSmartAccountDeployed: Boolean(AccountController.state.smartAccountDeployed)
1762
+ } : void 0
1763
+ });
1764
+ }
1765
+ ChainController.subscribe(updateVal);
1766
+ AccountController.subscribe(updateVal);
1767
+ ConnectorController.subscribe(updateVal);
1768
+ }
1769
+ subscribeNetwork(callback) {
1770
+ return ChainController.subscribe(({ activeCaipNetwork }) => {
1771
+ callback({
1772
+ caipNetwork: activeCaipNetwork,
1773
+ chainId: activeCaipNetwork == null ? void 0 : activeCaipNetwork.id,
1774
+ caipNetworkId: activeCaipNetwork == null ? void 0 : activeCaipNetwork.caipNetworkId
1775
+ });
1776
+ });
1777
+ }
1778
+ subscribeWalletInfo(callback) {
1779
+ return AccountController.subscribeKey("connectedWalletInfo", callback);
1780
+ }
1781
+ subscribeShouldUpdateToAddress(callback) {
1782
+ AccountController.subscribeKey("shouldUpdateToAddress", callback);
1783
+ }
1784
+ subscribeCaipNetworkChange(callback) {
1785
+ ChainController.subscribeKey("activeCaipNetwork", callback);
1786
+ }
1787
+ getState() {
1788
+ return PublicStateController.state;
1789
+ }
1790
+ subscribeState(callback) {
1791
+ return PublicStateController.subscribe(callback);
1792
+ }
1793
+ showErrorMessage(message) {
1794
+ SnackController.showError(message);
1795
+ }
1796
+ showSuccessMessage(message) {
1797
+ SnackController.showSuccess(message);
1798
+ }
1799
+ getEvent() {
1800
+ return { ...EventsController.state };
1801
+ }
1802
+ subscribeEvents(callback) {
1803
+ return EventsController.subscribe(callback);
1804
+ }
1805
+ replace(route) {
1806
+ RouterController.replace(route);
1807
+ }
1808
+ redirect(route) {
1809
+ RouterController.push(route);
1810
+ }
1811
+ popTransactionStack(cancel) {
1812
+ RouterController.popTransactionStack(cancel);
1813
+ }
1814
+ isOpen() {
1815
+ return ModalController.state.open;
1816
+ }
1817
+ isTransactionStackEmpty() {
1818
+ return RouterController.state.transactionStack.length === 0;
1819
+ }
1820
+ updateFeatures(newFeatures) {
1821
+ OptionsController.setFeatures(newFeatures);
1822
+ }
1823
+ updateOptions(newOptions) {
1824
+ const currentOptions = OptionsController.state || {};
1825
+ const updatedOptions = { ...currentOptions, ...newOptions };
1826
+ OptionsController.setOptions(updatedOptions);
1827
+ }
1828
+ setConnectMethodsOrder(connectMethodsOrder) {
1829
+ OptionsController.setConnectMethodsOrder(connectMethodsOrder);
1830
+ }
1831
+ setWalletFeaturesOrder(walletFeaturesOrder) {
1832
+ OptionsController.setWalletFeaturesOrder(walletFeaturesOrder);
1833
+ }
1834
+ setCollapseWallets(collapseWallets) {
1835
+ OptionsController.setCollapseWallets(collapseWallets);
1836
+ }
1837
+ setSocialsOrder(socialsOrder) {
1838
+ OptionsController.setSocialsOrder(socialsOrder);
1839
+ }
1840
+ async disconnect() {
1841
+ await ConnectionController.disconnect();
1842
+ }
1843
+ getConnectMethodsOrder() {
1844
+ return WalletUtil.getConnectOrderMethod(OptionsController.state.features, ConnectorController.getConnectors());
1845
+ }
1846
+ /**
1847
+ * Removes an adapter from the AppKit.
1848
+ * @param namespace - The namespace of the adapter to remove.
1849
+ */
1850
+ removeAdapter(namespace) {
1851
+ var _a;
1852
+ const isConnected = this.getIsConnectedState();
1853
+ const adapter = this.getAdapter(namespace);
1854
+ if (!adapter || !this.chainAdapters || isConnected) {
1855
+ return;
1856
+ }
1857
+ const newCaipNetworks = (_a = this.caipNetworks) == null ? void 0 : _a.filter((network) => network.chainNamespace !== namespace);
1858
+ ChainController.removeAdapter(namespace);
1859
+ ConnectorController.removeAdapter(namespace);
1860
+ this.chainNamespaces = this.chainNamespaces.filter((n) => n !== namespace);
1861
+ this.caipNetworks = newCaipNetworks;
1862
+ adapter.removeAllEventListeners();
1863
+ Reflect.deleteProperty(this.chainAdapters, namespace);
1864
+ }
1865
+ /**
1866
+ * Adds an adapter to the AppKit.
1867
+ * @param adapter - The adapter instance.
1868
+ * @param networks - The list of networks that this adapter supports / uses.
1869
+ */
1870
+ addAdapter(adapter, networks) {
1871
+ const namespace = adapter.namespace;
1872
+ if (!this.connectionControllerClient || !this.networkControllerClient) {
1873
+ return;
1874
+ }
1875
+ if (!this.chainAdapters || !namespace) {
1876
+ return;
1877
+ }
1878
+ const extendedAdapterNetworks = this.extendCaipNetworks({ ...this.options, networks });
1879
+ this.caipNetworks = [...this.caipNetworks || [], ...extendedAdapterNetworks];
1880
+ this.createAdapter(adapter);
1881
+ this.initChainAdapter(namespace);
1882
+ ChainController.addAdapter(adapter, {
1883
+ connectionControllerClient: this.connectionControllerClient,
1884
+ networkControllerClient: this.networkControllerClient
1885
+ }, extendedAdapterNetworks);
1886
+ }
1887
+ /**
1888
+ * Adds a network to an existing adapter in AppKit.
1889
+ * @param namespace - The chain namespace to add the network to (e.g. 'eip155', 'solana')
1890
+ * @param network - The network configuration to add
1891
+ * @throws Error if adapter for namespace doesn't exist
1892
+ */
1893
+ addNetwork(namespace, network) {
1894
+ var _a;
1895
+ if (this.chainAdapters && !this.chainAdapters[namespace]) {
1896
+ throw new Error(`Adapter for namespace ${namespace} doesn't exist`);
1897
+ }
1898
+ const extendedNetwork = this.extendCaipNetwork(network, this.options);
1899
+ if (this.caipNetworks && !((_a = this.caipNetworks) == null ? void 0 : _a.find((n) => n.id === extendedNetwork.id))) {
1900
+ this.caipNetworks.push(extendedNetwork);
1901
+ ChainController.addNetwork(extendedNetwork);
1902
+ }
1903
+ }
1904
+ /**
1905
+ * Removes a network from an existing adapter in AppKit.
1906
+ * @param namespace - The chain namespace the network belongs to
1907
+ * @param networkId - The network ID to remove
1908
+ * @throws Error if adapter for namespace doesn't exist or if removing last network
1909
+ */
1910
+ removeNetwork(namespace, networkId) {
1911
+ var _a;
1912
+ if (this.chainAdapters && !this.chainAdapters[namespace]) {
1913
+ throw new Error(`Adapter for namespace ${namespace} doesn't exist`);
1914
+ }
1915
+ const networkToRemove = (_a = this.caipNetworks) == null ? void 0 : _a.find((n) => n.id === networkId);
1916
+ if (!networkToRemove) {
1917
+ throw new Error(`Network with ID ${networkId} not found`);
1918
+ }
1919
+ if (!this.caipNetworks) {
1920
+ return;
1921
+ }
1922
+ const remainingAllNetworks = this.caipNetworks.filter((n) => n.id !== networkId);
1923
+ const remainingNamespaceNetworks = this.caipNetworks.filter((n) => n.id !== networkId && n.chainNamespace === namespace);
1924
+ if (!(remainingNamespaceNetworks == null ? void 0 : remainingNamespaceNetworks.length)) {
1925
+ throw new Error("Cannot remove last network for a namespace");
1926
+ }
1927
+ ChainController.removeNetwork(namespace, networkId);
1928
+ this.caipNetworks = [...remainingAllNetworks];
1929
+ }
1930
+ // -- Private ------------------------------------------------------------------
1931
+ initializeOptionsController(options) {
1932
+ var _a;
1933
+ OptionsController.setDebug(options.debug !== false);
1934
+ if (!options.projectId) {
1935
+ AlertController.open(ErrorUtil.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED, "error");
1936
+ return;
1937
+ }
1938
+ OptionsController.setEnableWalletConnect(options.enableWalletConnect !== false);
1939
+ OptionsController.setEnableWalletGuide(options.enableWalletGuide !== false);
1940
+ OptionsController.setEnableWallets(options.enableWallets !== false);
1941
+ OptionsController.setEIP6963Enabled(options.enableEIP6963 !== false);
1942
+ OptionsController.setEnableAuthLogger(options.enableAuthLogger !== false);
1943
+ OptionsController.setSdkVersion(options.sdkVersion);
1944
+ OptionsController.setProjectId(options.projectId);
1945
+ OptionsController.setEnableEmbedded(options.enableEmbedded);
1946
+ OptionsController.setAllWallets(options.allWallets);
1947
+ OptionsController.setIncludeWalletIds(options.includeWalletIds);
1948
+ OptionsController.setExcludeWalletIds(options.excludeWalletIds);
1949
+ OptionsController.setFeaturedWalletIds(options.featuredWalletIds);
1950
+ OptionsController.setTokens(options.tokens);
1951
+ OptionsController.setTermsConditionsUrl(options.termsConditionsUrl);
1952
+ OptionsController.setPrivacyPolicyUrl(options.privacyPolicyUrl);
1953
+ OptionsController.setCustomWallets(options.customWallets);
1954
+ OptionsController.setFeatures(options.features);
1955
+ OptionsController.setAllowUnsupportedChain(options.allowUnsupportedChain);
1956
+ OptionsController.setDefaultAccountTypes(options.defaultAccountTypes);
1957
+ const defaultMetaData = this.getDefaultMetaData();
1958
+ if (!options.metadata && defaultMetaData) {
1959
+ options.metadata = defaultMetaData;
1960
+ }
1961
+ OptionsController.setMetadata(options.metadata);
1962
+ OptionsController.setDisableAppend(options.disableAppend);
1963
+ OptionsController.setEnableEmbedded(options.enableEmbedded);
1964
+ OptionsController.setSIWX(options.siwx);
1965
+ const evmAdapter = (_a = options.adapters) == null ? void 0 : _a.find((adapter) => adapter.namespace === ConstantsUtil.CHAIN.EVM);
1966
+ if (evmAdapter) {
1967
+ if (options.siweConfig) {
1968
+ if (options.siwx) {
1969
+ throw new Error("Cannot set both `siweConfig` and `siwx` options");
1970
+ }
1971
+ OptionsController.setSIWX(options.siweConfig.mapToSIWX());
1972
+ }
1973
+ }
1974
+ }
1975
+ initializeThemeController(options) {
1976
+ if (options.themeMode) {
1977
+ ThemeController.setThemeMode(options.themeMode);
1978
+ }
1979
+ if (options.themeVariables) {
1980
+ ThemeController.setThemeVariables(options.themeVariables);
1981
+ }
1982
+ }
1983
+ initializeChainController(options) {
1984
+ if (!this.connectionControllerClient || !this.networkControllerClient) {
1985
+ throw new Error("ConnectionControllerClient and NetworkControllerClient must be set");
1986
+ }
1987
+ ChainController.initialize(options.adapters ?? [], this.caipNetworks, {
1988
+ connectionControllerClient: this.connectionControllerClient,
1989
+ networkControllerClient: this.networkControllerClient
1990
+ });
1991
+ const network = this.getDefaultNetwork();
1992
+ if (network) {
1993
+ ChainController.setActiveCaipNetwork(network);
1994
+ }
1995
+ }
1996
+ async initializeBlockchainApiController(options) {
1997
+ await BlockchainApiController.getSupportedNetworks({
1998
+ projectId: options.projectId
1999
+ });
2000
+ }
2001
+ initControllers(options) {
2002
+ this.initializeOptionsController(options);
2003
+ this.initializeChainController(options);
2004
+ this.initializeThemeController(options);
2005
+ this.initializeBlockchainApiController(options);
2006
+ if (options.excludeWalletIds) {
2007
+ ApiController.initializeExcludedWalletRdns({ ids: options.excludeWalletIds });
2008
+ }
2009
+ }
2010
+ getDefaultMetaData() {
2011
+ var _a, _b, _c, _d;
2012
+ if (typeof window !== "undefined" && typeof document !== "undefined") {
2013
+ return {
2014
+ name: ((_b = (_a = document.getElementsByTagName("title")) == null ? void 0 : _a[0]) == null ? void 0 : _b.textContent) || "",
2015
+ description: ((_c = document.querySelector('meta[property="og:description"]')) == null ? void 0 : _c.content) || "",
2016
+ url: window.location.origin,
2017
+ icons: [((_d = document.querySelector('link[rel~="icon"]')) == null ? void 0 : _d.href) || ""]
2018
+ };
2019
+ }
2020
+ return null;
2021
+ }
2022
+ setUnsupportedNetwork(chainId) {
2023
+ const namespace = this.getActiveChainNamespace();
2024
+ if (namespace) {
2025
+ const unsupportedNetwork = this.getUnsupportedNetwork(`${namespace}:${chainId}`);
2026
+ ChainController.setActiveCaipNetwork(unsupportedNetwork);
2027
+ }
2028
+ }
2029
+ extendCaipNetwork(network, options) {
2030
+ const extendedNetwork = CaipNetworksUtil.extendCaipNetwork(network, {
2031
+ customNetworkImageUrls: options.chainImages,
2032
+ projectId: options.projectId
2033
+ });
2034
+ return extendedNetwork;
2035
+ }
2036
+ extendCaipNetworks(options) {
2037
+ const extendedNetworks = CaipNetworksUtil.extendCaipNetworks(options.networks, {
2038
+ customNetworkImageUrls: options.chainImages,
2039
+ projectId: options.projectId
2040
+ });
2041
+ return extendedNetworks;
2042
+ }
2043
+ extendDefaultCaipNetwork(options) {
2044
+ const defaultNetwork = options.networks.find((n) => {
2045
+ var _a;
2046
+ return n.id === ((_a = options.defaultNetwork) == null ? void 0 : _a.id);
2047
+ });
2048
+ const extendedNetwork = defaultNetwork ? CaipNetworksUtil.extendCaipNetwork(defaultNetwork, {
2049
+ customNetworkImageUrls: options.chainImages,
2050
+ projectId: options.projectId
2051
+ }) : void 0;
2052
+ return extendedNetwork;
2053
+ }
2054
+ createClients() {
2055
+ this.connectionControllerClient = {
2056
+ connectWalletConnect: async () => {
2057
+ var _a;
2058
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2059
+ if (!adapter) {
2060
+ throw new Error("Adapter not found");
2061
+ }
2062
+ const result = await adapter.connectWalletConnect((_a = this.getCaipNetwork()) == null ? void 0 : _a.id);
2063
+ this.close();
2064
+ this.setClientId((result == null ? void 0 : result.clientId) || null);
2065
+ StorageUtil.setConnectedNamespaces([...ChainController.state.chains.keys()]);
2066
+ await this.syncWalletConnectAccount();
2067
+ },
2068
+ connectExternal: async ({ id, info, type, provider, chain, caipNetwork }) => {
2069
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
2070
+ const activeChain = ChainController.state.activeChain;
2071
+ const chainToUse = chain || activeChain;
2072
+ const adapter = this.getAdapter(chainToUse);
2073
+ if (chain && chain !== activeChain && !caipNetwork) {
2074
+ const toConnectNetwork = (_a = this.caipNetworks) == null ? void 0 : _a.find((network) => network.chainNamespace === chain);
2075
+ if (toConnectNetwork) {
2076
+ this.setCaipNetwork(toConnectNetwork);
2077
+ }
2078
+ }
2079
+ if (!adapter) {
2080
+ throw new Error("Adapter not found");
2081
+ }
2082
+ const res = await adapter.connect({
2083
+ id,
2084
+ info,
2085
+ type,
2086
+ provider,
2087
+ chainId: (caipNetwork == null ? void 0 : caipNetwork.id) || ((_b = this.getCaipNetwork()) == null ? void 0 : _b.id),
2088
+ rpcUrl: ((_e = (_d = (_c = caipNetwork == null ? void 0 : caipNetwork.rpcUrls) == null ? void 0 : _c.default) == null ? void 0 : _d.http) == null ? void 0 : _e[0]) || ((_i = (_h = (_g = (_f = this.getCaipNetwork()) == null ? void 0 : _f.rpcUrls) == null ? void 0 : _g.default) == null ? void 0 : _h.http) == null ? void 0 : _i[0])
2089
+ });
2090
+ if (!res) {
2091
+ return;
2092
+ }
2093
+ StorageUtil.addConnectedNamespace(chainToUse);
2094
+ this.syncProvider({ ...res, chainNamespace: chainToUse });
2095
+ await this.syncAccount({ ...res, chainNamespace: chainToUse });
2096
+ const { accounts } = await adapter.getAccounts({ namespace: chainToUse, id });
2097
+ this.setAllAccounts(accounts, chainToUse);
2098
+ },
2099
+ reconnectExternal: async ({ id, info, type, provider }) => {
2100
+ var _a;
2101
+ const namespace = ChainController.state.activeChain;
2102
+ const adapter = this.getAdapter(namespace);
2103
+ if (adapter == null ? void 0 : adapter.reconnect) {
2104
+ await (adapter == null ? void 0 : adapter.reconnect({ id, info, type, provider, chainId: (_a = this.getCaipNetwork()) == null ? void 0 : _a.id }));
2105
+ StorageUtil.addConnectedNamespace(namespace);
2106
+ }
2107
+ },
2108
+ disconnect: async () => {
2109
+ const namespace = ChainController.state.activeChain;
2110
+ const adapter = this.getAdapter(namespace);
2111
+ const provider = ProviderUtil.getProvider(namespace);
2112
+ const providerType = ProviderUtil.state.providerIds[namespace];
2113
+ await (adapter == null ? void 0 : adapter.disconnect({ provider, providerType }));
2114
+ StorageUtil.removeConnectedNamespace(namespace);
2115
+ ProviderUtil.resetChain(namespace);
2116
+ this.setUser(void 0);
2117
+ this.setStatus("disconnected", namespace);
2118
+ },
2119
+ checkInstalled: (ids) => {
2120
+ if (!ids) {
2121
+ return Boolean(window.ethereum);
2122
+ }
2123
+ return ids.some((id) => {
2124
+ var _a;
2125
+ return Boolean((_a = window.ethereum) == null ? void 0 : _a[String(id)]);
2126
+ });
2127
+ },
2128
+ signMessage: async (message) => {
2129
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2130
+ const result = await (adapter == null ? void 0 : adapter.signMessage({
2131
+ message,
2132
+ address: AccountController.state.address,
2133
+ provider: ProviderUtil.getProvider(ChainController.state.activeChain)
2134
+ }));
2135
+ return (result == null ? void 0 : result.signature) || "";
2136
+ },
2137
+ sendTransaction: async (args) => {
2138
+ if (args.chainNamespace === ConstantsUtil.CHAIN.EVM) {
2139
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2140
+ const provider = ProviderUtil.getProvider(ChainController.state.activeChain);
2141
+ const result = await (adapter == null ? void 0 : adapter.sendTransaction({ ...args, provider }));
2142
+ return (result == null ? void 0 : result.hash) || "";
2143
+ }
2144
+ return "";
2145
+ },
2146
+ estimateGas: async (args) => {
2147
+ if (args.chainNamespace === ConstantsUtil.CHAIN.EVM) {
2148
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2149
+ const provider = ProviderUtil.getProvider(ChainController.state.activeChain);
2150
+ const caipNetwork = this.getCaipNetwork();
2151
+ if (!caipNetwork) {
2152
+ throw new Error("CaipNetwork is undefined");
2153
+ }
2154
+ const result = await (adapter == null ? void 0 : adapter.estimateGas({
2155
+ ...args,
2156
+ provider,
2157
+ caipNetwork
2158
+ }));
2159
+ return (result == null ? void 0 : result.gas) || 0n;
2160
+ }
2161
+ return 0n;
2162
+ },
2163
+ getEnsAvatar: async () => {
2164
+ var _a;
2165
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2166
+ const result = await (adapter == null ? void 0 : adapter.getProfile({
2167
+ address: AccountController.state.address,
2168
+ chainId: Number((_a = this.getCaipNetwork()) == null ? void 0 : _a.id)
2169
+ }));
2170
+ return (result == null ? void 0 : result.profileImage) || false;
2171
+ },
2172
+ getEnsAddress: async (name) => {
2173
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2174
+ const caipNetwork = this.getCaipNetwork();
2175
+ if (!caipNetwork) {
2176
+ return false;
2177
+ }
2178
+ const result = await (adapter == null ? void 0 : adapter.getEnsAddress({
2179
+ name,
2180
+ caipNetwork
2181
+ }));
2182
+ return (result == null ? void 0 : result.address) || false;
2183
+ },
2184
+ writeContract: async (args) => {
2185
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2186
+ const caipNetwork = this.getCaipNetwork();
2187
+ const caipAddress = this.getCaipAddress();
2188
+ const provider = ProviderUtil.getProvider(ChainController.state.activeChain);
2189
+ if (!caipNetwork || !caipAddress) {
2190
+ throw new Error("CaipNetwork or CaipAddress is undefined");
2191
+ }
2192
+ const result = await (adapter == null ? void 0 : adapter.writeContract({ ...args, caipNetwork, provider, caipAddress }));
2193
+ return result == null ? void 0 : result.hash;
2194
+ },
2195
+ parseUnits: (value, decimals) => {
2196
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2197
+ return (adapter == null ? void 0 : adapter.parseUnits({ value, decimals })) ?? 0n;
2198
+ },
2199
+ formatUnits: (value, decimals) => {
2200
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2201
+ return (adapter == null ? void 0 : adapter.formatUnits({ value, decimals })) ?? "0";
2202
+ },
2203
+ getCapabilities: async (params) => {
2204
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2205
+ await (adapter == null ? void 0 : adapter.getCapabilities(params));
2206
+ },
2207
+ grantPermissions: async (params) => {
2208
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2209
+ return await (adapter == null ? void 0 : adapter.grantPermissions(params));
2210
+ },
2211
+ revokePermissions: async (params) => {
2212
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2213
+ if (adapter == null ? void 0 : adapter.revokePermissions) {
2214
+ return await adapter.revokePermissions(params);
2215
+ }
2216
+ return "0x";
2217
+ }
2218
+ };
2219
+ this.networkControllerClient = {
2220
+ switchCaipNetwork: async (caipNetwork) => {
2221
+ var _a, _b;
2222
+ if (!caipNetwork) {
2223
+ return;
2224
+ }
2225
+ if (AccountController.state.address && caipNetwork.chainNamespace === ChainController.state.activeChain) {
2226
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2227
+ const provider = ProviderUtil.getProvider(ChainController.state.activeChain);
2228
+ const providerType = ProviderUtil.state.providerIds[ChainController.state.activeChain];
2229
+ await (adapter == null ? void 0 : adapter.switchNetwork({ caipNetwork, provider, providerType }));
2230
+ this.setCaipNetwork(caipNetwork);
2231
+ await this.syncAccount({
2232
+ address: AccountController.state.address,
2233
+ chainId: caipNetwork.id,
2234
+ chainNamespace: caipNetwork.chainNamespace
2235
+ });
2236
+ } else if (AccountController.state.address) {
2237
+ const providerType = ProviderUtil.state.providerIds[ChainController.state.activeChain];
2238
+ if (providerType === ConstantsUtil$1.CONNECTOR_TYPE_AUTH) {
2239
+ try {
2240
+ ChainController.state.activeChain = caipNetwork.chainNamespace;
2241
+ await ((_b = (_a = this.connectionControllerClient) == null ? void 0 : _a.connectExternal) == null ? void 0 : _b.call(_a, {
2242
+ id: ConstantsUtil.CONNECTOR_ID.AUTH,
2243
+ provider: this.authProvider,
2244
+ chain: caipNetwork.chainNamespace,
2245
+ chainId: caipNetwork.id,
2246
+ type: ConstantsUtil$1.CONNECTOR_TYPE_AUTH,
2247
+ caipNetwork
2248
+ }));
2249
+ this.setCaipNetwork(caipNetwork);
2250
+ } catch (error) {
2251
+ const adapter = this.getAdapter(caipNetwork.chainNamespace);
2252
+ await (adapter == null ? void 0 : adapter.switchNetwork({
2253
+ caipNetwork,
2254
+ provider: this.authProvider,
2255
+ providerType
2256
+ }));
2257
+ }
2258
+ } else if (providerType === "WALLET_CONNECT") {
2259
+ this.setCaipNetwork(caipNetwork);
2260
+ this.syncWalletConnectAccount();
2261
+ } else {
2262
+ this.setCaipNetwork(caipNetwork);
2263
+ const address = this.getAddressByChainNamespace(caipNetwork.chainNamespace);
2264
+ if (address) {
2265
+ this.syncAccount({
2266
+ address,
2267
+ chainId: caipNetwork.id,
2268
+ chainNamespace: caipNetwork.chainNamespace
2269
+ });
2270
+ }
2271
+ }
2272
+ } else {
2273
+ this.setCaipNetwork(caipNetwork);
2274
+ }
2275
+ },
2276
+ // eslint-disable-next-line @typescript-eslint/require-await
2277
+ getApprovedCaipNetworksData: async () => {
2278
+ var _a, _b, _c, _d, _e;
2279
+ const providerType = ProviderUtil.state.providerIds[ChainController.state.activeChain];
2280
+ if (providerType === ConstantsUtil$1.CONNECTOR_TYPE_WALLET_CONNECT) {
2281
+ const namespaces = (_b = (_a = this.universalProvider) == null ? void 0 : _a.session) == null ? void 0 : _b.namespaces;
2282
+ return {
2283
+ /*
2284
+ * MetaMask Wallet only returns 1 namespace in the session object. This makes it imposible
2285
+ * to switch to other networks. Setting supportsAllNetworks to true for MetaMask Wallet
2286
+ * will make it possible to switch to other networks.
2287
+ */
2288
+ supportsAllNetworks: ((_e = (_d = (_c = this.universalProvider) == null ? void 0 : _c.session) == null ? void 0 : _d.peer) == null ? void 0 : _e.metadata.name) === "MetaMask Wallet",
2289
+ approvedCaipNetworkIds: this.getChainsFromNamespaces(namespaces)
2290
+ };
2291
+ }
2292
+ return { supportsAllNetworks: true, approvedCaipNetworkIds: [] };
2293
+ }
2294
+ };
2295
+ ConnectionController.setClient(this.connectionControllerClient);
2296
+ }
2297
+ setupAuthConnectorListeners(provider) {
2298
+ provider.onRpcRequest((request) => {
2299
+ if (W3mFrameHelpers.checkIfRequestExists(request)) {
2300
+ if (!W3mFrameHelpers.checkIfRequestIsSafe(request)) {
2301
+ this.handleUnsafeRPCRequest();
2302
+ }
2303
+ } else {
2304
+ this.open();
2305
+ console.error(W3mFrameRpcConstants.RPC_METHOD_NOT_ALLOWED_MESSAGE, {
2306
+ method: request.method
2307
+ });
2308
+ setTimeout(() => {
2309
+ this.showErrorMessage(W3mFrameRpcConstants.RPC_METHOD_NOT_ALLOWED_UI_MESSAGE);
2310
+ }, 300);
2311
+ provider.rejectRpcRequests();
2312
+ }
2313
+ });
2314
+ provider.onRpcError(() => {
2315
+ const isModalOpen = this.isOpen();
2316
+ if (isModalOpen) {
2317
+ if (this.isTransactionStackEmpty()) {
2318
+ this.close();
2319
+ } else {
2320
+ this.popTransactionStack(true);
2321
+ }
2322
+ }
2323
+ });
2324
+ provider.onRpcSuccess((_, request) => {
2325
+ var _a;
2326
+ const isSafeRequest = W3mFrameHelpers.checkIfRequestIsSafe(request);
2327
+ if (isSafeRequest) {
2328
+ return;
2329
+ }
2330
+ if (AccountController.state.address && ((_a = ChainController.state.activeCaipNetwork) == null ? void 0 : _a.id)) {
2331
+ this.updateNativeBalance();
2332
+ }
2333
+ if (this.isTransactionStackEmpty()) {
2334
+ this.close();
2335
+ } else {
2336
+ this.popTransactionStack();
2337
+ }
2338
+ });
2339
+ provider.onNotConnected(() => {
2340
+ const namespace = ChainController.state.activeChain;
2341
+ const connectorId = StorageUtil.getConnectedConnectorId(namespace);
2342
+ const isConnectedWithAuth = connectorId === ConstantsUtil.CONNECTOR_ID.AUTH;
2343
+ if (isConnectedWithAuth) {
2344
+ this.setCaipAddress(void 0, namespace);
2345
+ this.setLoading(false);
2346
+ }
2347
+ });
2348
+ provider.onConnect(async (user) => {
2349
+ var _a;
2350
+ const namespace = ChainController.state.activeChain;
2351
+ const caipAddress = namespace === ConstantsUtil.CHAIN.EVM ? `eip155:${user.chainId}:${user.address}` : `${user.chainId}:${user.address}`;
2352
+ this.setSmartAccountDeployed(Boolean(user.smartAccountDeployed), namespace);
2353
+ if (!HelpersUtil.isLowerCaseMatch(user.address, AccountController.state.address)) {
2354
+ this.syncIdentity({
2355
+ address: user.address,
2356
+ chainId: user.chainId,
2357
+ chainNamespace: namespace
2358
+ });
2359
+ }
2360
+ this.setCaipAddress(caipAddress, namespace);
2361
+ this.setUser({ ...AccountController.state.user || {}, email: user.email });
2362
+ const preferredAccountType = user.preferredAccountType || OptionsController.state.defaultAccountTypes[namespace];
2363
+ this.setPreferredAccountType(preferredAccountType, namespace);
2364
+ const userAccounts = (_a = user.accounts) == null ? void 0 : _a.map((account) => CoreHelperUtil.createAccount(namespace, account.address, account.type || OptionsController.state.defaultAccountTypes[namespace]));
2365
+ this.setAllAccounts(userAccounts || [
2366
+ CoreHelperUtil.createAccount(namespace, user.address, preferredAccountType)
2367
+ ], namespace);
2368
+ await provider.getSmartAccountEnabledNetworks();
2369
+ this.setLoading(false);
2370
+ });
2371
+ provider.onSocialConnected(({ userName }) => {
2372
+ this.setUser({ ...AccountController.state.user || {}, username: userName });
2373
+ });
2374
+ provider.onGetSmartAccountEnabledNetworks((networks) => {
2375
+ this.setSmartAccountEnabledNetworks(networks, ChainController.state.activeChain);
2376
+ });
2377
+ provider.onSetPreferredAccount(({ address, type }) => {
2378
+ if (!address) {
2379
+ return;
2380
+ }
2381
+ this.setPreferredAccountType(type, ChainController.state.activeChain);
2382
+ });
2383
+ }
2384
+ async syncAuthConnector(provider) {
2385
+ var _a, _b, _c, _d;
2386
+ this.setLoading(true);
2387
+ const isLoginEmailUsed = provider.getLoginEmailUsed();
2388
+ this.setLoading(isLoginEmailUsed);
2389
+ if (isLoginEmailUsed) {
2390
+ this.setStatus("connecting", ChainController.state.activeChain);
2391
+ }
2392
+ const email = provider.getEmail();
2393
+ const username = provider.getUsername();
2394
+ this.setUser({ ...((_a = AccountController.state) == null ? void 0 : _a.user) || {}, username, email });
2395
+ this.setupAuthConnectorListeners(provider);
2396
+ const { isConnected } = await provider.isConnected();
2397
+ const theme = ThemeController.getSnapshot();
2398
+ const options = OptionsController.getSnapshot();
2399
+ provider.syncDappData({
2400
+ metadata: options.metadata,
2401
+ sdkVersion: options.sdkVersion,
2402
+ projectId: options.projectId,
2403
+ sdkType: options.sdkType
2404
+ });
2405
+ provider.syncTheme({
2406
+ themeMode: theme.themeMode,
2407
+ themeVariables: theme.themeVariables,
2408
+ w3mThemeVariables: getW3mThemeVariables(theme.themeVariables, theme.themeMode)
2409
+ });
2410
+ const namespace = StorageUtil.getActiveNamespace();
2411
+ if (namespace) {
2412
+ if (isConnected && ((_b = this.connectionControllerClient) == null ? void 0 : _b.connectExternal)) {
2413
+ await ((_d = this.connectionControllerClient) == null ? void 0 : _d.connectExternal({
2414
+ id: ConstantsUtil.CONNECTOR_ID.AUTH,
2415
+ info: { name: ConstantsUtil.CONNECTOR_ID.AUTH },
2416
+ type: ConstantsUtil$1.CONNECTOR_TYPE_AUTH,
2417
+ provider,
2418
+ chainId: (_c = ChainController.state.activeCaipNetwork) == null ? void 0 : _c.id,
2419
+ chain: namespace
2420
+ }));
2421
+ this.setStatus("connected", namespace);
2422
+ } else if (StorageUtil.getConnectedConnectorId(namespace) === ConstantsUtil.CONNECTOR_ID.AUTH) {
2423
+ this.setStatus("disconnected", namespace);
2424
+ StorageUtil.removeConnectedNamespace(namespace);
2425
+ }
2426
+ }
2427
+ this.setLoading(false);
2428
+ }
2429
+ listenWalletConnect() {
2430
+ if (this.universalProvider) {
2431
+ this.universalProvider.on("display_uri", (uri) => {
2432
+ ConnectionController.setUri(uri);
2433
+ });
2434
+ this.universalProvider.on("disconnect", () => {
2435
+ this.chainNamespaces.forEach((namespace) => {
2436
+ this.resetAccount(namespace);
2437
+ });
2438
+ ConnectionController.resetWcConnection();
2439
+ });
2440
+ this.universalProvider.on("chainChanged", (chainId) => {
2441
+ var _a;
2442
+ const caipNetwork = (_a = this.caipNetworks) == null ? void 0 : _a.find((c) => c.id == chainId);
2443
+ const currentCaipNetwork = this.getCaipNetwork();
2444
+ if (!caipNetwork) {
2445
+ this.setUnsupportedNetwork(chainId);
2446
+ return;
2447
+ }
2448
+ if ((currentCaipNetwork == null ? void 0 : currentCaipNetwork.id) !== (caipNetwork == null ? void 0 : caipNetwork.id)) {
2449
+ this.setCaipNetwork(caipNetwork);
2450
+ }
2451
+ });
2452
+ this.universalProvider.on("session_event", (callbackData) => {
2453
+ if (WcHelpersUtil.isSessionEventData(callbackData)) {
2454
+ const { name, data } = callbackData.params.event;
2455
+ if (name === "accountsChanged" && Array.isArray(data) && CoreHelperUtil.isCaipAddress(data[0])) {
2456
+ this.syncAccount(ParseUtil.parseCaipAddress(data[0]));
2457
+ }
2458
+ }
2459
+ });
2460
+ }
2461
+ }
2462
+ listenAdapter(chainNamespace) {
2463
+ const adapter = this.getAdapter(chainNamespace);
2464
+ if (!adapter) {
2465
+ return;
2466
+ }
2467
+ const connectionStatus = StorageUtil.getConnectionStatus();
2468
+ if (connectionStatus === "connected") {
2469
+ this.setStatus("connecting", chainNamespace);
2470
+ } else {
2471
+ this.setStatus(connectionStatus, chainNamespace);
2472
+ }
2473
+ adapter.on("switchNetwork", ({ address, chainId }) => {
2474
+ var _a;
2475
+ if (chainId && ((_a = this.caipNetworks) == null ? void 0 : _a.find((n) => n.id === chainId || n.caipNetworkId === chainId))) {
2476
+ if (ChainController.state.activeChain === chainNamespace && address) {
2477
+ this.syncAccount({ address, chainId, chainNamespace });
2478
+ } else if (ChainController.state.activeChain === chainNamespace && AccountController.state.address) {
2479
+ this.syncAccount({
2480
+ address: AccountController.state.address,
2481
+ chainId,
2482
+ chainNamespace
2483
+ });
2484
+ }
2485
+ } else {
2486
+ this.setUnsupportedNetwork(chainId);
2487
+ }
2488
+ });
2489
+ adapter.on("disconnect", this.disconnect.bind(this));
2490
+ adapter.on("pendingTransactions", () => {
2491
+ const address = AccountController.state.address;
2492
+ const activeCaipNetwork = ChainController.state.activeCaipNetwork;
2493
+ if (!address || !(activeCaipNetwork == null ? void 0 : activeCaipNetwork.id)) {
2494
+ return;
2495
+ }
2496
+ this.updateNativeBalance();
2497
+ });
2498
+ adapter.on("accountChanged", ({ address, chainId }) => {
2499
+ var _a, _b;
2500
+ if (ChainController.state.activeChain === chainNamespace && chainId) {
2501
+ this.syncAccount({
2502
+ address,
2503
+ chainId,
2504
+ chainNamespace
2505
+ });
2506
+ } else if (ChainController.state.activeChain === chainNamespace && ((_a = ChainController.state.activeCaipNetwork) == null ? void 0 : _a.id)) {
2507
+ this.syncAccount({
2508
+ address,
2509
+ chainId: (_b = ChainController.state.activeCaipNetwork) == null ? void 0 : _b.id,
2510
+ chainNamespace
2511
+ });
2512
+ }
2513
+ });
2514
+ }
2515
+ async updateNativeBalance() {
2516
+ var _a;
2517
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2518
+ if (adapter && ChainController.state.activeChain && AccountController.state.address) {
2519
+ const balance = await adapter.getBalance({
2520
+ address: AccountController.state.address,
2521
+ chainId: (_a = ChainController.state.activeCaipNetwork) == null ? void 0 : _a.id,
2522
+ caipNetwork: this.getCaipNetwork(),
2523
+ tokens: this.options.tokens
2524
+ });
2525
+ this.setBalance(balance.balance, balance.symbol, ChainController.state.activeChain);
2526
+ }
2527
+ }
2528
+ getChainsFromNamespaces(namespaces = {}) {
2529
+ return Object.values(namespaces).flatMap((namespace) => {
2530
+ const chains = namespace.chains || [];
2531
+ const accountsChains = namespace.accounts.map((account) => {
2532
+ const { chainId, chainNamespace } = ParseUtil.parseCaipAddress(account);
2533
+ return `${chainNamespace}:${chainId}`;
2534
+ });
2535
+ return Array.from(/* @__PURE__ */ new Set([...chains, ...accountsChains]));
2536
+ });
2537
+ }
2538
+ async syncWalletConnectAccount() {
2539
+ const adapter = this.getAdapter(ChainController.state.activeChain);
2540
+ this.chainNamespaces.forEach(async (chainNamespace) => {
2541
+ var _a, _b, _c, _d, _e, _f;
2542
+ const namespaceAccounts = ((_d = (_c = (_b = (_a = this.universalProvider) == null ? void 0 : _a.session) == null ? void 0 : _b.namespaces) == null ? void 0 : _c[chainNamespace]) == null ? void 0 : _d.accounts) || [];
2543
+ const activeChainId = (_e = ChainController.state.activeCaipNetwork) == null ? void 0 : _e.id;
2544
+ const sessionAddress = namespaceAccounts.find((account) => {
2545
+ const { chainId } = ParseUtil.parseCaipAddress(account);
2546
+ return chainId === (activeChainId == null ? void 0 : activeChainId.toString());
2547
+ }) || namespaceAccounts[0];
2548
+ if (sessionAddress) {
2549
+ const caipAddress = ParseUtil.validateCaipAddress(sessionAddress);
2550
+ const { chainId, address } = ParseUtil.parseCaipAddress(caipAddress);
2551
+ ProviderUtil.setProviderId(chainNamespace, ConstantsUtil$1.CONNECTOR_TYPE_WALLET_CONNECT);
2552
+ if (this.caipNetworks && ChainController.state.activeCaipNetwork && (adapter == null ? void 0 : adapter.namespace) !== ConstantsUtil.CHAIN.EVM) {
2553
+ const provider = adapter == null ? void 0 : adapter.getWalletConnectProvider({
2554
+ caipNetworks: this.caipNetworks,
2555
+ provider: this.universalProvider,
2556
+ activeCaipNetwork: ChainController.state.activeCaipNetwork
2557
+ });
2558
+ ProviderUtil.setProvider(chainNamespace, provider);
2559
+ } else {
2560
+ ProviderUtil.setProvider(chainNamespace, this.universalProvider);
2561
+ }
2562
+ StorageUtil.setConnectedConnectorId(chainNamespace, ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT);
2563
+ StorageUtil.addConnectedNamespace(chainNamespace);
2564
+ if ((adapter == null ? void 0 : adapter.adapterType) === "wagmi") {
2565
+ try {
2566
+ await (adapter == null ? void 0 : adapter.connect({
2567
+ id: "walletConnect",
2568
+ type: "WALLET_CONNECT",
2569
+ chainId: (_f = ChainController.state.activeCaipNetwork) == null ? void 0 : _f.id
2570
+ }));
2571
+ } catch (error) {
2572
+ if (adapter == null ? void 0 : adapter.reconnect) {
2573
+ adapter == null ? void 0 : adapter.reconnect({
2574
+ id: "walletConnect",
2575
+ type: "WALLET_CONNECT"
2576
+ });
2577
+ }
2578
+ }
2579
+ }
2580
+ this.syncWalletConnectAccounts(chainNamespace);
2581
+ await this.syncAccount({
2582
+ address,
2583
+ chainId,
2584
+ chainNamespace
2585
+ });
2586
+ }
2587
+ });
2588
+ await ChainController.setApprovedCaipNetworksData(ChainController.state.activeChain);
2589
+ }
2590
+ syncWalletConnectAccounts(chainNamespace) {
2591
+ var _a, _b, _c, _d, _e;
2592
+ const addresses = (_e = (_d = (_c = (_b = (_a = this.universalProvider) == null ? void 0 : _a.session) == null ? void 0 : _b.namespaces) == null ? void 0 : _c[chainNamespace]) == null ? void 0 : _d.accounts) == null ? void 0 : _e.map((account) => {
2593
+ const { address } = ParseUtil.parseCaipAddress(account);
2594
+ return address;
2595
+ }).filter((address, index, self) => self.indexOf(address) === index);
2596
+ if (addresses) {
2597
+ this.setAllAccounts(addresses.map((address) => CoreHelperUtil.createAccount(chainNamespace, address, chainNamespace === "bip122" ? "payment" : "eoa")), chainNamespace);
2598
+ }
2599
+ }
2600
+ syncProvider({ type, provider, id, chainNamespace }) {
2601
+ ProviderUtil.setProviderId(chainNamespace, type);
2602
+ ProviderUtil.setProvider(chainNamespace, provider);
2603
+ StorageUtil.setConnectedConnectorId(chainNamespace, id);
2604
+ }
2605
+ async syncAccount(params) {
2606
+ var _a, _b, _c, _d, _e, _f;
2607
+ const { address, chainId, chainNamespace } = params;
2608
+ const { chainId: activeChainId } = StorageUtil.getActiveNetworkProps();
2609
+ const chainIdToUse = chainId || activeChainId;
2610
+ const isUnsupportedNetwork = ((_a = ChainController.state.activeCaipNetwork) == null ? void 0 : _a.name) === ConstantsUtil.UNSUPPORTED_NETWORK_NAME;
2611
+ const shouldSupportAllNetworks = ChainController.getNetworkProp("supportsAllNetworks", chainNamespace);
2612
+ this.setStatus("connected", chainNamespace);
2613
+ if (isUnsupportedNetwork && !shouldSupportAllNetworks) {
2614
+ return;
2615
+ }
2616
+ if (chainIdToUse) {
2617
+ let caipNetwork = (_b = this.caipNetworks) == null ? void 0 : _b.find((n) => n.id.toString() === chainIdToUse.toString());
2618
+ let fallbackCaipNetwork = (_c = this.caipNetworks) == null ? void 0 : _c.find((n) => n.chainNamespace === chainNamespace);
2619
+ if (!shouldSupportAllNetworks && !caipNetwork && !fallbackCaipNetwork) {
2620
+ const caipNetworkIds = this.getApprovedCaipNetworkIds() || [];
2621
+ const caipNetworkId = caipNetworkIds.find((id) => {
2622
+ var _a2;
2623
+ return ((_a2 = ParseUtil.parseCaipNetworkId(id)) == null ? void 0 : _a2.chainId) === chainIdToUse.toString();
2624
+ });
2625
+ const fallBackCaipNetworkId = caipNetworkIds.find((id) => {
2626
+ var _a2;
2627
+ return ((_a2 = ParseUtil.parseCaipNetworkId(id)) == null ? void 0 : _a2.chainNamespace) === chainNamespace;
2628
+ });
2629
+ caipNetwork = (_d = this.caipNetworks) == null ? void 0 : _d.find((n) => n.caipNetworkId === caipNetworkId);
2630
+ fallbackCaipNetwork = (_e = this.caipNetworks) == null ? void 0 : _e.find((n) => n.caipNetworkId === fallBackCaipNetworkId || // This is a workaround used in Solana network to support deprecated caipNetworkId
2631
+ "deprecatedCaipNetworkId" in n && n.deprecatedCaipNetworkId === fallBackCaipNetworkId);
2632
+ }
2633
+ const network = caipNetwork || fallbackCaipNetwork;
2634
+ if ((network == null ? void 0 : network.chainNamespace) === ChainController.state.activeChain) {
2635
+ if (!OptionsController.state.allowUnsupportedChain && ((_f = ChainController.state.activeCaipNetwork) == null ? void 0 : _f.name) === ConstantsUtil.UNSUPPORTED_NETWORK_NAME) {
2636
+ ChainController.showUnsupportedChainUI();
2637
+ } else {
2638
+ this.setCaipNetwork(network);
2639
+ }
2640
+ }
2641
+ this.syncConnectedWalletInfo(chainNamespace);
2642
+ if (!HelpersUtil.isLowerCaseMatch(address, AccountController.state.address)) {
2643
+ this.setCaipAddress(`${chainNamespace}:${network == null ? void 0 : network.id}:${address}`, chainNamespace);
2644
+ await this.syncIdentity({
2645
+ address,
2646
+ chainId: network == null ? void 0 : network.id,
2647
+ chainNamespace
2648
+ });
2649
+ }
2650
+ await this.syncBalance({ address, chainId: network == null ? void 0 : network.id, chainNamespace });
2651
+ }
2652
+ }
2653
+ async syncBalance(params) {
2654
+ const caipNetwork = NetworkUtil.getNetworksByNamespace(this.caipNetworks, params.chainNamespace).find((n) => {
2655
+ var _a;
2656
+ return n.id.toString() === ((_a = params.chainId) == null ? void 0 : _a.toString());
2657
+ });
2658
+ if (!caipNetwork) {
2659
+ return;
2660
+ }
2661
+ await this.updateNativeBalance();
2662
+ }
2663
+ syncConnectedWalletInfo(chainNamespace) {
2664
+ var _a;
2665
+ const connectorId = StorageUtil.getConnectedConnectorId(chainNamespace);
2666
+ const providerType = ProviderUtil.getProviderId(chainNamespace);
2667
+ if (providerType === ConstantsUtil$1.CONNECTOR_TYPE_ANNOUNCED || providerType === ConstantsUtil$1.CONNECTOR_TYPE_INJECTED) {
2668
+ if (connectorId) {
2669
+ const connector = this.getConnectors().find((c) => c.id === connectorId);
2670
+ if (connector) {
2671
+ const { info, name, imageUrl } = connector;
2672
+ const icon = imageUrl || this.getConnectorImage(connector);
2673
+ this.setConnectedWalletInfo({ name, icon, ...info }, chainNamespace);
2674
+ }
2675
+ }
2676
+ } else if (providerType === ConstantsUtil$1.CONNECTOR_TYPE_WALLET_CONNECT) {
2677
+ const provider = ProviderUtil.getProvider(chainNamespace);
2678
+ if (provider == null ? void 0 : provider.session) {
2679
+ this.setConnectedWalletInfo({
2680
+ ...provider.session.peer.metadata,
2681
+ name: provider.session.peer.metadata.name,
2682
+ icon: (_a = provider.session.peer.metadata.icons) == null ? void 0 : _a[0]
2683
+ }, chainNamespace);
2684
+ }
2685
+ } else if (connectorId) {
2686
+ if (connectorId === ConstantsUtil.CONNECTOR_ID.COINBASE) {
2687
+ const connector = this.getConnectors().find((c) => c.id === ConstantsUtil.CONNECTOR_ID.COINBASE);
2688
+ this.setConnectedWalletInfo({ name: "Coinbase Wallet", icon: this.getConnectorImage(connector) }, chainNamespace);
2689
+ }
2690
+ this.setConnectedWalletInfo({ name: connectorId }, chainNamespace);
2691
+ }
2692
+ }
2693
+ async syncIdentity({ address, chainId, chainNamespace }) {
2694
+ var _a;
2695
+ const activeCaipNetwork = (_a = this.caipNetworks) == null ? void 0 : _a.find((n) => n.caipNetworkId === `${chainNamespace}:${chainId}`);
2696
+ if (chainNamespace !== ConstantsUtil.CHAIN.EVM || (activeCaipNetwork == null ? void 0 : activeCaipNetwork.testnet)) {
2697
+ return;
2698
+ }
2699
+ try {
2700
+ const { name, avatar } = await this.fetchIdentity({
2701
+ address
2702
+ });
2703
+ this.setProfileName(name, chainNamespace);
2704
+ this.setProfileImage(avatar, chainNamespace);
2705
+ if (!name) {
2706
+ await this.syncReownName(address, chainNamespace);
2707
+ const adapter = this.getAdapter(chainNamespace);
2708
+ const result = await (adapter == null ? void 0 : adapter.getProfile({
2709
+ address,
2710
+ chainId: Number(chainId)
2711
+ }));
2712
+ if (result == null ? void 0 : result.profileName) {
2713
+ this.setProfileName(result.profileName, chainNamespace);
2714
+ if (result.profileImage) {
2715
+ this.setProfileImage(result.profileImage, chainNamespace);
2716
+ }
2717
+ } else {
2718
+ await this.syncReownName(address, chainNamespace);
2719
+ this.setProfileImage(null, chainNamespace);
2720
+ }
2721
+ }
2722
+ } catch {
2723
+ if (chainId === 1) {
2724
+ await this.syncReownName(address, chainNamespace);
2725
+ } else {
2726
+ await this.syncReownName(address, chainNamespace);
2727
+ this.setProfileImage(null, chainNamespace);
2728
+ }
2729
+ }
2730
+ }
2731
+ async syncReownName(address, chainNamespace) {
2732
+ try {
2733
+ const registeredWcNames = await this.getReownName(address);
2734
+ if (registeredWcNames[0]) {
2735
+ const wcName = registeredWcNames[0];
2736
+ this.setProfileName(wcName.name, chainNamespace);
2737
+ } else {
2738
+ this.setProfileName(null, chainNamespace);
2739
+ }
2740
+ } catch {
2741
+ this.setProfileName(null, chainNamespace);
2742
+ }
2743
+ }
2744
+ async syncAdapterConnection(namespace) {
2745
+ var _a, _b, _c;
2746
+ const adapter = this.getAdapter(namespace);
2747
+ const connectorId = StorageUtil.getConnectedConnectorId(namespace);
2748
+ const caipNetwork = this.getCaipNetwork();
2749
+ try {
2750
+ if (!adapter || !connectorId) {
2751
+ throw new Error(`Adapter or connectorId not found for namespace ${namespace}`);
2752
+ }
2753
+ const connection = await (adapter == null ? void 0 : adapter.syncConnection({
2754
+ namespace,
2755
+ id: connectorId,
2756
+ chainId: caipNetwork == null ? void 0 : caipNetwork.id,
2757
+ rpcUrl: (_c = (_b = (_a = caipNetwork == null ? void 0 : caipNetwork.rpcUrls) == null ? void 0 : _a.default) == null ? void 0 : _b.http) == null ? void 0 : _c[0]
2758
+ }));
2759
+ if (connection) {
2760
+ const accounts = await (adapter == null ? void 0 : adapter.getAccounts({
2761
+ namespace,
2762
+ id: connectorId
2763
+ }));
2764
+ if (accounts && accounts.accounts.length > 0) {
2765
+ this.setAllAccounts(accounts.accounts, namespace);
2766
+ } else {
2767
+ this.setAllAccounts([CoreHelperUtil.createAccount(namespace, connection.address, "eoa")], namespace);
2768
+ }
2769
+ this.syncProvider({ ...connection, chainNamespace: namespace });
2770
+ await this.syncAccount({ ...connection, chainNamespace: namespace });
2771
+ this.setStatus("connected", namespace);
2772
+ } else {
2773
+ this.setStatus("disconnected", namespace);
2774
+ }
2775
+ } catch (e) {
2776
+ StorageUtil.deleteConnectedConnectorId(namespace);
2777
+ this.setStatus("disconnected", namespace);
2778
+ }
2779
+ }
2780
+ async syncNamespaceConnection(namespace) {
2781
+ var _a;
2782
+ try {
2783
+ const connectorId = StorageUtil.getConnectedConnectorId(namespace);
2784
+ const isEmailUsed = (_a = this.authProvider) == null ? void 0 : _a.getLoginEmailUsed();
2785
+ if (isEmailUsed) {
2786
+ return;
2787
+ }
2788
+ this.setStatus("connecting", namespace);
2789
+ switch (connectorId) {
2790
+ case ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT:
2791
+ await this.syncWalletConnectAccount();
2792
+ break;
2793
+ case ConstantsUtil.CONNECTOR_ID.AUTH:
2794
+ break;
2795
+ default:
2796
+ await this.syncAdapterConnection(namespace);
2797
+ }
2798
+ } catch (err) {
2799
+ console.warn("AppKit couldn't sync existing connection", err);
2800
+ StorageUtil.deleteConnectedConnectorId(namespace);
2801
+ this.setStatus("disconnected", namespace);
2802
+ }
2803
+ }
2804
+ async syncExistingConnection() {
2805
+ await Promise.allSettled(this.chainNamespaces.map((namespace) => this.syncNamespaceConnection(namespace)));
2806
+ }
2807
+ getAdapter(namespace) {
2808
+ var _a;
2809
+ if (!namespace) {
2810
+ return void 0;
2811
+ }
2812
+ return (_a = this.chainAdapters) == null ? void 0 : _a[namespace];
2813
+ }
2814
+ createUniversalProvider() {
2815
+ var _a;
2816
+ if (!this.universalProviderInitPromise && CoreHelperUtil.isClient() && ((_a = this.options) == null ? void 0 : _a.projectId)) {
2817
+ this.universalProviderInitPromise = this.initializeUniversalAdapter();
2818
+ }
2819
+ return this.universalProviderInitPromise;
2820
+ }
2821
+ handleAlertError(error) {
2822
+ const matchedUniversalProviderError = Object.entries(ErrorUtil.UniversalProviderErrors).find(([, { message: message2 }]) => error.message.includes(message2));
2823
+ const [errorKey, errorValue] = matchedUniversalProviderError ?? [];
2824
+ const { message, alertErrorKey } = errorValue ?? {};
2825
+ if (errorKey && message && !this.reportedAlertErrors[errorKey]) {
2826
+ const alertError = ErrorUtil.ALERT_ERRORS[alertErrorKey];
2827
+ if (alertError) {
2828
+ AlertController.open(alertError, "error");
2829
+ this.reportedAlertErrors[errorKey] = true;
2830
+ }
2831
+ }
2832
+ }
2833
+ async initializeUniversalAdapter() {
2834
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
2835
+ const logger = LoggerUtil.createLogger((error, ...args) => {
2836
+ if (error) {
2837
+ this.handleAlertError(error);
2838
+ }
2839
+ console.error(...args);
2840
+ });
2841
+ const universalProviderOptions = {
2842
+ projectId: (_a = this.options) == null ? void 0 : _a.projectId,
2843
+ metadata: {
2844
+ name: ((_b = this.options) == null ? void 0 : _b.metadata) ? (_c = this.options) == null ? void 0 : _c.metadata.name : "",
2845
+ description: ((_d = this.options) == null ? void 0 : _d.metadata) ? (_e = this.options) == null ? void 0 : _e.metadata.description : "",
2846
+ url: ((_f = this.options) == null ? void 0 : _f.metadata) ? (_g = this.options) == null ? void 0 : _g.metadata.url : "",
2847
+ icons: ((_h = this.options) == null ? void 0 : _h.metadata) ? (_i = this.options) == null ? void 0 : _i.metadata.icons : [""]
2848
+ },
2849
+ logger
2850
+ };
2851
+ OptionsController.setUsingInjectedUniversalProvider(Boolean((_j = this.options) == null ? void 0 : _j.universalProvider));
2852
+ this.universalProvider = this.options.universalProvider ?? await M.init(universalProviderOptions);
2853
+ this.listenWalletConnect();
2854
+ }
2855
+ async getUniversalProvider() {
2856
+ if (!this.universalProvider) {
2857
+ try {
2858
+ await this.createUniversalProvider();
2859
+ } catch (error) {
2860
+ throw new Error("AppKit:getUniversalProvider - Cannot create provider");
2861
+ }
2862
+ }
2863
+ return this.universalProvider;
2864
+ }
2865
+ createAuthProvider() {
2866
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
2867
+ const isEmailEnabled = ((_b = (_a = this.options) == null ? void 0 : _a.features) == null ? void 0 : _b.email) === void 0 ? ConstantsUtil$2.DEFAULT_FEATURES.email : (_d = (_c = this.options) == null ? void 0 : _c.features) == null ? void 0 : _d.email;
2868
+ const isSocialsEnabled = ((_f = (_e = this.options) == null ? void 0 : _e.features) == null ? void 0 : _f.socials) ? ((_i = (_h = (_g = this.options) == null ? void 0 : _g.features) == null ? void 0 : _h.socials) == null ? void 0 : _i.length) > 0 : ConstantsUtil$2.DEFAULT_FEATURES.socials;
2869
+ const isAuthEnabled = isEmailEnabled || isSocialsEnabled;
2870
+ if (!this.authProvider && ((_j = this.options) == null ? void 0 : _j.projectId) && isAuthEnabled) {
2871
+ this.authProvider = W3mFrameProviderSingleton.getInstance({
2872
+ projectId: this.options.projectId,
2873
+ enableLogger: this.options.enableAuthLogger,
2874
+ chainId: (_k = this.getCaipNetwork()) == null ? void 0 : _k.caipNetworkId,
2875
+ onTimeout: () => {
2876
+ AlertController.open(ErrorUtil.ALERT_ERRORS.SOCIALS_TIMEOUT, "error");
2877
+ }
2878
+ });
2879
+ this.subscribeState((val) => {
2880
+ var _a2;
2881
+ if (!val.open) {
2882
+ (_a2 = this.authProvider) == null ? void 0 : _a2.rejectRpcRequests();
2883
+ }
2884
+ });
2885
+ this.syncAuthConnector(this.authProvider);
2886
+ }
2887
+ }
2888
+ async createUniversalProviderForAdapter(chainNamespace) {
2889
+ var _a, _b, _c;
2890
+ await this.getUniversalProvider();
2891
+ if (this.universalProvider) {
2892
+ (_c = (_b = (_a = this.chainAdapters) == null ? void 0 : _a[chainNamespace]) == null ? void 0 : _b.setUniversalProvider) == null ? void 0 : _c.call(_b, this.universalProvider);
2893
+ }
2894
+ }
2895
+ createAuthProviderForAdapter(chainNamespace) {
2896
+ var _a, _b, _c;
2897
+ this.createAuthProvider();
2898
+ if (this.authProvider) {
2899
+ (_c = (_b = (_a = this.chainAdapters) == null ? void 0 : _a[chainNamespace]) == null ? void 0 : _b.setAuthProvider) == null ? void 0 : _c.call(_b, this.authProvider);
2900
+ }
2901
+ }
2902
+ createAdapter(blueprint) {
2903
+ var _a;
2904
+ if (!blueprint) {
2905
+ return;
2906
+ }
2907
+ const namespace = blueprint.namespace;
2908
+ if (!namespace) {
2909
+ return;
2910
+ }
2911
+ this.createClients();
2912
+ const adapterBlueprint = blueprint;
2913
+ adapterBlueprint.namespace = namespace;
2914
+ adapterBlueprint.construct({
2915
+ namespace,
2916
+ projectId: (_a = this.options) == null ? void 0 : _a.projectId,
2917
+ networks: this.caipNetworks
2918
+ });
2919
+ if (!this.chainNamespaces.includes(namespace)) {
2920
+ this.chainNamespaces.push(namespace);
2921
+ }
2922
+ if (this.chainAdapters) {
2923
+ this.chainAdapters[namespace] = adapterBlueprint;
2924
+ }
2925
+ }
2926
+ createAdapters(blueprints) {
2927
+ this.createClients();
2928
+ return this.chainNamespaces.reduce((adapters, namespace) => {
2929
+ var _a;
2930
+ const blueprint = blueprints == null ? void 0 : blueprints.find((b) => b.namespace === namespace);
2931
+ if (blueprint) {
2932
+ adapters[namespace] = blueprint;
2933
+ adapters[namespace].namespace = namespace;
2934
+ adapters[namespace].construct({
2935
+ namespace,
2936
+ projectId: (_a = this.options) == null ? void 0 : _a.projectId,
2937
+ networks: this.caipNetworks
2938
+ });
2939
+ } else {
2940
+ adapters[namespace] = new UniversalAdapter({
2941
+ namespace,
2942
+ networks: this.caipNetworks
2943
+ });
2944
+ }
2945
+ return adapters;
2946
+ }, {});
2947
+ }
2948
+ onConnectors(chainNamespace) {
2949
+ const adapter = this.getAdapter(chainNamespace);
2950
+ adapter == null ? void 0 : adapter.on("connectors", this.setConnectors.bind(this));
2951
+ }
2952
+ async initChainAdapter(namespace) {
2953
+ var _a;
2954
+ this.onConnectors(namespace);
2955
+ this.listenAdapter(namespace);
2956
+ (_a = this.chainAdapters) == null ? void 0 : _a[namespace].syncConnectors(this.options, this);
2957
+ await this.createUniversalProviderForAdapter(namespace);
2958
+ this.createAuthProviderForAdapter(namespace);
2959
+ }
2960
+ async initChainAdapters() {
2961
+ await Promise.all(this.chainNamespaces.map(async (namespace) => {
2962
+ await this.initChainAdapter(namespace);
2963
+ }));
2964
+ }
2965
+ getUnsupportedNetwork(caipNetworkId) {
2966
+ return {
2967
+ id: caipNetworkId.split(":")[1],
2968
+ caipNetworkId,
2969
+ name: ConstantsUtil.UNSUPPORTED_NETWORK_NAME,
2970
+ chainNamespace: caipNetworkId.split(":")[0],
2971
+ nativeCurrency: {
2972
+ name: "",
2973
+ decimals: 0,
2974
+ symbol: ""
2975
+ },
2976
+ rpcUrls: {
2977
+ default: {
2978
+ http: []
2979
+ }
2980
+ }
2981
+ };
2982
+ }
2983
+ getDefaultNetwork() {
2984
+ var _a, _b;
2985
+ const caipNetworkId = StorageUtil.getActiveCaipNetworkId();
2986
+ if (caipNetworkId) {
2987
+ const caipNetwork = (_a = this.caipNetworks) == null ? void 0 : _a.find((n) => n.caipNetworkId === caipNetworkId);
2988
+ if (caipNetwork) {
2989
+ return caipNetwork;
2990
+ }
2991
+ return this.getUnsupportedNetwork(caipNetworkId);
2992
+ }
2993
+ return (_b = this.caipNetworks) == null ? void 0 : _b[0];
2994
+ }
2995
+ async injectModalUi() {
2996
+ if (!this.initPromise && !isInitialized && CoreHelperUtil.isClient()) {
2997
+ isInitialized = true;
2998
+ this.initPromise = new Promise(async (resolve) => {
2999
+ await Promise.all([
3000
+ import("./index-B9WqxUXM.mjs"),
3001
+ import("./w3m-modal-DK3G5GJp.mjs")
3002
+ ]);
3003
+ const modal2 = document.createElement("w3m-modal");
3004
+ if (!OptionsController.state.disableAppend && !OptionsController.state.enableEmbedded) {
3005
+ document.body.insertAdjacentElement("beforeend", modal2);
3006
+ }
3007
+ resolve();
3008
+ });
3009
+ }
3010
+ return this.initPromise;
3011
+ }
3012
+ }
3013
+ const PACKAGE_VERSION = "1.6.8";
3014
+ let modal = void 0;
3015
+ function createAppKit(options) {
3016
+ if (!modal) {
3017
+ modal = new AppKit({
3018
+ ...options,
3019
+ sdkVersion: CoreHelperUtil.generateSdkVersion(options.adapters ?? [], "react", PACKAGE_VERSION)
3020
+ });
3021
+ getAppKit(modal);
3022
+ }
3023
+ return modal;
3024
+ }
3025
+ function useAppKitNetwork() {
3026
+ const { caipNetwork, caipNetworkId, chainId } = useAppKitNetworkCore();
3027
+ function switchNetwork(network) {
3028
+ modal == null ? void 0 : modal.switchNetwork(network);
3029
+ }
3030
+ return {
3031
+ caipNetwork,
3032
+ caipNetworkId,
3033
+ chainId,
3034
+ switchNetwork
3035
+ };
3036
+ }
3037
+ export {
3038
+ createAppKit as c,
3039
+ useAppKitNetwork as u
3040
+ };