@reown/appkit-core-react-native 0.0.0-fix-approved-networks-20250822000414 → 0.0.0-fix-improvements-20250827190629

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 (245) hide show
  1. package/lib/commonjs/controllers/ApiController.js +75 -38
  2. package/lib/commonjs/controllers/ApiController.js.map +1 -1
  3. package/lib/commonjs/controllers/AssetController.js +0 -4
  4. package/lib/commonjs/controllers/AssetController.js.map +1 -1
  5. package/lib/commonjs/controllers/BlockchainApiController.js +156 -57
  6. package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -1
  7. package/lib/commonjs/controllers/ConnectionsController.js +402 -0
  8. package/lib/commonjs/controllers/ConnectionsController.js.map +1 -0
  9. package/lib/commonjs/controllers/EnsController.js.map +1 -1
  10. package/lib/commonjs/controllers/EventsController.js.map +1 -1
  11. package/lib/commonjs/controllers/ModalController.js +6 -7
  12. package/lib/commonjs/controllers/ModalController.js.map +1 -1
  13. package/lib/commonjs/controllers/OnRampController.js +29 -19
  14. package/lib/commonjs/controllers/OnRampController.js.map +1 -1
  15. package/lib/commonjs/controllers/OptionsController.js +22 -7
  16. package/lib/commonjs/controllers/OptionsController.js.map +1 -1
  17. package/lib/commonjs/controllers/PublicStateController.js.map +1 -1
  18. package/lib/commonjs/controllers/RouterController.js +7 -22
  19. package/lib/commonjs/controllers/RouterController.js.map +1 -1
  20. package/lib/commonjs/controllers/SendController.js +96 -96
  21. package/lib/commonjs/controllers/SendController.js.map +1 -1
  22. package/lib/commonjs/controllers/SnackController.js +29 -5
  23. package/lib/commonjs/controllers/SnackController.js.map +1 -1
  24. package/lib/commonjs/controllers/SwapController.js +154 -151
  25. package/lib/commonjs/controllers/SwapController.js.map +1 -1
  26. package/lib/commonjs/controllers/ThemeController.js +9 -1
  27. package/lib/commonjs/controllers/ThemeController.js.map +1 -1
  28. package/lib/commonjs/controllers/TransactionsController.js +22 -18
  29. package/lib/commonjs/controllers/TransactionsController.js.map +1 -1
  30. package/lib/commonjs/controllers/WcController.js +73 -0
  31. package/lib/commonjs/controllers/WcController.js.map +1 -0
  32. package/lib/commonjs/index.js +13 -41
  33. package/lib/commonjs/index.js.map +1 -1
  34. package/lib/commonjs/package.json +1 -0
  35. package/lib/commonjs/utils/ApiUtil.js.map +1 -1
  36. package/lib/commonjs/utils/AssetUtil.js +15 -19
  37. package/lib/commonjs/utils/AssetUtil.js.map +1 -1
  38. package/lib/commonjs/utils/ConstantsUtil.js +122 -5
  39. package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
  40. package/lib/commonjs/utils/CoreHelperUtil.js +19 -7
  41. package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -1
  42. package/lib/commonjs/utils/EventUtil.js.map +1 -1
  43. package/lib/commonjs/utils/FetchUtil.js.map +1 -1
  44. package/lib/commonjs/utils/RouterUtil.js.map +1 -1
  45. package/lib/commonjs/utils/StorageUtil.js +90 -108
  46. package/lib/commonjs/utils/StorageUtil.js.map +1 -1
  47. package/lib/commonjs/utils/SwapApiUtil.js +15 -21
  48. package/lib/commonjs/utils/SwapApiUtil.js.map +1 -1
  49. package/lib/commonjs/utils/SwapCalculationUtil.js.map +1 -1
  50. package/lib/commonjs/utils/WalletUtil.js +23 -0
  51. package/lib/commonjs/utils/WalletUtil.js.map +1 -0
  52. package/lib/module/controllers/ApiController.js +77 -38
  53. package/lib/module/controllers/ApiController.js.map +1 -1
  54. package/lib/module/controllers/AssetController.js +2 -4
  55. package/lib/module/controllers/AssetController.js.map +1 -1
  56. package/lib/module/controllers/BlockchainApiController.js +158 -57
  57. package/lib/module/controllers/BlockchainApiController.js.map +1 -1
  58. package/lib/module/controllers/ConnectionsController.js +399 -0
  59. package/lib/module/controllers/ConnectionsController.js.map +1 -0
  60. package/lib/module/controllers/EnsController.js +2 -0
  61. package/lib/module/controllers/EnsController.js.map +1 -1
  62. package/lib/module/controllers/EventsController.js +2 -0
  63. package/lib/module/controllers/EventsController.js.map +1 -1
  64. package/lib/module/controllers/ModalController.js +8 -7
  65. package/lib/module/controllers/ModalController.js.map +1 -1
  66. package/lib/module/controllers/OnRampController.js +27 -15
  67. package/lib/module/controllers/OnRampController.js.map +1 -1
  68. package/lib/module/controllers/OptionsController.js +24 -7
  69. package/lib/module/controllers/OptionsController.js.map +1 -1
  70. package/lib/module/controllers/PublicStateController.js +2 -0
  71. package/lib/module/controllers/PublicStateController.js.map +1 -1
  72. package/lib/module/controllers/RouterController.js +9 -22
  73. package/lib/module/controllers/RouterController.js.map +1 -1
  74. package/lib/module/controllers/SendController.js +98 -96
  75. package/lib/module/controllers/SendController.js.map +1 -1
  76. package/lib/module/controllers/SnackController.js +31 -5
  77. package/lib/module/controllers/SnackController.js.map +1 -1
  78. package/lib/module/controllers/SwapController.js +156 -151
  79. package/lib/module/controllers/SwapController.js.map +1 -1
  80. package/lib/module/controllers/ThemeController.js +11 -1
  81. package/lib/module/controllers/ThemeController.js.map +1 -1
  82. package/lib/module/controllers/TransactionsController.js +24 -18
  83. package/lib/module/controllers/TransactionsController.js.map +1 -1
  84. package/lib/module/controllers/WcController.js +70 -0
  85. package/lib/module/controllers/WcController.js.map +1 -0
  86. package/lib/module/index.js +7 -7
  87. package/lib/module/index.js.map +1 -1
  88. package/lib/module/utils/ApiUtil.js +2 -0
  89. package/lib/module/utils/ApiUtil.js.map +1 -1
  90. package/lib/module/utils/AssetUtil.js +17 -19
  91. package/lib/module/utils/AssetUtil.js.map +1 -1
  92. package/lib/module/utils/ConstantsUtil.js +124 -5
  93. package/lib/module/utils/ConstantsUtil.js.map +1 -1
  94. package/lib/module/utils/CoreHelperUtil.js +21 -5
  95. package/lib/module/utils/CoreHelperUtil.js.map +1 -1
  96. package/lib/module/utils/EventUtil.js +2 -0
  97. package/lib/module/utils/EventUtil.js.map +1 -1
  98. package/lib/module/utils/FetchUtil.js +2 -0
  99. package/lib/module/utils/FetchUtil.js.map +1 -1
  100. package/lib/module/utils/RouterUtil.js +2 -0
  101. package/lib/module/utils/RouterUtil.js.map +1 -1
  102. package/lib/module/utils/StorageUtil.js +93 -108
  103. package/lib/module/utils/StorageUtil.js.map +1 -1
  104. package/lib/module/utils/SwapApiUtil.js +17 -21
  105. package/lib/module/utils/SwapApiUtil.js.map +1 -1
  106. package/lib/module/utils/SwapCalculationUtil.js +3 -0
  107. package/lib/module/utils/SwapCalculationUtil.js.map +1 -1
  108. package/lib/module/utils/WalletUtil.js +19 -0
  109. package/lib/module/utils/WalletUtil.js.map +1 -0
  110. package/lib/typescript/controllers/ApiController.d.ts +4 -5
  111. package/lib/typescript/controllers/ApiController.d.ts.map +1 -1
  112. package/lib/typescript/controllers/AssetController.d.ts +0 -2
  113. package/lib/typescript/controllers/AssetController.d.ts.map +1 -1
  114. package/lib/typescript/controllers/BlockchainApiController.d.ts +29 -11
  115. package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -1
  116. package/lib/typescript/controllers/ConnectionsController.d.ts +45 -0
  117. package/lib/typescript/controllers/ConnectionsController.d.ts.map +1 -0
  118. package/lib/typescript/controllers/EnsController.d.ts +1 -1
  119. package/lib/typescript/controllers/EventsController.d.ts +1 -1
  120. package/lib/typescript/controllers/EventsController.d.ts.map +1 -1
  121. package/lib/typescript/controllers/ModalController.d.ts.map +1 -1
  122. package/lib/typescript/controllers/OnRampController.d.ts +2 -2
  123. package/lib/typescript/controllers/OnRampController.d.ts.map +1 -1
  124. package/lib/typescript/controllers/OptionsController.d.ts +9 -4
  125. package/lib/typescript/controllers/OptionsController.d.ts.map +1 -1
  126. package/lib/typescript/controllers/PublicStateController.d.ts +1 -1
  127. package/lib/typescript/controllers/PublicStateController.d.ts.map +1 -1
  128. package/lib/typescript/controllers/RouterController.d.ts +6 -20
  129. package/lib/typescript/controllers/RouterController.d.ts.map +1 -1
  130. package/lib/typescript/controllers/SendController.d.ts +5 -7
  131. package/lib/typescript/controllers/SendController.d.ts.map +1 -1
  132. package/lib/typescript/controllers/SnackController.d.ts +3 -3
  133. package/lib/typescript/controllers/SnackController.d.ts.map +1 -1
  134. package/lib/typescript/controllers/SwapController.d.ts +12 -12
  135. package/lib/typescript/controllers/SwapController.d.ts.map +1 -1
  136. package/lib/typescript/controllers/ThemeController.d.ts +1 -1
  137. package/lib/typescript/controllers/ThemeController.d.ts.map +1 -1
  138. package/lib/typescript/controllers/TransactionsController.d.ts +3 -3
  139. package/lib/typescript/controllers/TransactionsController.d.ts.map +1 -1
  140. package/lib/typescript/controllers/WcController.d.ts +27 -0
  141. package/lib/typescript/controllers/WcController.d.ts.map +1 -0
  142. package/lib/typescript/index.d.ts +3 -8
  143. package/lib/typescript/index.d.ts.map +1 -1
  144. package/lib/typescript/utils/AssetUtil.d.ts +3 -4
  145. package/lib/typescript/utils/AssetUtil.d.ts.map +1 -1
  146. package/lib/typescript/utils/ConstantsUtil.d.ts +12 -2
  147. package/lib/typescript/utils/ConstantsUtil.d.ts.map +1 -1
  148. package/lib/typescript/utils/CoreHelperUtil.d.ts +5 -4
  149. package/lib/typescript/utils/CoreHelperUtil.d.ts.map +1 -1
  150. package/lib/typescript/utils/EventUtil.d.ts +1 -1
  151. package/lib/typescript/utils/EventUtil.d.ts.map +1 -1
  152. package/lib/typescript/utils/FetchUtil.d.ts +2 -2
  153. package/lib/typescript/utils/FetchUtil.d.ts.map +1 -1
  154. package/lib/typescript/utils/StorageUtil.d.ts +15 -16
  155. package/lib/typescript/utils/StorageUtil.d.ts.map +1 -1
  156. package/lib/typescript/utils/SwapApiUtil.d.ts +3 -4
  157. package/lib/typescript/utils/SwapApiUtil.d.ts.map +1 -1
  158. package/lib/typescript/utils/SwapCalculationUtil.d.ts +1 -1
  159. package/lib/typescript/utils/SwapCalculationUtil.d.ts.map +1 -1
  160. package/lib/typescript/utils/WalletUtil.d.ts +5 -0
  161. package/lib/typescript/utils/WalletUtil.d.ts.map +1 -0
  162. package/package.json +8 -22
  163. package/src/controllers/ApiController.ts +83 -40
  164. package/src/controllers/AssetController.ts +0 -6
  165. package/src/controllers/BlockchainApiController.ts +136 -44
  166. package/src/controllers/ConnectionsController.ts +521 -0
  167. package/src/controllers/EnsController.ts +1 -1
  168. package/src/controllers/EventsController.ts +1 -1
  169. package/src/controllers/ModalController.ts +6 -7
  170. package/src/controllers/OnRampController.ts +37 -18
  171. package/src/controllers/OptionsController.ts +37 -14
  172. package/src/controllers/PublicStateController.ts +1 -1
  173. package/src/controllers/RouterController.ts +17 -54
  174. package/src/controllers/SendController.ts +122 -111
  175. package/src/controllers/SnackController.ts +31 -5
  176. package/src/controllers/SwapController.ts +177 -183
  177. package/src/controllers/ThemeController.ts +11 -2
  178. package/src/controllers/TransactionsController.ts +25 -19
  179. package/src/controllers/WcController.ts +93 -0
  180. package/src/index.ts +6 -20
  181. package/src/utils/AssetUtil.ts +17 -22
  182. package/src/utils/ConstantsUtil.ts +126 -6
  183. package/src/utils/CoreHelperUtil.ts +45 -7
  184. package/src/utils/EventUtil.ts +1 -1
  185. package/src/utils/FetchUtil.ts +2 -2
  186. package/src/utils/StorageUtil.ts +163 -131
  187. package/src/utils/SwapApiUtil.ts +30 -37
  188. package/src/utils/SwapCalculationUtil.ts +1 -2
  189. package/src/utils/WalletUtil.ts +14 -0
  190. package/lib/commonjs/controllers/AccountController.js +0 -93
  191. package/lib/commonjs/controllers/AccountController.js.map +0 -1
  192. package/lib/commonjs/controllers/ConnectionController.js +0 -126
  193. package/lib/commonjs/controllers/ConnectionController.js.map +0 -1
  194. package/lib/commonjs/controllers/ConnectorController.js +0 -49
  195. package/lib/commonjs/controllers/ConnectorController.js.map +0 -1
  196. package/lib/commonjs/controllers/NetworkController.js +0 -90
  197. package/lib/commonjs/controllers/NetworkController.js.map +0 -1
  198. package/lib/commonjs/controllers/WebviewController.js +0 -52
  199. package/lib/commonjs/controllers/WebviewController.js.map +0 -1
  200. package/lib/commonjs/utils/ConnectionUtil.js +0 -33
  201. package/lib/commonjs/utils/ConnectionUtil.js.map +0 -1
  202. package/lib/commonjs/utils/NetworkUtil.js +0 -46
  203. package/lib/commonjs/utils/NetworkUtil.js.map +0 -1
  204. package/lib/commonjs/utils/TypeUtil.js +0 -35
  205. package/lib/commonjs/utils/TypeUtil.js.map +0 -1
  206. package/lib/module/controllers/AccountController.js +0 -88
  207. package/lib/module/controllers/AccountController.js.map +0 -1
  208. package/lib/module/controllers/ConnectionController.js +0 -121
  209. package/lib/module/controllers/ConnectionController.js.map +0 -1
  210. package/lib/module/controllers/ConnectorController.js +0 -44
  211. package/lib/module/controllers/ConnectorController.js.map +0 -1
  212. package/lib/module/controllers/NetworkController.js +0 -85
  213. package/lib/module/controllers/NetworkController.js.map +0 -1
  214. package/lib/module/controllers/WebviewController.js +0 -47
  215. package/lib/module/controllers/WebviewController.js.map +0 -1
  216. package/lib/module/utils/ConnectionUtil.js +0 -27
  217. package/lib/module/utils/ConnectionUtil.js.map +0 -1
  218. package/lib/module/utils/NetworkUtil.js +0 -40
  219. package/lib/module/utils/NetworkUtil.js.map +0 -1
  220. package/lib/module/utils/TypeUtil.js +0 -28
  221. package/lib/module/utils/TypeUtil.js.map +0 -1
  222. package/lib/typescript/controllers/AccountController.d.ts +0 -33
  223. package/lib/typescript/controllers/AccountController.d.ts.map +0 -1
  224. package/lib/typescript/controllers/ConnectionController.d.ts +0 -66
  225. package/lib/typescript/controllers/ConnectionController.d.ts.map +0 -1
  226. package/lib/typescript/controllers/ConnectorController.d.ts +0 -18
  227. package/lib/typescript/controllers/ConnectorController.d.ts.map +0 -1
  228. package/lib/typescript/controllers/NetworkController.d.ts +0 -35
  229. package/lib/typescript/controllers/NetworkController.d.ts.map +0 -1
  230. package/lib/typescript/controllers/WebviewController.d.ts +0 -21
  231. package/lib/typescript/controllers/WebviewController.d.ts.map +0 -1
  232. package/lib/typescript/utils/ConnectionUtil.d.ts +0 -4
  233. package/lib/typescript/utils/ConnectionUtil.d.ts.map +0 -1
  234. package/lib/typescript/utils/NetworkUtil.d.ts +0 -8
  235. package/lib/typescript/utils/NetworkUtil.d.ts.map +0 -1
  236. package/lib/typescript/utils/TypeUtil.d.ts +0 -850
  237. package/lib/typescript/utils/TypeUtil.d.ts.map +0 -1
  238. package/src/controllers/AccountController.ts +0 -128
  239. package/src/controllers/ConnectionController.ts +0 -200
  240. package/src/controllers/ConnectorController.ts +0 -63
  241. package/src/controllers/NetworkController.ts +0 -120
  242. package/src/controllers/WebviewController.ts +0 -63
  243. package/src/utils/ConnectionUtil.ts +0 -27
  244. package/src/utils/NetworkUtil.ts +0 -33
  245. package/src/utils/TypeUtil.ts +0 -1039
@@ -33,12 +33,16 @@ import type {
33
33
  BlockchainApiOnRampWidgetRequest,
34
34
  BlockchainApiOnRampQuotesRequest,
35
35
  OnRampFiatLimit,
36
- OnRampCountryDefaults
37
- } from '../utils/TypeUtil';
36
+ OnRampCountryDefaults,
37
+ CaipAddress,
38
+ CaipNetworkId
39
+ } from '@reown/appkit-common-react-native';
38
40
  import { OptionsController } from './OptionsController';
39
41
  import { ConstantsUtil } from '../utils/ConstantsUtil';
40
42
  import { ApiUtil } from '../utils/ApiUtil';
41
43
 
44
+ import { SnackController } from './SnackController';
45
+
42
46
  // -- Helpers ------------------------------------------- //
43
47
  const baseUrl = CoreHelperUtil.getBlockchainApiUrl();
44
48
 
@@ -57,22 +61,53 @@ const getHeaders = () => {
57
61
  export const EXCLUDED_ONRAMP_PROVIDERS = ['BINANCECONNECT', 'COINBASEPAY'];
58
62
 
59
63
  // -- Types --------------------------------------------- //
64
+ type WithCaipNetworkId = { caipNetworkId: CaipNetworkId };
65
+
60
66
  export interface BlockchainApiControllerState {
61
67
  clientId: string | null;
62
68
  api: FetchUtil;
69
+ supportedChains: { http: CaipNetworkId[]; ws: CaipNetworkId[] };
63
70
  }
64
71
 
65
72
  // -- State --------------------------------------------- //
66
73
  const state = proxy<BlockchainApiControllerState>({
67
74
  clientId: null,
68
- api: new FetchUtil({ baseUrl })
75
+ api: new FetchUtil({ baseUrl }),
76
+ supportedChains: { http: [], ws: [] }
69
77
  });
70
78
 
71
79
  // -- Controller ---------------------------------------- //
72
80
  export const BlockchainApiController = {
73
81
  state,
74
82
 
75
- fetchIdentity({ address }: BlockchainApiIdentityRequest) {
83
+ async isNetworkSupported(networkId?: CaipNetworkId) {
84
+ if (!networkId) {
85
+ return false;
86
+ }
87
+ try {
88
+ if (!state.supportedChains.http.length) {
89
+ await BlockchainApiController.getSupportedNetworks();
90
+ }
91
+ } catch (e) {
92
+ return false;
93
+ }
94
+
95
+ return state.supportedChains.http.includes(networkId);
96
+ },
97
+
98
+ async getSupportedNetworks() {
99
+ const supportedChains = await state.api.get<BlockchainApiControllerState['supportedChains']>({
100
+ path: 'v1/supported-chains'
101
+ });
102
+
103
+ state.supportedChains = supportedChains!;
104
+
105
+ return supportedChains;
106
+ },
107
+
108
+ async fetchIdentity(params: BlockchainApiIdentityRequest) {
109
+ const { address } = params;
110
+
76
111
  return state.api.get<BlockchainApiIdentityResponse>({
77
112
  path: `/v1/identity/${address}`,
78
113
  params: {
@@ -82,29 +117,38 @@ export const BlockchainApiController = {
82
117
  });
83
118
  },
84
119
 
85
- fetchTransactions({
86
- account,
87
- projectId,
88
- cursor,
89
- onramp,
90
- signal,
91
- cache
92
- }: BlockchainApiTransactionsRequest) {
93
- return state.api.get<BlockchainApiTransactionsResponse>({
120
+ async fetchTransactions(params: BlockchainApiTransactionsRequest) {
121
+ const { account, projectId, cursor, signal, cache, chainId } = params;
122
+ const isSupported = await BlockchainApiController.isNetworkSupported(chainId);
123
+
124
+ if (!isSupported) {
125
+ return { data: [], next: undefined };
126
+ }
127
+
128
+ const response = await state.api.get<BlockchainApiTransactionsResponse>({
94
129
  path: `/v1/account/${account}/history`,
95
130
  headers: getHeaders(),
96
131
  params: {
97
132
  projectId,
98
133
  cursor,
99
- onramp
134
+ chainId
100
135
  },
101
136
  signal,
102
137
  cache
103
138
  });
139
+
140
+ return response;
104
141
  },
105
142
 
106
- fetchTokenPrice({ projectId, addresses }: BlockchainApiTokenPriceRequest) {
107
- return state.api.post<BlockchainApiTokenPriceResponse>({
143
+ async fetchTokenPrice(params: BlockchainApiTokenPriceRequest & WithCaipNetworkId) {
144
+ const { projectId, addresses, caipNetworkId } = params;
145
+ const isSupported = await BlockchainApiController.isNetworkSupported(caipNetworkId);
146
+
147
+ if (!isSupported) {
148
+ return { fungibles: [] };
149
+ }
150
+
151
+ const response = await state.api.post<BlockchainApiTokenPriceResponse>({
108
152
  path: '/v1/fungible/price',
109
153
  body: {
110
154
  projectId,
@@ -113,9 +157,20 @@ export const BlockchainApiController = {
113
157
  },
114
158
  headers: getHeaders()
115
159
  });
160
+
161
+ return response;
116
162
  },
117
163
 
118
- fetchSwapAllowance({ projectId, tokenAddress, userAddress }: BlockchainApiSwapAllowanceRequest) {
164
+ async fetchSwapAllowance(params: BlockchainApiSwapAllowanceRequest) {
165
+ const { projectId, tokenAddress, userAddress } = params;
166
+ const [namespace, chain] = userAddress.split(':');
167
+ const networkId: CaipNetworkId = `${namespace}:${chain}`;
168
+ const isSupported = await BlockchainApiController.isNetworkSupported(networkId);
169
+
170
+ if (!isSupported) {
171
+ return { allowance: '0' };
172
+ }
173
+
119
174
  return state.api.get<BlockchainApiSwapAllowanceResponse>({
120
175
  path: `/v1/convert/allowance`,
121
176
  params: {
@@ -127,7 +182,14 @@ export const BlockchainApiController = {
127
182
  });
128
183
  },
129
184
 
130
- fetchGasPrice({ projectId, chainId }: BlockchainApiGasPriceRequest) {
185
+ async fetchGasPrice(params: BlockchainApiGasPriceRequest) {
186
+ const { projectId, chainId } = params;
187
+ const isSupported = await BlockchainApiController.isNetworkSupported(chainId);
188
+
189
+ if (!isSupported) {
190
+ throw new Error('Network not supported for Gas Price');
191
+ }
192
+
131
193
  return state.api.get<BlockchainApiGasPriceResponse>({
132
194
  path: `/v1/convert/gas-price`,
133
195
  headers: getHeaders(),
@@ -138,14 +200,16 @@ export const BlockchainApiController = {
138
200
  });
139
201
  },
140
202
 
141
- fetchSwapQuote({
142
- projectId,
143
- amount,
144
- userAddress,
145
- from,
146
- to,
147
- gasPrice
148
- }: BlockchainApiSwapQuoteRequest) {
203
+ async fetchSwapQuote(params: BlockchainApiSwapQuoteRequest) {
204
+ const { projectId, amount, userAddress, from, to, gasPrice } = params;
205
+ const [namespace, chain] = userAddress.split(':');
206
+ const networkId: CaipNetworkId = `${namespace}:${chain}`;
207
+ const isSupported = await BlockchainApiController.isNetworkSupported(networkId);
208
+
209
+ if (!isSupported) {
210
+ return { quotes: [] };
211
+ }
212
+
149
213
  return state.api.get<BlockchainApiSwapQuoteResponse>({
150
214
  path: `/v1/convert/quotes`,
151
215
  headers: getHeaders(),
@@ -160,7 +224,14 @@ export const BlockchainApiController = {
160
224
  });
161
225
  },
162
226
 
163
- fetchSwapTokens({ projectId, chainId }: BlockchainApiSwapTokensRequest) {
227
+ async fetchSwapTokens(params: BlockchainApiSwapTokensRequest) {
228
+ const { projectId, chainId } = params;
229
+ const isSupported = await BlockchainApiController.isNetworkSupported(chainId);
230
+
231
+ if (!isSupported) {
232
+ return { tokens: [] };
233
+ }
234
+
164
235
  return state.api.get<BlockchainApiSwapTokensResponse>({
165
236
  path: `/v1/convert/tokens`,
166
237
  headers: getHeaders(),
@@ -171,13 +242,16 @@ export const BlockchainApiController = {
171
242
  });
172
243
  },
173
244
 
174
- generateSwapCalldata({
175
- amount,
176
- from,
177
- projectId,
178
- to,
179
- userAddress
180
- }: BlockchainApiGenerateSwapCalldataRequest) {
245
+ async generateSwapCalldata(params: BlockchainApiGenerateSwapCalldataRequest) {
246
+ const { amount, from, projectId, to, userAddress } = params;
247
+ const [namespace, chain] = userAddress.split(':');
248
+ const networkId: CaipNetworkId = `${namespace}:${chain}`;
249
+ const isSupported = await BlockchainApiController.isNetworkSupported(networkId);
250
+
251
+ if (!isSupported) {
252
+ throw new Error('Network not supported for Swaps');
253
+ }
254
+
181
255
  return state.api.post<BlockchainApiGenerateSwapCalldataResponse>({
182
256
  path: '/v1/convert/build-transaction',
183
257
  headers: getHeaders(),
@@ -194,12 +268,16 @@ export const BlockchainApiController = {
194
268
  });
195
269
  },
196
270
 
197
- generateApproveCalldata({
198
- from,
199
- projectId,
200
- to,
201
- userAddress
202
- }: BlockchainApiGenerateApproveCalldataRequest) {
271
+ async generateApproveCalldata(params: BlockchainApiGenerateApproveCalldataRequest) {
272
+ const { from, projectId, to, userAddress } = params;
273
+ const [namespace, chain] = userAddress.split(':');
274
+ const networkId: CaipNetworkId = `${namespace}:${chain}`;
275
+ const isSupported = await BlockchainApiController.isNetworkSupported(networkId);
276
+
277
+ if (!isSupported) {
278
+ throw new Error('Network not supported for Swaps');
279
+ }
280
+
203
281
  return state.api.get<BlockchainApiGenerateApproveCalldataResponse>({
204
282
  path: `/v1/convert/build-approve`,
205
283
  headers: getHeaders(),
@@ -212,15 +290,29 @@ export const BlockchainApiController = {
212
290
  });
213
291
  },
214
292
 
215
- async getBalance(address: string, chainId?: string, forceUpdate?: string) {
293
+ async getBalance(address?: CaipAddress, forceUpdate?: CaipAddress[]) {
294
+ const [namespace, chain, plainAddress] = address?.split(':') ?? [];
295
+
296
+ if (!namespace || !chain || !plainAddress) {
297
+ throw new Error('Invalid address');
298
+ }
299
+
300
+ const isSupported = await BlockchainApiController.isNetworkSupported(`${namespace}:${chain}`);
301
+
302
+ if (!isSupported) {
303
+ SnackController.showError('Token Balance Unavailable');
304
+
305
+ return { balances: [] };
306
+ }
307
+
216
308
  return state.api.get<BlockchainApiBalanceResponse>({
217
- path: `/v1/account/${address}/balance`,
309
+ path: `/v1/account/${plainAddress}/balance`,
218
310
  headers: getHeaders(),
219
311
  params: {
220
312
  currency: 'usd',
221
313
  projectId: OptionsController.state.projectId,
222
- chainId,
223
- forceUpdate
314
+ chainId: `${namespace}:${chain}`,
315
+ forceUpdate: forceUpdate?.join(',')
224
316
  }
225
317
  });
226
318
  },