@reown/appkit-controllers 1.7.0-rc.0

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 (241) hide show
  1. package/LICENSE +190 -0
  2. package/dist/esm/exports/index.js +32 -0
  3. package/dist/esm/exports/index.js.map +1 -0
  4. package/dist/esm/exports/modal.js +2 -0
  5. package/dist/esm/exports/modal.js.map +1 -0
  6. package/dist/esm/exports/react.js +52 -0
  7. package/dist/esm/exports/react.js.map +1 -0
  8. package/dist/esm/exports/vue.js +63 -0
  9. package/dist/esm/exports/vue.js.map +1 -0
  10. package/dist/esm/src/controllers/AccountController.js +160 -0
  11. package/dist/esm/src/controllers/AccountController.js.map +1 -0
  12. package/dist/esm/src/controllers/AlertController.js +35 -0
  13. package/dist/esm/src/controllers/AlertController.js.map +1 -0
  14. package/dist/esm/src/controllers/ApiController.js +260 -0
  15. package/dist/esm/src/controllers/ApiController.js.map +1 -0
  16. package/dist/esm/src/controllers/AssetController.js +43 -0
  17. package/dist/esm/src/controllers/AssetController.js.map +1 -0
  18. package/dist/esm/src/controllers/BlockchainApiController.js +472 -0
  19. package/dist/esm/src/controllers/BlockchainApiController.js.map +1 -0
  20. package/dist/esm/src/controllers/ChainController.js +548 -0
  21. package/dist/esm/src/controllers/ChainController.js.map +1 -0
  22. package/dist/esm/src/controllers/ConnectionController.js +190 -0
  23. package/dist/esm/src/controllers/ConnectionController.js.map +1 -0
  24. package/dist/esm/src/controllers/ConnectorController.js +272 -0
  25. package/dist/esm/src/controllers/ConnectorController.js.map +1 -0
  26. package/dist/esm/src/controllers/EnsController.js +144 -0
  27. package/dist/esm/src/controllers/EnsController.js.map +1 -0
  28. package/dist/esm/src/controllers/EventsController.js +76 -0
  29. package/dist/esm/src/controllers/EventsController.js.map +1 -0
  30. package/dist/esm/src/controllers/ModalController.js +120 -0
  31. package/dist/esm/src/controllers/ModalController.js.map +1 -0
  32. package/dist/esm/src/controllers/OnRampController.js +132 -0
  33. package/dist/esm/src/controllers/OnRampController.js.map +1 -0
  34. package/dist/esm/src/controllers/OptionsController.js +146 -0
  35. package/dist/esm/src/controllers/OptionsController.js.map +1 -0
  36. package/dist/esm/src/controllers/PublicStateController.js +20 -0
  37. package/dist/esm/src/controllers/PublicStateController.js.map +1 -0
  38. package/dist/esm/src/controllers/RouterController.js +125 -0
  39. package/dist/esm/src/controllers/RouterController.js.map +1 -0
  40. package/dist/esm/src/controllers/SendController.js +305 -0
  41. package/dist/esm/src/controllers/SendController.js.map +1 -0
  42. package/dist/esm/src/controllers/SnackController.js +62 -0
  43. package/dist/esm/src/controllers/SnackController.js.map +1 -0
  44. package/dist/esm/src/controllers/SwapController.js +674 -0
  45. package/dist/esm/src/controllers/SwapController.js.map +1 -0
  46. package/dist/esm/src/controllers/ThemeController.js +55 -0
  47. package/dist/esm/src/controllers/ThemeController.js.map +1 -0
  48. package/dist/esm/src/controllers/TooltipController.js +41 -0
  49. package/dist/esm/src/controllers/TooltipController.js.map +1 -0
  50. package/dist/esm/src/controllers/TransactionsController.js +113 -0
  51. package/dist/esm/src/controllers/TransactionsController.js.map +1 -0
  52. package/dist/esm/src/utils/AssetUtil.js +86 -0
  53. package/dist/esm/src/utils/AssetUtil.js.map +1 -0
  54. package/dist/esm/src/utils/ConstantsUtil.js +239 -0
  55. package/dist/esm/src/utils/ConstantsUtil.js.map +1 -0
  56. package/dist/esm/src/utils/CoreHelperUtil.js +354 -0
  57. package/dist/esm/src/utils/CoreHelperUtil.js.map +1 -0
  58. package/dist/esm/src/utils/ERC7811Util.js +111 -0
  59. package/dist/esm/src/utils/ERC7811Util.js.map +1 -0
  60. package/dist/esm/src/utils/EnsUtil.js +10 -0
  61. package/dist/esm/src/utils/EnsUtil.js.map +1 -0
  62. package/dist/esm/src/utils/FetchUtil.js +73 -0
  63. package/dist/esm/src/utils/FetchUtil.js.map +1 -0
  64. package/dist/esm/src/utils/MobileWallet.js +31 -0
  65. package/dist/esm/src/utils/MobileWallet.js.map +1 -0
  66. package/dist/esm/src/utils/OptionsUtil.js +29 -0
  67. package/dist/esm/src/utils/OptionsUtil.js.map +1 -0
  68. package/dist/esm/src/utils/RouterUtil.js +23 -0
  69. package/dist/esm/src/utils/RouterUtil.js.map +1 -0
  70. package/dist/esm/src/utils/SIWXUtil.js +258 -0
  71. package/dist/esm/src/utils/SIWXUtil.js.map +1 -0
  72. package/dist/esm/src/utils/SendApiUtil.js +65 -0
  73. package/dist/esm/src/utils/SendApiUtil.js.map +1 -0
  74. package/dist/esm/src/utils/StorageUtil.js +485 -0
  75. package/dist/esm/src/utils/StorageUtil.js.map +1 -0
  76. package/dist/esm/src/utils/SwapApiUtil.js +89 -0
  77. package/dist/esm/src/utils/SwapApiUtil.js.map +1 -0
  78. package/dist/esm/src/utils/SwapCalculationUtil.js +74 -0
  79. package/dist/esm/src/utils/SwapCalculationUtil.js.map +1 -0
  80. package/dist/esm/src/utils/TypeUtil.js +2 -0
  81. package/dist/esm/src/utils/TypeUtil.js.map +1 -0
  82. package/dist/esm/tests/constants/OnrampTransactions.js +151 -0
  83. package/dist/esm/tests/constants/OnrampTransactions.js.map +1 -0
  84. package/dist/esm/tests/controllers/AccountController.test.js +186 -0
  85. package/dist/esm/tests/controllers/AccountController.test.js.map +1 -0
  86. package/dist/esm/tests/controllers/AlertController.test.js +48 -0
  87. package/dist/esm/tests/controllers/AlertController.test.js.map +1 -0
  88. package/dist/esm/tests/controllers/ApiController.test.js +608 -0
  89. package/dist/esm/tests/controllers/ApiController.test.js.map +1 -0
  90. package/dist/esm/tests/controllers/AssetController.test.js +92 -0
  91. package/dist/esm/tests/controllers/AssetController.test.js.map +1 -0
  92. package/dist/esm/tests/controllers/BlockchainApiController.test.js +38 -0
  93. package/dist/esm/tests/controllers/BlockchainApiController.test.js.map +1 -0
  94. package/dist/esm/tests/controllers/ChainController.test.js +382 -0
  95. package/dist/esm/tests/controllers/ChainController.test.js.map +1 -0
  96. package/dist/esm/tests/controllers/ConnectionController.test.js +151 -0
  97. package/dist/esm/tests/controllers/ConnectionController.test.js.map +1 -0
  98. package/dist/esm/tests/controllers/ConnectorController.test.js +282 -0
  99. package/dist/esm/tests/controllers/ConnectorController.test.js.map +1 -0
  100. package/dist/esm/tests/controllers/EnsController.test.js +186 -0
  101. package/dist/esm/tests/controllers/EnsController.test.js.map +1 -0
  102. package/dist/esm/tests/controllers/EventsController.test.js +47 -0
  103. package/dist/esm/tests/controllers/EventsController.test.js.map +1 -0
  104. package/dist/esm/tests/controllers/ModalController.test.js +66 -0
  105. package/dist/esm/tests/controllers/ModalController.test.js.map +1 -0
  106. package/dist/esm/tests/controllers/OnRampController.test.js +118 -0
  107. package/dist/esm/tests/controllers/OnRampController.test.js.map +1 -0
  108. package/dist/esm/tests/controllers/OptionsController.test.js +42 -0
  109. package/dist/esm/tests/controllers/OptionsController.test.js.map +1 -0
  110. package/dist/esm/tests/controllers/PublicStateController.test.js +33 -0
  111. package/dist/esm/tests/controllers/PublicStateController.test.js.map +1 -0
  112. package/dist/esm/tests/controllers/RouterController.test.js +103 -0
  113. package/dist/esm/tests/controllers/RouterController.test.js.map +1 -0
  114. package/dist/esm/tests/controllers/SendController.test.js +136 -0
  115. package/dist/esm/tests/controllers/SendController.test.js.map +1 -0
  116. package/dist/esm/tests/controllers/SnackController.test.js +86 -0
  117. package/dist/esm/tests/controllers/SnackController.test.js.map +1 -0
  118. package/dist/esm/tests/controllers/SwapController.test.js +105 -0
  119. package/dist/esm/tests/controllers/SwapController.test.js.map +1 -0
  120. package/dist/esm/tests/controllers/ThemeController.test.js +26 -0
  121. package/dist/esm/tests/controllers/ThemeController.test.js.map +1 -0
  122. package/dist/esm/tests/controllers/TooltipController.test.js +40 -0
  123. package/dist/esm/tests/controllers/TooltipController.test.js.map +1 -0
  124. package/dist/esm/tests/controllers/TransactionsController.test.js +239 -0
  125. package/dist/esm/tests/controllers/TransactionsController.test.js.map +1 -0
  126. package/dist/esm/tests/hooks/react.test.js +149 -0
  127. package/dist/esm/tests/hooks/react.test.js.map +1 -0
  128. package/dist/esm/tests/hooks/vue.test.js +56 -0
  129. package/dist/esm/tests/hooks/vue.test.js.map +1 -0
  130. package/dist/esm/tests/mocks/ChainController.js +24 -0
  131. package/dist/esm/tests/mocks/ChainController.js.map +1 -0
  132. package/dist/esm/tests/mocks/SwapController.js +118 -0
  133. package/dist/esm/tests/mocks/SwapController.js.map +1 -0
  134. package/dist/esm/tests/mocks/useAppKitAccount.js +41 -0
  135. package/dist/esm/tests/mocks/useAppKitAccount.js.map +1 -0
  136. package/dist/esm/tests/utils/AssetUtil.test.js +108 -0
  137. package/dist/esm/tests/utils/AssetUtil.test.js.map +1 -0
  138. package/dist/esm/tests/utils/CoreHelperUtil.test.js +67 -0
  139. package/dist/esm/tests/utils/CoreHelperUtil.test.js.map +1 -0
  140. package/dist/esm/tests/utils/ERC7811.test.js +268 -0
  141. package/dist/esm/tests/utils/ERC7811.test.js.map +1 -0
  142. package/dist/esm/tests/utils/EnsUtil.test.js +23 -0
  143. package/dist/esm/tests/utils/EnsUtil.test.js.map +1 -0
  144. package/dist/esm/tests/utils/FetchUtil.test.js +175 -0
  145. package/dist/esm/tests/utils/FetchUtil.test.js.map +1 -0
  146. package/dist/esm/tests/utils/MobileWallet.test.js +72 -0
  147. package/dist/esm/tests/utils/MobileWallet.test.js.map +1 -0
  148. package/dist/esm/tests/utils/OptionsUtil.test.js +20 -0
  149. package/dist/esm/tests/utils/OptionsUtil.test.js.map +1 -0
  150. package/dist/esm/tests/utils/RouterUtil.test.js +62 -0
  151. package/dist/esm/tests/utils/RouterUtil.test.js.map +1 -0
  152. package/dist/esm/tests/utils/SendApiUtil.test.js +340 -0
  153. package/dist/esm/tests/utils/SendApiUtil.test.js.map +1 -0
  154. package/dist/esm/tests/utils/StorageUtil.test.js +162 -0
  155. package/dist/esm/tests/utils/StorageUtil.test.js.map +1 -0
  156. package/dist/esm/tests/utils/SwapApiUtil.test.js +213 -0
  157. package/dist/esm/tests/utils/SwapApiUtil.test.js.map +1 -0
  158. package/dist/esm/tests/utils/SwapCalculationUtil.test.js +80 -0
  159. package/dist/esm/tests/utils/SwapCalculationUtil.test.js.map +1 -0
  160. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  161. package/dist/types/exports/index.d.ts +51 -0
  162. package/dist/types/exports/modal.d.ts +2 -0
  163. package/dist/types/exports/react.d.ts +9 -0
  164. package/dist/types/exports/vue.d.ts +9 -0
  165. package/dist/types/src/controllers/AccountController.d.ts +56 -0
  166. package/dist/types/src/controllers/AlertController.d.ts +17 -0
  167. package/dist/types/src/controllers/ApiController.d.ts +52 -0
  168. package/dist/types/src/controllers/AssetController.d.ts +22 -0
  169. package/dist/types/src/controllers/BlockchainApiController.d.ts +59 -0
  170. package/dist/types/src/controllers/ChainController.d.ts +75 -0
  171. package/dist/types/src/controllers/ConnectionController.d.ts +86 -0
  172. package/dist/types/src/controllers/ConnectorController.d.ts +61 -0
  173. package/dist/types/src/controllers/EnsController.d.ts +26 -0
  174. package/dist/types/src/controllers/EventsController.d.ts +17 -0
  175. package/dist/types/src/controllers/ModalController.d.ts +27 -0
  176. package/dist/types/src/controllers/OnRampController.d.ts +55 -0
  177. package/dist/types/src/controllers/OptionsController.d.ts +364 -0
  178. package/dist/types/src/controllers/PublicStateController.d.ts +33 -0
  179. package/dist/types/src/controllers/RouterController.d.ts +56 -0
  180. package/dist/types/src/controllers/SendController.d.ts +52 -0
  181. package/dist/types/src/controllers/SnackController.d.ts +29 -0
  182. package/dist/types/src/controllers/SwapController.d.ts +127 -0
  183. package/dist/types/src/controllers/ThemeController.d.ts +30 -0
  184. package/dist/types/src/controllers/TooltipController.d.ts +25 -0
  185. package/dist/types/src/controllers/TransactionsController.d.ts +25 -0
  186. package/dist/types/src/utils/AssetUtil.d.ts +15 -0
  187. package/dist/types/src/utils/ConstantsUtil.d.ts +86 -0
  188. package/dist/types/src/utils/CoreHelperUtil.d.ts +56 -0
  189. package/dist/types/src/utils/ERC7811Util.d.ts +67 -0
  190. package/dist/types/src/utils/EnsUtil.d.ts +3 -0
  191. package/dist/types/src/utils/FetchUtil.d.ts +26 -0
  192. package/dist/types/src/utils/MobileWallet.d.ts +9 -0
  193. package/dist/types/src/utils/OptionsUtil.d.ts +5 -0
  194. package/dist/types/src/utils/RouterUtil.d.ts +4 -0
  195. package/dist/types/src/utils/SIWXUtil.d.ts +183 -0
  196. package/dist/types/src/utils/SendApiUtil.d.ts +13 -0
  197. package/dist/types/src/utils/StorageUtil.d.ts +99 -0
  198. package/dist/types/src/utils/SwapApiUtil.d.ts +27 -0
  199. package/dist/types/src/utils/SwapCalculationUtil.d.ts +22 -0
  200. package/dist/types/src/utils/TypeUtil.d.ts +981 -0
  201. package/dist/types/tests/constants/OnrampTransactions.d.ts +138 -0
  202. package/dist/types/tests/controllers/AccountController.test.d.ts +1 -0
  203. package/dist/types/tests/controllers/AlertController.test.d.ts +1 -0
  204. package/dist/types/tests/controllers/ApiController.test.d.ts +1 -0
  205. package/dist/types/tests/controllers/AssetController.test.d.ts +1 -0
  206. package/dist/types/tests/controllers/BlockchainApiController.test.d.ts +1 -0
  207. package/dist/types/tests/controllers/ChainController.test.d.ts +1 -0
  208. package/dist/types/tests/controllers/ConnectionController.test.d.ts +1 -0
  209. package/dist/types/tests/controllers/ConnectorController.test.d.ts +1 -0
  210. package/dist/types/tests/controllers/EnsController.test.d.ts +1 -0
  211. package/dist/types/tests/controllers/EventsController.test.d.ts +1 -0
  212. package/dist/types/tests/controllers/ModalController.test.d.ts +1 -0
  213. package/dist/types/tests/controllers/OnRampController.test.d.ts +1 -0
  214. package/dist/types/tests/controllers/OptionsController.test.d.ts +1 -0
  215. package/dist/types/tests/controllers/PublicStateController.test.d.ts +1 -0
  216. package/dist/types/tests/controllers/RouterController.test.d.ts +1 -0
  217. package/dist/types/tests/controllers/SendController.test.d.ts +1 -0
  218. package/dist/types/tests/controllers/SnackController.test.d.ts +1 -0
  219. package/dist/types/tests/controllers/SwapController.test.d.ts +1 -0
  220. package/dist/types/tests/controllers/ThemeController.test.d.ts +1 -0
  221. package/dist/types/tests/controllers/TooltipController.test.d.ts +1 -0
  222. package/dist/types/tests/controllers/TransactionsController.test.d.ts +1 -0
  223. package/dist/types/tests/hooks/react.test.d.ts +1 -0
  224. package/dist/types/tests/hooks/vue.test.d.ts +2 -0
  225. package/dist/types/tests/mocks/ChainController.d.ts +2 -0
  226. package/dist/types/tests/mocks/SwapController.d.ts +75 -0
  227. package/dist/types/tests/mocks/useAppKitAccount.d.ts +40 -0
  228. package/dist/types/tests/utils/AssetUtil.test.d.ts +1 -0
  229. package/dist/types/tests/utils/CoreHelperUtil.test.d.ts +1 -0
  230. package/dist/types/tests/utils/ERC7811.test.d.ts +1 -0
  231. package/dist/types/tests/utils/EnsUtil.test.d.ts +1 -0
  232. package/dist/types/tests/utils/FetchUtil.test.d.ts +1 -0
  233. package/dist/types/tests/utils/MobileWallet.test.d.ts +1 -0
  234. package/dist/types/tests/utils/OptionsUtil.test.d.ts +1 -0
  235. package/dist/types/tests/utils/RouterUtil.test.d.ts +1 -0
  236. package/dist/types/tests/utils/SendApiUtil.test.d.ts +1 -0
  237. package/dist/types/tests/utils/StorageUtil.test.d.ts +1 -0
  238. package/dist/types/tests/utils/SwapApiUtil.test.d.ts +1 -0
  239. package/dist/types/tests/utils/SwapCalculationUtil.test.d.ts +1 -0
  240. package/package.json +81 -0
  241. package/readme.md +11 -0
@@ -0,0 +1,485 @@
1
+ /* eslint-disable no-console */
2
+ import { SafeLocalStorage, SafeLocalStorageKeys, getSafeConnectorIdKey } from '@reown/appkit-common';
3
+ // -- Utility -----------------------------------------------------------------
4
+ export const StorageUtil = {
5
+ // Cache expiry in milliseconds
6
+ cacheExpiry: {
7
+ portfolio: 30000,
8
+ nativeBalance: 30000,
9
+ ens: 300000,
10
+ identity: 300000
11
+ },
12
+ isCacheExpired(timestamp, cacheExpiry) {
13
+ return Date.now() - timestamp > cacheExpiry;
14
+ },
15
+ getActiveNetworkProps() {
16
+ const namespace = StorageUtil.getActiveNamespace();
17
+ const caipNetworkId = StorageUtil.getActiveCaipNetworkId();
18
+ const stringChainId = caipNetworkId ? caipNetworkId.split(':')[1] : undefined;
19
+ // eslint-disable-next-line no-nested-ternary
20
+ const chainId = stringChainId
21
+ ? isNaN(Number(stringChainId))
22
+ ? stringChainId
23
+ : Number(stringChainId)
24
+ : undefined;
25
+ return {
26
+ namespace,
27
+ caipNetworkId,
28
+ chainId
29
+ };
30
+ },
31
+ setWalletConnectDeepLink({ name, href }) {
32
+ try {
33
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.DEEPLINK_CHOICE, JSON.stringify({ href, name }));
34
+ }
35
+ catch {
36
+ console.info('Unable to set WalletConnect deep link');
37
+ }
38
+ },
39
+ getWalletConnectDeepLink() {
40
+ try {
41
+ const deepLink = SafeLocalStorage.getItem(SafeLocalStorageKeys.DEEPLINK_CHOICE);
42
+ if (deepLink) {
43
+ return JSON.parse(deepLink);
44
+ }
45
+ }
46
+ catch {
47
+ console.info('Unable to get WalletConnect deep link');
48
+ }
49
+ return undefined;
50
+ },
51
+ deleteWalletConnectDeepLink() {
52
+ try {
53
+ SafeLocalStorage.removeItem(SafeLocalStorageKeys.DEEPLINK_CHOICE);
54
+ }
55
+ catch {
56
+ console.info('Unable to delete WalletConnect deep link');
57
+ }
58
+ },
59
+ setActiveNamespace(namespace) {
60
+ try {
61
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.ACTIVE_NAMESPACE, namespace);
62
+ }
63
+ catch {
64
+ console.info('Unable to set active namespace');
65
+ }
66
+ },
67
+ setActiveCaipNetworkId(caipNetworkId) {
68
+ try {
69
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.ACTIVE_CAIP_NETWORK_ID, caipNetworkId);
70
+ StorageUtil.setActiveNamespace(caipNetworkId.split(':')[0]);
71
+ }
72
+ catch {
73
+ console.info('Unable to set active caip network id');
74
+ }
75
+ },
76
+ getActiveCaipNetworkId() {
77
+ try {
78
+ return SafeLocalStorage.getItem(SafeLocalStorageKeys.ACTIVE_CAIP_NETWORK_ID);
79
+ }
80
+ catch {
81
+ console.info('Unable to get active caip network id');
82
+ return undefined;
83
+ }
84
+ },
85
+ deleteActiveCaipNetworkId() {
86
+ try {
87
+ SafeLocalStorage.removeItem(SafeLocalStorageKeys.ACTIVE_CAIP_NETWORK_ID);
88
+ }
89
+ catch {
90
+ console.info('Unable to delete active caip network id');
91
+ }
92
+ },
93
+ deleteConnectedConnectorId(namespace) {
94
+ try {
95
+ const key = getSafeConnectorIdKey(namespace);
96
+ SafeLocalStorage.removeItem(key);
97
+ }
98
+ catch {
99
+ console.info('Unable to delete connected connector id');
100
+ }
101
+ },
102
+ setAppKitRecent(wallet) {
103
+ try {
104
+ const recentWallets = StorageUtil.getRecentWallets();
105
+ const exists = recentWallets.find(w => w.id === wallet.id);
106
+ if (!exists) {
107
+ recentWallets.unshift(wallet);
108
+ if (recentWallets.length > 2) {
109
+ recentWallets.pop();
110
+ }
111
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.RECENT_WALLETS, JSON.stringify(recentWallets));
112
+ }
113
+ }
114
+ catch {
115
+ console.info('Unable to set AppKit recent');
116
+ }
117
+ },
118
+ getRecentWallets() {
119
+ try {
120
+ const recent = SafeLocalStorage.getItem(SafeLocalStorageKeys.RECENT_WALLETS);
121
+ return recent ? JSON.parse(recent) : [];
122
+ }
123
+ catch {
124
+ console.info('Unable to get AppKit recent');
125
+ }
126
+ return [];
127
+ },
128
+ setConnectedConnectorId(namespace, connectorId) {
129
+ try {
130
+ const key = getSafeConnectorIdKey(namespace);
131
+ SafeLocalStorage.setItem(key, connectorId);
132
+ }
133
+ catch {
134
+ console.info('Unable to set Connected Connector Id');
135
+ }
136
+ },
137
+ getActiveNamespace() {
138
+ try {
139
+ const activeNamespace = SafeLocalStorage.getItem(SafeLocalStorageKeys.ACTIVE_NAMESPACE);
140
+ return activeNamespace;
141
+ }
142
+ catch {
143
+ console.info('Unable to get active namespace');
144
+ }
145
+ return undefined;
146
+ },
147
+ getConnectedConnectorId(namespace) {
148
+ if (!namespace) {
149
+ return undefined;
150
+ }
151
+ try {
152
+ const key = getSafeConnectorIdKey(namespace);
153
+ return SafeLocalStorage.getItem(key);
154
+ }
155
+ catch (e) {
156
+ console.info('Unable to get connected connector id in namespace ', namespace);
157
+ }
158
+ return undefined;
159
+ },
160
+ setConnectedSocialProvider(socialProvider) {
161
+ try {
162
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.CONNECTED_SOCIAL, socialProvider);
163
+ }
164
+ catch {
165
+ console.info('Unable to set connected social provider');
166
+ }
167
+ },
168
+ getConnectedSocialProvider() {
169
+ try {
170
+ return SafeLocalStorage.getItem(SafeLocalStorageKeys.CONNECTED_SOCIAL);
171
+ }
172
+ catch {
173
+ console.info('Unable to get connected social provider');
174
+ }
175
+ return undefined;
176
+ },
177
+ deleteConnectedSocialProvider() {
178
+ try {
179
+ SafeLocalStorage.removeItem(SafeLocalStorageKeys.CONNECTED_SOCIAL);
180
+ }
181
+ catch {
182
+ console.info('Unable to delete connected social provider');
183
+ }
184
+ },
185
+ getConnectedSocialUsername() {
186
+ try {
187
+ return SafeLocalStorage.getItem(SafeLocalStorageKeys.CONNECTED_SOCIAL_USERNAME);
188
+ }
189
+ catch {
190
+ console.info('Unable to get connected social username');
191
+ }
192
+ return undefined;
193
+ },
194
+ getStoredActiveCaipNetworkId() {
195
+ const storedCaipNetworkId = SafeLocalStorage.getItem(SafeLocalStorageKeys.ACTIVE_CAIP_NETWORK_ID);
196
+ const networkId = storedCaipNetworkId?.split(':')?.[1];
197
+ return networkId;
198
+ },
199
+ setConnectionStatus(status) {
200
+ try {
201
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.CONNECTION_STATUS, status);
202
+ }
203
+ catch {
204
+ console.info('Unable to set connection status');
205
+ }
206
+ },
207
+ getConnectionStatus() {
208
+ try {
209
+ return SafeLocalStorage.getItem(SafeLocalStorageKeys.CONNECTION_STATUS);
210
+ }
211
+ catch {
212
+ return undefined;
213
+ }
214
+ },
215
+ getConnectedNamespaces() {
216
+ try {
217
+ const namespaces = SafeLocalStorage.getItem(SafeLocalStorageKeys.CONNECTED_NAMESPACES);
218
+ if (!namespaces?.length) {
219
+ return [];
220
+ }
221
+ return namespaces.split(',');
222
+ }
223
+ catch {
224
+ return [];
225
+ }
226
+ },
227
+ setConnectedNamespaces(namespaces) {
228
+ try {
229
+ const uniqueNamespaces = Array.from(new Set(namespaces));
230
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.CONNECTED_NAMESPACES, uniqueNamespaces.join(','));
231
+ }
232
+ catch {
233
+ console.info('Unable to set namespaces in storage');
234
+ }
235
+ },
236
+ addConnectedNamespace(namespace) {
237
+ try {
238
+ const namespaces = StorageUtil.getConnectedNamespaces();
239
+ if (!namespaces.includes(namespace)) {
240
+ namespaces.push(namespace);
241
+ StorageUtil.setConnectedNamespaces(namespaces);
242
+ }
243
+ }
244
+ catch {
245
+ console.info('Unable to add connected namespace');
246
+ }
247
+ },
248
+ removeConnectedNamespace(namespace) {
249
+ try {
250
+ const namespaces = StorageUtil.getConnectedNamespaces();
251
+ const index = namespaces.indexOf(namespace);
252
+ if (index > -1) {
253
+ namespaces.splice(index, 1);
254
+ StorageUtil.setConnectedNamespaces(namespaces);
255
+ }
256
+ }
257
+ catch {
258
+ console.info('Unable to remove connected namespace');
259
+ }
260
+ },
261
+ getTelegramSocialProvider() {
262
+ try {
263
+ return SafeLocalStorage.getItem(SafeLocalStorageKeys.TELEGRAM_SOCIAL_PROVIDER);
264
+ }
265
+ catch {
266
+ console.info('Unable to get telegram social provider');
267
+ return null;
268
+ }
269
+ },
270
+ setTelegramSocialProvider(socialProvider) {
271
+ try {
272
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.TELEGRAM_SOCIAL_PROVIDER, socialProvider);
273
+ }
274
+ catch {
275
+ console.info('Unable to set telegram social provider');
276
+ }
277
+ },
278
+ removeTelegramSocialProvider() {
279
+ try {
280
+ SafeLocalStorage.removeItem(SafeLocalStorageKeys.TELEGRAM_SOCIAL_PROVIDER);
281
+ }
282
+ catch {
283
+ console.info('Unable to remove telegram social provider');
284
+ }
285
+ },
286
+ getBalanceCache() {
287
+ let cache = {};
288
+ try {
289
+ const result = SafeLocalStorage.getItem(SafeLocalStorageKeys.PORTFOLIO_CACHE);
290
+ cache = result ? JSON.parse(result) : {};
291
+ }
292
+ catch {
293
+ console.info('Unable to get balance cache');
294
+ }
295
+ return cache;
296
+ },
297
+ removeAddressFromBalanceCache(caipAddress) {
298
+ try {
299
+ const cache = StorageUtil.getBalanceCache();
300
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.PORTFOLIO_CACHE, JSON.stringify({ ...cache, [caipAddress]: undefined }));
301
+ }
302
+ catch {
303
+ console.info('Unable to remove address from balance cache', caipAddress);
304
+ }
305
+ },
306
+ getBalanceCacheForCaipAddress(caipAddress) {
307
+ try {
308
+ const cache = StorageUtil.getBalanceCache();
309
+ const balanceCache = cache[caipAddress];
310
+ // We want to discard cache if it's older than the cache expiry
311
+ if (balanceCache &&
312
+ !this.isCacheExpired(balanceCache.timestamp, this.cacheExpiry.portfolio)) {
313
+ return balanceCache.balance;
314
+ }
315
+ StorageUtil.removeAddressFromBalanceCache(caipAddress);
316
+ }
317
+ catch {
318
+ console.info('Unable to get balance cache for address', caipAddress);
319
+ }
320
+ return undefined;
321
+ },
322
+ updateBalanceCache(params) {
323
+ try {
324
+ const cache = StorageUtil.getBalanceCache();
325
+ cache[params.caipAddress] = params;
326
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.PORTFOLIO_CACHE, JSON.stringify(cache));
327
+ }
328
+ catch {
329
+ console.info('Unable to update balance cache', params);
330
+ }
331
+ },
332
+ getNativeBalanceCache() {
333
+ let cache = {};
334
+ try {
335
+ const result = SafeLocalStorage.getItem(SafeLocalStorageKeys.NATIVE_BALANCE_CACHE);
336
+ cache = result ? JSON.parse(result) : {};
337
+ }
338
+ catch {
339
+ console.info('Unable to get balance cache');
340
+ }
341
+ return cache;
342
+ },
343
+ removeAddressFromNativeBalanceCache(caipAddress) {
344
+ try {
345
+ const cache = StorageUtil.getBalanceCache();
346
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.NATIVE_BALANCE_CACHE, JSON.stringify({ ...cache, [caipAddress]: undefined }));
347
+ }
348
+ catch {
349
+ console.info('Unable to remove address from balance cache', caipAddress);
350
+ }
351
+ },
352
+ getNativeBalanceCacheForCaipAddress(caipAddress) {
353
+ try {
354
+ const cache = StorageUtil.getNativeBalanceCache();
355
+ const nativeBalanceCache = cache[caipAddress];
356
+ // We want to discard cache if it's older than the cache expiry
357
+ if (nativeBalanceCache &&
358
+ !this.isCacheExpired(nativeBalanceCache.timestamp, this.cacheExpiry.nativeBalance)) {
359
+ return nativeBalanceCache;
360
+ }
361
+ console.info('Discarding cache for address', caipAddress);
362
+ StorageUtil.removeAddressFromBalanceCache(caipAddress);
363
+ }
364
+ catch {
365
+ console.info('Unable to get balance cache for address', caipAddress);
366
+ }
367
+ return undefined;
368
+ },
369
+ updateNativeBalanceCache(params) {
370
+ try {
371
+ const cache = StorageUtil.getNativeBalanceCache();
372
+ cache[params.caipAddress] = params;
373
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.NATIVE_BALANCE_CACHE, JSON.stringify(cache));
374
+ }
375
+ catch {
376
+ console.info('Unable to update balance cache', params);
377
+ }
378
+ },
379
+ getEnsCache() {
380
+ let cache = {};
381
+ try {
382
+ const result = SafeLocalStorage.getItem(SafeLocalStorageKeys.ENS_CACHE);
383
+ cache = result ? JSON.parse(result) : {};
384
+ }
385
+ catch {
386
+ console.info('Unable to get ens name cache');
387
+ }
388
+ return cache;
389
+ },
390
+ getEnsFromCacheForAddress(address) {
391
+ try {
392
+ const cache = StorageUtil.getEnsCache();
393
+ const ensCache = cache[address];
394
+ // We want to discard cache if it's older than the cache expiry
395
+ if (ensCache && !this.isCacheExpired(ensCache.timestamp, this.cacheExpiry.ens)) {
396
+ return ensCache.ens;
397
+ }
398
+ StorageUtil.removeEnsFromCache(address);
399
+ }
400
+ catch {
401
+ console.info('Unable to get ens name from cache', address);
402
+ }
403
+ return undefined;
404
+ },
405
+ updateEnsCache(params) {
406
+ try {
407
+ const cache = StorageUtil.getEnsCache();
408
+ cache[params.address] = params;
409
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.ENS_CACHE, JSON.stringify(cache));
410
+ }
411
+ catch {
412
+ console.info('Unable to update ens name cache', params);
413
+ }
414
+ },
415
+ removeEnsFromCache(address) {
416
+ try {
417
+ const cache = StorageUtil.getEnsCache();
418
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.ENS_CACHE, JSON.stringify({ ...cache, [address]: undefined }));
419
+ }
420
+ catch {
421
+ console.info('Unable to remove ens name from cache', address);
422
+ }
423
+ },
424
+ getIdentityCache() {
425
+ let cache = {};
426
+ try {
427
+ const result = SafeLocalStorage.getItem(SafeLocalStorageKeys.IDENTITY_CACHE);
428
+ cache = result ? JSON.parse(result) : {};
429
+ }
430
+ catch {
431
+ console.info('Unable to get identity cache');
432
+ }
433
+ return cache;
434
+ },
435
+ getIdentityFromCacheForAddress(address) {
436
+ try {
437
+ const cache = StorageUtil.getIdentityCache();
438
+ const identityCache = cache[address];
439
+ // We want to discard cache if it's older than the cache expiry
440
+ if (identityCache &&
441
+ !this.isCacheExpired(identityCache.timestamp, this.cacheExpiry.identity)) {
442
+ return identityCache.identity;
443
+ }
444
+ StorageUtil.removeIdentityFromCache(address);
445
+ }
446
+ catch {
447
+ console.info('Unable to get identity from cache', address);
448
+ }
449
+ return undefined;
450
+ },
451
+ updateIdentityCache(params) {
452
+ try {
453
+ const cache = StorageUtil.getIdentityCache();
454
+ cache[params.address] = {
455
+ identity: params.identity,
456
+ timestamp: params.timestamp
457
+ };
458
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.IDENTITY_CACHE, JSON.stringify(cache));
459
+ }
460
+ catch {
461
+ console.info('Unable to update identity cache', params);
462
+ }
463
+ },
464
+ removeIdentityFromCache(address) {
465
+ try {
466
+ const cache = StorageUtil.getIdentityCache();
467
+ SafeLocalStorage.setItem(SafeLocalStorageKeys.IDENTITY_CACHE, JSON.stringify({ ...cache, [address]: undefined }));
468
+ }
469
+ catch {
470
+ console.info('Unable to remove identity from cache', address);
471
+ }
472
+ },
473
+ clearAddressCache() {
474
+ try {
475
+ SafeLocalStorage.removeItem(SafeLocalStorageKeys.PORTFOLIO_CACHE);
476
+ SafeLocalStorage.removeItem(SafeLocalStorageKeys.NATIVE_BALANCE_CACHE);
477
+ SafeLocalStorage.removeItem(SafeLocalStorageKeys.ENS_CACHE);
478
+ SafeLocalStorage.removeItem(SafeLocalStorageKeys.IDENTITY_CACHE);
479
+ }
480
+ catch {
481
+ console.info('Unable to clear address cache');
482
+ }
483
+ }
484
+ };
485
+ //# sourceMappingURL=StorageUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageUtil.js","sourceRoot":"","sources":["../../../../src/utils/StorageUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { AccountController } from '../controllers/AccountController.js';
2
+ import { BlockchainApiController } from '../controllers/BlockchainApiController.js';
3
+ import { ChainController } from '../controllers/ChainController.js';
4
+ import { ConnectionController } from '../controllers/ConnectionController.js';
5
+ // -- Controller ---------------------------------------- //
6
+ export const SwapApiUtil = {
7
+ async getTokenList() {
8
+ const caipNetwork = ChainController.state.activeCaipNetwork;
9
+ const response = await BlockchainApiController.fetchSwapTokens({
10
+ chainId: caipNetwork?.caipNetworkId
11
+ });
12
+ const tokens = response?.tokens?.map(token => ({
13
+ ...token,
14
+ eip2612: false,
15
+ quantity: {
16
+ decimals: '0',
17
+ numeric: '0'
18
+ },
19
+ price: 0,
20
+ value: 0
21
+ })) || [];
22
+ return tokens;
23
+ },
24
+ async fetchGasPrice() {
25
+ const caipNetwork = ChainController.state.activeCaipNetwork;
26
+ if (!caipNetwork) {
27
+ return null;
28
+ }
29
+ try {
30
+ switch (caipNetwork.chainNamespace) {
31
+ case 'solana':
32
+ // eslint-disable-next-line no-case-declarations
33
+ const lamportsPerSignature = (await ConnectionController?.estimateGas({ chainNamespace: 'solana' }))?.toString();
34
+ return {
35
+ standard: lamportsPerSignature,
36
+ fast: lamportsPerSignature,
37
+ instant: lamportsPerSignature
38
+ };
39
+ case 'eip155':
40
+ default:
41
+ return await BlockchainApiController.fetchGasPrice({
42
+ chainId: caipNetwork.caipNetworkId
43
+ });
44
+ }
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ },
50
+ async fetchSwapAllowance({ tokenAddress, userAddress, sourceTokenAmount, sourceTokenDecimals }) {
51
+ const response = await BlockchainApiController.fetchSwapAllowance({
52
+ tokenAddress,
53
+ userAddress
54
+ });
55
+ if (response?.allowance && sourceTokenAmount && sourceTokenDecimals) {
56
+ const parsedValue = ConnectionController.parseUnits(sourceTokenAmount, sourceTokenDecimals) || 0;
57
+ const hasAllowance = BigInt(response.allowance) >= parsedValue;
58
+ return hasAllowance;
59
+ }
60
+ return false;
61
+ },
62
+ async getMyTokensWithBalance(forceUpdate) {
63
+ const address = AccountController.state.address;
64
+ const caipNetwork = ChainController.state.activeCaipNetwork;
65
+ if (!address || !caipNetwork) {
66
+ return [];
67
+ }
68
+ const response = await BlockchainApiController.getBalance(address, caipNetwork.caipNetworkId, forceUpdate);
69
+ /*
70
+ * The 1Inch API includes many low-quality tokens in the balance response,
71
+ * which appear inconsistently. This filter prevents them from being displayed.
72
+ */
73
+ const balances = response.balances.filter(balance => balance.quantity.decimals !== '0');
74
+ AccountController.setTokenBalance(balances, ChainController.state.activeChain);
75
+ return this.mapBalancesToSwapTokens(balances);
76
+ },
77
+ mapBalancesToSwapTokens(balances) {
78
+ return (balances?.map(token => ({
79
+ ...token,
80
+ address: token?.address
81
+ ? token.address
82
+ : ChainController.getActiveNetworkTokenAddress(),
83
+ decimals: parseInt(token.quantity.decimals, 10),
84
+ logoUri: token.iconUrl,
85
+ eip2612: false
86
+ })) || []);
87
+ }
88
+ };
89
+ //# sourceMappingURL=SwapApiUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwapApiUtil.js","sourceRoot":"","sources":["../../../../src/utils/SwapApiUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ // -- Types --------------------------------------------- //
2
+ import { NumberUtil } from '@reown/appkit-common';
3
+ // -- Util ---------------------------------------- //
4
+ export const SwapCalculationUtil = {
5
+ getGasPriceInEther(gas, gasPrice) {
6
+ const totalGasCostInWei = gasPrice * gas;
7
+ const totalGasCostInEther = Number(totalGasCostInWei) / 1e18;
8
+ return totalGasCostInEther;
9
+ },
10
+ getGasPriceInUSD(networkPrice, gas, gasPrice) {
11
+ const totalGasCostInEther = SwapCalculationUtil.getGasPriceInEther(gas, gasPrice);
12
+ const networkPriceInUSD = NumberUtil.bigNumber(networkPrice);
13
+ const gasCostInUSD = networkPriceInUSD.times(totalGasCostInEther);
14
+ return gasCostInUSD.toNumber();
15
+ },
16
+ getPriceImpact({ sourceTokenAmount, sourceTokenPriceInUSD, toTokenPriceInUSD, toTokenAmount }) {
17
+ const inputValue = NumberUtil.bigNumber(sourceTokenAmount).times(sourceTokenPriceInUSD);
18
+ const outputValue = NumberUtil.bigNumber(toTokenAmount).times(toTokenPriceInUSD);
19
+ const priceImpact = inputValue.minus(outputValue).div(inputValue).times(100);
20
+ return priceImpact.toNumber();
21
+ },
22
+ getMaxSlippage(slippage, toTokenAmount) {
23
+ const slippageToleranceDecimal = NumberUtil.bigNumber(slippage).div(100);
24
+ const maxSlippageAmount = NumberUtil.multiply(toTokenAmount, slippageToleranceDecimal);
25
+ return maxSlippageAmount.toNumber();
26
+ },
27
+ getProviderFee(sourceTokenAmount, feePercentage = 0.0085) {
28
+ const providerFee = NumberUtil.bigNumber(sourceTokenAmount).times(feePercentage);
29
+ return providerFee.toString();
30
+ },
31
+ isInsufficientNetworkTokenForGas(networkBalanceInUSD, gasPriceInUSD) {
32
+ const gasPrice = gasPriceInUSD || '0';
33
+ if (NumberUtil.bigNumber(networkBalanceInUSD).eq(0)) {
34
+ return true;
35
+ }
36
+ return NumberUtil.bigNumber(NumberUtil.bigNumber(gasPrice)).gt(networkBalanceInUSD);
37
+ },
38
+ isInsufficientSourceTokenForSwap(sourceTokenAmount, sourceTokenAddress, balance) {
39
+ const sourceTokenBalance = balance?.find(token => token.address === sourceTokenAddress)
40
+ ?.quantity?.numeric;
41
+ const isInSufficientBalance = NumberUtil.bigNumber(sourceTokenBalance || '0').lt(sourceTokenAmount);
42
+ return isInSufficientBalance;
43
+ },
44
+ getToTokenAmount({ sourceToken, toToken, sourceTokenPrice, toTokenPrice, sourceTokenAmount }) {
45
+ if (sourceTokenAmount === '0') {
46
+ return '0';
47
+ }
48
+ if (!sourceToken || !toToken) {
49
+ return '0';
50
+ }
51
+ const sourceTokenDecimals = sourceToken.decimals;
52
+ const sourceTokenPriceInUSD = sourceTokenPrice;
53
+ const toTokenDecimals = toToken.decimals;
54
+ const toTokenPriceInUSD = toTokenPrice;
55
+ if (toTokenPriceInUSD <= 0) {
56
+ return '0';
57
+ }
58
+ // Calculate the provider fee (0.85% of the source token amount)
59
+ const providerFee = NumberUtil.bigNumber(sourceTokenAmount).times(0.0085);
60
+ // Adjust the source token amount by subtracting the provider fee
61
+ const adjustedSourceTokenAmount = NumberUtil.bigNumber(sourceTokenAmount).minus(providerFee);
62
+ // Proceed with conversion using the adjusted source token amount
63
+ const sourceAmountInSmallestUnit = adjustedSourceTokenAmount.times(NumberUtil.bigNumber(10).pow(sourceTokenDecimals));
64
+ const priceRatio = NumberUtil.bigNumber(sourceTokenPriceInUSD).div(toTokenPriceInUSD);
65
+ const decimalDifference = sourceTokenDecimals - toTokenDecimals;
66
+ const toTokenAmountInSmallestUnit = sourceAmountInSmallestUnit
67
+ .times(priceRatio)
68
+ .div(NumberUtil.bigNumber(10).pow(decimalDifference));
69
+ const toTokenAmount = toTokenAmountInSmallestUnit.div(NumberUtil.bigNumber(10).pow(toTokenDecimals));
70
+ const amount = toTokenAmount.toFixed(toTokenDecimals).toString();
71
+ return amount;
72
+ }
73
+ };
74
+ //# sourceMappingURL=SwapCalculationUtil.js.map