@reown/appkit-core-react-native 0.0.0-feat-multi-siwe-20250623183423 → 0.0.0-feat-onramp-20250626173252

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 (159) hide show
  1. package/lib/commonjs/controllers/ApiController.js +11 -11
  2. package/lib/commonjs/controllers/ApiController.js.map +1 -1
  3. package/lib/commonjs/controllers/BlockchainApiController.js +24 -102
  4. package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -1
  5. package/lib/commonjs/controllers/ConnectionController.js +1 -7
  6. package/lib/commonjs/controllers/ConnectionController.js.map +1 -1
  7. package/lib/commonjs/controllers/ConnectorController.js +0 -1
  8. package/lib/commonjs/controllers/ConnectorController.js.map +1 -1
  9. package/lib/commonjs/controllers/EnsController.js +4 -4
  10. package/lib/commonjs/controllers/EnsController.js.map +1 -1
  11. package/lib/commonjs/controllers/EventsController.js +4 -4
  12. package/lib/commonjs/controllers/EventsController.js.map +1 -1
  13. package/lib/commonjs/controllers/ModalController.js.map +1 -1
  14. package/lib/commonjs/controllers/OnRampController.js +60 -20
  15. package/lib/commonjs/controllers/OnRampController.js.map +1 -1
  16. package/lib/commonjs/controllers/OptionsController.js +3 -8
  17. package/lib/commonjs/controllers/OptionsController.js.map +1 -1
  18. package/lib/commonjs/controllers/RouterController.js.map +1 -1
  19. package/lib/commonjs/controllers/SendController.js +10 -10
  20. package/lib/commonjs/controllers/SendController.js.map +1 -1
  21. package/lib/commonjs/controllers/SwapController.js +40 -51
  22. package/lib/commonjs/controllers/SwapController.js.map +1 -1
  23. package/lib/commonjs/controllers/ThemeController.js +1 -9
  24. package/lib/commonjs/controllers/ThemeController.js.map +1 -1
  25. package/lib/commonjs/controllers/TransactionsController.js +5 -5
  26. package/lib/commonjs/controllers/TransactionsController.js.map +1 -1
  27. package/lib/commonjs/index.js +3 -3
  28. package/lib/commonjs/index.js.map +1 -1
  29. package/lib/commonjs/utils/AssetUtil.js +6 -5
  30. package/lib/commonjs/utils/AssetUtil.js.map +1 -1
  31. package/lib/commonjs/utils/ConnectionUtil.js +33 -0
  32. package/lib/commonjs/utils/ConnectionUtil.js.map +1 -0
  33. package/lib/commonjs/utils/ConstantsUtil.js +7 -537
  34. package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
  35. package/lib/commonjs/utils/CoreHelperUtil.js +1 -1
  36. package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -1
  37. package/lib/commonjs/utils/StorageUtil.js +33 -67
  38. package/lib/commonjs/utils/StorageUtil.js.map +1 -1
  39. package/lib/commonjs/utils/SwapApiUtil.js +10 -19
  40. package/lib/commonjs/utils/SwapApiUtil.js.map +1 -1
  41. package/lib/module/controllers/ApiController.js +11 -11
  42. package/lib/module/controllers/ApiController.js.map +1 -1
  43. package/lib/module/controllers/BlockchainApiController.js +24 -102
  44. package/lib/module/controllers/BlockchainApiController.js.map +1 -1
  45. package/lib/module/controllers/ConnectionController.js +1 -7
  46. package/lib/module/controllers/ConnectionController.js.map +1 -1
  47. package/lib/module/controllers/ConnectorController.js +0 -1
  48. package/lib/module/controllers/ConnectorController.js.map +1 -1
  49. package/lib/module/controllers/EnsController.js +2 -2
  50. package/lib/module/controllers/EnsController.js.map +1 -1
  51. package/lib/module/controllers/EventsController.js +1 -1
  52. package/lib/module/controllers/EventsController.js.map +1 -1
  53. package/lib/module/controllers/ModalController.js.map +1 -1
  54. package/lib/module/controllers/OnRampController.js +60 -20
  55. package/lib/module/controllers/OnRampController.js.map +1 -1
  56. package/lib/module/controllers/OptionsController.js +3 -8
  57. package/lib/module/controllers/OptionsController.js.map +1 -1
  58. package/lib/module/controllers/RouterController.js.map +1 -1
  59. package/lib/module/controllers/SendController.js +7 -7
  60. package/lib/module/controllers/SendController.js.map +1 -1
  61. package/lib/module/controllers/SwapController.js +40 -51
  62. package/lib/module/controllers/SwapController.js.map +1 -1
  63. package/lib/module/controllers/ThemeController.js +1 -9
  64. package/lib/module/controllers/ThemeController.js.map +1 -1
  65. package/lib/module/controllers/TransactionsController.js +3 -3
  66. package/lib/module/controllers/TransactionsController.js.map +1 -1
  67. package/lib/module/index.js +1 -1
  68. package/lib/module/index.js.map +1 -1
  69. package/lib/module/utils/AssetUtil.js +6 -5
  70. package/lib/module/utils/AssetUtil.js.map +1 -1
  71. package/lib/module/utils/ConnectionUtil.js +27 -0
  72. package/lib/module/utils/ConnectionUtil.js.map +1 -0
  73. package/lib/module/utils/ConstantsUtil.js +7 -537
  74. package/lib/module/utils/ConstantsUtil.js.map +1 -1
  75. package/lib/module/utils/CoreHelperUtil.js +1 -1
  76. package/lib/module/utils/CoreHelperUtil.js.map +1 -1
  77. package/lib/module/utils/StorageUtil.js +33 -67
  78. package/lib/module/utils/StorageUtil.js.map +1 -1
  79. package/lib/module/utils/SwapApiUtil.js +10 -19
  80. package/lib/module/utils/SwapApiUtil.js.map +1 -1
  81. package/lib/typescript/controllers/AccountController.d.ts +2 -2
  82. package/lib/typescript/controllers/AccountController.d.ts.map +1 -1
  83. package/lib/typescript/controllers/ApiController.d.ts +1 -1
  84. package/lib/typescript/controllers/ApiController.d.ts.map +1 -1
  85. package/lib/typescript/controllers/BlockchainApiController.d.ts +3 -15
  86. package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -1
  87. package/lib/typescript/controllers/ConnectionController.d.ts +0 -2
  88. package/lib/typescript/controllers/ConnectionController.d.ts.map +1 -1
  89. package/lib/typescript/controllers/ConnectorController.d.ts.map +1 -1
  90. package/lib/typescript/controllers/ModalController.d.ts +1 -1
  91. package/lib/typescript/controllers/ModalController.d.ts.map +1 -1
  92. package/lib/typescript/controllers/NetworkController.d.ts +1 -1
  93. package/lib/typescript/controllers/NetworkController.d.ts.map +1 -1
  94. package/lib/typescript/controllers/OnRampController.d.ts +3 -1
  95. package/lib/typescript/controllers/OnRampController.d.ts.map +1 -1
  96. package/lib/typescript/controllers/OptionsController.d.ts +2 -5
  97. package/lib/typescript/controllers/OptionsController.d.ts.map +1 -1
  98. package/lib/typescript/controllers/PublicStateController.d.ts +1 -1
  99. package/lib/typescript/controllers/PublicStateController.d.ts.map +1 -1
  100. package/lib/typescript/controllers/RouterController.d.ts +1 -2
  101. package/lib/typescript/controllers/RouterController.d.ts.map +1 -1
  102. package/lib/typescript/controllers/SwapController.d.ts +1 -1
  103. package/lib/typescript/controllers/SwapController.d.ts.map +1 -1
  104. package/lib/typescript/controllers/ThemeController.d.ts +1 -1
  105. package/lib/typescript/controllers/ThemeController.d.ts.map +1 -1
  106. package/lib/typescript/index.d.ts +1 -1
  107. package/lib/typescript/index.d.ts.map +1 -1
  108. package/lib/typescript/utils/AssetUtil.d.ts +2 -2
  109. package/lib/typescript/utils/AssetUtil.d.ts.map +1 -1
  110. package/lib/typescript/utils/ConnectionUtil.d.ts +4 -0
  111. package/lib/typescript/utils/ConnectionUtil.d.ts.map +1 -0
  112. package/lib/typescript/utils/ConstantsUtil.d.ts +1 -421
  113. package/lib/typescript/utils/ConstantsUtil.d.ts.map +1 -1
  114. package/lib/typescript/utils/CoreHelperUtil.d.ts +2 -2
  115. package/lib/typescript/utils/CoreHelperUtil.d.ts.map +1 -1
  116. package/lib/typescript/utils/FetchUtil.d.ts +1 -1
  117. package/lib/typescript/utils/FetchUtil.d.ts.map +1 -1
  118. package/lib/typescript/utils/NetworkUtil.d.ts +1 -1
  119. package/lib/typescript/utils/NetworkUtil.d.ts.map +1 -1
  120. package/lib/typescript/utils/StorageUtil.d.ts +4 -14
  121. package/lib/typescript/utils/StorageUtil.d.ts.map +1 -1
  122. package/lib/typescript/utils/SwapApiUtil.d.ts.map +1 -1
  123. package/lib/typescript/utils/TypeUtil.d.ts +32 -5
  124. package/lib/typescript/utils/TypeUtil.d.ts.map +1 -1
  125. package/package.json +4 -4
  126. package/src/controllers/AccountController.ts +2 -2
  127. package/src/controllers/ApiController.ts +7 -12
  128. package/src/controllers/BlockchainApiController.ts +27 -135
  129. package/src/controllers/ConnectionController.ts +2 -10
  130. package/src/controllers/ConnectorController.ts +0 -1
  131. package/src/controllers/EnsController.ts +2 -2
  132. package/src/controllers/EventsController.ts +1 -1
  133. package/src/controllers/ModalController.ts +1 -2
  134. package/src/controllers/NetworkController.ts +1 -1
  135. package/src/controllers/OnRampController.ts +91 -32
  136. package/src/controllers/OptionsController.ts +13 -14
  137. package/src/controllers/PublicStateController.ts +1 -1
  138. package/src/controllers/RouterController.ts +1 -2
  139. package/src/controllers/SendController.ts +7 -7
  140. package/src/controllers/SwapController.ts +48 -58
  141. package/src/controllers/ThemeController.ts +2 -11
  142. package/src/controllers/TransactionsController.ts +3 -3
  143. package/src/index.ts +1 -5
  144. package/src/utils/AssetUtil.ts +7 -5
  145. package/src/utils/ConnectionUtil.ts +27 -0
  146. package/src/utils/ConstantsUtil.ts +7 -542
  147. package/src/utils/CoreHelperUtil.ts +4 -9
  148. package/src/utils/FetchUtil.ts +1 -1
  149. package/src/utils/NetworkUtil.ts +1 -1
  150. package/src/utils/StorageUtil.ts +39 -82
  151. package/src/utils/SwapApiUtil.ts +10 -22
  152. package/src/utils/TypeUtil.ts +39 -8
  153. package/lib/commonjs/controllers/ConnectionsController.js +0 -215
  154. package/lib/commonjs/controllers/ConnectionsController.js.map +0 -1
  155. package/lib/module/controllers/ConnectionsController.js +0 -210
  156. package/lib/module/controllers/ConnectionsController.js.map +0 -1
  157. package/lib/typescript/controllers/ConnectionsController.d.ts +0 -44
  158. package/lib/typescript/controllers/ConnectionsController.d.ts.map +0 -1
  159. package/src/controllers/ConnectionsController.ts +0 -305
@@ -1,17 +1,12 @@
1
1
  /* eslint-disable no-bitwise */
2
2
 
3
3
  import { Linking, Platform } from 'react-native';
4
- import {
5
- ConstantsUtil as CommonConstants,
6
- type Balance,
7
- type CaipAddress,
8
- type CaipNetwork
9
- } from '@reown/appkit-common-react-native';
10
-
4
+ import { ConstantsUtil as CommonConstants, type Balance } from '@reown/appkit-common-react-native';
11
5
  import * as ct from 'countries-and-timezones';
12
6
 
13
7
  import { ConstantsUtil } from './ConstantsUtil';
14
- import type { DataWallet, LinkingRecord } from './TypeUtil';
8
+ import type { CaipAddress, CaipNetwork, DataWallet, LinkingRecord } from './TypeUtil';
9
+
15
10
  // -- Helpers -----------------------------------------------------------------
16
11
  async function isAppInstalledIos(deepLink?: string): Promise<boolean> {
17
12
  try {
@@ -191,7 +186,7 @@ export const CoreHelperUtil = {
191
186
  const { timeZone } = new Intl.DateTimeFormat().resolvedOptions();
192
187
  const country = ct.getCountryForTimezone(timeZone);
193
188
 
194
- return country ? country.id : 'US'; // 'id' is the ISO country code (e.g., "GB" for United Kingdom)
189
+ return country ? country.id : 'US'; // 'id' is the ISO country code (e.g., "US" for United States)
195
190
  } catch (error) {
196
191
  return 'US';
197
192
  }
@@ -8,7 +8,7 @@ interface Options {
8
8
 
9
9
  interface RequestArguments {
10
10
  path: string;
11
- headers?: HeadersInit;
11
+ headers?: HeadersInit_;
12
12
  params?: Record<string, string | undefined>;
13
13
  cache?: RequestCache;
14
14
  signal?: AbortSignal;
@@ -4,7 +4,7 @@ import { NetworkController } from '../controllers/NetworkController';
4
4
  import { AccountController } from '../controllers/AccountController';
5
5
  import { ConnectorController } from '../controllers/ConnectorController';
6
6
  import { SwapController } from '../controllers/SwapController';
7
- import { type CaipNetwork } from '@reown/appkit-common-react-native';
7
+ import type { CaipNetwork } from '../utils/TypeUtil';
8
8
 
9
9
  export const NetworkUtil = {
10
10
  async handleNetworkSwitch(network: CaipNetwork) {
@@ -2,6 +2,7 @@
2
2
  import AsyncStorage from '@react-native-async-storage/async-storage';
3
3
  import type {
4
4
  OnRampCountry,
5
+ OnRampCountryDefaults,
5
6
  OnRampFiatCurrency,
6
7
  OnRampFiatLimit,
7
8
  OnRampServiceProvider,
@@ -10,9 +11,7 @@ import type {
10
11
  import {
11
12
  DateUtil,
12
13
  type SocialProvider,
13
- type New_ConnectorType,
14
- type ConnectorType,
15
- type ChainNamespace
14
+ type ConnectorType
16
15
  } from '@reown/appkit-common-react-native';
17
16
 
18
17
  // -- Helpers -----------------------------------------------------------------
@@ -20,16 +19,14 @@ const WC_DEEPLINK = 'WALLETCONNECT_DEEPLINK_CHOICE';
20
19
  const RECENT_WALLET = '@w3m/recent';
21
20
  const CONNECTED_WALLET_IMAGE_URL = '@w3m/connected_wallet_image_url';
22
21
  const CONNECTED_CONNECTOR = '@w3m/connected_connector';
23
- const CONNECTED_CONNECTORS = '@appkit/connected_connectors';
24
22
  const CONNECTED_SOCIAL = '@appkit/connected_social';
25
23
  const ONRAMP_PREFERRED_COUNTRY = '@appkit/onramp_preferred_country';
26
24
  const ONRAMP_COUNTRIES = '@appkit/onramp_countries';
25
+ const ONRAMP_COUNTRIES_DEFAULTS = '@appkit/onramp_countries_defaults';
27
26
  const ONRAMP_SERVICE_PROVIDERS = '@appkit/onramp_service_providers';
28
27
  const ONRAMP_FIAT_LIMITS = '@appkit/onramp_fiat_limits';
29
28
  const ONRAMP_FIAT_CURRENCIES = '@appkit/onramp_fiat_currencies';
30
29
  const ONRAMP_PREFERRED_FIAT_CURRENCY = '@appkit/onramp_preferred_fiat_currency';
31
- const ACTIVE_NAMESPACE = '@appkit/active_namespace';
32
-
33
30
  // -- Utility -----------------------------------------------------------------
34
31
  export const StorageUtil = {
35
32
  setWalletConnectDeepLink({ href, name }: { href: string; name: string }) {
@@ -104,7 +101,6 @@ export const StorageUtil = {
104
101
  return [];
105
102
  },
106
103
 
107
- //TODO: remove this
108
104
  async setConnectedConnector(connectorType: ConnectorType) {
109
105
  try {
110
106
  await AsyncStorage.setItem(CONNECTED_CONNECTOR, JSON.stringify(connectorType));
@@ -133,47 +129,6 @@ export const StorageUtil = {
133
129
  }
134
130
  },
135
131
 
136
- async setConnectedConnectors({
137
- type,
138
- namespaces
139
- }: {
140
- type: New_ConnectorType;
141
- namespaces: string[];
142
- }) {
143
- try {
144
- const currentConnectors = (await StorageUtil.getConnectedConnectors()) || [];
145
- // Only add if it doesn't exist already
146
- if (!currentConnectors.some(c => c.type === type)) {
147
- const updatedConnectors = [...currentConnectors, { type, namespaces }];
148
- await AsyncStorage.setItem(CONNECTED_CONNECTORS, JSON.stringify(updatedConnectors));
149
- }
150
- } catch {
151
- console.info('Unable to set Connected Connector');
152
- }
153
- },
154
-
155
- async getConnectedConnectors(): Promise<{ type: New_ConnectorType; namespaces: string[] }[]> {
156
- try {
157
- const connectors = await AsyncStorage.getItem(CONNECTED_CONNECTORS);
158
-
159
- return connectors ? JSON.parse(connectors) : [];
160
- } catch {
161
- console.info('Unable to get Connected Connector');
162
- }
163
-
164
- return [];
165
- },
166
-
167
- async removeConnectedConnectors(type: New_ConnectorType) {
168
- try {
169
- const currentConnectors = await StorageUtil.getConnectedConnectors();
170
- const updatedConnectors = currentConnectors.filter(c => c.type !== type);
171
- await AsyncStorage.setItem(CONNECTED_CONNECTORS, JSON.stringify(updatedConnectors));
172
- } catch {
173
- console.info('Unable to remove Connected Connector');
174
- }
175
- },
176
-
177
132
  async setConnectedWalletImageUrl(url: string) {
178
133
  try {
179
134
  await AsyncStorage.setItem(CONNECTED_WALLET_IMAGE_URL, url);
@@ -288,6 +243,42 @@ export const StorageUtil = {
288
243
  return [];
289
244
  },
290
245
 
246
+ async setOnRampCountriesDefaults(countriesDefaults: OnRampCountryDefaults[]) {
247
+ try {
248
+ const timestamp = Date.now();
249
+
250
+ await AsyncStorage.setItem(
251
+ ONRAMP_COUNTRIES_DEFAULTS,
252
+ JSON.stringify({ data: countriesDefaults, timestamp })
253
+ );
254
+ } catch {
255
+ console.info('Unable to set OnRamp Countries Defaults');
256
+ }
257
+ },
258
+
259
+ async getOnRampCountriesDefaults() {
260
+ try {
261
+ const result = await AsyncStorage.getItem(ONRAMP_COUNTRIES_DEFAULTS);
262
+
263
+ if (!result) {
264
+ return [];
265
+ }
266
+
267
+ const { data, timestamp } = JSON.parse(result);
268
+
269
+ // Cache for 1 week
270
+ if (timestamp && DateUtil.isMoreThanOneWeekAgo(timestamp)) {
271
+ return [];
272
+ }
273
+
274
+ return data ? (data as OnRampCountryDefaults[]) : [];
275
+ } catch {
276
+ console.info('Unable to get OnRamp Countries Defaults');
277
+ }
278
+
279
+ return [];
280
+ },
281
+
291
282
  async setOnRampServiceProviders(serviceProviders: OnRampServiceProvider[]) {
292
283
  try {
293
284
  const timestamp = Date.now();
@@ -395,39 +386,5 @@ export const StorageUtil = {
395
386
  }
396
387
 
397
388
  return [];
398
- },
399
-
400
- async setActiveNamespace(namespace?: ChainNamespace) {
401
- try {
402
- if (!namespace) {
403
- await AsyncStorage.removeItem(ACTIVE_NAMESPACE);
404
-
405
- return;
406
- }
407
-
408
- await AsyncStorage.setItem(ACTIVE_NAMESPACE, namespace);
409
- } catch {
410
- console.info('Unable to set Active Namespace');
411
- }
412
- },
413
-
414
- async getActiveNamespace() {
415
- try {
416
- const namespace = (await AsyncStorage.getItem(ACTIVE_NAMESPACE)) as ChainNamespace;
417
-
418
- return namespace ?? undefined;
419
- } catch (err) {
420
- console.info('Unable to get Active Namespace');
421
- }
422
-
423
- return undefined;
424
- },
425
-
426
- async removeActiveNamespace() {
427
- try {
428
- await AsyncStorage.removeItem(ACTIVE_NAMESPACE);
429
- } catch {
430
- console.info('Unable to remove Active Namespace');
431
- }
432
389
  }
433
390
  };
@@ -1,22 +1,19 @@
1
1
  import { BlockchainApiController } from '../controllers/BlockchainApiController';
2
2
  import { OptionsController } from '../controllers/OptionsController';
3
+ import { NetworkController } from '../controllers/NetworkController';
3
4
  import type {
4
5
  BlockchainApiBalanceResponse,
5
6
  BlockchainApiSwapAllowanceRequest,
6
7
  SwapTokenWithBalance
7
8
  } from './TypeUtil';
8
9
  import { AccountController } from '../controllers/AccountController';
9
- import { ConnectionsController } from '../controllers/ConnectionsController';
10
- import type { CaipNetworkId } from '@reown/appkit-common-react-native';
11
- import { ConstantsUtil } from './ConstantsUtil';
10
+ import { ConnectionController } from '../controllers/ConnectionController';
12
11
 
13
12
  export const SwapApiUtil = {
14
13
  async getTokenList() {
15
- const chainId: CaipNetworkId =
16
- ConnectionsController.state.activeNetwork?.caipNetworkId ?? 'eip155:1';
17
14
  const response = await BlockchainApiController.fetchSwapTokens({
18
15
  projectId: OptionsController.state.projectId,
19
- chainId
16
+ chainId: NetworkController.state.caipNetwork?.id
20
17
  });
21
18
  const tokens =
22
19
  response?.tokens?.map(
@@ -55,7 +52,7 @@ export const SwapApiUtil = {
55
52
 
56
53
  if (response?.allowance && sourceTokenAmount && sourceTokenDecimals) {
57
54
  const parsedValue =
58
- ConnectionsController.parseUnits(sourceTokenAmount, sourceTokenDecimals) || 0;
55
+ ConnectionController.parseUnits(sourceTokenAmount, sourceTokenDecimals) || 0;
59
56
  const hasAllowance = BigInt(response.allowance) >= parsedValue;
60
57
 
61
58
  return hasAllowance;
@@ -65,18 +62,14 @@ export const SwapApiUtil = {
65
62
  },
66
63
 
67
64
  async getMyTokensWithBalance(forceUpdate?: string) {
68
- const { activeAddress, activeNetwork: network } = ConnectionsController.state;
69
- const address = activeAddress?.split(':')[2];
65
+ const address = AccountController.state.address;
66
+ const chainId = NetworkController.state.caipNetwork?.id;
70
67
 
71
68
  if (!address) {
72
69
  return [];
73
70
  }
74
71
 
75
- const response = await BlockchainApiController.getBalance(
76
- address,
77
- network?.caipNetworkId,
78
- forceUpdate
79
- );
72
+ const response = await BlockchainApiController.getBalance(address, chainId, forceUpdate);
80
73
  const balances = response?.balances.filter(balance => balance.quantity.decimals !== '0');
81
74
 
82
75
  AccountController.setTokenBalance(balances);
@@ -85,17 +78,12 @@ export const SwapApiUtil = {
85
78
  },
86
79
 
87
80
  mapBalancesToSwapTokens(balances?: BlockchainApiBalanceResponse['balances']) {
88
- const { activeNamespace, activeCaipNetworkId } = ConnectionsController.state;
89
- const address = activeNamespace
90
- ? ConstantsUtil.NATIVE_TOKEN_ADDRESS[activeNamespace]
91
- : undefined;
92
-
93
81
  return (
94
82
  balances?.map(
95
83
  token =>
96
84
  ({
97
85
  ...token,
98
- address: token?.address ?? `${token?.chainId ?? activeCaipNetworkId}:${address}`,
86
+ address: token?.address || NetworkController.getActiveNetworkTokenAddress(),
99
87
  decimals: parseInt(token.quantity.decimals, 10),
100
88
  logoUri: token.iconUrl,
101
89
  eip2612: false
@@ -106,7 +94,7 @@ export const SwapApiUtil = {
106
94
 
107
95
  async fetchGasPrice() {
108
96
  const projectId = OptionsController.state.projectId;
109
- const caipNetwork = ConnectionsController.state.activeNetwork;
97
+ const caipNetwork = NetworkController.state.caipNetwork;
110
98
 
111
99
  if (!caipNetwork) {
112
100
  return null;
@@ -114,7 +102,7 @@ export const SwapApiUtil = {
114
102
 
115
103
  return await BlockchainApiController.fetchGasPrice({
116
104
  projectId,
117
- chainId: caipNetwork.caipNetworkId
105
+ chainId: caipNetwork.id
118
106
  });
119
107
  }
120
108
  };
@@ -1,21 +1,28 @@
1
1
  import { type EventEmitter } from 'events';
2
- import type { CaipAddress, CaipNetworkId } from '@reown/appkit-common-react-native';
3
-
4
2
  import type {
5
3
  Balance,
6
4
  SocialProvider,
7
5
  ThemeMode,
8
6
  Transaction,
9
- ConnectorType,
10
- Metadata
7
+ ConnectorType
11
8
  } from '@reown/appkit-common-react-native';
12
-
13
9
  import { OnRampErrorType } from './ConstantsUtil';
14
10
 
15
11
  export interface BaseError {
16
12
  message?: string;
17
13
  }
18
14
 
15
+ export type CaipAddress = `${string}:${string}:${string}`;
16
+
17
+ export type CaipNetworkId = `${string}:${string}`;
18
+
19
+ export interface CaipNetwork {
20
+ id: CaipNetworkId;
21
+ name?: string;
22
+ imageId?: string;
23
+ imageUrl?: string;
24
+ }
25
+
19
26
  export type ConnectedWalletInfo =
20
27
  | {
21
28
  name?: string;
@@ -172,7 +179,6 @@ export interface BlockchainApiTransactionsRequest {
172
179
  onramp?: 'coinbase';
173
180
  signal?: AbortSignal;
174
181
  cache?: RequestCache;
175
- chainId?: CaipNetworkId;
176
182
  }
177
183
 
178
184
  export interface BlockchainApiTransactionsResponse {
@@ -313,7 +319,7 @@ export interface BlockchainApiSwapTokensRequest {
313
319
 
314
320
  export interface BlockchainApiOnRampQuotesRequest {
315
321
  countryCode: string;
316
- paymentMethodType: string;
322
+ paymentMethodType?: string;
317
323
  destinationCurrencyCode: string;
318
324
  sourceAmount: number;
319
325
  sourceCurrencyCode: string;
@@ -340,6 +346,25 @@ export type BlockchainApiOnRampWidgetResponse = {
340
346
  };
341
347
 
342
348
  // -- OptionsController Types ---------------------------------------------------
349
+ export interface Token {
350
+ address: string;
351
+ image?: string;
352
+ }
353
+
354
+ export type Tokens = Record<CaipNetworkId, Token>;
355
+
356
+ export type Metadata = {
357
+ name: string;
358
+ description: string;
359
+ url: string;
360
+ icons: string[];
361
+ redirect?: {
362
+ native?: string;
363
+ universal?: string;
364
+ linkMode?: boolean;
365
+ };
366
+ };
367
+
343
368
  export type CustomWallet = Pick<
344
369
  WcWallet,
345
370
  | 'id'
@@ -436,7 +461,7 @@ export type Event =
436
461
  type: 'track';
437
462
  event: 'SWITCH_NETWORK';
438
463
  properties: {
439
- network: number | string;
464
+ network: string;
440
465
  };
441
466
  }
442
467
  | {
@@ -835,6 +860,12 @@ export type OnRampCountry = {
835
860
  name: string;
836
861
  };
837
862
 
863
+ export type OnRampCountryDefaults = {
864
+ countryCode: string;
865
+ defaultCurrencyCode: string;
866
+ defaultPaymentMethods: string[];
867
+ };
868
+
838
869
  export type OnRampFiatCurrency = {
839
870
  currencyCode: string;
840
871
  name: string;
@@ -1,215 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.ConnectionsController = void 0;
7
- var _valtio = require("valtio");
8
- var _utils = require("valtio/utils");
9
- var _appkitCommonReactNative = require("@reown/appkit-common-react-native");
10
- var _StorageUtil = require("../utils/StorageUtil");
11
- // -- Types --------------------------------------------- //
12
-
13
- //TODO: balance could be elsewhere
14
-
15
- // -- State --------------------------------------------- //
16
- const baseState = (0, _valtio.proxy)({
17
- activeNamespace: undefined,
18
- connections: new Map(),
19
- networks: []
20
- });
21
- const derivedState = (0, _utils.derive)({
22
- activeAddress: get => {
23
- const snap = get(baseState);
24
- if (!snap.activeNamespace) {
25
- return undefined;
26
- }
27
- const connection = snap.connections.get(snap.activeNamespace);
28
- if (!connection || !connection.accounts || connection.accounts.length === 0) {
29
- return undefined;
30
- }
31
-
32
- //TODO: what happens if there are several accounts on the same chain?
33
- const activeAccount = connection.accounts.find(account => account.startsWith(connection.caipNetwork));
34
- return activeAccount;
35
- },
36
- activeBalance: get => {
37
- const snap = get(baseState);
38
- if (!snap.activeNamespace) return undefined;
39
- const connection = snap.connections.get(snap.activeNamespace);
40
- if (!connection || !connection.accounts || connection.accounts.length === 0) {
41
- return undefined;
42
- }
43
- const activeAccount = connection.accounts.find(account => account.startsWith(connection.caipNetwork));
44
- if (!connection || !connection.balances || !activeAccount || Object.keys(connection.balances).length === 0) {
45
- return undefined;
46
- }
47
- return connection.balances[activeAccount];
48
- },
49
- activeNetwork: get => {
50
- const snap = get(baseState);
51
- if (!snap.activeNamespace) return undefined;
52
- const connection = snap.connections.get(snap.activeNamespace);
53
- if (!connection) return undefined;
54
- return snap.networks.find(network => network.chainNamespace === snap.activeNamespace && network.id?.toString() === connection.caipNetwork?.split(':')[1]);
55
- },
56
- activeCaipNetworkId: get => {
57
- const snap = get(baseState);
58
- if (!snap.activeNamespace) return undefined;
59
- const connection = snap.connections.get(snap.activeNamespace);
60
- if (!connection) return undefined;
61
- return connection.caipNetwork;
62
- },
63
- walletInfo: get => {
64
- const snap = get(baseState);
65
- if (!snap.activeNamespace) return undefined;
66
- return snap.connections.get(snap.activeNamespace)?.wallet;
67
- }
68
- }, {
69
- proxy: baseState // Link derived proxy to the base state proxy
70
- });
71
-
72
- // -- Controller ---------------------------------------- //
73
- const ConnectionsController = exports.ConnectionsController = {
74
- state: derivedState,
75
- setActiveNamespace(namespace) {
76
- baseState.activeNamespace = namespace;
77
- _StorageUtil.StorageUtil.setActiveNamespace(namespace);
78
- },
79
- storeConnection({
80
- namespace,
81
- adapter,
82
- accounts,
83
- chains,
84
- wallet,
85
- caipNetwork
86
- }) {
87
- const newConnectionEntry = {
88
- balances: {},
89
- caipNetwork: caipNetwork ?? chains[0],
90
- adapter: (0, _valtio.ref)(adapter),
91
- accounts,
92
- chains,
93
- wallet
94
- };
95
-
96
- // Create a new Map to ensure Valtio detects the change
97
- const newConnectionsMap = new Map(baseState.connections);
98
- newConnectionsMap.set(namespace, newConnectionEntry);
99
- baseState.connections = newConnectionsMap;
100
- },
101
- updateAccounts(namespace, accounts) {
102
- const connection = baseState.connections.get(namespace);
103
- if (!connection) {
104
- return;
105
- }
106
- const newConnectionsMap = new Map(baseState.connections);
107
- const updatedConnection = {
108
- ...connection,
109
- accounts
110
- };
111
- newConnectionsMap.set(namespace, updatedConnection);
112
- baseState.connections = newConnectionsMap;
113
- },
114
- updateBalance(namespace, address, balance) {
115
- const connection = baseState.connections.get(namespace);
116
- if (!connection) {
117
- return;
118
- }
119
- const newBalances = {
120
- ...connection.balances,
121
- [address]: balance
122
- };
123
- const updatedConnection = {
124
- ...connection,
125
- balances: newBalances
126
- };
127
- const newConnectionsMap = new Map(baseState.connections);
128
- newConnectionsMap.set(namespace, updatedConnection);
129
- baseState.connections = newConnectionsMap;
130
- },
131
- setActiveNetwork(namespace, networkId) {
132
- const connection = baseState.connections.get(namespace);
133
- if (!connection) {
134
- return;
135
- }
136
- baseState.connections.set(namespace, {
137
- ...connection,
138
- caipNetwork: networkId
139
- });
140
- },
141
- setNetworks(networks) {
142
- baseState.networks = networks;
143
- },
144
- getConnectedNetworks() {
145
- return baseState.networks.filter(network => baseState.connections.get(network.chainNamespace)?.accounts.some(account => account.startsWith(network.caipNetworkId)));
146
- },
147
- async disconnect(namespace, isInternal = true) {
148
- const connection = baseState.connections.get(namespace);
149
- if (!connection) return;
150
-
151
- // Get the current connector from the adapter
152
- const connector = connection.adapter.connector;
153
- if (!connector) return;
154
-
155
- // Find all namespaces that use the same connector
156
- const namespacesUsingConnector = Array.from(baseState.connections.keys()).filter(ns => baseState.connections.get(ns)?.adapter.connector === connector);
157
-
158
- // Unsubscribe all event listeners from the adapter
159
- namespacesUsingConnector.forEach(ns => {
160
- const _connection = baseState.connections.get(ns);
161
- if (_connection?.adapter) {
162
- _connection.adapter.removeAllListeners();
163
- }
164
- });
165
-
166
- // Disconnect the adapter
167
- if (isInternal) {
168
- await connection.adapter.disconnect();
169
- }
170
-
171
- // Remove all namespaces that used this connector
172
- const newConnectionsMap = new Map(baseState.connections);
173
- namespacesUsingConnector.forEach(ns => {
174
- newConnectionsMap.delete(ns);
175
- });
176
- baseState.connections = newConnectionsMap;
177
-
178
- // Remove activeNamespace if it is in the list of namespaces using the connector
179
- if (baseState.activeNamespace && (baseState.activeNamespace === namespace || namespacesUsingConnector.includes(baseState.activeNamespace))) {
180
- baseState.activeNamespace = undefined;
181
- _StorageUtil.StorageUtil.setActiveNamespace(undefined);
182
- }
183
- },
184
- parseUnits(value, decimals) {
185
- if (!baseState.activeNamespace) return undefined;
186
- return baseState.connections.get(baseState.activeNamespace)?.adapter.parseUnits(value, decimals);
187
- },
188
- async signMessage(address, message) {
189
- if (!baseState.activeNamespace) return undefined;
190
- const adapter = baseState.connections.get(baseState.activeNamespace)?.adapter;
191
- const evmAddress = address.split(':')[2];
192
- const chainId = address.split(':')[1];
193
- if (adapter instanceof _appkitCommonReactNative.EVMAdapter && evmAddress && chainId) {
194
- return adapter.signMessage(evmAddress, message, chainId);
195
- }
196
- return undefined;
197
- },
198
- async sendTransaction(args) {
199
- if (!baseState.activeNamespace) return undefined;
200
- const adapter = baseState.connections.get(baseState.activeNamespace)?.adapter;
201
- if (adapter instanceof _appkitCommonReactNative.EVMAdapter) {
202
- return adapter.sendTransaction(args);
203
- }
204
- return undefined;
205
- },
206
- async estimateGas(args) {
207
- if (!baseState.activeNamespace) return undefined;
208
- const adapter = baseState.connections.get(baseState.activeNamespace)?.adapter;
209
- if (adapter instanceof _appkitCommonReactNative.EVMAdapter) {
210
- return adapter.estimateGas(args);
211
- }
212
- return undefined;
213
- }
214
- };
215
- //# sourceMappingURL=ConnectionsController.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_valtio","require","_utils","_appkitCommonReactNative","_StorageUtil","baseState","proxy","activeNamespace","undefined","connections","Map","networks","derivedState","derive","activeAddress","get","snap","connection","accounts","length","activeAccount","find","account","startsWith","caipNetwork","activeBalance","balances","Object","keys","activeNetwork","network","chainNamespace","id","toString","split","activeCaipNetworkId","walletInfo","wallet","ConnectionsController","exports","state","setActiveNamespace","namespace","StorageUtil","storeConnection","adapter","chains","newConnectionEntry","ref","newConnectionsMap","set","updateAccounts","updatedConnection","updateBalance","address","balance","newBalances","setActiveNetwork","networkId","setNetworks","getConnectedNetworks","filter","some","caipNetworkId","disconnect","isInternal","connector","namespacesUsingConnector","Array","from","ns","forEach","_connection","removeAllListeners","delete","includes","parseUnits","value","decimals","signMessage","message","evmAddress","chainId","EVMAdapter","sendTransaction","args","estimateGas"],"sourceRoot":"../../../src","sources":["controllers/ConnectionsController.ts"],"mappings":"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"}