@toruslabs/ethereum-controllers 5.10.1 → 6.0.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 (111) hide show
  1. package/dist/ethereumControllers.cjs.js +114 -432
  2. package/dist/ethereumControllers.esm.js +63 -351
  3. package/dist/ethereumControllers.umd.min.js +1 -1
  4. package/dist/ethereumControllers.umd.min.js.LICENSE.txt +7 -2
  5. package/dist/lib.cjs/Account/AccountTrackerController.js +160 -0
  6. package/dist/lib.cjs/Block/PollingBlockTracker.js +85 -0
  7. package/dist/lib.cjs/Currency/CurrencyController.js +111 -0
  8. package/dist/lib.cjs/Gas/GasFeeController.js +214 -0
  9. package/dist/lib.cjs/Gas/gasUtil.js +148 -0
  10. package/dist/lib.cjs/Keyring/KeyringController.js +93 -0
  11. package/dist/lib.cjs/Message/AbstractMessageController.js +107 -0
  12. package/dist/lib.cjs/Message/AddChainController.js +78 -0
  13. package/dist/lib.cjs/Message/MessageController.js +77 -0
  14. package/dist/lib.cjs/Message/PersonalMessageController.js +77 -0
  15. package/dist/lib.cjs/Message/SwitchChainController.js +78 -0
  16. package/dist/lib.cjs/Message/TypedMessageController.js +81 -0
  17. package/dist/lib.cjs/Message/utils.js +112 -0
  18. package/dist/lib.cjs/Network/NetworkController.js +201 -0
  19. package/dist/lib.cjs/Network/cacheIdentifier.js +112 -0
  20. package/dist/lib.cjs/Network/createEthereumMiddleware.js +302 -0
  21. package/dist/lib.cjs/Network/createJsonRpcClient.js +64 -0
  22. package/dist/lib.cjs/Nfts/NftHandler.js +180 -0
  23. package/dist/lib.cjs/Nfts/NftsController.js +213 -0
  24. package/dist/lib.cjs/Preferences/PreferencesController.js +476 -0
  25. package/dist/lib.cjs/Tokens/TokenHandler.js +51 -0
  26. package/dist/lib.cjs/Tokens/TokenRatesController.js +112 -0
  27. package/dist/lib.cjs/Tokens/TokensController.js +259 -0
  28. package/dist/lib.cjs/Transaction/NonceTracker.js +150 -0
  29. package/dist/lib.cjs/Transaction/PendingTransactionTracker.js +222 -0
  30. package/dist/lib.cjs/Transaction/TransactionController.js +515 -0
  31. package/dist/lib.cjs/Transaction/TransactionGasUtil.js +81 -0
  32. package/dist/lib.cjs/Transaction/TransactionStateHistoryHelper.js +42 -0
  33. package/dist/lib.cjs/Transaction/TransactionStateManager.js +296 -0
  34. package/dist/lib.cjs/Transaction/TransactionUtils.js +341 -0
  35. package/dist/lib.cjs/index.js +171 -0
  36. package/dist/lib.cjs/utils/abis.js +510 -0
  37. package/dist/lib.cjs/utils/constants.js +362 -0
  38. package/dist/lib.cjs/utils/contractAddresses.js +16 -0
  39. package/dist/lib.cjs/utils/conversionUtils.js +232 -0
  40. package/dist/lib.cjs/utils/helpers.js +244 -0
  41. package/dist/lib.cjs/utils/lodashUtils.js +25 -0
  42. package/dist/lib.esm/Account/AccountTrackerController.js +158 -0
  43. package/dist/lib.esm/Block/PollingBlockTracker.js +83 -0
  44. package/dist/lib.esm/Currency/CurrencyController.js +109 -0
  45. package/dist/lib.esm/Gas/GasFeeController.js +212 -0
  46. package/dist/lib.esm/Gas/gasUtil.js +141 -0
  47. package/dist/lib.esm/Keyring/KeyringController.js +91 -0
  48. package/dist/lib.esm/Message/AbstractMessageController.js +105 -0
  49. package/dist/lib.esm/Message/AddChainController.js +76 -0
  50. package/dist/lib.esm/Message/MessageController.js +75 -0
  51. package/dist/lib.esm/Message/PersonalMessageController.js +75 -0
  52. package/dist/lib.esm/Message/SwitchChainController.js +76 -0
  53. package/dist/lib.esm/Message/TypedMessageController.js +79 -0
  54. package/dist/lib.esm/Message/utils.js +105 -0
  55. package/dist/lib.esm/Network/NetworkController.js +199 -0
  56. package/dist/lib.esm/Network/cacheIdentifier.js +107 -0
  57. package/dist/lib.esm/Network/createEthereumMiddleware.js +289 -0
  58. package/dist/lib.esm/Network/createJsonRpcClient.js +60 -0
  59. package/dist/lib.esm/Nfts/NftHandler.js +178 -0
  60. package/dist/lib.esm/Nfts/NftsController.js +211 -0
  61. package/dist/lib.esm/Preferences/PreferencesController.js +474 -0
  62. package/dist/lib.esm/Tokens/TokenHandler.js +49 -0
  63. package/dist/lib.esm/Tokens/TokenRatesController.js +109 -0
  64. package/dist/lib.esm/Tokens/TokensController.js +257 -0
  65. package/dist/lib.esm/Transaction/NonceTracker.js +148 -0
  66. package/dist/lib.esm/Transaction/PendingTransactionTracker.js +220 -0
  67. package/dist/lib.esm/Transaction/TransactionController.js +513 -0
  68. package/dist/lib.esm/Transaction/TransactionGasUtil.js +79 -0
  69. package/dist/lib.esm/Transaction/TransactionStateHistoryHelper.js +38 -0
  70. package/dist/lib.esm/Transaction/TransactionStateManager.js +294 -0
  71. package/dist/lib.esm/Transaction/TransactionUtils.js +326 -0
  72. package/dist/lib.esm/index.js +33 -0
  73. package/dist/lib.esm/utils/abis.js +505 -0
  74. package/dist/lib.esm/utils/constants.js +323 -0
  75. package/dist/lib.esm/utils/contractAddresses.js +14 -0
  76. package/dist/lib.esm/utils/conversionUtils.js +218 -0
  77. package/dist/lib.esm/utils/helpers.js +227 -0
  78. package/dist/lib.esm/utils/lodashUtils.js +21 -0
  79. package/dist/types/Account/AccountTrackerController.d.ts +5 -5
  80. package/dist/types/Block/PollingBlockTracker.d.ts +1 -2
  81. package/dist/types/Currency/CurrencyController.d.ts +1 -1
  82. package/dist/types/Gas/GasFeeController.d.ts +3 -3
  83. package/dist/types/Gas/gasUtil.d.ts +1 -1
  84. package/dist/types/Keyring/KeyringController.d.ts +3 -5
  85. package/dist/types/Message/AbstractMessageController.d.ts +5 -6
  86. package/dist/types/Message/AddChainController.d.ts +4 -4
  87. package/dist/types/Message/MessageController.d.ts +4 -4
  88. package/dist/types/Message/PersonalMessageController.d.ts +4 -4
  89. package/dist/types/Message/SwitchChainController.d.ts +4 -4
  90. package/dist/types/Message/TypedMessageController.d.ts +6 -7
  91. package/dist/types/Message/utils.d.ts +2 -7
  92. package/dist/types/Network/NetworkController.d.ts +4 -4
  93. package/dist/types/Network/cacheIdentifier.d.ts +1 -1
  94. package/dist/types/Network/createEthereumMiddleware.d.ts +2 -18
  95. package/dist/types/Network/createJsonRpcClient.d.ts +2 -2
  96. package/dist/types/Nfts/NftsController.d.ts +2 -2
  97. package/dist/types/Preferences/PreferencesController.d.ts +4 -4
  98. package/dist/types/Tokens/TokensController.d.ts +3 -3
  99. package/dist/types/Transaction/NonceTracker.d.ts +5 -5
  100. package/dist/types/Transaction/PendingTransactionTracker.d.ts +5 -5
  101. package/dist/types/Transaction/TransactionController.d.ts +12 -12
  102. package/dist/types/Transaction/TransactionGasUtil.d.ts +4 -4
  103. package/dist/types/Transaction/TransactionStateManager.d.ts +3 -3
  104. package/dist/types/Transaction/TransactionUtils.d.ts +1 -1
  105. package/dist/types/index.d.ts +12 -14
  106. package/dist/types/utils/constants.d.ts +1 -5
  107. package/dist/types/utils/helpers.d.ts +7 -4
  108. package/dist/types/utils/interfaces.d.ts +43 -23
  109. package/package.json +22 -10
  110. package/dist/types/Message/DecryptMessageController.d.ts +0 -20
  111. package/dist/types/Message/EncryptionPublicKeyController.d.ts +0 -20
@@ -0,0 +1,362 @@
1
+ 'use strict';
2
+
3
+ var baseControllers = require('@toruslabs/base-controllers');
4
+
5
+ const LOCALHOST = "localhost";
6
+ const CONTRACT_TYPE_ETH = "eth";
7
+ const CONTRACT_TYPE_ERC20 = "erc20";
8
+ const CONTRACT_TYPE_ERC721 = "erc721";
9
+ const CONTRACT_TYPE_ERC1155 = "erc1155";
10
+ const ERC1155_INTERFACE_ID = "0xd9b67a26";
11
+ const ERC721_INTERFACE_ID = "0x80ac58cd";
12
+ const ERC721_METADATA_INTERFACE_ID = "0x5b5e139f";
13
+ const ERC721_ENUMERABLE_INTERFACE_ID = "0x780e9d63";
14
+ const MAINNET_CHAIN_ID = "0x1";
15
+ const POLYGON_CHAIN_ID = "0x89";
16
+ const BSC_MAINNET_CHAIN_ID = "0x38";
17
+ const AVALANCHE_MAINNET_CHAIN_ID = "0xa86a";
18
+ const XDAI_CHAIN_ID = "0x64";
19
+ const ARBITRUM_MAINNET_CHAIN_ID = "0xa4b1";
20
+ const OPTIMISM_MAINNET_CHAIN_ID = "0xa";
21
+ const CELO_MAINNET_CHAIN_ID = "0xa4ec";
22
+ const BASE_CHAIN_ID = "0x2105";
23
+ const SEPOLIA_CHAIN_ID = "0xaa36a7";
24
+ const POLYGON_AMOY_CHAIN_ID = "0x13882";
25
+ const BSC_TESTNET_CHAIN_ID = "0x61";
26
+ const AVALANCHE_TESTNET_CHAIN_ID = "0xa869";
27
+ const ARBITRUM_TESTNET_CHAIN_ID = "0x66eee";
28
+ const OPTIMISM_TESTNET_CHAIN_ID = "0xaa37dc";
29
+ const BASE_TESTNET_CHAIN_ID = "0x14a34";
30
+ const INFURA_KEY = process.env.VITE_APP_INFURA_PROJECT_KEY;
31
+ const SUPPORTED_NETWORKS = {
32
+ [MAINNET_CHAIN_ID]: {
33
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
34
+ decimals: 18,
35
+ blockExplorerUrl: "https://etherscan.io",
36
+ chainId: MAINNET_CHAIN_ID,
37
+ displayName: "Ethereum",
38
+ logo: "eth.svg",
39
+ rpcTarget: `https://mainnet.infura.io/v3/${INFURA_KEY}`,
40
+ ticker: "ETH",
41
+ tickerName: "Ethereum"
42
+ },
43
+ [POLYGON_CHAIN_ID]: {
44
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
45
+ decimals: 18,
46
+ blockExplorerUrl: "https://polygonscan.com",
47
+ chainId: POLYGON_CHAIN_ID,
48
+ displayName: "Polygon",
49
+ logo: "polygon.svg",
50
+ rpcTarget: `https://polygon-mainnet.infura.io/v3/${INFURA_KEY}`,
51
+ ticker: "MATIC",
52
+ tickerName: "Matic Network Token"
53
+ },
54
+ [BSC_MAINNET_CHAIN_ID]: {
55
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
56
+ decimals: 18,
57
+ blockExplorerUrl: "https://bscscan.com",
58
+ chainId: BSC_MAINNET_CHAIN_ID,
59
+ displayName: "Binance Smart Chain (BSC)",
60
+ logo: "bnb_logo.svg",
61
+ rpcTarget: `https://bsc-dataseed.binance.org`,
62
+ ticker: "BNB",
63
+ tickerName: "Binance Coin"
64
+ },
65
+ [AVALANCHE_MAINNET_CHAIN_ID]: {
66
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
67
+ decimals: 18,
68
+ blockExplorerUrl: "https://snowtrace.io",
69
+ chainId: AVALANCHE_MAINNET_CHAIN_ID,
70
+ displayName: "Avalanche",
71
+ logo: "avax.svg",
72
+ rpcTarget: `https://api.avax.network/ext/bc/C/rpc`,
73
+ ticker: "AVAX",
74
+ tickerName: "Avalanche"
75
+ },
76
+ [OPTIMISM_MAINNET_CHAIN_ID]: {
77
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
78
+ decimals: 18,
79
+ blockExplorerUrl: "https://optimistic.etherscan.io",
80
+ chainId: OPTIMISM_MAINNET_CHAIN_ID,
81
+ displayName: "Optimism",
82
+ logo: "optimism.svg",
83
+ rpcTarget: `https://optimism-mainnet.infura.io/v3/${INFURA_KEY}`,
84
+ ticker: "ETH",
85
+ tickerName: "Ethereum"
86
+ },
87
+ [CELO_MAINNET_CHAIN_ID]: {
88
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
89
+ decimals: 18,
90
+ blockExplorerUrl: "https://explorer.celo.org",
91
+ chainId: CELO_MAINNET_CHAIN_ID,
92
+ displayName: "Celo Mainnet",
93
+ logo: "celo.svg",
94
+ rpcTarget: `https://celo-mainnet.infura.io/v3/${INFURA_KEY}`,
95
+ ticker: "CELO",
96
+ tickerName: "Celo"
97
+ },
98
+ [ARBITRUM_MAINNET_CHAIN_ID]: {
99
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
100
+ decimals: 18,
101
+ blockExplorerUrl: "https://arbiscan.io",
102
+ chainId: ARBITRUM_MAINNET_CHAIN_ID,
103
+ displayName: "Arbitrum One",
104
+ logo: "arbitrum.svg",
105
+ rpcTarget: `https://arbitrum-mainnet.infura.io/v3/${INFURA_KEY}`,
106
+ ticker: "ETH",
107
+ tickerName: "Ethereum"
108
+ },
109
+ [XDAI_CHAIN_ID]: {
110
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
111
+ decimals: 18,
112
+ blockExplorerUrl: "https://gnosis.blockscout.com",
113
+ chainId: XDAI_CHAIN_ID,
114
+ displayName: "xDai",
115
+ logo: "xDai.svg",
116
+ rpcTarget: `https://rpc.gnosischain.com`,
117
+ ticker: "DAI",
118
+ tickerName: "xDai Token"
119
+ },
120
+ [BASE_CHAIN_ID]: {
121
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
122
+ decimals: 18,
123
+ blockExplorerUrl: "https://basescan.org",
124
+ chainId: BASE_CHAIN_ID,
125
+ displayName: "Base",
126
+ logo: "base.svg",
127
+ rpcTarget: `https://mainnet.base.org`,
128
+ ticker: "ETH",
129
+ tickerName: "Ethereum"
130
+ },
131
+ [SEPOLIA_CHAIN_ID]: {
132
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
133
+ decimals: 18,
134
+ blockExplorerUrl: "https://sepolia.etherscan.io",
135
+ chainId: SEPOLIA_CHAIN_ID,
136
+ displayName: "Sepolia Test Network",
137
+ logo: "eth.svg",
138
+ rpcTarget: `https://sepolia.infura.io/v3/${INFURA_KEY}`,
139
+ ticker: "ETH",
140
+ tickerName: "Ethereum",
141
+ isTestnet: true
142
+ },
143
+ [POLYGON_AMOY_CHAIN_ID]: {
144
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
145
+ decimals: 18,
146
+ blockExplorerUrl: "https://amoy.polygonscan.com",
147
+ chainId: POLYGON_AMOY_CHAIN_ID,
148
+ displayName: "Polygon Amoy",
149
+ logo: "polygon.svg",
150
+ rpcTarget: `https://polygon-amoy.infura.io/v3/${INFURA_KEY}`,
151
+ ticker: "MATIC",
152
+ tickerName: "Matic Network Token",
153
+ isTestnet: true
154
+ },
155
+ [BSC_TESTNET_CHAIN_ID]: {
156
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
157
+ decimals: 18,
158
+ blockExplorerUrl: "https://testnet.bscscan.com",
159
+ chainId: BSC_TESTNET_CHAIN_ID,
160
+ displayName: "Binance Smart Chain Testnet",
161
+ logo: "bnb_logo.svg",
162
+ rpcTarget: `https://data-seed-prebsc-1-s1.binance.org:8545`,
163
+ ticker: "BNB",
164
+ tickerName: "Binance Coin",
165
+ isTestnet: true
166
+ },
167
+ [AVALANCHE_TESTNET_CHAIN_ID]: {
168
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
169
+ decimals: 18,
170
+ blockExplorerUrl: "https://testnet.snowtrace.io",
171
+ chainId: AVALANCHE_TESTNET_CHAIN_ID,
172
+ displayName: "Avalanche Testnet C-Chain",
173
+ logo: "avax.svg",
174
+ rpcTarget: `https://api.avax-test.network/ext/bc/C/rpc`,
175
+ ticker: "AVAX",
176
+ tickerName: "Avalanche",
177
+ isTestnet: true
178
+ },
179
+ [ARBITRUM_TESTNET_CHAIN_ID]: {
180
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
181
+ decimals: 18,
182
+ blockExplorerUrl: "https://sepolia.arbiscan.io",
183
+ chainId: ARBITRUM_TESTNET_CHAIN_ID,
184
+ displayName: "Arbitrum Sepolia",
185
+ logo: "arbitrum.svg",
186
+ rpcTarget: `https://arbitrum-sepolia.infura.io/v3/${INFURA_KEY}`,
187
+ ticker: "ETH",
188
+ tickerName: "Ethereum",
189
+ isTestnet: true
190
+ },
191
+ [OPTIMISM_TESTNET_CHAIN_ID]: {
192
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
193
+ decimals: 18,
194
+ blockExplorerUrl: "https://sepolia-optimistic.etherscan.io",
195
+ chainId: OPTIMISM_TESTNET_CHAIN_ID,
196
+ displayName: "Optimism Sepolia",
197
+ logo: "optimism.svg",
198
+ rpcTarget: `https://optimism-sepolia.infura.io/v3/${INFURA_KEY}`,
199
+ ticker: "ETH",
200
+ tickerName: "Ethereum",
201
+ isTestnet: true
202
+ },
203
+ [BASE_TESTNET_CHAIN_ID]: {
204
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
205
+ decimals: 18,
206
+ blockExplorerUrl: "https://sepolia.basescan.org",
207
+ chainId: BASE_TESTNET_CHAIN_ID,
208
+ displayName: "Base Sepolia",
209
+ logo: "base.svg",
210
+ rpcTarget: `https://sepolia.base.org`,
211
+ ticker: "ETH",
212
+ tickerName: "Ethereum",
213
+ isTestnet: true
214
+ }
215
+ };
216
+ const METHOD_TYPES = {
217
+ GET_ACCOUNTS: "eth_accounts",
218
+ ETH_TRANSACTION: "eth_sendTransaction",
219
+ ETH_REQUEST_ACCOUNTS: "eth_requestAccounts",
220
+ ETH_SEND_RAW_TRANSACTION: "eth_sendRawTransaction",
221
+ ETH_SIGN: "eth_sign",
222
+ ETH_SIGN_TYPED_DATA_V4: "eth_signTypedData_v4",
223
+ PERSONAL_SIGN: "personal_sign",
224
+ ETH_GET_TRANSACTION_COUNT: "eth_getTransactionCount",
225
+ ETH_GET_TRANSACTION_BY_HASH: "eth_getTransactionByHash",
226
+ ETH_GET_TRANSACTION_RECEIPT: "eth_getTransactionReceipt",
227
+ WATCH_ASSET: "wallet_watchAsset",
228
+ ETH_GET_BLOCK_BY_HASH: "eth_getBlockByHash",
229
+ ETH_GET_CODE: "eth_getCode",
230
+ ETH_GET_GAS_PRICE: "eth_gasPrice",
231
+ SWITCH_CHAIN: "wallet_switchEthereumChain",
232
+ ADD_CHAIN: "wallet_addEthereumChain"
233
+ };
234
+ const TRANSACTION_ENVELOPE_TYPES = {
235
+ LEGACY: "0x0",
236
+ ACCESS_LIST: "0x1",
237
+ FEE_MARKET: "0x2"
238
+ };
239
+ const GAS_ESTIMATE_TYPES = {
240
+ // Fee Market describes the way gas is set after the london hardfork, and was
241
+ // defined by EIP-1559.
242
+ FEE_MARKET: "fee-market",
243
+ // Legacy describes gasPrice estimates from before london hardfork, when the
244
+ // user is connected to mainnet and are presented with fast/average/slow
245
+ // estimate levels to choose from.
246
+ LEGACY: "legacy",
247
+ // EthGasPrice describes a gasPrice estimate received from eth_gasPrice. Post
248
+ // london this value should only be used for legacy type transactions when on
249
+ // networks that support EIP-1559. This type of estimate is the most accurate
250
+ // to display on custom networks that don't support EIP-1559.
251
+ ETH_GASPRICE: "eth_gasPrice",
252
+ // NoEstimate describes the state of the controller before receiving its first
253
+ // estimate.
254
+ NONE: "none"
255
+ };
256
+
257
+ // https://help.optimism.io/hc/en-us/articles/4411895794715-Transaction-fees
258
+ const CHAIN_ID_TO_GAS_LIMIT_BUFFER_MAP = {
259
+ [OPTIMISM_MAINNET_CHAIN_ID]: 1,
260
+ [OPTIMISM_TESTNET_CHAIN_ID]: 1
261
+ };
262
+ const OLD_ERC721_LIST = {
263
+ "0x06012c8cf97bead5deae237070f9587f8e7a266d": {
264
+ name: "Cryptokitties",
265
+ logo: "dapp-cryptokitty.svg",
266
+ erc20: true,
267
+ symbol: "CK",
268
+ decimals: 0
269
+ }
270
+ };
271
+ const TEST_CHAINS = [SEPOLIA_CHAIN_ID];
272
+ const ETHERSCAN_SUPPORTED_CHAINS = [MAINNET_CHAIN_ID, SEPOLIA_CHAIN_ID, BSC_MAINNET_CHAIN_ID, BSC_TESTNET_CHAIN_ID, OPTIMISM_MAINNET_CHAIN_ID, OPTIMISM_TESTNET_CHAIN_ID, AVALANCHE_MAINNET_CHAIN_ID, AVALANCHE_TESTNET_CHAIN_ID, ARBITRUM_MAINNET_CHAIN_ID, ARBITRUM_TESTNET_CHAIN_ID, POLYGON_CHAIN_ID, POLYGON_AMOY_CHAIN_ID, CELO_MAINNET_CHAIN_ID, BASE_CHAIN_ID, BASE_TESTNET_CHAIN_ID];
273
+ const SIMPLEHASH_SUPPORTED_CHAINS = [MAINNET_CHAIN_ID, POLYGON_CHAIN_ID, POLYGON_AMOY_CHAIN_ID, BSC_MAINNET_CHAIN_ID, BSC_TESTNET_CHAIN_ID, ARBITRUM_MAINNET_CHAIN_ID, ARBITRUM_TESTNET_CHAIN_ID, OPTIMISM_MAINNET_CHAIN_ID, OPTIMISM_TESTNET_CHAIN_ID, CELO_MAINNET_CHAIN_ID, AVALANCHE_MAINNET_CHAIN_ID, AVALANCHE_TESTNET_CHAIN_ID, SEPOLIA_CHAIN_ID, BASE_CHAIN_ID, BASE_TESTNET_CHAIN_ID];
274
+ const COINGECKO_SUPPORTED_CURRENCIES = new Set(["btc", "eth", "ltc", "bch", "bnb", "eos", "xrp", "xlm", "link", "dot", "yfi", "usd", "aed", "ars", "aud", "bdt", "bhd", "bmd", "brl", "cad", "chf", "clp", "cny", "czk", "dkk", "eur", "gbp", "hkd", "huf", "idr", "ils", "inr", "jpy", "krw", "kwd", "lkr", "mmk", "mxn", "myr", "ngn", "nok", "nzd", "php", "pkr", "pln", "rub", "sar", "sek", "sgd", "thb", "try", "twd", "uah", "vef", "vnd", "zar", "xdr", "xag", "xau", "bits", "sats"]);
275
+ const COINGECKO_PLATFORMS_CHAIN_CODE_MAP = {
276
+ [POLYGON_CHAIN_ID]: {
277
+ platform: "polygon-pos",
278
+ currency: "matic"
279
+ },
280
+ [BSC_MAINNET_CHAIN_ID]: {
281
+ platform: "binance-smart-chain",
282
+ currency: "bnb"
283
+ },
284
+ [MAINNET_CHAIN_ID]: {
285
+ platform: "ethereum",
286
+ currency: "eth"
287
+ },
288
+ [ARBITRUM_MAINNET_CHAIN_ID]: {
289
+ platform: "arbitrum-one",
290
+ currency: "eth"
291
+ },
292
+ [OPTIMISM_MAINNET_CHAIN_ID]: {
293
+ platform: "optimistic-ethereum",
294
+ currency: "eth"
295
+ },
296
+ [CELO_MAINNET_CHAIN_ID]: {
297
+ platform: "celo",
298
+ currency: "celo"
299
+ },
300
+ [XDAI_CHAIN_ID]: {
301
+ platform: "xdai",
302
+ currency: "xDAI"
303
+ },
304
+ [AVALANCHE_MAINNET_CHAIN_ID]: {
305
+ platform: "avalanche",
306
+ currency: "avax"
307
+ },
308
+ [BASE_CHAIN_ID]: {
309
+ platform: "base",
310
+ currency: "eth"
311
+ }
312
+ };
313
+ const MessageStatus = {
314
+ UNAPPROVED: "unapproved",
315
+ SIGNED: "signed",
316
+ PENDING: "pending",
317
+ APPROVED: "approved",
318
+ REJECTED: "rejected",
319
+ FAILED: "failed"
320
+ };
321
+ const MESSAGE_EVENTS = {
322
+ UNAPPROVED_MESSAGE: "unapprovedMessage"
323
+ };
324
+
325
+ exports.ARBITRUM_MAINNET_CHAIN_ID = ARBITRUM_MAINNET_CHAIN_ID;
326
+ exports.ARBITRUM_TESTNET_CHAIN_ID = ARBITRUM_TESTNET_CHAIN_ID;
327
+ exports.AVALANCHE_MAINNET_CHAIN_ID = AVALANCHE_MAINNET_CHAIN_ID;
328
+ exports.AVALANCHE_TESTNET_CHAIN_ID = AVALANCHE_TESTNET_CHAIN_ID;
329
+ exports.BASE_CHAIN_ID = BASE_CHAIN_ID;
330
+ exports.BASE_TESTNET_CHAIN_ID = BASE_TESTNET_CHAIN_ID;
331
+ exports.BSC_MAINNET_CHAIN_ID = BSC_MAINNET_CHAIN_ID;
332
+ exports.BSC_TESTNET_CHAIN_ID = BSC_TESTNET_CHAIN_ID;
333
+ exports.CELO_MAINNET_CHAIN_ID = CELO_MAINNET_CHAIN_ID;
334
+ exports.CHAIN_ID_TO_GAS_LIMIT_BUFFER_MAP = CHAIN_ID_TO_GAS_LIMIT_BUFFER_MAP;
335
+ exports.COINGECKO_PLATFORMS_CHAIN_CODE_MAP = COINGECKO_PLATFORMS_CHAIN_CODE_MAP;
336
+ exports.COINGECKO_SUPPORTED_CURRENCIES = COINGECKO_SUPPORTED_CURRENCIES;
337
+ exports.CONTRACT_TYPE_ERC1155 = CONTRACT_TYPE_ERC1155;
338
+ exports.CONTRACT_TYPE_ERC20 = CONTRACT_TYPE_ERC20;
339
+ exports.CONTRACT_TYPE_ERC721 = CONTRACT_TYPE_ERC721;
340
+ exports.CONTRACT_TYPE_ETH = CONTRACT_TYPE_ETH;
341
+ exports.ERC1155_INTERFACE_ID = ERC1155_INTERFACE_ID;
342
+ exports.ERC721_ENUMERABLE_INTERFACE_ID = ERC721_ENUMERABLE_INTERFACE_ID;
343
+ exports.ERC721_INTERFACE_ID = ERC721_INTERFACE_ID;
344
+ exports.ERC721_METADATA_INTERFACE_ID = ERC721_METADATA_INTERFACE_ID;
345
+ exports.ETHERSCAN_SUPPORTED_CHAINS = ETHERSCAN_SUPPORTED_CHAINS;
346
+ exports.GAS_ESTIMATE_TYPES = GAS_ESTIMATE_TYPES;
347
+ exports.LOCALHOST = LOCALHOST;
348
+ exports.MAINNET_CHAIN_ID = MAINNET_CHAIN_ID;
349
+ exports.MESSAGE_EVENTS = MESSAGE_EVENTS;
350
+ exports.METHOD_TYPES = METHOD_TYPES;
351
+ exports.MessageStatus = MessageStatus;
352
+ exports.OLD_ERC721_LIST = OLD_ERC721_LIST;
353
+ exports.OPTIMISM_MAINNET_CHAIN_ID = OPTIMISM_MAINNET_CHAIN_ID;
354
+ exports.OPTIMISM_TESTNET_CHAIN_ID = OPTIMISM_TESTNET_CHAIN_ID;
355
+ exports.POLYGON_AMOY_CHAIN_ID = POLYGON_AMOY_CHAIN_ID;
356
+ exports.POLYGON_CHAIN_ID = POLYGON_CHAIN_ID;
357
+ exports.SEPOLIA_CHAIN_ID = SEPOLIA_CHAIN_ID;
358
+ exports.SIMPLEHASH_SUPPORTED_CHAINS = SIMPLEHASH_SUPPORTED_CHAINS;
359
+ exports.SUPPORTED_NETWORKS = SUPPORTED_NETWORKS;
360
+ exports.TEST_CHAINS = TEST_CHAINS;
361
+ exports.TRANSACTION_ENVELOPE_TYPES = TRANSACTION_ENVELOPE_TYPES;
362
+ exports.XDAI_CHAIN_ID = XDAI_CHAIN_ID;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ var constants = require('./constants.js');
4
+
5
+ const SINGLE_CALL_BALANCES_ADDRESSES = {
6
+ [constants.MAINNET_CHAIN_ID]: "0xb1f8e55c7f64d203c1400b9d8555d050f94adf39",
7
+ // [SEPOLIA_CHAIN_ID]: SINGLE_CALL_BALANCES_ADDRESS_SEPOLIA,
8
+ // [FANTOM_CHAIN_ID]: "0x07f697424ABe762bB808c109860c04eA488ff92B",
9
+ [constants.BSC_MAINNET_CHAIN_ID]: "0x2352c63A83f9Fd126af8676146721Fa00924d7e4",
10
+ [constants.OPTIMISM_MAINNET_CHAIN_ID]: "0xB1c568e9C3E6bdaf755A60c7418C269eb11524FC",
11
+ [constants.POLYGON_CHAIN_ID]: "0x2352c63A83f9Fd126af8676146721Fa00924d7e4",
12
+ [constants.AVALANCHE_MAINNET_CHAIN_ID]: "0xD023D153a0DFa485130ECFdE2FAA7e612EF94818",
13
+ [constants.ARBITRUM_MAINNET_CHAIN_ID]: "0x151E24A486D7258dd7C33Fb67E4bB01919B7B32c"
14
+ };
15
+
16
+ exports.SINGLE_CALL_BALANCES_ADDRESSES = SINGLE_CALL_BALANCES_ADDRESSES;
@@ -0,0 +1,232 @@
1
+ 'use strict';
2
+
3
+ var _objectDestructuringEmpty = require('@babel/runtime/helpers/objectDestructuringEmpty');
4
+ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
5
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
+ var util = require('@ethereumjs/util');
7
+ var BigNumber = require('bignumber.js');
8
+ var BN = require('bn.js');
9
+
10
+ const _excluded = ["aBase", "bBase"],
11
+ _excluded2 = ["aBase", "bBase"],
12
+ _excluded3 = ["multiplicandBase", "multiplierBase"];
13
+
14
+ // Big Number Constants
15
+ const BIG_NUMBER_WEI_MULTIPLIER = new BigNumber("1000000000000000000");
16
+ const BIG_NUMBER_GWEI_MULTIPLIER = new BigNumber("1000000000");
17
+ const BIG_NUMBER_ETH_MULTIPLIER = new BigNumber("1");
18
+ // Setter Maps
19
+ const toBigNumber = {
20
+ hex: n => new BigNumber(util.stripHexPrefix(n), 16),
21
+ dec: n => new BigNumber(String(n), 10),
22
+ BN: n => new BigNumber(n.toString(16), 16)
23
+ };
24
+ const toNormalizedDenomination = {
25
+ WEI: bigNumber => bigNumber.div(BIG_NUMBER_WEI_MULTIPLIER),
26
+ GWEI: bigNumber => bigNumber.div(BIG_NUMBER_GWEI_MULTIPLIER),
27
+ ETH: bigNumber => bigNumber.div(BIG_NUMBER_ETH_MULTIPLIER)
28
+ };
29
+ const toSpecifiedDenomination = {
30
+ WEI: bigNumber => bigNumber.times(BIG_NUMBER_WEI_MULTIPLIER).dp(0, BigNumber.ROUND_HALF_UP),
31
+ GWEI: bigNumber => bigNumber.times(BIG_NUMBER_GWEI_MULTIPLIER).dp(9, BigNumber.ROUND_HALF_UP),
32
+ ETH: bigNumber => bigNumber.times(BIG_NUMBER_ETH_MULTIPLIER).dp(9, BigNumber.ROUND_HALF_UP)
33
+ };
34
+ const baseChange = {
35
+ hex: n => n.toString(16),
36
+ dec: n => new BigNumber(n).toString(10),
37
+ BN: n => new BN(n.toString(16))
38
+ };
39
+
40
+ // Utility function for checking base types
41
+ const isValidBase = base => Number.isInteger(base) && base > 1;
42
+
43
+ /**
44
+ * Utility method to convert a value between denominations, formats and currencies.
45
+ */
46
+ const converter = ({
47
+ value,
48
+ fromNumericBase,
49
+ fromDenomination,
50
+ fromCurrency,
51
+ toNumericBase,
52
+ toDenomination,
53
+ toCurrency,
54
+ numberOfDecimals,
55
+ conversionRate,
56
+ invertConversionRate,
57
+ roundDown
58
+ }) => {
59
+ let convertedValue = fromNumericBase ? toBigNumber[fromNumericBase](value) : value;
60
+ if (fromDenomination) {
61
+ convertedValue = toNormalizedDenomination[fromDenomination](convertedValue);
62
+ }
63
+ if (fromCurrency !== toCurrency) {
64
+ if (conversionRate === null || conversionRate === undefined) {
65
+ throw new Error(`Converting from ${fromCurrency} to ${toCurrency} requires a conversionRate, but one was not provided`);
66
+ }
67
+ let rate = toBigNumber.dec(conversionRate);
68
+ if (invertConversionRate) {
69
+ rate = new BigNumber(1).div(conversionRate);
70
+ }
71
+ convertedValue = convertedValue.times(rate);
72
+ }
73
+ if (toDenomination) {
74
+ convertedValue = toSpecifiedDenomination[toDenomination](convertedValue);
75
+ }
76
+ if (numberOfDecimals) {
77
+ convertedValue = convertedValue.dp(numberOfDecimals, BigNumber.ROUND_HALF_DOWN);
78
+ }
79
+ if (roundDown) {
80
+ convertedValue = convertedValue.dp(roundDown, BigNumber.ROUND_DOWN);
81
+ }
82
+ if (toNumericBase) {
83
+ convertedValue = baseChange[toNumericBase](convertedValue);
84
+ }
85
+ return convertedValue;
86
+ };
87
+ const conversionUtil = (value, {
88
+ fromCurrency = null,
89
+ toCurrency = fromCurrency,
90
+ fromNumericBase,
91
+ toNumericBase,
92
+ fromDenomination,
93
+ toDenomination,
94
+ numberOfDecimals,
95
+ conversionRate,
96
+ invertConversionRate
97
+ }) => {
98
+ if (fromCurrency !== toCurrency && !conversionRate) {
99
+ return 0;
100
+ }
101
+ return converter({
102
+ fromCurrency,
103
+ toCurrency,
104
+ fromNumericBase,
105
+ toNumericBase,
106
+ fromDenomination,
107
+ toDenomination,
108
+ numberOfDecimals,
109
+ conversionRate,
110
+ invertConversionRate,
111
+ value
112
+ });
113
+ };
114
+ const getBigNumber = (value, base) => {
115
+ if (!isValidBase(base)) {
116
+ throw new Error("Must specificy valid base");
117
+ }
118
+
119
+ // We don't include 'number' here, because BigNumber will throw if passed
120
+ // a number primitive it considers unsafe.
121
+ if (typeof value === "string" || value instanceof BigNumber) {
122
+ return new BigNumber(value, base);
123
+ }
124
+ return new BigNumber(String(value), base);
125
+ };
126
+ const addCurrencies = (a, b, options = {}) => {
127
+ const {
128
+ aBase,
129
+ bBase
130
+ } = options,
131
+ conversionOptions = _objectWithoutProperties(options, _excluded);
132
+ if (!isValidBase(aBase) || !isValidBase(bBase)) {
133
+ throw new Error("Must specify valid aBase and bBase");
134
+ }
135
+ const value = getBigNumber(a, aBase).plus(getBigNumber(b, bBase));
136
+ return converter(_objectSpread({
137
+ value
138
+ }, conversionOptions));
139
+ };
140
+ const subtractCurrencies = (a, b, options = {}) => {
141
+ const {
142
+ aBase,
143
+ bBase
144
+ } = options,
145
+ conversionOptions = _objectWithoutProperties(options, _excluded2);
146
+ if (!isValidBase(aBase) || !isValidBase(bBase)) {
147
+ throw new Error("Must specify valid aBase and bBase");
148
+ }
149
+ const value = getBigNumber(a, aBase).minus(getBigNumber(b, bBase));
150
+ return converter(_objectSpread({
151
+ value
152
+ }, conversionOptions));
153
+ };
154
+ const multiplyCurrencies = (a, b, options = {}) => {
155
+ const {
156
+ multiplicandBase,
157
+ multiplierBase
158
+ } = options,
159
+ conversionOptions = _objectWithoutProperties(options, _excluded3);
160
+ if (!isValidBase(multiplicandBase) || !isValidBase(multiplierBase)) {
161
+ throw new Error("Must specify valid multiplicandBase and multiplierBase");
162
+ }
163
+ const value = getBigNumber(a, multiplicandBase).times(getBigNumber(b, multiplierBase));
164
+ return converter(_objectSpread({
165
+ value
166
+ }, conversionOptions));
167
+ };
168
+ const conversionGreaterThan = (_ref, _ref2) => {
169
+ let secondProps = Object.assign({}, (_objectDestructuringEmpty(_ref2), _ref2));
170
+ let firstProps = Object.assign({}, (_objectDestructuringEmpty(_ref), _ref));
171
+ const firstValue = converter(_objectSpread({}, firstProps));
172
+ const secondValue = converter(_objectSpread({}, secondProps));
173
+ return firstValue.gt(secondValue);
174
+ };
175
+ const conversionLessThan = (_ref3, _ref4) => {
176
+ let secondProps = Object.assign({}, (_objectDestructuringEmpty(_ref4), _ref4));
177
+ let firstProps = Object.assign({}, (_objectDestructuringEmpty(_ref3), _ref3));
178
+ const firstValue = converter(_objectSpread({}, firstProps));
179
+ const secondValue = converter(_objectSpread({}, secondProps));
180
+ return firstValue.lt(secondValue);
181
+ };
182
+ const conversionMax = (_ref5, _ref6) => {
183
+ let secondProps = Object.assign({}, (_objectDestructuringEmpty(_ref6), _ref6));
184
+ let firstProps = Object.assign({}, (_objectDestructuringEmpty(_ref5), _ref5));
185
+ const firstIsGreater = conversionGreaterThan(_objectSpread({}, firstProps), _objectSpread({}, secondProps));
186
+ return firstIsGreater ? firstProps.value : secondProps.value;
187
+ };
188
+ const conversionGTE = (_ref7, _ref8) => {
189
+ let secondProps = Object.assign({}, (_objectDestructuringEmpty(_ref8), _ref8));
190
+ let firstProps = Object.assign({}, (_objectDestructuringEmpty(_ref7), _ref7));
191
+ const firstValue = converter(_objectSpread({}, firstProps));
192
+ const secondValue = converter(_objectSpread({}, secondProps));
193
+ return firstValue.isGreaterThanOrEqualTo(secondValue);
194
+ };
195
+ const conversionLTE = (_ref9, _ref10) => {
196
+ let secondProps = Object.assign({}, (_objectDestructuringEmpty(_ref10), _ref10));
197
+ let firstProps = Object.assign({}, (_objectDestructuringEmpty(_ref9), _ref9));
198
+ const firstValue = converter(_objectSpread({}, firstProps));
199
+ const secondValue = converter(_objectSpread({}, secondProps));
200
+ return firstValue.isLessThanOrEqualTo(secondValue);
201
+ };
202
+ const toNegative = (n, options = {}) => multiplyCurrencies(n, -1, options);
203
+ const decGWEIToHexWEI = decGWEI => {
204
+ return conversionUtil(decGWEI, {
205
+ fromNumericBase: "dec",
206
+ toNumericBase: "hex",
207
+ fromDenomination: "GWEI",
208
+ toDenomination: "WEI"
209
+ });
210
+ };
211
+ const hexWEIToDecGWEI = decGWEI => {
212
+ return conversionUtil(decGWEI, {
213
+ fromNumericBase: "hex",
214
+ toNumericBase: "dec",
215
+ fromDenomination: "WEI",
216
+ toDenomination: "GWEI"
217
+ });
218
+ };
219
+
220
+ exports.addCurrencies = addCurrencies;
221
+ exports.conversionGTE = conversionGTE;
222
+ exports.conversionGreaterThan = conversionGreaterThan;
223
+ exports.conversionLTE = conversionLTE;
224
+ exports.conversionLessThan = conversionLessThan;
225
+ exports.conversionMax = conversionMax;
226
+ exports.conversionUtil = conversionUtil;
227
+ exports.decGWEIToHexWEI = decGWEIToHexWEI;
228
+ exports.getBigNumber = getBigNumber;
229
+ exports.hexWEIToDecGWEI = hexWEIToDecGWEI;
230
+ exports.multiplyCurrencies = multiplyCurrencies;
231
+ exports.subtractCurrencies = subtractCurrencies;
232
+ exports.toNegative = toNegative;