@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
@@ -86,6 +86,19 @@ export const genericSignOperation =
86
86
  const alpacaApi = getAlpacaApi(account.currency.id, kind);
87
87
  if (!transaction.fees) throw new FeeNotLoaded();
88
88
  const fees = BigInt(transaction.fees?.toString() || "0");
89
+ const feesParameters = {
90
+ ...(transaction.gasLimit ? { gasLimit: BigInt(transaction.gasLimit.toFixed()) } : {}),
91
+ ...(transaction.gasPrice ? { gasPrice: BigInt(transaction.gasPrice.toFixed()) } : {}),
92
+ ...(transaction.maxFeePerGas
93
+ ? { maxFeePerGas: BigInt(transaction.maxFeePerGas.toFixed()) }
94
+ : {}),
95
+ ...(transaction.maxPriorityFeePerGas
96
+ ? { maxPriorityFeePerGas: BigInt(transaction.maxPriorityFeePerGas.toFixed()) }
97
+ : {}),
98
+ ...(transaction.additionalFees
99
+ ? { additionalFees: BigInt(transaction.additionalFees.toFixed()) }
100
+ : {}),
101
+ };
89
102
  if (transaction.useAllAmount) {
90
103
  const draftTransaction = {
91
104
  mode: transaction.mode,
@@ -98,10 +111,12 @@ export const genericSignOperation =
98
111
  family: transaction.family,
99
112
  feesStrategy: transaction.feesStrategy,
100
113
  data: transaction.data,
114
+ type: transaction.type,
101
115
  };
116
+ // TODO Remove the call to `validateIntent` https://ledgerhq.atlassian.net/browse/LIVE-22227
102
117
  const { amount } = await alpacaApi.validateIntent(
103
118
  transactionToIntent(account, draftTransaction, alpacaApi.computeIntentType),
104
- { value: fees },
119
+ { value: fees, parameters: feesParameters },
105
120
  );
106
121
  transaction.amount = new BigNumber(amount.toString());
107
122
  }
@@ -119,7 +134,7 @@ export const genericSignOperation =
119
134
  // Enrich with memo and asset information
120
135
  transactionIntent = enrichTransactionIntent(transactionIntent, transaction, publicKey);
121
136
 
122
- if (typeof transactionIntent.sequence !== "bigint") {
137
+ if (typeof transactionIntent.sequence !== "bigint" || transactionIntent.sequence < 0n) {
123
138
  // TODO: should compute it and pass it down to craftTransaction (duplicate call right now)
124
139
  const sequenceNumber = await alpacaApi.getSequence(transactionIntent.sender);
125
140
  transactionIntent.sequence = sequenceNumber;
@@ -128,6 +143,7 @@ export const genericSignOperation =
128
143
  /* Craft unsigned blob via Alpaca */
129
144
  const { transaction: unsigned } = await alpacaApi.craftTransaction(transactionIntent, {
130
145
  value: fees,
146
+ parameters: feesParameters,
131
147
  });
132
148
 
133
149
  /* Notify UI that the device is now showing the tx */
@@ -1,6 +1,6 @@
1
1
  import { filter, firstValueFrom } from "rxjs";
2
2
  import { EvmAddress, EvmSignature, EvmSigner } from "@ledgerhq/coin-evm/types/signer";
3
- import { CreateSigner } from "../../setup";
3
+ import { CreateSigner, executeWithSigner } from "../../setup";
4
4
  import { DeviceManagementKit } from "@ledgerhq/device-management-kit";
5
5
  import { DmkSignerEth, LegacySignerEth } from "@ledgerhq/live-signer-evm";
6
6
  import Transport from "@ledgerhq/hw-transport";
@@ -8,6 +8,7 @@ import { getEnv } from "@ledgerhq/live-env";
8
8
  import { ResolutionConfig, LoadConfig } from "@ledgerhq/hw-app-eth/lib/services/types";
9
9
  import { Signature } from "ethers";
10
10
  import type { DomainServiceResolution } from "@ledgerhq/types-live";
11
+ import resolver from "@ledgerhq/coin-evm/hw-getAddress";
11
12
 
12
13
  export type Signer = {
13
14
  getAddress: (path: string) => Promise<EvmAddress>;
@@ -70,3 +71,6 @@ export const createSigner: CreateSigner<Signer> = (transport: Transport) => {
70
71
  },
71
72
  };
72
73
  };
74
+
75
+ export const context = executeWithSigner(createSigner);
76
+ export const getAddress = resolver(context);
@@ -10,6 +10,7 @@ import { AlpacaSigner } from "./types";
10
10
  import { DerivationType, LedgerSigner as TaquitoLedgerSigner } from "@taquito/ledger-signer";
11
11
  import tezosGetAddress from "@ledgerhq/coin-tezos/signer/getAddress";
12
12
  import Tezos from "@ledgerhq/hw-app-tezos";
13
+ import { context as evmContext, getAddress as evmGetAddress } from "./Eth";
13
14
 
14
15
  const createSignerXrp: CreateSigner<Xrp> = (transport: Transport) => {
15
16
  return new Xrp(transport);
@@ -97,6 +98,12 @@ export function getSigner(network: string): AlpacaSigner {
97
98
  context: signerContextTezos,
98
99
  };
99
100
  }
101
+ case "evm": {
102
+ return {
103
+ getAddress: evmGetAddress,
104
+ context: evmContext,
105
+ };
106
+ }
100
107
  }
101
108
  throw new Error(`signer for ${network} not implemented`);
102
109
  }
@@ -71,7 +71,7 @@ describe("genericGetAccountShape", () => {
71
71
  "sync-hash",
72
72
  {
73
73
  minHeight: 11,
74
- order: "asc",
74
+ order: "desc",
75
75
  lastPagingToken: "pt1",
76
76
  },
77
77
  [
@@ -82,11 +82,16 @@ describe("genericGetAccountShape", () => {
82
82
  },
83
83
  {
84
84
  hash: "h2",
85
- type: "IN",
85
+ type: "OUT",
86
86
  blockHeight: 12,
87
87
  subOperations: [{ id: `${currency.id}_subOp1` }],
88
88
  extra: { assetReference: "ar2", assetOwner: "ow2" },
89
89
  },
90
+ {
91
+ blockHeight: 16,
92
+ hash: "h4",
93
+ type: "IN",
94
+ },
90
95
  {
91
96
  hash: "h1",
92
97
  blockHeight: 10,
@@ -100,7 +105,7 @@ describe("genericGetAccountShape", () => {
100
105
  "outdated-sync-hash",
101
106
  {
102
107
  minHeight: 0,
103
- order: "asc",
108
+ order: "desc",
104
109
  },
105
110
  [
106
111
  {
@@ -110,11 +115,16 @@ describe("genericGetAccountShape", () => {
110
115
  },
111
116
  {
112
117
  hash: "h2",
113
- type: "IN",
118
+ type: "OUT",
114
119
  blockHeight: 12,
115
120
  subOperations: [{ id: `${currency.id}_subOp1` }],
116
121
  extra: { assetReference: "ar2", assetOwner: "ow2" },
117
122
  },
123
+ {
124
+ blockHeight: 16,
125
+ hash: "h4",
126
+ type: "IN",
127
+ },
118
128
  ],
119
129
  ],
120
130
  ])(
@@ -150,8 +160,13 @@ describe("genericGetAccountShape", () => {
150
160
  asset.symbol === "TOK1" ? { id: `${currency.id}_token1` } : null,
151
161
  );
152
162
 
153
- const coreOp = { hash: "h2", height: 12 };
154
- listOperationsMock.mockResolvedValue([[coreOp]]);
163
+ listOperationsMock.mockResolvedValue([
164
+ [
165
+ { hash: "h2", type: "OUT", height: 12 },
166
+ { hash: "h3", type: "IN", tx: { failed: true }, height: 14 }, // won't appear in final shape
167
+ { hash: "h4", type: "IN", tx: { failed: false }, height: 16 },
168
+ ],
169
+ ]);
155
170
  refreshOperationsMock.mockImplementation(ops => {
156
171
  const op = ops[0];
157
172
  if (op?.hash === "h0") {
@@ -162,8 +177,8 @@ describe("genericGetAccountShape", () => {
162
177
 
163
178
  adaptCoreOperationToLiveOperationMock.mockImplementation((_accId, op) => ({
164
179
  hash: op.hash,
165
- type: "IN",
166
- blockHeight: 12,
180
+ type: op.type,
181
+ blockHeight: op.height,
167
182
  extra: { assetReference: "ar2", assetOwner: "ow2" },
168
183
  }));
169
184
 
@@ -206,8 +221,26 @@ describe("genericGetAccountShape", () => {
206
221
  ]);
207
222
 
208
223
  const assetOpsPassed = buildSubAccountsMock.mock.calls[0][0].operations;
209
- expect(assetOpsPassed).toHaveLength(1);
210
- expect(assetOpsPassed[0].hash).toBe("h2");
224
+ expect(assetOpsPassed).toEqual([
225
+ {
226
+ blockHeight: 12,
227
+ extra: {
228
+ assetOwner: "ow2",
229
+ assetReference: "ar2",
230
+ },
231
+ hash: "h2",
232
+ type: "OUT",
233
+ },
234
+ {
235
+ blockHeight: 16,
236
+ extra: {
237
+ assetOwner: "ow2",
238
+ assetReference: "ar2",
239
+ },
240
+ hash: "h4",
241
+ type: "IN",
242
+ },
243
+ ]);
211
244
 
212
245
  expect(result).toMatchObject({
213
246
  balance: new BigNumber(1000),
@@ -2,6 +2,9 @@ import { genericPrepareTransaction } from "../prepareTransaction";
2
2
  import { getAlpacaApi } from "../alpaca";
3
3
  import { transactionToIntent } from "../utils";
4
4
  import BigNumber from "bignumber.js";
5
+ import { GenericTransaction } from "../types";
6
+ import { setupMockCryptoAssetsStore } from "@ledgerhq/cryptoassets/cal-client/test-helpers";
7
+ import { TokenCurrency } from "@ledgerhq/types-cryptoassets";
5
8
 
6
9
  jest.mock("../alpaca", () => ({
7
10
  getAlpacaApi: jest.fn(),
@@ -95,6 +98,11 @@ describe("genericPrepareTransaction", () => {
95
98
  it.each([
96
99
  ["type", 2, 2],
97
100
  ["storageLimit", 300n, new BigNumber(300)],
101
+ ["gasLimit", 300n, new BigNumber(300)],
102
+ ["gasPrice", 300n, new BigNumber(300)],
103
+ ["maxFeePerGas", 300n, new BigNumber(300)],
104
+ ["maxPriorityFeePerGas", 300n, new BigNumber(300)],
105
+ ["additionalFees", 300n, new BigNumber(300)],
98
106
  ])(
99
107
  "propagates %s from estimation parameters",
100
108
  async (parameterName, parameterValue, expectedValue) => {
@@ -122,4 +130,70 @@ describe("genericPrepareTransaction", () => {
122
130
  );
123
131
  },
124
132
  );
133
+
134
+ it("estimates using the token account spendable balance when sending all amount", async () => {
135
+ const estimateFees = jest.fn().mockResolvedValue({ value: new BigNumber(50) });
136
+ (transactionToIntent as jest.Mock).mockImplementation((_, transaction) => ({
137
+ amount: BigInt(transaction.amount.toFixed()),
138
+ }));
139
+ (getAlpacaApi as jest.Mock).mockReturnValue({
140
+ estimateFees,
141
+ validateIntent: intent => Promise.resolve({ amount: intent.amount }),
142
+ });
143
+ const prepareTransaction = genericPrepareTransaction(network, kind);
144
+
145
+ await prepareTransaction(
146
+ {
147
+ ...account,
148
+ subAccounts: [{ id: "test-sub-account", spendableBalance: new BigNumber(100) }],
149
+ },
150
+ {
151
+ subAccountId: "test-sub-account",
152
+ useAllAmount: true,
153
+ amount: new BigNumber(0),
154
+ } as GenericTransaction,
155
+ );
156
+
157
+ expect(estimateFees).toHaveBeenCalledWith(expect.objectContaining({ amount: 100n }), {});
158
+ });
159
+
160
+ it("fills 'assetOwner' and 'assetReference' from 'subAccountId' for retro compatibility", async () => {
161
+ setupMockCryptoAssetsStore({
162
+ findTokenById: tokenId =>
163
+ Promise.resolve(tokenId === "usdc" ? ({ id: tokenId } as TokenCurrency) : undefined),
164
+ });
165
+ (getAlpacaApi as jest.Mock).mockReturnValue({
166
+ estimateFees: () => Promise.resolve({ value: 0n }),
167
+ getAssetFromToken: (token, owner) =>
168
+ token.id === "usdc" ? { assetOwner: owner, assetReference: token.id } : undefined,
169
+ });
170
+ const prepareTransaction = genericPrepareTransaction(network, kind);
171
+
172
+ await prepareTransaction(
173
+ {
174
+ ...account,
175
+ freshAddress: "test-account-address",
176
+ subAccounts: [{ id: "test-sub-account+usdc" }],
177
+ },
178
+ {
179
+ subAccountId: "test-sub-account+usdc",
180
+ amount: new BigNumber(10),
181
+ } as GenericTransaction,
182
+ );
183
+
184
+ expect(transactionToIntent).toHaveBeenCalledWith(
185
+ {
186
+ ...account,
187
+ freshAddress: "test-account-address",
188
+ subAccounts: [{ id: "test-sub-account+usdc" }],
189
+ },
190
+ {
191
+ subAccountId: "test-sub-account+usdc",
192
+ amount: new BigNumber(10),
193
+ assetOwner: "test-account-address",
194
+ assetReference: "usdc",
195
+ },
196
+ undefined,
197
+ );
198
+ });
125
199
  });
@@ -70,7 +70,9 @@ export type GenericTransaction = TransactionCommon & {
70
70
  gasPrice?: BigNumber | null;
71
71
  maxFeePerGas?: BigNumber | null;
72
72
  maxPriorityFeePerGas?: BigNumber | null;
73
+ additionalFees?: BigNumber | null;
73
74
  gasOptions?: GasOptions;
75
+ sponsored?: boolean;
74
76
  };
75
77
 
76
78
  export type GenericTransactionRaw = TransactionCommonRaw & {
@@ -104,7 +106,9 @@ export type GenericTransactionRaw = TransactionCommonRaw & {
104
106
  gasPrice?: string | null;
105
107
  maxFeePerGas?: string | null;
106
108
  maxPriorityFeePerGas?: string | null;
109
+ additionalFees?: string | null;
107
110
  gasOptions?: GasOptionsRaw;
111
+ sponsored?: boolean;
108
112
  };
109
113
 
110
114
  export interface OperationCommon extends Operation {
@@ -166,10 +166,12 @@ describe("Alpaca utils", () => {
166
166
  },
167
167
  ...params,
168
168
  } as GenericTransaction,
169
+ 3n,
169
170
  );
170
171
 
171
172
  expect(operation).toMatchObject({
172
173
  id: `parent-account-id--${expected.parentType}`,
174
+ transactionSequenceNumber: new BigNumber(3),
173
175
  type: expected.parentType,
174
176
  value: expected.parentValue,
175
177
  accountId: "parent-account-id",
@@ -194,10 +196,12 @@ describe("Alpaca utils", () => {
194
196
  subOperations: [
195
197
  {
196
198
  id: `sub-account-id--${expected.subType}`,
199
+ transactionSequenceNumber: new BigNumber(3),
197
200
  accountId: "sub-account-id",
198
201
  type: expected.subType,
199
202
  senders: ["account-address"],
200
203
  recipients: ["recipient-address"],
204
+ fee: new BigNumber(12),
201
205
  value: new BigNumber(50),
202
206
  blockHash: null,
203
207
  blockHeight: null,
@@ -72,6 +72,7 @@ export function adaptCoreOperationToLiveOperation(accountId: string, op: CoreOpe
72
72
  parentRecipients?: string[];
73
73
  ledgerOpType?: string | undefined;
74
74
  memo?: string | undefined;
75
+ internal?: boolean;
75
76
  } = {};
76
77
 
77
78
  if (op.details?.ledgerOpType !== undefined) {
@@ -106,6 +107,11 @@ export function adaptCoreOperationToLiveOperation(accountId: string, op: CoreOpe
106
107
  if (op.details?.memo) {
107
108
  extra.memo = op.details.memo as string;
108
109
  }
110
+
111
+ if (op.details?.internal === true) {
112
+ extra.internal = op.details?.internal;
113
+ }
114
+
109
115
  const bnFees = new BigNumber(op.tx.fees.toString());
110
116
  const hasFailed = op.tx.failed;
111
117
 
@@ -214,6 +220,7 @@ export function transactionToIntent(
214
220
  transaction.nonce !== null && transaction.nonce !== undefined
215
221
  ? BigInt(transaction.nonce.toString())
216
222
  : undefined,
223
+ sponsored: transaction.sponsored,
217
224
  };
218
225
  if (transaction.assetReference && transaction.assetOwner) {
219
226
  const { subAccountId } = transaction;
@@ -265,8 +272,11 @@ function toGenericTransactionRaw(transaction: GenericTransaction): GenericTransa
265
272
  family: transaction.family,
266
273
  };
267
274
 
268
- if ("useAllAmount" in transaction) {
269
- raw.useAllAmount = transaction.useAllAmount;
275
+ const booleanFieldsToPropagate = ["useAllAmount", "sponsored"] as const;
276
+ for (const field of booleanFieldsToPropagate) {
277
+ if (field in transaction) {
278
+ raw[field] = transaction[field];
279
+ }
270
280
  }
271
281
 
272
282
  const stringFieldsToPropagate = [
@@ -296,6 +306,7 @@ function toGenericTransactionRaw(transaction: GenericTransaction): GenericTransa
296
306
  "gasPrice",
297
307
  "maxFeePerGas",
298
308
  "maxPriorityFeePerGas",
309
+ "additionalFees",
299
310
  ] as const;
300
311
  for (const field of bigNumberFieldsToPropagate) {
301
312
  if (field in transaction) {
@@ -407,11 +418,12 @@ export const buildOptimisticOperation = (
407
418
  hash: "",
408
419
  type,
409
420
  value: transaction.useAllAmount ? tokenAccount.balance : transaction.amount,
410
- fee: new BigNumber(0),
421
+ fee: new BigNumber(fees.toString()),
411
422
  blockHash: null,
412
423
  blockHeight: null,
413
424
  senders: [account.freshAddress],
414
425
  recipients: [transaction.recipient],
426
+ transactionSequenceNumber: new BigNumber(sequenceNumber?.toString() ?? 0),
415
427
  accountId: subAccountId,
416
428
  date: new Date(),
417
429
  transactionRaw: toGenericTransactionRaw({
@@ -23,6 +23,7 @@ import { AddressesSanctionedError } from "@ledgerhq/coin-framework/sanction/erro
23
23
  // Removed: stores are now managed globally by @ledgerhq/cryptoassets/cal-client/store
24
24
 
25
25
  const alpacaized = {
26
+ evm: true,
26
27
  xrp: true,
27
28
  stellar: true,
28
29
  tezos: true,
@@ -35,7 +36,13 @@ const currencyBridgeCache: Record<string, CurrencyBridge> = {};
35
36
  export const getCurrencyBridge = (currency: CryptoCurrency): CurrencyBridge => {
36
37
  if (getEnv("MOCK")) {
37
38
  const mockBridge = mockBridges[currency.family];
38
- if (mockBridge) return mockBridge.currencyBridge;
39
+ // TODO Remove once we delete mock bridges tests
40
+ if (mockBridge) {
41
+ if (typeof mockBridge.loadCoinConfig === "function") {
42
+ mockBridge.loadCoinConfig();
43
+ }
44
+ return mockBridge.currencyBridge;
45
+ }
39
46
  throw new CurrencyNotSupported("no mock implementation available for currency " + currency.id, {
40
47
  currencyName: currency.id,
41
48
  });
@@ -85,13 +92,19 @@ export function getAccountBridgeByFamily(family: string, accountId?: string): Ac
85
92
 
86
93
  if (type === "mock") {
87
94
  const mockBridge = mockBridges[family];
88
- if (mockBridge) return wrapAccountBridge(mockBridge.accountBridge);
95
+ // TODO Remove once we delete mock bridges tests
96
+ if (mockBridge) {
97
+ if (typeof mockBridge.loadCoinConfig === "function") {
98
+ mockBridge.loadCoinConfig();
99
+ }
100
+ return wrapAccountBridge(mockBridge.accountBridge);
101
+ }
89
102
  }
90
103
  }
91
104
 
92
105
  if (alpacaized[family]) {
93
106
  if (!bridgeCache[family]) {
94
- bridgeCache[family] = getAlpacaAccountBridge(family, "local");
107
+ bridgeCache[family] = wrapAccountBridge(getAlpacaAccountBridge(family, "local"));
95
108
  }
96
109
  return bridgeCache[family];
97
110
  }
@@ -1,5 +1,5 @@
1
1
  import "../__tests__/test-helpers/setup";
2
- import { isCryptoCurrency } from "./helpers";
2
+ import { isCryptoCurrency, getFamilyByCurrencyId } from "./helpers";
3
3
  import { listCryptoCurrencies } from ".";
4
4
 
5
5
  describe("Currencies helpers", () => {
@@ -10,4 +10,13 @@ describe("Currencies helpers", () => {
10
10
  expect(isCryptoCurrency(currency)).toBeTruthy();
11
11
  });
12
12
  });
13
+
14
+ test("getFamilyByCurrencyId returns correct family for a known currency id", () => {
15
+ expect(getFamilyByCurrencyId("bitcoin")).toBe("bitcoin");
16
+ expect(getFamilyByCurrencyId("ethereum")).toBe("evm");
17
+ });
18
+
19
+ test("getFamilyByCurrencyId returns undefined for an unknown currency id", () => {
20
+ expect(getFamilyByCurrencyId("unknown_currency_id")).toBeUndefined();
21
+ });
13
22
  });
@@ -1,4 +1,5 @@
1
1
  import { Currency, CryptoCurrency, TokenCurrency } from "@ledgerhq/types-cryptoassets";
2
+ import { findCryptoCurrencyById } from "@ledgerhq/cryptoassets";
2
3
 
3
4
  export function isCryptoCurrency(currency: Currency): currency is CryptoCurrency {
4
5
  return currency.type === "CryptoCurrency";
@@ -15,3 +16,8 @@ export function isUTXOCompliant(currencyFamily: string): boolean {
15
16
  export type CurrencyFilters = {
16
17
  currencies?: string[];
17
18
  };
19
+
20
+ export function getFamilyByCurrencyId(currencyId: string): CryptoCurrency["family"] | undefined {
21
+ const currency = findCryptoCurrencyById(currencyId);
22
+ return currency?.family;
23
+ }
@@ -1,11 +1,8 @@
1
1
  import { getParentAccount } from "@ledgerhq/coin-framework/account/helpers";
2
2
  import { Account } from "@ledgerhq/types-live";
3
3
 
4
- export const getTokensWithFunds = (accounts: Account[]): string[] => {
5
- if (!accounts?.length) return [];
6
-
7
- const tokensMap = new Map<string, { ticker: string; networkName: string }>();
8
-
4
+ export const getTokensWithFundsMap = (accounts: Account[]) => {
5
+ const tokensMap = new Map<string, { ticker: string; networkName: string; id: string }>();
9
6
  for (const account of accounts) {
10
7
  const { balance, currency } = account || {};
11
8
  if (!balance?.gt(0) || !currency) continue;
@@ -18,6 +15,7 @@ export const getTokensWithFunds = (accounts: Account[]): string[] => {
18
15
  tokensMap.set(mainKey, {
19
16
  ticker: currency.ticker,
20
17
  networkName,
18
+ id: currency.id,
21
19
  });
22
20
 
23
21
  account.subAccounts?.forEach(subAccount => {
@@ -28,9 +26,24 @@ export const getTokensWithFunds = (accounts: Account[]): string[] => {
28
26
  tokensMap.set(subKey, {
29
27
  ticker: token.ticker,
30
28
  networkName,
29
+ id: token.id,
31
30
  });
32
31
  });
33
32
  }
33
+ return tokensMap;
34
+ };
35
+ /** Format defaults to "USDT on Ethereum". format: "currencyId" returns the id of each token, e.g. "ethereum/erc20/usde". */
36
+ export const getTokensWithFunds = (
37
+ accounts: Account[],
38
+ customFormat: "currencyId" | "default" = "default",
39
+ ) => {
40
+ if (!accounts?.length) return [];
41
+
42
+ const tokensMap = getTokensWithFundsMap(accounts);
43
+
44
+ if (customFormat === "currencyId") {
45
+ return Array.from(tokensMap.values(), token => token.id);
46
+ }
34
47
 
35
48
  return Array.from(tokensMap.values(), ({ ticker, networkName }) => `${ticker} on ${networkName}`);
36
49
  };