@metamask-previews/transaction-controller 36.1.0-preview-367cb1da → 36.1.0-preview-cf09c0a
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.
- package/dist/TransactionController.cjs +2026 -0
- package/dist/TransactionController.cjs.map +1 -0
- package/dist/{types/TransactionController.d.ts → TransactionController.d.cts} +15 -15
- package/dist/TransactionController.d.cts.map +1 -0
- package/dist/TransactionController.d.mts +827 -0
- package/dist/TransactionController.d.mts.map +1 -0
- package/dist/TransactionController.mjs +2027 -44
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/constants.cjs +170 -0
- package/dist/constants.cjs.map +1 -0
- package/dist/{types/constants.d.ts → constants.d.cts} +1 -1
- package/dist/constants.d.cts.map +1 -0
- package/dist/constants.d.mts +143 -0
- package/dist/constants.d.mts.map +1 -0
- package/dist/constants.mjs +165 -18
- package/dist/constants.mjs.map +1 -1
- package/dist/errors.cjs +30 -0
- package/dist/{chunk-HMOSP33F.js.map → errors.cjs.map} +1 -1
- package/dist/{types/errors.d.ts → errors.d.cts} +2 -2
- package/dist/errors.d.cts.map +1 -0
- package/dist/errors.d.mts +15 -0
- package/dist/errors.d.mts.map +1 -0
- package/dist/errors.mjs +22 -14
- package/dist/errors.mjs.map +1 -1
- package/dist/gas-flows/DefaultGasFeeFlow.cjs +87 -0
- package/dist/gas-flows/DefaultGasFeeFlow.cjs.map +1 -0
- package/dist/{types/gas-flows/DefaultGasFeeFlow.d.ts → gas-flows/DefaultGasFeeFlow.d.cts} +2 -2
- package/dist/gas-flows/DefaultGasFeeFlow.d.cts.map +1 -0
- package/dist/gas-flows/DefaultGasFeeFlow.d.mts +10 -0
- package/dist/gas-flows/DefaultGasFeeFlow.d.mts.map +1 -0
- package/dist/gas-flows/DefaultGasFeeFlow.mjs +81 -13
- package/dist/gas-flows/DefaultGasFeeFlow.mjs.map +1 -1
- package/dist/gas-flows/LineaGasFeeFlow.cjs +102 -0
- package/dist/gas-flows/LineaGasFeeFlow.cjs.map +1 -0
- package/dist/{types/gas-flows/LineaGasFeeFlow.d.ts → gas-flows/LineaGasFeeFlow.d.cts} +2 -2
- package/dist/gas-flows/LineaGasFeeFlow.d.cts.map +1 -0
- package/dist/gas-flows/LineaGasFeeFlow.d.mts +12 -0
- package/dist/gas-flows/LineaGasFeeFlow.d.mts.map +1 -0
- package/dist/gas-flows/LineaGasFeeFlow.mjs +96 -14
- package/dist/gas-flows/LineaGasFeeFlow.mjs.map +1 -1
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs +29 -0
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs.map +1 -0
- package/dist/{types/gas-flows/OptimismLayer1GasFeeFlow.d.ts → gas-flows/OptimismLayer1GasFeeFlow.d.cts} +3 -3
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.cts.map +1 -0
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts +10 -0
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts.map +1 -0
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs +24 -10
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs.map +1 -1
- package/dist/gas-flows/OracleLayer1GasFeeFlow.cjs +92 -0
- package/dist/gas-flows/OracleLayer1GasFeeFlow.cjs.map +1 -0
- package/dist/{types/gas-flows/OracleLayer1GasFeeFlow.d.ts → gas-flows/OracleLayer1GasFeeFlow.d.cts} +3 -3
- package/dist/gas-flows/OracleLayer1GasFeeFlow.d.cts.map +1 -0
- package/dist/gas-flows/OracleLayer1GasFeeFlow.d.mts +12 -0
- package/dist/gas-flows/OracleLayer1GasFeeFlow.d.mts.map +1 -0
- package/dist/gas-flows/OracleLayer1GasFeeFlow.mjs +88 -7
- package/dist/gas-flows/OracleLayer1GasFeeFlow.mjs.map +1 -1
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs +21 -0
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs.map +1 -0
- package/dist/{types/gas-flows/ScrollLayer1GasFeeFlow.d.ts → gas-flows/ScrollLayer1GasFeeFlow.d.cts} +3 -3
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.cts.map +1 -0
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts +10 -0
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts.map +1 -0
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.mjs +16 -10
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.mjs.map +1 -1
- package/dist/gas-flows/TestGasFeeFlow.cjs +73 -0
- package/dist/{chunk-FMRLPVFZ.mjs.map → gas-flows/TestGasFeeFlow.cjs.map} +1 -1
- package/dist/{types/gas-flows/TestGasFeeFlow.d.ts → gas-flows/TestGasFeeFlow.d.cts} +2 -2
- package/dist/gas-flows/TestGasFeeFlow.d.cts.map +1 -0
- package/dist/gas-flows/TestGasFeeFlow.d.mts +12 -0
- package/dist/gas-flows/TestGasFeeFlow.d.mts.map +1 -0
- package/dist/gas-flows/TestGasFeeFlow.mjs +67 -7
- package/dist/gas-flows/TestGasFeeFlow.mjs.map +1 -1
- package/dist/helpers/EtherscanRemoteTransactionSource.cjs +149 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.cjs.map +1 -0
- package/dist/{types/helpers/EtherscanRemoteTransactionSource.d.ts → helpers/EtherscanRemoteTransactionSource.d.cts} +3 -3
- package/dist/helpers/EtherscanRemoteTransactionSource.d.cts.map +1 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.d.mts +15 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.d.mts.map +1 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.mjs +147 -10
- package/dist/helpers/EtherscanRemoteTransactionSource.mjs.map +1 -1
- package/dist/helpers/GasFeePoller.cjs +185 -0
- package/dist/helpers/GasFeePoller.cjs.map +1 -0
- package/dist/{types/helpers/GasFeePoller.d.ts → helpers/GasFeePoller.d.cts} +7 -7
- package/dist/helpers/GasFeePoller.d.cts.map +1 -0
- package/dist/helpers/GasFeePoller.d.mts +35 -0
- package/dist/helpers/GasFeePoller.d.mts.map +1 -0
- package/dist/helpers/GasFeePoller.mjs +183 -10
- package/dist/helpers/GasFeePoller.mjs.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.cjs +199 -0
- package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -0
- package/dist/{types/helpers/IncomingTransactionHelper.d.ts → helpers/IncomingTransactionHelper.d.cts} +6 -6
- package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -0
- package/dist/helpers/IncomingTransactionHelper.d.mts +40 -0
- package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -0
- package/dist/helpers/IncomingTransactionHelper.mjs +190 -7
- package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.cjs +284 -0
- package/dist/helpers/MultichainTrackingHelper.cjs.map +1 -0
- package/dist/{types/helpers/MultichainTrackingHelper.d.ts → helpers/MultichainTrackingHelper.d.cts} +8 -8
- package/dist/helpers/MultichainTrackingHelper.d.cts.map +1 -0
- package/dist/helpers/MultichainTrackingHelper.d.mts +76 -0
- package/dist/helpers/MultichainTrackingHelper.d.mts.map +1 -0
- package/dist/helpers/MultichainTrackingHelper.mjs +282 -11
- package/dist/helpers/MultichainTrackingHelper.mjs.map +1 -1
- package/dist/helpers/PendingTransactionTracker.cjs +328 -0
- package/dist/helpers/PendingTransactionTracker.cjs.map +1 -0
- package/dist/{types/helpers/PendingTransactionTracker.d.ts → helpers/PendingTransactionTracker.d.cts} +5 -5
- package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -0
- package/dist/helpers/PendingTransactionTracker.d.mts +42 -0
- package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -0
- package/dist/helpers/PendingTransactionTracker.mjs +320 -8
- package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
- package/dist/index.cjs +28 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{types/index.d.ts → index.d.cts} +10 -10
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +10 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +6 -76
- package/dist/index.mjs.map +1 -1
- package/dist/logger.cjs +9 -0
- package/dist/logger.cjs.map +1 -0
- package/dist/{types/logger.d.ts → logger.d.cts} +2 -2
- package/dist/logger.d.cts.map +1 -0
- package/dist/logger.d.mts +6 -0
- package/dist/logger.d.mts.map +1 -0
- package/dist/logger.mjs +5 -11
- package/dist/logger.mjs.map +1 -1
- package/dist/types.cjs +308 -0
- package/dist/types.cjs.map +1 -0
- package/dist/{types/types.d.ts → types.d.cts} +7 -7
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +999 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +304 -23
- package/dist/types.mjs.map +1 -1
- package/dist/utils/etherscan.cjs +111 -0
- package/dist/utils/etherscan.cjs.map +1 -0
- package/dist/{types/utils/etherscan.d.ts → utils/etherscan.d.cts} +2 -2
- package/dist/utils/etherscan.d.cts.map +1 -0
- package/dist/utils/etherscan.d.mts +71 -0
- package/dist/utils/etherscan.d.mts.map +1 -0
- package/dist/utils/etherscan.mjs +104 -13
- package/dist/utils/etherscan.mjs.map +1 -1
- package/dist/utils/external-transactions.cjs +36 -0
- package/dist/utils/external-transactions.cjs.map +1 -0
- package/dist/{types/utils/external-transactions.d.ts → utils/external-transactions.d.cts} +2 -2
- package/dist/utils/external-transactions.d.cts.map +1 -0
- package/dist/utils/external-transactions.d.mts +10 -0
- package/dist/utils/external-transactions.d.mts.map +1 -0
- package/dist/utils/external-transactions.mjs +31 -8
- package/dist/utils/external-transactions.mjs.map +1 -1
- package/dist/utils/gas-fees.cjs +208 -0
- package/dist/utils/gas-fees.cjs.map +1 -0
- package/dist/{types/utils/gas-fees.d.ts → utils/gas-fees.d.cts} +5 -5
- package/dist/utils/gas-fees.d.cts.map +1 -0
- package/dist/utils/gas-fees.d.mts +26 -0
- package/dist/utils/gas-fees.d.mts.map +1 -0
- package/dist/utils/gas-fees.mjs +202 -15
- package/dist/utils/gas-fees.mjs.map +1 -1
- package/dist/utils/gas-flow.cjs +76 -0
- package/dist/utils/gas-flow.cjs.map +1 -0
- package/dist/{types/utils/gas-flow.d.ts → utils/gas-flow.d.cts} +5 -5
- package/dist/utils/gas-flow.d.cts.map +1 -0
- package/dist/utils/gas-flow.d.mts +26 -0
- package/dist/utils/gas-flow.d.mts.map +1 -0
- package/dist/utils/gas-flow.mjs +70 -10
- package/dist/utils/gas-flow.mjs.map +1 -1
- package/dist/utils/gas.cjs +112 -0
- package/dist/utils/gas.cjs.map +1 -0
- package/dist/{types/utils/gas.d.ts → utils/gas.d.cts} +4 -4
- package/dist/utils/gas.d.cts.map +1 -0
- package/dist/utils/gas.d.mts +28 -0
- package/dist/utils/gas.d.mts.map +1 -0
- package/dist/utils/gas.mjs +105 -19
- package/dist/utils/gas.mjs.map +1 -1
- package/dist/utils/history.cjs +164 -0
- package/dist/utils/history.cjs.map +1 -0
- package/dist/{types/utils/history.d.ts → utils/history.d.cts} +2 -2
- package/dist/utils/history.d.cts.map +1 -0
- package/dist/utils/history.d.mts +29 -0
- package/dist/utils/history.d.mts.map +1 -0
- package/dist/utils/history.mjs +163 -13
- package/dist/utils/history.mjs.map +1 -1
- package/dist/utils/layer1-gas-fee-flow.cjs +59 -0
- package/dist/utils/layer1-gas-fee-flow.cjs.map +1 -0
- package/dist/{types/utils/layer1-gas-fee-flow.d.ts → utils/layer1-gas-fee-flow.d.cts} +4 -4
- package/dist/utils/layer1-gas-fee-flow.d.cts.map +1 -0
- package/dist/utils/layer1-gas-fee-flow.d.mts +25 -0
- package/dist/utils/layer1-gas-fee-flow.d.mts.map +1 -0
- package/dist/utils/layer1-gas-fee-flow.mjs +53 -10
- package/dist/utils/layer1-gas-fee-flow.mjs.map +1 -1
- package/dist/utils/nonce.cjs +66 -0
- package/dist/utils/nonce.cjs.map +1 -0
- package/dist/{types/utils/nonce.d.ts → utils/nonce.d.cts} +3 -3
- package/dist/utils/nonce.d.cts.map +1 -0
- package/dist/utils/nonce.d.mts +21 -0
- package/dist/utils/nonce.d.mts.map +1 -0
- package/dist/utils/nonce.mjs +60 -10
- package/dist/utils/nonce.mjs.map +1 -1
- package/dist/utils/retry.cjs +89 -0
- package/dist/utils/retry.cjs.map +1 -0
- package/dist/{types/utils/retry.d.ts → utils/retry.d.cts} +3 -3
- package/dist/utils/retry.d.cts.map +1 -0
- package/dist/utils/retry.d.mts +11 -0
- package/dist/utils/retry.d.mts.map +1 -0
- package/dist/utils/retry.mjs +84 -7
- package/dist/utils/retry.mjs.map +1 -1
- package/dist/utils/simulation-api.cjs +72 -0
- package/dist/utils/simulation-api.cjs.map +1 -0
- package/dist/{types/utils/simulation-api.d.ts → utils/simulation-api.d.cts} +2 -2
- package/dist/utils/simulation-api.d.cts.map +1 -0
- package/dist/utils/simulation-api.d.mts +107 -0
- package/dist/utils/simulation-api.d.mts.map +1 -0
- package/dist/utils/simulation-api.mjs +67 -10
- package/dist/utils/simulation-api.mjs.map +1 -1
- package/dist/utils/simulation.cjs +443 -0
- package/dist/utils/simulation.cjs.map +1 -0
- package/dist/{types/utils/simulation.d.ts → utils/simulation.d.cts} +6 -6
- package/dist/utils/simulation.d.cts.map +1 -0
- package/dist/utils/simulation.d.mts +46 -0
- package/dist/utils/simulation.d.mts.map +1 -0
- package/dist/utils/simulation.mjs +436 -15
- package/dist/utils/simulation.mjs.map +1 -1
- package/dist/utils/swaps.cjs +309 -0
- package/dist/utils/swaps.cjs.map +1 -0
- package/dist/{types/utils/swaps.d.ts → utils/swaps.d.cts} +5 -5
- package/dist/utils/swaps.d.cts.map +1 -0
- package/dist/utils/swaps.d.mts +84 -0
- package/dist/utils/swaps.d.mts.map +1 -0
- package/dist/utils/swaps.mjs +303 -22
- package/dist/utils/swaps.mjs.map +1 -1
- package/dist/utils/transaction-type.cjs +115 -0
- package/dist/utils/transaction-type.cjs.map +1 -0
- package/dist/{types/utils/transaction-type.d.ts → utils/transaction-type.d.cts} +3 -3
- package/dist/utils/transaction-type.d.cts.map +1 -0
- package/dist/utils/transaction-type.d.mts +14 -0
- package/dist/utils/transaction-type.d.mts.map +1 -0
- package/dist/utils/transaction-type.mjs +110 -10
- package/dist/utils/transaction-type.mjs.map +1 -1
- package/dist/utils/utils.cjs +151 -0
- package/dist/utils/utils.cjs.map +1 -0
- package/dist/{types/utils/utils.d.ts → utils/utils.d.cts} +2 -2
- package/dist/utils/utils.d.cts.map +1 -0
- package/dist/utils/utils.d.mts +52 -0
- package/dist/utils/utils.d.mts.map +1 -0
- package/dist/utils/utils.mjs +139 -21
- package/dist/utils/utils.mjs.map +1 -1
- package/dist/utils/validation.cjs +267 -0
- package/dist/{chunk-DIPBZJ5G.js.map → utils/validation.cjs.map} +1 -1
- package/dist/{types/utils/validation.d.ts → utils/validation.d.cts} +2 -2
- package/dist/utils/validation.d.cts.map +1 -0
- package/dist/utils/validation.d.mts +20 -0
- package/dist/utils/validation.d.mts.map +1 -0
- package/dist/utils/validation.mjs +261 -11
- package/dist/utils/validation.mjs.map +1 -1
- package/package.json +12 -7
- package/dist/TransactionController.js +0 -46
- package/dist/TransactionController.js.map +0 -1
- package/dist/chunk-2XKEAKQG.js +0 -55
- package/dist/chunk-2XKEAKQG.js.map +0 -1
- package/dist/chunk-3AVRGHUO.mjs +0 -360
- package/dist/chunk-3AVRGHUO.mjs.map +0 -1
- package/dist/chunk-3ZV5YEUV.mjs +0 -239
- package/dist/chunk-3ZV5YEUV.mjs.map +0 -1
- package/dist/chunk-4SYKJQLR.js +0 -228
- package/dist/chunk-4SYKJQLR.js.map +0 -1
- package/dist/chunk-4V4XIPCI.mjs +0 -338
- package/dist/chunk-4V4XIPCI.mjs.map +0 -1
- package/dist/chunk-4ZOE2ACZ.js +0 -67
- package/dist/chunk-4ZOE2ACZ.js.map +0 -1
- package/dist/chunk-5G6OHAXI.mjs +0 -137
- package/dist/chunk-5G6OHAXI.mjs.map +0 -1
- package/dist/chunk-5QVDIVJH.js +0 -68
- package/dist/chunk-5QVDIVJH.js.map +0 -1
- package/dist/chunk-6DDVVUJC.mjs +0 -50
- package/dist/chunk-6DDVVUJC.mjs.map +0 -1
- package/dist/chunk-6DODV6OV.js +0 -390
- package/dist/chunk-6DODV6OV.js.map +0 -1
- package/dist/chunk-6JO6EU6Z.mjs +0 -67
- package/dist/chunk-6JO6EU6Z.mjs.map +0 -1
- package/dist/chunk-6OLJWLKK.js +0 -338
- package/dist/chunk-6OLJWLKK.js.map +0 -1
- package/dist/chunk-7LXE4KHV.js +0 -40
- package/dist/chunk-7LXE4KHV.js.map +0 -1
- package/dist/chunk-7M2R5AHC.mjs +0 -390
- package/dist/chunk-7M2R5AHC.mjs.map +0 -1
- package/dist/chunk-7NMV2NPM.js +0 -172
- package/dist/chunk-7NMV2NPM.js.map +0 -1
- package/dist/chunk-ASTXVFGJ.mjs +0 -92
- package/dist/chunk-ASTXVFGJ.mjs.map +0 -1
- package/dist/chunk-CKRPGICI.js +0 -2499
- package/dist/chunk-CKRPGICI.js.map +0 -1
- package/dist/chunk-DIPBZJ5G.js +0 -201
- package/dist/chunk-EGQCE3FK.mjs +0 -85
- package/dist/chunk-EGQCE3FK.mjs.map +0 -1
- package/dist/chunk-EHIRNR33.mjs +0 -228
- package/dist/chunk-EHIRNR33.mjs.map +0 -1
- package/dist/chunk-EKJXGERC.mjs +0 -172
- package/dist/chunk-EKJXGERC.mjs.map +0 -1
- package/dist/chunk-FG74Z3F5.mjs +0 -102
- package/dist/chunk-FG74Z3F5.mjs.map +0 -1
- package/dist/chunk-FMRLPVFZ.mjs +0 -66
- package/dist/chunk-FRKQ3Z2L.mjs +0 -40
- package/dist/chunk-FRKQ3Z2L.mjs.map +0 -1
- package/dist/chunk-H5MYUJHR.js +0 -92
- package/dist/chunk-H5MYUJHR.js.map +0 -1
- package/dist/chunk-HAW3IWCX.mjs +0 -201
- package/dist/chunk-HAW3IWCX.mjs.map +0 -1
- package/dist/chunk-HMOSP33F.js +0 -36
- package/dist/chunk-HQSNKCXI.mjs +0 -36
- package/dist/chunk-HQSNKCXI.mjs.map +0 -1
- package/dist/chunk-JIFPK37W.mjs +0 -257
- package/dist/chunk-JIFPK37W.mjs.map +0 -1
- package/dist/chunk-JOQK7A5G.mjs +0 -68
- package/dist/chunk-JOQK7A5G.mjs.map +0 -1
- package/dist/chunk-K4KOSAGM.mjs +0 -61
- package/dist/chunk-K4KOSAGM.mjs.map +0 -1
- package/dist/chunk-KG4UW4K4.mjs +0 -88
- package/dist/chunk-KG4UW4K4.mjs.map +0 -1
- package/dist/chunk-KT6UAKBB.js +0 -61
- package/dist/chunk-KT6UAKBB.js.map +0 -1
- package/dist/chunk-KTGMNUTQ.js +0 -106
- package/dist/chunk-KTGMNUTQ.js.map +0 -1
- package/dist/chunk-NNCUD3QF.js +0 -360
- package/dist/chunk-NNCUD3QF.js.map +0 -1
- package/dist/chunk-NOHEXQ7Y.mjs +0 -55
- package/dist/chunk-NOHEXQ7Y.mjs.map +0 -1
- package/dist/chunk-NYKRCWBG.js +0 -31
- package/dist/chunk-NYKRCWBG.js.map +0 -1
- package/dist/chunk-O6ZZVIFH.mjs +0 -176
- package/dist/chunk-O6ZZVIFH.mjs.map +0 -1
- package/dist/chunk-ORWR5LSG.js +0 -112
- package/dist/chunk-ORWR5LSG.js.map +0 -1
- package/dist/chunk-PRUNMTRD.js +0 -50
- package/dist/chunk-PRUNMTRD.js.map +0 -1
- package/dist/chunk-Q44JQKVP.mjs +0 -112
- package/dist/chunk-Q44JQKVP.mjs.map +0 -1
- package/dist/chunk-QKV7E5BO.js +0 -257
- package/dist/chunk-QKV7E5BO.js.map +0 -1
- package/dist/chunk-REFVF44I.mjs +0 -2499
- package/dist/chunk-REFVF44I.mjs.map +0 -1
- package/dist/chunk-RGWMNCTE.mjs +0 -121
- package/dist/chunk-RGWMNCTE.mjs.map +0 -1
- package/dist/chunk-RHDPOIS4.js +0 -239
- package/dist/chunk-RHDPOIS4.js.map +0 -1
- package/dist/chunk-S6VGOPUY.js +0 -14
- package/dist/chunk-S6VGOPUY.js.map +0 -1
- package/dist/chunk-SD6CWFDF.js +0 -88
- package/dist/chunk-SD6CWFDF.js.map +0 -1
- package/dist/chunk-SMC5Q6ZH.mjs +0 -120
- package/dist/chunk-SMC5Q6ZH.mjs.map +0 -1
- package/dist/chunk-TIE3CPF7.js +0 -120
- package/dist/chunk-TIE3CPF7.js.map +0 -1
- package/dist/chunk-TJMQEH57.js +0 -66
- package/dist/chunk-TJMQEH57.js.map +0 -1
- package/dist/chunk-UGN7PBON.js +0 -176
- package/dist/chunk-UGN7PBON.js.map +0 -1
- package/dist/chunk-UHSRHP55.mjs +0 -106
- package/dist/chunk-UHSRHP55.mjs.map +0 -1
- package/dist/chunk-UQQWZT6C.mjs +0 -14
- package/dist/chunk-UQQWZT6C.mjs.map +0 -1
- package/dist/chunk-V2OWJ7RY.mjs +0 -226
- package/dist/chunk-V2OWJ7RY.mjs.map +0 -1
- package/dist/chunk-V72C4MCR.js +0 -137
- package/dist/chunk-V72C4MCR.js.map +0 -1
- package/dist/chunk-VEVVBHP3.mjs +0 -31
- package/dist/chunk-VEVVBHP3.mjs.map +0 -1
- package/dist/chunk-WFRHYZIO.js +0 -226
- package/dist/chunk-WFRHYZIO.js.map +0 -1
- package/dist/chunk-WR5F34OW.js +0 -23
- package/dist/chunk-WR5F34OW.js.map +0 -1
- package/dist/chunk-XUI43LEZ.mjs +0 -30
- package/dist/chunk-XUI43LEZ.mjs.map +0 -1
- package/dist/chunk-XVYXRCRL.js +0 -85
- package/dist/chunk-XVYXRCRL.js.map +0 -1
- package/dist/chunk-YAFENU6Y.js +0 -121
- package/dist/chunk-YAFENU6Y.js.map +0 -1
- package/dist/chunk-YVCX6Z75.js +0 -102
- package/dist/chunk-YVCX6Z75.js.map +0 -1
- package/dist/chunk-Z4BLTVTB.js +0 -30
- package/dist/chunk-Z4BLTVTB.js.map +0 -1
- package/dist/chunk-Z4GV3YQQ.mjs +0 -23
- package/dist/chunk-Z4GV3YQQ.mjs.map +0 -1
- package/dist/constants.js +0 -20
- package/dist/constants.js.map +0 -1
- package/dist/errors.js +0 -15
- package/dist/errors.js.map +0 -1
- package/dist/gas-flows/DefaultGasFeeFlow.js +0 -15
- package/dist/gas-flows/DefaultGasFeeFlow.js.map +0 -1
- package/dist/gas-flows/LineaGasFeeFlow.js +0 -16
- package/dist/gas-flows/LineaGasFeeFlow.js.map +0 -1
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.js +0 -11
- package/dist/gas-flows/OptimismLayer1GasFeeFlow.js.map +0 -1
- package/dist/gas-flows/OracleLayer1GasFeeFlow.js +0 -9
- package/dist/gas-flows/OracleLayer1GasFeeFlow.js.map +0 -1
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.js +0 -11
- package/dist/gas-flows/ScrollLayer1GasFeeFlow.js.map +0 -1
- package/dist/gas-flows/TestGasFeeFlow.js +0 -9
- package/dist/gas-flows/TestGasFeeFlow.js.map +0 -1
- package/dist/helpers/EtherscanRemoteTransactionSource.js +0 -12
- package/dist/helpers/EtherscanRemoteTransactionSource.js.map +0 -1
- package/dist/helpers/GasFeePoller.js +0 -12
- package/dist/helpers/GasFeePoller.js.map +0 -1
- package/dist/helpers/IncomingTransactionHelper.js +0 -9
- package/dist/helpers/IncomingTransactionHelper.js.map +0 -1
- package/dist/helpers/MultichainTrackingHelper.js +0 -13
- package/dist/helpers/MultichainTrackingHelper.js.map +0 -1
- package/dist/helpers/PendingTransactionTracker.js +0 -10
- package/dist/helpers/PendingTransactionTracker.js.map +0 -1
- package/dist/index.js +0 -77
- package/dist/index.js.map +0 -1
- package/dist/logger.js +0 -12
- package/dist/logger.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/dist/types/TransactionController.d.ts.map +0 -1
- package/dist/types/constants.d.ts.map +0 -1
- package/dist/types/errors.d.ts.map +0 -1
- package/dist/types/gas-flows/DefaultGasFeeFlow.d.ts.map +0 -1
- package/dist/types/gas-flows/LineaGasFeeFlow.d.ts.map +0 -1
- package/dist/types/gas-flows/OptimismLayer1GasFeeFlow.d.ts.map +0 -1
- package/dist/types/gas-flows/OracleLayer1GasFeeFlow.d.ts.map +0 -1
- package/dist/types/gas-flows/ScrollLayer1GasFeeFlow.d.ts.map +0 -1
- package/dist/types/gas-flows/TestGasFeeFlow.d.ts.map +0 -1
- package/dist/types/helpers/EtherscanRemoteTransactionSource.d.ts.map +0 -1
- package/dist/types/helpers/GasFeePoller.d.ts.map +0 -1
- package/dist/types/helpers/IncomingTransactionHelper.d.ts.map +0 -1
- package/dist/types/helpers/MultichainTrackingHelper.d.ts.map +0 -1
- package/dist/types/helpers/PendingTransactionTracker.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/logger.d.ts.map +0 -1
- package/dist/types/types.d.ts.map +0 -1
- package/dist/types/utils/etherscan.d.ts.map +0 -1
- package/dist/types/utils/external-transactions.d.ts.map +0 -1
- package/dist/types/utils/gas-fees.d.ts.map +0 -1
- package/dist/types/utils/gas-flow.d.ts.map +0 -1
- package/dist/types/utils/gas.d.ts.map +0 -1
- package/dist/types/utils/history.d.ts.map +0 -1
- package/dist/types/utils/layer1-gas-fee-flow.d.ts.map +0 -1
- package/dist/types/utils/nonce.d.ts.map +0 -1
- package/dist/types/utils/retry.d.ts.map +0 -1
- package/dist/types/utils/simulation-api.d.ts.map +0 -1
- package/dist/types/utils/simulation.d.ts.map +0 -1
- package/dist/types/utils/swaps.d.ts.map +0 -1
- package/dist/types/utils/transaction-type.d.ts.map +0 -1
- package/dist/types/utils/utils.d.ts.map +0 -1
- package/dist/types/utils/validation.d.ts.map +0 -1
- package/dist/types.js +0 -24
- package/dist/types.js.map +0 -1
- package/dist/utils/etherscan.js +0 -14
- package/dist/utils/etherscan.js.map +0 -1
- package/dist/utils/external-transactions.js +0 -9
- package/dist/utils/external-transactions.js.map +0 -1
- package/dist/utils/gas-fees.js +0 -16
- package/dist/utils/gas-fees.js.map +0 -1
- package/dist/utils/gas-flow.js +0 -11
- package/dist/utils/gas-flow.js.map +0 -1
- package/dist/utils/gas.js +0 -20
- package/dist/utils/gas.js.map +0 -1
- package/dist/utils/history.js +0 -14
- package/dist/utils/history.js.map +0 -1
- package/dist/utils/layer1-gas-fee-flow.js +0 -11
- package/dist/utils/layer1-gas-fee-flow.js.map +0 -1
- package/dist/utils/nonce.js +0 -11
- package/dist/utils/nonce.js.map +0 -1
- package/dist/utils/retry.js +0 -8
- package/dist/utils/retry.js.map +0 -1
- package/dist/utils/simulation-api.js +0 -11
- package/dist/utils/simulation-api.js.map +0 -1
- package/dist/utils/simulation.js +0 -17
- package/dist/utils/simulation.js.map +0 -1
- package/dist/utils/swaps.js +0 -24
- package/dist/utils/swaps.js.map +0 -1
- package/dist/utils/transaction-type.js +0 -11
- package/dist/utils/transaction-type.js.map +0 -1
- package/dist/utils/utils.js +0 -23
- package/dist/utils/utils.js.map +0 -1
- package/dist/utils/validation.js +0 -12
- package/dist/utils/validation.js.map +0 -1
package/dist/chunk-EGQCE3FK.mjs
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ETHERSCAN_SUPPORTED_NETWORKS
|
|
3
|
-
} from "./chunk-O6ZZVIFH.mjs";
|
|
4
|
-
import {
|
|
5
|
-
incomingTransactionsLogger
|
|
6
|
-
} from "./chunk-UQQWZT6C.mjs";
|
|
7
|
-
|
|
8
|
-
// src/utils/etherscan.ts
|
|
9
|
-
import { handleFetch } from "@metamask/controller-utils";
|
|
10
|
-
async function fetchEtherscanTransactions({
|
|
11
|
-
address,
|
|
12
|
-
chainId,
|
|
13
|
-
fromBlock,
|
|
14
|
-
limit
|
|
15
|
-
}) {
|
|
16
|
-
return await fetchTransactions("txlist", {
|
|
17
|
-
address,
|
|
18
|
-
chainId,
|
|
19
|
-
fromBlock,
|
|
20
|
-
limit
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
async function fetchEtherscanTokenTransactions({
|
|
24
|
-
address,
|
|
25
|
-
chainId,
|
|
26
|
-
fromBlock,
|
|
27
|
-
limit
|
|
28
|
-
}) {
|
|
29
|
-
return await fetchTransactions("tokentx", {
|
|
30
|
-
address,
|
|
31
|
-
chainId,
|
|
32
|
-
fromBlock,
|
|
33
|
-
limit
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
async function fetchTransactions(action, {
|
|
37
|
-
address,
|
|
38
|
-
chainId,
|
|
39
|
-
fromBlock,
|
|
40
|
-
limit
|
|
41
|
-
}) {
|
|
42
|
-
const urlParams = {
|
|
43
|
-
module: "account",
|
|
44
|
-
address,
|
|
45
|
-
startBlock: fromBlock?.toString(),
|
|
46
|
-
offset: limit?.toString(),
|
|
47
|
-
sort: "desc"
|
|
48
|
-
};
|
|
49
|
-
const etherscanTxUrl = getEtherscanApiUrl(chainId, {
|
|
50
|
-
...urlParams,
|
|
51
|
-
action
|
|
52
|
-
});
|
|
53
|
-
incomingTransactionsLogger("Sending Etherscan request", etherscanTxUrl);
|
|
54
|
-
const response = await handleFetch(
|
|
55
|
-
etherscanTxUrl
|
|
56
|
-
);
|
|
57
|
-
return response;
|
|
58
|
-
}
|
|
59
|
-
function getEtherscanApiUrl(chainId, urlParams) {
|
|
60
|
-
const apiUrl = getEtherscanApiHost(chainId);
|
|
61
|
-
let url = `${apiUrl}/api?`;
|
|
62
|
-
for (const paramKey of Object.keys(urlParams)) {
|
|
63
|
-
const value = urlParams[paramKey];
|
|
64
|
-
if (!value) {
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
url += `${paramKey}=${value}&`;
|
|
68
|
-
}
|
|
69
|
-
url += "tag=latest&page=1";
|
|
70
|
-
return url;
|
|
71
|
-
}
|
|
72
|
-
function getEtherscanApiHost(chainId) {
|
|
73
|
-
const networkInfo = ETHERSCAN_SUPPORTED_NETWORKS[chainId];
|
|
74
|
-
if (!networkInfo) {
|
|
75
|
-
throw new Error(`Etherscan does not support chain with ID: ${chainId}`);
|
|
76
|
-
}
|
|
77
|
-
return `https://${networkInfo.subdomain}.${networkInfo.domain}`;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export {
|
|
81
|
-
fetchEtherscanTransactions,
|
|
82
|
-
fetchEtherscanTokenTransactions,
|
|
83
|
-
getEtherscanApiHost
|
|
84
|
-
};
|
|
85
|
-
//# sourceMappingURL=chunk-EGQCE3FK.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/etherscan.ts"],"sourcesContent":["import { handleFetch } from '@metamask/controller-utils';\nimport type { Hex } from '@metamask/utils';\n\nimport { ETHERSCAN_SUPPORTED_NETWORKS } from '../constants';\nimport { incomingTransactionsLogger as log } from '../logger';\n\n// This interface was created before this ESLint rule was added.\n// Convert to a `type` in a future major version.\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport interface EtherscanTransactionMetaBase {\n blockNumber: string;\n blockHash: string;\n confirmations: string;\n contractAddress: string;\n cumulativeGasUsed: string;\n from: string;\n gas: string;\n gasPrice: string;\n gasUsed: string;\n hash: string;\n nonce: string;\n timeStamp: string;\n to: string;\n transactionIndex: string;\n value: string;\n}\n\n// This interface was created before this ESLint rule was added.\n// Convert to a `type` in a future major version.\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport interface EtherscanTransactionMeta extends EtherscanTransactionMetaBase {\n functionName: string;\n input: string;\n isError: string;\n methodId: string;\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/naming-convention\n txreceipt_status: string;\n}\n\n// This interface was created before this ESLint rule was added.\n// Convert to a `type` in a future major version.\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport interface EtherscanTokenTransactionMeta\n extends EtherscanTransactionMetaBase {\n tokenDecimal: string;\n tokenName: string;\n tokenSymbol: string;\n}\n\n// This interface was created before this ESLint rule was added.\n// Convert to a `type` in a future major version.\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport interface EtherscanTransactionResponse<\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/naming-convention\n T extends EtherscanTransactionMetaBase,\n> {\n status: '0' | '1';\n message?: string;\n result: string | T[];\n}\n\n// This interface was created before this ESLint rule was added.\n// Convert to a `type` in a future major version.\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\nexport interface EtherscanTransactionRequest {\n address: string;\n chainId: Hex;\n fromBlock?: number;\n limit?: number;\n}\n\n/**\n * Retrieves transaction data from Etherscan.\n *\n * @param request - Configuration required to fetch transactions.\n * @param request.address - Address to retrieve transactions for.\n * @param request.chainId - Current chain ID used to determine subdomain and domain.\n * @param request.fromBlock - Block number to start fetching transactions from.\n * @param request.limit - Number of transactions to retrieve.\n * @returns An Etherscan response object containing the request status and an array of token transaction data.\n */\nexport async function fetchEtherscanTransactions({\n address,\n chainId,\n fromBlock,\n limit,\n}: EtherscanTransactionRequest): Promise<\n EtherscanTransactionResponse<EtherscanTransactionMeta>\n> {\n return await fetchTransactions('txlist', {\n address,\n chainId,\n fromBlock,\n limit,\n });\n}\n\n/**\n * Retrieves token transaction data from Etherscan.\n *\n * @param request - Configuration required to fetch token transactions.\n * @param request.address - Address to retrieve token transactions for.\n * @param request.chainId - Current chain ID used to determine subdomain and domain.\n * @param request.fromBlock - Block number to start fetching token transactions from.\n * @param request.limit - Number of token transactions to retrieve.\n * @returns An Etherscan response object containing the request status and an array of token transaction data.\n */\nexport async function fetchEtherscanTokenTransactions({\n address,\n chainId,\n fromBlock,\n limit,\n}: EtherscanTransactionRequest): Promise<\n EtherscanTransactionResponse<EtherscanTokenTransactionMeta>\n> {\n return await fetchTransactions('tokentx', {\n address,\n chainId,\n fromBlock,\n limit,\n });\n}\n\n/**\n * Retrieves transaction data from Etherscan from a specific endpoint.\n *\n * @param action - The Etherscan endpoint to use.\n * @param options - Options bag.\n * @param options.address - Address to retrieve transactions for.\n * @param options.chainId - Current chain ID used to determine subdomain and domain.\n * @param options.fromBlock - Block number to start fetching transactions from.\n * @param options.limit - Number of transactions to retrieve.\n * @returns An object containing the request status and an array of transaction data.\n */\n// TODO: Either fix this lint violation or explain why it's necessary to ignore.\n// eslint-disable-next-line @typescript-eslint/naming-convention\nasync function fetchTransactions<T extends EtherscanTransactionMetaBase>(\n action: string,\n {\n address,\n chainId,\n fromBlock,\n limit,\n }: {\n address: string;\n chainId: Hex;\n fromBlock?: number;\n limit?: number;\n },\n): Promise<EtherscanTransactionResponse<T>> {\n const urlParams = {\n module: 'account',\n address,\n startBlock: fromBlock?.toString(),\n offset: limit?.toString(),\n sort: 'desc',\n };\n\n const etherscanTxUrl = getEtherscanApiUrl(chainId, {\n ...urlParams,\n action,\n });\n\n log('Sending Etherscan request', etherscanTxUrl);\n\n const response = (await handleFetch(\n etherscanTxUrl,\n )) as EtherscanTransactionResponse<T>;\n\n return response;\n}\n\n/**\n * Return a URL that can be used to fetch data from Etherscan.\n *\n * @param chainId - Current chain ID used to determine subdomain and domain.\n * @param urlParams - The parameters used to construct the URL.\n * @returns URL to access Etherscan data.\n */\nfunction getEtherscanApiUrl(\n chainId: Hex,\n urlParams: Record<string, string | undefined>,\n): string {\n const apiUrl = getEtherscanApiHost(chainId);\n let url = `${apiUrl}/api?`;\n\n for (const paramKey of Object.keys(urlParams)) {\n const value = urlParams[paramKey];\n\n if (!value) {\n continue;\n }\n\n url += `${paramKey}=${value}&`;\n }\n\n url += 'tag=latest&page=1';\n\n return url;\n}\n\n/**\n * Return the host url used to fetch data from Etherscan.\n *\n * @param chainId - Current chain ID used to determine subdomain and domain.\n * @returns host URL to access Etherscan data.\n */\nexport function getEtherscanApiHost(chainId: Hex) {\n // @ts-expect-error We account for `chainId` not being a property below\n const networkInfo = ETHERSCAN_SUPPORTED_NETWORKS[chainId];\n\n if (!networkInfo) {\n throw new Error(`Etherscan does not support chain with ID: ${chainId}`);\n }\n\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n return `https://${networkInfo.subdomain}.${networkInfo.domain}`;\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,mBAAmB;AAmF5B,eAAsB,2BAA2B;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEE;AACA,SAAO,MAAM,kBAAkB,UAAU;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAYA,eAAsB,gCAAgC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEE;AACA,SAAO,MAAM,kBAAkB,WAAW;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAeA,eAAe,kBACb,QACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAM0C;AAC1C,QAAM,YAAY;AAAA,IAChB,QAAQ;AAAA,IACR;AAAA,IACA,YAAY,WAAW,SAAS;AAAA,IAChC,QAAQ,OAAO,SAAS;AAAA,IACxB,MAAM;AAAA,EACR;AAEA,QAAM,iBAAiB,mBAAmB,SAAS;AAAA,IACjD,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AAED,6BAAI,6BAA6B,cAAc;AAE/C,QAAM,WAAY,MAAM;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AACT;AASA,SAAS,mBACP,SACA,WACQ;AACR,QAAM,SAAS,oBAAoB,OAAO;AAC1C,MAAI,MAAM,GAAG,MAAM;AAEnB,aAAW,YAAY,OAAO,KAAK,SAAS,GAAG;AAC7C,UAAM,QAAQ,UAAU,QAAQ;AAEhC,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AAEA,WAAO,GAAG,QAAQ,IAAI,KAAK;AAAA,EAC7B;AAEA,SAAO;AAEP,SAAO;AACT;AAQO,SAAS,oBAAoB,SAAc;AAEhD,QAAM,cAAc,6BAA6B,OAAO;AAExD,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,6CAA6C,OAAO,EAAE;AAAA,EACxE;AAIA,SAAO,WAAW,YAAY,SAAS,IAAI,YAAY,MAAM;AAC/D;","names":[]}
|
package/dist/chunk-EHIRNR33.mjs
DELETED
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getTransactionLayer1GasFee
|
|
3
|
-
} from "./chunk-NOHEXQ7Y.mjs";
|
|
4
|
-
import {
|
|
5
|
-
getGasFeeFlow
|
|
6
|
-
} from "./chunk-6JO6EU6Z.mjs";
|
|
7
|
-
import {
|
|
8
|
-
projectLogger
|
|
9
|
-
} from "./chunk-UQQWZT6C.mjs";
|
|
10
|
-
import {
|
|
11
|
-
__privateAdd,
|
|
12
|
-
__privateGet,
|
|
13
|
-
__privateMethod,
|
|
14
|
-
__privateSet
|
|
15
|
-
} from "./chunk-XUI43LEZ.mjs";
|
|
16
|
-
|
|
17
|
-
// src/helpers/GasFeePoller.ts
|
|
18
|
-
import EthQuery from "@metamask/eth-query";
|
|
19
|
-
import { createModuleLogger } from "@metamask/utils";
|
|
20
|
-
import EventEmitter from "events";
|
|
21
|
-
var log = createModuleLogger(projectLogger, "gas-fee-poller");
|
|
22
|
-
var INTERVAL_MILLISECONDS = 1e4;
|
|
23
|
-
var _findNetworkClientIdByChainId, _gasFeeFlows, _getGasFeeControllerEstimates, _getProvider, _getTransactions, _layer1GasFeeFlows, _timeout, _running, _start, start_fn, _stop, stop_fn, _onTimeout, onTimeout_fn, _updateUnapprovedTransactions, updateUnapprovedTransactions_fn, _updateUnapprovedTransaction, updateUnapprovedTransaction_fn, _updateTransactionGasFeeEstimates, updateTransactionGasFeeEstimates_fn, _updateTransactionLayer1GasFee, updateTransactionLayer1GasFee_fn, _getUnapprovedTransactions, getUnapprovedTransactions_fn, _getGasFeeControllerData, getGasFeeControllerData_fn;
|
|
24
|
-
var GasFeePoller = class {
|
|
25
|
-
/**
|
|
26
|
-
* Constructs a new instance of the GasFeePoller.
|
|
27
|
-
* @param options - The options for this instance.
|
|
28
|
-
* @param options.findNetworkClientIdByChainId - Callback to find the network client ID by chain ID.
|
|
29
|
-
* @param options.gasFeeFlows - The gas fee flows to use to obtain suitable gas fees.
|
|
30
|
-
* @param options.getGasFeeControllerEstimates - Callback to obtain the default fee estimates.
|
|
31
|
-
* @param options.getProvider - Callback to obtain a provider instance.
|
|
32
|
-
* @param options.getTransactions - Callback to obtain the transaction data.
|
|
33
|
-
* @param options.layer1GasFeeFlows - The layer 1 gas fee flows to use to obtain suitable layer 1 gas fees.
|
|
34
|
-
* @param options.onStateChange - Callback to register a listener for controller state changes.
|
|
35
|
-
*/
|
|
36
|
-
constructor({
|
|
37
|
-
findNetworkClientIdByChainId,
|
|
38
|
-
gasFeeFlows,
|
|
39
|
-
getGasFeeControllerEstimates,
|
|
40
|
-
getProvider,
|
|
41
|
-
getTransactions,
|
|
42
|
-
layer1GasFeeFlows,
|
|
43
|
-
onStateChange
|
|
44
|
-
}) {
|
|
45
|
-
__privateAdd(this, _start);
|
|
46
|
-
__privateAdd(this, _stop);
|
|
47
|
-
__privateAdd(this, _onTimeout);
|
|
48
|
-
__privateAdd(this, _updateUnapprovedTransactions);
|
|
49
|
-
__privateAdd(this, _updateUnapprovedTransaction);
|
|
50
|
-
__privateAdd(this, _updateTransactionGasFeeEstimates);
|
|
51
|
-
__privateAdd(this, _updateTransactionLayer1GasFee);
|
|
52
|
-
__privateAdd(this, _getUnapprovedTransactions);
|
|
53
|
-
__privateAdd(this, _getGasFeeControllerData);
|
|
54
|
-
this.hub = new EventEmitter();
|
|
55
|
-
__privateAdd(this, _findNetworkClientIdByChainId, void 0);
|
|
56
|
-
__privateAdd(this, _gasFeeFlows, void 0);
|
|
57
|
-
__privateAdd(this, _getGasFeeControllerEstimates, void 0);
|
|
58
|
-
__privateAdd(this, _getProvider, void 0);
|
|
59
|
-
__privateAdd(this, _getTransactions, void 0);
|
|
60
|
-
__privateAdd(this, _layer1GasFeeFlows, void 0);
|
|
61
|
-
__privateAdd(this, _timeout, void 0);
|
|
62
|
-
__privateAdd(this, _running, false);
|
|
63
|
-
__privateSet(this, _findNetworkClientIdByChainId, findNetworkClientIdByChainId);
|
|
64
|
-
__privateSet(this, _gasFeeFlows, gasFeeFlows);
|
|
65
|
-
__privateSet(this, _layer1GasFeeFlows, layer1GasFeeFlows);
|
|
66
|
-
__privateSet(this, _getGasFeeControllerEstimates, getGasFeeControllerEstimates);
|
|
67
|
-
__privateSet(this, _getProvider, getProvider);
|
|
68
|
-
__privateSet(this, _getTransactions, getTransactions);
|
|
69
|
-
onStateChange(() => {
|
|
70
|
-
const unapprovedTransactions = __privateMethod(this, _getUnapprovedTransactions, getUnapprovedTransactions_fn).call(this);
|
|
71
|
-
if (unapprovedTransactions.length) {
|
|
72
|
-
__privateMethod(this, _start, start_fn).call(this);
|
|
73
|
-
} else {
|
|
74
|
-
__privateMethod(this, _stop, stop_fn).call(this);
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
_findNetworkClientIdByChainId = new WeakMap();
|
|
80
|
-
_gasFeeFlows = new WeakMap();
|
|
81
|
-
_getGasFeeControllerEstimates = new WeakMap();
|
|
82
|
-
_getProvider = new WeakMap();
|
|
83
|
-
_getTransactions = new WeakMap();
|
|
84
|
-
_layer1GasFeeFlows = new WeakMap();
|
|
85
|
-
_timeout = new WeakMap();
|
|
86
|
-
_running = new WeakMap();
|
|
87
|
-
_start = new WeakSet();
|
|
88
|
-
start_fn = function() {
|
|
89
|
-
if (__privateGet(this, _running)) {
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
__privateMethod(this, _onTimeout, onTimeout_fn).call(this);
|
|
93
|
-
__privateSet(this, _running, true);
|
|
94
|
-
log("Started polling");
|
|
95
|
-
};
|
|
96
|
-
_stop = new WeakSet();
|
|
97
|
-
stop_fn = function() {
|
|
98
|
-
if (!__privateGet(this, _running)) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
clearTimeout(__privateGet(this, _timeout));
|
|
102
|
-
__privateSet(this, _timeout, void 0);
|
|
103
|
-
__privateSet(this, _running, false);
|
|
104
|
-
log("Stopped polling");
|
|
105
|
-
};
|
|
106
|
-
_onTimeout = new WeakSet();
|
|
107
|
-
onTimeout_fn = async function() {
|
|
108
|
-
await __privateMethod(this, _updateUnapprovedTransactions, updateUnapprovedTransactions_fn).call(this);
|
|
109
|
-
__privateSet(this, _timeout, setTimeout(() => __privateMethod(this, _onTimeout, onTimeout_fn).call(this), INTERVAL_MILLISECONDS));
|
|
110
|
-
};
|
|
111
|
-
_updateUnapprovedTransactions = new WeakSet();
|
|
112
|
-
updateUnapprovedTransactions_fn = async function() {
|
|
113
|
-
const unapprovedTransactions = __privateMethod(this, _getUnapprovedTransactions, getUnapprovedTransactions_fn).call(this);
|
|
114
|
-
if (!unapprovedTransactions.length) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
log("Found unapproved transactions", unapprovedTransactions.length);
|
|
118
|
-
const gasFeeControllerDataByChainId = await __privateMethod(this, _getGasFeeControllerData, getGasFeeControllerData_fn).call(this, unapprovedTransactions);
|
|
119
|
-
log("Retrieved gas fee controller data", gasFeeControllerDataByChainId);
|
|
120
|
-
await Promise.all(
|
|
121
|
-
unapprovedTransactions.flatMap((tx) => {
|
|
122
|
-
const { chainId } = tx;
|
|
123
|
-
const gasFeeControllerData = gasFeeControllerDataByChainId.get(
|
|
124
|
-
chainId
|
|
125
|
-
);
|
|
126
|
-
return __privateMethod(this, _updateUnapprovedTransaction, updateUnapprovedTransaction_fn).call(this, tx, gasFeeControllerData);
|
|
127
|
-
})
|
|
128
|
-
);
|
|
129
|
-
};
|
|
130
|
-
_updateUnapprovedTransaction = new WeakSet();
|
|
131
|
-
updateUnapprovedTransaction_fn = async function(transactionMeta, gasFeeControllerData) {
|
|
132
|
-
const { id } = transactionMeta;
|
|
133
|
-
const [gasFeeEstimatesResponse, layer1GasFee] = await Promise.all([
|
|
134
|
-
__privateMethod(this, _updateTransactionGasFeeEstimates, updateTransactionGasFeeEstimates_fn).call(this, transactionMeta, gasFeeControllerData),
|
|
135
|
-
__privateMethod(this, _updateTransactionLayer1GasFee, updateTransactionLayer1GasFee_fn).call(this, transactionMeta)
|
|
136
|
-
]);
|
|
137
|
-
if (!gasFeeEstimatesResponse && !layer1GasFee) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
this.hub.emit("transaction-updated", {
|
|
141
|
-
transactionId: id,
|
|
142
|
-
gasFeeEstimates: gasFeeEstimatesResponse?.gasFeeEstimates,
|
|
143
|
-
gasFeeEstimatesLoaded: gasFeeEstimatesResponse?.gasFeeEstimatesLoaded,
|
|
144
|
-
layer1GasFee
|
|
145
|
-
});
|
|
146
|
-
};
|
|
147
|
-
_updateTransactionGasFeeEstimates = new WeakSet();
|
|
148
|
-
updateTransactionGasFeeEstimates_fn = async function(transactionMeta, gasFeeControllerData) {
|
|
149
|
-
const { chainId, networkClientId } = transactionMeta;
|
|
150
|
-
const ethQuery = new EthQuery(__privateGet(this, _getProvider).call(this, chainId, networkClientId));
|
|
151
|
-
const gasFeeFlow = getGasFeeFlow(transactionMeta, __privateGet(this, _gasFeeFlows));
|
|
152
|
-
if (gasFeeFlow) {
|
|
153
|
-
log(
|
|
154
|
-
"Found gas fee flow",
|
|
155
|
-
gasFeeFlow.constructor.name,
|
|
156
|
-
transactionMeta.id
|
|
157
|
-
);
|
|
158
|
-
}
|
|
159
|
-
const request = {
|
|
160
|
-
ethQuery,
|
|
161
|
-
gasFeeControllerData,
|
|
162
|
-
transactionMeta
|
|
163
|
-
};
|
|
164
|
-
let gasFeeEstimates;
|
|
165
|
-
if (gasFeeFlow) {
|
|
166
|
-
try {
|
|
167
|
-
const response = await gasFeeFlow.getGasFees(request);
|
|
168
|
-
gasFeeEstimates = response.estimates;
|
|
169
|
-
} catch (error) {
|
|
170
|
-
log("Failed to get suggested gas fees", transactionMeta.id, error);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
if (!gasFeeEstimates && transactionMeta.gasFeeEstimatesLoaded) {
|
|
174
|
-
return void 0;
|
|
175
|
-
}
|
|
176
|
-
log("Updated gas fee estimates", {
|
|
177
|
-
gasFeeEstimates,
|
|
178
|
-
transaction: transactionMeta.id
|
|
179
|
-
});
|
|
180
|
-
return { gasFeeEstimates, gasFeeEstimatesLoaded: true };
|
|
181
|
-
};
|
|
182
|
-
_updateTransactionLayer1GasFee = new WeakSet();
|
|
183
|
-
updateTransactionLayer1GasFee_fn = async function(transactionMeta) {
|
|
184
|
-
const { chainId, networkClientId } = transactionMeta;
|
|
185
|
-
const provider = __privateGet(this, _getProvider).call(this, chainId, networkClientId);
|
|
186
|
-
const layer1GasFee = await getTransactionLayer1GasFee({
|
|
187
|
-
layer1GasFeeFlows: __privateGet(this, _layer1GasFeeFlows),
|
|
188
|
-
provider,
|
|
189
|
-
transactionMeta
|
|
190
|
-
});
|
|
191
|
-
if (layer1GasFee) {
|
|
192
|
-
log("Updated layer 1 gas fee", layer1GasFee, transactionMeta.id);
|
|
193
|
-
}
|
|
194
|
-
return layer1GasFee;
|
|
195
|
-
};
|
|
196
|
-
_getUnapprovedTransactions = new WeakSet();
|
|
197
|
-
getUnapprovedTransactions_fn = function() {
|
|
198
|
-
return __privateGet(this, _getTransactions).call(this).filter(
|
|
199
|
-
(tx) => tx.status === "unapproved" /* unapproved */
|
|
200
|
-
);
|
|
201
|
-
};
|
|
202
|
-
_getGasFeeControllerData = new WeakSet();
|
|
203
|
-
getGasFeeControllerData_fn = async function(transactions) {
|
|
204
|
-
const networkClientIdsByChainId = /* @__PURE__ */ new Map();
|
|
205
|
-
for (const transaction of transactions) {
|
|
206
|
-
const { chainId, networkClientId: transactionNetworkClientId } = transaction;
|
|
207
|
-
if (networkClientIdsByChainId.has(chainId)) {
|
|
208
|
-
continue;
|
|
209
|
-
}
|
|
210
|
-
const networkClientId = transactionNetworkClientId ?? __privateGet(this, _findNetworkClientIdByChainId).call(this, chainId);
|
|
211
|
-
networkClientIdsByChainId.set(chainId, networkClientId);
|
|
212
|
-
}
|
|
213
|
-
log("Extracted network client IDs by chain ID", networkClientIdsByChainId);
|
|
214
|
-
const entryPromises = Array.from(networkClientIdsByChainId.entries()).map(
|
|
215
|
-
async ([chainId, networkClientId]) => {
|
|
216
|
-
return [
|
|
217
|
-
chainId,
|
|
218
|
-
await __privateGet(this, _getGasFeeControllerEstimates).call(this, { networkClientId })
|
|
219
|
-
];
|
|
220
|
-
}
|
|
221
|
-
);
|
|
222
|
-
return new Map(await Promise.all(entryPromises));
|
|
223
|
-
};
|
|
224
|
-
|
|
225
|
-
export {
|
|
226
|
-
GasFeePoller
|
|
227
|
-
};
|
|
228
|
-
//# sourceMappingURL=chunk-EHIRNR33.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/helpers/GasFeePoller.ts"],"sourcesContent":["import EthQuery from '@metamask/eth-query';\nimport type {\n FetchGasFeeEstimateOptions,\n GasFeeState,\n} from '@metamask/gas-fee-controller';\nimport type { NetworkClientId, Provider } from '@metamask/network-controller';\nimport type { Hex } from '@metamask/utils';\nimport { createModuleLogger } from '@metamask/utils';\nimport EventEmitter from 'events';\n\nimport { projectLogger } from '../logger';\nimport type {\n GasFeeEstimates,\n GasFeeFlow,\n GasFeeFlowRequest,\n Layer1GasFeeFlow,\n} from '../types';\nimport { TransactionStatus, type TransactionMeta } from '../types';\nimport { getGasFeeFlow } from '../utils/gas-flow';\nimport { getTransactionLayer1GasFee } from '../utils/layer1-gas-fee-flow';\n\nconst log = createModuleLogger(projectLogger, 'gas-fee-poller');\n\nconst INTERVAL_MILLISECONDS = 10000;\n\n/**\n * Automatically polls and updates suggested gas fees on unapproved transactions.\n */\nexport class GasFeePoller {\n hub: EventEmitter = new EventEmitter();\n\n #findNetworkClientIdByChainId: (chainId: Hex) => NetworkClientId | undefined;\n\n #gasFeeFlows: GasFeeFlow[];\n\n #getGasFeeControllerEstimates: (\n options: FetchGasFeeEstimateOptions,\n ) => Promise<GasFeeState>;\n\n #getProvider: (chainId: Hex, networkClientId?: NetworkClientId) => Provider;\n\n #getTransactions: () => TransactionMeta[];\n\n #layer1GasFeeFlows: Layer1GasFeeFlow[];\n\n #timeout: ReturnType<typeof setTimeout> | undefined;\n\n #running = false;\n\n /**\n * Constructs a new instance of the GasFeePoller.\n * @param options - The options for this instance.\n * @param options.findNetworkClientIdByChainId - Callback to find the network client ID by chain ID.\n * @param options.gasFeeFlows - The gas fee flows to use to obtain suitable gas fees.\n * @param options.getGasFeeControllerEstimates - Callback to obtain the default fee estimates.\n * @param options.getProvider - Callback to obtain a provider instance.\n * @param options.getTransactions - Callback to obtain the transaction data.\n * @param options.layer1GasFeeFlows - The layer 1 gas fee flows to use to obtain suitable layer 1 gas fees.\n * @param options.onStateChange - Callback to register a listener for controller state changes.\n */\n constructor({\n findNetworkClientIdByChainId,\n gasFeeFlows,\n getGasFeeControllerEstimates,\n getProvider,\n getTransactions,\n layer1GasFeeFlows,\n onStateChange,\n }: {\n findNetworkClientIdByChainId: (chainId: Hex) => NetworkClientId | undefined;\n gasFeeFlows: GasFeeFlow[];\n getGasFeeControllerEstimates: (\n options: FetchGasFeeEstimateOptions,\n ) => Promise<GasFeeState>;\n getProvider: (chainId: Hex, networkClientId?: NetworkClientId) => Provider;\n getTransactions: () => TransactionMeta[];\n layer1GasFeeFlows: Layer1GasFeeFlow[];\n onStateChange: (listener: () => void) => void;\n }) {\n this.#findNetworkClientIdByChainId = findNetworkClientIdByChainId;\n this.#gasFeeFlows = gasFeeFlows;\n this.#layer1GasFeeFlows = layer1GasFeeFlows;\n this.#getGasFeeControllerEstimates = getGasFeeControllerEstimates;\n this.#getProvider = getProvider;\n this.#getTransactions = getTransactions;\n\n onStateChange(() => {\n const unapprovedTransactions = this.#getUnapprovedTransactions();\n\n if (unapprovedTransactions.length) {\n this.#start();\n } else {\n this.#stop();\n }\n });\n }\n\n #start() {\n if (this.#running) {\n return;\n }\n\n // Intentionally not awaiting since this starts the timeout chain.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.#onTimeout();\n\n this.#running = true;\n\n log('Started polling');\n }\n\n #stop() {\n if (!this.#running) {\n return;\n }\n\n clearTimeout(this.#timeout);\n\n this.#timeout = undefined;\n this.#running = false;\n\n log('Stopped polling');\n }\n\n async #onTimeout() {\n await this.#updateUnapprovedTransactions();\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.#timeout = setTimeout(() => this.#onTimeout(), INTERVAL_MILLISECONDS);\n }\n\n async #updateUnapprovedTransactions() {\n const unapprovedTransactions = this.#getUnapprovedTransactions();\n\n if (!unapprovedTransactions.length) {\n return;\n }\n\n log('Found unapproved transactions', unapprovedTransactions.length);\n\n const gasFeeControllerDataByChainId = await this.#getGasFeeControllerData(\n unapprovedTransactions,\n );\n\n log('Retrieved gas fee controller data', gasFeeControllerDataByChainId);\n\n await Promise.all(\n unapprovedTransactions.flatMap((tx) => {\n const { chainId } = tx;\n\n const gasFeeControllerData = gasFeeControllerDataByChainId.get(\n chainId,\n ) as GasFeeState;\n\n return this.#updateUnapprovedTransaction(tx, gasFeeControllerData);\n }),\n );\n }\n\n async #updateUnapprovedTransaction(\n transactionMeta: TransactionMeta,\n gasFeeControllerData: GasFeeState,\n ) {\n const { id } = transactionMeta;\n\n const [gasFeeEstimatesResponse, layer1GasFee] = await Promise.all([\n this.#updateTransactionGasFeeEstimates(\n transactionMeta,\n gasFeeControllerData,\n ),\n this.#updateTransactionLayer1GasFee(transactionMeta),\n ]);\n\n if (!gasFeeEstimatesResponse && !layer1GasFee) {\n return;\n }\n\n this.hub.emit('transaction-updated', {\n transactionId: id,\n gasFeeEstimates: gasFeeEstimatesResponse?.gasFeeEstimates,\n gasFeeEstimatesLoaded: gasFeeEstimatesResponse?.gasFeeEstimatesLoaded,\n layer1GasFee,\n });\n }\n\n async #updateTransactionGasFeeEstimates(\n transactionMeta: TransactionMeta,\n gasFeeControllerData: GasFeeState,\n ): Promise<\n | { gasFeeEstimates?: GasFeeEstimates; gasFeeEstimatesLoaded: boolean }\n | undefined\n > {\n const { chainId, networkClientId } = transactionMeta;\n\n const ethQuery = new EthQuery(this.#getProvider(chainId, networkClientId));\n const gasFeeFlow = getGasFeeFlow(transactionMeta, this.#gasFeeFlows);\n\n if (gasFeeFlow) {\n log(\n 'Found gas fee flow',\n gasFeeFlow.constructor.name,\n transactionMeta.id,\n );\n }\n\n const request: GasFeeFlowRequest = {\n ethQuery,\n gasFeeControllerData,\n transactionMeta,\n };\n\n let gasFeeEstimates: GasFeeEstimates | undefined;\n\n if (gasFeeFlow) {\n try {\n const response = await gasFeeFlow.getGasFees(request);\n gasFeeEstimates = response.estimates;\n } catch (error) {\n log('Failed to get suggested gas fees', transactionMeta.id, error);\n }\n }\n\n if (!gasFeeEstimates && transactionMeta.gasFeeEstimatesLoaded) {\n return undefined;\n }\n\n log('Updated gas fee estimates', {\n gasFeeEstimates,\n transaction: transactionMeta.id,\n });\n\n return { gasFeeEstimates, gasFeeEstimatesLoaded: true };\n }\n\n async #updateTransactionLayer1GasFee(\n transactionMeta: TransactionMeta,\n ): Promise<Hex | undefined> {\n const { chainId, networkClientId } = transactionMeta;\n const provider = this.#getProvider(chainId, networkClientId);\n\n const layer1GasFee = await getTransactionLayer1GasFee({\n layer1GasFeeFlows: this.#layer1GasFeeFlows,\n provider,\n transactionMeta,\n });\n\n if (layer1GasFee) {\n log('Updated layer 1 gas fee', layer1GasFee, transactionMeta.id);\n }\n\n return layer1GasFee;\n }\n\n #getUnapprovedTransactions() {\n return this.#getTransactions().filter(\n (tx) => tx.status === TransactionStatus.unapproved,\n );\n }\n\n async #getGasFeeControllerData(\n transactions: TransactionMeta[],\n ): Promise<Map<string, GasFeeState>> {\n const networkClientIdsByChainId = new Map<Hex, NetworkClientId>();\n\n for (const transaction of transactions) {\n const { chainId, networkClientId: transactionNetworkClientId } =\n transaction;\n\n if (networkClientIdsByChainId.has(chainId)) {\n continue;\n }\n\n const networkClientId =\n transactionNetworkClientId ??\n (this.#findNetworkClientIdByChainId(chainId) as string);\n\n networkClientIdsByChainId.set(chainId, networkClientId);\n }\n\n log('Extracted network client IDs by chain ID', networkClientIdsByChainId);\n\n const entryPromises = Array.from(networkClientIdsByChainId.entries()).map(\n async ([chainId, networkClientId]) => {\n return [\n chainId,\n await this.#getGasFeeControllerEstimates({ networkClientId }),\n ] as const;\n },\n );\n\n return new Map(await Promise.all(entryPromises));\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/chunk-EKJXGERC.mjs
DELETED
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
fetchEtherscanTokenTransactions,
|
|
3
|
-
fetchEtherscanTransactions
|
|
4
|
-
} from "./chunk-EGQCE3FK.mjs";
|
|
5
|
-
import {
|
|
6
|
-
ETHERSCAN_SUPPORTED_NETWORKS
|
|
7
|
-
} from "./chunk-O6ZZVIFH.mjs";
|
|
8
|
-
import {
|
|
9
|
-
incomingTransactionsLogger
|
|
10
|
-
} from "./chunk-UQQWZT6C.mjs";
|
|
11
|
-
import {
|
|
12
|
-
__privateAdd,
|
|
13
|
-
__privateGet,
|
|
14
|
-
__privateMethod,
|
|
15
|
-
__privateSet
|
|
16
|
-
} from "./chunk-XUI43LEZ.mjs";
|
|
17
|
-
|
|
18
|
-
// src/helpers/EtherscanRemoteTransactionSource.ts
|
|
19
|
-
import { BNToHex } from "@metamask/controller-utils";
|
|
20
|
-
import { Mutex } from "async-mutex";
|
|
21
|
-
import BN from "bn.js";
|
|
22
|
-
import { v1 as random } from "uuid";
|
|
23
|
-
var ETHERSCAN_RATE_LIMIT_INTERVAL = 5e3;
|
|
24
|
-
var _includeTokenTransfers, _isTokenRequestPending, _mutex, _releaseLockAfterInterval, releaseLockAfterInterval_fn, _fetchNormalTransactions, _fetchTokenTransactions, _getResponseTransactions, getResponseTransactions_fn, _normalizeTransaction, normalizeTransaction_fn, _normalizeTokenTransaction, normalizeTokenTransaction_fn, _normalizeTransactionBase, normalizeTransactionBase_fn;
|
|
25
|
-
var EtherscanRemoteTransactionSource = class {
|
|
26
|
-
constructor({
|
|
27
|
-
includeTokenTransfers
|
|
28
|
-
} = {}) {
|
|
29
|
-
__privateAdd(this, _releaseLockAfterInterval);
|
|
30
|
-
// TODO: Either fix this lint violation or explain why it's necessary to ignore.
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
32
|
-
__privateAdd(this, _getResponseTransactions);
|
|
33
|
-
__privateAdd(this, _normalizeTransaction);
|
|
34
|
-
__privateAdd(this, _normalizeTokenTransaction);
|
|
35
|
-
__privateAdd(this, _normalizeTransactionBase);
|
|
36
|
-
__privateAdd(this, _includeTokenTransfers, void 0);
|
|
37
|
-
__privateAdd(this, _isTokenRequestPending, void 0);
|
|
38
|
-
__privateAdd(this, _mutex, new Mutex());
|
|
39
|
-
__privateAdd(this, _fetchNormalTransactions, async (request, etherscanRequest) => {
|
|
40
|
-
const { currentChainId } = request;
|
|
41
|
-
const etherscanTransactions = await fetchEtherscanTransactions(
|
|
42
|
-
etherscanRequest
|
|
43
|
-
);
|
|
44
|
-
return __privateMethod(this, _getResponseTransactions, getResponseTransactions_fn).call(this, etherscanTransactions).map(
|
|
45
|
-
(tx) => __privateMethod(this, _normalizeTransaction, normalizeTransaction_fn).call(this, tx, currentChainId)
|
|
46
|
-
);
|
|
47
|
-
});
|
|
48
|
-
__privateAdd(this, _fetchTokenTransactions, async (request, etherscanRequest) => {
|
|
49
|
-
const { currentChainId } = request;
|
|
50
|
-
const etherscanTransactions = await fetchEtherscanTokenTransactions(
|
|
51
|
-
etherscanRequest
|
|
52
|
-
);
|
|
53
|
-
return __privateMethod(this, _getResponseTransactions, getResponseTransactions_fn).call(this, etherscanTransactions).map(
|
|
54
|
-
(tx) => __privateMethod(this, _normalizeTokenTransaction, normalizeTokenTransaction_fn).call(this, tx, currentChainId)
|
|
55
|
-
);
|
|
56
|
-
});
|
|
57
|
-
__privateSet(this, _includeTokenTransfers, includeTokenTransfers ?? true);
|
|
58
|
-
__privateSet(this, _isTokenRequestPending, false);
|
|
59
|
-
}
|
|
60
|
-
isSupportedNetwork(chainId) {
|
|
61
|
-
return Object.keys(ETHERSCAN_SUPPORTED_NETWORKS).includes(chainId);
|
|
62
|
-
}
|
|
63
|
-
getLastBlockVariations() {
|
|
64
|
-
return [__privateGet(this, _isTokenRequestPending) ? "token" : "normal"];
|
|
65
|
-
}
|
|
66
|
-
async fetchTransactions(request) {
|
|
67
|
-
const releaseLock = await __privateGet(this, _mutex).acquire();
|
|
68
|
-
const acquiredTime = Date.now();
|
|
69
|
-
const etherscanRequest = {
|
|
70
|
-
...request,
|
|
71
|
-
chainId: request.currentChainId
|
|
72
|
-
};
|
|
73
|
-
try {
|
|
74
|
-
const transactions = __privateGet(this, _isTokenRequestPending) ? await __privateGet(this, _fetchTokenTransactions).call(this, request, etherscanRequest) : await __privateGet(this, _fetchNormalTransactions).call(this, request, etherscanRequest);
|
|
75
|
-
if (__privateGet(this, _includeTokenTransfers)) {
|
|
76
|
-
__privateSet(this, _isTokenRequestPending, !__privateGet(this, _isTokenRequestPending));
|
|
77
|
-
}
|
|
78
|
-
return transactions;
|
|
79
|
-
} finally {
|
|
80
|
-
__privateMethod(this, _releaseLockAfterInterval, releaseLockAfterInterval_fn).call(this, acquiredTime, releaseLock);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
_includeTokenTransfers = new WeakMap();
|
|
85
|
-
_isTokenRequestPending = new WeakMap();
|
|
86
|
-
_mutex = new WeakMap();
|
|
87
|
-
_releaseLockAfterInterval = new WeakSet();
|
|
88
|
-
releaseLockAfterInterval_fn = function(acquireTime, releaseLock) {
|
|
89
|
-
const elapsedTime = Date.now() - acquireTime;
|
|
90
|
-
const remainingTime = Math.max(
|
|
91
|
-
0,
|
|
92
|
-
ETHERSCAN_RATE_LIMIT_INTERVAL - elapsedTime
|
|
93
|
-
);
|
|
94
|
-
if (remainingTime > 0) {
|
|
95
|
-
setTimeout(releaseLock, remainingTime);
|
|
96
|
-
} else {
|
|
97
|
-
releaseLock();
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
_fetchNormalTransactions = new WeakMap();
|
|
101
|
-
_fetchTokenTransactions = new WeakMap();
|
|
102
|
-
_getResponseTransactions = new WeakSet();
|
|
103
|
-
getResponseTransactions_fn = function(response) {
|
|
104
|
-
let result = response.result;
|
|
105
|
-
if (response.status === "0") {
|
|
106
|
-
result = [];
|
|
107
|
-
if (response.result.length) {
|
|
108
|
-
incomingTransactionsLogger("Ignored Etherscan request error", {
|
|
109
|
-
message: response.result,
|
|
110
|
-
type: __privateGet(this, _isTokenRequestPending) ? "token" : "normal"
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return result;
|
|
115
|
-
};
|
|
116
|
-
_normalizeTransaction = new WeakSet();
|
|
117
|
-
normalizeTransaction_fn = function(txMeta, currentChainId) {
|
|
118
|
-
const base = __privateMethod(this, _normalizeTransactionBase, normalizeTransactionBase_fn).call(this, txMeta, currentChainId);
|
|
119
|
-
return {
|
|
120
|
-
...base,
|
|
121
|
-
txParams: {
|
|
122
|
-
...base.txParams,
|
|
123
|
-
data: txMeta.input
|
|
124
|
-
},
|
|
125
|
-
...txMeta.isError === "0" ? { status: "confirmed" /* confirmed */ } : {
|
|
126
|
-
error: new Error("Transaction failed"),
|
|
127
|
-
status: "failed" /* failed */
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
};
|
|
131
|
-
_normalizeTokenTransaction = new WeakSet();
|
|
132
|
-
normalizeTokenTransaction_fn = function(txMeta, currentChainId) {
|
|
133
|
-
const base = __privateMethod(this, _normalizeTransactionBase, normalizeTransactionBase_fn).call(this, txMeta, currentChainId);
|
|
134
|
-
return {
|
|
135
|
-
...base,
|
|
136
|
-
isTransfer: true,
|
|
137
|
-
transferInformation: {
|
|
138
|
-
contractAddress: txMeta.contractAddress,
|
|
139
|
-
decimals: Number(txMeta.tokenDecimal),
|
|
140
|
-
symbol: txMeta.tokenSymbol
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
};
|
|
144
|
-
_normalizeTransactionBase = new WeakSet();
|
|
145
|
-
normalizeTransactionBase_fn = function(txMeta, currentChainId) {
|
|
146
|
-
const time = parseInt(txMeta.timeStamp, 10) * 1e3;
|
|
147
|
-
return {
|
|
148
|
-
blockNumber: txMeta.blockNumber,
|
|
149
|
-
chainId: currentChainId,
|
|
150
|
-
hash: txMeta.hash,
|
|
151
|
-
id: random({ msecs: time }),
|
|
152
|
-
status: "confirmed" /* confirmed */,
|
|
153
|
-
time,
|
|
154
|
-
txParams: {
|
|
155
|
-
chainId: currentChainId,
|
|
156
|
-
from: txMeta.from,
|
|
157
|
-
gas: BNToHex(new BN(txMeta.gas)),
|
|
158
|
-
gasPrice: BNToHex(new BN(txMeta.gasPrice)),
|
|
159
|
-
gasUsed: BNToHex(new BN(txMeta.gasUsed)),
|
|
160
|
-
nonce: BNToHex(new BN(txMeta.nonce)),
|
|
161
|
-
to: txMeta.to,
|
|
162
|
-
value: BNToHex(new BN(txMeta.value))
|
|
163
|
-
},
|
|
164
|
-
type: "incoming" /* incoming */,
|
|
165
|
-
verifiedOnBlockchain: false
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
export {
|
|
170
|
-
EtherscanRemoteTransactionSource
|
|
171
|
-
};
|
|
172
|
-
//# sourceMappingURL=chunk-EKJXGERC.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/helpers/EtherscanRemoteTransactionSource.ts"],"sourcesContent":["import { BNToHex } from '@metamask/controller-utils';\nimport type { Hex } from '@metamask/utils';\nimport { Mutex } from 'async-mutex';\nimport BN from 'bn.js';\nimport { v1 as random } from 'uuid';\n\nimport { ETHERSCAN_SUPPORTED_NETWORKS } from '../constants';\nimport { incomingTransactionsLogger as log } from '../logger';\nimport type {\n RemoteTransactionSource,\n RemoteTransactionSourceRequest,\n TransactionMeta,\n} from '../types';\nimport { TransactionStatus, TransactionType } from '../types';\nimport {\n fetchEtherscanTokenTransactions,\n fetchEtherscanTransactions,\n} from '../utils/etherscan';\nimport type {\n EtherscanTokenTransactionMeta,\n EtherscanTransactionMeta,\n EtherscanTransactionMetaBase,\n EtherscanTransactionRequest,\n EtherscanTransactionResponse,\n} from '../utils/etherscan';\n\nconst ETHERSCAN_RATE_LIMIT_INTERVAL = 5000;\n/**\n * A RemoteTransactionSource that fetches transaction data from Etherscan.\n */\nexport class EtherscanRemoteTransactionSource\n implements RemoteTransactionSource\n{\n #includeTokenTransfers: boolean;\n\n #isTokenRequestPending: boolean;\n\n #mutex = new Mutex();\n\n constructor({\n includeTokenTransfers,\n }: { includeTokenTransfers?: boolean } = {}) {\n this.#includeTokenTransfers = includeTokenTransfers ?? true;\n this.#isTokenRequestPending = false;\n }\n\n isSupportedNetwork(chainId: Hex): boolean {\n return Object.keys(ETHERSCAN_SUPPORTED_NETWORKS).includes(chainId);\n }\n\n getLastBlockVariations(): string[] {\n return [this.#isTokenRequestPending ? 'token' : 'normal'];\n }\n\n async fetchTransactions(\n request: RemoteTransactionSourceRequest,\n ): Promise<TransactionMeta[]> {\n const releaseLock = await this.#mutex.acquire();\n const acquiredTime = Date.now();\n\n const etherscanRequest: EtherscanTransactionRequest = {\n ...request,\n chainId: request.currentChainId,\n };\n\n try {\n const transactions = this.#isTokenRequestPending\n ? await this.#fetchTokenTransactions(request, etherscanRequest)\n : await this.#fetchNormalTransactions(request, etherscanRequest);\n\n if (this.#includeTokenTransfers) {\n this.#isTokenRequestPending = !this.#isTokenRequestPending;\n }\n\n return transactions;\n } finally {\n this.#releaseLockAfterInterval(acquiredTime, releaseLock);\n }\n }\n\n #releaseLockAfterInterval(acquireTime: number, releaseLock: () => void) {\n const elapsedTime = Date.now() - acquireTime;\n const remainingTime = Math.max(\n 0,\n ETHERSCAN_RATE_LIMIT_INTERVAL - elapsedTime,\n );\n // Wait for the remaining time if it hasn't been 5 seconds yet\n if (remainingTime > 0) {\n setTimeout(releaseLock, remainingTime);\n } else {\n releaseLock();\n }\n }\n\n #fetchNormalTransactions = async (\n request: RemoteTransactionSourceRequest,\n etherscanRequest: EtherscanTransactionRequest,\n ) => {\n const { currentChainId } = request;\n\n const etherscanTransactions = await fetchEtherscanTransactions(\n etherscanRequest,\n );\n\n return this.#getResponseTransactions(etherscanTransactions).map((tx) =>\n this.#normalizeTransaction(tx, currentChainId),\n );\n };\n\n #fetchTokenTransactions = async (\n request: RemoteTransactionSourceRequest,\n etherscanRequest: EtherscanTransactionRequest,\n ) => {\n const { currentChainId } = request;\n\n const etherscanTransactions = await fetchEtherscanTokenTransactions(\n etherscanRequest,\n );\n\n return this.#getResponseTransactions(etherscanTransactions).map((tx) =>\n this.#normalizeTokenTransaction(tx, currentChainId),\n );\n };\n\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/naming-convention\n #getResponseTransactions<T extends EtherscanTransactionMetaBase>(\n response: EtherscanTransactionResponse<T>,\n ): T[] {\n let result = response.result as T[];\n\n if (response.status === '0') {\n result = [];\n\n if (response.result.length) {\n log('Ignored Etherscan request error', {\n message: response.result,\n type: this.#isTokenRequestPending ? 'token' : 'normal',\n });\n }\n }\n\n return result;\n }\n\n #normalizeTransaction(\n txMeta: EtherscanTransactionMeta,\n currentChainId: Hex,\n ): TransactionMeta {\n const base = this.#normalizeTransactionBase(txMeta, currentChainId);\n\n return {\n ...base,\n txParams: {\n ...base.txParams,\n data: txMeta.input,\n },\n ...(txMeta.isError === '0'\n ? { status: TransactionStatus.confirmed }\n : {\n error: new Error('Transaction failed'),\n status: TransactionStatus.failed,\n }),\n };\n }\n\n #normalizeTokenTransaction(\n txMeta: EtherscanTokenTransactionMeta,\n currentChainId: Hex,\n ): TransactionMeta {\n const base = this.#normalizeTransactionBase(txMeta, currentChainId);\n\n return {\n ...base,\n isTransfer: true,\n transferInformation: {\n contractAddress: txMeta.contractAddress,\n decimals: Number(txMeta.tokenDecimal),\n symbol: txMeta.tokenSymbol,\n },\n };\n }\n\n #normalizeTransactionBase(\n txMeta: EtherscanTransactionMetaBase,\n currentChainId: Hex,\n ): TransactionMeta {\n const time = parseInt(txMeta.timeStamp, 10) * 1000;\n\n return {\n blockNumber: txMeta.blockNumber,\n chainId: currentChainId,\n hash: txMeta.hash,\n id: random({ msecs: time }),\n status: TransactionStatus.confirmed,\n time,\n txParams: {\n chainId: currentChainId,\n from: txMeta.from,\n gas: BNToHex(new BN(txMeta.gas)),\n gasPrice: BNToHex(new BN(txMeta.gasPrice)),\n gasUsed: BNToHex(new BN(txMeta.gasUsed)),\n nonce: BNToHex(new BN(txMeta.nonce)),\n to: txMeta.to,\n value: BNToHex(new BN(txMeta.value)),\n },\n type: TransactionType.incoming,\n verifiedOnBlockchain: false,\n };\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/chunk-FG74Z3F5.mjs
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
projectLogger
|
|
3
|
-
} from "./chunk-UQQWZT6C.mjs";
|
|
4
|
-
import {
|
|
5
|
-
__privateAdd,
|
|
6
|
-
__privateGet,
|
|
7
|
-
__privateMethod,
|
|
8
|
-
__privateSet
|
|
9
|
-
} from "./chunk-XUI43LEZ.mjs";
|
|
10
|
-
|
|
11
|
-
// src/gas-flows/OracleLayer1GasFeeFlow.ts
|
|
12
|
-
import { Common, Hardfork } from "@ethereumjs/common";
|
|
13
|
-
import { TransactionFactory } from "@ethereumjs/tx";
|
|
14
|
-
import { Contract } from "@ethersproject/contracts";
|
|
15
|
-
import { Web3Provider } from "@ethersproject/providers";
|
|
16
|
-
import { createModuleLogger } from "@metamask/utils";
|
|
17
|
-
import { omit } from "lodash";
|
|
18
|
-
var log = createModuleLogger(projectLogger, "oracle-layer1-gas-fee-flow");
|
|
19
|
-
var DUMMY_KEY = "abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789";
|
|
20
|
-
var GAS_PRICE_ORACLE_ABI = [
|
|
21
|
-
{
|
|
22
|
-
inputs: [{ internalType: "bytes", name: "_data", type: "bytes" }],
|
|
23
|
-
name: "getL1Fee",
|
|
24
|
-
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
|
|
25
|
-
stateMutability: "view",
|
|
26
|
-
type: "function"
|
|
27
|
-
}
|
|
28
|
-
];
|
|
29
|
-
var _oracleAddress, _signTransaction, _getOracleLayer1GasFee, getOracleLayer1GasFee_fn, _buildUnserializedTransaction, buildUnserializedTransaction_fn, _buildTransactionParams, buildTransactionParams_fn, _buildTransactionCommon, buildTransactionCommon_fn;
|
|
30
|
-
var OracleLayer1GasFeeFlow = class {
|
|
31
|
-
constructor(oracleAddress, signTransaction) {
|
|
32
|
-
__privateAdd(this, _getOracleLayer1GasFee);
|
|
33
|
-
__privateAdd(this, _buildUnserializedTransaction);
|
|
34
|
-
__privateAdd(this, _buildTransactionParams);
|
|
35
|
-
__privateAdd(this, _buildTransactionCommon);
|
|
36
|
-
__privateAdd(this, _oracleAddress, void 0);
|
|
37
|
-
__privateAdd(this, _signTransaction, void 0);
|
|
38
|
-
__privateSet(this, _oracleAddress, oracleAddress);
|
|
39
|
-
__privateSet(this, _signTransaction, signTransaction ?? false);
|
|
40
|
-
}
|
|
41
|
-
async getLayer1Fee(request) {
|
|
42
|
-
try {
|
|
43
|
-
return await __privateMethod(this, _getOracleLayer1GasFee, getOracleLayer1GasFee_fn).call(this, request);
|
|
44
|
-
} catch (error) {
|
|
45
|
-
log("Failed to get oracle layer 1 gas fee", error);
|
|
46
|
-
throw new Error(`Failed to get oracle layer 1 gas fee`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
_oracleAddress = new WeakMap();
|
|
51
|
-
_signTransaction = new WeakMap();
|
|
52
|
-
_getOracleLayer1GasFee = new WeakSet();
|
|
53
|
-
getOracleLayer1GasFee_fn = async function(request) {
|
|
54
|
-
const { provider, transactionMeta } = request;
|
|
55
|
-
const contract = new Contract(
|
|
56
|
-
__privateGet(this, _oracleAddress),
|
|
57
|
-
GAS_PRICE_ORACLE_ABI,
|
|
58
|
-
// Network controller provider type is incompatible with ethers provider
|
|
59
|
-
new Web3Provider(provider)
|
|
60
|
-
);
|
|
61
|
-
const serializedTransaction = __privateMethod(this, _buildUnserializedTransaction, buildUnserializedTransaction_fn).call(this, transactionMeta, __privateGet(this, _signTransaction)).serialize();
|
|
62
|
-
const result = await contract.getL1Fee(serializedTransaction);
|
|
63
|
-
if (result === void 0) {
|
|
64
|
-
throw new Error("No value returned from oracle contract");
|
|
65
|
-
}
|
|
66
|
-
return {
|
|
67
|
-
layer1Fee: result.toHexString()
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
_buildUnserializedTransaction = new WeakSet();
|
|
71
|
-
buildUnserializedTransaction_fn = function(transactionMeta, sign) {
|
|
72
|
-
const txParams = __privateMethod(this, _buildTransactionParams, buildTransactionParams_fn).call(this, transactionMeta);
|
|
73
|
-
const common = __privateMethod(this, _buildTransactionCommon, buildTransactionCommon_fn).call(this, transactionMeta);
|
|
74
|
-
let unserializedTransaction = TransactionFactory.fromTxData(txParams, {
|
|
75
|
-
common
|
|
76
|
-
});
|
|
77
|
-
if (sign) {
|
|
78
|
-
const keyBuffer = Buffer.from(DUMMY_KEY, "hex");
|
|
79
|
-
unserializedTransaction = unserializedTransaction.sign(keyBuffer);
|
|
80
|
-
}
|
|
81
|
-
return unserializedTransaction;
|
|
82
|
-
};
|
|
83
|
-
_buildTransactionParams = new WeakSet();
|
|
84
|
-
buildTransactionParams_fn = function(transactionMeta) {
|
|
85
|
-
return {
|
|
86
|
-
...omit(transactionMeta.txParams, "gas"),
|
|
87
|
-
gasLimit: transactionMeta.txParams.gas
|
|
88
|
-
};
|
|
89
|
-
};
|
|
90
|
-
_buildTransactionCommon = new WeakSet();
|
|
91
|
-
buildTransactionCommon_fn = function(transactionMeta) {
|
|
92
|
-
const chainId = Number(transactionMeta.chainId);
|
|
93
|
-
return Common.custom({
|
|
94
|
-
chainId,
|
|
95
|
-
defaultHardfork: Hardfork.London
|
|
96
|
-
});
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
export {
|
|
100
|
-
OracleLayer1GasFeeFlow
|
|
101
|
-
};
|
|
102
|
-
//# sourceMappingURL=chunk-FG74Z3F5.mjs.map
|