@ledgerhq/live-common 34.54.0 → 34.55.0-nightly.20251210100832

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 (617) hide show
  1. package/lib/__tests__/test-helpers/bridge.js +1 -1
  2. package/lib/__tests__/test-helpers/bridge.js.map +1 -1
  3. package/lib/__tests__/test-helpers/environment.js +3 -0
  4. package/lib/__tests__/test-helpers/environment.js.map +1 -1
  5. package/lib/account/index.d.ts +1 -0
  6. package/lib/account/index.d.ts.map +1 -1
  7. package/lib/account/index.js +4 -1
  8. package/lib/account/index.js.map +1 -1
  9. package/lib/account/recentAddresses.d.ts +10 -0
  10. package/lib/account/recentAddresses.d.ts.map +1 -0
  11. package/lib/account/recentAddresses.js +60 -0
  12. package/lib/account/recentAddresses.js.map +1 -0
  13. package/lib/account/serialization.js +1 -1
  14. package/lib/account/serialization.js.map +1 -1
  15. package/lib/account/support.js +1 -1
  16. package/lib/account/support.js.map +1 -1
  17. package/lib/bridge/generic-alpaca/accountBridge.d.ts +1 -1
  18. package/lib/bridge/generic-alpaca/accountBridge.d.ts.map +1 -1
  19. package/lib/bridge/generic-alpaca/accountBridge.js +2 -1
  20. package/lib/bridge/generic-alpaca/accountBridge.js.map +1 -1
  21. package/lib/bridge/generic-alpaca/broadcast.d.ts.map +1 -1
  22. package/lib/bridge/generic-alpaca/broadcast.js +3 -3
  23. package/lib/bridge/generic-alpaca/broadcast.js.map +1 -1
  24. package/lib/bridge/generic-alpaca/currencyBridge.d.ts.map +1 -1
  25. package/lib/bridge/generic-alpaca/currencyBridge.js +3 -3
  26. package/lib/bridge/generic-alpaca/currencyBridge.js.map +1 -1
  27. package/lib/bridge/generic-alpaca/estimateMaxSpendable.d.ts.map +1 -1
  28. package/lib/bridge/generic-alpaca/estimateMaxSpendable.js +2 -1
  29. package/lib/bridge/generic-alpaca/estimateMaxSpendable.js.map +1 -1
  30. package/lib/bridge/generic-alpaca/getAccountShape.d.ts.map +1 -1
  31. package/lib/bridge/generic-alpaca/getAccountShape.js +24 -8
  32. package/lib/bridge/generic-alpaca/getAccountShape.js.map +1 -1
  33. package/lib/bridge/generic-alpaca/getTransactionStatus.d.ts.map +1 -1
  34. package/lib/bridge/generic-alpaca/getTransactionStatus.js +16 -1
  35. package/lib/bridge/generic-alpaca/getTransactionStatus.js.map +1 -1
  36. package/lib/bridge/generic-alpaca/postSync.d.ts +16 -0
  37. package/lib/bridge/generic-alpaca/postSync.d.ts.map +1 -0
  38. package/lib/bridge/generic-alpaca/postSync.js +44 -0
  39. package/lib/bridge/generic-alpaca/postSync.js.map +1 -0
  40. package/lib/bridge/generic-alpaca/prepareTransaction.d.ts.map +1 -1
  41. package/lib/bridge/generic-alpaca/prepareTransaction.js +45 -4
  42. package/lib/bridge/generic-alpaca/prepareTransaction.js.map +1 -1
  43. package/lib/bridge/generic-alpaca/signOperation.d.ts.map +1 -1
  44. package/lib/bridge/generic-alpaca/signOperation.js +18 -2
  45. package/lib/bridge/generic-alpaca/signOperation.js.map +1 -1
  46. package/lib/bridge/generic-alpaca/signer/Eth.d.ts +2 -0
  47. package/lib/bridge/generic-alpaca/signer/Eth.d.ts.map +1 -1
  48. package/lib/bridge/generic-alpaca/signer/Eth.js +8 -1
  49. package/lib/bridge/generic-alpaca/signer/Eth.js.map +1 -1
  50. package/lib/bridge/generic-alpaca/signer/index.d.ts.map +1 -1
  51. package/lib/bridge/generic-alpaca/signer/index.js +7 -0
  52. package/lib/bridge/generic-alpaca/signer/index.js.map +1 -1
  53. package/lib/bridge/generic-alpaca/types.d.ts +4 -0
  54. package/lib/bridge/generic-alpaca/types.d.ts.map +1 -1
  55. package/lib/bridge/generic-alpaca/utils.d.ts.map +1 -1
  56. package/lib/bridge/generic-alpaca/utils.js +12 -3
  57. package/lib/bridge/generic-alpaca/utils.js.map +1 -1
  58. package/lib/bridge/impl.d.ts.map +1 -1
  59. package/lib/bridge/impl.js +14 -3
  60. package/lib/bridge/impl.js.map +1 -1
  61. package/lib/currencies/helpers.d.ts +1 -0
  62. package/lib/currencies/helpers.d.ts.map +1 -1
  63. package/lib/currencies/helpers.js +7 -1
  64. package/lib/currencies/helpers.js.map +1 -1
  65. package/lib/domain/getTokensWithFunds.d.ts +7 -1
  66. package/lib/domain/getTokensWithFunds.d.ts.map +1 -1
  67. package/lib/domain/getTokensWithFunds.js +15 -4
  68. package/lib/domain/getTokensWithFunds.js.map +1 -1
  69. package/lib/domain/getTotalStakeableAssets.d.ts +10 -0
  70. package/lib/domain/getTotalStakeableAssets.d.ts.map +1 -0
  71. package/lib/domain/getTotalStakeableAssets.js +35 -0
  72. package/lib/domain/getTotalStakeableAssets.js.map +1 -0
  73. package/lib/e2e/data/deviceLabelsData.d.ts.map +1 -1
  74. package/lib/e2e/data/deviceLabelsData.js +1 -0
  75. package/lib/e2e/data/deviceLabelsData.js.map +1 -1
  76. package/lib/e2e/data/regexes.d.ts +2 -0
  77. package/lib/e2e/data/regexes.d.ts.map +1 -0
  78. package/lib/e2e/data/regexes.js +5 -0
  79. package/lib/e2e/data/regexes.js.map +1 -0
  80. package/lib/e2e/enum/Device.d.ts +1 -0
  81. package/lib/e2e/enum/Device.d.ts.map +1 -1
  82. package/lib/e2e/enum/Device.js +1 -0
  83. package/lib/e2e/enum/Device.js.map +1 -1
  84. package/lib/e2e/families/cardano.d.ts.map +1 -1
  85. package/lib/e2e/families/cardano.js +29 -14
  86. package/lib/e2e/families/cardano.js.map +1 -1
  87. package/lib/e2e/index.d.ts +35 -3
  88. package/lib/e2e/index.d.ts.map +1 -1
  89. package/lib/e2e/index.js +21 -1
  90. package/lib/e2e/index.js.map +1 -1
  91. package/lib/e2e/speculos.d.ts.map +1 -1
  92. package/lib/e2e/speculos.js +31 -4
  93. package/lib/e2e/speculos.js.map +1 -1
  94. package/lib/e2e/speculosAppVersion.d.ts.map +1 -1
  95. package/lib/e2e/speculosAppVersion.js +6 -2
  96. package/lib/e2e/speculosAppVersion.js.map +1 -1
  97. package/lib/e2e/swap.d.ts.map +1 -1
  98. package/lib/e2e/swap.js +7 -6
  99. package/lib/e2e/swap.js.map +1 -1
  100. package/lib/env.react.d.ts +1 -1
  101. package/lib/env.react.d.ts.map +1 -1
  102. package/lib/exchange/swap/api/v5/fetchCurrencyFrom.js +1 -1
  103. package/lib/exchange/swap/api/v5/fetchCurrencyFrom.js.map +1 -1
  104. package/lib/exchange/swap/getIncompatibleCurrencyKeys.d.ts.map +1 -1
  105. package/lib/exchange/swap/getIncompatibleCurrencyKeys.js +4 -0
  106. package/lib/exchange/swap/getIncompatibleCurrencyKeys.js.map +1 -1
  107. package/lib/exchange/swap/postSwapState.d.ts.map +1 -1
  108. package/lib/exchange/swap/postSwapState.js +10 -6
  109. package/lib/exchange/swap/postSwapState.js.map +1 -1
  110. package/lib/exchange/swap/transactionStrategies.d.ts +3 -2
  111. package/lib/exchange/swap/transactionStrategies.d.ts.map +1 -1
  112. package/lib/exchange/swap/transactionStrategies.js +26 -7
  113. package/lib/exchange/swap/transactionStrategies.js.map +1 -1
  114. package/lib/exchange/swap/types.d.ts +3 -1
  115. package/lib/exchange/swap/types.d.ts.map +1 -1
  116. package/lib/families/bitcoin/walletApiAdapter.d.ts.map +1 -1
  117. package/lib/families/bitcoin/walletApiAdapter.js +3 -0
  118. package/lib/families/bitcoin/walletApiAdapter.js.map +1 -1
  119. package/lib/families/canton/config.d.ts.map +1 -1
  120. package/lib/families/canton/config.js +4 -4
  121. package/lib/families/canton/config.js.map +1 -1
  122. package/lib/families/canton/react.d.ts +2 -0
  123. package/lib/families/canton/react.d.ts.map +1 -1
  124. package/lib/families/canton/react.js +40 -1
  125. package/lib/families/canton/react.js.map +1 -1
  126. package/lib/families/celo/setup.d.ts.map +1 -1
  127. package/lib/families/celo/setup.js +11 -0
  128. package/lib/families/celo/setup.js.map +1 -1
  129. package/lib/families/evm/bridge/mock.d.ts +1 -0
  130. package/lib/families/evm/bridge/mock.d.ts.map +1 -1
  131. package/lib/families/evm/bridge/mock.js +12 -0
  132. package/lib/families/evm/bridge/mock.js.map +1 -1
  133. package/lib/families/evm/setup.d.ts +1 -4
  134. package/lib/families/evm/setup.d.ts.map +1 -1
  135. package/lib/families/evm/setup.js +1 -8
  136. package/lib/families/evm/setup.js.map +1 -1
  137. package/lib/families/evm/walletApiAdapter.d.ts +7 -0
  138. package/lib/families/evm/walletApiAdapter.d.ts.map +1 -1
  139. package/lib/families/evm/walletApiAdapter.js +36 -2
  140. package/lib/families/evm/walletApiAdapter.js.map +1 -1
  141. package/lib/families/hedera/react.d.ts +6 -0
  142. package/lib/families/hedera/react.d.ts.map +1 -0
  143. package/lib/families/hedera/react.js +50 -0
  144. package/lib/families/hedera/react.js.map +1 -0
  145. package/lib/families/polkadot/config.js +1 -1
  146. package/lib/families/polkadot/config.js.map +1 -1
  147. package/lib/families/stacks/constants.d.ts +1 -1
  148. package/lib/families/stacks/constants.d.ts.map +1 -1
  149. package/lib/families/stacks/constants.js +1 -1
  150. package/lib/families/stacks/constants.js.map +1 -1
  151. package/lib/featureFlags/defaultFeatures.d.ts +2 -0
  152. package/lib/featureFlags/defaultFeatures.d.ts.map +1 -1
  153. package/lib/featureFlags/defaultFeatures.js +22 -1
  154. package/lib/featureFlags/defaultFeatures.js.map +1 -1
  155. package/lib/featureFlags/firebaseFeatureFlags.js +1 -1
  156. package/lib/featureFlags/firebaseFeatureFlags.js.map +1 -1
  157. package/lib/featureFlags/stakePrograms/index.js +4 -4
  158. package/lib/featureFlags/stakePrograms/index.js.map +1 -1
  159. package/lib/featureFlags/useFeature.d.ts +1 -1
  160. package/lib/featureFlags/useFeature.d.ts.map +1 -1
  161. package/lib/featureFlags/useHasOverriddenFeatureFlags.js +1 -1
  162. package/lib/featureFlags/useHasOverriddenFeatureFlags.js.map +1 -1
  163. package/lib/generated/bridge/js.d.ts +0 -1
  164. package/lib/generated/bridge/js.d.ts.map +1 -1
  165. package/lib/generated/bridge/js.js +30 -32
  166. package/lib/generated/bridge/js.js.map +1 -1
  167. package/lib/generated/bridge/mock.d.ts +1 -0
  168. package/lib/generated/bridge/mock.d.ts.map +1 -1
  169. package/lib/helpers/cryptoIconSize.d.ts +3 -0
  170. package/lib/helpers/cryptoIconSize.d.ts.map +1 -0
  171. package/lib/helpers/cryptoIconSize.js +40 -0
  172. package/lib/helpers/cryptoIconSize.js.map +1 -0
  173. package/lib/helpers.d.ts +1 -0
  174. package/lib/helpers.d.ts.map +1 -1
  175. package/lib/helpers.js +15 -0
  176. package/lib/helpers.js.map +1 -1
  177. package/lib/hooks/useHtmlLinkSegments.d.ts +19 -0
  178. package/lib/hooks/useHtmlLinkSegments.d.ts.map +1 -0
  179. package/lib/hooks/useHtmlLinkSegments.js +128 -0
  180. package/lib/hooks/useHtmlLinkSegments.js.map +1 -0
  181. package/lib/hw/getAppAndVersion.d.ts +3 -1
  182. package/lib/hw/getAppAndVersion.d.ts.map +1 -1
  183. package/lib/hw/getAppAndVersion.js +2 -2
  184. package/lib/hw/getAppAndVersion.js.map +1 -1
  185. package/lib/hw/getBitcoinLikeInfo.js +1 -1
  186. package/lib/hw/getBitcoinLikeInfo.js.map +1 -1
  187. package/lib/load/speculos.d.ts.map +1 -1
  188. package/lib/load/speculos.js +1 -0
  189. package/lib/load/speculos.js.map +1 -1
  190. package/lib/mock/account.js +1 -1
  191. package/lib/mock/account.js.map +1 -1
  192. package/lib/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.d.ts.map +1 -1
  193. package/lib/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js +6 -0
  194. package/lib/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js.map +1 -1
  195. package/lib/operation.d.ts.map +1 -1
  196. package/lib/operation.js +7 -2
  197. package/lib/operation.js.map +1 -1
  198. package/lib/postOnboarding/reducer.d.ts +2 -0
  199. package/lib/postOnboarding/reducer.d.ts.map +1 -1
  200. package/lib/wallet-api/Exchange/SwapError.d.ts +93 -0
  201. package/lib/wallet-api/Exchange/SwapError.d.ts.map +1 -0
  202. package/lib/wallet-api/Exchange/SwapError.js +142 -0
  203. package/lib/wallet-api/Exchange/SwapError.js.map +1 -0
  204. package/lib/wallet-api/Exchange/handleSwapErrors.d.ts +40 -0
  205. package/lib/wallet-api/Exchange/handleSwapErrors.d.ts.map +1 -0
  206. package/lib/wallet-api/Exchange/handleSwapErrors.js +112 -0
  207. package/lib/wallet-api/Exchange/handleSwapErrors.js.map +1 -0
  208. package/lib/wallet-api/Exchange/index.d.ts +4 -0
  209. package/lib/wallet-api/Exchange/index.d.ts.map +1 -0
  210. package/lib/wallet-api/Exchange/index.js +27 -0
  211. package/lib/wallet-api/Exchange/index.js.map +1 -0
  212. package/lib/wallet-api/Exchange/parser.d.ts +46 -0
  213. package/lib/wallet-api/Exchange/parser.d.ts.map +1 -0
  214. package/lib/wallet-api/Exchange/parser.js +97 -0
  215. package/lib/wallet-api/Exchange/parser.js.map +1 -0
  216. package/lib/wallet-api/Exchange/server.d.ts.map +1 -1
  217. package/lib/wallet-api/Exchange/server.js +227 -174
  218. package/lib/wallet-api/Exchange/server.js.map +1 -1
  219. package/lib/wallet-api/Exchange/tracking.d.ts +7 -6
  220. package/lib/wallet-api/Exchange/tracking.d.ts.map +1 -1
  221. package/lib/wallet-api/Exchange/tracking.js +52 -13
  222. package/lib/wallet-api/Exchange/tracking.js.map +1 -1
  223. package/lib/wallet-api/constants.d.ts +1 -1
  224. package/lib/wallet-api/logic.d.ts +1 -1
  225. package/lib/wallet-api/logic.d.ts.map +1 -1
  226. package/lib/wallet-api/logic.js +5 -5
  227. package/lib/wallet-api/logic.js.map +1 -1
  228. package/lib/wallet-api/react.d.ts.map +1 -1
  229. package/lib/wallet-api/react.js +9 -6
  230. package/lib/wallet-api/react.js.map +1 -1
  231. package/lib/wallet-api/tracking.d.ts +5 -5
  232. package/lib/wallet-api/tracking.d.ts.map +1 -1
  233. package/lib/wallet-api/tracking.js +30 -10
  234. package/lib/wallet-api/tracking.js.map +1 -1
  235. package/lib/wallet-api/useDappLogic.d.ts.map +1 -1
  236. package/lib/wallet-api/useDappLogic.js +31 -20
  237. package/lib/wallet-api/useDappLogic.js.map +1 -1
  238. package/lib/wallet-api/utils/extractDappURLFromManifest.js +3 -3
  239. package/lib/wallet-api/utils/extractDappURLFromManifest.js.map +1 -1
  240. package/lib/wallet-api/utils/extractURLFromManifest.js +1 -1
  241. package/lib/wallet-api/utils/extractURLFromManifest.js.map +1 -1
  242. package/lib/walletSync/getEnvironmentParams.js +6 -6
  243. package/lib/walletSync/getEnvironmentParams.js.map +1 -1
  244. package/lib-es/__tests__/test-helpers/bridge.js +1 -1
  245. package/lib-es/__tests__/test-helpers/bridge.js.map +1 -1
  246. package/lib-es/__tests__/test-helpers/environment.js +3 -0
  247. package/lib-es/__tests__/test-helpers/environment.js.map +1 -1
  248. package/lib-es/account/index.d.ts +1 -0
  249. package/lib-es/account/index.d.ts.map +1 -1
  250. package/lib-es/account/index.js +1 -0
  251. package/lib-es/account/index.js.map +1 -1
  252. package/lib-es/account/recentAddresses.d.ts +10 -0
  253. package/lib-es/account/recentAddresses.d.ts.map +1 -0
  254. package/lib-es/account/recentAddresses.js +55 -0
  255. package/lib-es/account/recentAddresses.js.map +1 -0
  256. package/lib-es/account/serialization.js +1 -1
  257. package/lib-es/account/serialization.js.map +1 -1
  258. package/lib-es/account/support.js +1 -1
  259. package/lib-es/account/support.js.map +1 -1
  260. package/lib-es/bridge/generic-alpaca/accountBridge.d.ts +1 -1
  261. package/lib-es/bridge/generic-alpaca/accountBridge.d.ts.map +1 -1
  262. package/lib-es/bridge/generic-alpaca/accountBridge.js +2 -1
  263. package/lib-es/bridge/generic-alpaca/accountBridge.js.map +1 -1
  264. package/lib-es/bridge/generic-alpaca/broadcast.d.ts.map +1 -1
  265. package/lib-es/bridge/generic-alpaca/broadcast.js +3 -3
  266. package/lib-es/bridge/generic-alpaca/broadcast.js.map +1 -1
  267. package/lib-es/bridge/generic-alpaca/currencyBridge.d.ts.map +1 -1
  268. package/lib-es/bridge/generic-alpaca/currencyBridge.js +3 -3
  269. package/lib-es/bridge/generic-alpaca/currencyBridge.js.map +1 -1
  270. package/lib-es/bridge/generic-alpaca/estimateMaxSpendable.d.ts.map +1 -1
  271. package/lib-es/bridge/generic-alpaca/estimateMaxSpendable.js +2 -1
  272. package/lib-es/bridge/generic-alpaca/estimateMaxSpendable.js.map +1 -1
  273. package/lib-es/bridge/generic-alpaca/getAccountShape.d.ts.map +1 -1
  274. package/lib-es/bridge/generic-alpaca/getAccountShape.js +24 -8
  275. package/lib-es/bridge/generic-alpaca/getAccountShape.js.map +1 -1
  276. package/lib-es/bridge/generic-alpaca/getTransactionStatus.d.ts.map +1 -1
  277. package/lib-es/bridge/generic-alpaca/getTransactionStatus.js +16 -1
  278. package/lib-es/bridge/generic-alpaca/getTransactionStatus.js.map +1 -1
  279. package/lib-es/bridge/generic-alpaca/postSync.d.ts +16 -0
  280. package/lib-es/bridge/generic-alpaca/postSync.d.ts.map +1 -0
  281. package/lib-es/bridge/generic-alpaca/postSync.js +37 -0
  282. package/lib-es/bridge/generic-alpaca/postSync.js.map +1 -0
  283. package/lib-es/bridge/generic-alpaca/prepareTransaction.d.ts.map +1 -1
  284. package/lib-es/bridge/generic-alpaca/prepareTransaction.js +45 -4
  285. package/lib-es/bridge/generic-alpaca/prepareTransaction.js.map +1 -1
  286. package/lib-es/bridge/generic-alpaca/signOperation.d.ts.map +1 -1
  287. package/lib-es/bridge/generic-alpaca/signOperation.js +18 -2
  288. package/lib-es/bridge/generic-alpaca/signOperation.js.map +1 -1
  289. package/lib-es/bridge/generic-alpaca/signer/Eth.d.ts +2 -0
  290. package/lib-es/bridge/generic-alpaca/signer/Eth.d.ts.map +1 -1
  291. package/lib-es/bridge/generic-alpaca/signer/Eth.js +4 -0
  292. package/lib-es/bridge/generic-alpaca/signer/Eth.js.map +1 -1
  293. package/lib-es/bridge/generic-alpaca/signer/index.d.ts.map +1 -1
  294. package/lib-es/bridge/generic-alpaca/signer/index.js +7 -0
  295. package/lib-es/bridge/generic-alpaca/signer/index.js.map +1 -1
  296. package/lib-es/bridge/generic-alpaca/types.d.ts +4 -0
  297. package/lib-es/bridge/generic-alpaca/types.d.ts.map +1 -1
  298. package/lib-es/bridge/generic-alpaca/utils.d.ts.map +1 -1
  299. package/lib-es/bridge/generic-alpaca/utils.js +12 -3
  300. package/lib-es/bridge/generic-alpaca/utils.js.map +1 -1
  301. package/lib-es/bridge/impl.d.ts.map +1 -1
  302. package/lib-es/bridge/impl.js +14 -3
  303. package/lib-es/bridge/impl.js.map +1 -1
  304. package/lib-es/currencies/helpers.d.ts +1 -0
  305. package/lib-es/currencies/helpers.d.ts.map +1 -1
  306. package/lib-es/currencies/helpers.js +5 -0
  307. package/lib-es/currencies/helpers.js.map +1 -1
  308. package/lib-es/domain/getTokensWithFunds.d.ts +7 -1
  309. package/lib-es/domain/getTokensWithFunds.d.ts.map +1 -1
  310. package/lib-es/domain/getTokensWithFunds.js +13 -3
  311. package/lib-es/domain/getTokensWithFunds.js.map +1 -1
  312. package/lib-es/domain/getTotalStakeableAssets.d.ts +10 -0
  313. package/lib-es/domain/getTotalStakeableAssets.d.ts.map +1 -0
  314. package/lib-es/domain/getTotalStakeableAssets.js +31 -0
  315. package/lib-es/domain/getTotalStakeableAssets.js.map +1 -0
  316. package/lib-es/e2e/data/deviceLabelsData.d.ts.map +1 -1
  317. package/lib-es/e2e/data/deviceLabelsData.js +1 -0
  318. package/lib-es/e2e/data/deviceLabelsData.js.map +1 -1
  319. package/lib-es/e2e/data/regexes.d.ts +2 -0
  320. package/lib-es/e2e/data/regexes.d.ts.map +1 -0
  321. package/lib-es/e2e/data/regexes.js +2 -0
  322. package/lib-es/e2e/data/regexes.js.map +1 -0
  323. package/lib-es/e2e/enum/Device.d.ts +1 -0
  324. package/lib-es/e2e/enum/Device.d.ts.map +1 -1
  325. package/lib-es/e2e/enum/Device.js +1 -0
  326. package/lib-es/e2e/enum/Device.js.map +1 -1
  327. package/lib-es/e2e/families/cardano.d.ts.map +1 -1
  328. package/lib-es/e2e/families/cardano.js +29 -14
  329. package/lib-es/e2e/families/cardano.js.map +1 -1
  330. package/lib-es/e2e/index.d.ts +35 -3
  331. package/lib-es/e2e/index.d.ts.map +1 -1
  332. package/lib-es/e2e/index.js +16 -0
  333. package/lib-es/e2e/index.js.map +1 -1
  334. package/lib-es/e2e/speculos.d.ts.map +1 -1
  335. package/lib-es/e2e/speculos.js +31 -4
  336. package/lib-es/e2e/speculos.js.map +1 -1
  337. package/lib-es/e2e/speculosAppVersion.d.ts.map +1 -1
  338. package/lib-es/e2e/speculosAppVersion.js +6 -2
  339. package/lib-es/e2e/speculosAppVersion.js.map +1 -1
  340. package/lib-es/e2e/swap.d.ts.map +1 -1
  341. package/lib-es/e2e/swap.js +7 -6
  342. package/lib-es/e2e/swap.js.map +1 -1
  343. package/lib-es/env.react.d.ts +1 -1
  344. package/lib-es/env.react.d.ts.map +1 -1
  345. package/lib-es/exchange/swap/api/v5/fetchCurrencyFrom.js +1 -1
  346. package/lib-es/exchange/swap/api/v5/fetchCurrencyFrom.js.map +1 -1
  347. package/lib-es/exchange/swap/getIncompatibleCurrencyKeys.d.ts.map +1 -1
  348. package/lib-es/exchange/swap/getIncompatibleCurrencyKeys.js +4 -0
  349. package/lib-es/exchange/swap/getIncompatibleCurrencyKeys.js.map +1 -1
  350. package/lib-es/exchange/swap/postSwapState.d.ts.map +1 -1
  351. package/lib-es/exchange/swap/postSwapState.js +10 -6
  352. package/lib-es/exchange/swap/postSwapState.js.map +1 -1
  353. package/lib-es/exchange/swap/transactionStrategies.d.ts +3 -2
  354. package/lib-es/exchange/swap/transactionStrategies.d.ts.map +1 -1
  355. package/lib-es/exchange/swap/transactionStrategies.js +26 -7
  356. package/lib-es/exchange/swap/transactionStrategies.js.map +1 -1
  357. package/lib-es/exchange/swap/types.d.ts +3 -1
  358. package/lib-es/exchange/swap/types.d.ts.map +1 -1
  359. package/lib-es/families/bitcoin/walletApiAdapter.d.ts.map +1 -1
  360. package/lib-es/families/bitcoin/walletApiAdapter.js +3 -0
  361. package/lib-es/families/bitcoin/walletApiAdapter.js.map +1 -1
  362. package/lib-es/families/canton/config.d.ts.map +1 -1
  363. package/lib-es/families/canton/config.js +4 -4
  364. package/lib-es/families/canton/config.js.map +1 -1
  365. package/lib-es/families/canton/react.d.ts +2 -0
  366. package/lib-es/families/canton/react.d.ts.map +1 -1
  367. package/lib-es/families/canton/react.js +38 -1
  368. package/lib-es/families/canton/react.js.map +1 -1
  369. package/lib-es/families/celo/setup.d.ts.map +1 -1
  370. package/lib-es/families/celo/setup.js +11 -0
  371. package/lib-es/families/celo/setup.js.map +1 -1
  372. package/lib-es/families/evm/bridge/mock.d.ts +1 -0
  373. package/lib-es/families/evm/bridge/mock.d.ts.map +1 -1
  374. package/lib-es/families/evm/bridge/mock.js +12 -0
  375. package/lib-es/families/evm/bridge/mock.js.map +1 -1
  376. package/lib-es/families/evm/setup.d.ts +1 -4
  377. package/lib-es/families/evm/setup.d.ts.map +1 -1
  378. package/lib-es/families/evm/setup.js +2 -8
  379. package/lib-es/families/evm/setup.js.map +1 -1
  380. package/lib-es/families/evm/walletApiAdapter.d.ts +7 -0
  381. package/lib-es/families/evm/walletApiAdapter.d.ts.map +1 -1
  382. package/lib-es/families/evm/walletApiAdapter.js +30 -1
  383. package/lib-es/families/evm/walletApiAdapter.js.map +1 -1
  384. package/lib-es/families/hedera/react.d.ts +6 -0
  385. package/lib-es/families/hedera/react.d.ts.map +1 -0
  386. package/lib-es/families/hedera/react.js +41 -0
  387. package/lib-es/families/hedera/react.js.map +1 -0
  388. package/lib-es/families/polkadot/config.js +1 -1
  389. package/lib-es/families/polkadot/config.js.map +1 -1
  390. package/lib-es/families/stacks/constants.d.ts +1 -1
  391. package/lib-es/families/stacks/constants.d.ts.map +1 -1
  392. package/lib-es/families/stacks/constants.js +1 -1
  393. package/lib-es/families/stacks/constants.js.map +1 -1
  394. package/lib-es/featureFlags/defaultFeatures.d.ts +2 -0
  395. package/lib-es/featureFlags/defaultFeatures.d.ts.map +1 -1
  396. package/lib-es/featureFlags/defaultFeatures.js +22 -1
  397. package/lib-es/featureFlags/defaultFeatures.js.map +1 -1
  398. package/lib-es/featureFlags/firebaseFeatureFlags.js +1 -1
  399. package/lib-es/featureFlags/firebaseFeatureFlags.js.map +1 -1
  400. package/lib-es/featureFlags/stakePrograms/index.js +4 -4
  401. package/lib-es/featureFlags/stakePrograms/index.js.map +1 -1
  402. package/lib-es/featureFlags/useFeature.d.ts +1 -1
  403. package/lib-es/featureFlags/useFeature.d.ts.map +1 -1
  404. package/lib-es/featureFlags/useHasOverriddenFeatureFlags.js +1 -1
  405. package/lib-es/featureFlags/useHasOverriddenFeatureFlags.js.map +1 -1
  406. package/lib-es/generated/bridge/js.d.ts +0 -1
  407. package/lib-es/generated/bridge/js.d.ts.map +1 -1
  408. package/lib-es/generated/bridge/js.js +0 -2
  409. package/lib-es/generated/bridge/js.js.map +1 -1
  410. package/lib-es/generated/bridge/mock.d.ts +1 -0
  411. package/lib-es/generated/bridge/mock.d.ts.map +1 -1
  412. package/lib-es/helpers/cryptoIconSize.d.ts +3 -0
  413. package/lib-es/helpers/cryptoIconSize.d.ts.map +1 -0
  414. package/lib-es/helpers/cryptoIconSize.js +35 -0
  415. package/lib-es/helpers/cryptoIconSize.js.map +1 -0
  416. package/lib-es/helpers.d.ts +1 -0
  417. package/lib-es/helpers.d.ts.map +1 -1
  418. package/lib-es/helpers.js +1 -0
  419. package/lib-es/helpers.js.map +1 -1
  420. package/lib-es/hooks/useHtmlLinkSegments.d.ts +19 -0
  421. package/lib-es/hooks/useHtmlLinkSegments.d.ts.map +1 -0
  422. package/lib-es/hooks/useHtmlLinkSegments.js +121 -0
  423. package/lib-es/hooks/useHtmlLinkSegments.js.map +1 -0
  424. package/lib-es/hw/getAppAndVersion.d.ts +3 -1
  425. package/lib-es/hw/getAppAndVersion.d.ts.map +1 -1
  426. package/lib-es/hw/getAppAndVersion.js +2 -2
  427. package/lib-es/hw/getAppAndVersion.js.map +1 -1
  428. package/lib-es/hw/getBitcoinLikeInfo.js +1 -1
  429. package/lib-es/hw/getBitcoinLikeInfo.js.map +1 -1
  430. package/lib-es/load/speculos.d.ts.map +1 -1
  431. package/lib-es/load/speculos.js +1 -0
  432. package/lib-es/load/speculos.js.map +1 -1
  433. package/lib-es/mock/account.js +1 -1
  434. package/lib-es/mock/account.js.map +1 -1
  435. package/lib-es/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.d.ts.map +1 -1
  436. package/lib-es/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js +6 -0
  437. package/lib-es/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js.map +1 -1
  438. package/lib-es/operation.d.ts.map +1 -1
  439. package/lib-es/operation.js +7 -2
  440. package/lib-es/operation.js.map +1 -1
  441. package/lib-es/postOnboarding/reducer.d.ts +2 -0
  442. package/lib-es/postOnboarding/reducer.d.ts.map +1 -1
  443. package/lib-es/wallet-api/Exchange/SwapError.d.ts +93 -0
  444. package/lib-es/wallet-api/Exchange/SwapError.d.ts.map +1 -0
  445. package/lib-es/wallet-api/Exchange/SwapError.js +128 -0
  446. package/lib-es/wallet-api/Exchange/SwapError.js.map +1 -0
  447. package/lib-es/wallet-api/Exchange/handleSwapErrors.d.ts +40 -0
  448. package/lib-es/wallet-api/Exchange/handleSwapErrors.d.ts.map +1 -0
  449. package/lib-es/wallet-api/Exchange/handleSwapErrors.js +106 -0
  450. package/lib-es/wallet-api/Exchange/handleSwapErrors.js.map +1 -0
  451. package/lib-es/wallet-api/Exchange/index.d.ts +4 -0
  452. package/lib-es/wallet-api/Exchange/index.d.ts.map +1 -0
  453. package/lib-es/wallet-api/Exchange/index.js +7 -0
  454. package/lib-es/wallet-api/Exchange/index.js.map +1 -0
  455. package/lib-es/wallet-api/Exchange/parser.d.ts +46 -0
  456. package/lib-es/wallet-api/Exchange/parser.d.ts.map +1 -0
  457. package/lib-es/wallet-api/Exchange/parser.js +90 -0
  458. package/lib-es/wallet-api/Exchange/parser.js.map +1 -0
  459. package/lib-es/wallet-api/Exchange/server.d.ts.map +1 -1
  460. package/lib-es/wallet-api/Exchange/server.js +224 -174
  461. package/lib-es/wallet-api/Exchange/server.js.map +1 -1
  462. package/lib-es/wallet-api/Exchange/tracking.d.ts +7 -6
  463. package/lib-es/wallet-api/Exchange/tracking.d.ts.map +1 -1
  464. package/lib-es/wallet-api/Exchange/tracking.js +52 -13
  465. package/lib-es/wallet-api/Exchange/tracking.js.map +1 -1
  466. package/lib-es/wallet-api/constants.d.ts +1 -1
  467. package/lib-es/wallet-api/logic.d.ts +1 -1
  468. package/lib-es/wallet-api/logic.d.ts.map +1 -1
  469. package/lib-es/wallet-api/logic.js +5 -5
  470. package/lib-es/wallet-api/logic.js.map +1 -1
  471. package/lib-es/wallet-api/react.d.ts.map +1 -1
  472. package/lib-es/wallet-api/react.js +9 -6
  473. package/lib-es/wallet-api/react.js.map +1 -1
  474. package/lib-es/wallet-api/tracking.d.ts +5 -5
  475. package/lib-es/wallet-api/tracking.d.ts.map +1 -1
  476. package/lib-es/wallet-api/tracking.js +30 -10
  477. package/lib-es/wallet-api/tracking.js.map +1 -1
  478. package/lib-es/wallet-api/useDappLogic.d.ts.map +1 -1
  479. package/lib-es/wallet-api/useDappLogic.js +31 -20
  480. package/lib-es/wallet-api/useDappLogic.js.map +1 -1
  481. package/lib-es/wallet-api/utils/extractDappURLFromManifest.js +3 -3
  482. package/lib-es/wallet-api/utils/extractDappURLFromManifest.js.map +1 -1
  483. package/lib-es/wallet-api/utils/extractURLFromManifest.js +1 -1
  484. package/lib-es/wallet-api/utils/extractURLFromManifest.js.map +1 -1
  485. package/lib-es/walletSync/getEnvironmentParams.js +6 -6
  486. package/lib-es/walletSync/getEnvironmentParams.js.map +1 -1
  487. package/package.json +82 -90
  488. package/src/__tests__/test-helpers/bridge.ts +1 -1
  489. package/src/__tests__/test-helpers/environment.ts +3 -0
  490. package/src/account/index.ts +6 -0
  491. package/src/account/recentAddresses.test.ts +104 -0
  492. package/src/account/recentAddresses.ts +84 -0
  493. package/src/account/serialization.ts +1 -1
  494. package/src/account/support.ts +1 -1
  495. package/src/bridge/generic-alpaca/accountBridge.ts +3 -2
  496. package/src/bridge/generic-alpaca/broadcast.ts +6 -3
  497. package/src/bridge/generic-alpaca/currencyBridge.ts +3 -3
  498. package/src/bridge/generic-alpaca/estimateMaxSpendable.ts +2 -1
  499. package/src/bridge/generic-alpaca/getAccountShape.ts +36 -13
  500. package/src/bridge/generic-alpaca/getTransactionStatus.ts +16 -1
  501. package/src/bridge/generic-alpaca/postSync.test.ts +97 -0
  502. package/src/bridge/generic-alpaca/postSync.ts +42 -0
  503. package/src/bridge/generic-alpaca/prepareTransaction.ts +51 -10
  504. package/src/bridge/generic-alpaca/signOperation.ts +18 -2
  505. package/src/bridge/generic-alpaca/signer/Eth.ts +5 -1
  506. package/src/bridge/generic-alpaca/signer/index.ts +7 -0
  507. package/src/bridge/generic-alpaca/tests/getAccountShape.test.ts +43 -10
  508. package/src/bridge/generic-alpaca/tests/prepareTransaction.test.ts +74 -0
  509. package/src/bridge/generic-alpaca/types.ts +4 -0
  510. package/src/bridge/generic-alpaca/utils.test.ts +4 -0
  511. package/src/bridge/generic-alpaca/utils.ts +15 -3
  512. package/src/bridge/impl.ts +16 -3
  513. package/src/currencies/helpers.test.ts +10 -1
  514. package/src/currencies/helpers.ts +6 -0
  515. package/src/domain/getTokensWithFunds.ts +18 -5
  516. package/src/domain/getTotalStakeableAssets.test.ts +267 -0
  517. package/src/domain/getTotalStakeableAssets.ts +47 -0
  518. package/src/e2e/data/deviceLabelsData.ts +1 -0
  519. package/src/e2e/data/regexes.ts +1 -0
  520. package/src/e2e/enum/Device.ts +1 -0
  521. package/src/e2e/families/cardano.ts +32 -14
  522. package/src/e2e/index.ts +20 -0
  523. package/src/e2e/speculos.ts +35 -4
  524. package/src/e2e/speculosAppVersion.ts +8 -2
  525. package/src/e2e/swap.ts +8 -7
  526. package/src/exchange/swap/api/v5/fetchCurrencyFrom.ts +1 -1
  527. package/src/exchange/swap/getIncompatibleCurrencyKeys.ts +4 -0
  528. package/src/exchange/swap/postSwapState.ts +10 -5
  529. package/src/exchange/swap/transactionStrategies.ts +30 -7
  530. package/src/exchange/swap/types.ts +3 -1
  531. package/src/families/bitcoin/walletApiAdapter.test.ts +36 -0
  532. package/src/families/bitcoin/walletApiAdapter.ts +4 -0
  533. package/src/families/canton/config.ts +5 -4
  534. package/src/families/canton/react.test.ts +147 -0
  535. package/src/families/canton/react.ts +45 -1
  536. package/src/families/celo/setup.ts +12 -0
  537. package/src/families/cosmos/datasets/__snapshots__/cosmos.integration.test.ts.snap +73 -4
  538. package/src/families/cosmos/datasets/__snapshots__/cryptoOrg.integration.test.ts.snap +2 -2
  539. package/src/families/cosmos/datasets/__snapshots__/injective.integration.test.ts.snap +2 -2
  540. package/src/families/cosmos/datasets/__snapshots__/mantra.integration.test.ts.snap +2 -2
  541. package/src/families/cosmos/datasets/__snapshots__/osmosis.integration.test.ts.snap +2 -2
  542. package/src/families/cosmos/datasets/__snapshots__/persistence.integration.test.ts.snap +4 -4
  543. package/src/families/cosmos/datasets/__snapshots__/stargaze.integration.test.ts.snap +2 -2
  544. package/src/families/evm/bridge/mock.ts +14 -0
  545. package/src/families/evm/setup.ts +3 -22
  546. package/src/families/evm/walletApiAdapter.ts +33 -1
  547. package/src/families/hedera/__snapshots__/bridge.integration.test.ts.snap +278 -17
  548. package/src/families/hedera/react.test.ts +272 -0
  549. package/src/families/hedera/react.ts +63 -0
  550. package/src/families/polkadot/__snapshots__/bridge.integration.test.ts.snap +6 -3653
  551. package/src/families/polkadot/config.ts +1 -1
  552. package/src/families/stacks/__snapshots__/bridge.integration.test.ts.snap +1537 -18
  553. package/src/families/stacks/__tests__/sync.integration.test.ts +2 -2
  554. package/src/families/stacks/constants.ts +1 -1
  555. package/src/families/stellar/__snapshots__/bridge.integration.test.ts.snap +9 -9
  556. package/src/featureFlags/defaultFeatures.ts +22 -1
  557. package/src/featureFlags/firebaseFeatureFlags.ts +1 -1
  558. package/src/featureFlags/stakePrograms/index.ts +4 -4
  559. package/src/featureFlags/useHasOverriddenFeatureFlags.ts +1 -1
  560. package/src/generated/bridge/js.ts +0 -2
  561. package/src/helpers/cryptoIconSize.ts +25 -0
  562. package/src/helpers.ts +2 -0
  563. package/src/hooks/__tests__/useHtmlLinkSegments.test.ts +105 -0
  564. package/src/hooks/useHtmlLinkSegments.ts +158 -0
  565. package/src/hw/getAppAndVersion.ts +2 -1
  566. package/src/hw/getBitcoinLikeInfo.ts +1 -1
  567. package/src/load/speculos.ts +1 -0
  568. package/src/mock/account.ts +1 -1
  569. package/src/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.ts +6 -0
  570. package/src/operation.ts +10 -2
  571. package/src/wallet-api/Exchange/SwapError.test.ts +126 -0
  572. package/src/wallet-api/Exchange/SwapError.ts +159 -0
  573. package/src/wallet-api/Exchange/handleSwapErrors.test.ts +46 -0
  574. package/src/wallet-api/Exchange/handleSwapErrors.ts +161 -0
  575. package/src/wallet-api/Exchange/index.ts +26 -0
  576. package/src/wallet-api/Exchange/parser.test.ts +86 -0
  577. package/src/wallet-api/Exchange/parser.ts +119 -0
  578. package/src/wallet-api/Exchange/server.ts +289 -232
  579. package/src/wallet-api/Exchange/tracking.ts +56 -13
  580. package/src/wallet-api/logic.ts +5 -4
  581. package/src/wallet-api/react.ts +10 -5
  582. package/src/wallet-api/tracking.ts +30 -10
  583. package/src/wallet-api/useDappLogic.ts +32 -20
  584. package/src/wallet-api/utils/extractDappURLFromManifest.ts +3 -3
  585. package/src/wallet-api/utils/extractURLFromManifest.ts +1 -1
  586. package/src/walletSync/getEnvironmentParams.ts +6 -6
  587. package/lib/currencies/cryptoIcons.d.ts +0 -3
  588. package/lib/currencies/cryptoIcons.d.ts.map +0 -1
  589. package/lib/currencies/cryptoIcons.js +0 -24
  590. package/lib/currencies/cryptoIcons.js.map +0 -1
  591. package/lib/react.d.ts +0 -16
  592. package/lib/react.d.ts.map +0 -1
  593. package/lib/react.js +0 -64
  594. package/lib/react.js.map +0 -1
  595. package/lib/reactNative.d.ts +0 -16
  596. package/lib/reactNative.d.ts.map +0 -1
  597. package/lib/reactNative.js +0 -43
  598. package/lib/reactNative.js.map +0 -1
  599. package/lib-es/currencies/cryptoIcons.d.ts +0 -3
  600. package/lib-es/currencies/cryptoIcons.d.ts.map +0 -1
  601. package/lib-es/currencies/cryptoIcons.js +0 -20
  602. package/lib-es/currencies/cryptoIcons.js.map +0 -1
  603. package/lib-es/react.d.ts +0 -16
  604. package/lib-es/react.d.ts.map +0 -1
  605. package/lib-es/react.js +0 -33
  606. package/lib-es/react.js.map +0 -1
  607. package/lib-es/reactNative.d.ts +0 -16
  608. package/lib-es/reactNative.d.ts.map +0 -1
  609. package/lib-es/reactNative.js +0 -15
  610. package/lib-es/reactNative.js.map +0 -1
  611. package/react.js +0 -1
  612. package/reactNative.js +0 -1
  613. package/src/currencies/cryptoIcons.test.ts +0 -54
  614. package/src/currencies/cryptoIcons.ts +0 -21
  615. package/src/react.tsx +0 -43
  616. package/src/reactNative.ts +0 -23
  617. package/src/reactNativeSvg.d.ts +0 -19
@@ -0,0 +1,267 @@
1
+ import { genAccount } from "@ledgerhq/coin-framework/lib/mocks/account";
2
+ import { getCryptoCurrencyById } from "../currencies/index";
3
+ import { Account } from "@ledgerhq/types-live";
4
+ import type { TokenCurrency } from "@ledgerhq/types-cryptoassets";
5
+ import BigNumber from "bignumber.js";
6
+ import { getTotalStakeableAssets } from "./getTotalStakeableAssets";
7
+ import { setupMockCryptoAssetsStore } from "@ledgerhq/cryptoassets/cal-client/test-helpers";
8
+
9
+ // Setup mock store for unit tests
10
+ setupMockCryptoAssetsStore();
11
+
12
+ const ETH = getCryptoCurrencyById("ethereum");
13
+ const BTC = getCryptoCurrencyById("bitcoin");
14
+
15
+ // Create mock tokens for tests
16
+ const ZRX_TOKEN: TokenCurrency = {
17
+ type: "TokenCurrency",
18
+ id: "ethereum/erc20/0x_project",
19
+ contractAddress: "0xE41d2489571d322189246DaFA5ebDe1F4699F498",
20
+ parentCurrency: ETH,
21
+ tokenType: "erc20",
22
+ name: "0x Project",
23
+ ticker: "ZRX",
24
+ delisted: false,
25
+ disableCountervalue: false,
26
+ units: [{ name: "ZRX", code: "ZRX", magnitude: 18 }],
27
+ };
28
+
29
+ const REP_TOKEN: TokenCurrency = {
30
+ type: "TokenCurrency",
31
+ id: "ethereum/erc20/augur",
32
+ contractAddress: "0x1985365e9f78359a9B6AD760e32412f4a445E862",
33
+ parentCurrency: ETH,
34
+ tokenType: "erc20",
35
+ name: "Augur",
36
+ ticker: "REP",
37
+ delisted: false,
38
+ disableCountervalue: false,
39
+ units: [{ name: "REP", code: "REP", magnitude: 18 }],
40
+ };
41
+
42
+ const mockedAccounts: Account[] = [
43
+ genAccount("mocked-account-1", {
44
+ currency: ETH,
45
+ tokensData: [ZRX_TOKEN, REP_TOKEN],
46
+ }),
47
+ ];
48
+
49
+ describe("getTotalStakeableAssets", () => {
50
+ it("should return empty Set if no accounts", () => {
51
+ const result = getTotalStakeableAssets([], [], []);
52
+ expect(result.combinedIds).toBeInstanceOf(Set);
53
+ expect(result.combinedIds.size).toBe(0);
54
+ expect(result.stakeableAssets).toEqual([]);
55
+ });
56
+
57
+ it("should return empty Set if accounts is null", () => {
58
+ const result = getTotalStakeableAssets(null, [], []);
59
+ expect(result.combinedIds).toBeInstanceOf(Set);
60
+ expect(result.combinedIds.size).toBe(0);
61
+ expect(result.stakeableAssets).toEqual([]);
62
+ });
63
+
64
+ it("should return empty Set if accounts is undefined", () => {
65
+ const result = getTotalStakeableAssets(undefined, [], []);
66
+ expect(result.combinedIds).toBeInstanceOf(Set);
67
+ expect(result.combinedIds.size).toBe(0);
68
+ expect(result.stakeableAssets).toEqual([]);
69
+ });
70
+
71
+ it("should return empty Set if no staking currencies enabled", () => {
72
+ const result = getTotalStakeableAssets(mockedAccounts, [], []);
73
+ expect(result.combinedIds).toBeInstanceOf(Set);
74
+ expect(result.combinedIds.size).toBe(0);
75
+ expect(result.stakeableAssets).toEqual([]);
76
+ });
77
+
78
+ it("should return Set with matching currency ID when staking currency is enabled", () => {
79
+ const account = mockedAccounts[0];
80
+ const stakingCurrenciesEnabled = [ETH.id]; // "ethereum"
81
+
82
+ expect(account.balance).toBeTruthy();
83
+ expect(account.balance instanceof BigNumber).toBe(true);
84
+ expect(account.balance.gt(0)).toBe(true);
85
+
86
+ const result = getTotalStakeableAssets([account], stakingCurrenciesEnabled, []);
87
+
88
+ expect(result.combinedIds).toBeInstanceOf(Set);
89
+ expect(result.combinedIds.size).toBe(1);
90
+ expect(result.combinedIds.has(ETH.id)).toBe(true);
91
+ expect(result.stakeableAssets.length).toBe(1);
92
+ expect(result.stakeableAssets[0]).toEqual({
93
+ ticker: ETH.ticker,
94
+ networkName: ETH.name,
95
+ id: ETH.id,
96
+ });
97
+ });
98
+
99
+ it("should return Set with matching token IDs when staking tokens are enabled", () => {
100
+ const account = mockedAccounts[0];
101
+ const stakingCurrenciesEnabled = [ZRX_TOKEN.id, REP_TOKEN.id];
102
+
103
+ expect(account.subAccounts).toBeDefined();
104
+ expect(account.subAccounts?.length).toBe(2);
105
+
106
+ const result = getTotalStakeableAssets([account], stakingCurrenciesEnabled, []);
107
+
108
+ expect(result.combinedIds).toBeInstanceOf(Set);
109
+ expect(result.combinedIds.size).toBe(2);
110
+ expect(result.combinedIds.has(ZRX_TOKEN.id)).toBe(true);
111
+ expect(result.combinedIds.has(REP_TOKEN.id)).toBe(true);
112
+ expect(result.stakeableAssets.length).toBe(2);
113
+ expect(result.stakeableAssets).toEqual(
114
+ expect.arrayContaining([
115
+ expect.objectContaining({ id: ZRX_TOKEN.id, ticker: ZRX_TOKEN.ticker }),
116
+ expect.objectContaining({ id: REP_TOKEN.id, ticker: REP_TOKEN.ticker }),
117
+ ]),
118
+ );
119
+ });
120
+
121
+ it("should return Set with both currency and token IDs when both are enabled", () => {
122
+ const account = mockedAccounts[0];
123
+ const stakingCurrenciesEnabled = [ETH.id, ZRX_TOKEN.id, REP_TOKEN.id];
124
+
125
+ const result = getTotalStakeableAssets([account], stakingCurrenciesEnabled, []);
126
+
127
+ expect(result.combinedIds).toBeInstanceOf(Set);
128
+ expect(result.combinedIds.size).toBe(3);
129
+ expect(result.combinedIds.has(ETH.id)).toBe(true);
130
+ expect(result.combinedIds.has(ZRX_TOKEN.id)).toBe(true);
131
+ expect(result.combinedIds.has(REP_TOKEN.id)).toBe(true);
132
+ expect(result.stakeableAssets.length).toBe(3);
133
+ expect(result.stakeableAssets).toEqual(
134
+ expect.arrayContaining([
135
+ expect.objectContaining({ id: ETH.id, ticker: ETH.ticker }),
136
+ expect.objectContaining({ id: ZRX_TOKEN.id, ticker: ZRX_TOKEN.ticker }),
137
+ expect.objectContaining({ id: REP_TOKEN.id, ticker: REP_TOKEN.ticker }),
138
+ ]),
139
+ );
140
+ });
141
+
142
+ it("should filter out currencies without funds", () => {
143
+ const account = mockedAccounts[0];
144
+ const accountWithZeroBalance = { ...account, balance: new BigNumber(0) };
145
+ const stakingCurrenciesEnabled = [ETH.id];
146
+
147
+ const result = getTotalStakeableAssets([accountWithZeroBalance], stakingCurrenciesEnabled, []);
148
+
149
+ expect(result.combinedIds).toBeInstanceOf(Set);
150
+ expect(result.combinedIds.size).toBe(0);
151
+ expect(result.stakeableAssets).toEqual([]);
152
+ });
153
+
154
+ it("should filter out tokens without funds", () => {
155
+ const account = mockedAccounts[0];
156
+ const [zrxAccount, repAccount] = account.subAccounts || [];
157
+ const emptyRepAccount = { ...repAccount, balance: new BigNumber(0) };
158
+ const accountWithEmptyToken = { ...account, subAccounts: [zrxAccount, emptyRepAccount] };
159
+ const stakingCurrenciesEnabled = [ZRX_TOKEN.id, REP_TOKEN.id];
160
+
161
+ const result = getTotalStakeableAssets([accountWithEmptyToken], stakingCurrenciesEnabled, []);
162
+
163
+ expect(result.combinedIds).toBeInstanceOf(Set);
164
+ expect(result.combinedIds.size).toBe(1);
165
+ expect(result.combinedIds.has(ZRX_TOKEN.id)).toBe(true);
166
+ expect(result.combinedIds.has(REP_TOKEN.id)).toBe(false);
167
+ expect(result.stakeableAssets.length).toBe(1);
168
+ expect(result.stakeableAssets[0]).toEqual(
169
+ expect.objectContaining({ id: ZRX_TOKEN.id, ticker: ZRX_TOKEN.ticker }),
170
+ );
171
+ });
172
+
173
+ it("should include partner staking currencies enabled", () => {
174
+ const account = mockedAccounts[0];
175
+ const stakingCurrenciesEnabled = [ETH.id];
176
+ const partnerStakingCurrenciesEnabled = [ZRX_TOKEN.id];
177
+
178
+ const result = getTotalStakeableAssets(
179
+ [account],
180
+ stakingCurrenciesEnabled,
181
+ partnerStakingCurrenciesEnabled,
182
+ );
183
+
184
+ expect(result.combinedIds).toBeInstanceOf(Set);
185
+ expect(result.combinedIds.size).toBe(2);
186
+ expect(result.combinedIds.has(ETH.id)).toBe(true);
187
+ expect(result.combinedIds.has(ZRX_TOKEN.id)).toBe(true);
188
+ expect(result.stakeableAssets.length).toBe(2);
189
+ expect(result.stakeableAssets).toEqual(
190
+ expect.arrayContaining([
191
+ expect.objectContaining({ id: ETH.id, ticker: ETH.ticker }),
192
+ expect.objectContaining({ id: ZRX_TOKEN.id, ticker: ZRX_TOKEN.ticker }),
193
+ ]),
194
+ );
195
+ });
196
+
197
+ it("should deduplicate IDs when same currency appears in both lists", () => {
198
+ const account = mockedAccounts[0];
199
+ const stakingCurrenciesEnabled = [ETH.id];
200
+ const partnerStakingCurrenciesEnabled = [ETH.id]; // Same currency
201
+
202
+ const result = getTotalStakeableAssets(
203
+ [account],
204
+ stakingCurrenciesEnabled,
205
+ partnerStakingCurrenciesEnabled,
206
+ );
207
+
208
+ expect(result.combinedIds).toBeInstanceOf(Set);
209
+ expect(result.combinedIds.size).toBe(1);
210
+ expect(result.combinedIds.has(ETH.id)).toBe(true);
211
+ expect(result.stakeableAssets.length).toBe(1);
212
+ expect(result.stakeableAssets[0]).toEqual({
213
+ ticker: ETH.ticker,
214
+ networkName: ETH.name,
215
+ id: ETH.id,
216
+ });
217
+ });
218
+
219
+ it("should handle multiple accounts with different currencies", () => {
220
+ const ethAccount = mockedAccounts[0];
221
+ const btcAccount = genAccount("mocked-account-2", {
222
+ currency: BTC,
223
+ });
224
+ const accounts = [ethAccount, btcAccount];
225
+ const stakingCurrenciesEnabled = [ETH.id, BTC.id];
226
+
227
+ const result = getTotalStakeableAssets(accounts, stakingCurrenciesEnabled, []);
228
+
229
+ expect(result.combinedIds).toBeInstanceOf(Set);
230
+ expect(result.combinedIds.size).toBe(2);
231
+ expect(result.combinedIds.has(ETH.id)).toBe(true);
232
+ expect(result.combinedIds.has(BTC.id)).toBe(true);
233
+ expect(result.stakeableAssets.length).toBe(2);
234
+ expect(result.stakeableAssets).toEqual(
235
+ expect.arrayContaining([
236
+ expect.objectContaining({ id: ETH.id, ticker: ETH.ticker }),
237
+ expect.objectContaining({ id: BTC.id, ticker: BTC.ticker }),
238
+ ]),
239
+ );
240
+ });
241
+
242
+ it("should only include IDs that match staking currencies enabled", () => {
243
+ const account = mockedAccounts[0];
244
+ const stakingCurrenciesEnabled = [ZRX_TOKEN.id]; // Only ZRX enabled, not ETH or REP
245
+
246
+ const result = getTotalStakeableAssets([account], stakingCurrenciesEnabled, []);
247
+
248
+ expect(result.combinedIds).toBeInstanceOf(Set);
249
+ expect(result.combinedIds.size).toBe(1);
250
+ expect(result.combinedIds.has(ZRX_TOKEN.id)).toBe(true);
251
+ expect(result.combinedIds.has(ETH.id)).toBe(false);
252
+ expect(result.combinedIds.has(REP_TOKEN.id)).toBe(false);
253
+ expect(result.stakeableAssets.length).toBe(1);
254
+ expect(result.stakeableAssets[0]).toEqual(
255
+ expect.objectContaining({ id: ZRX_TOKEN.id, ticker: ZRX_TOKEN.ticker }),
256
+ );
257
+ });
258
+
259
+ it("should handle empty arrays for staking currencies", () => {
260
+ const account = mockedAccounts[0];
261
+ const result = getTotalStakeableAssets([account], [], []);
262
+
263
+ expect(result.combinedIds).toBeInstanceOf(Set);
264
+ expect(result.combinedIds.size).toBe(0);
265
+ expect(result.stakeableAssets).toEqual([]);
266
+ });
267
+ });
@@ -0,0 +1,47 @@
1
+ import { getTokensWithFundsMap } from "./getTokensWithFunds";
2
+ import { Account } from "@ledgerhq/types-live";
3
+
4
+ export function getTotalStakeableAssets(
5
+ accounts: Account[] | null | undefined,
6
+ stakingCurrenciesEnabled: string[],
7
+ partnerStakingCurrenciesEnabled: string[],
8
+ ): {
9
+ combinedIds: Set<string>;
10
+ stakeableAssets: { ticker: string; networkName: string; id: string }[];
11
+ } {
12
+ if (!accounts) return { combinedIds: new Set<string>(), stakeableAssets: [] };
13
+
14
+ const accountsWithFundsCurrencies = accounts
15
+ .filter(account => account?.balance.isGreaterThan(0))
16
+ .map(account => account?.currency);
17
+
18
+ const allStakingCurrenciesEnabled = new Set([
19
+ ...stakingCurrenciesEnabled,
20
+ ...partnerStakingCurrenciesEnabled,
21
+ ]);
22
+
23
+ const tokenWithFundsMap = getTokensWithFundsMap(accounts);
24
+ const filteredAccountCurrencyIds = [...accountsWithFundsCurrencies].filter(currency =>
25
+ allStakingCurrenciesEnabled.has(currency.id),
26
+ );
27
+ const filteredTokenWithFunds = [...tokenWithFundsMap.values()].filter(token =>
28
+ allStakingCurrenciesEnabled.has(token.id),
29
+ );
30
+
31
+ const combined = new Map<string, { ticker: string; networkName: string; id: string }>();
32
+ for (const currency of filteredAccountCurrencyIds) {
33
+ combined.set(currency.id, {
34
+ ticker: currency.ticker,
35
+ networkName: currency.name,
36
+ id: currency.id,
37
+ });
38
+ }
39
+ for (const token of filteredTokenWithFunds) {
40
+ combined.set(token.id, token);
41
+ }
42
+
43
+ return {
44
+ combinedIds: new Set(Array.from(combined.values(), details => details.id)),
45
+ stakeableAssets: Array.from(combined.values()),
46
+ };
47
+ }
@@ -112,6 +112,7 @@ export const DEVICE_LABELS_CONFIG: DeviceLabelsConfig = {
112
112
  },
113
113
  [DeviceModelId.stax]: TOUCHSCREEN_DEVICE_CONFIG,
114
114
  [DeviceModelId.europa]: TOUCHSCREEN_DEVICE_CONFIG,
115
+ [DeviceModelId.apex]: TOUCHSCREEN_DEVICE_CONFIG,
115
116
  default: {
116
117
  receiveVerify: {
117
118
  [AppInfos.BNB_CHAIN.name]: DeviceLabels.VERIFY_BSC,
@@ -0,0 +1 @@
1
+ export const floatNumberRegex = /^\d+\.?\d+$/;
@@ -9,4 +9,5 @@ export class Device {
9
9
  static readonly LNSP = new Device("nanoSP", 856686596);
10
10
  static readonly STAX = new Device("stax", 857735172);
11
11
  static readonly FLEX = new Device("flex", 858783748);
12
+ static readonly NANO_GEN_5 = new Device("nanoGen5", 859832324);
12
13
  }
@@ -22,7 +22,7 @@ function validateTransactionData(tx: Transaction, events: string[]) {
22
22
 
23
23
  async function sendCardanoTouchDevices(tx: Transaction) {
24
24
  await waitFor(DeviceLabels.REVIEW_TRANSACTION);
25
- const events = await pressUntilTextFound(DeviceLabels.TO);
25
+ const events = await pressUntilTextFound(DeviceLabels.AMOUNT);
26
26
  validateTransactionData(tx, events);
27
27
  await pressAndRelease(DeviceLabels.TAP_TO_CONTINUE);
28
28
  await waitFor(DeviceLabels.FEES);
@@ -77,18 +77,22 @@ export async function sendCardano(tx: Transaction) {
77
77
  return sendCardanoButtonDevice(tx);
78
78
  }
79
79
 
80
+ const TOUCH_DELEGATE_STEPS = [
81
+ [DeviceLabels.REVIEW_TRANSACTION, "swipe"],
82
+ [DeviceLabels.TAP_TO_CONTINUE, "tap"],
83
+ [DeviceLabels.REGISTER, "swipe"],
84
+ [DeviceLabels.TAP_TO_CONTINUE, "tap"],
85
+ [DeviceLabels.CONFIRM, "confirm"],
86
+ [DeviceLabels.DELEGATE_STAKE, "swipe"],
87
+ [DeviceLabels.TAP_TO_CONTINUE, "tap"],
88
+ [DeviceLabels.CONFIRM, "confirm"],
89
+ [DeviceLabels.HOLD_TO_SIGN, "hold"],
90
+ ] as const;
91
+
80
92
  const DELEGATE_STEPS_CONFIG = {
81
- [DeviceModelId.stax || DeviceModelId.europa]: [
82
- [DeviceLabels.REVIEW_TRANSACTION, "swipe"],
83
- [DeviceLabels.TAP_TO_CONTINUE, "tap"],
84
- [DeviceLabels.REGISTER, "swipe"],
85
- [DeviceLabels.TAP_TO_CONTINUE, "tap"],
86
- [DeviceLabels.CONFIRM, "confirm"],
87
- [DeviceLabels.DELEGATE_STAKE, "swipe"],
88
- [DeviceLabels.TAP_TO_CONTINUE, "tap"],
89
- [DeviceLabels.CONFIRM, "confirm"],
90
- [DeviceLabels.HOLD_TO_SIGN, "hold"],
91
- ] as const,
93
+ [DeviceModelId.stax]: TOUCH_DELEGATE_STEPS,
94
+ [DeviceModelId.europa]: TOUCH_DELEGATE_STEPS,
95
+ [DeviceModelId.apex]: TOUCH_DELEGATE_STEPS,
92
96
  [DeviceModelId.nanoS]: [
93
97
  [DeviceLabels.NEW_ORDINARY, "right"],
94
98
  [DeviceLabels.TRANSACTION_FEE, "both"],
@@ -115,8 +119,22 @@ const DELEGATE_STEPS_CONFIG = {
115
119
  ] as const,
116
120
  };
117
121
 
122
+ function getConfirmButtonCoords(): { x: number; y: number } {
123
+ const speculosModel = getSpeculosModel();
124
+
125
+ switch (speculosModel) {
126
+ case DeviceModelId.stax:
127
+ return { x: 152, y: 532 };
128
+ case DeviceModelId.apex:
129
+ return { x: 114, y: 305 };
130
+ case DeviceModelId.europa:
131
+ default:
132
+ return { x: 186, y: 446 };
133
+ }
134
+ }
135
+
118
136
  async function delegateTouchDevicesAction(label: DeviceLabels) {
119
- const CONFIRM_BUTTON_COORDS = { x: 139, y: 532 };
137
+ const CONFIRM_BUTTON_COORDS = getConfirmButtonCoords();
120
138
  await waitFor(label);
121
139
  switch (label) {
122
140
  case DeviceLabels.TAP_TO_CONTINUE:
@@ -164,7 +182,7 @@ async function executeDelegateStep(label: DeviceLabels, action: ActionType) {
164
182
  export async function delegateCardano() {
165
183
  const speculosModel = getSpeculosModel();
166
184
  const steps =
167
- speculosModel === DeviceModelId.stax || speculosModel === DeviceModelId.europa
185
+ isTouchDevice() && DELEGATE_STEPS_CONFIG[speculosModel]
168
186
  ? DELEGATE_STEPS_CONFIG[speculosModel]
169
187
  : speculosModel === DeviceModelId.nanoS
170
188
  ? DELEGATE_STEPS_CONFIG[DeviceModelId.nanoS]
package/src/e2e/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { EnvName } from "@ledgerhq/live-env";
2
2
  import { Feature, FeatureId } from "@ledgerhq/types-live";
3
3
  import { getFeature, DEFAULT_FEATURES } from "../featureFlags";
4
+ import axios, { AxiosError } from "axios";
4
5
 
5
6
  export const getAllFeatureFlags = (
6
7
  appLanguage?: string,
@@ -53,3 +54,22 @@ export const formatEnvData = (data: { [key in EnvName]: unknown }) => {
53
54
  }
54
55
  return allureData;
55
56
  };
57
+
58
+ export const sanitizeError = (error: unknown): Error => {
59
+ if (!axios.isAxiosError(error)) {
60
+ return error instanceof Error ? error : new Error(String(error ?? "Unknown error"));
61
+ }
62
+
63
+ const err = error as AxiosError;
64
+ const sanitized = new Error(err.message || "Axios request failed");
65
+
66
+ Object.assign(sanitized, {
67
+ name: err.name,
68
+ code: err.code,
69
+ url: err.config?.url,
70
+ method: err.config?.method,
71
+ status: err.response?.status,
72
+ });
73
+
74
+ return sanitized;
75
+ };
@@ -49,6 +49,7 @@ import {
49
49
  swipeRight,
50
50
  } from "./deviceInteraction/TouchDeviceSimulator";
51
51
  import { withDeviceController } from "./deviceInteraction/DeviceController";
52
+ import { sanitizeError } from ".";
52
53
 
53
54
  const isSpeculosRemote = process.env.REMOTE_SPECULOS === "true";
54
55
 
@@ -428,7 +429,7 @@ export async function startSpeculos(
428
429
  };
429
430
  });
430
431
  } catch (e: unknown) {
431
- console.error(e);
432
+ console.error(sanitizeError(e));
432
433
  log("engine", `test ${testName} failed with ${String(e)}`);
433
434
  }
434
435
  }
@@ -610,7 +611,7 @@ export async function takeScreenshot(port?: number): Promise<Buffer | undefined>
610
611
  );
611
612
  return response.data;
612
613
  } catch (error) {
613
- console.error("Error downloading speculos screenshot:", error);
614
+ console.error("Error downloading speculos screenshot:", sanitizeError(error));
614
615
  }
615
616
  }
616
617
 
@@ -668,12 +669,42 @@ export const activateLedgerSync = withDeviceController(({ getButtonsController }
668
669
  }
669
670
  });
670
671
 
672
+ const getSettingsToggle1Coordinates = () => {
673
+ const deviceModel = getSpeculosModel();
674
+
675
+ switch (deviceModel) {
676
+ case DeviceModelId.stax:
677
+ return { x: 345, y: 136 };
678
+ case DeviceModelId.europa:
679
+ return { x: 420, y: 140 };
680
+ case DeviceModelId.apex:
681
+ return { x: 263, y: 100 };
682
+ default:
683
+ return { x: 420, y: 140 };
684
+ }
685
+ };
686
+
687
+ const getSettingsCogwheelCoordinates = () => {
688
+ const deviceModel = getSpeculosModel();
689
+
690
+ switch (deviceModel) {
691
+ case DeviceModelId.stax:
692
+ return { x: 362, y: 43 };
693
+ case DeviceModelId.europa:
694
+ return { x: 400, y: 80 };
695
+ case DeviceModelId.apex:
696
+ return { x: 253, y: 58 };
697
+ default:
698
+ return { x: 400, y: 80 };
699
+ }
700
+ };
701
+
671
702
  export const activateExpertMode = withDeviceController(({ getButtonsController }) => async () => {
672
703
  const buttons = getButtonsController();
673
704
 
674
705
  if (isTouchDevice()) {
675
706
  await goToSettings();
676
- const SettingsToggle1Coordinates = { x: 344, y: 136 };
707
+ const SettingsToggle1Coordinates = getSettingsToggle1Coordinates();
677
708
  await pressAndRelease(
678
709
  DeviceLabels.SETTINGS_TOGGLE_1,
679
710
  SettingsToggle1Coordinates.x,
@@ -698,7 +729,7 @@ export const goToSettings = withDeviceController(({ getButtonsController }) => a
698
729
  const buttons = getButtonsController();
699
730
 
700
731
  if (isTouchDevice()) {
701
- const SettingsCogwheelCoordinates = { x: 400, y: 75 };
732
+ const SettingsCogwheelCoordinates = getSettingsCogwheelCoordinates();
702
733
  await pressAndRelease(
703
734
  DeviceLabels.SETTINGS,
704
735
  SettingsCogwheelCoordinates.x,
@@ -3,6 +3,7 @@ import { version } from "../../package.json";
3
3
  import { getEnv } from "@ledgerhq/live-env";
4
4
  import { DeviceModelId } from "@ledgerhq/devices";
5
5
  import { Device as CryptoWallet } from "./enum/Device";
6
+ import { sanitizeError } from "./index";
6
7
  import * as fs from "fs";
7
8
  import * as path from "path";
8
9
 
@@ -18,6 +19,8 @@ export function getSpeculosModel(): DeviceModelId {
18
19
  case CryptoWallet.FLEX.name:
19
20
  case DeviceModelId.europa:
20
21
  return DeviceModelId.europa;
22
+ case CryptoWallet.NANO_GEN_5.name:
23
+ return DeviceModelId.apex;
21
24
  case CryptoWallet.LNSP.name:
22
25
  default:
23
26
  return DeviceModelId.nanoSP;
@@ -26,7 +29,9 @@ export function getSpeculosModel(): DeviceModelId {
26
29
 
27
30
  export function isTouchDevice(): boolean {
28
31
  const model = getSpeculosModel();
29
- return model === DeviceModelId.stax || model === DeviceModelId.europa;
32
+ return (
33
+ model === DeviceModelId.stax || model === DeviceModelId.europa || model === DeviceModelId.apex
34
+ );
30
35
  }
31
36
 
32
37
  function getDeviceTargetId(device: DeviceModelId): number {
@@ -36,6 +41,7 @@ function getDeviceTargetId(device: DeviceModelId): number {
36
41
  [DeviceModelId.nanoSP]: CryptoWallet.LNSP.targetId,
37
42
  [DeviceModelId.stax]: CryptoWallet.STAX.targetId,
38
43
  [DeviceModelId.europa]: CryptoWallet.FLEX.targetId,
44
+ [DeviceModelId.apex]: CryptoWallet.NANO_GEN_5.targetId,
39
45
  };
40
46
  return modelToTargetIdMap[device];
41
47
  }
@@ -73,7 +79,7 @@ export async function createNanoAppJsonFile(nanoAppFilePath: string): Promise<vo
73
79
  }
74
80
  fs.writeFileSync(jsonFilePath, JSON.stringify(appCatalog, null, 2), "utf8");
75
81
  } catch (error) {
76
- console.error("Unable to create app version file:", error);
82
+ console.error("Unable to create app version file:", sanitizeError(error));
77
83
  }
78
84
  }
79
85
 
package/src/e2e/swap.ts CHANGED
@@ -1,11 +1,12 @@
1
1
  import { Account } from "./enum/Account";
2
+ import { sanitizeError } from "./index";
2
3
  import axios from "axios";
3
4
 
4
5
  export async function getMinimumSwapAmount(AccountFrom: Account, AccountTo: Account) {
5
6
  try {
6
7
  const requestConfig = {
7
8
  method: "GET",
8
- url: `https://swap-stg.ledger-test.com/v5/quote`,
9
+ url: "https://swap-stg.ledger-test.com/v5/quote",
9
10
  params: {
10
11
  from: AccountFrom.currency.id,
11
12
  to: AccountTo.currency.id,
@@ -21,9 +22,7 @@ export async function getMinimumSwapAmount(AccountFrom: Account, AccountTo: Acco
21
22
  tradeType: "INPUT",
22
23
  uniswapOrderType: "uniswapxv1",
23
24
  },
24
- headers: {
25
- accept: "application/json",
26
- },
25
+ headers: { accept: "application/json" },
27
26
  };
28
27
 
29
28
  const { data } = await axios(requestConfig);
@@ -38,8 +37,10 @@ export async function getMinimumSwapAmount(AccountFrom: Account, AccountTo: Acco
38
37
  }
39
38
 
40
39
  return Math.max(...minimumAmounts);
41
- } catch (error) {
42
- console.error("Error fetching swap minimum amount:", error);
43
- throw error;
40
+ } catch (error: any) {
41
+ const sanitizedError = sanitizeError(error);
42
+ console.error("Error fetching swap minimum amount:", sanitizedError);
43
+ // throw the sanitized error, not the original circular Axios error
44
+ throw sanitizedError;
44
45
  }
45
46
  }
@@ -45,7 +45,7 @@ export async function fetchCurrencyFrom({
45
45
  ...(headers !== undefined ? { headers } : {}),
46
46
  });
47
47
  return flattenV5CurrenciesToAndFrom(data);
48
- } catch (e) {
48
+ } catch {
49
49
  throw Error("Something went wrong in fetchCurrencyFrom call");
50
50
  }
51
51
  }
@@ -83,6 +83,10 @@ const INCOMPATIBLE_NANO_S_CURRENCY_KEYS: Keys = {
83
83
  title: "swap.incompatibility.celo_title",
84
84
  description: "swap.incompatibility.celo_description",
85
85
  },
86
+ monad: {
87
+ title: "swap.incompatibility.monad_title",
88
+ description: "swap.incompatibility.monad_description",
89
+ },
86
90
  };
87
91
 
88
92
  export const getIncompatibleCurrencyKeys = (exchange: ExchangeSwap) => {
@@ -106,6 +106,7 @@ export const postSwapCancelled: PostSwapCancelled = async ({
106
106
  seedIdTo,
107
107
  refundAddress,
108
108
  payoutAddress,
109
+ data,
109
110
  ...rest
110
111
  }) => {
111
112
  if (isIntegrationTestEnv()) return mockPostSwapCancelled({ provider, swapId, ...rest });
@@ -138,7 +139,8 @@ export const postSwapCancelled: PostSwapCancelled = async ({
138
139
 
139
140
  const shouldIncludeAddresses =
140
141
  rest.statusCode === "WrongDeviceForAccountPayout" ||
141
- rest.statusCode === "WrongDeviceForAccountRefund";
142
+ rest.statusCode === "WrongDeviceForAccountRefund" ||
143
+ rest.statusCode === "FeeNotLoaded";
142
144
 
143
145
  const requestData = {
144
146
  provider,
@@ -147,11 +149,14 @@ export const postSwapCancelled: PostSwapCancelled = async ({
147
149
  swapIntentWithoutProvider,
148
150
  payloadAddressMatchAccountAddress,
149
151
  fromAmount,
150
- fromAccountAddress: shouldIncludeAddresses ? fromAccountAddress : undefined,
151
- toAccountAddress: shouldIncludeAddresses ? toAccountAddress : undefined,
152
- payloadRefundAddress: shouldIncludeAddresses ? refundAddress : undefined,
153
- payloadPayoutAddress: shouldIncludeAddresses ? payoutAddress : undefined,
152
+ ...(shouldIncludeAddresses && {
153
+ fromAccountAddress,
154
+ toAccountAddress,
155
+ payloadRefundAddress: refundAddress,
156
+ payloadPayoutAddress: payoutAddress,
157
+ }),
154
158
  maybeSeedMatch: seedIdFrom === seedIdTo, // Only true if both accounts are from the same seed and from the same chain type
159
+ data,
155
160
  ...rest,
156
161
  };
157
162