@toruslabs/ethereum-controllers 5.10.1 → 5.11.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.
@@ -135,6 +135,7 @@ __webpack_require__.d(__webpack_exports__, {
135
135
  AddChainController: () => (/* reexport */ AddChainController),
136
136
  BASE_CHAIN_ID: () => (/* reexport */ BASE_CHAIN_ID),
137
137
  BASE_TESTNET_CHAIN_ID: () => (/* reexport */ BASE_TESTNET_CHAIN_ID),
138
+ BNToHex: () => (/* reexport */ BNToHex),
138
139
  BSC_MAINNET_CHAIN_ID: () => (/* reexport */ BSC_MAINNET_CHAIN_ID),
139
140
  BSC_TESTNET_CHAIN_ID: () => (/* reexport */ BSC_TESTNET_CHAIN_ID),
140
141
  CELO_MAINNET_CHAIN_ID: () => (/* reexport */ CELO_MAINNET_CHAIN_ID),
@@ -236,6 +237,7 @@ __webpack_require__.d(__webpack_exports__, {
236
237
  getEtherScanHashLink: () => (/* reexport */ getEtherScanHashLink),
237
238
  getFinalStates: () => (/* reexport */ getFinalStates),
238
239
  getIpfsEndpoint: () => (/* reexport */ getIpfsEndpoint),
240
+ hexToBn: () => (/* reexport */ hexToBn),
239
241
  hexWEIToDecGWEI: () => (/* reexport */ hexWEIToDecGWEI),
240
242
  idleTimeTracker: () => (/* reexport */ idleTimeTracker),
241
243
  isAddressByChainId: () => (/* reexport */ isAddressByChainId),
@@ -1621,6 +1623,12 @@ async function determineTransactionType(txParams, provider) {
1621
1623
 
1622
1624
 
1623
1625
 
1626
+ function hexToBn(hex) {
1627
+ return new (external_bignumber_js_default())((0,util_namespaceObject.stripHexPrefix)(hex), 16);
1628
+ }
1629
+ function BNToHex(bn) {
1630
+ return (0,util_namespaceObject.addHexPrefix)(bn.toString(16));
1631
+ }
1624
1632
  function getEtherScanHashLink(txHash, chainId) {
1625
1633
  if (!SUPPORTED_NETWORKS[chainId]) return "";
1626
1634
  return `${SUPPORTED_NETWORKS[chainId].blockExplorerUrl}/tx/${txHash}`;
@@ -3002,6 +3010,9 @@ class AddChainController extends AbstractMessageController {
3002
3010
  }
3003
3011
  async processAddChain(messageId) {
3004
3012
  const msgObject = this.getMessage(messageId);
3013
+ if (!msgObject) {
3014
+ throw new Error("Message not found");
3015
+ }
3005
3016
  try {
3006
3017
  await this.approveMessage(messageId, msgObject.messageParams);
3007
3018
  await this.addChain(msgObject.messageParams);
@@ -3021,10 +3032,12 @@ class AddChainController extends AbstractMessageController {
3021
3032
  return this.waitForFinishStatus(messageParams, this.name);
3022
3033
  }
3023
3034
  async addUnapprovedMessage(messageParams, req) {
3024
- validateAddChainData(messageParams);
3035
+ // set message params origin first to satisfy the eslint rule (origin won't be checked by validateAddChainData)
3036
+ // for "Possible race condition: `messageParams.origin` might be assigned based on an outdated state of `messageParams`"
3025
3037
  if (req) {
3026
3038
  messageParams.origin = req.origin;
3027
3039
  }
3040
+ await validateAddChainData(messageParams);
3028
3041
  const messageId = messageParams.id || (0,base_controllers_namespaceObject.randomId)();
3029
3042
  const messageData = {
3030
3043
  id: messageId,
@@ -3072,6 +3085,9 @@ class DecryptMessageController extends AbstractMessageController {
3072
3085
  }
3073
3086
  async processDecryptMessage(messageId) {
3074
3087
  const msgObject = this.getMessage(messageId);
3088
+ if (!msgObject) {
3089
+ throw new Error("Message not found");
3090
+ }
3075
3091
  try {
3076
3092
  const cleanMsgParams = await this.approveMessage(messageId, msgObject.messageParams);
3077
3093
  const parsedData = parseDecryptMessageData(cleanMsgParams.data);
@@ -3144,6 +3160,9 @@ class EncryptionPublicKeyController extends AbstractMessageController {
3144
3160
  }
3145
3161
  async processGetEncryptionPublicKey(messageId) {
3146
3162
  const msgObject = this.getMessage(messageId);
3163
+ if (!msgObject) {
3164
+ throw new Error(`Message not found`);
3165
+ }
3147
3166
  try {
3148
3167
  const cleanMsgParams = await this.approveMessage(messageId, msgObject.messageParams);
3149
3168
  const publicKey = this.signEncryptionPublicKey(cleanMsgParams.from);
@@ -3216,6 +3235,9 @@ class MessageController extends AbstractMessageController {
3216
3235
  }
3217
3236
  async processSignMessage(messageId) {
3218
3237
  const msgObject = this.getMessage(messageId);
3238
+ if (!msgObject) {
3239
+ throw new Error(`Message not found`);
3240
+ }
3219
3241
  try {
3220
3242
  const cleanMsgParams = await this.approveMessage(messageId, msgObject.messageParams);
3221
3243
  const rawSig = await this.signMessage(cleanMsgParams.data, cleanMsgParams.from);
@@ -3286,6 +3308,9 @@ class PersonalMessageController extends AbstractMessageController {
3286
3308
  }
3287
3309
  async processSignPersonalMessage(messageId) {
3288
3310
  const msgObject = this.getMessage(messageId);
3311
+ if (!msgObject) {
3312
+ throw new Error(`Message not found`);
3313
+ }
3289
3314
  try {
3290
3315
  const cleanMsgParams = await this.approveMessage(messageId, msgObject.messageParams);
3291
3316
  const rawSig = await this.signPersonalMessage(cleanMsgParams.data, cleanMsgParams.from);
@@ -3356,6 +3381,9 @@ class SwitchChainController extends AbstractMessageController {
3356
3381
  }
3357
3382
  async processSwitchChain(messageId) {
3358
3383
  const msgObject = this.getMessage(messageId);
3384
+ if (!msgObject) {
3385
+ throw new Error(`Message not found`);
3386
+ }
3359
3387
  try {
3360
3388
  await this.approveMessage(messageId, msgObject.messageParams);
3361
3389
  this.switchChain({
@@ -3440,6 +3468,9 @@ class TypedMessageController extends AbstractMessageController {
3440
3468
  }
3441
3469
  async processSignTypedMessage(messageId) {
3442
3470
  const msgObject = this.getMessage(messageId);
3471
+ if (!msgObject) {
3472
+ throw new Error(`Message not found`);
3473
+ }
3443
3474
  try {
3444
3475
  const cleanMsgParams = await this.approveMessage(messageId, msgObject.messageParams);
3445
3476
  const msgData = cleanMsgParams.version === eth_sig_util_namespaceObject.SignTypedDataVersion.V1 ? cleanMsgParams.data : JSON.parse(cleanMsgParams.data);
@@ -4087,7 +4118,7 @@ class NetworkController extends base_controllers_namespaceObject.BaseController
4087
4118
  properties: {
4088
4119
  EIPS_1559: undefined
4089
4120
  },
4090
- providerConfig: SUPPORTED_NETWORKS.mainnet
4121
+ providerConfig: SUPPORTED_NETWORKS[MAINNET_CHAIN_ID]
4091
4122
  };
4092
4123
 
4093
4124
  // when a new network is set,
@@ -4849,7 +4880,8 @@ class PreferencesController extends base_controllers_namespaceObject.BasePrefere
4849
4880
  async refetchEtherscanTx(address) {
4850
4881
  var _this$getAddressState3;
4851
4882
  const selectedAddress = address || this.state.selectedAddress;
4852
- const lowerCaseSelectedAddress = selectedAddress.toLowerCase();
4883
+ if (!selectedAddress) return [];
4884
+ const lowerCaseSelectedAddress = selectedAddress === null || selectedAddress === void 0 ? void 0 : selectedAddress.toLowerCase();
4853
4885
  if ((_this$getAddressState3 = this.getAddressState(selectedAddress)) !== null && _this$getAddressState3 !== void 0 && _this$getAddressState3.jwtToken) {
4854
4886
  const {
4855
4887
  chainId
@@ -5772,11 +5804,11 @@ class PendingTransactionTracker extends openlogin_jrpc_namespaceObject.SafeEvent
5772
5804
  if (txBlockDistance <= Math.min(50, 2 ** retryCount)) return undefined;
5773
5805
 
5774
5806
  // Only auto-submit already-signed txs:
5775
- if (!("rawTx" in txMeta)) return this.approveTransaction(txMeta.id);
5807
+ if (!("rawTransaction" in txMeta)) return this.approveTransaction(txMeta.id);
5776
5808
  const {
5777
- rawTx
5809
+ rawTransaction
5778
5810
  } = txMeta;
5779
- const txHash = await this.publishTransaction(rawTx);
5811
+ const txHash = await this.publishTransaction(rawTransaction);
5780
5812
 
5781
5813
  // Increment successful tries:
5782
5814
  this.emit(base_controllers_namespaceObject.TX_EVENTS.TX_RETRY, {
@@ -6042,6 +6074,7 @@ class TransactionStateManager extends base_controllers_namespaceObject.BaseTrans
6042
6074
  });
6043
6075
  }
6044
6076
  generateTxMeta(opts = {}) {
6077
+ var _opts$transaction;
6045
6078
  const chainId = this.getCurrentChainId();
6046
6079
  if (chainId === "loading") throw new Error("Torus is having trouble connecting to the network");
6047
6080
  let dappSuggestedGasFees = null;
@@ -6067,7 +6100,7 @@ class TransactionStateManager extends base_controllers_namespaceObject.BaseTrans
6067
6100
  }
6068
6101
  }
6069
6102
  return objectSpread2_default()({
6070
- id: opts.transaction.id || (0,base_controllers_namespaceObject.randomId)(),
6103
+ id: ((_opts$transaction = opts.transaction) === null || _opts$transaction === void 0 ? void 0 : _opts$transaction.id) || (0,base_controllers_namespaceObject.randomId)(),
6071
6104
  time: Date.now(),
6072
6105
  status: base_controllers_namespaceObject.TransactionStatus.unapproved,
6073
6106
  loadingDefaults: true,
@@ -4,7 +4,7 @@ import { CHAIN_NAMESPACES, BaseController, randomId, TransactionStatus, TRANSACT
4
4
  import { Mutex } from 'async-mutex';
5
5
  import { BrowserProvider, toQuantity, Contract, Interface, isHexString as isHexString$1, JsonRpcProvider, keccak256 } from 'ethers';
6
6
  import log from 'loglevel';
7
- import { isHexString, addHexPrefix, isValidAddress, toChecksumAddress, stripHexPrefix, bytesToHex, privateToPublic, privateToAddress, ecsign, bigIntToBytes } from '@ethereumjs/util';
7
+ import { isHexString, addHexPrefix, isValidAddress, stripHexPrefix, toChecksumAddress, bytesToHex, privateToPublic, privateToAddress, ecsign, bigIntToBytes } from '@ethereumjs/util';
8
8
  import BigNumber from 'bignumber.js';
9
9
  import { rpcErrors, providerErrors, createAsyncMiddleware, mergeMiddleware, createScaffoldMiddleware, providerFromMiddleware, JRPCEngine, providerFromEngine, SafeEventEmitter } from '@toruslabs/openlogin-jrpc';
10
10
  import { get } from '@toruslabs/http-helpers';
@@ -1320,6 +1320,12 @@ async function determineTransactionType(txParams, provider) {
1320
1320
  };
1321
1321
  }
1322
1322
 
1323
+ function hexToBn(hex) {
1324
+ return new BigNumber(stripHexPrefix(hex), 16);
1325
+ }
1326
+ function BNToHex(bn) {
1327
+ return addHexPrefix(bn.toString(16));
1328
+ }
1323
1329
  function getEtherScanHashLink(txHash, chainId) {
1324
1330
  if (!SUPPORTED_NETWORKS[chainId]) return "";
1325
1331
  return `${SUPPORTED_NETWORKS[chainId].blockExplorerUrl}/tx/${txHash}`;
@@ -2618,6 +2624,9 @@ class AddChainController extends AbstractMessageController {
2618
2624
  }
2619
2625
  async processAddChain(messageId) {
2620
2626
  const msgObject = this.getMessage(messageId);
2627
+ if (!msgObject) {
2628
+ throw new Error("Message not found");
2629
+ }
2621
2630
  try {
2622
2631
  await this.approveMessage(messageId, msgObject.messageParams);
2623
2632
  await this.addChain(msgObject.messageParams);
@@ -2637,10 +2646,12 @@ class AddChainController extends AbstractMessageController {
2637
2646
  return this.waitForFinishStatus(messageParams, this.name);
2638
2647
  }
2639
2648
  async addUnapprovedMessage(messageParams, req) {
2640
- validateAddChainData(messageParams);
2649
+ // set message params origin first to satisfy the eslint rule (origin won't be checked by validateAddChainData)
2650
+ // for "Possible race condition: `messageParams.origin` might be assigned based on an outdated state of `messageParams`"
2641
2651
  if (req) {
2642
2652
  messageParams.origin = req.origin;
2643
2653
  }
2654
+ await validateAddChainData(messageParams);
2644
2655
  const messageId = messageParams.id || randomId();
2645
2656
  const messageData = {
2646
2657
  id: messageId,
@@ -2680,6 +2691,9 @@ class DecryptMessageController extends AbstractMessageController {
2680
2691
  }
2681
2692
  async processDecryptMessage(messageId) {
2682
2693
  const msgObject = this.getMessage(messageId);
2694
+ if (!msgObject) {
2695
+ throw new Error("Message not found");
2696
+ }
2683
2697
  try {
2684
2698
  const cleanMsgParams = await this.approveMessage(messageId, msgObject.messageParams);
2685
2699
  const parsedData = parseDecryptMessageData(cleanMsgParams.data);
@@ -2744,6 +2758,9 @@ class EncryptionPublicKeyController extends AbstractMessageController {
2744
2758
  }
2745
2759
  async processGetEncryptionPublicKey(messageId) {
2746
2760
  const msgObject = this.getMessage(messageId);
2761
+ if (!msgObject) {
2762
+ throw new Error(`Message not found`);
2763
+ }
2747
2764
  try {
2748
2765
  const cleanMsgParams = await this.approveMessage(messageId, msgObject.messageParams);
2749
2766
  const publicKey = this.signEncryptionPublicKey(cleanMsgParams.from);
@@ -2809,6 +2826,9 @@ class MessageController extends AbstractMessageController {
2809
2826
  }
2810
2827
  async processSignMessage(messageId) {
2811
2828
  const msgObject = this.getMessage(messageId);
2829
+ if (!msgObject) {
2830
+ throw new Error(`Message not found`);
2831
+ }
2812
2832
  try {
2813
2833
  const cleanMsgParams = await this.approveMessage(messageId, msgObject.messageParams);
2814
2834
  const rawSig = await this.signMessage(cleanMsgParams.data, cleanMsgParams.from);
@@ -2872,6 +2892,9 @@ class PersonalMessageController extends AbstractMessageController {
2872
2892
  }
2873
2893
  async processSignPersonalMessage(messageId) {
2874
2894
  const msgObject = this.getMessage(messageId);
2895
+ if (!msgObject) {
2896
+ throw new Error(`Message not found`);
2897
+ }
2875
2898
  try {
2876
2899
  const cleanMsgParams = await this.approveMessage(messageId, msgObject.messageParams);
2877
2900
  const rawSig = await this.signPersonalMessage(cleanMsgParams.data, cleanMsgParams.from);
@@ -2935,6 +2958,9 @@ class SwitchChainController extends AbstractMessageController {
2935
2958
  }
2936
2959
  async processSwitchChain(messageId) {
2937
2960
  const msgObject = this.getMessage(messageId);
2961
+ if (!msgObject) {
2962
+ throw new Error(`Message not found`);
2963
+ }
2938
2964
  try {
2939
2965
  await this.approveMessage(messageId, msgObject.messageParams);
2940
2966
  this.switchChain({
@@ -3011,6 +3037,9 @@ class TypedMessageController extends AbstractMessageController {
3011
3037
  }
3012
3038
  async processSignTypedMessage(messageId) {
3013
3039
  const msgObject = this.getMessage(messageId);
3040
+ if (!msgObject) {
3041
+ throw new Error(`Message not found`);
3042
+ }
3014
3043
  try {
3015
3044
  const cleanMsgParams = await this.approveMessage(messageId, msgObject.messageParams);
3016
3045
  const msgData = cleanMsgParams.version === SignTypedDataVersion.V1 ? cleanMsgParams.data : JSON.parse(cleanMsgParams.data);
@@ -3635,7 +3664,7 @@ class NetworkController extends BaseController {
3635
3664
  properties: {
3636
3665
  EIPS_1559: undefined
3637
3666
  },
3638
- providerConfig: SUPPORTED_NETWORKS.mainnet
3667
+ providerConfig: SUPPORTED_NETWORKS[MAINNET_CHAIN_ID]
3639
3668
  };
3640
3669
 
3641
3670
  // when a new network is set,
@@ -4370,7 +4399,8 @@ class PreferencesController extends BasePreferencesController {
4370
4399
  async refetchEtherscanTx(address) {
4371
4400
  var _this$getAddressState3;
4372
4401
  const selectedAddress = address || this.state.selectedAddress;
4373
- const lowerCaseSelectedAddress = selectedAddress.toLowerCase();
4402
+ if (!selectedAddress) return [];
4403
+ const lowerCaseSelectedAddress = selectedAddress === null || selectedAddress === void 0 ? void 0 : selectedAddress.toLowerCase();
4374
4404
  if ((_this$getAddressState3 = this.getAddressState(selectedAddress)) !== null && _this$getAddressState3 !== void 0 && _this$getAddressState3.jwtToken) {
4375
4405
  const {
4376
4406
  chainId
@@ -5261,11 +5291,11 @@ class PendingTransactionTracker extends SafeEventEmitter {
5261
5291
  if (txBlockDistance <= Math.min(50, 2 ** retryCount)) return undefined;
5262
5292
 
5263
5293
  // Only auto-submit already-signed txs:
5264
- if (!("rawTx" in txMeta)) return this.approveTransaction(txMeta.id);
5294
+ if (!("rawTransaction" in txMeta)) return this.approveTransaction(txMeta.id);
5265
5295
  const {
5266
- rawTx
5296
+ rawTransaction
5267
5297
  } = txMeta;
5268
- const txHash = await this.publishTransaction(rawTx);
5298
+ const txHash = await this.publishTransaction(rawTransaction);
5269
5299
 
5270
5300
  // Increment successful tries:
5271
5301
  this.emit(TX_EVENTS.TX_RETRY, {
@@ -5514,6 +5544,7 @@ class TransactionStateManager extends BaseTransactionStateManager {
5514
5544
  });
5515
5545
  }
5516
5546
  generateTxMeta(opts = {}) {
5547
+ var _opts$transaction;
5517
5548
  const chainId = this.getCurrentChainId();
5518
5549
  if (chainId === "loading") throw new Error("Torus is having trouble connecting to the network");
5519
5550
  let dappSuggestedGasFees = null;
@@ -5539,7 +5570,7 @@ class TransactionStateManager extends BaseTransactionStateManager {
5539
5570
  }
5540
5571
  }
5541
5572
  return _objectSpread({
5542
- id: opts.transaction.id || randomId(),
5573
+ id: ((_opts$transaction = opts.transaction) === null || _opts$transaction === void 0 ? void 0 : _opts$transaction.id) || randomId(),
5543
5574
  time: Date.now(),
5544
5575
  status: TransactionStatus.unapproved,
5545
5576
  loadingDefaults: true,
@@ -6281,4 +6312,4 @@ class TransactionController extends TransactionStateManager {
6281
6312
  }
6282
6313
  }
6283
6314
 
6284
- export { ARBITRUM_MAINNET_CHAIN_ID, ARBITRUM_TESTNET_CHAIN_ID, AVALANCHE_MAINNET_CHAIN_ID, AVALANCHE_TESTNET_CHAIN_ID, AccountTrackerController, AddChainController, BASE_CHAIN_ID, BASE_TESTNET_CHAIN_ID, BSC_MAINNET_CHAIN_ID, BSC_TESTNET_CHAIN_ID, CELO_MAINNET_CHAIN_ID, CHAIN_ID_TO_GAS_LIMIT_BUFFER_MAP, COINGECKO_PLATFORMS_CHAIN_CODE_MAP, COINGECKO_SUPPORTED_CURRENCIES, CONTRACT_TYPE_ERC1155, CONTRACT_TYPE_ERC20, CONTRACT_TYPE_ERC721, CONTRACT_TYPE_ETH, CurrencyController, DEFAULT_CURRENCY, DecryptMessageController, ERC1155_INTERFACE_ID, ERC721_ENUMERABLE_INTERFACE_ID, ERC721_INTERFACE_ID, ERC721_METADATA_INTERFACE_ID, ETHERSCAN_SUPPORTED_CHAINS, EncryptionPublicKeyController, GAS_ESTIMATE_TYPES, GAS_LIMITS, GasFeeController, KeyringController, LOCALHOST, MAINNET_CHAIN_ID, MESSAGE_EVENTS, METHOD_TYPES, MessageController, MessageStatus, NetworkController, NftHandler, NftsController, NonceTracker, OLD_ERC721_LIST, OPTIMISM_MAINNET_CHAIN_ID, OPTIMISM_TESTNET_CHAIN_ID, POLYGON_AMOY_CHAIN_ID, POLYGON_CHAIN_ID, PendingTransactionTracker, PersonalMessageController, PollingBlockTracker, PreferencesController, SEPOLIA_CHAIN_ID, SIMPLEHASH_SUPPORTED_CHAINS, SUPPORTED_NETWORKS, SwitchChainController, TEST_CHAINS, TRANSACTION_ENVELOPE_TYPES, TokenHandler, TokenRatesController, TokensController, TransactionController, TransactionGasUtil, TransactionStateManager, TypedMessageController, XDAI_CHAIN_ID, addCurrencies, addEtherscanTransactions, bnLessThan, conversionGTE, conversionGreaterThan, conversionLTE, conversionLessThan, conversionMax, conversionUtil, createChainIdMiddleware, createEthereumMiddleware, createGetAccountsMiddleware, createJsonRpcClient, createPendingNonceMiddleware, createPendingTxMiddleware, createProcessAddEthereumChain, createProcessDecryptMessageMiddleware, createProcessEncryptionPublicKeyMiddleware, createProcessEthSignMessage, createProcessPersonalMessage, createProcessSwitchEthereumChain, createProcessTransactionMiddleware, createProcessTypedMessage, createProcessTypedMessageV3, createProcessTypedMessageV4, createProviderConfigMiddleware, createRequestAccountsMiddleware, decGWEIToHexWEI, determineTransactionType, ensureFieldIsString, ensureMutuallyExclusiveFieldsNotProvided, erc1155Abi, erc20Abi, erc721Abi, formatDate, formatPastTx, formatTime, formatTxMetaForRpcResult, generateHistoryEntry, getBigNumber, getChainType, getEthTxStatus, getEtherScanHashLink, getFinalStates, getIpfsEndpoint, hexWEIToDecGWEI, idleTimeTracker, isAddressByChainId, isEIP1559Transaction, isLegacyTransaction, multiplyCurrencies, normalizeAndValidateTxParams, normalizeMessageData, normalizeTxParameters, parseDecryptMessageData, parseStandardTokenTransactionData, readAddressAsContract, replayHistory, sanitizeNftMetdataUrl, singleBalanceCheckerAbi, snapshotFromTxMeta, subtractCurrencies, toChecksumAddressByChainId, toNegative, transactionMatchesNetwork, validateAddChainData, validateAddress, validateDecryptedMessageData, validateEncryptionPublicKeyMessageData, validateFrom, validateRecipient, validateSignMessageData, validateSwitchChainData, validateTxParameters, validateTypedSignMessageDataV1, validateTypedSignMessageDataV3V4 };
6315
+ export { ARBITRUM_MAINNET_CHAIN_ID, ARBITRUM_TESTNET_CHAIN_ID, AVALANCHE_MAINNET_CHAIN_ID, AVALANCHE_TESTNET_CHAIN_ID, AccountTrackerController, AddChainController, BASE_CHAIN_ID, BASE_TESTNET_CHAIN_ID, BNToHex, BSC_MAINNET_CHAIN_ID, BSC_TESTNET_CHAIN_ID, CELO_MAINNET_CHAIN_ID, CHAIN_ID_TO_GAS_LIMIT_BUFFER_MAP, COINGECKO_PLATFORMS_CHAIN_CODE_MAP, COINGECKO_SUPPORTED_CURRENCIES, CONTRACT_TYPE_ERC1155, CONTRACT_TYPE_ERC20, CONTRACT_TYPE_ERC721, CONTRACT_TYPE_ETH, CurrencyController, DEFAULT_CURRENCY, DecryptMessageController, ERC1155_INTERFACE_ID, ERC721_ENUMERABLE_INTERFACE_ID, ERC721_INTERFACE_ID, ERC721_METADATA_INTERFACE_ID, ETHERSCAN_SUPPORTED_CHAINS, EncryptionPublicKeyController, GAS_ESTIMATE_TYPES, GAS_LIMITS, GasFeeController, KeyringController, LOCALHOST, MAINNET_CHAIN_ID, MESSAGE_EVENTS, METHOD_TYPES, MessageController, MessageStatus, NetworkController, NftHandler, NftsController, NonceTracker, OLD_ERC721_LIST, OPTIMISM_MAINNET_CHAIN_ID, OPTIMISM_TESTNET_CHAIN_ID, POLYGON_AMOY_CHAIN_ID, POLYGON_CHAIN_ID, PendingTransactionTracker, PersonalMessageController, PollingBlockTracker, PreferencesController, SEPOLIA_CHAIN_ID, SIMPLEHASH_SUPPORTED_CHAINS, SUPPORTED_NETWORKS, SwitchChainController, TEST_CHAINS, TRANSACTION_ENVELOPE_TYPES, TokenHandler, TokenRatesController, TokensController, TransactionController, TransactionGasUtil, TransactionStateManager, TypedMessageController, XDAI_CHAIN_ID, addCurrencies, addEtherscanTransactions, bnLessThan, conversionGTE, conversionGreaterThan, conversionLTE, conversionLessThan, conversionMax, conversionUtil, createChainIdMiddleware, createEthereumMiddleware, createGetAccountsMiddleware, createJsonRpcClient, createPendingNonceMiddleware, createPendingTxMiddleware, createProcessAddEthereumChain, createProcessDecryptMessageMiddleware, createProcessEncryptionPublicKeyMiddleware, createProcessEthSignMessage, createProcessPersonalMessage, createProcessSwitchEthereumChain, createProcessTransactionMiddleware, createProcessTypedMessage, createProcessTypedMessageV3, createProcessTypedMessageV4, createProviderConfigMiddleware, createRequestAccountsMiddleware, decGWEIToHexWEI, determineTransactionType, ensureFieldIsString, ensureMutuallyExclusiveFieldsNotProvided, erc1155Abi, erc20Abi, erc721Abi, formatDate, formatPastTx, formatTime, formatTxMetaForRpcResult, generateHistoryEntry, getBigNumber, getChainType, getEthTxStatus, getEtherScanHashLink, getFinalStates, getIpfsEndpoint, hexToBn, hexWEIToDecGWEI, idleTimeTracker, isAddressByChainId, isEIP1559Transaction, isLegacyTransaction, multiplyCurrencies, normalizeAndValidateTxParams, normalizeMessageData, normalizeTxParameters, parseDecryptMessageData, parseStandardTokenTransactionData, readAddressAsContract, replayHistory, sanitizeNftMetdataUrl, singleBalanceCheckerAbi, snapshotFromTxMeta, subtractCurrencies, toChecksumAddressByChainId, toNegative, transactionMatchesNetwork, validateAddChainData, validateAddress, validateDecryptedMessageData, validateEncryptionPublicKeyMessageData, validateFrom, validateRecipient, validateSignMessageData, validateSwitchChainData, validateTxParameters, validateTypedSignMessageDataV1, validateTypedSignMessageDataV3V4 };