@metamask-previews/client-utils 1.2.1-preview-6cd1bb2f5 → 1.3.0-preview-0b2e3c9b4

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 (53) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/README.md +4 -0
  3. package/dist/index.cjs +3 -1
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.cts +2 -0
  6. package/dist/index.d.cts.map +1 -1
  7. package/dist/index.d.mts +2 -0
  8. package/dist/index.d.mts.map +1 -1
  9. package/dist/index.mjs +1 -0
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/mappers/api-transaction-mapper.cjs +64 -74
  12. package/dist/mappers/api-transaction-mapper.cjs.map +1 -1
  13. package/dist/mappers/api-transaction-mapper.d.cts.map +1 -1
  14. package/dist/mappers/api-transaction-mapper.d.mts.map +1 -1
  15. package/dist/mappers/api-transaction-mapper.mjs +65 -75
  16. package/dist/mappers/api-transaction-mapper.mjs.map +1 -1
  17. package/dist/mappers/helpers/caip.cjs +5 -41
  18. package/dist/mappers/helpers/caip.cjs.map +1 -1
  19. package/dist/mappers/helpers/caip.d.cts +0 -14
  20. package/dist/mappers/helpers/caip.d.cts.map +1 -1
  21. package/dist/mappers/helpers/caip.d.mts +0 -14
  22. package/dist/mappers/helpers/caip.d.mts.map +1 -1
  23. package/dist/mappers/helpers/caip.mjs +4 -39
  24. package/dist/mappers/helpers/caip.mjs.map +1 -1
  25. package/dist/mappers/helpers/transactions.cjs +37 -27
  26. package/dist/mappers/helpers/transactions.cjs.map +1 -1
  27. package/dist/mappers/helpers/transactions.d.cts +1 -1
  28. package/dist/mappers/helpers/transactions.d.cts.map +1 -1
  29. package/dist/mappers/helpers/transactions.d.mts +1 -1
  30. package/dist/mappers/helpers/transactions.d.mts.map +1 -1
  31. package/dist/mappers/helpers/transactions.mjs +38 -28
  32. package/dist/mappers/helpers/transactions.mjs.map +1 -1
  33. package/dist/mappers/local-transaction-mapper.cjs +26 -12
  34. package/dist/mappers/local-transaction-mapper.cjs.map +1 -1
  35. package/dist/mappers/local-transaction-mapper.d.cts.map +1 -1
  36. package/dist/mappers/local-transaction-mapper.d.mts.map +1 -1
  37. package/dist/mappers/local-transaction-mapper.mjs +27 -13
  38. package/dist/mappers/local-transaction-mapper.mjs.map +1 -1
  39. package/dist/mappers/ramps-order-mapper.cjs +94 -0
  40. package/dist/mappers/ramps-order-mapper.cjs.map +1 -0
  41. package/dist/mappers/ramps-order-mapper.d.cts +48 -0
  42. package/dist/mappers/ramps-order-mapper.d.cts.map +1 -0
  43. package/dist/mappers/ramps-order-mapper.d.mts +48 -0
  44. package/dist/mappers/ramps-order-mapper.d.mts.map +1 -0
  45. package/dist/mappers/ramps-order-mapper.mjs +90 -0
  46. package/dist/mappers/ramps-order-mapper.mjs.map +1 -0
  47. package/dist/types.cjs.map +1 -1
  48. package/dist/types.d.cts +34 -4
  49. package/dist/types.d.cts.map +1 -1
  50. package/dist/types.d.mts +34 -4
  51. package/dist/types.d.mts.map +1 -1
  52. package/dist/types.mjs.map +1 -1
  53. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"local-transaction-mapper.cjs","sourceRoot":"","sources":["../../src/mappers/local-transaction-mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { isEqualCaseInsensitive as equalsIgnoreCase } from '@metamask/controller-utils';\nimport { TransactionType } from '@metamask/transaction-controller';\nimport { KnownCaipNamespace, toCaipChainId } from '@metamask/utils';\n\nimport type { Fee, ActivityItem, TokenAmount } from '../types.js';\nimport {\n permit2ApproveMethodId,\n swapsWrappedTokensAddresses,\n supplyMethodIds,\n tokenTransferLogTopicHash,\n unwrapMethodIds,\n withdrawMethodIds,\n wrapMethodIds,\n} from './constants.js';\nimport { formatAddressToAssetId, getNativeAsset } from './helpers/caip.js';\nimport { getKnownTokenMetadata } from './helpers/token-metadata.js';\nimport {\n getLocalTransactionFees,\n getLocalTransactionStatus,\n isNftStandard,\n} from './helpers/transactions.js';\nimport type { TransactionGroup } from './helpers/transactions.js';\n\nconst evmNativeDecimals = 18;\n\n/**\n * Maps a local TransactionController group into the shared activity item shape.\n *\n * @param transactionGroup - The transaction group to map, optionally enriched by the client.\n * @returns The normalized activity item.\n */\nexport function mapLocalTransaction(\n transactionGroup: TransactionGroup & {\n sourceToken?: TokenAmount;\n destinationToken?: TokenAmount;\n nativeAssetSymbol?: string;\n contractTokenMetadata?: { symbol?: string; decimals?: number };\n activityStatus?: ActivityItem['status'];\n fees?: Fee[];\n },\n): ActivityItem {\n const fees =\n transactionGroup.fees ?? getLocalTransactionFees(transactionGroup);\n const { initialTransaction, primaryTransaction } = transactionGroup;\n const {\n transferInformation,\n type: transactionType,\n simulationData,\n txReceipt,\n metamaskPay,\n txParams: { from = '', to = '', data: txData, value: txValue } = {},\n } = initialTransaction;\n const {\n time: primaryTime,\n hash: primaryHash,\n id: primaryId,\n } = primaryTransaction;\n const methodId = txData?.slice(0, 10);\n // Permit2 approvals use the Permit2 contract as `to`, not the approved token.\n // Keep this mapper thin: still classify the activity as an approve, but omit\n // the token rather than surfacing the wrong one — the API mapper provides\n // accurate token data.\n const isPermit2Approve = methodId === permit2ApproveMethodId;\n const tokenContractAddress = isPermit2Approve\n ? undefined\n : (transferInformation?.contractAddress ?? (to || undefined));\n const chainId = toCaipChainId(\n KnownCaipNamespace.Eip155,\n Number.parseInt(initialTransaction.chainId, 16).toString(),\n );\n const nativeAsset = getNativeAsset(initialTransaction.chainId);\n const nativeSymbol =\n transactionGroup.nativeAssetSymbol ?? nativeAsset?.symbol;\n\n const getNativeToken = (\n transaction: TransactionGroup['initialTransaction'],\n direction: TokenAmount['direction'],\n ): TokenAmount | undefined => {\n if (nativeSymbol === undefined) {\n return undefined;\n }\n\n return {\n direction,\n symbol: nativeSymbol,\n ...(transaction.txParams.value\n ? { amount: transaction.txParams.value }\n : {}),\n ...(nativeAsset?.assetId ? { assetId: nativeAsset.assetId } : {}),\n decimals: nativeAsset?.decimals ?? evmNativeDecimals,\n };\n };\n\n const getContractTokenFromTransaction = ({\n contractAddress,\n direction,\n transaction,\n }: {\n contractAddress?: string;\n direction: TokenAmount['direction'];\n transaction: TransactionGroup['initialTransaction'];\n }): TokenAmount | undefined => {\n if (!contractAddress) {\n return undefined;\n }\n\n const symbol =\n transaction.transferInformation?.symbol ??\n transactionGroup.contractTokenMetadata?.symbol;\n const decimals =\n transaction.transferInformation?.decimals ??\n transactionGroup.contractTokenMetadata?.decimals;\n const amount = transaction.transferInformation?.amount;\n const assetId = formatAddressToAssetId(contractAddress, chainId);\n\n return {\n direction,\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n ...(amount ? { amount } : {}),\n ...(decimals === undefined ? {} : { decimals }),\n };\n };\n\n const getContractTokenWithKnownMetadata = ({\n amount,\n contractAddress,\n direction,\n transaction,\n }: {\n amount?: string;\n contractAddress?: string;\n direction: TokenAmount['direction'];\n transaction: TransactionGroup['initialTransaction'];\n }): TokenAmount | undefined => {\n if (!contractAddress) {\n return undefined;\n }\n\n const tokenMetadata = getKnownTokenMetadata(chainId, contractAddress);\n\n const isWrappedNativeToken = equalsIgnoreCase(\n contractAddress,\n swapsWrappedTokensAddresses[\n initialTransaction.chainId as keyof typeof swapsWrappedTokensAddresses\n ] || '',\n );\n const wrappedNativeTokenDecimals = isWrappedNativeToken\n ? (nativeAsset?.decimals ?? evmNativeDecimals)\n : undefined;\n\n const decimals =\n transaction.transferInformation?.amount === undefined\n ? (tokenMetadata?.decimals ??\n transactionGroup.contractTokenMetadata?.decimals ??\n wrappedNativeTokenDecimals)\n : transaction.transferInformation.decimals;\n const tokenAmount = transaction.transferInformation?.amount ?? amount;\n const symbol =\n transaction.transferInformation?.symbol ??\n tokenMetadata?.symbol ??\n transactionGroup.contractTokenMetadata?.symbol;\n const assetId = formatAddressToAssetId(contractAddress, chainId);\n\n return {\n direction,\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n ...(tokenAmount ? { amount: tokenAmount } : {}),\n ...(decimals === undefined ? {} : { decimals }),\n };\n };\n\n const status =\n transactionGroup.activityStatus ??\n getLocalTransactionStatus({\n primaryTransaction,\n initialTransaction,\n });\n const timestamp = primaryTime ?? initialTransaction.time;\n const hash = primaryHash ?? initialTransaction.hash ?? primaryId;\n const common = { chainId, status, timestamp, hash };\n\n switch (transactionType) {\n case TransactionType.simpleSend: {\n return {\n type: 'send',\n ...common,\n data: {\n from,\n to,\n token: getNativeToken(initialTransaction, 'out'),\n },\n };\n }\n\n case TransactionType.swap:\n case TransactionType.swapAndSend:\n case TransactionType.bridge: {\n const { sourceToken, destinationToken } = transactionGroup;\n\n return {\n type: transactionType === TransactionType.bridge ? 'bridge' : 'swap',\n ...common,\n data: {\n from,\n sourceToken,\n destinationToken,\n fees,\n },\n };\n }\n\n case TransactionType.tokenMethodSafeTransferFrom:\n case TransactionType.tokenMethodTransfer:\n case TransactionType.tokenMethodTransferFrom: {\n return {\n type: 'send',\n ...common,\n data: {\n from,\n to,\n token: getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: tokenContractAddress,\n }),\n },\n };\n }\n\n case TransactionType.lendingDeposit:\n case TransactionType.stakingDeposit:\n return {\n type:\n transactionType === TransactionType.stakingDeposit\n ? 'deposit'\n : 'lendingDeposit',\n ...common,\n data: {\n from,\n },\n };\n\n case TransactionType.incoming: {\n return {\n type: 'receive',\n ...common,\n data: {\n from,\n to,\n token: transferInformation?.contractAddress\n ? getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: transferInformation.contractAddress,\n })\n : getNativeToken(initialTransaction, 'in'),\n },\n };\n }\n case TransactionType.musdClaim:\n return {\n type: 'claimMusdBonus',\n ...common,\n data: {\n from,\n },\n };\n\n case TransactionType.musdConversion: {\n let conversionAmount: string | undefined;\n\n if (txData && txData.length >= 138) {\n try {\n conversionAmount = BigInt(`0x${txData.slice(74, 138)}`).toString();\n } catch {\n conversionAmount = undefined;\n }\n }\n\n return {\n type: 'convert',\n ...common,\n data: {\n from,\n sourceToken: transactionGroup.sourceToken,\n destinationToken: getContractTokenWithKnownMetadata({\n amount: conversionAmount,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: to,\n }),\n },\n };\n }\n\n case TransactionType.bridgeApproval:\n case TransactionType.shieldSubscriptionApprove:\n case TransactionType.swapApproval:\n case TransactionType.tokenMethodSetApprovalForAll:\n case TransactionType.tokenMethodApprove:\n case TransactionType.tokenMethodIncreaseAllowance: {\n const approvalToken = getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: tokenContractAddress,\n });\n\n return {\n type:\n transactionType === TransactionType.tokenMethodIncreaseAllowance\n ? 'increaseSpendingCap'\n : 'approveSpendingCap',\n ...common,\n data: {\n from,\n token: approvalToken,\n },\n };\n }\n\n case TransactionType.perpsDeposit:\n case TransactionType.perpsDepositAndOrder:\n case TransactionType.perpsWithdraw: {\n const token = to\n ? {\n direction: 'out' as const,\n assetId: formatAddressToAssetId(to, chainId),\n }\n : undefined;\n\n const fiat = metamaskPay?.targetFiat\n ? { amount: metamaskPay.targetFiat }\n : undefined;\n const networkFee =\n typeof metamaskPay?.networkFeeFiat === 'string'\n ? { amount: metamaskPay.networkFeeFiat }\n : undefined;\n\n return {\n type:\n transactionType === TransactionType.perpsWithdraw\n ? 'perpsWithdraw'\n : 'perpsAddFunds',\n ...common,\n data: {\n from,\n token,\n fiat,\n networkFee,\n },\n };\n }\n\n default: {\n const isSupplyContractInteraction =\n transactionType === TransactionType.contractInteraction &&\n methodId &&\n supplyMethodIds.has(methodId.toLowerCase());\n const isWithdrawContractInteraction =\n transactionType === TransactionType.contractInteraction &&\n methodId &&\n withdrawMethodIds.has(methodId.toLowerCase());\n\n let hasNativeValue = false;\n\n try {\n hasNativeValue = BigInt(txValue ?? '0') > 0n;\n } catch {\n hasNativeValue = false;\n }\n\n // Confirm an outflow before labelling a supply, mirroring the API mapper's\n // `sentTransfer` guard: native stakes (e.g. Lido) decrease the native\n // balance, while ERC-20 supplies (e.g. Aave) show a token decrease.\n const isSupply =\n isSupplyContractInteraction &&\n (simulationData?.nativeBalanceChange?.isDecrease === true ||\n simulationData?.tokenBalanceChanges?.some(\n ({ isDecrease, standard }) => isDecrease && standard === 'erc20',\n ) === true);\n const incomingNftBalanceChange =\n transactionType === TransactionType.contractInteraction &&\n simulationData?.tokenBalanceChanges?.find(\n ({ isDecrease, standard }) => !isDecrease && isNftStandard(standard),\n );\n\n if (incomingNftBalanceChange && hasNativeValue) {\n // Keep this mapper thin: classify the activity as an NFT buy and let the\n // API mapper provide the token/payment details.\n return {\n type: 'nftBuy',\n ...common,\n data: {\n from,\n },\n };\n }\n\n if (isSupply) {\n return {\n type: 'lendingDeposit',\n ...common,\n data: {\n from,\n },\n };\n }\n\n // lending withdrawal - applies to Earn features only\n if (isWithdrawContractInteraction) {\n const fromAddress = from.toLowerCase();\n const receivedTokenLog = (txReceipt?.logs ?? []).find(\n ({ topics: [eventTopic, , logTo] = [] }) => {\n const toAddress = logTo\n ? `0x${logTo.slice(-40)}`.toLowerCase()\n : undefined;\n\n return (\n eventTopic?.toLowerCase() === tokenTransferLogTopicHash &&\n toAddress === fromAddress\n );\n },\n );\n let receivedAmount: string | undefined;\n\n if (receivedTokenLog) {\n try {\n receivedAmount = BigInt(String(receivedTokenLog.data)).toString();\n } catch {\n receivedAmount = undefined;\n }\n }\n\n const destinationToken = receivedTokenLog\n ? getContractTokenWithKnownMetadata({\n amount: receivedAmount,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: receivedTokenLog.address,\n })\n : undefined;\n\n return {\n type: 'lendingWithdrawal',\n ...common,\n data: {\n from,\n destinationToken,\n },\n };\n }\n\n // wrap and unwrap\n if (transactionType === TransactionType.contractInteraction && methodId) {\n const wrappedTokenAddress =\n swapsWrappedTokensAddresses[\n initialTransaction.chainId as keyof typeof swapsWrappedTokensAddresses\n ];\n\n if (wrappedTokenAddress && equalsIgnoreCase(to, wrappedTokenAddress)) {\n const normalizedMethodId = methodId.toLowerCase();\n\n if (wrapMethodIds.has(normalizedMethodId)) {\n try {\n if (txValue && BigInt(txValue) > 0n) {\n return {\n type: 'wrap',\n ...common,\n data: {\n from,\n sourceToken: getNativeToken(initialTransaction, 'out'),\n destinationToken: getContractTokenWithKnownMetadata({\n amount: txValue,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: wrappedTokenAddress,\n }),\n },\n };\n }\n } catch {\n // Invalid native value — fall through.\n }\n }\n\n if (unwrapMethodIds.has(normalizedMethodId)) {\n let unwrapAmount: string | undefined;\n\n if (txData && txData.length >= 74) {\n try {\n unwrapAmount = BigInt(`0x${txData.slice(10, 74)}`).toString();\n } catch {\n unwrapAmount = undefined;\n }\n }\n\n const nativeToken = getNativeToken(initialTransaction, 'in');\n\n return {\n type: 'unwrap',\n ...common,\n data: {\n from,\n sourceToken: getContractTokenWithKnownMetadata({\n amount: unwrapAmount,\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: wrappedTokenAddress,\n }),\n destinationToken:\n nativeToken && unwrapAmount\n ? { ...nativeToken, amount: unwrapAmount }\n : nativeToken,\n },\n };\n }\n }\n }\n\n const token = ((): TokenAmount | undefined => {\n if (txValue === undefined || txValue === '') {\n return undefined;\n }\n\n try {\n return BigInt(txValue) > 0n\n ? getNativeToken(initialTransaction, 'out')\n : undefined;\n } catch {\n return undefined;\n }\n })();\n\n return {\n type: 'contractInteraction',\n ...common,\n data: {\n from,\n to,\n ...(token ? { token } : {}),\n methodId,\n },\n };\n }\n }\n}\n"]}
1
+ {"version":3,"file":"local-transaction-mapper.cjs","sourceRoot":"","sources":["../../src/mappers/local-transaction-mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { isEqualCaseInsensitive as equalsIgnoreCase } from '@metamask/controller-utils';\nimport { TransactionType } from '@metamask/transaction-controller';\nimport { KnownCaipNamespace, toCaipChainId } from '@metamask/utils';\n\nimport type { Fee, ActivityItem, TokenAmount } from '../types.js';\nimport {\n permit2ApproveMethodId,\n swapsWrappedTokensAddresses,\n supplyMethodIds,\n tokenTransferLogTopicHash,\n unwrapMethodIds,\n withdrawMethodIds,\n wrapMethodIds,\n} from './constants.js';\nimport { formatAddressToAssetId } from './helpers/caip.js';\nimport { getKnownTokenMetadata } from './helpers/token-metadata.js';\nimport {\n getLocalTransactionFees,\n getLocalTransactionStatus,\n isNftStandard,\n} from './helpers/transactions.js';\nimport type { TransactionGroup } from './helpers/transactions.js';\n\nconst evmNativeDecimals = 18;\n\n/**\n * Maps a local TransactionController group into the shared activity item shape.\n *\n * @param transactionGroup - The transaction group to map, optionally enriched by the client.\n * @returns The normalized activity item.\n */\nexport function mapLocalTransaction(\n transactionGroup: TransactionGroup & {\n sourceToken?: TokenAmount;\n destinationToken?: TokenAmount;\n nativeAssetSymbol?: string;\n contractTokenMetadata?: { symbol?: string; decimals?: number };\n activityStatus?: ActivityItem['status'];\n fees?: Fee[];\n },\n): ActivityItem {\n const fees =\n transactionGroup.fees ?? getLocalTransactionFees(transactionGroup);\n const { initialTransaction, primaryTransaction } = transactionGroup;\n const {\n transferInformation,\n type: transactionType,\n simulationData,\n txReceipt,\n metamaskPay,\n txParams: { from = '', to = '', data: txData, value: txValue } = {},\n } = initialTransaction;\n const {\n time: primaryTime,\n hash: primaryHash,\n id: primaryId,\n } = primaryTransaction;\n const methodId = txData?.slice(0, 10);\n // Permit2 approvals use the Permit2 contract as `to`, not the approved token.\n // Keep this mapper thin: still classify the activity as an approve, but omit\n // the token rather than surfacing the wrong one — the API mapper provides\n // accurate token data.\n const isPermit2Approve = methodId === permit2ApproveMethodId;\n const tokenContractAddress = isPermit2Approve\n ? undefined\n : (transferInformation?.contractAddress ?? (to || undefined));\n const chainId = toCaipChainId(\n KnownCaipNamespace.Eip155,\n Number.parseInt(initialTransaction.chainId, 16).toString(),\n );\n const nativeSymbol = transactionGroup.nativeAssetSymbol;\n\n const getNativeToken = (\n transaction: TransactionGroup['initialTransaction'],\n direction: TokenAmount['direction'],\n ): TokenAmount | undefined => {\n const rawAmount = transaction.txParams.value;\n let amount: string | undefined;\n if (rawAmount) {\n try {\n amount = BigInt(rawAmount) > 0n ? rawAmount : undefined;\n } catch {\n amount = undefined;\n }\n }\n\n if (!amount && nativeSymbol === undefined) {\n return undefined;\n }\n\n return {\n direction,\n assetType: 'native',\n decimals: evmNativeDecimals,\n ...(amount ? { amount } : {}),\n ...(nativeSymbol === undefined ? {} : { symbol: nativeSymbol }),\n };\n };\n\n const getContractTokenFromTransaction = ({\n contractAddress,\n direction,\n transaction,\n }: {\n contractAddress?: string;\n direction: TokenAmount['direction'];\n transaction: TransactionGroup['initialTransaction'];\n }): TokenAmount | undefined => {\n if (!contractAddress) {\n return undefined;\n }\n\n const symbol =\n transaction.transferInformation?.symbol ??\n transactionGroup.contractTokenMetadata?.symbol;\n const decimals =\n transaction.transferInformation?.decimals ??\n transactionGroup.contractTokenMetadata?.decimals;\n const amount = transaction.transferInformation?.amount;\n const assetId = formatAddressToAssetId(contractAddress, chainId);\n\n return {\n direction,\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n ...(amount ? { amount } : {}),\n ...(decimals === undefined ? {} : { decimals }),\n };\n };\n\n const getContractTokenWithKnownMetadata = ({\n amount,\n contractAddress,\n direction,\n transaction,\n }: {\n amount?: string;\n contractAddress?: string;\n direction: TokenAmount['direction'];\n transaction: TransactionGroup['initialTransaction'];\n }): TokenAmount | undefined => {\n if (!contractAddress) {\n return undefined;\n }\n\n const tokenMetadata = getKnownTokenMetadata(chainId, contractAddress);\n\n const isWrappedNativeToken = equalsIgnoreCase(\n contractAddress,\n swapsWrappedTokensAddresses[\n initialTransaction.chainId as keyof typeof swapsWrappedTokensAddresses\n ] || '',\n );\n const wrappedNativeTokenDecimals = isWrappedNativeToken\n ? evmNativeDecimals\n : undefined;\n\n const decimals =\n transaction.transferInformation?.amount === undefined\n ? (tokenMetadata?.decimals ??\n transactionGroup.contractTokenMetadata?.decimals ??\n wrappedNativeTokenDecimals)\n : transaction.transferInformation.decimals;\n const tokenAmount = transaction.transferInformation?.amount ?? amount;\n const symbol =\n transaction.transferInformation?.symbol ??\n tokenMetadata?.symbol ??\n transactionGroup.contractTokenMetadata?.symbol;\n const assetId = formatAddressToAssetId(contractAddress, chainId);\n\n return {\n direction,\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n ...(tokenAmount ? { amount: tokenAmount } : {}),\n ...(decimals === undefined ? {} : { decimals }),\n };\n };\n\n const status =\n transactionGroup.activityStatus ??\n getLocalTransactionStatus({\n primaryTransaction,\n initialTransaction,\n });\n const timestamp = primaryTime ?? initialTransaction.time;\n const hash = primaryHash ?? initialTransaction.hash ?? primaryId;\n const common = { chainId, status, timestamp, hash };\n\n switch (transactionType) {\n case TransactionType.simpleSend: {\n return {\n type: 'send',\n ...common,\n data: {\n from,\n to,\n token: getNativeToken(initialTransaction, 'out'),\n },\n };\n }\n\n case TransactionType.swap:\n case TransactionType.swapAndSend:\n case TransactionType.bridge: {\n const { sourceToken, destinationToken } = transactionGroup;\n\n return {\n type: transactionType === TransactionType.bridge ? 'bridge' : 'swap',\n ...common,\n data: {\n from,\n sourceToken,\n destinationToken,\n fees,\n },\n };\n }\n\n case TransactionType.tokenMethodSafeTransferFrom:\n case TransactionType.tokenMethodTransfer:\n case TransactionType.tokenMethodTransferFrom: {\n return {\n type: 'send',\n ...common,\n data: {\n from,\n to,\n token: getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: tokenContractAddress,\n }),\n },\n };\n }\n\n case TransactionType.lendingDeposit:\n case TransactionType.stakingDeposit:\n return {\n type:\n transactionType === TransactionType.stakingDeposit\n ? 'deposit'\n : 'lendingDeposit',\n ...common,\n data: {\n from,\n },\n };\n\n case TransactionType.incoming: {\n return {\n type: 'receive',\n ...common,\n data: {\n from,\n to,\n token: transferInformation?.contractAddress\n ? getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: transferInformation.contractAddress,\n })\n : getNativeToken(initialTransaction, 'in'),\n },\n };\n }\n case TransactionType.musdClaim:\n return {\n type: 'claimMusdBonus',\n ...common,\n data: {\n from,\n },\n };\n\n case TransactionType.musdConversion: {\n let conversionAmount: string | undefined;\n\n if (txData && txData.length >= 138) {\n try {\n conversionAmount = BigInt(`0x${txData.slice(74, 138)}`).toString();\n } catch {\n conversionAmount = undefined;\n }\n }\n\n return {\n type: 'convert',\n ...common,\n data: {\n from,\n sourceToken: transactionGroup.sourceToken,\n destinationToken: getContractTokenWithKnownMetadata({\n amount: conversionAmount,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: to,\n }),\n },\n };\n }\n\n case TransactionType.bridgeApproval:\n case TransactionType.shieldSubscriptionApprove:\n case TransactionType.swapApproval:\n case TransactionType.tokenMethodSetApprovalForAll:\n case TransactionType.tokenMethodApprove:\n case TransactionType.tokenMethodIncreaseAllowance: {\n const approvalToken = getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: tokenContractAddress,\n });\n\n return {\n type:\n transactionType === TransactionType.tokenMethodIncreaseAllowance\n ? 'increaseSpendingCap'\n : 'approveSpendingCap',\n ...common,\n data: {\n from,\n token: approvalToken,\n },\n };\n }\n\n case TransactionType.perpsDeposit:\n case TransactionType.perpsDepositAndOrder:\n case TransactionType.perpsWithdraw: {\n const token = to\n ? {\n direction: 'out' as const,\n assetId: formatAddressToAssetId(to, chainId),\n }\n : undefined;\n\n const fiat = metamaskPay?.targetFiat\n ? { amount: metamaskPay.targetFiat }\n : undefined;\n const networkFee =\n typeof metamaskPay?.networkFeeFiat === 'string'\n ? { amount: metamaskPay.networkFeeFiat }\n : undefined;\n\n return {\n type:\n transactionType === TransactionType.perpsWithdraw\n ? 'perpsWithdraw'\n : 'perpsAddFunds',\n ...common,\n data: {\n from,\n token,\n fiat,\n networkFee,\n },\n };\n }\n\n default: {\n const isSupplyContractInteraction =\n transactionType === TransactionType.contractInteraction &&\n methodId &&\n supplyMethodIds.has(methodId.toLowerCase());\n const isWithdrawContractInteraction =\n transactionType === TransactionType.contractInteraction &&\n methodId &&\n withdrawMethodIds.has(methodId.toLowerCase());\n\n let hasNativeValue = false;\n\n try {\n hasNativeValue = BigInt(txValue ?? '0') > 0n;\n } catch {\n hasNativeValue = false;\n }\n\n // Confirm an outflow before labelling a supply, mirroring the API mapper's\n // `sentTransfer` guard: native stakes (e.g. Lido) decrease the native\n // balance, while ERC-20 supplies (e.g. Aave) show a token decrease.\n const isSupply =\n isSupplyContractInteraction &&\n (simulationData?.nativeBalanceChange?.isDecrease === true ||\n simulationData?.tokenBalanceChanges?.some(\n ({ isDecrease, standard }) => isDecrease && standard === 'erc20',\n ) === true);\n const incomingNftBalanceChange =\n transactionType === TransactionType.contractInteraction &&\n simulationData?.tokenBalanceChanges?.find(\n ({ isDecrease, standard }) => !isDecrease && isNftStandard(standard),\n );\n\n if (incomingNftBalanceChange && hasNativeValue) {\n // Keep this mapper thin: classify the activity as an NFT buy and let the\n // API mapper provide the token/payment details.\n return {\n type: 'nftBuy',\n ...common,\n data: {\n from,\n },\n };\n }\n\n if (isSupply) {\n return {\n type: 'lendingDeposit',\n ...common,\n data: {\n from,\n },\n };\n }\n\n // lending withdrawal - applies to Earn features only\n if (isWithdrawContractInteraction) {\n const fromAddress = from.toLowerCase();\n const receivedTokenLog = (txReceipt?.logs ?? []).find(\n ({ topics: [eventTopic, , logTo] = [] }) => {\n const toAddress = logTo\n ? `0x${logTo.slice(-40)}`.toLowerCase()\n : undefined;\n\n return (\n eventTopic?.toLowerCase() === tokenTransferLogTopicHash &&\n toAddress === fromAddress\n );\n },\n );\n let receivedAmount: string | undefined;\n\n if (receivedTokenLog) {\n try {\n receivedAmount = BigInt(String(receivedTokenLog.data)).toString();\n } catch {\n receivedAmount = undefined;\n }\n }\n\n const destinationToken = receivedTokenLog\n ? getContractTokenWithKnownMetadata({\n amount: receivedAmount,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: receivedTokenLog.address,\n })\n : undefined;\n\n return {\n type: 'lendingWithdrawal',\n ...common,\n data: {\n from,\n destinationToken,\n },\n };\n }\n\n // wrap and unwrap\n if (transactionType === TransactionType.contractInteraction && methodId) {\n const wrappedTokenAddress =\n swapsWrappedTokensAddresses[\n initialTransaction.chainId as keyof typeof swapsWrappedTokensAddresses\n ];\n\n if (wrappedTokenAddress && equalsIgnoreCase(to, wrappedTokenAddress)) {\n const normalizedMethodId = methodId.toLowerCase();\n\n if (wrapMethodIds.has(normalizedMethodId)) {\n try {\n if (txValue && BigInt(txValue) > 0n) {\n return {\n type: 'wrap',\n ...common,\n data: {\n from,\n sourceToken: getNativeToken(initialTransaction, 'out'),\n destinationToken: getContractTokenWithKnownMetadata({\n amount: txValue,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: wrappedTokenAddress,\n }),\n },\n };\n }\n } catch {\n // Invalid native value — fall through.\n }\n }\n\n if (unwrapMethodIds.has(normalizedMethodId)) {\n let unwrapAmount: string | undefined;\n\n if (txData && txData.length >= 74) {\n try {\n unwrapAmount = BigInt(`0x${txData.slice(10, 74)}`).toString();\n } catch {\n unwrapAmount = undefined;\n }\n }\n\n const nativeToken = getNativeToken(initialTransaction, 'in');\n\n return {\n type: 'unwrap',\n ...common,\n data: {\n from,\n sourceToken: getContractTokenWithKnownMetadata({\n amount: unwrapAmount,\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: wrappedTokenAddress,\n }),\n destinationToken: unwrapAmount\n ? {\n ...(nativeToken ?? {\n direction: 'in' as const,\n assetType: 'native' as const,\n decimals: evmNativeDecimals,\n }),\n amount: unwrapAmount,\n }\n : nativeToken,\n },\n };\n }\n }\n }\n\n const token = ((): TokenAmount | undefined => {\n if (txValue === undefined || txValue === '') {\n return undefined;\n }\n\n try {\n return BigInt(txValue) > 0n\n ? getNativeToken(initialTransaction, 'out')\n : undefined;\n } catch {\n return undefined;\n }\n })();\n\n return {\n type: 'contractInteraction',\n ...common,\n data: {\n from,\n to,\n ...(token ? { token } : {}),\n methodId,\n },\n };\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"local-transaction-mapper.d.cts","sourceRoot":"","sources":["../../src/mappers/local-transaction-mapper.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAoB;AAiBlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,mCAAkC;AAIlE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,gBAAgB,GAAG;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,cAAc,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;CACd,GACA,YAAY,CA2fd"}
1
+ {"version":3,"file":"local-transaction-mapper.d.cts","sourceRoot":"","sources":["../../src/mappers/local-transaction-mapper.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAoB;AAiBlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,mCAAkC;AAIlE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,gBAAgB,GAAG;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,cAAc,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;CACd,GACA,YAAY,CAugBd"}
@@ -1 +1 @@
1
- {"version":3,"file":"local-transaction-mapper.d.mts","sourceRoot":"","sources":["../../src/mappers/local-transaction-mapper.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAoB;AAiBlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,mCAAkC;AAIlE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,gBAAgB,GAAG;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,cAAc,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;CACd,GACA,YAAY,CA2fd"}
1
+ {"version":3,"file":"local-transaction-mapper.d.mts","sourceRoot":"","sources":["../../src/mappers/local-transaction-mapper.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAoB;AAiBlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,mCAAkC;AAIlE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,gBAAgB,GAAG;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,cAAc,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;CACd,GACA,YAAY,CAugBd"}
@@ -2,7 +2,7 @@ import { isEqualCaseInsensitive as equalsIgnoreCase } from "@metamask/controller
2
2
  import { TransactionType } from "@metamask/transaction-controller";
3
3
  import { KnownCaipNamespace, toCaipChainId } from "@metamask/utils";
4
4
  import { permit2ApproveMethodId, swapsWrappedTokensAddresses, supplyMethodIds, tokenTransferLogTopicHash, unwrapMethodIds, withdrawMethodIds, wrapMethodIds } from "./constants.mjs";
5
- import { formatAddressToAssetId, getNativeAsset } from "./helpers/caip.mjs";
5
+ import { formatAddressToAssetId } from "./helpers/caip.mjs";
6
6
  import { getKnownTokenMetadata } from "./helpers/token-metadata.mjs";
7
7
  import { getLocalTransactionFees, getLocalTransactionStatus, isNftStandard } from "./helpers/transactions.mjs";
8
8
  const evmNativeDecimals = 18;
@@ -27,20 +27,27 @@ export function mapLocalTransaction(transactionGroup) {
27
27
  ? undefined
28
28
  : (transferInformation?.contractAddress ?? (to || undefined));
29
29
  const chainId = toCaipChainId(KnownCaipNamespace.Eip155, Number.parseInt(initialTransaction.chainId, 16).toString());
30
- const nativeAsset = getNativeAsset(initialTransaction.chainId);
31
- const nativeSymbol = transactionGroup.nativeAssetSymbol ?? nativeAsset?.symbol;
30
+ const nativeSymbol = transactionGroup.nativeAssetSymbol;
32
31
  const getNativeToken = (transaction, direction) => {
33
- if (nativeSymbol === undefined) {
32
+ const rawAmount = transaction.txParams.value;
33
+ let amount;
34
+ if (rawAmount) {
35
+ try {
36
+ amount = BigInt(rawAmount) > 0n ? rawAmount : undefined;
37
+ }
38
+ catch {
39
+ amount = undefined;
40
+ }
41
+ }
42
+ if (!amount && nativeSymbol === undefined) {
34
43
  return undefined;
35
44
  }
36
45
  return {
37
46
  direction,
38
- symbol: nativeSymbol,
39
- ...(transaction.txParams.value
40
- ? { amount: transaction.txParams.value }
41
- : {}),
42
- ...(nativeAsset?.assetId ? { assetId: nativeAsset.assetId } : {}),
43
- decimals: nativeAsset?.decimals ?? evmNativeDecimals,
47
+ assetType: 'native',
48
+ decimals: evmNativeDecimals,
49
+ ...(amount ? { amount } : {}),
50
+ ...(nativeSymbol === undefined ? {} : { symbol: nativeSymbol }),
44
51
  };
45
52
  };
46
53
  const getContractTokenFromTransaction = ({ contractAddress, direction, transaction, }) => {
@@ -68,7 +75,7 @@ export function mapLocalTransaction(transactionGroup) {
68
75
  const tokenMetadata = getKnownTokenMetadata(chainId, contractAddress);
69
76
  const isWrappedNativeToken = equalsIgnoreCase(contractAddress, swapsWrappedTokensAddresses[initialTransaction.chainId] || '');
70
77
  const wrappedNativeTokenDecimals = isWrappedNativeToken
71
- ? (nativeAsset?.decimals ?? evmNativeDecimals)
78
+ ? evmNativeDecimals
72
79
  : undefined;
73
80
  const decimals = transaction.transferInformation?.amount === undefined
74
81
  ? (tokenMetadata?.decimals ??
@@ -379,8 +386,15 @@ export function mapLocalTransaction(transactionGroup) {
379
386
  direction: 'out',
380
387
  contractAddress: wrappedTokenAddress,
381
388
  }),
382
- destinationToken: nativeToken && unwrapAmount
383
- ? { ...nativeToken, amount: unwrapAmount }
389
+ destinationToken: unwrapAmount
390
+ ? {
391
+ ...(nativeToken ?? {
392
+ direction: 'in',
393
+ assetType: 'native',
394
+ decimals: evmNativeDecimals,
395
+ }),
396
+ amount: unwrapAmount,
397
+ }
384
398
  : nativeToken,
385
399
  },
386
400
  };
@@ -1 +1 @@
1
- {"version":3,"file":"local-transaction-mapper.mjs","sourceRoot":"","sources":["../../src/mappers/local-transaction-mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { isEqualCaseInsensitive as equalsIgnoreCase } from '@metamask/controller-utils';\nimport { TransactionType } from '@metamask/transaction-controller';\nimport { KnownCaipNamespace, toCaipChainId } from '@metamask/utils';\n\nimport type { Fee, ActivityItem, TokenAmount } from '../types.js';\nimport {\n permit2ApproveMethodId,\n swapsWrappedTokensAddresses,\n supplyMethodIds,\n tokenTransferLogTopicHash,\n unwrapMethodIds,\n withdrawMethodIds,\n wrapMethodIds,\n} from './constants.js';\nimport { formatAddressToAssetId, getNativeAsset } from './helpers/caip.js';\nimport { getKnownTokenMetadata } from './helpers/token-metadata.js';\nimport {\n getLocalTransactionFees,\n getLocalTransactionStatus,\n isNftStandard,\n} from './helpers/transactions.js';\nimport type { TransactionGroup } from './helpers/transactions.js';\n\nconst evmNativeDecimals = 18;\n\n/**\n * Maps a local TransactionController group into the shared activity item shape.\n *\n * @param transactionGroup - The transaction group to map, optionally enriched by the client.\n * @returns The normalized activity item.\n */\nexport function mapLocalTransaction(\n transactionGroup: TransactionGroup & {\n sourceToken?: TokenAmount;\n destinationToken?: TokenAmount;\n nativeAssetSymbol?: string;\n contractTokenMetadata?: { symbol?: string; decimals?: number };\n activityStatus?: ActivityItem['status'];\n fees?: Fee[];\n },\n): ActivityItem {\n const fees =\n transactionGroup.fees ?? getLocalTransactionFees(transactionGroup);\n const { initialTransaction, primaryTransaction } = transactionGroup;\n const {\n transferInformation,\n type: transactionType,\n simulationData,\n txReceipt,\n metamaskPay,\n txParams: { from = '', to = '', data: txData, value: txValue } = {},\n } = initialTransaction;\n const {\n time: primaryTime,\n hash: primaryHash,\n id: primaryId,\n } = primaryTransaction;\n const methodId = txData?.slice(0, 10);\n // Permit2 approvals use the Permit2 contract as `to`, not the approved token.\n // Keep this mapper thin: still classify the activity as an approve, but omit\n // the token rather than surfacing the wrong one — the API mapper provides\n // accurate token data.\n const isPermit2Approve = methodId === permit2ApproveMethodId;\n const tokenContractAddress = isPermit2Approve\n ? undefined\n : (transferInformation?.contractAddress ?? (to || undefined));\n const chainId = toCaipChainId(\n KnownCaipNamespace.Eip155,\n Number.parseInt(initialTransaction.chainId, 16).toString(),\n );\n const nativeAsset = getNativeAsset(initialTransaction.chainId);\n const nativeSymbol =\n transactionGroup.nativeAssetSymbol ?? nativeAsset?.symbol;\n\n const getNativeToken = (\n transaction: TransactionGroup['initialTransaction'],\n direction: TokenAmount['direction'],\n ): TokenAmount | undefined => {\n if (nativeSymbol === undefined) {\n return undefined;\n }\n\n return {\n direction,\n symbol: nativeSymbol,\n ...(transaction.txParams.value\n ? { amount: transaction.txParams.value }\n : {}),\n ...(nativeAsset?.assetId ? { assetId: nativeAsset.assetId } : {}),\n decimals: nativeAsset?.decimals ?? evmNativeDecimals,\n };\n };\n\n const getContractTokenFromTransaction = ({\n contractAddress,\n direction,\n transaction,\n }: {\n contractAddress?: string;\n direction: TokenAmount['direction'];\n transaction: TransactionGroup['initialTransaction'];\n }): TokenAmount | undefined => {\n if (!contractAddress) {\n return undefined;\n }\n\n const symbol =\n transaction.transferInformation?.symbol ??\n transactionGroup.contractTokenMetadata?.symbol;\n const decimals =\n transaction.transferInformation?.decimals ??\n transactionGroup.contractTokenMetadata?.decimals;\n const amount = transaction.transferInformation?.amount;\n const assetId = formatAddressToAssetId(contractAddress, chainId);\n\n return {\n direction,\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n ...(amount ? { amount } : {}),\n ...(decimals === undefined ? {} : { decimals }),\n };\n };\n\n const getContractTokenWithKnownMetadata = ({\n amount,\n contractAddress,\n direction,\n transaction,\n }: {\n amount?: string;\n contractAddress?: string;\n direction: TokenAmount['direction'];\n transaction: TransactionGroup['initialTransaction'];\n }): TokenAmount | undefined => {\n if (!contractAddress) {\n return undefined;\n }\n\n const tokenMetadata = getKnownTokenMetadata(chainId, contractAddress);\n\n const isWrappedNativeToken = equalsIgnoreCase(\n contractAddress,\n swapsWrappedTokensAddresses[\n initialTransaction.chainId as keyof typeof swapsWrappedTokensAddresses\n ] || '',\n );\n const wrappedNativeTokenDecimals = isWrappedNativeToken\n ? (nativeAsset?.decimals ?? evmNativeDecimals)\n : undefined;\n\n const decimals =\n transaction.transferInformation?.amount === undefined\n ? (tokenMetadata?.decimals ??\n transactionGroup.contractTokenMetadata?.decimals ??\n wrappedNativeTokenDecimals)\n : transaction.transferInformation.decimals;\n const tokenAmount = transaction.transferInformation?.amount ?? amount;\n const symbol =\n transaction.transferInformation?.symbol ??\n tokenMetadata?.symbol ??\n transactionGroup.contractTokenMetadata?.symbol;\n const assetId = formatAddressToAssetId(contractAddress, chainId);\n\n return {\n direction,\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n ...(tokenAmount ? { amount: tokenAmount } : {}),\n ...(decimals === undefined ? {} : { decimals }),\n };\n };\n\n const status =\n transactionGroup.activityStatus ??\n getLocalTransactionStatus({\n primaryTransaction,\n initialTransaction,\n });\n const timestamp = primaryTime ?? initialTransaction.time;\n const hash = primaryHash ?? initialTransaction.hash ?? primaryId;\n const common = { chainId, status, timestamp, hash };\n\n switch (transactionType) {\n case TransactionType.simpleSend: {\n return {\n type: 'send',\n ...common,\n data: {\n from,\n to,\n token: getNativeToken(initialTransaction, 'out'),\n },\n };\n }\n\n case TransactionType.swap:\n case TransactionType.swapAndSend:\n case TransactionType.bridge: {\n const { sourceToken, destinationToken } = transactionGroup;\n\n return {\n type: transactionType === TransactionType.bridge ? 'bridge' : 'swap',\n ...common,\n data: {\n from,\n sourceToken,\n destinationToken,\n fees,\n },\n };\n }\n\n case TransactionType.tokenMethodSafeTransferFrom:\n case TransactionType.tokenMethodTransfer:\n case TransactionType.tokenMethodTransferFrom: {\n return {\n type: 'send',\n ...common,\n data: {\n from,\n to,\n token: getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: tokenContractAddress,\n }),\n },\n };\n }\n\n case TransactionType.lendingDeposit:\n case TransactionType.stakingDeposit:\n return {\n type:\n transactionType === TransactionType.stakingDeposit\n ? 'deposit'\n : 'lendingDeposit',\n ...common,\n data: {\n from,\n },\n };\n\n case TransactionType.incoming: {\n return {\n type: 'receive',\n ...common,\n data: {\n from,\n to,\n token: transferInformation?.contractAddress\n ? getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: transferInformation.contractAddress,\n })\n : getNativeToken(initialTransaction, 'in'),\n },\n };\n }\n case TransactionType.musdClaim:\n return {\n type: 'claimMusdBonus',\n ...common,\n data: {\n from,\n },\n };\n\n case TransactionType.musdConversion: {\n let conversionAmount: string | undefined;\n\n if (txData && txData.length >= 138) {\n try {\n conversionAmount = BigInt(`0x${txData.slice(74, 138)}`).toString();\n } catch {\n conversionAmount = undefined;\n }\n }\n\n return {\n type: 'convert',\n ...common,\n data: {\n from,\n sourceToken: transactionGroup.sourceToken,\n destinationToken: getContractTokenWithKnownMetadata({\n amount: conversionAmount,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: to,\n }),\n },\n };\n }\n\n case TransactionType.bridgeApproval:\n case TransactionType.shieldSubscriptionApprove:\n case TransactionType.swapApproval:\n case TransactionType.tokenMethodSetApprovalForAll:\n case TransactionType.tokenMethodApprove:\n case TransactionType.tokenMethodIncreaseAllowance: {\n const approvalToken = getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: tokenContractAddress,\n });\n\n return {\n type:\n transactionType === TransactionType.tokenMethodIncreaseAllowance\n ? 'increaseSpendingCap'\n : 'approveSpendingCap',\n ...common,\n data: {\n from,\n token: approvalToken,\n },\n };\n }\n\n case TransactionType.perpsDeposit:\n case TransactionType.perpsDepositAndOrder:\n case TransactionType.perpsWithdraw: {\n const token = to\n ? {\n direction: 'out' as const,\n assetId: formatAddressToAssetId(to, chainId),\n }\n : undefined;\n\n const fiat = metamaskPay?.targetFiat\n ? { amount: metamaskPay.targetFiat }\n : undefined;\n const networkFee =\n typeof metamaskPay?.networkFeeFiat === 'string'\n ? { amount: metamaskPay.networkFeeFiat }\n : undefined;\n\n return {\n type:\n transactionType === TransactionType.perpsWithdraw\n ? 'perpsWithdraw'\n : 'perpsAddFunds',\n ...common,\n data: {\n from,\n token,\n fiat,\n networkFee,\n },\n };\n }\n\n default: {\n const isSupplyContractInteraction =\n transactionType === TransactionType.contractInteraction &&\n methodId &&\n supplyMethodIds.has(methodId.toLowerCase());\n const isWithdrawContractInteraction =\n transactionType === TransactionType.contractInteraction &&\n methodId &&\n withdrawMethodIds.has(methodId.toLowerCase());\n\n let hasNativeValue = false;\n\n try {\n hasNativeValue = BigInt(txValue ?? '0') > 0n;\n } catch {\n hasNativeValue = false;\n }\n\n // Confirm an outflow before labelling a supply, mirroring the API mapper's\n // `sentTransfer` guard: native stakes (e.g. Lido) decrease the native\n // balance, while ERC-20 supplies (e.g. Aave) show a token decrease.\n const isSupply =\n isSupplyContractInteraction &&\n (simulationData?.nativeBalanceChange?.isDecrease === true ||\n simulationData?.tokenBalanceChanges?.some(\n ({ isDecrease, standard }) => isDecrease && standard === 'erc20',\n ) === true);\n const incomingNftBalanceChange =\n transactionType === TransactionType.contractInteraction &&\n simulationData?.tokenBalanceChanges?.find(\n ({ isDecrease, standard }) => !isDecrease && isNftStandard(standard),\n );\n\n if (incomingNftBalanceChange && hasNativeValue) {\n // Keep this mapper thin: classify the activity as an NFT buy and let the\n // API mapper provide the token/payment details.\n return {\n type: 'nftBuy',\n ...common,\n data: {\n from,\n },\n };\n }\n\n if (isSupply) {\n return {\n type: 'lendingDeposit',\n ...common,\n data: {\n from,\n },\n };\n }\n\n // lending withdrawal - applies to Earn features only\n if (isWithdrawContractInteraction) {\n const fromAddress = from.toLowerCase();\n const receivedTokenLog = (txReceipt?.logs ?? []).find(\n ({ topics: [eventTopic, , logTo] = [] }) => {\n const toAddress = logTo\n ? `0x${logTo.slice(-40)}`.toLowerCase()\n : undefined;\n\n return (\n eventTopic?.toLowerCase() === tokenTransferLogTopicHash &&\n toAddress === fromAddress\n );\n },\n );\n let receivedAmount: string | undefined;\n\n if (receivedTokenLog) {\n try {\n receivedAmount = BigInt(String(receivedTokenLog.data)).toString();\n } catch {\n receivedAmount = undefined;\n }\n }\n\n const destinationToken = receivedTokenLog\n ? getContractTokenWithKnownMetadata({\n amount: receivedAmount,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: receivedTokenLog.address,\n })\n : undefined;\n\n return {\n type: 'lendingWithdrawal',\n ...common,\n data: {\n from,\n destinationToken,\n },\n };\n }\n\n // wrap and unwrap\n if (transactionType === TransactionType.contractInteraction && methodId) {\n const wrappedTokenAddress =\n swapsWrappedTokensAddresses[\n initialTransaction.chainId as keyof typeof swapsWrappedTokensAddresses\n ];\n\n if (wrappedTokenAddress && equalsIgnoreCase(to, wrappedTokenAddress)) {\n const normalizedMethodId = methodId.toLowerCase();\n\n if (wrapMethodIds.has(normalizedMethodId)) {\n try {\n if (txValue && BigInt(txValue) > 0n) {\n return {\n type: 'wrap',\n ...common,\n data: {\n from,\n sourceToken: getNativeToken(initialTransaction, 'out'),\n destinationToken: getContractTokenWithKnownMetadata({\n amount: txValue,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: wrappedTokenAddress,\n }),\n },\n };\n }\n } catch {\n // Invalid native value — fall through.\n }\n }\n\n if (unwrapMethodIds.has(normalizedMethodId)) {\n let unwrapAmount: string | undefined;\n\n if (txData && txData.length >= 74) {\n try {\n unwrapAmount = BigInt(`0x${txData.slice(10, 74)}`).toString();\n } catch {\n unwrapAmount = undefined;\n }\n }\n\n const nativeToken = getNativeToken(initialTransaction, 'in');\n\n return {\n type: 'unwrap',\n ...common,\n data: {\n from,\n sourceToken: getContractTokenWithKnownMetadata({\n amount: unwrapAmount,\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: wrappedTokenAddress,\n }),\n destinationToken:\n nativeToken && unwrapAmount\n ? { ...nativeToken, amount: unwrapAmount }\n : nativeToken,\n },\n };\n }\n }\n }\n\n const token = ((): TokenAmount | undefined => {\n if (txValue === undefined || txValue === '') {\n return undefined;\n }\n\n try {\n return BigInt(txValue) > 0n\n ? getNativeToken(initialTransaction, 'out')\n : undefined;\n } catch {\n return undefined;\n }\n })();\n\n return {\n type: 'contractInteraction',\n ...common,\n data: {\n from,\n to,\n ...(token ? { token } : {}),\n methodId,\n },\n };\n }\n }\n}\n"]}
1
+ {"version":3,"file":"local-transaction-mapper.mjs","sourceRoot":"","sources":["../../src/mappers/local-transaction-mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { isEqualCaseInsensitive as equalsIgnoreCase } from '@metamask/controller-utils';\nimport { TransactionType } from '@metamask/transaction-controller';\nimport { KnownCaipNamespace, toCaipChainId } from '@metamask/utils';\n\nimport type { Fee, ActivityItem, TokenAmount } from '../types.js';\nimport {\n permit2ApproveMethodId,\n swapsWrappedTokensAddresses,\n supplyMethodIds,\n tokenTransferLogTopicHash,\n unwrapMethodIds,\n withdrawMethodIds,\n wrapMethodIds,\n} from './constants.js';\nimport { formatAddressToAssetId } from './helpers/caip.js';\nimport { getKnownTokenMetadata } from './helpers/token-metadata.js';\nimport {\n getLocalTransactionFees,\n getLocalTransactionStatus,\n isNftStandard,\n} from './helpers/transactions.js';\nimport type { TransactionGroup } from './helpers/transactions.js';\n\nconst evmNativeDecimals = 18;\n\n/**\n * Maps a local TransactionController group into the shared activity item shape.\n *\n * @param transactionGroup - The transaction group to map, optionally enriched by the client.\n * @returns The normalized activity item.\n */\nexport function mapLocalTransaction(\n transactionGroup: TransactionGroup & {\n sourceToken?: TokenAmount;\n destinationToken?: TokenAmount;\n nativeAssetSymbol?: string;\n contractTokenMetadata?: { symbol?: string; decimals?: number };\n activityStatus?: ActivityItem['status'];\n fees?: Fee[];\n },\n): ActivityItem {\n const fees =\n transactionGroup.fees ?? getLocalTransactionFees(transactionGroup);\n const { initialTransaction, primaryTransaction } = transactionGroup;\n const {\n transferInformation,\n type: transactionType,\n simulationData,\n txReceipt,\n metamaskPay,\n txParams: { from = '', to = '', data: txData, value: txValue } = {},\n } = initialTransaction;\n const {\n time: primaryTime,\n hash: primaryHash,\n id: primaryId,\n } = primaryTransaction;\n const methodId = txData?.slice(0, 10);\n // Permit2 approvals use the Permit2 contract as `to`, not the approved token.\n // Keep this mapper thin: still classify the activity as an approve, but omit\n // the token rather than surfacing the wrong one — the API mapper provides\n // accurate token data.\n const isPermit2Approve = methodId === permit2ApproveMethodId;\n const tokenContractAddress = isPermit2Approve\n ? undefined\n : (transferInformation?.contractAddress ?? (to || undefined));\n const chainId = toCaipChainId(\n KnownCaipNamespace.Eip155,\n Number.parseInt(initialTransaction.chainId, 16).toString(),\n );\n const nativeSymbol = transactionGroup.nativeAssetSymbol;\n\n const getNativeToken = (\n transaction: TransactionGroup['initialTransaction'],\n direction: TokenAmount['direction'],\n ): TokenAmount | undefined => {\n const rawAmount = transaction.txParams.value;\n let amount: string | undefined;\n if (rawAmount) {\n try {\n amount = BigInt(rawAmount) > 0n ? rawAmount : undefined;\n } catch {\n amount = undefined;\n }\n }\n\n if (!amount && nativeSymbol === undefined) {\n return undefined;\n }\n\n return {\n direction,\n assetType: 'native',\n decimals: evmNativeDecimals,\n ...(amount ? { amount } : {}),\n ...(nativeSymbol === undefined ? {} : { symbol: nativeSymbol }),\n };\n };\n\n const getContractTokenFromTransaction = ({\n contractAddress,\n direction,\n transaction,\n }: {\n contractAddress?: string;\n direction: TokenAmount['direction'];\n transaction: TransactionGroup['initialTransaction'];\n }): TokenAmount | undefined => {\n if (!contractAddress) {\n return undefined;\n }\n\n const symbol =\n transaction.transferInformation?.symbol ??\n transactionGroup.contractTokenMetadata?.symbol;\n const decimals =\n transaction.transferInformation?.decimals ??\n transactionGroup.contractTokenMetadata?.decimals;\n const amount = transaction.transferInformation?.amount;\n const assetId = formatAddressToAssetId(contractAddress, chainId);\n\n return {\n direction,\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n ...(amount ? { amount } : {}),\n ...(decimals === undefined ? {} : { decimals }),\n };\n };\n\n const getContractTokenWithKnownMetadata = ({\n amount,\n contractAddress,\n direction,\n transaction,\n }: {\n amount?: string;\n contractAddress?: string;\n direction: TokenAmount['direction'];\n transaction: TransactionGroup['initialTransaction'];\n }): TokenAmount | undefined => {\n if (!contractAddress) {\n return undefined;\n }\n\n const tokenMetadata = getKnownTokenMetadata(chainId, contractAddress);\n\n const isWrappedNativeToken = equalsIgnoreCase(\n contractAddress,\n swapsWrappedTokensAddresses[\n initialTransaction.chainId as keyof typeof swapsWrappedTokensAddresses\n ] || '',\n );\n const wrappedNativeTokenDecimals = isWrappedNativeToken\n ? evmNativeDecimals\n : undefined;\n\n const decimals =\n transaction.transferInformation?.amount === undefined\n ? (tokenMetadata?.decimals ??\n transactionGroup.contractTokenMetadata?.decimals ??\n wrappedNativeTokenDecimals)\n : transaction.transferInformation.decimals;\n const tokenAmount = transaction.transferInformation?.amount ?? amount;\n const symbol =\n transaction.transferInformation?.symbol ??\n tokenMetadata?.symbol ??\n transactionGroup.contractTokenMetadata?.symbol;\n const assetId = formatAddressToAssetId(contractAddress, chainId);\n\n return {\n direction,\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n ...(tokenAmount ? { amount: tokenAmount } : {}),\n ...(decimals === undefined ? {} : { decimals }),\n };\n };\n\n const status =\n transactionGroup.activityStatus ??\n getLocalTransactionStatus({\n primaryTransaction,\n initialTransaction,\n });\n const timestamp = primaryTime ?? initialTransaction.time;\n const hash = primaryHash ?? initialTransaction.hash ?? primaryId;\n const common = { chainId, status, timestamp, hash };\n\n switch (transactionType) {\n case TransactionType.simpleSend: {\n return {\n type: 'send',\n ...common,\n data: {\n from,\n to,\n token: getNativeToken(initialTransaction, 'out'),\n },\n };\n }\n\n case TransactionType.swap:\n case TransactionType.swapAndSend:\n case TransactionType.bridge: {\n const { sourceToken, destinationToken } = transactionGroup;\n\n return {\n type: transactionType === TransactionType.bridge ? 'bridge' : 'swap',\n ...common,\n data: {\n from,\n sourceToken,\n destinationToken,\n fees,\n },\n };\n }\n\n case TransactionType.tokenMethodSafeTransferFrom:\n case TransactionType.tokenMethodTransfer:\n case TransactionType.tokenMethodTransferFrom: {\n return {\n type: 'send',\n ...common,\n data: {\n from,\n to,\n token: getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: tokenContractAddress,\n }),\n },\n };\n }\n\n case TransactionType.lendingDeposit:\n case TransactionType.stakingDeposit:\n return {\n type:\n transactionType === TransactionType.stakingDeposit\n ? 'deposit'\n : 'lendingDeposit',\n ...common,\n data: {\n from,\n },\n };\n\n case TransactionType.incoming: {\n return {\n type: 'receive',\n ...common,\n data: {\n from,\n to,\n token: transferInformation?.contractAddress\n ? getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: transferInformation.contractAddress,\n })\n : getNativeToken(initialTransaction, 'in'),\n },\n };\n }\n case TransactionType.musdClaim:\n return {\n type: 'claimMusdBonus',\n ...common,\n data: {\n from,\n },\n };\n\n case TransactionType.musdConversion: {\n let conversionAmount: string | undefined;\n\n if (txData && txData.length >= 138) {\n try {\n conversionAmount = BigInt(`0x${txData.slice(74, 138)}`).toString();\n } catch {\n conversionAmount = undefined;\n }\n }\n\n return {\n type: 'convert',\n ...common,\n data: {\n from,\n sourceToken: transactionGroup.sourceToken,\n destinationToken: getContractTokenWithKnownMetadata({\n amount: conversionAmount,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: to,\n }),\n },\n };\n }\n\n case TransactionType.bridgeApproval:\n case TransactionType.shieldSubscriptionApprove:\n case TransactionType.swapApproval:\n case TransactionType.tokenMethodSetApprovalForAll:\n case TransactionType.tokenMethodApprove:\n case TransactionType.tokenMethodIncreaseAllowance: {\n const approvalToken = getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: tokenContractAddress,\n });\n\n return {\n type:\n transactionType === TransactionType.tokenMethodIncreaseAllowance\n ? 'increaseSpendingCap'\n : 'approveSpendingCap',\n ...common,\n data: {\n from,\n token: approvalToken,\n },\n };\n }\n\n case TransactionType.perpsDeposit:\n case TransactionType.perpsDepositAndOrder:\n case TransactionType.perpsWithdraw: {\n const token = to\n ? {\n direction: 'out' as const,\n assetId: formatAddressToAssetId(to, chainId),\n }\n : undefined;\n\n const fiat = metamaskPay?.targetFiat\n ? { amount: metamaskPay.targetFiat }\n : undefined;\n const networkFee =\n typeof metamaskPay?.networkFeeFiat === 'string'\n ? { amount: metamaskPay.networkFeeFiat }\n : undefined;\n\n return {\n type:\n transactionType === TransactionType.perpsWithdraw\n ? 'perpsWithdraw'\n : 'perpsAddFunds',\n ...common,\n data: {\n from,\n token,\n fiat,\n networkFee,\n },\n };\n }\n\n default: {\n const isSupplyContractInteraction =\n transactionType === TransactionType.contractInteraction &&\n methodId &&\n supplyMethodIds.has(methodId.toLowerCase());\n const isWithdrawContractInteraction =\n transactionType === TransactionType.contractInteraction &&\n methodId &&\n withdrawMethodIds.has(methodId.toLowerCase());\n\n let hasNativeValue = false;\n\n try {\n hasNativeValue = BigInt(txValue ?? '0') > 0n;\n } catch {\n hasNativeValue = false;\n }\n\n // Confirm an outflow before labelling a supply, mirroring the API mapper's\n // `sentTransfer` guard: native stakes (e.g. Lido) decrease the native\n // balance, while ERC-20 supplies (e.g. Aave) show a token decrease.\n const isSupply =\n isSupplyContractInteraction &&\n (simulationData?.nativeBalanceChange?.isDecrease === true ||\n simulationData?.tokenBalanceChanges?.some(\n ({ isDecrease, standard }) => isDecrease && standard === 'erc20',\n ) === true);\n const incomingNftBalanceChange =\n transactionType === TransactionType.contractInteraction &&\n simulationData?.tokenBalanceChanges?.find(\n ({ isDecrease, standard }) => !isDecrease && isNftStandard(standard),\n );\n\n if (incomingNftBalanceChange && hasNativeValue) {\n // Keep this mapper thin: classify the activity as an NFT buy and let the\n // API mapper provide the token/payment details.\n return {\n type: 'nftBuy',\n ...common,\n data: {\n from,\n },\n };\n }\n\n if (isSupply) {\n return {\n type: 'lendingDeposit',\n ...common,\n data: {\n from,\n },\n };\n }\n\n // lending withdrawal - applies to Earn features only\n if (isWithdrawContractInteraction) {\n const fromAddress = from.toLowerCase();\n const receivedTokenLog = (txReceipt?.logs ?? []).find(\n ({ topics: [eventTopic, , logTo] = [] }) => {\n const toAddress = logTo\n ? `0x${logTo.slice(-40)}`.toLowerCase()\n : undefined;\n\n return (\n eventTopic?.toLowerCase() === tokenTransferLogTopicHash &&\n toAddress === fromAddress\n );\n },\n );\n let receivedAmount: string | undefined;\n\n if (receivedTokenLog) {\n try {\n receivedAmount = BigInt(String(receivedTokenLog.data)).toString();\n } catch {\n receivedAmount = undefined;\n }\n }\n\n const destinationToken = receivedTokenLog\n ? getContractTokenWithKnownMetadata({\n amount: receivedAmount,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: receivedTokenLog.address,\n })\n : undefined;\n\n return {\n type: 'lendingWithdrawal',\n ...common,\n data: {\n from,\n destinationToken,\n },\n };\n }\n\n // wrap and unwrap\n if (transactionType === TransactionType.contractInteraction && methodId) {\n const wrappedTokenAddress =\n swapsWrappedTokensAddresses[\n initialTransaction.chainId as keyof typeof swapsWrappedTokensAddresses\n ];\n\n if (wrappedTokenAddress && equalsIgnoreCase(to, wrappedTokenAddress)) {\n const normalizedMethodId = methodId.toLowerCase();\n\n if (wrapMethodIds.has(normalizedMethodId)) {\n try {\n if (txValue && BigInt(txValue) > 0n) {\n return {\n type: 'wrap',\n ...common,\n data: {\n from,\n sourceToken: getNativeToken(initialTransaction, 'out'),\n destinationToken: getContractTokenWithKnownMetadata({\n amount: txValue,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: wrappedTokenAddress,\n }),\n },\n };\n }\n } catch {\n // Invalid native value — fall through.\n }\n }\n\n if (unwrapMethodIds.has(normalizedMethodId)) {\n let unwrapAmount: string | undefined;\n\n if (txData && txData.length >= 74) {\n try {\n unwrapAmount = BigInt(`0x${txData.slice(10, 74)}`).toString();\n } catch {\n unwrapAmount = undefined;\n }\n }\n\n const nativeToken = getNativeToken(initialTransaction, 'in');\n\n return {\n type: 'unwrap',\n ...common,\n data: {\n from,\n sourceToken: getContractTokenWithKnownMetadata({\n amount: unwrapAmount,\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: wrappedTokenAddress,\n }),\n destinationToken: unwrapAmount\n ? {\n ...(nativeToken ?? {\n direction: 'in' as const,\n assetType: 'native' as const,\n decimals: evmNativeDecimals,\n }),\n amount: unwrapAmount,\n }\n : nativeToken,\n },\n };\n }\n }\n }\n\n const token = ((): TokenAmount | undefined => {\n if (txValue === undefined || txValue === '') {\n return undefined;\n }\n\n try {\n return BigInt(txValue) > 0n\n ? getNativeToken(initialTransaction, 'out')\n : undefined;\n } catch {\n return undefined;\n }\n })();\n\n return {\n type: 'contractInteraction',\n ...common,\n data: {\n from,\n to,\n ...(token ? { token } : {}),\n methodId,\n },\n };\n }\n }\n}\n"]}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapRampsOrder = void 0;
4
+ const caip_js_1 = require("./helpers/caip.cjs");
5
+ function mapStatus(status) {
6
+ switch (status) {
7
+ case 'COMPLETED':
8
+ return 'success';
9
+ case 'FAILED':
10
+ return 'failed';
11
+ case 'CANCELLED':
12
+ return 'cancelled';
13
+ default:
14
+ return 'pending';
15
+ }
16
+ }
17
+ // `UNKNOWN`, `ID_EXPIRED`, and `PRECREATED` represent background checkout
18
+ // attempts (e.g. precreated orders that never matched a real order, or whose
19
+ // id expired before the provider assigned one) that the user never knowingly
20
+ // initiated as a distinct order and shouldn't see in their history.
21
+ const HIDDEN_STATUSES = new Set([
22
+ 'UNKNOWN',
23
+ 'ID_EXPIRED',
24
+ 'PRECREATED',
25
+ ]);
26
+ /**
27
+ * Maps a ramps order into the shared activity item shape.
28
+ *
29
+ * @param order - The ramps order to map.
30
+ * @returns The normalized activity item, or `null` if the order's status
31
+ * should not be surfaced in the activity list.
32
+ */
33
+ function mapRampsOrder(order) {
34
+ if (HIDDEN_STATUSES.has(order.status) || order.excludeFromPurchases) {
35
+ return null;
36
+ }
37
+ // The V2 API returns `orderType` uppercased (e.g. `'BUY'`); normalize since
38
+ // some call sites (e.g. locally-created stub orders) use lowercase. Transak
39
+ // deposits (`'DEPOSIT'`) are a buy variant, not a sell.
40
+ const normalizedOrderType = order.orderType.toUpperCase();
41
+ const isBuy = normalizedOrderType === 'BUY' || normalizedOrderType === 'DEPOSIT';
42
+ const direction = isBuy ? 'in' : 'out';
43
+ // `cryptoAmount`/`fiatAmount` are already human-formatted by the API, unlike
44
+ // `TokenAmount.decimals` elsewhere in this package, which signals a raw
45
+ // on-chain amount that still needs scaling. Omit `decimals` so clients don't
46
+ // wrongly re-scale an already-human amount.
47
+ const token = order.cryptoCurrency
48
+ ? {
49
+ amount: String(order.cryptoAmount),
50
+ symbol: order.cryptoCurrency.symbol,
51
+ assetId: order.cryptoCurrency.assetId,
52
+ direction,
53
+ }
54
+ : undefined;
55
+ const fiat = {
56
+ amount: String(order.fiatAmount),
57
+ currency: order.fiatCurrency?.symbol,
58
+ };
59
+ const fees = [
60
+ {
61
+ type: 'total',
62
+ amount: String(order.totalFeesFiat),
63
+ symbol: order.fiatCurrency?.symbol,
64
+ },
65
+ ];
66
+ // `network.chainId` may already be CAIP-2 (non-EVM orders), a bare
67
+ // numeric/hex reference (today's only observed EVM format), or empty (a
68
+ // precreated stub order awaiting provider assignment) — normalize without
69
+ // assuming a namespace.
70
+ const chainId = (0, caip_js_1.formatChainIdToCaip)(order.network.chainId);
71
+ return {
72
+ type: isBuy ? 'rampBuy' : 'rampSell',
73
+ chainId,
74
+ status: mapStatus(order.status),
75
+ timestamp: order.createdAt,
76
+ hash: order.txHash || undefined,
77
+ id: order.id ?? order.providerOrderId,
78
+ data: {
79
+ from: order.walletAddress,
80
+ fiat,
81
+ token,
82
+ fees,
83
+ provider: {
84
+ id: order.provider?.id,
85
+ name: order.provider?.name,
86
+ orderLink: order.providerOrderLink,
87
+ },
88
+ statusDescription: order.statusDescription,
89
+ paymentDetails: order.paymentDetails,
90
+ },
91
+ };
92
+ }
93
+ exports.mapRampsOrder = mapRampsOrder;
94
+ //# sourceMappingURL=ramps-order-mapper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ramps-order-mapper.cjs","sourceRoot":"","sources":["../../src/mappers/ramps-order-mapper.ts"],"names":[],"mappings":";;;AAQA,gDAAwD;AAsCxD,SAAS,SAAS,CAAC,MAA4B;IAC7C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,6EAA6E;AAC7E,6EAA6E;AAC7E,oEAAoE;AACpE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAuB;IACpD,SAAS;IACT,YAAY;IACZ,YAAY;CACb,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,KAAqB;IACjD,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,wDAAwD;IACxD,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,KAAK,GACT,mBAAmB,KAAK,KAAK,IAAI,mBAAmB,KAAK,SAAS,CAAC;IACrE,MAAM,SAAS,GAA6B,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAEjE,6EAA6E;IAC7E,wEAAwE;IACxE,6EAA6E;IAC7E,4CAA4C;IAC5C,MAAM,KAAK,GAA4B,KAAK,CAAC,cAAc;QACzD,CAAC,CAAC;YACE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;YAClC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM;YACnC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO;YACrC,SAAS;SACV;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,IAAI,GAAe;QACvB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QAChC,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,MAAM;KACrC,CAAC;IAEF,MAAM,IAAI,GAAU;QAClB;YACE,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;YACnC,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,MAAM;SACnC;KACF,CAAC;IAEF,mEAAmE;IACnE,wEAAwE;IACxE,0EAA0E;IAC1E,wBAAwB;IACxB,MAAM,OAAO,GAAG,IAAA,6BAAmB,EAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;QACpC,OAAO;QACP,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;QAC/B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,KAAK,CAAC,MAAM,IAAI,SAAS;QAC/B,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,eAAe;QACrC,IAAI,EAAE;YACJ,IAAI,EAAE,KAAK,CAAC,aAAa;YACzB,IAAI;YACJ,KAAK;YACL,IAAI;YACJ,QAAQ,EAAE;gBACR,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE;gBACtB,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI;gBAC1B,SAAS,EAAE,KAAK,CAAC,iBAAiB;aACnC;YACD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC;KACF,CAAC;AACJ,CAAC;AAlED,sCAkEC","sourcesContent":["import type {\n ActivityItem,\n Fee,\n FiatAmount,\n RampOrderPaymentDetail,\n Status,\n TokenAmount,\n} from '../types.js';\nimport { formatChainIdToCaip } from './helpers/caip.js';\n\ntype RampsOrderStatusLike =\n | 'UNKNOWN'\n | 'PRECREATED'\n | 'CREATED'\n | 'PENDING'\n | 'FAILED'\n | 'COMPLETED'\n | 'CANCELLED'\n | 'ID_EXPIRED';\n\n/**\n * The subset of `RampsOrder` (from `@metamask/ramps-controller`) that this\n * mapper depends on. Redeclared locally rather than imported to keep\n * `client-utils` free of a dependency on `ramps-controller`.\n */\nexport type RampsOrderLike = {\n id?: string;\n provider?: { id?: string; name?: string };\n cryptoAmount: string | number;\n fiatAmount: number;\n cryptoCurrency?: { assetId?: string; symbol: string; decimals?: number };\n fiatCurrency?: { symbol: string };\n providerOrderId: string;\n providerOrderLink: string;\n createdAt: number;\n totalFeesFiat: number;\n txHash: string;\n walletAddress: string;\n status: RampsOrderStatusLike;\n network: { chainId: string };\n statusDescription?: string;\n orderType: string;\n excludeFromPurchases?: boolean;\n paymentDetails?: RampOrderPaymentDetail[];\n};\n\nfunction mapStatus(status: RampsOrderStatusLike): Status {\n switch (status) {\n case 'COMPLETED':\n return 'success';\n case 'FAILED':\n return 'failed';\n case 'CANCELLED':\n return 'cancelled';\n default:\n return 'pending';\n }\n}\n\n// `UNKNOWN`, `ID_EXPIRED`, and `PRECREATED` represent background checkout\n// attempts (e.g. precreated orders that never matched a real order, or whose\n// id expired before the provider assigned one) that the user never knowingly\n// initiated as a distinct order and shouldn't see in their history.\nconst HIDDEN_STATUSES = new Set<RampsOrderStatusLike>([\n 'UNKNOWN',\n 'ID_EXPIRED',\n 'PRECREATED',\n]);\n\n/**\n * Maps a ramps order into the shared activity item shape.\n *\n * @param order - The ramps order to map.\n * @returns The normalized activity item, or `null` if the order's status\n * should not be surfaced in the activity list.\n */\nexport function mapRampsOrder(order: RampsOrderLike): ActivityItem | null {\n if (HIDDEN_STATUSES.has(order.status) || order.excludeFromPurchases) {\n return null;\n }\n\n // The V2 API returns `orderType` uppercased (e.g. `'BUY'`); normalize since\n // some call sites (e.g. locally-created stub orders) use lowercase. Transak\n // deposits (`'DEPOSIT'`) are a buy variant, not a sell.\n const normalizedOrderType = order.orderType.toUpperCase();\n const isBuy =\n normalizedOrderType === 'BUY' || normalizedOrderType === 'DEPOSIT';\n const direction: TokenAmount['direction'] = isBuy ? 'in' : 'out';\n\n // `cryptoAmount`/`fiatAmount` are already human-formatted by the API, unlike\n // `TokenAmount.decimals` elsewhere in this package, which signals a raw\n // on-chain amount that still needs scaling. Omit `decimals` so clients don't\n // wrongly re-scale an already-human amount.\n const token: TokenAmount | undefined = order.cryptoCurrency\n ? {\n amount: String(order.cryptoAmount),\n symbol: order.cryptoCurrency.symbol,\n assetId: order.cryptoCurrency.assetId,\n direction,\n }\n : undefined;\n\n const fiat: FiatAmount = {\n amount: String(order.fiatAmount),\n currency: order.fiatCurrency?.symbol,\n };\n\n const fees: Fee[] = [\n {\n type: 'total',\n amount: String(order.totalFeesFiat),\n symbol: order.fiatCurrency?.symbol,\n },\n ];\n\n // `network.chainId` may already be CAIP-2 (non-EVM orders), a bare\n // numeric/hex reference (today's only observed EVM format), or empty (a\n // precreated stub order awaiting provider assignment) — normalize without\n // assuming a namespace.\n const chainId = formatChainIdToCaip(order.network.chainId);\n\n return {\n type: isBuy ? 'rampBuy' : 'rampSell',\n chainId,\n status: mapStatus(order.status),\n timestamp: order.createdAt,\n hash: order.txHash || undefined,\n id: order.id ?? order.providerOrderId,\n data: {\n from: order.walletAddress,\n fiat,\n token,\n fees,\n provider: {\n id: order.provider?.id,\n name: order.provider?.name,\n orderLink: order.providerOrderLink,\n },\n statusDescription: order.statusDescription,\n paymentDetails: order.paymentDetails,\n },\n };\n}\n"]}
@@ -0,0 +1,48 @@
1
+ import type { ActivityItem, RampOrderPaymentDetail } from "../types.cjs";
2
+ type RampsOrderStatusLike = 'UNKNOWN' | 'PRECREATED' | 'CREATED' | 'PENDING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'ID_EXPIRED';
3
+ /**
4
+ * The subset of `RampsOrder` (from `@metamask/ramps-controller`) that this
5
+ * mapper depends on. Redeclared locally rather than imported to keep
6
+ * `client-utils` free of a dependency on `ramps-controller`.
7
+ */
8
+ export type RampsOrderLike = {
9
+ id?: string;
10
+ provider?: {
11
+ id?: string;
12
+ name?: string;
13
+ };
14
+ cryptoAmount: string | number;
15
+ fiatAmount: number;
16
+ cryptoCurrency?: {
17
+ assetId?: string;
18
+ symbol: string;
19
+ decimals?: number;
20
+ };
21
+ fiatCurrency?: {
22
+ symbol: string;
23
+ };
24
+ providerOrderId: string;
25
+ providerOrderLink: string;
26
+ createdAt: number;
27
+ totalFeesFiat: number;
28
+ txHash: string;
29
+ walletAddress: string;
30
+ status: RampsOrderStatusLike;
31
+ network: {
32
+ chainId: string;
33
+ };
34
+ statusDescription?: string;
35
+ orderType: string;
36
+ excludeFromPurchases?: boolean;
37
+ paymentDetails?: RampOrderPaymentDetail[];
38
+ };
39
+ /**
40
+ * Maps a ramps order into the shared activity item shape.
41
+ *
42
+ * @param order - The ramps order to map.
43
+ * @returns The normalized activity item, or `null` if the order's status
44
+ * should not be surfaced in the activity list.
45
+ */
46
+ export declare function mapRampsOrder(order: RampsOrderLike): ActivityItem | null;
47
+ export {};
48
+ //# sourceMappingURL=ramps-order-mapper.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ramps-order-mapper.d.cts","sourceRoot":"","sources":["../../src/mappers/ramps-order-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAGZ,sBAAsB,EAGvB,qBAAoB;AAGrB,KAAK,oBAAoB,GACrB,SAAS,GACT,YAAY,GACZ,SAAS,GACT,SAAS,GACT,QAAQ,GACR,WAAW,GACX,WAAW,GACX,YAAY,CAAC;AAEjB;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAC3C,CAAC;AAyBF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,GAAG,IAAI,CAkExE"}
@@ -0,0 +1,48 @@
1
+ import type { ActivityItem, RampOrderPaymentDetail } from "../types.mjs";
2
+ type RampsOrderStatusLike = 'UNKNOWN' | 'PRECREATED' | 'CREATED' | 'PENDING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'ID_EXPIRED';
3
+ /**
4
+ * The subset of `RampsOrder` (from `@metamask/ramps-controller`) that this
5
+ * mapper depends on. Redeclared locally rather than imported to keep
6
+ * `client-utils` free of a dependency on `ramps-controller`.
7
+ */
8
+ export type RampsOrderLike = {
9
+ id?: string;
10
+ provider?: {
11
+ id?: string;
12
+ name?: string;
13
+ };
14
+ cryptoAmount: string | number;
15
+ fiatAmount: number;
16
+ cryptoCurrency?: {
17
+ assetId?: string;
18
+ symbol: string;
19
+ decimals?: number;
20
+ };
21
+ fiatCurrency?: {
22
+ symbol: string;
23
+ };
24
+ providerOrderId: string;
25
+ providerOrderLink: string;
26
+ createdAt: number;
27
+ totalFeesFiat: number;
28
+ txHash: string;
29
+ walletAddress: string;
30
+ status: RampsOrderStatusLike;
31
+ network: {
32
+ chainId: string;
33
+ };
34
+ statusDescription?: string;
35
+ orderType: string;
36
+ excludeFromPurchases?: boolean;
37
+ paymentDetails?: RampOrderPaymentDetail[];
38
+ };
39
+ /**
40
+ * Maps a ramps order into the shared activity item shape.
41
+ *
42
+ * @param order - The ramps order to map.
43
+ * @returns The normalized activity item, or `null` if the order's status
44
+ * should not be surfaced in the activity list.
45
+ */
46
+ export declare function mapRampsOrder(order: RampsOrderLike): ActivityItem | null;
47
+ export {};
48
+ //# sourceMappingURL=ramps-order-mapper.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ramps-order-mapper.d.mts","sourceRoot":"","sources":["../../src/mappers/ramps-order-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAGZ,sBAAsB,EAGvB,qBAAoB;AAGrB,KAAK,oBAAoB,GACrB,SAAS,GACT,YAAY,GACZ,SAAS,GACT,SAAS,GACT,QAAQ,GACR,WAAW,GACX,WAAW,GACX,YAAY,CAAC;AAEjB;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAC3C,CAAC;AAyBF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,GAAG,IAAI,CAkExE"}