@metamask-previews/transaction-controller 32.0.0-preview-5dd046d → 32.0.0-preview-0f65e9e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/TransactionController.js +17 -17
  2. package/dist/TransactionController.mjs +16 -16
  3. package/dist/{chunk-Q6Q44V4W.js → chunk-3LWN55E6.js} +6 -6
  4. package/dist/{chunk-RAOYRJ25.js → chunk-3WTSRETF.js} +1 -1
  5. package/dist/chunk-3WTSRETF.js.map +1 -0
  6. package/dist/{chunk-Y7ENNK7L.mjs → chunk-3ZV5YEUV.mjs} +6 -5
  7. package/dist/chunk-3ZV5YEUV.mjs.map +1 -0
  8. package/dist/{chunk-3ZRHCVVS.js → chunk-4IBBHNWG.js} +7 -5
  9. package/dist/chunk-4IBBHNWG.js.map +1 -0
  10. package/dist/{chunk-AZ4WIRH3.mjs → chunk-4V4XIPCI.mjs} +5 -2
  11. package/dist/chunk-4V4XIPCI.mjs.map +1 -0
  12. package/dist/{chunk-NM6OYEPP.mjs → chunk-5ZEJT5SN.mjs} +6 -2
  13. package/dist/chunk-5ZEJT5SN.mjs.map +1 -0
  14. package/dist/{chunk-5YES3V2R.mjs → chunk-6B5BEO3R.mjs} +1 -1
  15. package/dist/chunk-6B5BEO3R.mjs.map +1 -0
  16. package/dist/{chunk-PUESYN62.js → chunk-6OLJWLKK.js} +6 -3
  17. package/dist/chunk-6OLJWLKK.js.map +1 -0
  18. package/dist/{chunk-IT3SYNZ6.js → chunk-74W7X6BE.js} +1 -1
  19. package/dist/chunk-74W7X6BE.js.map +1 -0
  20. package/dist/{chunk-DZGDOPPN.js → chunk-7EGSEMYH.js} +78 -70
  21. package/dist/chunk-7EGSEMYH.js.map +1 -0
  22. package/dist/{chunk-7MKQDZKY.js → chunk-7KREIKNY.js} +3 -3
  23. package/dist/{chunk-EQT25RSP.js → chunk-7NMV2NPM.js} +6 -4
  24. package/dist/chunk-7NMV2NPM.js.map +1 -0
  25. package/dist/{chunk-CDF4QNJA.mjs → chunk-D6BF3IZK.mjs} +2 -2
  26. package/dist/{chunk-QZLPYOGC.mjs → chunk-EGQCE3FK.mjs} +1 -1
  27. package/dist/chunk-EGQCE3FK.mjs.map +1 -0
  28. package/dist/{chunk-CPMTUMMZ.mjs → chunk-EKJXGERC.mjs} +4 -2
  29. package/dist/chunk-EKJXGERC.mjs.map +1 -0
  30. package/dist/{chunk-AHSDUIMT.mjs → chunk-EVL6KODQ.mjs} +1 -1
  31. package/dist/chunk-EVL6KODQ.mjs.map +1 -0
  32. package/dist/{chunk-IJ5GUKRO.mjs → chunk-GNAL5HC2.mjs} +2 -2
  33. package/dist/{chunk-VZSUWPFI.mjs → chunk-JMUEM7UQ.mjs} +33 -25
  34. package/dist/chunk-JMUEM7UQ.mjs.map +1 -0
  35. package/dist/{chunk-G5U6ABRU.mjs → chunk-KLDYR4HR.mjs} +5 -3
  36. package/dist/{chunk-G5U6ABRU.mjs.map → chunk-KLDYR4HR.mjs.map} +1 -1
  37. package/dist/{chunk-METHOFMG.mjs → chunk-KPP6SU7S.mjs} +1 -1
  38. package/dist/chunk-KPP6SU7S.mjs.map +1 -0
  39. package/dist/{chunk-NRQUBP3S.mjs → chunk-MILG772S.mjs} +2 -2
  40. package/dist/{chunk-YXSCBWTU.js → chunk-N6OMDPDK.js} +9 -9
  41. package/dist/{chunk-YXSCBWTU.js.map → chunk-N6OMDPDK.js.map} +1 -1
  42. package/dist/{chunk-V6HVF4EN.mjs → chunk-OGK76ZPK.mjs} +3 -3
  43. package/dist/chunk-OGK76ZPK.mjs.map +1 -0
  44. package/dist/{chunk-UGFBA4GV.js → chunk-OZ6UB42C.js} +5 -1
  45. package/dist/chunk-OZ6UB42C.js.map +1 -0
  46. package/dist/{chunk-J56A7UCK.mjs → chunk-Q56I5ONX.mjs} +5 -1
  47. package/dist/chunk-Q56I5ONX.mjs.map +1 -0
  48. package/dist/{chunk-UT4M4XI3.js → chunk-QH2H4W3N.js} +5 -5
  49. package/dist/{chunk-DTDTOMTB.js → chunk-RHDPOIS4.js} +6 -5
  50. package/dist/chunk-RHDPOIS4.js.map +1 -0
  51. package/dist/{chunk-VH47Q6TS.js → chunk-RXIUMVA5.js} +7 -3
  52. package/dist/chunk-RXIUMVA5.js.map +1 -0
  53. package/dist/{chunk-5KMU2IAT.js → chunk-ULD4JC3Q.js} +1 -1
  54. package/dist/chunk-ULD4JC3Q.js.map +1 -0
  55. package/dist/{chunk-2TUDWNEI.mjs → chunk-UZFDPHQI.mjs} +3 -3
  56. package/dist/{chunk-DLOQPH4M.js → chunk-V4FONAI2.js} +4 -4
  57. package/dist/{chunk-FDUCRHYT.js → chunk-XVYXRCRL.js} +1 -1
  58. package/dist/chunk-XVYXRCRL.js.map +1 -0
  59. package/dist/errors.js +1 -1
  60. package/dist/errors.mjs +1 -1
  61. package/dist/gas-flows/DefaultGasFeeFlow.js +7 -7
  62. package/dist/gas-flows/DefaultGasFeeFlow.mjs +6 -6
  63. package/dist/gas-flows/LineaGasFeeFlow.js +8 -8
  64. package/dist/gas-flows/LineaGasFeeFlow.mjs +7 -7
  65. package/dist/gas-flows/TestGasFeeFlow.js +1 -1
  66. package/dist/gas-flows/TestGasFeeFlow.mjs +1 -1
  67. package/dist/helpers/EtherscanRemoteTransactionSource.js +4 -4
  68. package/dist/helpers/EtherscanRemoteTransactionSource.mjs +3 -3
  69. package/dist/helpers/GasFeePoller.js +4 -4
  70. package/dist/helpers/GasFeePoller.mjs +3 -3
  71. package/dist/helpers/IncomingTransactionHelper.js +2 -2
  72. package/dist/helpers/IncomingTransactionHelper.mjs +1 -1
  73. package/dist/helpers/MultichainTrackingHelper.js +5 -5
  74. package/dist/helpers/MultichainTrackingHelper.mjs +4 -4
  75. package/dist/helpers/PendingTransactionTracker.js +3 -3
  76. package/dist/helpers/PendingTransactionTracker.mjs +2 -2
  77. package/dist/index.js +17 -17
  78. package/dist/index.mjs +16 -16
  79. package/dist/tsconfig.build.tsbuildinfo +1 -1
  80. package/dist/types/TransactionController.d.ts +3 -5
  81. package/dist/types/TransactionController.d.ts.map +1 -1
  82. package/dist/types/gas-flows/DefaultGasFeeFlow.d.ts.map +1 -1
  83. package/dist/types/helpers/EtherscanRemoteTransactionSource.d.ts.map +1 -1
  84. package/dist/types/helpers/IncomingTransactionHelper.d.ts +2 -1
  85. package/dist/types/helpers/IncomingTransactionHelper.d.ts.map +1 -1
  86. package/dist/types/helpers/MultichainTrackingHelper.d.ts.map +1 -1
  87. package/dist/types/helpers/PendingTransactionTracker.d.ts.map +1 -1
  88. package/dist/types/types.d.ts.map +1 -1
  89. package/dist/types/utils/etherscan.d.ts.map +1 -1
  90. package/dist/types/utils/simulation.d.ts.map +1 -1
  91. package/dist/types/utils/utils.d.ts.map +1 -1
  92. package/dist/types.js +2 -2
  93. package/dist/types.mjs +1 -1
  94. package/dist/utils/etherscan.js +2 -2
  95. package/dist/utils/etherscan.mjs +1 -1
  96. package/dist/utils/external-transactions.js +1 -1
  97. package/dist/utils/external-transactions.mjs +1 -1
  98. package/dist/utils/gas-fees.js +6 -6
  99. package/dist/utils/gas-fees.mjs +5 -5
  100. package/dist/utils/gas-flow.js +3 -3
  101. package/dist/utils/gas-flow.mjs +2 -2
  102. package/dist/utils/simulation-api.js +1 -1
  103. package/dist/utils/simulation-api.mjs +1 -1
  104. package/dist/utils/simulation.js +3 -3
  105. package/dist/utils/simulation.mjs +2 -2
  106. package/dist/utils/swaps.js +4 -4
  107. package/dist/utils/swaps.mjs +3 -3
  108. package/dist/utils/transaction-type.js +1 -1
  109. package/dist/utils/transaction-type.mjs +1 -1
  110. package/dist/utils/utils.js +3 -3
  111. package/dist/utils/utils.mjs +2 -2
  112. package/dist/utils/validation.js +4 -4
  113. package/dist/utils/validation.mjs +3 -3
  114. package/package.json +5 -2
  115. package/dist/chunk-3ZRHCVVS.js.map +0 -1
  116. package/dist/chunk-5KMU2IAT.js.map +0 -1
  117. package/dist/chunk-5YES3V2R.mjs.map +0 -1
  118. package/dist/chunk-AHSDUIMT.mjs.map +0 -1
  119. package/dist/chunk-AZ4WIRH3.mjs.map +0 -1
  120. package/dist/chunk-CPMTUMMZ.mjs.map +0 -1
  121. package/dist/chunk-DTDTOMTB.js.map +0 -1
  122. package/dist/chunk-DZGDOPPN.js.map +0 -1
  123. package/dist/chunk-EQT25RSP.js.map +0 -1
  124. package/dist/chunk-FDUCRHYT.js.map +0 -1
  125. package/dist/chunk-IT3SYNZ6.js.map +0 -1
  126. package/dist/chunk-J56A7UCK.mjs.map +0 -1
  127. package/dist/chunk-METHOFMG.mjs.map +0 -1
  128. package/dist/chunk-NM6OYEPP.mjs.map +0 -1
  129. package/dist/chunk-PUESYN62.js.map +0 -1
  130. package/dist/chunk-QZLPYOGC.mjs.map +0 -1
  131. package/dist/chunk-RAOYRJ25.js.map +0 -1
  132. package/dist/chunk-UGFBA4GV.js.map +0 -1
  133. package/dist/chunk-V6HVF4EN.mjs.map +0 -1
  134. package/dist/chunk-VH47Q6TS.js.map +0 -1
  135. package/dist/chunk-VZSUWPFI.mjs.map +0 -1
  136. package/dist/chunk-Y7ENNK7L.mjs.map +0 -1
  137. /package/dist/{chunk-Q6Q44V4W.js.map → chunk-3LWN55E6.js.map} +0 -0
  138. /package/dist/{chunk-7MKQDZKY.js.map → chunk-7KREIKNY.js.map} +0 -0
  139. /package/dist/{chunk-CDF4QNJA.mjs.map → chunk-D6BF3IZK.mjs.map} +0 -0
  140. /package/dist/{chunk-IJ5GUKRO.mjs.map → chunk-GNAL5HC2.mjs.map} +0 -0
  141. /package/dist/{chunk-NRQUBP3S.mjs.map → chunk-MILG772S.mjs.map} +0 -0
  142. /package/dist/{chunk-UT4M4XI3.js.map → chunk-QH2H4W3N.js.map} +0 -0
  143. /package/dist/{chunk-2TUDWNEI.mjs.map → chunk-UZFDPHQI.mjs.map} +0 -0
  144. /package/dist/{chunk-DLOQPH4M.js.map → chunk-V4FONAI2.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/simulation.ts"],"sourcesContent":["import type { Fragment, LogDescription, Result } from '@ethersproject/abi';\nimport { Interface } from '@ethersproject/abi';\nimport { hexToBN, toHex } from '@metamask/controller-utils';\nimport { abiERC20, abiERC721, abiERC1155 } from '@metamask/metamask-eth-abis';\nimport { createModuleLogger, type Hex } from '@metamask/utils';\n\nimport {\n ABI_SIMULATION_ERC20_WRAPPED,\n ABI_SIMULATION_ERC721_LEGACY,\n} from '../constants';\nimport {\n SimulationError,\n SimulationInvalidResponseError,\n SimulationRevertedError,\n} from '../errors';\nimport { projectLogger } from '../logger';\nimport type {\n SimulationBalanceChange,\n SimulationData,\n SimulationTokenBalanceChange,\n SimulationToken,\n} from '../types';\nimport { SimulationTokenStandard } from '../types';\nimport { simulateTransactions } from './simulation-api';\nimport type {\n SimulationResponseLog,\n SimulationRequestTransaction,\n SimulationResponse,\n SimulationResponseCallTrace,\n SimulationResponseTransaction,\n} from './simulation-api';\n\nexport enum SupportedToken {\n ERC20 = 'erc20',\n ERC721 = 'erc721',\n ERC1155 = 'erc1155',\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 ERC20_WRAPPED = 'erc20Wrapped',\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 ERC721_LEGACY = 'erc721Legacy',\n}\n\ntype ABI = Fragment[];\n\nexport type GetSimulationDataRequest = {\n chainId: Hex;\n from: Hex;\n to?: Hex;\n value?: Hex;\n data?: Hex;\n};\n\ntype ParsedEvent = {\n contractAddress: Hex;\n tokenStandard: SimulationTokenStandard;\n name: string;\n args: Record<string, Hex | Hex[]>;\n abi: ABI;\n};\n\nconst log = createModuleLogger(projectLogger, 'simulation');\n\nconst SUPPORTED_EVENTS = [\n 'Transfer',\n 'TransferSingle',\n 'TransferBatch',\n 'Deposit',\n 'Withdrawal',\n];\n\nconst SUPPORTED_TOKEN_ABIS = {\n [SupportedToken.ERC20]: {\n abi: abiERC20,\n standard: SimulationTokenStandard.erc20,\n },\n [SupportedToken.ERC721]: {\n abi: abiERC721,\n standard: SimulationTokenStandard.erc721,\n },\n [SupportedToken.ERC1155]: {\n abi: abiERC1155,\n standard: SimulationTokenStandard.erc1155,\n },\n [SupportedToken.ERC20_WRAPPED]: {\n abi: ABI_SIMULATION_ERC20_WRAPPED,\n standard: SimulationTokenStandard.erc20,\n },\n [SupportedToken.ERC721_LEGACY]: {\n abi: ABI_SIMULATION_ERC721_LEGACY,\n standard: SimulationTokenStandard.erc721,\n },\n};\n\nconst REVERTED_ERRORS = ['execution reverted', 'insufficient funds for gas'];\n\ntype BalanceTransactionMap = Map<SimulationToken, SimulationRequestTransaction>;\n\n/**\n * Generate simulation data for a transaction.\n * @param request - The transaction to simulate.\n * @param request.chainId - The chain ID of the transaction.\n * @param request.from - The sender of the transaction.\n * @param request.to - The recipient of the transaction.\n * @param request.value - The value of the transaction.\n * @param request.data - The data of the transaction.\n * @returns The simulation data.\n */\nexport async function getSimulationData(\n request: GetSimulationDataRequest,\n): Promise<SimulationData> {\n const { chainId, from, to, value, data } = request;\n\n log('Getting simulation data', request);\n\n try {\n const response = await simulateTransactions(chainId, {\n transactions: [\n {\n data,\n from,\n maxFeePerGas: '0x0',\n maxPriorityFeePerGas: '0x0',\n to,\n value,\n },\n ],\n withCallTrace: true,\n withLogs: true,\n });\n\n const transactionError = response.transactions?.[0]?.error;\n\n if (transactionError) {\n throw new SimulationError(transactionError);\n }\n\n const nativeBalanceChange = getNativeBalanceChange(request.from, response);\n const events = getEvents(response);\n\n log('Parsed events', events);\n\n const tokenBalanceChanges = await getTokenBalanceChanges(request, events);\n\n return {\n nativeBalanceChange,\n tokenBalanceChanges,\n };\n } catch (error) {\n log('Failed to get simulation data', error, request);\n\n let simulationError = error as SimulationError;\n\n if (\n REVERTED_ERRORS.some((revertErrorMessage) =>\n simulationError.message?.includes(revertErrorMessage),\n )\n ) {\n simulationError = new SimulationRevertedError();\n }\n\n const { code, message } = simulationError;\n\n return {\n tokenBalanceChanges: [],\n error: {\n code,\n message,\n },\n };\n }\n}\n\n/**\n * Extract the native balance change from a simulation response.\n * @param userAddress - The user's account address.\n * @param response - The simulation response.\n * @returns The native balance change or undefined if unchanged.\n */\nfunction getNativeBalanceChange(\n userAddress: Hex,\n response: SimulationResponse,\n): SimulationBalanceChange | undefined {\n const transactionResponse = response.transactions[0];\n\n /* istanbul ignore next */\n if (!transactionResponse) {\n return undefined;\n }\n\n const { stateDiff } = transactionResponse;\n const previousBalance = stateDiff?.pre?.[userAddress]?.balance;\n const newBalance = stateDiff?.post?.[userAddress]?.balance;\n\n if (!previousBalance || !newBalance) {\n return undefined;\n }\n\n return getSimulationBalanceChange(previousBalance, newBalance);\n}\n\n/**\n * Extract events from a simulation response.\n * @param response - The simulation response.\n * @returns The parsed events.\n */\nexport function getEvents(response: SimulationResponse): ParsedEvent[] {\n /* istanbul ignore next */\n const logs = extractLogs(\n response.transactions[0]?.callTrace ?? ({} as SimulationResponseCallTrace),\n );\n\n log('Extracted logs', logs);\n\n const interfaces = getContractInterfaces();\n\n return logs\n .map((currentLog) => {\n const event = parseLog(currentLog, interfaces);\n\n if (!event) {\n log('Failed to parse log', currentLog);\n return undefined;\n }\n\n /* istanbul ignore next */\n const inputs = event.abi.find((e) => e.name === event.name)?.inputs;\n\n /* istanbul ignore if */\n if (!inputs) {\n log('Failed to find inputs for event', event);\n return undefined;\n }\n\n const args = parseEventArgs(event.args, inputs);\n\n return {\n contractAddress: currentLog.address,\n tokenStandard: event.standard,\n name: event.name,\n args,\n abi: event.abi,\n };\n })\n .filter((e) => e !== undefined) as ParsedEvent[];\n}\n\n/**\n * Parse event arguments using ABI input definitions.\n * @param args - The raw event arguments.\n * @param abiInputs - The ABI input definitions.\n * @returns The parsed event arguments.\n */\nfunction parseEventArgs(\n args: Result,\n abiInputs: { name: string }[],\n): Record<string, Hex | Hex[]> {\n return args.reduce((result, arg, index) => {\n const name = abiInputs[index].name.replace('_', '');\n const value = parseEventArgValue(arg);\n\n result[name] = value;\n\n return result;\n }, {});\n}\n\n/**\n * Parse an event argument value.\n * @param value - The event argument value.\n * @returns The parsed event argument value.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction parseEventArgValue(value: any): Hex | Hex[] {\n if (Array.isArray(value)) {\n return value.map(parseEventArgValue) as Hex[];\n }\n\n return (value.toHexString?.() ?? value).toLowerCase();\n}\n\n/**\n * Generate token balance changes from parsed events.\n * @param request - The transaction that was simulated.\n * @param events - The parsed events.\n * @returns An array of token balance changes.\n */\nasync function getTokenBalanceChanges(\n request: GetSimulationDataRequest,\n events: ParsedEvent[],\n): Promise<SimulationTokenBalanceChange[]> {\n const balanceTxs = getTokenBalanceTransactions(request, events);\n\n log('Generated balance transactions', [...balanceTxs.after.values()]);\n\n const transactions = [\n ...balanceTxs.before.values(),\n request,\n ...balanceTxs.after.values(),\n ];\n\n if (transactions.length === 1) {\n return [];\n }\n\n const response = await simulateTransactions(request.chainId as Hex, {\n transactions,\n });\n\n log('Balance simulation response', response);\n\n if (response.transactions.length !== transactions.length) {\n throw new SimulationInvalidResponseError();\n }\n\n let prevBalanceTxIndex = 0;\n return [...balanceTxs.after.keys()]\n .map((token, index) => {\n const previousBalanceCheckSkipped = !balanceTxs.before.get(token);\n const previousBalance = previousBalanceCheckSkipped\n ? '0x0'\n : getValueFromBalanceTransaction(\n request.from,\n token,\n // eslint-disable-next-line no-plusplus\n response.transactions[prevBalanceTxIndex++],\n );\n\n const newBalance = getValueFromBalanceTransaction(\n request.from,\n token,\n response.transactions[index + balanceTxs.before.size + 1],\n );\n\n const balanceChange = getSimulationBalanceChange(\n previousBalance,\n newBalance,\n );\n\n if (!balanceChange) {\n return undefined;\n }\n\n return {\n ...token,\n ...balanceChange,\n };\n })\n .filter((change) => change !== undefined) as SimulationTokenBalanceChange[];\n}\n\n/**\n * Generate transactions to check token balances.\n * @param request - The transaction that was simulated.\n * @param events - The parsed events.\n * @returns A map of token balance transactions keyed by token.\n */\nfunction getTokenBalanceTransactions(\n request: GetSimulationDataRequest,\n events: ParsedEvent[],\n): {\n before: BalanceTransactionMap;\n after: BalanceTransactionMap;\n} {\n const tokenKeys = new Set();\n const before = new Map();\n const after = new Map();\n\n const userEvents = events.filter(\n (event) =>\n SUPPORTED_EVENTS.includes(event.name) &&\n [event.args.from, event.args.to].includes(request.from),\n );\n\n log('Filtered user events', userEvents);\n\n for (const event of userEvents) {\n const tokenIds = getEventTokenIds(event);\n\n log('Extracted token ids', tokenIds);\n\n for (const tokenId of tokenIds) {\n const simulationToken: SimulationToken = {\n address: event.contractAddress,\n standard: event.tokenStandard,\n id: tokenId,\n };\n\n const tokenKey = JSON.stringify(simulationToken);\n\n if (tokenKeys.has(tokenKey)) {\n log(\n 'Ignoring additional event with same contract and token ID',\n simulationToken,\n );\n continue;\n }\n\n tokenKeys.add(tokenKey);\n\n const data = getBalanceTransactionData(\n event.tokenStandard,\n request.from,\n tokenId,\n );\n\n const transaction: SimulationRequestTransaction = {\n from: request.from,\n to: event.contractAddress,\n data,\n };\n\n if (skipPriorBalanceCheck(event)) {\n after.set(simulationToken, transaction);\n } else {\n before.set(simulationToken, transaction);\n after.set(simulationToken, transaction);\n }\n }\n }\n\n return { before, after };\n}\n\n/**\n * Check if an event needs to check the previous balance.\n * @param event - The parsed event.\n * @returns True if the prior balance check should be skipped.\n */\nfunction skipPriorBalanceCheck(event: ParsedEvent): boolean {\n // In the case of an NFT mint, we cannot check the NFT owner before the mint\n // as the balance check transaction would revert.\n return (\n event.name === 'Transfer' &&\n event.tokenStandard === SimulationTokenStandard.erc721 &&\n parseInt(event.args.from as string, 16) === 0\n );\n}\n\n/**\n * Extract token IDs from a parsed event.\n * @param event - The parsed event.\n * @returns An array of token IDs.\n */\nfunction getEventTokenIds(event: ParsedEvent): (Hex | undefined)[] {\n if (event.tokenStandard === SimulationTokenStandard.erc721) {\n return [event.args.tokenId as Hex];\n }\n\n if (\n event.tokenStandard === SimulationTokenStandard.erc1155 &&\n event.name === 'TransferSingle'\n ) {\n return [event.args.id as Hex];\n }\n\n if (\n event.tokenStandard === SimulationTokenStandard.erc1155 &&\n event.name === 'TransferBatch'\n ) {\n return event.args.ids as Hex[];\n }\n\n // ERC-20 does not have a token ID so default to undefined.\n return [undefined];\n}\n\n/**\n * Extract the value from a balance transaction response.\n * @param from - The address to check the balance of.\n * @param token - The token to check the balance of.\n * @param response - The balance transaction response.\n * @returns The value of the balance transaction.\n */\nfunction getValueFromBalanceTransaction(\n from: Hex,\n token: SimulationToken,\n response: SimulationResponseTransaction,\n): Hex {\n const normalizedReturn = normalizeReturnValue(response.return);\n\n if (token.standard === SimulationTokenStandard.erc721) {\n return normalizedReturn === from ? '0x1' : '0x0';\n }\n\n return normalizedReturn;\n}\n\n/**\n * Generate the balance transaction data for a token.\n * @param tokenStandard - The token standard.\n * @param from - The address to check the balance of.\n * @param tokenId - The token ID to check the balance of.\n * @returns The balance transaction data.\n */\nfunction getBalanceTransactionData(\n tokenStandard: SimulationTokenStandard,\n from: Hex,\n tokenId?: Hex,\n): Hex {\n switch (tokenStandard) {\n case SimulationTokenStandard.erc721:\n return new Interface(abiERC721).encodeFunctionData('ownerOf', [\n tokenId,\n ]) as Hex;\n\n case SimulationTokenStandard.erc1155:\n return new Interface(abiERC1155).encodeFunctionData('balanceOf', [\n from,\n tokenId,\n ]) as Hex;\n\n default:\n return new Interface(abiERC20).encodeFunctionData('balanceOf', [\n from,\n ]) as Hex;\n }\n}\n\n/**\n * Parse a raw event log using known ABIs.\n * @param eventLog - The raw event log.\n * @param interfaces - The contract interfaces.\n * @returns The parsed event log or undefined if it could not be parsed.\n */\nfunction parseLog(\n eventLog: SimulationResponseLog,\n interfaces: Map<SupportedToken, Interface>,\n):\n | (LogDescription & { abi: ABI; standard: SimulationTokenStandard })\n | undefined {\n const supportedTokens = Object.values(SupportedToken);\n\n for (const token of supportedTokens) {\n try {\n const contractInterface = interfaces.get(token) as Interface;\n const { abi, standard } = SUPPORTED_TOKEN_ABIS[token];\n\n return {\n ...contractInterface.parseLog(eventLog),\n abi,\n standard,\n };\n } catch (e) {\n continue;\n }\n }\n\n return undefined;\n}\n\n/**\n * Extract all logs from a call trace tree.\n * @param call - The root call trace.\n * @returns An array of logs.\n */\nfunction extractLogs(\n call: SimulationResponseCallTrace,\n): SimulationResponseLog[] {\n /* istanbul ignore next */\n const logs = call.logs ?? [];\n\n /* istanbul ignore next */\n const nestedCalls = call.calls ?? [];\n\n return [\n ...logs,\n ...nestedCalls.map((nestedCall) => extractLogs(nestedCall)).flat(),\n ];\n}\n\n/**\n * Generate balance change data from previous and new balances.\n * @param previousBalance - The previous balance.\n * @param newBalance - The new balance.\n * @returns The balance change data or undefined if unchanged.\n */\nfunction getSimulationBalanceChange(\n previousBalance: Hex,\n newBalance: Hex,\n): SimulationBalanceChange | undefined {\n const differenceBN = hexToBN(newBalance).sub(hexToBN(previousBalance));\n const isDecrease = differenceBN.isNeg();\n const difference = toHex(differenceBN.abs());\n\n if (differenceBN.isZero()) {\n log('Balance change is zero');\n return undefined;\n }\n\n return {\n previousBalance,\n newBalance,\n difference,\n isDecrease,\n };\n}\n\n/**\n * Normalize a return value.\n * @param value - The return value to normalize.\n * @returns The normalized return value.\n */\nfunction normalizeReturnValue(value: Hex): Hex {\n return toHex(hexToBN(value));\n}\n\n/**\n * Get the contract interfaces for all supported tokens.\n * @returns A map of supported tokens to their contract interfaces.\n */\nfunction getContractInterfaces(): Map<SupportedToken, Interface> {\n const supportedTokens = Object.values(SupportedToken);\n\n return new Map(\n supportedTokens.map((tokenType) => {\n const { abi } = SUPPORTED_TOKEN_ABIS[tokenType];\n const contractInterface = new Interface(abi);\n return [tokenType, contractInterface];\n }),\n );\n}\n"],"mappings":"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","names":["SupportedToken"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  validateIfTransactionUnapproved
3
- } from "./chunk-J56A7UCK.mjs";
3
+ } from "./chunk-Q56I5ONX.mjs";
4
4
  import {
5
5
  CHAIN_IDS
6
6
  } from "./chunk-O6ZZVIFH.mjs";
@@ -254,4 +254,4 @@ export {
254
254
  updateSwapsTransaction,
255
255
  updatePostTransactionBalance
256
256
  };
257
- //# sourceMappingURL=chunk-IJ5GUKRO.mjs.map
257
+ //# sourceMappingURL=chunk-GNAL5HC2.mjs.map
@@ -4,17 +4,17 @@ import {
4
4
  } from "./chunk-6DDVVUJC.mjs";
5
5
  import {
6
6
  getSimulationData
7
- } from "./chunk-AHSDUIMT.mjs";
7
+ } from "./chunk-EVL6KODQ.mjs";
8
8
  import {
9
9
  determineTransactionType
10
10
  } from "./chunk-KG4UW4K4.mjs";
11
11
  import {
12
12
  validateTransactionOrigin,
13
13
  validateTxParams
14
- } from "./chunk-NM6OYEPP.mjs";
14
+ } from "./chunk-5ZEJT5SN.mjs";
15
15
  import {
16
16
  PendingTransactionTracker
17
- } from "./chunk-5YES3V2R.mjs";
17
+ } from "./chunk-6B5BEO3R.mjs";
18
18
  import {
19
19
  validateConfirmedExternalTransaction
20
20
  } from "./chunk-FRKQ3Z2L.mjs";
@@ -38,33 +38,33 @@ import {
38
38
  } from "./chunk-FMRLPVFZ.mjs";
39
39
  import {
40
40
  GasFeePoller
41
- } from "./chunk-NRQUBP3S.mjs";
41
+ } from "./chunk-MILG772S.mjs";
42
42
  import {
43
43
  getTransactionLayer1GasFee,
44
44
  updateTransactionLayer1GasFee
45
45
  } from "./chunk-NOHEXQ7Y.mjs";
46
46
  import {
47
47
  IncomingTransactionHelper
48
- } from "./chunk-Y7ENNK7L.mjs";
48
+ } from "./chunk-3ZV5YEUV.mjs";
49
49
  import {
50
50
  MultichainTrackingHelper
51
- } from "./chunk-AZ4WIRH3.mjs";
51
+ } from "./chunk-4V4XIPCI.mjs";
52
52
  import {
53
53
  EtherscanRemoteTransactionSource
54
- } from "./chunk-CPMTUMMZ.mjs";
54
+ } from "./chunk-EKJXGERC.mjs";
55
55
  import {
56
56
  LineaGasFeeFlow
57
- } from "./chunk-2TUDWNEI.mjs";
57
+ } from "./chunk-UZFDPHQI.mjs";
58
58
  import {
59
59
  DefaultGasFeeFlow
60
- } from "./chunk-V6HVF4EN.mjs";
60
+ } from "./chunk-OGK76ZPK.mjs";
61
61
  import {
62
62
  updateGasFees
63
- } from "./chunk-G5U6ABRU.mjs";
63
+ } from "./chunk-KLDYR4HR.mjs";
64
64
  import {
65
65
  updatePostTransactionBalance,
66
66
  updateSwapsTransaction
67
- } from "./chunk-IJ5GUKRO.mjs";
67
+ } from "./chunk-GNAL5HC2.mjs";
68
68
  import {
69
69
  getIncreasedPriceFromExisting,
70
70
  isEIP1559Transaction,
@@ -76,10 +76,10 @@ import {
76
76
  validateGasValues,
77
77
  validateIfTransactionUnapproved,
78
78
  validateMinimumIncrease
79
- } from "./chunk-J56A7UCK.mjs";
79
+ } from "./chunk-Q56I5ONX.mjs";
80
80
  import {
81
81
  getGasFeeFlow
82
- } from "./chunk-CDF4QNJA.mjs";
82
+ } from "./chunk-D6BF3IZK.mjs";
83
83
  import {
84
84
  projectLogger
85
85
  } from "./chunk-UQQWZT6C.mjs";
@@ -97,10 +97,10 @@ import { bufferToHex } from "@ethereumjs/util";
97
97
  import { BaseController } from "@metamask/base-controller";
98
98
  import {
99
99
  query,
100
- NetworkType,
101
100
  ApprovalType,
102
101
  ORIGIN_METAMASK,
103
- convertHexToDecimal
102
+ convertHexToDecimal,
103
+ isInfuraNetworkType
104
104
  } from "@metamask/controller-utils";
105
105
  import EthQuery from "@metamask/eth-query";
106
106
  import { NetworkClientType } from "@metamask/network-controller";
@@ -143,7 +143,7 @@ function getDefaultTransactionControllerState() {
143
143
  lastFetchedBlockNumbers: {}
144
144
  };
145
145
  }
146
- var _internalEvents, _incomingTransactionOptions, _pendingTransactionOptions, _transactionHistoryLimit, _isSimulationEnabled, _testGasFeeFlows, _multichainTrackingHelper, _createNonceTracker, createNonceTracker_fn, _createIncomingTransactionHelper, createIncomingTransactionHelper_fn, _createPendingTransactionTracker, createPendingTransactionTracker_fn, _checkForPendingTransactionAndStartPolling, _stopAllTracking, stopAllTracking_fn, _removeIncomingTransactionHelperListeners, removeIncomingTransactionHelperListeners_fn, _addIncomingTransactionHelperListeners, addIncomingTransactionHelperListeners_fn, _removePendingTransactionTrackerListeners, removePendingTransactionTrackerListeners_fn, _addPendingTransactionTrackerListeners, addPendingTransactionTrackerListeners_fn, _getNonceTrackerPendingTransactions, getNonceTrackerPendingTransactions_fn, _getGasFeeFlows, getGasFeeFlows_fn, _getLayer1GasFeeFlows, getLayer1GasFeeFlows_fn, _updateTransactionInternal, updateTransactionInternal_fn, _checkIfTransactionParamsUpdated, checkIfTransactionParamsUpdated_fn, _onTransactionParamsUpdated, onTransactionParamsUpdated_fn, _updateSimulationData, updateSimulationData_fn, _onGasFeePollerTransactionUpdate, onGasFeePollerTransactionUpdate_fn, _getNetworkClientId, getNetworkClientId_fn, _getGlobalNetworkClientId, getGlobalNetworkClientId_fn, _getGlobalChainId, getGlobalChainId_fn, _isCustomNetwork, isCustomNetwork_fn;
146
+ var _internalEvents, _incomingTransactionOptions, _pendingTransactionOptions, _transactionHistoryLimit, _isSimulationEnabled, _testGasFeeFlows, _multichainTrackingHelper, _createNonceTracker, createNonceTracker_fn, _createIncomingTransactionHelper, createIncomingTransactionHelper_fn, _createPendingTransactionTracker, createPendingTransactionTracker_fn, _checkForPendingTransactionAndStartPolling, _stopAllTracking, stopAllTracking_fn, _removeIncomingTransactionHelperListeners, removeIncomingTransactionHelperListeners_fn, _addIncomingTransactionHelperListeners, addIncomingTransactionHelperListeners_fn, _removePendingTransactionTrackerListeners, removePendingTransactionTrackerListeners_fn, _addPendingTransactionTrackerListeners, addPendingTransactionTrackerListeners_fn, _getNonceTrackerPendingTransactions, getNonceTrackerPendingTransactions_fn, _getGasFeeFlows, getGasFeeFlows_fn, _getLayer1GasFeeFlows, getLayer1GasFeeFlows_fn, _updateTransactionInternal, updateTransactionInternal_fn, _checkIfTransactionParamsUpdated, checkIfTransactionParamsUpdated_fn, _onTransactionParamsUpdated, onTransactionParamsUpdated_fn, _updateSimulationData, updateSimulationData_fn, _onGasFeePollerTransactionUpdate, onGasFeePollerTransactionUpdate_fn, _getNetworkClientId, getNetworkClientId_fn, _getGlobalNetworkClientId, getGlobalNetworkClientId_fn, _getGlobalChainId, getGlobalChainId_fn, _isCustomNetwork, isCustomNetwork_fn, _getSelectedAccount, getSelectedAccount_fn;
147
147
  var TransactionController = class extends BaseController {
148
148
  /**
149
149
  * Constructs a TransactionController.
@@ -161,7 +161,6 @@ var TransactionController = class extends BaseController {
161
161
  * @param options.getNetworkState - Gets the state of the network controller.
162
162
  * @param options.getPermittedAccounts - Get accounts that a given origin has permissions for.
163
163
  * @param options.getSavedGasFees - Gets the saved gas fee config.
164
- * @param options.getSelectedAddress - Gets the address of the currently selected account.
165
164
  * @param options.incomingTransactions - Configuration options for incoming transaction support.
166
165
  * @param options.isMultichainEnabled - Enable multichain support.
167
166
  * @param options.isSimulationEnabled - Whether new transactions will be automatically simulated.
@@ -189,7 +188,6 @@ var TransactionController = class extends BaseController {
189
188
  getNetworkState,
190
189
  getPermittedAccounts,
191
190
  getSavedGasFees,
192
- getSelectedAddress,
193
191
  incomingTransactions = {},
194
192
  isMultichainEnabled = false,
195
193
  isSimulationEnabled,
@@ -233,6 +231,7 @@ var TransactionController = class extends BaseController {
233
231
  __privateAdd(this, _getGlobalNetworkClientId);
234
232
  __privateAdd(this, _getGlobalChainId);
235
233
  __privateAdd(this, _isCustomNetwork);
234
+ __privateAdd(this, _getSelectedAccount);
236
235
  __privateAdd(this, _internalEvents, new EventEmitter());
237
236
  this.approvingTransactionIds = /* @__PURE__ */ new Set();
238
237
  this.mutex = new Mutex();
@@ -259,7 +258,6 @@ var TransactionController = class extends BaseController {
259
258
  this.getCurrentNetworkEIP1559Compatibility = getCurrentNetworkEIP1559Compatibility;
260
259
  this.getGasFeeEstimates = getGasFeeEstimates || (() => Promise.resolve({}));
261
260
  this.getPermittedAccounts = getPermittedAccounts;
262
- this.getSelectedAddress = getSelectedAddress;
263
261
  this.getExternalPendingTransactions = getExternalPendingTransactions ?? (() => []);
264
262
  this.securityProviderRequest = securityProviderRequest;
265
263
  __privateSet(this, _incomingTransactionOptions, incomingTransactions);
@@ -470,7 +468,7 @@ var TransactionController = class extends BaseController {
470
468
  if (origin) {
471
469
  await validateTransactionOrigin(
472
470
  await this.getPermittedAccounts(origin),
473
- this.getSelectedAddress(),
471
+ __privateMethod(this, _getSelectedAccount, getSelectedAccount_fn).call(this).address,
474
472
  txParams.from,
475
473
  origin
476
474
  );
@@ -1783,6 +1781,8 @@ var TransactionController = class extends BaseController {
1783
1781
  updatedTransactionMeta
1784
1782
  );
1785
1783
  __privateGet(this, _internalEvents).emit(
1784
+ // TODO: Either fix this lint violation or explain why it's necessary to ignore.
1785
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
1786
1786
  `${transactionMeta.id}:finished`,
1787
1787
  updatedTransactionMeta
1788
1788
  );
@@ -2248,7 +2248,6 @@ createNonceTracker_fn = function({
2248
2248
  // TODO: Fix types
2249
2249
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
2250
2250
  provider,
2251
- // @ts-expect-error TODO: Fix types
2252
2251
  blockTracker,
2253
2252
  getPendingTransactions: __privateMethod(this, _getNonceTrackerPendingTransactions, getNonceTrackerPendingTransactions_fn).bind(
2254
2253
  this,
@@ -2268,7 +2267,7 @@ createIncomingTransactionHelper_fn = function({
2268
2267
  }) {
2269
2268
  const incomingTransactionHelper = new IncomingTransactionHelper({
2270
2269
  blockTracker,
2271
- getCurrentAccount: this.getSelectedAddress,
2270
+ getCurrentAccount: () => __privateMethod(this, _getSelectedAccount, getSelectedAccount_fn).call(this),
2272
2271
  getLastFetchedBlockNumbers: () => this.state.lastFetchedBlockNumbers,
2273
2272
  getChainId: chainId ? () => chainId : this.getChainId.bind(this),
2274
2273
  isEnabled: __privateGet(this, _incomingTransactionOptions).isEnabled,
@@ -2533,19 +2532,28 @@ getGlobalNetworkClientId_fn = function() {
2533
2532
  };
2534
2533
  _getGlobalChainId = new WeakSet();
2535
2534
  getGlobalChainId_fn = function() {
2536
- return this.getNetworkState().providerConfig.chainId;
2535
+ return this.messagingSystem.call(
2536
+ `NetworkController:getNetworkClientById`,
2537
+ this.getNetworkState().selectedNetworkClientId
2538
+ ).configuration.chainId;
2537
2539
  };
2538
2540
  _isCustomNetwork = new WeakSet();
2539
2541
  isCustomNetwork_fn = function(networkClientId) {
2540
2542
  const globalNetworkClientId = __privateMethod(this, _getGlobalNetworkClientId, getGlobalNetworkClientId_fn).call(this);
2541
2543
  if (!networkClientId || networkClientId === globalNetworkClientId) {
2542
- return this.getNetworkState().providerConfig.type === NetworkType.rpc;
2544
+ return !isInfuraNetworkType(
2545
+ this.getNetworkState().selectedNetworkClientId
2546
+ );
2543
2547
  }
2544
2548
  return this.messagingSystem.call(
2545
2549
  `NetworkController:getNetworkClientById`,
2546
2550
  networkClientId
2547
2551
  ).configuration.type === NetworkClientType.Custom;
2548
2552
  };
2553
+ _getSelectedAccount = new WeakSet();
2554
+ getSelectedAccount_fn = function() {
2555
+ return this.messagingSystem.call("AccountsController:getSelectedAccount");
2556
+ };
2549
2557
 
2550
2558
  export {
2551
2559
  HARDFORK,
@@ -2554,4 +2562,4 @@ export {
2554
2562
  ApprovalState,
2555
2563
  TransactionController
2556
2564
  };
2557
- //# sourceMappingURL=chunk-VZSUWPFI.mjs.map
2565
+ //# sourceMappingURL=chunk-JMUEM7UQ.mjs.map