@metamask-previews/client-utils 2.1.1-preview-3e34650c2 → 2.1.1-preview-4f4c98e

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 (116) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/dist/formatters/{create-formatters.d.mts → create-formatters.d.ts} +1 -1
  3. package/dist/formatters/create-formatters.d.ts.map +1 -0
  4. package/dist/formatters/{create-formatters.mjs → create-formatters.js} +1 -1
  5. package/dist/formatters/create-formatters.js.map +1 -0
  6. package/dist/index.d.ts +9 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +6 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/mappers/{api-transaction-mapper.d.cts → api-transaction-mapper.d.ts} +3 -3
  11. package/dist/mappers/api-transaction-mapper.d.ts.map +1 -0
  12. package/dist/mappers/{api-transaction-mapper.mjs → api-transaction-mapper.js} +6 -6
  13. package/dist/mappers/api-transaction-mapper.js.map +1 -0
  14. package/dist/mappers/constants.d.ts +26 -0
  15. package/dist/mappers/constants.d.ts.map +1 -0
  16. package/dist/mappers/{constants.mjs → constants.js} +1 -1
  17. package/dist/mappers/constants.js.map +1 -0
  18. package/dist/mappers/helpers/{caip.d.cts → caip.d.ts} +2 -2
  19. package/dist/mappers/helpers/caip.d.ts.map +1 -0
  20. package/dist/mappers/helpers/{caip.mjs → caip.js} +6 -6
  21. package/dist/mappers/helpers/caip.js.map +1 -0
  22. package/dist/mappers/helpers/{token-metadata.d.cts → token-metadata.d.ts} +2 -2
  23. package/dist/mappers/helpers/token-metadata.d.ts.map +1 -0
  24. package/dist/mappers/helpers/{token-metadata.mjs → token-metadata.js} +4 -11
  25. package/dist/mappers/helpers/token-metadata.js.map +1 -0
  26. package/dist/mappers/helpers/{transactions.d.mts → transactions.d.ts} +5 -5
  27. package/dist/mappers/helpers/transactions.d.ts.map +1 -0
  28. package/dist/mappers/helpers/{transactions.mjs → transactions.js} +6 -6
  29. package/dist/mappers/helpers/transactions.js.map +1 -0
  30. package/dist/mappers/{keyring-transaction-mapper.d.cts → keyring-transaction-mapper.d.ts} +3 -3
  31. package/dist/mappers/keyring-transaction-mapper.d.ts.map +1 -0
  32. package/dist/mappers/{keyring-transaction-mapper.mjs → keyring-transaction-mapper.js} +2 -2
  33. package/dist/mappers/keyring-transaction-mapper.js.map +1 -0
  34. package/dist/mappers/{local-transaction-mapper.d.cts → local-transaction-mapper.d.ts} +3 -3
  35. package/dist/mappers/local-transaction-mapper.d.ts.map +1 -0
  36. package/dist/mappers/{local-transaction-mapper.mjs → local-transaction-mapper.js} +8 -8
  37. package/dist/mappers/local-transaction-mapper.js.map +1 -0
  38. package/dist/mappers/{ramps-order-mapper.d.cts → ramps-order-mapper.d.ts} +2 -2
  39. package/dist/mappers/ramps-order-mapper.d.ts.map +1 -0
  40. package/dist/mappers/{ramps-order-mapper.mjs → ramps-order-mapper.js} +3 -3
  41. package/dist/mappers/ramps-order-mapper.js.map +1 -0
  42. package/dist/{types.d.cts → types.d.ts} +3 -3
  43. package/dist/types.d.ts.map +1 -0
  44. package/dist/types.js +2 -0
  45. package/dist/types.js.map +1 -0
  46. package/package.json +12 -16
  47. package/dist/formatters/create-formatters.cjs +0 -238
  48. package/dist/formatters/create-formatters.cjs.map +0 -1
  49. package/dist/formatters/create-formatters.d.cts +0 -19
  50. package/dist/formatters/create-formatters.d.cts.map +0 -1
  51. package/dist/formatters/create-formatters.d.mts.map +0 -1
  52. package/dist/formatters/create-formatters.mjs.map +0 -1
  53. package/dist/index.cjs +0 -14
  54. package/dist/index.cjs.map +0 -1
  55. package/dist/index.d.cts +0 -9
  56. package/dist/index.d.cts.map +0 -1
  57. package/dist/index.d.mts +0 -9
  58. package/dist/index.d.mts.map +0 -1
  59. package/dist/index.mjs +0 -6
  60. package/dist/index.mjs.map +0 -1
  61. package/dist/mappers/api-transaction-mapper.cjs +0 -316
  62. package/dist/mappers/api-transaction-mapper.cjs.map +0 -1
  63. package/dist/mappers/api-transaction-mapper.d.cts.map +0 -1
  64. package/dist/mappers/api-transaction-mapper.d.mts +0 -15
  65. package/dist/mappers/api-transaction-mapper.d.mts.map +0 -1
  66. package/dist/mappers/api-transaction-mapper.mjs.map +0 -1
  67. package/dist/mappers/constants.cjs +0 -47
  68. package/dist/mappers/constants.cjs.map +0 -1
  69. package/dist/mappers/constants.d.cts +0 -26
  70. package/dist/mappers/constants.d.cts.map +0 -1
  71. package/dist/mappers/constants.d.mts +0 -26
  72. package/dist/mappers/constants.d.mts.map +0 -1
  73. package/dist/mappers/constants.mjs.map +0 -1
  74. package/dist/mappers/helpers/caip.cjs +0 -140
  75. package/dist/mappers/helpers/caip.cjs.map +0 -1
  76. package/dist/mappers/helpers/caip.d.cts.map +0 -1
  77. package/dist/mappers/helpers/caip.d.mts +0 -32
  78. package/dist/mappers/helpers/caip.d.mts.map +0 -1
  79. package/dist/mappers/helpers/caip.mjs.map +0 -1
  80. package/dist/mappers/helpers/token-metadata.cjs +0 -31
  81. package/dist/mappers/helpers/token-metadata.cjs.map +0 -1
  82. package/dist/mappers/helpers/token-metadata.d.cts.map +0 -1
  83. package/dist/mappers/helpers/token-metadata.d.mts +0 -8
  84. package/dist/mappers/helpers/token-metadata.d.mts.map +0 -1
  85. package/dist/mappers/helpers/token-metadata.mjs.map +0 -1
  86. package/dist/mappers/helpers/transactions.cjs +0 -254
  87. package/dist/mappers/helpers/transactions.cjs.map +0 -1
  88. package/dist/mappers/helpers/transactions.d.cts +0 -51
  89. package/dist/mappers/helpers/transactions.d.cts.map +0 -1
  90. package/dist/mappers/helpers/transactions.d.mts.map +0 -1
  91. package/dist/mappers/helpers/transactions.mjs.map +0 -1
  92. package/dist/mappers/keyring-transaction-mapper.cjs +0 -201
  93. package/dist/mappers/keyring-transaction-mapper.cjs.map +0 -1
  94. package/dist/mappers/keyring-transaction-mapper.d.cts.map +0 -1
  95. package/dist/mappers/keyring-transaction-mapper.d.mts +0 -26
  96. package/dist/mappers/keyring-transaction-mapper.d.mts.map +0 -1
  97. package/dist/mappers/keyring-transaction-mapper.mjs.map +0 -1
  98. package/dist/mappers/local-transaction-mapper.cjs +0 -436
  99. package/dist/mappers/local-transaction-mapper.cjs.map +0 -1
  100. package/dist/mappers/local-transaction-mapper.d.cts.map +0 -1
  101. package/dist/mappers/local-transaction-mapper.d.mts +0 -20
  102. package/dist/mappers/local-transaction-mapper.d.mts.map +0 -1
  103. package/dist/mappers/local-transaction-mapper.mjs.map +0 -1
  104. package/dist/mappers/ramps-order-mapper.cjs +0 -145
  105. package/dist/mappers/ramps-order-mapper.cjs.map +0 -1
  106. package/dist/mappers/ramps-order-mapper.d.cts.map +0 -1
  107. package/dist/mappers/ramps-order-mapper.d.mts +0 -50
  108. package/dist/mappers/ramps-order-mapper.d.mts.map +0 -1
  109. package/dist/mappers/ramps-order-mapper.mjs.map +0 -1
  110. package/dist/types.cjs +0 -3
  111. package/dist/types.cjs.map +0 -1
  112. package/dist/types.d.cts.map +0 -1
  113. package/dist/types.d.mts +0 -114
  114. package/dist/types.d.mts.map +0 -1
  115. package/dist/types.mjs +0 -2
  116. package/dist/types.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ### Changed
11
11
 
12
+ - **BREAKING:** Bump minimum Node.js version to 22 ([#9168](https://github.com/MetaMask/core/pull/9168))
12
13
  - Bump `@metamask/transaction-controller` from `^69.6.0` to `^69.6.1` ([#9969](https://github.com/MetaMask/core/pull/9969))
13
14
 
14
15
  ## [2.1.1]
@@ -16,4 +16,4 @@ export declare function createFormatters({ locale, }: {
16
16
  locale?: string;
17
17
  }): Formatters;
18
18
  export {};
19
- //# sourceMappingURL=create-formatters.d.mts.map
19
+ //# sourceMappingURL=create-formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-formatters.d.ts","sourceRoot":"","sources":["../../src/formatters/create-formatters.ts"],"names":[],"mappings":"AAoBA,KAAK,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;AA4S3C,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,KAAK,MAAM,CAAC;IAC3E,cAAc,EAAE,CACd,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAC9C,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,KAC/B,MAAM,CAAC;IACZ,qBAAqB,EAAE,CACrB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,KAC3C,MAAM,CAAC;IACZ,8BAA8B,EAAE,CAC9B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,KAC3C,MAAM,CAAC;IACZ,wBAAwB,EAAE,CACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,KAC3C,MAAM,CAAC;IACZ,WAAW,EAAE,CACX,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,KAC/B,MAAM,CAAC;IACZ,mBAAmB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9D,iBAAiB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5D,6BAA6B,EAAE,CAC7B,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,KAC/B,MAAM,CAAC;IACZ,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;IACxC,cAAc,EAAE,CACd,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,KACjC,MAAM,CAAC;CACb,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,MAAwB,GACzB,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,UAAU,CAqBb"}
@@ -231,4 +231,4 @@ export function createFormatters({ locale = FALLBACK_LOCALE, }) {
231
231
  formatDateTime: formatDateTime.bind(null, config),
232
232
  };
233
233
  }
234
- //# sourceMappingURL=create-formatters.mjs.map
234
+ //# sourceMappingURL=create-formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-formatters.js","sourceRoot":"","sources":["../../src/formatters/create-formatters.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,MAAM,WAAW,GAAG;IAClB,qBAAqB,EAAE,CAAC;IACxB,qBAAqB,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,mBAAmB,GAAG;IAC1B,wBAAwB,EAAE,CAAC;IAC3B,wBAAwB,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,sBAAsB,GAAG;IAC7B,wBAAwB,EAAE,CAAC;IAC3B,wBAAwB,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,iBAAiB,GAAsC,EAAE,CAAC;AAChE,MAAM,mBAAmB,GAAwC,EAAE,CAAC;AAIpE,SAAS,qBAAqB,CAC5B,MAAc,EACd,OAAiC;IAEjC,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IAEnD,IAAI,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAEpC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAChC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAC9B,MAAc,EACd,OAAmC;IAEnC,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,mBAAmB,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,YAAY,CACnB,MAA0B,EAC1B,KAAY,EACZ,OAAO,GAA6B,EAAE;IAEtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnE,0EAA0E;IAC1E,OAAO,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,cAAc,CACrB,MAA0B,EAC1B,KAAY,EACZ,QAA8C,EAC9C,OAAO,GAA6B,EAAE;IAEtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE;QACxD,KAAK,EAAE,UAAU;QACjB,QAAQ;QACR,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,0EAA0E;IAC1E,OAAO,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAA0B,EAC1B,KAAY,EACZ,QAA8C;IAE9C,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC7C,QAAQ,EAAE,SAAS;QACnB,GAAG,WAAW;KACf,CAAC,CAAC;AACL,CAAC;AAED,SAAS,8BAA8B,CACrC,MAA0B,EAC1B,KAAY,EACZ,QAA8C;IAE9C,MAAM,YAAY,GAAG,IAAI,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,aAAa,GAAG,YAAY,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACpE,OAAO,IAAI,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,wBAAwB,CAC/B,MAA0B,EAC1B,KAAY,EACZ,QAA8C;IAE9C,MAAM,YAAY,GAAG,UAAU,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,aAAa,GAAG,YAAY,EAAE,CAAC;QACjC,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,CAAC,EAAE,CAAC;IACnF,CAAC;IAED,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,aAAa,GAAG,OAAS,EAAE,CAAC;QAC9B,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,WAAW,CAClB,MAA0B,EAC1B,KAAY,EACZ,MAAc,EACd,OAAO,GAA6B,EAAE;IAEtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE;QACxD,KAAK,EAAE,SAAS;QAChB,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,0EAA0E;IAC1E,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnD,OAAO,GAAG,eAAe,IAAI,MAAM,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAA0B,EAC1B,KAAY,EACZ,MAAc;IAEd,MAAM,YAAY,GAAG,OAAO,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,aAAa,GAAG,YAAY,EAAE,CAAC;QACjC,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,aAAa,GAAG,OAAS,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QACzC,QAAQ,EAAE,SAAS;QACnB,GAAG,WAAW;KACf,CAAC,CAAC;AACL,CAAC;AAED,gDAAgD;AAChD,SAAS,iBAAiB,CACxB,MAA0B,EAC1B,KAAY,EACZ,MAAc;IAEd,MAAM,YAAY,GAAG,OAAO,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,aAAa,GAAG,YAAY,EAAE,CAAC;QACjC,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE;YACnD,wBAAwB,EAAE,CAAC;YAC3B,wBAAwB,EAAE,CAAC;SAC5B,CAAC,EAAE,CAAC;IACP,CAAC;IAED,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;YACzC,wBAAwB,EAAE,CAAC;YAC3B,wBAAwB,EAAE,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,aAAa,GAAG,OAAS,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;YACzC,qBAAqB,EAAE,CAAC;YACxB,qBAAqB,EAAE,CAAC;SACzB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QACzC,QAAQ,EAAE,SAAS;QACnB,qBAAqB,EAAE,CAAC;QACxB,qBAAqB,EAAE,CAAC;KACzB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,6BAA6B,CACpC,MAA0B,EAC1B,KAAY,EACZ,OAAO,GAA6B,EAAE;IAEtC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,QAAQ;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GACX,MAAM,KAAK,CAAC;QACV,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;IAEnE,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE;QACnC,KAAK,EAAE,SAAS;QAChB,qBAAqB,EAAE,CAAC;QACxB,qBAAqB,EAAE,CAAC;QACxB,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,MAA0B,EAAE,KAAY;IAC7D,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE;QACjC,QAAQ,EAAE,SAAS;QACnB,qBAAqB,EAAE,CAAC;QACxB,qBAAqB,EAAE,CAAC;KACzB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CACrB,MAA0B,EAC1B,SAA0B,EAC1B,OAAoC;IAEpC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE;QAC5C,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,IAAI;QACZ,GAAG,OAAO;KACX,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC;AAuCD,MAAM,UAAU,gBAAgB,CAAC,EAC/B,MAAM,GAAG,eAAe,GAGzB;IACC,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO;QACL,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QAC7C,cAAc,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QACjD,qBAAqB,EAAE,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QAC/D,8BAA8B,EAAE,8BAA8B,CAAC,IAAI,CACjE,IAAI,EACJ,MAAM,CACP;QACD,wBAAwB,EAAE,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QACrE,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QAC3C,mBAAmB,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QAC3D,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QACvD,6BAA6B,EAAE,6BAA6B,CAAC,IAAI,CAC/D,IAAI,EACJ,MAAM,CACP;QACD,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QAC/C,cAAc,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;KAClD,CAAC;AACJ,CAAC","sourcesContent":["const FALLBACK_LOCALE = 'en';\n\nconst twoDecimals = {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n};\n\nconst oneSignificantDigit = {\n minimumSignificantDigits: 1,\n maximumSignificantDigits: 1,\n};\n\nconst threeSignificantDigits = {\n minimumSignificantDigits: 3,\n maximumSignificantDigits: 3,\n};\n\nconst numberFormatCache: Record<string, Intl.NumberFormat> = {};\nconst dateTimeFormatCache: Record<string, Intl.DateTimeFormat> = {};\n\ntype Value = number | bigint | `${number}`;\n\nfunction getCachedNumberFormat(\n locale: string,\n options: Intl.NumberFormatOptions,\n): Intl.NumberFormat {\n const key = `${locale}_${JSON.stringify(options)}`;\n\n let format = numberFormatCache[key];\n\n if (format) {\n return format;\n }\n\n try {\n format = new Intl.NumberFormat(locale, options);\n } catch (error) {\n if (error instanceof RangeError) {\n format = new Intl.NumberFormat(locale, twoDecimals);\n } else {\n throw error;\n }\n }\n\n numberFormatCache[key] = format;\n return format;\n}\n\nfunction getCachedDateTimeFormat(\n locale: string,\n options: Intl.DateTimeFormatOptions,\n): Intl.DateTimeFormat {\n const key = `${locale}_${JSON.stringify(options)}`;\n if (!dateTimeFormatCache[key]) {\n dateTimeFormatCache[key] = new Intl.DateTimeFormat(locale, options);\n }\n return dateTimeFormatCache[key];\n}\n\nfunction formatNumber(\n config: { locale: string },\n value: Value,\n options: Intl.NumberFormatOptions = {},\n): string {\n if (!Number.isFinite(Number(value))) {\n return '';\n }\n\n const numberFormat = getCachedNumberFormat(config.locale, options);\n\n // @ts-expect-error Remove this comment once TypeScript is updated to 5.5+\n return numberFormat.format(value);\n}\n\nfunction formatCurrency(\n config: { locale: string },\n value: Value,\n currency: Intl.NumberFormatOptions['currency'],\n options: Intl.NumberFormatOptions = {},\n): string {\n if (!Number.isFinite(Number(value))) {\n return '';\n }\n\n const numberFormat = getCachedNumberFormat(config.locale, {\n style: 'currency',\n currency,\n ...options,\n });\n\n // @ts-expect-error Remove this comment once TypeScript is updated to 5.5+\n return numberFormat.format(value);\n}\n\nfunction formatCurrencyCompact(\n config: { locale: string },\n value: Value,\n currency: Intl.NumberFormatOptions['currency'],\n): string {\n return formatCurrency(config, value, currency, {\n notation: 'compact',\n ...twoDecimals,\n });\n}\n\nfunction formatCurrencyWithMinThreshold(\n config: { locale: string },\n value: Value,\n currency: Intl.NumberFormatOptions['currency'],\n): string {\n const minThreshold = 0.01;\n const number = Number(value);\n const absoluteValue = Math.abs(number);\n\n if (!Number.isFinite(number)) {\n return '';\n }\n\n if (number === 0) {\n return formatCurrency(config, 0, currency);\n }\n\n if (absoluteValue < minThreshold) {\n const formattedMin = formatCurrency(config, minThreshold, currency);\n return `<${formattedMin}`;\n }\n\n return formatCurrency(config, number, currency);\n}\n\nfunction formatCurrencyTokenPrice(\n config: { locale: string },\n value: Value,\n currency: Intl.NumberFormatOptions['currency'],\n): string {\n const minThreshold = 0.00000001;\n const number = Number(value);\n const absoluteValue = Math.abs(number);\n\n if (!Number.isFinite(number)) {\n return '';\n }\n\n if (number === 0) {\n return formatCurrency(config, 0, currency);\n }\n\n if (absoluteValue < minThreshold) {\n return `<${formatCurrency(config, minThreshold, currency, oneSignificantDigit)}`;\n }\n\n if (absoluteValue < 1) {\n return formatCurrency(config, number, currency, threeSignificantDigits);\n }\n\n if (absoluteValue < 1_000_000) {\n return formatCurrency(config, number, currency);\n }\n\n return formatCurrencyCompact(config, number, currency);\n}\n\nfunction formatToken(\n config: { locale: string },\n value: Value,\n symbol: string,\n options: Intl.NumberFormatOptions = {},\n): string {\n if (!Number.isFinite(Number(value))) {\n return '';\n }\n\n const numberFormat = getCachedNumberFormat(config.locale, {\n style: 'decimal',\n ...options,\n });\n\n // @ts-expect-error Remove this comment once TypeScript is updated to 5.5+\n const formattedNumber = numberFormat.format(value);\n\n return `${formattedNumber} ${symbol}`;\n}\n\nfunction formatTokenQuantity(\n config: { locale: string },\n value: Value,\n symbol: string,\n): string {\n const minThreshold = 0.00001;\n const number = Number(value);\n const absoluteValue = Math.abs(number);\n\n if (!Number.isFinite(number)) {\n return '';\n }\n\n if (number === 0) {\n return formatToken(config, 0, symbol);\n }\n\n if (absoluteValue < minThreshold) {\n return `<${formatToken(config, minThreshold, symbol, oneSignificantDigit)}`;\n }\n\n if (absoluteValue < 1) {\n return formatToken(config, number, symbol, threeSignificantDigits);\n }\n\n if (absoluteValue < 1_000_000) {\n return formatToken(config, number, symbol);\n }\n\n return formatToken(config, number, symbol, {\n notation: 'compact',\n ...twoDecimals,\n });\n}\n\n// Format token quantity without trailing zeros.\nfunction formatTokenAmount(\n config: { locale: string },\n value: Value,\n symbol: string,\n): string {\n const minThreshold = 0.00001;\n const number = Number(value);\n const absoluteValue = Math.abs(number);\n\n if (!Number.isFinite(number)) {\n return '';\n }\n\n if (number === 0) {\n return formatToken(config, 0, symbol, { maximumFractionDigits: 0 });\n }\n\n if (absoluteValue < minThreshold) {\n return `<${formatToken(config, minThreshold, symbol, {\n minimumSignificantDigits: 1,\n maximumSignificantDigits: 1,\n })}`;\n }\n\n if (absoluteValue < 1) {\n return formatToken(config, number, symbol, {\n minimumSignificantDigits: 1,\n maximumSignificantDigits: 4,\n });\n }\n\n if (absoluteValue < 1_000_000) {\n return formatToken(config, number, symbol, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 4,\n });\n }\n\n return formatToken(config, number, symbol, {\n notation: 'compact',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n });\n}\n\nfunction formatPercentWithMinThreshold(\n config: { locale: string },\n value: Value,\n options: Intl.NumberFormatOptions = {},\n): string {\n const minThreshold = 0.0001; // 0.01%\n const number = Number(value);\n\n if (!Number.isFinite(number)) {\n return '';\n }\n\n const clamped =\n number === 0\n ? 0\n : Math.sign(number) * Math.max(Math.abs(number), minThreshold);\n\n return formatNumber(config, clamped, {\n style: 'percent',\n maximumFractionDigits: 2,\n minimumFractionDigits: 2,\n ...options,\n });\n}\n\nfunction formatCompact(config: { locale: string }, value: Value): string {\n return formatNumber(config, value, {\n notation: 'compact',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n}\n\nfunction formatDateTime(\n config: { locale: string },\n timestamp: string | number,\n options?: Intl.DateTimeFormatOptions,\n): string {\n if (!timestamp) {\n return '';\n }\n const date = new Date(timestamp);\n if (isNaN(date.getTime())) {\n return '';\n }\n return getCachedDateTimeFormat(config.locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n hour12: true,\n ...options,\n }).format(date);\n}\n\nexport type Formatters = {\n formatNumber: (value: Value, options?: Intl.NumberFormatOptions) => string;\n formatCurrency: (\n value: Value,\n currency: Intl.NumberFormatOptions['currency'],\n options?: Intl.NumberFormatOptions,\n ) => string;\n formatCurrencyCompact: (\n value: Value,\n currency: Intl.NumberFormatOptions['currency'],\n ) => string;\n formatCurrencyWithMinThreshold: (\n value: Value,\n currency: Intl.NumberFormatOptions['currency'],\n ) => string;\n formatCurrencyTokenPrice: (\n value: Value,\n currency: Intl.NumberFormatOptions['currency'],\n ) => string;\n formatToken: (\n value: Value,\n symbol: string,\n options?: Intl.NumberFormatOptions,\n ) => string;\n formatTokenQuantity: (value: Value, symbol: string) => string;\n formatTokenAmount: (value: Value, symbol: string) => string;\n formatPercentWithMinThreshold: (\n value: Value,\n options?: Intl.NumberFormatOptions,\n ) => string;\n formatCompact: (value: Value) => string;\n formatDateTime: (\n timestamp: string | number,\n options?: Intl.DateTimeFormatOptions,\n ) => string;\n};\n\nexport function createFormatters({\n locale = FALLBACK_LOCALE,\n}: {\n locale?: string;\n}): Formatters {\n const config = { locale };\n return {\n formatNumber: formatNumber.bind(null, config),\n formatCurrency: formatCurrency.bind(null, config),\n formatCurrencyCompact: formatCurrencyCompact.bind(null, config),\n formatCurrencyWithMinThreshold: formatCurrencyWithMinThreshold.bind(\n null,\n config,\n ),\n formatCurrencyTokenPrice: formatCurrencyTokenPrice.bind(null, config),\n formatToken: formatToken.bind(null, config),\n formatTokenQuantity: formatTokenQuantity.bind(null, config),\n formatTokenAmount: formatTokenAmount.bind(null, config),\n formatPercentWithMinThreshold: formatPercentWithMinThreshold.bind(\n null,\n config,\n ),\n formatCompact: formatCompact.bind(null, config),\n formatDateTime: formatDateTime.bind(null, config),\n };\n}\n"]}
@@ -0,0 +1,9 @@
1
+ export { createFormatters } from './formatters/create-formatters.js';
2
+ export type { Formatters } from './formatters/create-formatters.js';
3
+ export { mapApiTransaction } from './mappers/api-transaction-mapper.js';
4
+ export { mapKeyringTransaction } from './mappers/keyring-transaction-mapper.js';
5
+ export { mapLocalTransaction } from './mappers/local-transaction-mapper.js';
6
+ export { mapRampsOrder } from './mappers/ramps-order-mapper.js';
7
+ export type { RampsOrderLike } from './mappers/ramps-order-mapper.js';
8
+ export type * from './types.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,YAAY,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,mBAAmB,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { createFormatters } from './formatters/create-formatters.js';
2
+ export { mapApiTransaction } from './mappers/api-transaction-mapper.js';
3
+ export { mapKeyringTransaction } from './mappers/keyring-transaction-mapper.js';
4
+ export { mapLocalTransaction } from './mappers/local-transaction-mapper.js';
5
+ export { mapRampsOrder } from './mappers/ramps-order-mapper.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC","sourcesContent":["export { createFormatters } from './formatters/create-formatters.js';\nexport type { Formatters } from './formatters/create-formatters.js';\n\nexport { mapApiTransaction } from './mappers/api-transaction-mapper.js';\nexport { mapKeyringTransaction } from './mappers/keyring-transaction-mapper.js';\nexport { mapLocalTransaction } from './mappers/local-transaction-mapper.js';\nexport { mapRampsOrder } from './mappers/ramps-order-mapper.js';\nexport type { RampsOrderLike } from './mappers/ramps-order-mapper.js';\n\nexport type * from './types.js';\n"]}
@@ -1,5 +1,5 @@
1
- import type { V1TransactionByHashResponse } from "@metamask/core-backend";
2
- import type { ActivityItem } from "../types.cjs";
1
+ import type { V1TransactionByHashResponse } from '@metamask/core-backend';
2
+ import type { ActivityItem } from '../types.js';
3
3
  /**
4
4
  * Maps an indexed API transaction into the shared activity item shape.
5
5
  *
@@ -12,4 +12,4 @@ export declare function mapApiTransaction({ transaction, subjectAddress, }: {
12
12
  transaction: V1TransactionByHashResponse;
13
13
  subjectAddress: string;
14
14
  }): ActivityItem;
15
- //# sourceMappingURL=api-transaction-mapper.d.cts.map
15
+ //# sourceMappingURL=api-transaction-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-transaction-mapper.d.ts","sourceRoot":"","sources":["../../src/mappers/api-transaction-mapper.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAG1E,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,aAAa,CAAC;AAiBrB;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,WAAW,EACX,cAAc,GACf,EAAE;IACD,WAAW,EAAE,2BAA2B,CAAC;IACzC,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,YAAY,CAgXf"}
@@ -1,8 +1,8 @@
1
- import { isEqualCaseInsensitive as equalsIgnoreCase, isValidHexAddress } from "@metamask/controller-utils";
2
- import { KnownCaipNamespace, toCaipChainId } from "@metamask/utils";
3
- import { nativeTokenAddress, supplyMethodIds, swapsWrappedTokensAddresses, withdrawMethodIds, wrapMethodIds } from "./constants.mjs";
4
- import { formatAddressToAssetId, getNativeAsset } from "./helpers/caip.mjs";
5
- import { getFees, getNftPaymentTransfer, getTokenAmountFromTransfer, getTokenMetadataFromKnownToken, parseValueTransfers } from "./helpers/transactions.mjs";
1
+ import { isEqualCaseInsensitive as equalsIgnoreCase, isValidHexAddress, } from '@metamask/controller-utils';
2
+ import { KnownCaipNamespace, toCaipChainId } from '@metamask/utils';
3
+ import { nativeTokenAddress, supplyMethodIds, swapsWrappedTokensAddresses, withdrawMethodIds, wrapMethodIds, } from './constants.js';
4
+ import { formatAddressToAssetId, getNativeAsset } from './helpers/caip.js';
5
+ import { getFees, getNftPaymentTransfer, getTokenAmountFromTransfer, getTokenMetadataFromKnownToken, parseValueTransfers, } from './helpers/transactions.js';
6
6
  /**
7
7
  * Maps an indexed API transaction into the shared activity item shape.
8
8
  *
@@ -309,4 +309,4 @@ export function mapApiTransaction({ transaction, subjectAddress, }) {
309
309
  },
310
310
  };
311
311
  }
312
- //# sourceMappingURL=api-transaction-mapper.mjs.map
312
+ //# sourceMappingURL=api-transaction-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-transaction-mapper.js","sourceRoot":"","sources":["../../src/mappers/api-transaction-mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isEqualCaseInsensitive as equalsIgnoreCase,\n isValidHexAddress,\n} from '@metamask/controller-utils';\nimport type { V1TransactionByHashResponse } from '@metamask/core-backend';\nimport { KnownCaipNamespace, toCaipChainId } from '@metamask/utils';\n\nimport type {\n ActivityItem,\n Status,\n TokenAmount,\n ValueTransfer,\n} from '../types.js';\nimport {\n nativeTokenAddress,\n supplyMethodIds,\n swapsWrappedTokensAddresses,\n withdrawMethodIds,\n wrapMethodIds,\n} from './constants.js';\nimport { formatAddressToAssetId, getNativeAsset } from './helpers/caip.js';\nimport {\n getFees,\n getNftPaymentTransfer,\n getTokenAmountFromTransfer,\n getTokenMetadataFromKnownToken,\n parseValueTransfers,\n} from './helpers/transactions.js';\n\n/**\n * Maps an indexed API transaction into the shared activity item shape.\n *\n * @param options - The mapping options.\n * @param options.transaction - The indexed API transaction to map.\n * @param options.subjectAddress - The account the activity is being mapped for.\n * @returns The normalized activity item.\n */\nexport function mapApiTransaction({\n transaction,\n subjectAddress,\n}: {\n transaction: V1TransactionByHashResponse;\n subjectAddress: string;\n}): ActivityItem {\n const { hash, transactionCategory, valueTransfers, from, methodId } =\n transaction;\n const normalizedMethodId = methodId?.toLowerCase() ?? '';\n const status: Status = transaction.isError ? 'failed' : 'success';\n const timestamp = new Date(transaction.timestamp).getTime();\n const chainId = toCaipChainId(\n KnownCaipNamespace.Eip155,\n transaction.chainId.toString(),\n );\n const getToken = (\n transfer: ValueTransfer | undefined,\n direction: TokenAmount['direction'],\n ): TokenAmount | undefined =>\n getTokenAmountFromTransfer(transfer, direction, chainId);\n\n const {\n sentTransfer,\n receivedTransfer,\n sentNativeTransfer,\n sentNftTransfer,\n receivedNftTransfer,\n } = parseValueTransfers(valueTransfers, subjectAddress);\n\n const common = { chainId, status, timestamp, hash };\n\n if (transactionCategory === 'SWAP' || transactionCategory === 'EXCHANGE') {\n return {\n type: 'swap',\n ...common,\n data: {\n sourceToken: getToken(sentTransfer, 'out'),\n destinationToken: getToken(receivedTransfer, 'in'),\n fees: getFees(transaction),\n from,\n },\n };\n }\n\n if (transactionCategory === 'APPROVE') {\n // Note: Categorize REVOKE in the backend\n const direction = receivedTransfer && !sentTransfer ? 'in' : 'out';\n const valueTransferContractAddress = valueTransfers?.find(\n ({ contractAddress, transferType }) =>\n contractAddress &&\n transferType !== 'normal' &&\n transferType !== 'internal',\n )?.contractAddress;\n const contractAddress =\n (isValidHexAddress(transaction.to, { allowNonPrefixed: false })\n ? transaction.to\n : undefined) ??\n (valueTransferContractAddress &&\n isValidHexAddress(valueTransferContractAddress, {\n allowNonPrefixed: false,\n })\n ? valueTransferContractAddress\n : undefined);\n const assetId = contractAddress\n ? formatAddressToAssetId(contractAddress, chainId)\n : undefined;\n const token =\n getTokenMetadataFromKnownToken(contractAddress, direction, chainId) ??\n (assetId ? { direction, assetId } : undefined);\n\n return {\n type: 'approveSpendingCap',\n ...common,\n data: {\n from,\n token,\n fees: getFees(transaction),\n },\n };\n }\n\n // Note: Categorize NFT in the backend\n const isNftExchange = transactionCategory === 'NFT_EXCHANGE';\n\n if (receivedNftTransfer) {\n if (receivedNftTransfer.from === nativeTokenAddress) {\n return {\n type: 'nftMint',\n ...common,\n data: {\n from: receivedNftTransfer.from,\n to: receivedNftTransfer.to,\n token: getToken(receivedNftTransfer, 'in'),\n },\n };\n }\n\n const purchasePaymentTransfer = getNftPaymentTransfer({\n side: 'buy',\n sentTransfer,\n sentNativeTransfer,\n nftCounterparty: receivedNftTransfer.from,\n transactionTo: transaction.to,\n subjectAddress,\n });\n\n if (isNftExchange || purchasePaymentTransfer) {\n return {\n type: 'nftBuy',\n ...common,\n data: {\n from: receivedNftTransfer.from,\n to: receivedNftTransfer.to,\n token: getToken(receivedNftTransfer, 'in'),\n paymentToken: getToken(purchasePaymentTransfer, 'out'),\n },\n };\n }\n\n return {\n type: 'receive',\n ...common,\n data: {\n from: receivedNftTransfer.from,\n to: receivedNftTransfer.to,\n token: getToken(receivedNftTransfer, 'in'),\n },\n };\n }\n\n if (sentNftTransfer) {\n const saleProceedsTransfer = getNftPaymentTransfer({\n side: 'sell',\n receivedTransfer,\n nftCounterparty: sentNftTransfer.to,\n transactionFrom: from,\n subjectAddress,\n });\n\n if (isNftExchange || saleProceedsTransfer) {\n return {\n type: 'nftSell',\n ...common,\n data: {\n from: sentNftTransfer.from,\n to: sentNftTransfer.to,\n token: getToken(sentNftTransfer, 'out'),\n paymentToken: getToken(saleProceedsTransfer, 'in'),\n },\n };\n }\n\n return {\n type: 'send',\n ...common,\n data: {\n from: sentNftTransfer.from,\n to: sentNftTransfer.to,\n token: getToken(sentNftTransfer, 'out'),\n },\n };\n }\n\n const hasNativeTransferWithoutMethod =\n transactionCategory === 'CONTRACT_CALL' &&\n !methodId &&\n valueTransfers?.some(({ transferType }) => transferType === 'normal');\n\n if (\n transactionCategory === 'TRANSFER' ||\n transactionCategory === 'STANDARD' ||\n hasNativeTransferWithoutMethod\n ) {\n const isReceive =\n Boolean(receivedTransfer && !sentTransfer) ||\n (equalsIgnoreCase(transaction.to, subjectAddress) &&\n !equalsIgnoreCase(from, subjectAddress));\n\n const transfer = isReceive ? receivedTransfer : sentTransfer;\n const direction: TokenAmount['direction'] = isReceive ? 'in' : 'out';\n let token = getToken(transfer, direction);\n\n if (!token) {\n // Zero-value sends can omit valueTransfers\n if (transactionCategory === 'STANDARD') {\n const nativeAsset = getNativeAsset(chainId);\n if (nativeAsset) {\n token = {\n symbol: nativeAsset.symbol,\n decimals: nativeAsset.decimals,\n assetId: nativeAsset.assetId,\n amount: transaction.value,\n direction,\n assetType: 'native',\n };\n }\n }\n } else if (\n !token.assetId &&\n transfer?.transferType !== 'normal' &&\n transfer?.transferType !== 'internal'\n ) {\n // ERC-20 transfer missing contractAddress — fall back to tx.to.\n const assetId = formatAddressToAssetId(transaction.to, chainId);\n if (assetId) {\n token = { ...token, assetId };\n }\n }\n\n return {\n type: isReceive ? 'receive' : 'send',\n ...common,\n data: {\n from: transfer?.from ?? from,\n to: transfer?.to ?? transaction.to,\n token,\n fees: getFees(transaction),\n },\n };\n }\n\n if (transactionCategory === 'CLAIM_BONUS') {\n return {\n type: 'claimMusdBonus',\n ...common,\n data: {\n from,\n token: getToken(receivedTransfer, 'in'),\n },\n };\n }\n\n if (transactionCategory === 'CLAIM') {\n return {\n type: 'claim',\n ...common,\n data: {\n from,\n token: getToken(\n receivedTransfer ?? sentTransfer,\n receivedTransfer ? 'in' : 'out',\n ),\n },\n };\n }\n\n if (transactionCategory === 'BRIDGE_WITHDRAW') {\n return {\n type: 'bridge',\n ...common,\n data: {\n from,\n sourceToken: getToken(sentTransfer, 'out'),\n fees: getFees(transaction),\n },\n };\n }\n\n if (\n transactionCategory === 'WITHDRAW' &&\n withdrawMethodIds.has(normalizedMethodId)\n ) {\n return {\n type: 'lendingWithdrawal',\n ...common,\n data: {\n from,\n sourceToken: getToken(sentTransfer, 'out'),\n destinationToken: getToken(receivedTransfer, 'in'),\n fees: getFees(transaction),\n },\n };\n }\n\n // Note: Categorize Deposit/Stake in the backend\n if (sentTransfer && supplyMethodIds.has(normalizedMethodId)) {\n return {\n type: 'lendingDeposit',\n ...common,\n data: {\n from,\n sourceToken: getToken(sentTransfer, 'out'),\n destinationToken: getToken(receivedTransfer, 'in'),\n fees: getFees(transaction),\n },\n };\n }\n\n const wrappedNativeAddress =\n swapsWrappedTokensAddresses[\n `0x${transaction.chainId.toString(\n 16,\n )}` as keyof typeof swapsWrappedTokensAddresses\n ];\n\n if (\n receivedTransfer &&\n wrapMethodIds.has(normalizedMethodId) &&\n wrappedNativeAddress &&\n equalsIgnoreCase(transaction.to, wrappedNativeAddress)\n ) {\n return {\n type: 'wrap',\n ...common,\n data: {\n from,\n sourceToken: getToken(sentTransfer, 'out'),\n destinationToken: getToken(receivedTransfer, 'in'),\n fees: getFees(transaction),\n },\n };\n }\n\n if (transactionCategory === 'UNWRAP') {\n return {\n type: 'unwrap',\n ...common,\n data: {\n from,\n sourceToken: getToken(sentTransfer, 'out'),\n destinationToken: getToken(receivedTransfer, 'in'),\n fees: getFees(transaction),\n },\n };\n }\n\n // Note: Categorize these Swaps in the backend\n if (\n transactionCategory === 'CONTRACT_CALL' &&\n sentTransfer?.symbol &&\n receivedTransfer?.symbol &&\n sentTransfer.symbol !== receivedTransfer.symbol\n ) {\n return {\n type: 'swap',\n ...common,\n data: {\n from,\n sourceToken: getToken(sentTransfer, 'out'),\n destinationToken: getToken(receivedTransfer, 'in'),\n fees: getFees(transaction),\n },\n };\n }\n\n if (transactionCategory === 'DEPOSIT') {\n return {\n type: 'deposit',\n ...common,\n data: {\n from,\n token: getToken(sentTransfer, 'out'),\n },\n };\n }\n\n const token = getToken(\n sentTransfer ?? receivedTransfer,\n sentTransfer ? 'out' : 'in',\n );\n\n return {\n type: 'contractInteraction',\n ...common,\n data: {\n methodId,\n from,\n to: transaction.to,\n transactionCategory,\n transactionProtocol: transaction.transactionProtocol,\n ...(token ? { token } : {}),\n },\n };\n}\n"]}
@@ -0,0 +1,26 @@
1
+ export declare const supplyMethodIds: Set<string>;
2
+ export declare const withdrawMethodIds: Set<string>;
3
+ export declare const wrapMethodIds: Set<string>;
4
+ export declare const unwrapMethodIds: Set<string>;
5
+ export declare const permit2ApproveMethodId = "0x87517c45";
6
+ export declare const tokenTransferLogTopicHash = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
7
+ export declare const nativeTokenAddress = "0x0000000000000000000000000000000000000000";
8
+ export declare const nativeTokenDecimals = 18;
9
+ export declare const swapsWrappedTokensAddresses: {
10
+ readonly '0x1': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2';
11
+ readonly '0x539': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2';
12
+ readonly '0x38': '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c';
13
+ readonly '0x89': '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270';
14
+ readonly '0x5': '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6';
15
+ readonly '0xa86a': '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7';
16
+ readonly '0xa': '0x4200000000000000000000000000000000000006';
17
+ readonly '0xa4b1': '0x82af49447d8a07e3bd95bd0d56f35241523fbab1';
18
+ readonly '0x144': '0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91';
19
+ readonly '0xe708': '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f';
20
+ readonly '0x2105': '0x4200000000000000000000000000000000000006';
21
+ readonly '0x531': '0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7';
22
+ readonly '0x8f': '0x3bd359c1119da7da1d913d1c4d2b7c461115433a';
23
+ readonly '0x3e7': '0x5555555555555555555555555555555555555555';
24
+ readonly '0x10e6': '0x4200000000000000000000000000000000000006';
25
+ };
26
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/mappers/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,aAK1B,CAAC;AAOH,eAAO,MAAM,iBAAiB,aAI5B,CAAC;AAEH,eAAO,MAAM,aAAa,aAA0B,CAAC;AACrD,eAAO,MAAM,eAAe,aAA0B,CAAC;AAEvD,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD,eAAO,MAAM,yBAAyB,uEACgC,CAAC;AAEvE,eAAO,MAAM,kBAAkB,+CAA+C,CAAC;AAE/E,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,eAAO,MAAM,2BAA2B;aACtC,KAAK,EAAE,4CAA4C;aACnD,OAAO,EAAE,4CAA4C;aACrD,MAAM,EAAE,4CAA4C;aACpD,MAAM,EAAE,4CAA4C;aACpD,KAAK,EAAE,4CAA4C;aACnD,QAAQ,EAAE,4CAA4C;aACtD,KAAK,EAAE,4CAA4C;aACnD,QAAQ,EAAE,4CAA4C;aACtD,OAAO,EAAE,4CAA4C;aACrD,QAAQ,EAAE,4CAA4C;aACtD,QAAQ,EAAE,4CAA4C;aACtD,OAAO,EAAE,4CAA4C;aACrD,MAAM,EAAE,4CAA4C;aACpD,OAAO,EAAE,4CAA4C;aACrD,QAAQ,EAAE,4CAA4C;CAC9C,CAAC"}
@@ -41,4 +41,4 @@ export const swapsWrappedTokensAddresses = {
41
41
  '0x3e7': '0x5555555555555555555555555555555555555555',
42
42
  '0x10e6': '0x4200000000000000000000000000000000000006',
43
43
  };
44
- //# sourceMappingURL=constants.mjs.map
44
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/mappers/constants.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,MAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,MAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,mCAAmC;AAC7E,MAAM,yBAAyB,GAAG,YAAY,CAAC,CAAC,iCAAiC;AAEjF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IACrC,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,yBAAyB;CAC1B,CAAC,CAAC;AAEH,sCAAsC;AACtC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAC1C,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAC/C,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAE5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,oBAAoB;IACpB,yBAAyB;IACzB,sBAAsB;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAEnD,MAAM,CAAC,MAAM,yBAAyB,GACpC,oEAAoE,CAAC;AAEvE,MAAM,CAAC,MAAM,kBAAkB,GAAG,4CAA4C,CAAC;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,4CAA4C;IACnD,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,4CAA4C;IACpD,MAAM,EAAE,4CAA4C;IACpD,KAAK,EAAE,4CAA4C;IACnD,QAAQ,EAAE,4CAA4C;IACtD,KAAK,EAAE,4CAA4C;IACnD,QAAQ,EAAE,4CAA4C;IACtD,OAAO,EAAE,4CAA4C;IACrD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,4CAA4C;IACpD,OAAO,EAAE,4CAA4C;IACrD,QAAQ,EAAE,4CAA4C;CAC9C,CAAC","sourcesContent":["// Known method IDs for supply/deposit calls\nconst aaveSupplyMethodId = '0x617ba037';\nconst lidoSubmitMethodId = '0xa1903eab';\nconst lidoDepositMethodId = '0x8a99b4f2'; // MM staking contract Lido deposit\nconst rocketPoolDepositMethodId = '0xfa4bbb71'; // MM staking contract RP deposit\n\nexport const supplyMethodIds = new Set([\n aaveSupplyMethodId,\n lidoSubmitMethodId,\n lidoDepositMethodId,\n rocketPoolDepositMethodId,\n]);\n\n// Known method IDs for withdraw calls\nconst aaveWithdrawMethodId = '0x69328dec';\nconst lidoClaimWithdrawMethodId = '0xf8444436';\nconst rocketPoolBurnMethodId = '0x42966c68';\n\nexport const withdrawMethodIds = new Set([\n aaveWithdrawMethodId,\n lidoClaimWithdrawMethodId,\n rocketPoolBurnMethodId,\n]);\n\nexport const wrapMethodIds = new Set(['0xd0e30db0']);\nexport const unwrapMethodIds = new Set(['0x2e1a7d4d']);\n\nexport const permit2ApproveMethodId = '0x87517c45';\n\nexport const tokenTransferLogTopicHash =\n '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';\n\nexport const nativeTokenAddress = '0x0000000000000000000000000000000000000000';\n\nexport const nativeTokenDecimals = 18;\n\nexport const swapsWrappedTokensAddresses = {\n '0x1': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n '0x539': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n '0x38': '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c',\n '0x89': '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270',\n '0x5': '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6',\n '0xa86a': '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7',\n '0xa': '0x4200000000000000000000000000000000000006',\n '0xa4b1': '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',\n '0x144': '0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91',\n '0xe708': '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f',\n '0x2105': '0x4200000000000000000000000000000000000006',\n '0x531': '0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7',\n '0x8f': '0x3bd359c1119da7da1d913d1c4d2b7c461115433a',\n '0x3e7': '0x5555555555555555555555555555555555555555',\n '0x10e6': '0x4200000000000000000000000000000000000006',\n} as const;\n"]}
@@ -1,4 +1,4 @@
1
- import type { CaipAssetType, CaipChainId, Hex } from "@metamask/utils";
1
+ import type { CaipAssetType, CaipChainId, Hex } from '@metamask/utils';
2
2
  /**
3
3
  * Normalizes a hex, decimal, numeric, or CAIP chain id to its CAIP-2 form.
4
4
  * Only EVM (eip155) chains are normalized here; CAIP ids are returned as-is.
@@ -29,4 +29,4 @@ export declare function getNativeAsset(chainId: CaipChainId): {
29
29
  * @returns The CAIP-19 asset id, or `undefined` when it can't be encoded.
30
30
  */
31
31
  export declare function formatAddressToAssetId(address: Hex | CaipAssetType | string, chainId?: CaipChainId | Hex): CaipAssetType | undefined;
32
- //# sourceMappingURL=caip.d.cts.map
32
+ //# sourceMappingURL=caip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caip.d.ts","sourceRoot":"","sources":["../../../src/mappers/helpers/caip.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAoCvE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,WAAW,GAAG,SAAS,CAoBzB;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EACpC,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,aAAa,GAAG,SAAS,CA0B3B;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAC/C;IACE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;CACxB,GACD,SAAS,CA+BZ;AAWD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,GAAG,GAAG,aAAa,GAAG,MAAM,EACrC,OAAO,CAAC,EAAE,WAAW,GAAG,GAAG,GAC1B,aAAa,GAAG,SAAS,CAwB3B"}
@@ -1,9 +1,9 @@
1
- import { toChecksumHexAddress } from "@metamask/controller-utils";
1
+ import { toChecksumHexAddress } from '@metamask/controller-utils';
2
2
  // @ts-expect-error: No type definitions for '@metamask/slip44'
3
- import slip44data from "@metamask/slip44" with { type: "json" };
4
- import { isCaipAssetType, isStrictHexString, KnownCaipNamespace, parseCaipChainId, toCaipAssetType } from "@metamask/utils";
5
- import { getChainById } from "eth-chainlist";
6
- import { nativeTokenAddress, nativeTokenDecimals } from "../constants.mjs";
3
+ import slip44data from '@metamask/slip44';
4
+ import { isCaipAssetType, isStrictHexString, KnownCaipNamespace, parseCaipChainId, toCaipAssetType, } from '@metamask/utils';
5
+ import { getChainById } from 'eth-chainlist';
6
+ import { nativeTokenAddress, nativeTokenDecimals } from '../constants.js';
7
7
  const slip44BySymbol = (() => {
8
8
  const coinTypeBySymbol = new Map();
9
9
  for (const [coinType, entry] of Object.entries(slip44data)) {
@@ -127,4 +127,4 @@ export function formatAddressToAssetId(address, chainId) {
127
127
  const { namespace, reference } = parseCaipChainId(caipChainId);
128
128
  return toCaipAssetType(namespace, reference, 'erc20', checksummedAddress);
129
129
  }
130
- //# sourceMappingURL=caip.mjs.map
130
+ //# sourceMappingURL=caip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caip.js","sourceRoot":"","sources":["../../../src/mappers/helpers/caip.ts"],"names":[],"mappings":"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","sourcesContent":["import { toChecksumHexAddress } from '@metamask/controller-utils';\n// @ts-expect-error: No type definitions for '@metamask/slip44'\nimport slip44data from '@metamask/slip44';\nimport type { CaipAssetType, CaipChainId, Hex } from '@metamask/utils';\nimport {\n isCaipAssetType,\n isStrictHexString,\n KnownCaipNamespace,\n parseCaipChainId,\n toCaipAssetType,\n} from '@metamask/utils';\nimport { getChainById } from 'eth-chainlist';\n\nimport { nativeTokenAddress, nativeTokenDecimals } from '../constants.js';\n\nconst slip44BySymbol = ((): Map<string, string> => {\n const coinTypeBySymbol = new Map<string, string>();\n\n for (const [coinType, entry] of Object.entries(\n slip44data as Record<string, { symbol: string }>,\n )) {\n const normalizedSymbol = entry.symbol.toUpperCase();\n\n if (!coinTypeBySymbol.has(normalizedSymbol)) {\n coinTypeBySymbol.set(normalizedSymbol, coinType);\n }\n }\n\n return coinTypeBySymbol;\n})();\n\nfunction getCoinType(symbol: string): string | undefined {\n const normalizedSymbol = symbol.toUpperCase();\n return (\n slip44BySymbol.get(normalizedSymbol) ??\n (normalizedSymbol === 'POL' ? slip44BySymbol.get('MATIC') : undefined)\n );\n}\n\n/**\n * Normalizes a hex, decimal, numeric, or CAIP chain id to its CAIP-2 form.\n * Only EVM (eip155) chains are normalized here; CAIP ids are returned as-is.\n *\n * @param chainId - Hex (`0x1`), numeric, decimal string, or CAIP chain id.\n * @returns The CAIP-2 chain id, or `undefined` when it can't be normalized.\n */\nexport function formatChainIdToCaip(\n chainId: string | number,\n): CaipChainId | undefined {\n if (typeof chainId === 'number') {\n return `eip155:${chainId}`;\n }\n\n if (chainId.includes(':')) {\n return chainId as CaipChainId;\n }\n\n if (chainId.startsWith('0x')) {\n const reference = Number.parseInt(chainId, 16);\n return Number.isNaN(reference) ? undefined : `eip155:${reference}`;\n }\n\n if (chainId === '') {\n return undefined;\n }\n\n const reference = Number(chainId);\n return Number.isNaN(reference) ? undefined : `eip155:${reference}`;\n}\n\nexport function resolveNativeAssetId(\n chainId: string | number | undefined,\n symbol: string | undefined,\n): CaipAssetType | undefined {\n if (chainId === undefined) {\n return undefined;\n }\n\n const caipChainId = formatChainIdToCaip(chainId);\n\n if (!caipChainId) {\n return undefined;\n }\n\n const { namespace, reference } = parseCaipChainId(caipChainId);\n const assetReference = symbol ? getCoinType(symbol) : undefined;\n\n if (assetReference) {\n return toCaipAssetType(namespace, reference, 'slip44', assetReference);\n }\n\n if (namespace === KnownCaipNamespace.Eip155) {\n return (\n getNativeAsset(caipChainId)?.assetId ??\n toCaipAssetType(namespace, reference, 'erc20', nativeTokenAddress)\n );\n }\n\n return undefined;\n}\n\n/**\n * Resolves EVM native symbol, decimals, and CAIP asset id for a chain.\n * Prefers eth-chainlist slip44 except testnet coin type 1, then falls back to\n * `@metamask/slip44` by native symbol.\n *\n * @param chainId - CAIP-2 chain id (eip155 only).\n * @returns Native asset metadata, or undefined when it cannot be resolved.\n */\nexport function getNativeAsset(chainId: CaipChainId):\n | {\n symbol: string;\n decimals: number;\n assetId: CaipAssetType;\n }\n | undefined {\n const { namespace, reference } = parseCaipChainId(chainId);\n if (namespace !== KnownCaipNamespace.Eip155) {\n return undefined;\n }\n\n const chain = getChainById(Number(reference));\n if (!chain) {\n return undefined;\n }\n\n const { nativeCurrency, slip44 } = chain;\n if (!nativeCurrency?.symbol) {\n return undefined;\n }\n\n const slip44TestnetCoinType = 1;\n const assetReference =\n typeof slip44 === 'number' && slip44 !== slip44TestnetCoinType\n ? String(slip44)\n : getCoinType(nativeCurrency.symbol);\n\n const assetId = assetReference\n ? toCaipAssetType(namespace, reference, 'slip44', assetReference)\n : toCaipAssetType(namespace, reference, 'erc20', nativeTokenAddress);\n\n return {\n symbol: nativeCurrency.symbol,\n decimals: nativeCurrency.decimals ?? nativeTokenDecimals,\n assetId,\n };\n}\n\nfunction isNativeAddress(address: string): boolean {\n const normalized = address.toLowerCase();\n return (\n normalized === nativeTokenAddress ||\n normalized === '0x0' ||\n /^0x0+$/u.test(normalized)\n );\n}\n\n/**\n * Encodes an EVM token address + chain id into a CAIP-19 asset id.\n *\n * @param address - Hex contract address, native sentinel, or CAIP asset id.\n * @param chainId - CAIP-2 or hex chain id.\n * @returns The CAIP-19 asset id, or `undefined` when it can't be encoded.\n */\nexport function formatAddressToAssetId(\n address: Hex | CaipAssetType | string,\n chainId?: CaipChainId | Hex,\n): CaipAssetType | undefined {\n if (isCaipAssetType(address)) {\n return address;\n }\n\n const caipChainId = chainId ? formatChainIdToCaip(chainId) : undefined;\n\n if (!caipChainId) {\n return undefined;\n }\n\n if (isNativeAddress(address)) {\n return undefined;\n }\n\n const checksummedAddress = toChecksumHexAddress(address);\n\n if (!isStrictHexString(checksummedAddress)) {\n return undefined;\n }\n\n const { namespace, reference } = parseCaipChainId(caipChainId);\n\n return toCaipAssetType(namespace, reference, 'erc20', checksummedAddress);\n}\n"]}
@@ -1,8 +1,8 @@
1
- import type { CaipChainId, Hex } from "@metamask/utils";
1
+ import type { CaipChainId, Hex } from '@metamask/utils';
2
2
  export type KnownTokenMetadata = {
3
3
  symbol?: string;
4
4
  decimals?: number;
5
5
  assetId?: string;
6
6
  };
7
7
  export declare function getKnownTokenMetadata(chainId: CaipChainId | Hex, contractAddress?: string): KnownTokenMetadata | undefined;
8
- //# sourceMappingURL=token-metadata.d.cts.map
8
+ //# sourceMappingURL=token-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-metadata.d.ts","sourceRoot":"","sources":["../../../src/mappers/helpers/token-metadata.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAIxD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAaF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,WAAW,GAAG,GAAG,EAC1B,eAAe,CAAC,EAAE,MAAM,GACvB,kBAAkB,GAAG,SAAS,CAsBhC"}
@@ -1,13 +1,6 @@
1
- function $importDefault(module) {
2
- if (module?.__esModule) {
3
- return module.default;
4
- }
5
- return module;
6
- }
7
- import $contractMap from "@metamask/contract-metadata";
8
- const contractMap = $importDefault($contractMap);
9
- import { toChecksumHexAddress } from "@metamask/controller-utils";
10
- import { formatAddressToAssetId } from "./caip.mjs";
1
+ import contractMap from '@metamask/contract-metadata';
2
+ import { toChecksumHexAddress } from '@metamask/controller-utils';
3
+ import { formatAddressToAssetId } from './caip.js';
11
4
  const mainnetTokens = contractMap;
12
5
  const mainnetAssetIdPrefix = 'eip155:1/';
13
6
  export function getKnownTokenMetadata(chainId, contractAddress) {
@@ -28,4 +21,4 @@ export function getKnownTokenMetadata(chainId, contractAddress) {
28
21
  assetId,
29
22
  };
30
23
  }
31
- //# sourceMappingURL=token-metadata.mjs.map
24
+ //# sourceMappingURL=token-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-metadata.js","sourceRoot":"","sources":["../../../src/mappers/helpers/token-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAenD,MAAM,aAAa,GAAG,WAAoD,CAAC;AAE3E,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAEzC,MAAM,UAAU,qBAAqB,CACnC,OAA0B,EAC1B,eAAwB;IAExB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAEjE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC;IAEnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO;KACR,CAAC;AACJ,CAAC","sourcesContent":["import contractMap from '@metamask/contract-metadata';\nimport { toChecksumHexAddress } from '@metamask/controller-utils';\nimport type { CaipChainId, Hex } from '@metamask/utils';\n\nimport { formatAddressToAssetId } from './caip.js';\n\nexport type KnownTokenMetadata = {\n symbol?: string;\n decimals?: number;\n assetId?: string;\n};\n\ntype ContractMetadataEntry = {\n name?: string;\n symbol?: string;\n decimals?: number;\n erc20?: boolean;\n};\n\nconst mainnetTokens = contractMap as Record<string, ContractMetadataEntry>;\n\nconst mainnetAssetIdPrefix = 'eip155:1/';\n\nexport function getKnownTokenMetadata(\n chainId: CaipChainId | Hex,\n contractAddress?: string,\n): KnownTokenMetadata | undefined {\n if (!contractAddress) {\n return undefined;\n }\n\n const assetId = formatAddressToAssetId(contractAddress, chainId);\n\n if (!assetId?.startsWith(mainnetAssetIdPrefix)) {\n return undefined;\n }\n\n const entry = mainnetTokens[toChecksumHexAddress(contractAddress)];\n\n if (!entry) {\n return undefined;\n }\n\n return {\n symbol: entry.symbol,\n decimals: entry.decimals,\n assetId,\n };\n}\n"]}
@@ -1,7 +1,7 @@
1
- import type { V1TransactionByHashResponse } from "@metamask/core-backend";
2
- import type { TransactionMeta } from "@metamask/transaction-controller";
3
- import type { CaipChainId, Hex } from "@metamask/utils";
4
- import type { Fee, Status, TokenAmount, ValueTransfer } from "../../types.mjs";
1
+ import type { V1TransactionByHashResponse } from '@metamask/core-backend';
2
+ import type { TransactionMeta } from '@metamask/transaction-controller';
3
+ import type { CaipChainId, Hex } from '@metamask/utils';
4
+ import type { Fee, Status, TokenAmount, ValueTransfer } from '../../types.js';
5
5
  export type TransactionGroup = {
6
6
  hasCancelled: boolean;
7
7
  hasRetried: boolean;
@@ -48,4 +48,4 @@ export declare function parseValueTransfers(valueTransfers: ValueTransfer[] | un
48
48
  };
49
49
  export declare function getTokenAmountFromTransfer(transfer: ValueTransfer | undefined, direction: TokenAmount['direction'], chainId: CaipChainId): TokenAmount | undefined;
50
50
  export declare function getTokenMetadataFromKnownToken(contractAddress: string | undefined, direction: TokenAmount['direction'], chainId: CaipChainId): TokenAmount | undefined;
51
- //# sourceMappingURL=transactions.d.mts.map
51
+ //# sourceMappingURL=transactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../../src/mappers/helpers/transactions.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAKxE,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,KAAK,EAEV,GAAG,EACH,MAAM,EACN,WAAW,EACX,aAAa,EACd,MAAM,gBAAgB,CAAC;AAWxB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,eAAe,GAAG;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACvE,KAAK,EAAE,GAAG,CAAC;IACX,kBAAkB,EAAE,eAAe,CAAC;IACpC,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC,CAAC;AA0FF,wBAAgB,OAAO,CACrB,WAAW,EAAE,2BAA2B,GACvC,GAAG,EAAE,GAAG,SAAS,CAInB;AAED,wBAAgB,uBAAuB,CACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,GAAG;IAC/D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GACA,GAAG,EAAE,GAAG,SAAS,CAmBnB;AAqCD,wBAAgB,yBAAyB,CAAC,EACxC,kBAAkB,EAClB,kBAAkB,GACnB,EAAE;IACD,kBAAkB,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;IAC3D,kBAAkB,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;CAC5D,GAAG,MAAM,CA4CT;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,GACf,EAAE;IACD,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,kBAAkB,CAAC,EAAE,aAAa,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,aAAa,GAAG,SAAS,CAsC5B;AAaD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,aAAa,EAAE,GAAG,SAAS,EAC3C,cAAc,EAAE,MAAM,GACrB;IACD,YAAY,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC,gBAAgB,EAAE,aAAa,GAAG,SAAS,CAAC;IAC5C,kBAAkB,EAAE,aAAa,GAAG,SAAS,CAAC;IAC9C,eAAe,EAAE,aAAa,GAAG,SAAS,CAAC;IAC3C,mBAAmB,EAAE,aAAa,GAAG,SAAS,CAAC;CAChD,CAgCA;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,EACnC,OAAO,EAAE,WAAW,GACnB,WAAW,GAAG,SAAS,CAkCzB;AAED,wBAAgB,8BAA8B,CAC5C,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,EACnC,OAAO,EAAE,WAAW,GACnB,WAAW,GAAG,SAAS,CAgBzB"}
@@ -1,8 +1,8 @@
1
- import { ERC721, ERC1155, isEqualCaseInsensitive as equalsIgnoreCase } from "@metamask/controller-utils";
2
- import { TransactionStatus, TransactionType } from "@metamask/transaction-controller";
3
- import { nativeTokenDecimals } from "../constants.mjs";
4
- import { formatAddressToAssetId, formatChainIdToCaip, getNativeAsset, resolveNativeAssetId } from "./caip.mjs";
5
- import { getKnownTokenMetadata } from "./token-metadata.mjs";
1
+ import { ERC721, ERC1155, isEqualCaseInsensitive as equalsIgnoreCase, } from '@metamask/controller-utils';
2
+ import { TransactionStatus, TransactionType, } from '@metamask/transaction-controller';
3
+ import { nativeTokenDecimals } from '../constants.js';
4
+ import { formatAddressToAssetId, formatChainIdToCaip, getNativeAsset, resolveNativeAssetId, } from './caip.js';
5
+ import { getKnownTokenMetadata } from './token-metadata.js';
6
6
  function calculateNetworkFee(gasUsed, gasPrice) {
7
7
  if (gasUsed === undefined || gasPrice === undefined) {
8
8
  return undefined;
@@ -240,4 +240,4 @@ export function getTokenMetadataFromKnownToken(contractAddress, direction, chain
240
240
  ...(tokenMetadata.assetId ? { assetId: tokenMetadata.assetId } : {}),
241
241
  };
242
242
  }
243
- //# sourceMappingURL=transactions.mjs.map
243
+ //# sourceMappingURL=transactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../../src/mappers/helpers/transactions.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ERC721,\n ERC1155,\n isEqualCaseInsensitive as equalsIgnoreCase,\n} from '@metamask/controller-utils';\nimport type { V1TransactionByHashResponse } from '@metamask/core-backend';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport {\n TransactionStatus,\n TransactionType,\n} from '@metamask/transaction-controller';\nimport type { CaipChainId, Hex } from '@metamask/utils';\n\nimport type {\n AssetType,\n Fee,\n Status,\n TokenAmount,\n ValueTransfer,\n} from '../../types.js';\nimport { nativeTokenDecimals } from '../constants.js';\nimport {\n formatAddressToAssetId,\n formatChainIdToCaip,\n getNativeAsset,\n resolveNativeAssetId,\n} from './caip.js';\nimport { getKnownTokenMetadata } from './token-metadata.js';\n\n// Adds optional `isSmartTransaction` to `TransactionMeta`.\nexport type TransactionGroup = {\n hasCancelled: boolean;\n hasRetried: boolean;\n initialTransaction: TransactionMeta & { isSmartTransaction?: boolean };\n nonce: Hex;\n primaryTransaction: TransactionMeta;\n transactions: TransactionMeta[];\n};\n\nfunction calculateNetworkFee(\n gasUsed: string | number | undefined,\n gasPrice: string | number | undefined,\n): string | undefined {\n if (gasUsed === undefined || gasPrice === undefined) {\n return undefined;\n }\n\n try {\n return String(BigInt(gasUsed) * BigInt(gasPrice));\n } catch {\n return undefined;\n }\n}\n\nfunction toNetworkFee(\n amount: string,\n chainId: CaipChainId,\n symbol?: string,\n): Fee {\n const nativeAsset = getNativeAsset(chainId);\n\n if (nativeAsset) {\n return {\n type: 'base',\n amount,\n decimals: nativeTokenDecimals,\n assetType: 'native',\n symbol: symbol ?? nativeAsset.symbol,\n assetId: nativeAsset.assetId,\n };\n }\n\n const assetId = symbol ? resolveNativeAssetId(chainId, symbol) : undefined;\n\n return {\n type: 'base',\n amount,\n decimals: nativeTokenDecimals,\n assetType: 'native',\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n };\n}\n\nfunction getAssetTypeFromTransferType(\n transferType: string | undefined,\n): AssetType | undefined {\n if (transferType === 'normal' || transferType === 'internal') {\n return 'native';\n }\n\n if (transferType === 'erc20') {\n return 'erc20';\n }\n\n if (transferType === ERC721.toLowerCase() || transferType === 'erc721') {\n return 'erc721';\n }\n\n if (transferType === ERC1155.toLowerCase() || transferType === 'erc1155') {\n return 'erc1155';\n }\n\n return undefined;\n}\n\nfunction getNetworkFee(\n transaction: V1TransactionByHashResponse,\n): Fee | undefined {\n const chainId = formatChainIdToCaip(transaction.chainId);\n\n if (!chainId) {\n return undefined;\n }\n\n const amount = calculateNetworkFee(\n transaction.gasUsed,\n transaction.effectiveGasPrice,\n );\n\n if (!amount) {\n return undefined;\n }\n\n return toNetworkFee(amount, chainId);\n}\n\nexport function getFees(\n transaction: V1TransactionByHashResponse,\n): Fee[] | undefined {\n const networkFee = getNetworkFee(transaction);\n\n return networkFee ? [networkFee] : undefined;\n}\n\nexport function getLocalTransactionFees(\n transactionGroup: Pick<TransactionGroup, 'primaryTransaction'> & {\n nativeAssetSymbol?: string;\n },\n): Fee[] | undefined {\n const { primaryTransaction, nativeAssetSymbol } = transactionGroup;\n const chainId = formatChainIdToCaip(primaryTransaction.chainId);\n\n if (!chainId) {\n return undefined;\n }\n\n const amount = calculateNetworkFee(\n primaryTransaction.txReceipt?.gasUsed,\n primaryTransaction.txReceipt?.effectiveGasPrice ??\n primaryTransaction.txParams?.gasPrice,\n );\n\n if (!amount) {\n return undefined;\n }\n\n return [toNetworkFee(amount, chainId, nativeAssetSymbol)];\n}\n\nconst inProgressTransactionStatuses = [\n TransactionStatus.unapproved,\n TransactionStatus.approved,\n TransactionStatus.signed,\n TransactionStatus.submitted,\n];\n\nconst transactionGroupCancelledStatus = 'cancelled';\n\nconst smartTransactionStatus = {\n cancelled: 'cancelled',\n pending: 'pending',\n success: 'success',\n} as const;\n\nfunction getTransactionStatusKey(\n transaction: TransactionGroup['primaryTransaction'],\n): string {\n const { type, status } = transaction;\n const receiptStatus = transaction.txReceipt?.status;\n\n if (receiptStatus === '0x0') {\n return TransactionStatus.failed;\n }\n\n if (\n status === TransactionStatus.confirmed &&\n type === TransactionType.cancel\n ) {\n return transactionGroupCancelledStatus;\n }\n\n return transaction.status;\n}\n\nexport function getLocalTransactionStatus({\n primaryTransaction,\n initialTransaction,\n}: {\n primaryTransaction: TransactionGroup['primaryTransaction'];\n initialTransaction: TransactionGroup['initialTransaction'];\n}): Status {\n if (initialTransaction.isSmartTransaction) {\n const smartStatus = initialTransaction.status as string | undefined;\n\n if (smartStatus === smartTransactionStatus.pending) {\n return 'pending';\n }\n\n if (smartStatus === smartTransactionStatus.success) {\n return 'success';\n }\n\n if (smartStatus === smartTransactionStatus.cancelled) {\n return 'failed';\n }\n\n return 'pending';\n }\n\n const statusKey = getTransactionStatusKey(primaryTransaction);\n\n if (statusKey === TransactionStatus.confirmed) {\n return 'success';\n }\n\n if (\n statusKey === TransactionStatus.cancelled ||\n statusKey === transactionGroupCancelledStatus ||\n statusKey === TransactionStatus.dropped ||\n statusKey === TransactionStatus.failed ||\n statusKey === TransactionStatus.rejected\n ) {\n return 'failed';\n }\n\n if (\n inProgressTransactionStatuses.includes(\n statusKey as (typeof inProgressTransactionStatuses)[number],\n )\n ) {\n return 'pending';\n }\n\n return 'pending';\n}\n\nexport function isNftStandard(value?: string): boolean {\n return value === ERC721.toLowerCase() || value === ERC1155.toLowerCase();\n}\n\nexport function getNftPaymentTransfer({\n side,\n sentTransfer,\n receivedTransfer,\n sentNativeTransfer,\n nftCounterparty,\n transactionFrom,\n transactionTo,\n subjectAddress,\n}: {\n side: 'buy' | 'sell';\n sentTransfer?: ValueTransfer;\n receivedTransfer?: ValueTransfer;\n sentNativeTransfer?: ValueTransfer;\n nftCounterparty: string;\n transactionFrom?: string;\n transactionTo?: string;\n subjectAddress: string;\n}): ValueTransfer | undefined {\n const isFungible = (transfer?: ValueTransfer): boolean =>\n Boolean(transfer && !isNftStandard(transfer.transferType));\n\n if (side === 'buy') {\n for (const transfer of [sentNativeTransfer, sentTransfer]) {\n if (!transfer || !isFungible(transfer)) {\n continue;\n }\n\n // Only count a payment that goes to the NFT counterparty (direct sale) or\n // to the contract being called (marketplace/router). This avoids treating\n // an unrelated native send in the same transaction as the NFT payment.\n if (\n equalsIgnoreCase(transfer.to, nftCounterparty) ||\n equalsIgnoreCase(transfer.to, transactionTo as string)\n ) {\n return transfer;\n }\n }\n\n return undefined;\n }\n\n if (!receivedTransfer || !isFungible(receivedTransfer)) {\n return undefined;\n }\n\n if (\n equalsIgnoreCase(receivedTransfer.from, nftCounterparty) ||\n (transactionFrom &&\n !equalsIgnoreCase(transactionFrom, subjectAddress) &&\n equalsIgnoreCase(receivedTransfer.from, transactionFrom))\n ) {\n return receivedTransfer;\n }\n\n return undefined;\n}\n\nconst resolveAssetId = (\n chainId: CaipChainId,\n contractAddress: string | undefined,\n): string | undefined => {\n if (!contractAddress) {\n return undefined;\n }\n\n return formatAddressToAssetId(contractAddress, chainId);\n};\n\n/**\n * Resolves the user's primary send and receive legs from indexed value transfers.\n * Prefers a receive whose symbol differs from the sent leg so dust does not win.\n *\n * @param valueTransfers - Indexed value transfers from the Accounts API.\n * @param subjectAddress - The account address to match transfers against.\n * @returns The primary sent and received transfers for the account.\n */\nexport function parseValueTransfers(\n valueTransfers: ValueTransfer[] | undefined,\n subjectAddress: string,\n): {\n sentTransfer: ValueTransfer | undefined;\n receivedTransfer: ValueTransfer | undefined;\n sentNativeTransfer: ValueTransfer | undefined;\n sentNftTransfer: ValueTransfer | undefined;\n receivedNftTransfer: ValueTransfer | undefined;\n} {\n const sent = valueTransfers?.filter(({ from }) =>\n equalsIgnoreCase(from, subjectAddress),\n );\n const received = valueTransfers?.filter(({ to }) =>\n equalsIgnoreCase(to, subjectAddress),\n );\n\n const sentTransfer = sent?.[0];\n\n const receivedTransfer =\n received?.find(({ symbol }) => symbol !== sentTransfer?.symbol) ??\n received?.[0];\n\n const sentNativeTransfer = sent?.find(\n ({ transferType }) => transferType === 'normal',\n );\n\n const sentNftTransfer = sent?.find(({ transferType }) =>\n isNftStandard(transferType),\n );\n const receivedNftTransfer = received?.find(({ transferType }) =>\n isNftStandard(transferType),\n );\n\n return {\n sentTransfer,\n receivedTransfer,\n sentNativeTransfer,\n sentNftTransfer,\n receivedNftTransfer,\n };\n}\n\nexport function getTokenAmountFromTransfer(\n transfer: ValueTransfer | undefined,\n direction: TokenAmount['direction'],\n chainId: CaipChainId,\n): TokenAmount | undefined {\n if (!transfer) {\n return undefined;\n }\n\n const { transferType, amount } = transfer;\n const isNftTransfer = isNftStandard(transferType);\n const symbol = isNftTransfer\n ? transfer.name || transfer.symbol\n : transfer.symbol;\n\n if (!symbol && amount === undefined) {\n return undefined;\n }\n\n const hasTransferAmount =\n !isNftTransfer && amount !== null && amount !== undefined;\n const assetType = getAssetTypeFromTransferType(transferType);\n\n let assetId: string | undefined;\n if (assetType === 'native') {\n assetId = resolveNativeAssetId(chainId, symbol);\n } else if (transfer && !isNftTransfer) {\n assetId = resolveAssetId(chainId, transfer.contractAddress);\n }\n\n return {\n direction,\n ...(hasTransferAmount ? { amount: String(amount) } : {}),\n ...(transfer.decimal === undefined ? {} : { decimals: transfer.decimal }),\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n ...(assetType ? { assetType } : {}),\n };\n}\n\nexport function getTokenMetadataFromKnownToken(\n contractAddress: string | undefined,\n direction: TokenAmount['direction'],\n chainId: CaipChainId,\n): TokenAmount | undefined {\n const tokenMetadata = getKnownTokenMetadata(chainId, contractAddress);\n\n if (!tokenMetadata) {\n return undefined;\n }\n\n return {\n direction,\n assetType: 'erc20',\n ...(tokenMetadata.symbol ? { symbol: tokenMetadata.symbol } : {}),\n ...(tokenMetadata.decimals === undefined\n ? {}\n : { decimals: tokenMetadata.decimals }),\n ...(tokenMetadata.assetId ? { assetId: tokenMetadata.assetId } : {}),\n };\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { Transaction as KeyringTransaction } from "@metamask/keyring-api";
2
- import type { ActivityItem } from "../types.cjs";
1
+ import type { Transaction as KeyringTransaction } from '@metamask/keyring-api';
2
+ import type { ActivityItem } from '../types.js';
3
3
  /**
4
4
  * Custom labels for non-EVM transactions.
5
5
  *
@@ -23,4 +23,4 @@ export declare function mapKeyringTransaction({ transaction, subjectAddress, }:
23
23
  transaction: KeyringTransaction;
24
24
  subjectAddress?: string;
25
25
  }): ActivityItem;
26
- //# sourceMappingURL=keyring-transaction-mapper.d.cts.map
26
+ //# sourceMappingURL=keyring-transaction-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyring-transaction-mapper.d.ts","sourceRoot":"","sources":["../../src/mappers/keyring-transaction-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAM/E,OAAO,KAAK,EAAO,YAAY,EAAuB,MAAM,aAAa,CAAC;AAS1E;;;;;;GAMG;AACH,oBAAY,0BAA0B;IAEpC,gBAAgB,sBAAsB;IAEtC,mBAAmB,yBAAyB;CAC7C;AA8ED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,WAAW,EACX,cAAc,GACf,EAAE;IACD,WAAW,EAAE,kBAAkB,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,YAAY,CAuIf"}
@@ -1,4 +1,4 @@
1
- import { TransactionStatus, TransactionType as KeyringTransactionType } from "@metamask/keyring-api";
1
+ import { TransactionStatus, TransactionType as KeyringTransactionType, } from '@metamask/keyring-api';
2
2
  /**
3
3
  * Custom labels for non-EVM transactions.
4
4
  *
@@ -194,4 +194,4 @@ export function mapKeyringTransaction({ transaction, subjectAddress, }) {
194
194
  };
195
195
  }
196
196
  }
197
- //# sourceMappingURL=keyring-transaction-mapper.mjs.map
197
+ //# sourceMappingURL=keyring-transaction-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyring-transaction-mapper.js","sourceRoot":"","sources":["../../src/mappers/keyring-transaction-mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Transaction as KeyringTransaction } from '@metamask/keyring-api';\nimport {\n TransactionStatus,\n TransactionType as KeyringTransactionType,\n} from '@metamask/keyring-api';\n\nimport type { Fee, ActivityItem, Status, TokenAmount } from '../types.js';\n\ntype Movement = KeyringTransaction['from'][number];\ntype KeyringFee = KeyringTransaction['fees'][number];\ntype FungibleAsset = Extract<\n NonNullable<Movement['asset']>,\n { fungible: true }\n>;\n\n/**\n * Custom labels for non-EVM transactions.\n *\n * The labels are used to map the transaction type to the title in the activity list and dialog.\n * The labels are defined in the `transaction.details.typeLabel` property.\n * For details: {@link https://github.com/MetaMask/metamask-extension/pull/38040}\n */\nexport enum CustomTransactionTypeLabel {\n // Token requires one off approve to receive\n TrustlineApprove = 'trustline-approve',\n // Token requires revoke the approve to stop receiving\n TrustlineDisapprove = 'trustline-disapprove',\n}\n\nfunction hasTrustlineTypeLabel(\n details: KeyringTransaction['details'],\n): boolean {\n // A flag to indicate if the transaction is a trustline type.\n return [\n String(CustomTransactionTypeLabel.TrustlineApprove),\n String(CustomTransactionTypeLabel.TrustlineDisapprove),\n ].includes(details?.typeLabel ?? '');\n}\n\nfunction mapStatus(status: KeyringTransaction['status']): Status {\n switch (status) {\n case TransactionStatus.Confirmed:\n return 'success';\n case TransactionStatus.Failed:\n return 'failed';\n case TransactionStatus.Submitted:\n case TransactionStatus.Unconfirmed:\n default:\n return 'pending';\n }\n}\n\nfunction getAddress(movements: Movement[]): string {\n return movements[0]?.address ?? '';\n}\n\nfunction hasFungibleAsset(\n movement: Movement,\n): movement is Movement & { asset: FungibleAsset } {\n return movement.asset?.fungible === true;\n}\n\nfunction getToken(\n movements: Movement[],\n direction: TokenAmount['direction'],\n): TokenAmount | undefined {\n const movement = movements.find(hasFungibleAsset);\n\n if (!movement) {\n return undefined;\n }\n\n return {\n amount: movement.asset.amount,\n symbol: movement.asset.unit,\n assetId: movement.asset.type,\n direction,\n };\n}\n\nfunction getFee(fee: KeyringFee): Fee | undefined {\n const { asset } = fee;\n\n if (!asset.fungible) {\n return undefined;\n }\n\n return {\n type: fee.type,\n amount: asset.amount,\n symbol: asset.unit,\n assetId: asset.type,\n };\n}\n\nfunction getFees(transaction: KeyringTransaction): Fee[] {\n return transaction.fees.flatMap((fee) => {\n const mappedFee = getFee(fee);\n\n return mappedFee ? [mappedFee] : [];\n });\n}\n\nconst approveAmountMaxIntegerDigits = 15;\n\n/**\n * Maps a keyring transaction into the shared activity item shape.\n *\n * @param options - The mapping options.\n * @param options.transaction - The keyring transaction to map.\n * @param options.subjectAddress - Account address used for send/receive attribution.\n * @returns The normalized activity item.\n */\nexport function mapKeyringTransaction({\n transaction,\n subjectAddress,\n}: {\n transaction: KeyringTransaction;\n subjectAddress?: string;\n}): ActivityItem {\n const { type, id } = transaction;\n const status = mapStatus(transaction.status);\n const timestamp = transaction.timestamp ? transaction.timestamp * 1000 : 0;\n const chainId = transaction.chain;\n\n const from =\n type === KeyringTransactionType.Send && subjectAddress\n ? subjectAddress\n : getAddress(transaction.from);\n\n const to =\n type === KeyringTransactionType.Receive && subjectAddress\n ? subjectAddress\n : getAddress(transaction.to);\n\n const fees = getFees(transaction);\n const common = { chainId, status, timestamp, hash: id };\n\n switch (type) {\n case KeyringTransactionType.Send: {\n const fromSubject = subjectAddress\n ? transaction.from.filter(({ address }) => address === subjectAddress)\n : transaction.from;\n const fromToken = getToken(fromSubject, 'out');\n const token =\n !fromToken && chainId.startsWith('bip122:')\n ? getToken(transaction.to, 'out')\n : fromToken;\n\n return {\n type: 'send',\n ...common,\n data: {\n from,\n to,\n token,\n fees,\n },\n };\n }\n\n case KeyringTransactionType.Receive:\n return {\n type: 'receive',\n ...common,\n data: {\n from,\n to,\n token: getToken(transaction.to, 'in'),\n fees,\n },\n };\n\n case KeyringTransactionType.Swap:\n return {\n type: 'swap',\n ...common,\n data: {\n from,\n destinationToken: getToken(transaction.to, 'in'),\n sourceToken: getToken(transaction.from, 'out'),\n fees,\n },\n };\n\n case KeyringTransactionType.TokenApprove: {\n const rawToken = getToken(transaction.from, 'out');\n\n if (hasTrustlineTypeLabel(transaction.details)) {\n return {\n type: 'assetActivation',\n ...common,\n data: {\n from,\n token: rawToken ? { ...rawToken, amount: undefined } : rawToken,\n fees,\n },\n };\n }\n\n const isUnlimited =\n rawToken?.amount !== undefined &&\n rawToken.amount.split('.')[0].length > approveAmountMaxIntegerDigits;\n\n return {\n type: 'approveSpendingCap',\n ...common,\n data: {\n from,\n token: rawToken\n ? { ...rawToken, amount: isUnlimited ? undefined : rawToken.amount }\n : rawToken,\n fees,\n },\n };\n }\n\n case KeyringTransactionType.TokenDisapprove: {\n if (!hasTrustlineTypeLabel(transaction.details)) {\n return {\n type: 'contractInteraction',\n ...common,\n data: {\n from,\n to,\n fees,\n },\n };\n }\n\n const rawToken = getToken(transaction.from, 'out');\n\n return {\n type: 'assetDeactivation',\n ...common,\n data: {\n from,\n token: rawToken ? { ...rawToken, amount: undefined } : rawToken,\n fees,\n },\n };\n }\n\n default:\n return {\n type: 'contractInteraction',\n ...common,\n data: {\n from,\n to,\n fees,\n },\n };\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { Fee, ActivityItem, TokenAmount } from "../types.cjs";
2
- import type { TransactionGroup } from "./helpers/transactions.cjs";
1
+ import type { Fee, ActivityItem, TokenAmount } from '../types.js';
2
+ import type { TransactionGroup } from './helpers/transactions.js';
3
3
  /**
4
4
  * Maps a local TransactionController group into the shared activity item shape.
5
5
  *
@@ -17,4 +17,4 @@ export declare function mapLocalTransaction(transactionGroup: TransactionGroup &
17
17
  activityStatus?: ActivityItem['status'];
18
18
  fees?: Fee[];
19
19
  }): ActivityItem;
20
- //# sourceMappingURL=local-transaction-mapper.d.cts.map
20
+ //# sourceMappingURL=local-transaction-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-transaction-mapper.d.ts","sourceRoot":"","sources":["../../src/mappers/local-transaction-mapper.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoBlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;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,CA0gBd"}
@@ -1,10 +1,10 @@
1
- import { isEqualCaseInsensitive as equalsIgnoreCase } from "@metamask/controller-utils";
2
- import { TransactionType } from "@metamask/transaction-controller";
3
- import { KnownCaipNamespace, toCaipChainId } from "@metamask/utils";
4
- import { permit2ApproveMethodId, swapsWrappedTokensAddresses, supplyMethodIds, tokenTransferLogTopicHash, unwrapMethodIds, withdrawMethodIds, wrapMethodIds } from "./constants.mjs";
5
- import { formatAddressToAssetId, resolveNativeAssetId } from "./helpers/caip.mjs";
6
- import { getKnownTokenMetadata } from "./helpers/token-metadata.mjs";
7
- import { getLocalTransactionFees, getLocalTransactionStatus, isNftStandard } from "./helpers/transactions.mjs";
1
+ import { isEqualCaseInsensitive as equalsIgnoreCase } from '@metamask/controller-utils';
2
+ import { TransactionType } from '@metamask/transaction-controller';
3
+ import { KnownCaipNamespace, toCaipChainId } from '@metamask/utils';
4
+ import { permit2ApproveMethodId, swapsWrappedTokensAddresses, supplyMethodIds, tokenTransferLogTopicHash, unwrapMethodIds, withdrawMethodIds, wrapMethodIds, } from './constants.js';
5
+ import { formatAddressToAssetId, resolveNativeAssetId, } from './helpers/caip.js';
6
+ import { getKnownTokenMetadata } from './helpers/token-metadata.js';
7
+ import { getLocalTransactionFees, getLocalTransactionStatus, isNftStandard, } from './helpers/transactions.js';
8
8
  const evmNativeDecimals = 18;
9
9
  /**
10
10
  * Maps a local TransactionController group into the shared activity item shape.
@@ -429,4 +429,4 @@ export function mapLocalTransaction(transactionGroup) {
429
429
  }
430
430
  }
431
431
  }
432
- //# sourceMappingURL=local-transaction-mapper.mjs.map
432
+ //# sourceMappingURL=local-transaction-mapper.js.map