@ledgerhq/live-common 34.52.0 → 34.53.0-nightly.20251108023448

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 (478) hide show
  1. package/lib/DataModel.d.ts +2 -2
  2. package/lib/DataModel.d.ts.map +1 -1
  3. package/lib/DataModel.js +2 -2
  4. package/lib/DataModel.js.map +1 -1
  5. package/lib/__tests__/test-helpers/bridge.d.ts.map +1 -1
  6. package/lib/__tests__/test-helpers/bridge.js +103 -47
  7. package/lib/__tests__/test-helpers/bridge.js.map +1 -1
  8. package/lib/__tests__/test-helpers/setup.d.ts.map +1 -1
  9. package/lib/__tests__/test-helpers/setup.js +6 -5
  10. package/lib/__tests__/test-helpers/setup.js.map +1 -1
  11. package/lib/account/serialization.d.ts +1 -1
  12. package/lib/account/serialization.d.ts.map +1 -1
  13. package/lib/account/serialization.js +2 -2
  14. package/lib/account/serialization.js.map +1 -1
  15. package/lib/api/ofacGeoBlockApi.d.ts +4 -0
  16. package/lib/api/ofacGeoBlockApi.d.ts.map +1 -0
  17. package/lib/api/ofacGeoBlockApi.js +21 -0
  18. package/lib/api/ofacGeoBlockApi.js.map +1 -0
  19. package/lib/apps/config.d.ts.map +1 -1
  20. package/lib/apps/config.js +1 -0
  21. package/lib/apps/config.js.map +1 -1
  22. package/lib/bot/engine.d.ts +5 -5
  23. package/lib/bot/engine.d.ts.map +1 -1
  24. package/lib/bot/engine.js.map +1 -1
  25. package/lib/bridge/crypto-assets/index.d.ts.map +1 -1
  26. package/lib/bridge/crypto-assets/index.js +2 -2
  27. package/lib/bridge/crypto-assets/index.js.map +1 -1
  28. package/lib/bridge/generic-alpaca/alpaca/network/network-alpaca.d.ts +2 -2
  29. package/lib/bridge/generic-alpaca/createTransaction.d.ts.map +1 -1
  30. package/lib/bridge/generic-alpaca/createTransaction.js +6 -1
  31. package/lib/bridge/generic-alpaca/createTransaction.js.map +1 -1
  32. package/lib/bridge/generic-alpaca/getTransactionStatus.d.ts.map +1 -1
  33. package/lib/bridge/generic-alpaca/getTransactionStatus.js +1 -0
  34. package/lib/bridge/generic-alpaca/getTransactionStatus.js.map +1 -1
  35. package/lib/bridge/generic-alpaca/prepareTransaction.d.ts +2 -2
  36. package/lib/bridge/generic-alpaca/prepareTransaction.d.ts.map +1 -1
  37. package/lib/bridge/generic-alpaca/prepareTransaction.js +30 -26
  38. package/lib/bridge/generic-alpaca/prepareTransaction.js.map +1 -1
  39. package/lib/bridge/generic-alpaca/signOperation.d.ts.map +1 -1
  40. package/lib/bridge/generic-alpaca/signOperation.js +6 -4
  41. package/lib/bridge/generic-alpaca/signOperation.js.map +1 -1
  42. package/lib/bridge/generic-alpaca/signer/Eth.d.ts +2 -1
  43. package/lib/bridge/generic-alpaca/signer/Eth.d.ts.map +1 -1
  44. package/lib/bridge/generic-alpaca/signer/Eth.js +2 -1
  45. package/lib/bridge/generic-alpaca/signer/Eth.js.map +1 -1
  46. package/lib/bridge/generic-alpaca/types.d.ts +61 -2
  47. package/lib/bridge/generic-alpaca/types.d.ts.map +1 -1
  48. package/lib/bridge/generic-alpaca/utils.d.ts +1 -1
  49. package/lib/bridge/generic-alpaca/utils.d.ts.map +1 -1
  50. package/lib/bridge/generic-alpaca/utils.js +121 -7
  51. package/lib/bridge/generic-alpaca/utils.js.map +1 -1
  52. package/lib/bridge/index.d.ts +1 -1
  53. package/lib/bridge/index.d.ts.map +1 -1
  54. package/lib/bridge/index.js +2 -2
  55. package/lib/bridge/index.js.map +1 -1
  56. package/lib/currencies/index.d.ts +1 -1
  57. package/lib/currencies/index.d.ts.map +1 -1
  58. package/lib/currencies/index.js +1 -4
  59. package/lib/currencies/index.js.map +1 -1
  60. package/lib/dada-client/__mocks__/assets.mock.d.ts +383 -0
  61. package/lib/dada-client/__mocks__/assets.mock.d.ts.map +1 -0
  62. package/lib/dada-client/__mocks__/assets.mock.js +260 -0
  63. package/lib/dada-client/__mocks__/assets.mock.js.map +1 -0
  64. package/lib/dada-client/hooks/useAssetsData.d.ts +2 -1
  65. package/lib/dada-client/hooks/useAssetsData.d.ts.map +1 -1
  66. package/lib/dada-client/hooks/useAssetsData.js +2 -2
  67. package/lib/dada-client/hooks/useAssetsData.js.map +1 -1
  68. package/lib/dada-client/hooks/useLazyLedgerCurrency.d.ts +13 -0
  69. package/lib/dada-client/hooks/useLazyLedgerCurrency.d.ts.map +1 -0
  70. package/lib/dada-client/hooks/useLazyLedgerCurrency.js +34 -0
  71. package/lib/dada-client/hooks/useLazyLedgerCurrency.js.map +1 -0
  72. package/lib/dada-client/index.d.ts +2 -0
  73. package/lib/dada-client/index.d.ts.map +1 -0
  74. package/lib/dada-client/index.js +18 -0
  75. package/lib/dada-client/index.js.map +1 -0
  76. package/lib/dada-client/state-manager/api.js +1 -1
  77. package/lib/dada-client/state-manager/api.js.map +1 -1
  78. package/lib/dada-client/utils/currencySelection.d.ts +10 -0
  79. package/lib/dada-client/utils/currencySelection.d.ts.map +1 -0
  80. package/lib/dada-client/utils/currencySelection.js +34 -0
  81. package/lib/dada-client/utils/currencySelection.js.map +1 -0
  82. package/lib/deposit/helper.d.ts +1 -1
  83. package/lib/deposit/helper.d.ts.map +1 -1
  84. package/lib/deposit/helper.js +3 -2
  85. package/lib/deposit/helper.js.map +1 -1
  86. package/lib/e2e/data/deviceLabelsData.d.ts.map +1 -1
  87. package/lib/e2e/data/deviceLabelsData.js +2 -1
  88. package/lib/e2e/data/deviceLabelsData.js.map +1 -1
  89. package/lib/e2e/enum/DeviceLabels.d.ts +5 -1
  90. package/lib/e2e/enum/DeviceLabels.d.ts.map +1 -1
  91. package/lib/e2e/enum/DeviceLabels.js +4 -0
  92. package/lib/e2e/enum/DeviceLabels.js.map +1 -1
  93. package/lib/e2e/index.d.ts +4 -8
  94. package/lib/e2e/index.d.ts.map +1 -1
  95. package/lib/e2e/speculos.d.ts +1 -1
  96. package/lib/e2e/speculos.d.ts.map +1 -1
  97. package/lib/e2e/speculos.js +24 -5
  98. package/lib/e2e/speculos.js.map +1 -1
  99. package/lib/e2e/speculosAppVersion.d.ts.map +1 -1
  100. package/lib/e2e/speculosAppVersion.js +1 -0
  101. package/lib/e2e/speculosAppVersion.js.map +1 -1
  102. package/lib/families/cosmos/datasets/coreum.d.ts.map +1 -1
  103. package/lib/families/cosmos/datasets/coreum.js +2 -1
  104. package/lib/families/cosmos/datasets/coreum.js.map +1 -1
  105. package/lib/families/near/config.d.ts.map +1 -1
  106. package/lib/families/near/config.js +1 -0
  107. package/lib/families/near/config.js.map +1 -1
  108. package/lib/families/solana/setup.d.ts +1 -1
  109. package/lib/families/tron/data.mock.d.ts +4 -4
  110. package/lib/families/tron/data.mock.d.ts.map +1 -1
  111. package/lib/families/tron/data.mock.js +27 -13
  112. package/lib/families/tron/data.mock.js.map +1 -1
  113. package/lib/featureFlags/defaultFeatures.d.ts.map +1 -1
  114. package/lib/featureFlags/defaultFeatures.js +3 -4
  115. package/lib/featureFlags/defaultFeatures.js.map +1 -1
  116. package/lib/featureFlags/stakePrograms/index.d.ts +1 -0
  117. package/lib/featureFlags/stakePrograms/index.d.ts.map +1 -1
  118. package/lib/featureFlags/stakePrograms/index.js +13 -1
  119. package/lib/featureFlags/stakePrograms/index.js.map +1 -1
  120. package/lib/featureFlags/useFeature.d.ts +1 -1
  121. package/lib/featureFlags/useFeature.d.ts.map +1 -1
  122. package/lib/generated/cli-transaction.d.ts +1 -1
  123. package/lib/generated/transaction.d.ts +1 -1
  124. package/lib/hw/actions/implementations.d.ts.map +1 -1
  125. package/lib/hw/actions/implementations.js +13 -7
  126. package/lib/hw/actions/implementations.js.map +1 -1
  127. package/lib/hw/connectAppEventMapper.d.ts.map +1 -1
  128. package/lib/hw/connectAppEventMapper.js +2 -2
  129. package/lib/hw/connectAppEventMapper.js.map +1 -1
  130. package/lib/market/hooks/useLargeMoverCurrencies.d.ts +1 -1
  131. package/lib/market/hooks/useMarketDataProvider.d.ts +2 -2
  132. package/lib/market/hooks/useMarketDataProvider.d.ts.map +1 -1
  133. package/lib/market/hooks/useMarketDataProvider.js +4 -7
  134. package/lib/market/hooks/useMarketDataProvider.js.map +1 -1
  135. package/lib/market/utils/currencyFormatter.d.ts +3 -4
  136. package/lib/market/utils/currencyFormatter.d.ts.map +1 -1
  137. package/lib/market/utils/currencyFormatter.js +3 -6
  138. package/lib/market/utils/currencyFormatter.js.map +1 -1
  139. package/lib/market/utils/queryKeys.d.ts +0 -1
  140. package/lib/market/utils/queryKeys.d.ts.map +1 -1
  141. package/lib/market/utils/queryKeys.js +0 -1
  142. package/lib/market/utils/queryKeys.js.map +1 -1
  143. package/lib/market/utils/types.d.ts +6 -8
  144. package/lib/market/utils/types.d.ts.map +1 -1
  145. package/lib/market/utils/types.js.map +1 -1
  146. package/lib/mock/fixtures/cryptoCurrencies.d.ts.map +1 -1
  147. package/lib/mock/fixtures/cryptoCurrencies.js +10 -1
  148. package/lib/mock/fixtures/cryptoCurrencies.js.map +1 -1
  149. package/lib/modularDrawer/__mocks__/currencies.mock.d.ts +1 -1
  150. package/lib/modularDrawer/__mocks__/currencies.mock.d.ts.map +1 -1
  151. package/lib/modularDrawer/__mocks__/currencies.mock.js +1 -1
  152. package/lib/modularDrawer/__mocks__/currencies.mock.js.map +1 -1
  153. package/lib/modularDrawer/utils/currencyUtils.d.ts +3 -3
  154. package/lib/modularDrawer/utils/currencyUtils.d.ts.map +1 -1
  155. package/lib/modularDrawer/utils/currencyUtils.js +8 -8
  156. package/lib/modularDrawer/utils/currencyUtils.js.map +1 -1
  157. package/lib/postOnboarding/hooks/usePostOnboardingHubState.d.ts.map +1 -1
  158. package/lib/postOnboarding/hooks/usePostOnboardingHubState.js +13 -4
  159. package/lib/postOnboarding/hooks/usePostOnboardingHubState.js.map +1 -1
  160. package/lib/postOnboarding/mock.d.ts +1 -0
  161. package/lib/postOnboarding/mock.d.ts.map +1 -1
  162. package/lib/postOnboarding/mock.js +3 -1
  163. package/lib/postOnboarding/mock.js.map +1 -1
  164. package/lib/postOnboarding/reducer.d.ts +16 -14
  165. package/lib/postOnboarding/reducer.d.ts.map +1 -1
  166. package/lib/transaction/index.d.ts +1 -1
  167. package/lib/transaction/index.d.ts.map +1 -1
  168. package/lib/transaction/index.js +2 -2
  169. package/lib/transaction/index.js.map +1 -1
  170. package/lib/utils/addressUtils.d.ts +15 -0
  171. package/lib/utils/addressUtils.d.ts.map +1 -0
  172. package/lib/utils/addressUtils.js +39 -0
  173. package/lib/utils/addressUtils.js.map +1 -0
  174. package/lib/wallet-api/ACRE/server.d.ts.map +1 -1
  175. package/lib/wallet-api/ACRE/server.js +19 -15
  176. package/lib/wallet-api/ACRE/server.js.map +1 -1
  177. package/lib/wallet-api/Exchange/server.d.ts.map +1 -1
  178. package/lib/wallet-api/Exchange/server.js +8 -5
  179. package/lib/wallet-api/Exchange/server.js.map +1 -1
  180. package/lib/wallet-api/logic.d.ts.map +1 -1
  181. package/lib/wallet-api/logic.js +29 -29
  182. package/lib/wallet-api/logic.js.map +1 -1
  183. package/lib/wallet-api/react.d.ts.map +1 -1
  184. package/lib/wallet-api/react.js +37 -29
  185. package/lib/wallet-api/react.js.map +1 -1
  186. package/lib/wallet-api/useDappLogic.d.ts.map +1 -1
  187. package/lib/wallet-api/useDappLogic.js +76 -60
  188. package/lib/wallet-api/useDappLogic.js.map +1 -1
  189. package/lib-es/DataModel.d.ts +2 -2
  190. package/lib-es/DataModel.d.ts.map +1 -1
  191. package/lib-es/DataModel.js +2 -2
  192. package/lib-es/DataModel.js.map +1 -1
  193. package/lib-es/__tests__/test-helpers/bridge.d.ts.map +1 -1
  194. package/lib-es/__tests__/test-helpers/bridge.js +103 -47
  195. package/lib-es/__tests__/test-helpers/bridge.js.map +1 -1
  196. package/lib-es/__tests__/test-helpers/setup.d.ts.map +1 -1
  197. package/lib-es/__tests__/test-helpers/setup.js +6 -5
  198. package/lib-es/__tests__/test-helpers/setup.js.map +1 -1
  199. package/lib-es/account/serialization.d.ts +1 -1
  200. package/lib-es/account/serialization.d.ts.map +1 -1
  201. package/lib-es/account/serialization.js +2 -2
  202. package/lib-es/account/serialization.js.map +1 -1
  203. package/lib-es/api/ofacGeoBlockApi.d.ts +4 -0
  204. package/lib-es/api/ofacGeoBlockApi.d.ts.map +1 -0
  205. package/lib-es/api/ofacGeoBlockApi.js +18 -0
  206. package/lib-es/api/ofacGeoBlockApi.js.map +1 -0
  207. package/lib-es/apps/config.d.ts.map +1 -1
  208. package/lib-es/apps/config.js +1 -0
  209. package/lib-es/apps/config.js.map +1 -1
  210. package/lib-es/bot/engine.d.ts +5 -5
  211. package/lib-es/bot/engine.d.ts.map +1 -1
  212. package/lib-es/bot/engine.js.map +1 -1
  213. package/lib-es/bridge/crypto-assets/index.d.ts.map +1 -1
  214. package/lib-es/bridge/crypto-assets/index.js +1 -1
  215. package/lib-es/bridge/crypto-assets/index.js.map +1 -1
  216. package/lib-es/bridge/generic-alpaca/alpaca/network/network-alpaca.d.ts +2 -2
  217. package/lib-es/bridge/generic-alpaca/createTransaction.d.ts.map +1 -1
  218. package/lib-es/bridge/generic-alpaca/createTransaction.js +6 -1
  219. package/lib-es/bridge/generic-alpaca/createTransaction.js.map +1 -1
  220. package/lib-es/bridge/generic-alpaca/getTransactionStatus.d.ts.map +1 -1
  221. package/lib-es/bridge/generic-alpaca/getTransactionStatus.js +1 -0
  222. package/lib-es/bridge/generic-alpaca/getTransactionStatus.js.map +1 -1
  223. package/lib-es/bridge/generic-alpaca/prepareTransaction.d.ts +2 -2
  224. package/lib-es/bridge/generic-alpaca/prepareTransaction.d.ts.map +1 -1
  225. package/lib-es/bridge/generic-alpaca/prepareTransaction.js +30 -26
  226. package/lib-es/bridge/generic-alpaca/prepareTransaction.js.map +1 -1
  227. package/lib-es/bridge/generic-alpaca/signOperation.d.ts.map +1 -1
  228. package/lib-es/bridge/generic-alpaca/signOperation.js +6 -4
  229. package/lib-es/bridge/generic-alpaca/signOperation.js.map +1 -1
  230. package/lib-es/bridge/generic-alpaca/signer/Eth.d.ts +2 -1
  231. package/lib-es/bridge/generic-alpaca/signer/Eth.d.ts.map +1 -1
  232. package/lib-es/bridge/generic-alpaca/signer/Eth.js +2 -1
  233. package/lib-es/bridge/generic-alpaca/signer/Eth.js.map +1 -1
  234. package/lib-es/bridge/generic-alpaca/types.d.ts +61 -2
  235. package/lib-es/bridge/generic-alpaca/types.d.ts.map +1 -1
  236. package/lib-es/bridge/generic-alpaca/utils.d.ts +1 -1
  237. package/lib-es/bridge/generic-alpaca/utils.d.ts.map +1 -1
  238. package/lib-es/bridge/generic-alpaca/utils.js +121 -7
  239. package/lib-es/bridge/generic-alpaca/utils.js.map +1 -1
  240. package/lib-es/bridge/index.d.ts +1 -1
  241. package/lib-es/bridge/index.d.ts.map +1 -1
  242. package/lib-es/bridge/index.js +2 -2
  243. package/lib-es/bridge/index.js.map +1 -1
  244. package/lib-es/currencies/index.d.ts +1 -1
  245. package/lib-es/currencies/index.d.ts.map +1 -1
  246. package/lib-es/currencies/index.js +1 -1
  247. package/lib-es/currencies/index.js.map +1 -1
  248. package/lib-es/dada-client/__mocks__/assets.mock.d.ts +383 -0
  249. package/lib-es/dada-client/__mocks__/assets.mock.d.ts.map +1 -0
  250. package/lib-es/dada-client/__mocks__/assets.mock.js +257 -0
  251. package/lib-es/dada-client/__mocks__/assets.mock.js.map +1 -0
  252. package/lib-es/dada-client/hooks/useAssetsData.d.ts +2 -1
  253. package/lib-es/dada-client/hooks/useAssetsData.d.ts.map +1 -1
  254. package/lib-es/dada-client/hooks/useAssetsData.js +2 -2
  255. package/lib-es/dada-client/hooks/useAssetsData.js.map +1 -1
  256. package/lib-es/dada-client/hooks/useLazyLedgerCurrency.d.ts +13 -0
  257. package/lib-es/dada-client/hooks/useLazyLedgerCurrency.d.ts.map +1 -0
  258. package/lib-es/dada-client/hooks/useLazyLedgerCurrency.js +27 -0
  259. package/lib-es/dada-client/hooks/useLazyLedgerCurrency.js.map +1 -0
  260. package/lib-es/dada-client/index.d.ts +2 -0
  261. package/lib-es/dada-client/index.d.ts.map +1 -0
  262. package/lib-es/dada-client/index.js +2 -0
  263. package/lib-es/dada-client/index.js.map +1 -0
  264. package/lib-es/dada-client/state-manager/api.js +1 -1
  265. package/lib-es/dada-client/state-manager/api.js.map +1 -1
  266. package/lib-es/dada-client/utils/currencySelection.d.ts +10 -0
  267. package/lib-es/dada-client/utils/currencySelection.d.ts.map +1 -0
  268. package/lib-es/dada-client/utils/currencySelection.js +30 -0
  269. package/lib-es/dada-client/utils/currencySelection.js.map +1 -0
  270. package/lib-es/deposit/helper.d.ts +1 -1
  271. package/lib-es/deposit/helper.d.ts.map +1 -1
  272. package/lib-es/deposit/helper.js +4 -3
  273. package/lib-es/deposit/helper.js.map +1 -1
  274. package/lib-es/e2e/data/deviceLabelsData.d.ts.map +1 -1
  275. package/lib-es/e2e/data/deviceLabelsData.js +2 -1
  276. package/lib-es/e2e/data/deviceLabelsData.js.map +1 -1
  277. package/lib-es/e2e/enum/DeviceLabels.d.ts +5 -1
  278. package/lib-es/e2e/enum/DeviceLabels.d.ts.map +1 -1
  279. package/lib-es/e2e/enum/DeviceLabels.js +4 -0
  280. package/lib-es/e2e/enum/DeviceLabels.js.map +1 -1
  281. package/lib-es/e2e/index.d.ts +4 -8
  282. package/lib-es/e2e/index.d.ts.map +1 -1
  283. package/lib-es/e2e/speculos.d.ts +1 -1
  284. package/lib-es/e2e/speculos.d.ts.map +1 -1
  285. package/lib-es/e2e/speculos.js +24 -5
  286. package/lib-es/e2e/speculos.js.map +1 -1
  287. package/lib-es/e2e/speculosAppVersion.d.ts.map +1 -1
  288. package/lib-es/e2e/speculosAppVersion.js +1 -0
  289. package/lib-es/e2e/speculosAppVersion.js.map +1 -1
  290. package/lib-es/families/cosmos/datasets/coreum.d.ts.map +1 -1
  291. package/lib-es/families/cosmos/datasets/coreum.js +2 -1
  292. package/lib-es/families/cosmos/datasets/coreum.js.map +1 -1
  293. package/lib-es/families/near/config.d.ts.map +1 -1
  294. package/lib-es/families/near/config.js +1 -0
  295. package/lib-es/families/near/config.js.map +1 -1
  296. package/lib-es/families/solana/setup.d.ts +1 -1
  297. package/lib-es/families/tron/data.mock.d.ts +4 -4
  298. package/lib-es/families/tron/data.mock.d.ts.map +1 -1
  299. package/lib-es/families/tron/data.mock.js +22 -12
  300. package/lib-es/families/tron/data.mock.js.map +1 -1
  301. package/lib-es/featureFlags/defaultFeatures.d.ts.map +1 -1
  302. package/lib-es/featureFlags/defaultFeatures.js +3 -4
  303. package/lib-es/featureFlags/defaultFeatures.js.map +1 -1
  304. package/lib-es/featureFlags/stakePrograms/index.d.ts +1 -0
  305. package/lib-es/featureFlags/stakePrograms/index.d.ts.map +1 -1
  306. package/lib-es/featureFlags/stakePrograms/index.js +11 -0
  307. package/lib-es/featureFlags/stakePrograms/index.js.map +1 -1
  308. package/lib-es/featureFlags/useFeature.d.ts +1 -1
  309. package/lib-es/featureFlags/useFeature.d.ts.map +1 -1
  310. package/lib-es/generated/cli-transaction.d.ts +1 -1
  311. package/lib-es/generated/transaction.d.ts +1 -1
  312. package/lib-es/hw/actions/implementations.d.ts.map +1 -1
  313. package/lib-es/hw/actions/implementations.js +15 -9
  314. package/lib-es/hw/actions/implementations.js.map +1 -1
  315. package/lib-es/hw/connectAppEventMapper.d.ts.map +1 -1
  316. package/lib-es/hw/connectAppEventMapper.js +3 -3
  317. package/lib-es/hw/connectAppEventMapper.js.map +1 -1
  318. package/lib-es/market/hooks/useLargeMoverCurrencies.d.ts +1 -1
  319. package/lib-es/market/hooks/useMarketDataProvider.d.ts +2 -2
  320. package/lib-es/market/hooks/useMarketDataProvider.d.ts.map +1 -1
  321. package/lib-es/market/hooks/useMarketDataProvider.js +2 -5
  322. package/lib-es/market/hooks/useMarketDataProvider.js.map +1 -1
  323. package/lib-es/market/utils/currencyFormatter.d.ts +3 -4
  324. package/lib-es/market/utils/currencyFormatter.d.ts.map +1 -1
  325. package/lib-es/market/utils/currencyFormatter.js +3 -6
  326. package/lib-es/market/utils/currencyFormatter.js.map +1 -1
  327. package/lib-es/market/utils/queryKeys.d.ts +0 -1
  328. package/lib-es/market/utils/queryKeys.d.ts.map +1 -1
  329. package/lib-es/market/utils/queryKeys.js +0 -1
  330. package/lib-es/market/utils/queryKeys.js.map +1 -1
  331. package/lib-es/market/utils/types.d.ts +6 -8
  332. package/lib-es/market/utils/types.d.ts.map +1 -1
  333. package/lib-es/market/utils/types.js.map +1 -1
  334. package/lib-es/mock/fixtures/cryptoCurrencies.d.ts.map +1 -1
  335. package/lib-es/mock/fixtures/cryptoCurrencies.js +11 -2
  336. package/lib-es/mock/fixtures/cryptoCurrencies.js.map +1 -1
  337. package/lib-es/modularDrawer/__mocks__/currencies.mock.d.ts +1 -1
  338. package/lib-es/modularDrawer/__mocks__/currencies.mock.d.ts.map +1 -1
  339. package/lib-es/modularDrawer/__mocks__/currencies.mock.js +1 -1
  340. package/lib-es/modularDrawer/__mocks__/currencies.mock.js.map +1 -1
  341. package/lib-es/modularDrawer/utils/currencyUtils.d.ts +3 -3
  342. package/lib-es/modularDrawer/utils/currencyUtils.d.ts.map +1 -1
  343. package/lib-es/modularDrawer/utils/currencyUtils.js +8 -8
  344. package/lib-es/modularDrawer/utils/currencyUtils.js.map +1 -1
  345. package/lib-es/postOnboarding/hooks/usePostOnboardingHubState.d.ts.map +1 -1
  346. package/lib-es/postOnboarding/hooks/usePostOnboardingHubState.js +13 -4
  347. package/lib-es/postOnboarding/hooks/usePostOnboardingHubState.js.map +1 -1
  348. package/lib-es/postOnboarding/mock.d.ts +1 -0
  349. package/lib-es/postOnboarding/mock.d.ts.map +1 -1
  350. package/lib-es/postOnboarding/mock.js +2 -0
  351. package/lib-es/postOnboarding/mock.js.map +1 -1
  352. package/lib-es/postOnboarding/reducer.d.ts +16 -14
  353. package/lib-es/postOnboarding/reducer.d.ts.map +1 -1
  354. package/lib-es/transaction/index.d.ts +1 -1
  355. package/lib-es/transaction/index.d.ts.map +1 -1
  356. package/lib-es/transaction/index.js +2 -2
  357. package/lib-es/transaction/index.js.map +1 -1
  358. package/lib-es/utils/addressUtils.d.ts +15 -0
  359. package/lib-es/utils/addressUtils.d.ts.map +1 -0
  360. package/lib-es/utils/addressUtils.js +35 -0
  361. package/lib-es/utils/addressUtils.js.map +1 -0
  362. package/lib-es/wallet-api/ACRE/server.d.ts.map +1 -1
  363. package/lib-es/wallet-api/ACRE/server.js +19 -15
  364. package/lib-es/wallet-api/ACRE/server.js.map +1 -1
  365. package/lib-es/wallet-api/Exchange/server.d.ts.map +1 -1
  366. package/lib-es/wallet-api/Exchange/server.js +9 -6
  367. package/lib-es/wallet-api/Exchange/server.js.map +1 -1
  368. package/lib-es/wallet-api/logic.d.ts.map +1 -1
  369. package/lib-es/wallet-api/logic.js +26 -26
  370. package/lib-es/wallet-api/logic.js.map +1 -1
  371. package/lib-es/wallet-api/react.d.ts.map +1 -1
  372. package/lib-es/wallet-api/react.js +38 -30
  373. package/lib-es/wallet-api/react.js.map +1 -1
  374. package/lib-es/wallet-api/useDappLogic.d.ts.map +1 -1
  375. package/lib-es/wallet-api/useDappLogic.js +74 -58
  376. package/lib-es/wallet-api/useDappLogic.js.map +1 -1
  377. package/package.json +51 -47
  378. package/src/DataModel.test.ts +74 -24
  379. package/src/DataModel.ts +4 -4
  380. package/src/__tests__/accounts/groupPerDay.ts +182 -177
  381. package/src/__tests__/csvExport.ts +3 -0
  382. package/src/__tests__/migration/account-migration.ts +2 -2
  383. package/src/__tests__/test-helpers/bridge.ts +426 -358
  384. package/src/__tests__/test-helpers/setup.ts +7 -6
  385. package/src/account/serialization.test.ts +6 -6
  386. package/src/account/serialization.ts +2 -2
  387. package/src/api/ofacGeoBlockApi.ts +19 -0
  388. package/src/apps/config.ts +1 -0
  389. package/src/bot/engine.ts +5 -5
  390. package/src/bridge/cache.test.ts +2 -0
  391. package/src/bridge/crypto-assets/index.test.ts +3 -9
  392. package/src/bridge/crypto-assets/index.ts +1 -1
  393. package/src/bridge/generic-alpaca/alpaca/network/network-alpaca.ts +3 -3
  394. package/src/bridge/generic-alpaca/createTransaction.ts +6 -1
  395. package/src/bridge/generic-alpaca/getTransactionStatus.ts +1 -0
  396. package/src/bridge/generic-alpaca/prepareTransaction.ts +36 -41
  397. package/src/bridge/generic-alpaca/signOperation.ts +10 -4
  398. package/src/bridge/generic-alpaca/signer/Eth.ts +4 -2
  399. package/src/bridge/generic-alpaca/tests/prepareTransaction.test.ts +29 -76
  400. package/src/bridge/generic-alpaca/tests/signOperation.test.ts +10 -2
  401. package/src/bridge/generic-alpaca/types.ts +80 -2
  402. package/src/bridge/generic-alpaca/utils.test.ts +58 -2
  403. package/src/bridge/generic-alpaca/utils.ts +151 -10
  404. package/src/bridge/index.ts +2 -2
  405. package/src/bridge/useBridgeTransaction.test.ts +9 -6
  406. package/src/currencies/cryptoIcons.test.ts +10 -5
  407. package/src/currencies/index.ts +0 -3
  408. package/src/currencies/sortByMarketcap.test.ts +4 -1
  409. package/src/dada-client/README.md +38 -0
  410. package/src/dada-client/__mocks__/assets.mock.ts +264 -0
  411. package/src/dada-client/hooks/__tests__/useLazyLedgerCurrency.test.ts +155 -0
  412. package/src/dada-client/hooks/useAssetsData.ts +14 -9
  413. package/src/dada-client/hooks/useLazyLedgerCurrency.ts +46 -0
  414. package/src/dada-client/index.ts +1 -0
  415. package/src/dada-client/state-manager/api.ts +1 -1
  416. package/src/dada-client/utils/__test__/currencySelection.test.ts +16 -0
  417. package/src/dada-client/utils/currencySelection.ts +33 -0
  418. package/src/deposit/deposit.integration.test.ts +15 -0
  419. package/src/deposit/deposit.test.ts +60 -40
  420. package/src/deposit/helper.ts +4 -8
  421. package/src/domain/getTokensWithFunds.test.ts +4 -0
  422. package/src/e2e/data/deviceLabelsData.ts +2 -1
  423. package/src/e2e/enum/DeviceLabels.ts +4 -0
  424. package/src/e2e/speculos.ts +26 -6
  425. package/src/e2e/speculosAppVersion.ts +1 -0
  426. package/src/families/aptos/__snapshots__/bridge.integration.test.ts.snap +12 -12
  427. package/src/families/bitcoin/__snapshots__/bridge.integration.test.ts.snap +1482 -843
  428. package/src/families/bitcoin/satstack.test.ts +33 -20
  429. package/src/families/cosmos/datasets/__snapshots__/babylon.integration.test.ts.snap +1 -1
  430. package/src/families/cosmos/datasets/__snapshots__/coreum.integration.test.ts.snap +4 -4
  431. package/src/families/cosmos/datasets/__snapshots__/cosmos.integration.test.ts.snap +251 -209
  432. package/src/families/cosmos/datasets/coreum.ts +2 -1
  433. package/src/families/hedera/__snapshots__/bridge.integration.test.ts.snap +675 -37
  434. package/src/families/multiversx/__snapshots__/bridge.integration.test.ts.snap +3 -3
  435. package/src/families/near/config.ts +1 -0
  436. package/src/families/polkadot/__snapshots__/bridge.integration.test.ts.snap +34 -34
  437. package/src/families/solana/__snapshots__/bridge.integration.test.ts.snap +3 -3
  438. package/src/families/stacks/__snapshots__/bridge.integration.test.ts.snap +10 -10
  439. package/src/families/stellar/__snapshots__/bridge.integration.test.ts.snap +1183 -625
  440. package/src/families/sui/__snapshots__/bridge.integration.test.ts.snap +428 -0
  441. package/src/families/tron/data.mock.ts +32 -16
  442. package/src/families/tron/react.test.ts +16 -4
  443. package/src/featureFlags/defaultFeatures.ts +3 -4
  444. package/src/featureFlags/stakePrograms/index.ts +14 -0
  445. package/src/hw/actions/implementations.ts +22 -11
  446. package/src/hw/connectAppEventMapper.ts +2 -4
  447. package/src/market/hooks/useMarketDataProvider.ts +4 -8
  448. package/src/market/utils/currencyFormatter.ts +4 -18
  449. package/src/market/utils/queryKeys.ts +0 -1
  450. package/src/market/utils/types.ts +6 -8
  451. package/src/mock/fixtures/cryptoCurrencies.ts +11 -2
  452. package/src/modularDrawer/__mocks__/currencies.mock.ts +1 -1
  453. package/src/modularDrawer/utils/__tests__/currencyUtils.test.ts +10 -10
  454. package/src/modularDrawer/utils/currencyUtils.ts +11 -10
  455. package/src/platform/serializers.test.ts +2 -2
  456. package/src/postOnboarding/hooks/usePostOnboardingHubState.test.ts +30 -3
  457. package/src/postOnboarding/hooks/usePostOnboardingHubState.ts +20 -6
  458. package/src/postOnboarding/mock.ts +2 -0
  459. package/src/transaction/index.ts +2 -2
  460. package/src/utils/__tests__/addressUtils.test.ts +229 -0
  461. package/src/utils/__tests__/getAccountTuplesForCurrency.test.ts +15 -4
  462. package/src/utils/addressUtils.ts +40 -0
  463. package/src/wallet-api/ACRE/server.test.ts +11 -8
  464. package/src/wallet-api/ACRE/server.ts +25 -22
  465. package/src/wallet-api/Exchange/server.ts +11 -8
  466. package/src/wallet-api/logic.test.ts +4 -0
  467. package/src/wallet-api/logic.ts +28 -32
  468. package/src/wallet-api/react.ts +37 -34
  469. package/src/wallet-api/useDappLogic.ts +103 -82
  470. package/lib/hooks/useOFACGeoBlockCheck.d.ts +0 -8
  471. package/lib/hooks/useOFACGeoBlockCheck.d.ts.map +0 -1
  472. package/lib/hooks/useOFACGeoBlockCheck.js +0 -32
  473. package/lib/hooks/useOFACGeoBlockCheck.js.map +0 -1
  474. package/lib-es/hooks/useOFACGeoBlockCheck.d.ts +0 -8
  475. package/lib-es/hooks/useOFACGeoBlockCheck.d.ts.map +0 -1
  476. package/lib-es/hooks/useOFACGeoBlockCheck.js +0 -28
  477. package/lib-es/hooks/useOFACGeoBlockCheck.js.map +0 -1
  478. package/src/hooks/useOFACGeoBlockCheck.ts +0 -37
@@ -1,8 +1,12 @@
1
1
  import { setCryptoAssetsStore as setCryptoAssetsStoreForCoinFramework } from "@ledgerhq/coin-framework/crypto-assets/index";
2
- import type { CryptoAssetsStore } from "@ledgerhq/types-live";
2
+ import { legacyCryptoAssetsStore } from "@ledgerhq/cryptoassets/legacy/legacy-store";
3
+ import { initializeLegacyTokens } from "@ledgerhq/cryptoassets/legacy/legacy-data";
4
+ import { addTokens } from "@ledgerhq/cryptoassets/legacy/legacy-utils";
3
5
  import "./environment";
4
6
  import BigNumber from "bignumber.js";
5
7
 
8
+ initializeLegacyTokens(addTokens);
9
+
6
10
  jest.setTimeout(360000);
7
11
 
8
12
  expect.extend({
@@ -14,8 +18,5 @@ expect.extend({
14
18
  },
15
19
  });
16
20
 
17
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
18
- setCryptoAssetsStoreForCoinFramework({
19
- findTokenById: (_: string) => undefined,
20
- findTokenByAddressInCurrency: (_: string, __: string) => undefined,
21
- } as CryptoAssetsStore);
21
+ // Use legacyCryptoAssetsStore for integration tests so tokens can be found
22
+ setCryptoAssetsStoreForCoinFramework(legacyCryptoAssetsStore);
@@ -18,19 +18,19 @@ const USDC = solanaSplTokenData as TokenCurrency;
18
18
 
19
19
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
20
20
  setCryptoAssetsStoreForCoinFramework({
21
- findTokenById: (id: string) => {
21
+ findTokenById: async (id: string) => {
22
22
  if (id === "solana/spl/epjfwdd5aufqssqem2qn1xzybapc8g4weggkzwytdt1v") {
23
23
  return USDC;
24
24
  }
25
25
 
26
26
  return undefined;
27
27
  },
28
- findTokenByAddressInCurrency: (_: string, __: string) => undefined,
29
- getTokensSyncHash: (_: string) => Promise.resolve("0"),
30
- } as CryptoAssetsStore);
28
+ findTokenByAddressInCurrency: async (_: string, __: string) => undefined,
29
+ getTokensSyncHash: async (_: string) => "0",
30
+ } as unknown as CryptoAssetsStore);
31
31
 
32
32
  describe("serialization", () => {
33
- test("TokenAccount extra fields should be serialized/deserialized", () => {
33
+ test("TokenAccount extra fields should be serialized/deserialized", async () => {
34
34
  const acc: any = genAccount("mocked-account-1", { currency: Solana });
35
35
  const tokenAcc: any = genTokenAccount(1, acc, USDC);
36
36
  tokenAcc.state = "initialized";
@@ -39,7 +39,7 @@ describe("serialization", () => {
39
39
  const accRaw: any = toAccountRaw(acc);
40
40
  expect(accRaw.subAccounts?.[0]?.state).toBe("initialized");
41
41
 
42
- const deserializedAcc: any = fromAccountRaw(accRaw);
42
+ const deserializedAcc: any = await fromAccountRaw(accRaw);
43
43
  expect(deserializedAcc.subAccounts?.[0]?.state).toBe("initialized");
44
44
  });
45
45
  });
@@ -62,11 +62,11 @@ export const fromOperationRaw = (
62
62
  return commonFromOperationRaw(operationRaw, accountId, subAccounts, fromOperationRaw);
63
63
  };
64
64
 
65
- export function fromAccountRaw(rawAccount: AccountRaw): Account {
65
+ export async function fromAccountRaw(rawAccount: AccountRaw): Promise<Account> {
66
66
  const currency = getCryptoCurrencyById(rawAccount.currencyId);
67
67
  const bridge = getAccountBridgeByFamily(currency.family, rawAccount.id);
68
68
 
69
- return commonFromAccountRaw(rawAccount, {
69
+ return await commonFromAccountRaw(rawAccount, {
70
70
  assignFromAccountRaw: bridge.assignFromAccountRaw,
71
71
  assignFromTokenAccountRaw: bridge.assignFromTokenAccountRaw,
72
72
  fromOperationExtraRaw: bridge.fromOperationExtraRaw,
@@ -0,0 +1,19 @@
1
+ import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
2
+ import { getEnv } from "@ledgerhq/live-env";
3
+
4
+ export const ofacGeoBlockApi = createApi({
5
+ reducerPath: "ofacGeoBlockApi",
6
+ baseQuery: fetchBaseQuery({
7
+ baseUrl: getEnv("LEDGER_COUNTERVALUES_API"),
8
+ validateStatus: response => [200, 451].includes(response.status), // Treat both 200 (not blocked) and 451 (blocked) as successful responses
9
+ }),
10
+
11
+ endpoints: build => ({
12
+ check: build.query<boolean, void>({
13
+ query: () => ({
14
+ url: "/v3/markets",
15
+ }),
16
+ transformResponse: (response: unknown, meta) => meta?.response?.status === 451,
17
+ }),
18
+ }),
19
+ });
@@ -42,6 +42,7 @@ const appConfig: Record<string, ConfigInfo> = {
42
42
  type: "object",
43
43
  default: {
44
44
  minVersion: "1.5.0",
45
+ nanosMinVersion: "1.3.2",
45
46
  },
46
47
  },
47
48
  config_nanoapp_cardano_ada: {
package/src/bot/engine.ts CHANGED
@@ -50,7 +50,7 @@ import type {
50
50
  SignOperationEvent,
51
51
  TransactionCommon,
52
52
  } from "@ledgerhq/types-live";
53
- import type { Transaction, TransactionStatus } from "../generated/types";
53
+ import type { TransactionStatus } from "../generated/types";
54
54
  import { botTest } from "@ledgerhq/coin-framework/bot/bot-test-context";
55
55
  import { getDefaultAccountNameForCurrencyIndex } from "@ledgerhq/live-wallet/accountName";
56
56
 
@@ -70,7 +70,7 @@ const cache = makeBridgeCacheSystem({
70
70
  const defaultScanAccountsRetries = 2;
71
71
  const delayBetweenScanAccountRetries = 5000;
72
72
 
73
- export async function runWithAppSpec<T extends Transaction>(
73
+ export async function runWithAppSpec<T extends TransactionCommon>(
74
74
  spec: AppSpec<T>,
75
75
  reportLog: (arg0: string) => void,
76
76
  ): Promise<SpecReport<T>> {
@@ -276,7 +276,7 @@ export async function runWithAppSpec<T extends Transaction>(
276
276
  }
277
277
  }
278
278
  // eslint-disable-next-line no-console
279
- console.log(formatReportForConsole(report));
279
+ console.log(formatReportForConsole(report as any));
280
280
  mutationReports.push(report);
281
281
  appReport.mutations = mutationReports;
282
282
 
@@ -343,7 +343,7 @@ export async function runWithAppSpec<T extends Transaction>(
343
343
 
344
344
  return appReport;
345
345
  }
346
- export async function runOnAccount<T extends Transaction>({
346
+ export async function runOnAccount<T extends TransactionCommon>({
347
347
  appCandidate,
348
348
  spec,
349
349
  device,
@@ -761,7 +761,7 @@ async function syncAccount(initialAccount: Account): Promise<Account> {
761
761
  return deepFreezeAccount(acc);
762
762
  }
763
763
 
764
- export function autoSignTransaction<T extends Transaction>({
764
+ export function autoSignTransaction<T extends TransactionCommon>({
765
765
  transport,
766
766
  deviceAction,
767
767
  appCandidate,
@@ -10,10 +10,12 @@ describe("Bridge Cache", () => {
10
10
 
11
11
  beforeAll(() => {
12
12
  setEnv("MOCK", "1");
13
+ setEnv("PLAYWRIGHT_RUN", true);
13
14
  });
14
15
 
15
16
  afterAll(() => {
16
17
  setEnv("MOCK", "");
18
+ setEnv("PLAYWRIGHT_RUN", false);
17
19
  });
18
20
 
19
21
  it("does not re-generate the LRU cache by default", async () => {
@@ -1,6 +1,6 @@
1
1
  import { LiveConfig } from "@ledgerhq/live-config/LiveConfig";
2
2
  import { getCryptoAssetsStore, setCryptoAssetsStore } from ".";
3
- import { legacyCryptoAssetsStore } from "@ledgerhq/cryptoassets/tokens";
3
+ import { legacyCryptoAssetsStore } from "@ledgerhq/cryptoassets/legacy/legacy-store";
4
4
  import type { CryptoAssetsStore } from "@ledgerhq/types-live";
5
5
 
6
6
  describe("Testing CryptoAssetStore", () => {
@@ -13,10 +13,7 @@ describe("Testing CryptoAssetStore", () => {
13
13
  });
14
14
 
15
15
  const store = getCryptoAssetsStore();
16
- expect(store.findTokenById).toBe(legacyCryptoAssetsStore.findTokenById);
17
- expect(store.findTokenByAddressInCurrency).toBe(
18
- legacyCryptoAssetsStore.findTokenByAddressInCurrency,
19
- );
16
+ expect(store).toBe(legacyCryptoAssetsStore);
20
17
  });
21
18
 
22
19
  it("should return the default methods from cryptoassets libs when feature flag is disabled", () => {
@@ -28,10 +25,7 @@ describe("Testing CryptoAssetStore", () => {
28
25
  });
29
26
 
30
27
  const store = getCryptoAssetsStore();
31
- expect(store.findTokenById).toBe(legacyCryptoAssetsStore.findTokenById);
32
- expect(store.findTokenByAddressInCurrency).toBe(
33
- legacyCryptoAssetsStore.findTokenByAddressInCurrency,
34
- );
28
+ expect(store).toBe(legacyCryptoAssetsStore);
35
29
  });
36
30
 
37
31
  it("should throw an error when no store is set and feature flag is enabled", () => {
@@ -1,6 +1,6 @@
1
1
  import { LiveConfig } from "@ledgerhq/live-config/LiveConfig";
2
- import { legacyCryptoAssetsStore } from "@ledgerhq/cryptoassets/tokens";
3
2
  import type { CryptoAssetsStore } from "@ledgerhq/types-live";
3
+ import { legacyCryptoAssetsStore } from "@ledgerhq/cryptoassets/legacy/legacy-store";
4
4
 
5
5
  let cryptoAssetsStore: CryptoAssetsStore | undefined = undefined;
6
6
 
@@ -124,8 +124,8 @@ const buildGetBalance = (networkFamily: string) =>
124
124
  };
125
125
 
126
126
  const buildGetSequence = (networkFamily: string) =>
127
- async function getSequence(address: string): Promise<number> {
128
- const { data } = await network<number, unknown>({
127
+ async function getSequence(address: string): Promise<bigint> {
128
+ const { data } = await network<bigint, unknown>({
129
129
  method: "GET",
130
130
  url: `${ALPACA_URL}/${networkFamily}/account/${address}/info`,
131
131
  });
@@ -191,7 +191,7 @@ export const getNetworkAlpacaApi = (networkFamily: string) =>
191
191
  _transaction: string,
192
192
  _sender: string,
193
193
  _publicKey: string,
194
- _sequence: number,
194
+ _sequence: bigint,
195
195
  ): Promise<CraftedTransaction> => {
196
196
  throw new Error("craftRawTransaction is not supported");
197
197
  },
@@ -43,12 +43,17 @@ export function createTransaction(account: Account | TokenAccount): GenericTrans
43
43
  };
44
44
  case "evm": {
45
45
  return {
46
- mode: "send-eip1559",
46
+ mode: "send",
47
+ type: 2,
47
48
  family: currency.family,
48
49
  amount: new BigNumber(0),
49
50
  recipient: "",
50
51
  useAllAmount: false,
51
52
  feesStrategy: "medium",
53
+ chainId: currency.ethereumLikeInfo?.chainId ?? 0,
54
+ gasLimit: new BigNumber(21000),
55
+ maxFeePerGas: new BigNumber(0),
56
+ maxPriorityFeePerGas: new BigNumber(0),
52
57
  };
53
58
  }
54
59
  default:
@@ -25,6 +25,7 @@ export function genericGetTransactionStatus(
25
25
  family: transaction.family,
26
26
  feesStrategy: transaction.feesStrategy,
27
27
  data: transaction.data,
28
+ type: transaction.type,
28
29
  };
29
30
 
30
31
  if (alpacaApi.getChainSpecificRules) {
@@ -2,7 +2,7 @@ import { Account, AccountBridge } from "@ledgerhq/types-live";
2
2
  import { getAlpacaApi } from "./alpaca";
3
3
  import { transactionToIntent } from "./utils";
4
4
  import BigNumber from "bignumber.js";
5
- import { AssetInfo } from "@ledgerhq/coin-framework/api/types";
5
+ import { AssetInfo, FeeEstimation } from "@ledgerhq/coin-framework/api/types";
6
6
  import { decodeTokenAccountId } from "@ledgerhq/coin-framework/account/index";
7
7
  import { TokenCurrency } from "@ledgerhq/types-cryptoassets";
8
8
  import { GenericTransaction } from "./types";
@@ -21,6 +21,23 @@ function assetInfosFallback(transaction: GenericTransaction): {
21
21
  };
22
22
  }
23
23
 
24
+ function propagateField(estimation: FeeEstimation, field: string, dest: GenericTransaction): void {
25
+ const value = estimation?.parameters?.[field];
26
+
27
+ if (typeof value !== "bigint" && typeof value !== "number" && typeof value !== "string") return;
28
+
29
+ switch (field) {
30
+ case "type":
31
+ dest[field] = Number(value.toString());
32
+ return;
33
+ case "storageLimit":
34
+ dest[field] = new BigNumber(value.toString());
35
+ return;
36
+ default:
37
+ return;
38
+ }
39
+ }
40
+
24
41
  export function genericPrepareTransaction(
25
42
  network: string,
26
43
  kind,
@@ -31,13 +48,12 @@ export function genericPrepareTransaction(
31
48
  kind,
32
49
  );
33
50
  const { assetReference, assetOwner } = getAssetFromToken
34
- ? getAssetInfos(transaction, account.freshAddress, getAssetFromToken)
51
+ ? await getAssetInfos(transaction, account.freshAddress, getAssetFromToken)
35
52
  : assetInfosFallback(transaction);
36
53
  const customParametersFees = transaction.customFees?.parameters?.fees;
37
- let fees: BigNumber | bigint | null = customParametersFees || null;
38
- if (fees === null) {
39
- fees = (
40
- await estimateFees(
54
+ const estimation: FeeEstimation = customParametersFees
55
+ ? { value: BigInt(customParametersFees.toFixed()) }
56
+ : await estimateFees(
41
57
  transactionToIntent(
42
58
  account,
43
59
  {
@@ -45,14 +61,13 @@ export function genericPrepareTransaction(
45
61
  },
46
62
  computeIntentType,
47
63
  ),
48
- )
49
- ).value;
50
- }
64
+ );
65
+ const fees = new BigNumber(estimation.value.toString());
51
66
 
52
- if (!bnEq(transaction.fees, new BigNumber(fees.toString()))) {
67
+ if (!bnEq(transaction.fees, fees)) {
53
68
  const next: GenericTransaction = {
54
69
  ...transaction,
55
- fees: new BigNumber(fees.toString()),
70
+ fees,
56
71
  assetReference,
57
72
  assetOwner,
58
73
  customFees: {
@@ -62,35 +77,15 @@ export function genericPrepareTransaction(
62
77
  },
63
78
  };
64
79
 
65
- // propagate storageLimit fee parameter when present (ex: tezos)
66
- const feeEstimation = await estimateFees(
67
- transactionToIntent(
68
- account,
69
- {
70
- ...transaction,
71
- },
72
- computeIntentType,
73
- ),
74
- );
75
- const params = feeEstimation?.parameters;
76
- if (params) {
77
- const storageLimit = params["storageLimit"];
78
- if (
79
- storageLimit !== undefined &&
80
- (typeof storageLimit === "bigint" ||
81
- typeof storageLimit === "number" ||
82
- typeof storageLimit === "string")
83
- ) {
84
- next.storageLimit = new BigNumber(storageLimit.toString());
85
- }
80
+ // Propagate needed fields
81
+ const fieldsToPropagate = ["type", "storageLimit"];
82
+
83
+ for (const field of fieldsToPropagate) {
84
+ propagateField(estimation, field, next);
86
85
  }
87
86
 
88
87
  // align with stellar/xrp: when send max (or staking intents), reflect validated amount in UI
89
- if (
90
- transaction.useAllAmount ||
91
- transaction["mode"] === "stake" ||
92
- transaction["mode"] === "unstake"
93
- ) {
88
+ if (transaction.useAllAmount || ["stake", "unstake"].includes(transaction.mode ?? "")) {
94
89
  const { amount } = await validateIntent(
95
90
  transactionToIntent(
96
91
  account,
@@ -109,16 +104,16 @@ export function genericPrepareTransaction(
109
104
  };
110
105
  }
111
106
 
112
- export function getAssetInfos(
107
+ export async function getAssetInfos(
113
108
  tr: GenericTransaction,
114
109
  owner: string,
115
110
  getAssetFromToken: (token: TokenCurrency, owner: string) => AssetInfo,
116
- ): {
111
+ ): Promise<{
117
112
  assetReference: string;
118
113
  assetOwner: string;
119
- } {
114
+ }> {
120
115
  if (tr.subAccountId) {
121
- const { token } = decodeTokenAccountId(tr.subAccountId);
116
+ const { token } = await decodeTokenAccountId(tr.subAccountId);
122
117
 
123
118
  if (!token) return assetInfosFallback(tr);
124
119
 
@@ -119,9 +119,11 @@ export const genericSignOperation =
119
119
  // Enrich with memo and asset information
120
120
  transactionIntent = enrichTransactionIntent(transactionIntent, transaction, publicKey);
121
121
 
122
- // TODO: should compute it and pass it down to craftTransaction (duplicate call right now)
123
- const sequenceNumber = await alpacaApi.getSequence(transactionIntent.sender);
124
- transactionIntent.sequence = sequenceNumber;
122
+ if (typeof transactionIntent.sequence !== "bigint") {
123
+ // TODO: should compute it and pass it down to craftTransaction (duplicate call right now)
124
+ const sequenceNumber = await alpacaApi.getSequence(transactionIntent.sender);
125
+ transactionIntent.sequence = sequenceNumber;
126
+ }
125
127
 
126
128
  /* Craft unsigned blob via Alpaca */
127
129
  const { transaction: unsigned } = await alpacaApi.craftTransaction(transactionIntent, {
@@ -131,7 +133,11 @@ export const genericSignOperation =
131
133
  /* Notify UI that the device is now showing the tx */
132
134
  o.next({ type: "device-signature-requested" });
133
135
  /* Sign on Ledger device */
134
- const txnSig = await signer.signTransaction(derivationPath, unsigned);
136
+ const txnSig = await signer.signTransaction(
137
+ derivationPath,
138
+ unsigned,
139
+ transaction.recipientDomain,
140
+ );
135
141
  return { unsigned, txnSig, publicKey, sequence: transactionIntent.sequence };
136
142
  });
137
143
 
@@ -7,10 +7,11 @@ import Transport from "@ledgerhq/hw-transport";
7
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
+ import type { DomainServiceResolution } from "@ledgerhq/types-live";
10
11
 
11
12
  export type Signer = {
12
13
  getAddress: (path: string) => Promise<EvmAddress>;
13
- signTransaction: (path: string, tx: string) => Promise<string>;
14
+ signTransaction: (path: string, tx: string, domain?: DomainServiceResolution) => Promise<string>;
14
15
  };
15
16
 
16
17
  const isDmkTransport = (
@@ -37,13 +38,14 @@ export const createSigner: CreateSigner<Signer> = (transport: Transport) => {
37
38
 
38
39
  return {
39
40
  getAddress: signer.getAddress.bind(signer),
40
- signTransaction: async (path, tx) => {
41
+ signTransaction: async (path, tx, domain) => {
41
42
  // Configure type of resolutions necessary for the clear signing
42
43
  const resolutionConfig: ResolutionConfig = {
43
44
  externalPlugins: true,
44
45
  erc20: true,
45
46
  nft: false,
46
47
  uniswapV3: true,
48
+ domains: domain && [domain],
47
49
  };
48
50
  const loadConfig: LoadConfig = {
49
51
  cryptoassetsBaseURL: getEnv("DYNAMIC_CAL_BASE_URL"),
@@ -92,81 +92,34 @@ describe("genericPrepareTransaction", () => {
92
92
  expect(result).toBe(baseTransaction); // still same reference
93
93
  });
94
94
 
95
- it("propagates storageLimit from second estimation", async () => {
96
- const estimatedFee = new BigNumber(491);
97
-
98
- const estimateFeesFirstCall = jest.fn().mockResolvedValue({
99
- value: estimatedFee,
100
- parameters: { storageLimit: 300 },
101
- });
102
-
103
- const estimateFeesSecondCall = jest.fn().mockResolvedValue({
104
- value: estimatedFee,
105
- parameters: { storageLimit: 0 },
106
- });
107
-
108
- (getAlpacaApi as jest.Mock).mockReturnValue({
109
- estimateFees: jest
110
- .fn()
111
- .mockImplementationOnce(() => estimateFeesFirstCall())
112
- .mockImplementationOnce(() => estimateFeesSecondCall()),
113
- });
114
-
115
- const txWithoutCustomFees = { ...baseTransaction, customFees: undefined };
116
- const prepareTransaction = genericPrepareTransaction(network, kind);
117
- const result = await prepareTransaction(account, txWithoutCustomFees);
118
-
119
- expect(result).toEqual(
120
- expect.objectContaining({
121
- fees: estimatedFee,
122
- storageLimit: new BigNumber(0),
123
- customFees: {
124
- parameters: {
125
- fees: undefined,
126
- },
127
- },
128
- }),
129
- );
130
-
131
- expect((getAlpacaApi as jest.Mock)().estimateFees).toHaveBeenCalledTimes(2);
132
- });
133
-
134
- it("propagates storageLimit showing new account scenario", async () => {
135
- const estimatedFee = new BigNumber(491);
136
-
137
- const estimateFeesFirstCall = jest.fn().mockResolvedValue({
138
- value: estimatedFee,
139
- parameters: { storageLimit: 300 },
140
- });
141
-
142
- const estimateFeesSecondCall = jest.fn().mockResolvedValue({
143
- value: estimatedFee,
144
- parameters: { storageLimit: 277 },
145
- });
146
-
147
- (getAlpacaApi as jest.Mock).mockReturnValue({
148
- estimateFees: jest
149
- .fn()
150
- .mockImplementationOnce(() => estimateFeesFirstCall())
151
- .mockImplementationOnce(() => estimateFeesSecondCall()),
152
- });
153
-
154
- const txWithoutCustomFees = { ...baseTransaction, customFees: undefined };
155
- const prepareTransaction = genericPrepareTransaction(network, kind);
156
- const result = await prepareTransaction(account, txWithoutCustomFees);
157
-
158
- expect(result).toEqual(
159
- expect.objectContaining({
160
- fees: estimatedFee,
161
- storageLimit: new BigNumber(277),
162
- customFees: {
163
- parameters: {
164
- fees: undefined,
95
+ it.each([
96
+ ["type", 2, 2],
97
+ ["storageLimit", 300n, new BigNumber(300)],
98
+ ])(
99
+ "propagates %s from estimation parameters",
100
+ async (parameterName, parameterValue, expectedValue) => {
101
+ (getAlpacaApi as jest.Mock).mockReturnValue({
102
+ estimateFees: jest.fn().mockResolvedValue({
103
+ value: new BigNumber(491),
104
+ parameters: { [parameterName]: parameterValue },
105
+ }),
106
+ });
107
+
108
+ const txWithoutCustomFees = { ...baseTransaction, customFees: undefined };
109
+ const prepareTransaction = genericPrepareTransaction(network, kind);
110
+ const result = await prepareTransaction(account, txWithoutCustomFees);
111
+
112
+ expect(result).toEqual(
113
+ expect.objectContaining({
114
+ fees: new BigNumber(491),
115
+ [parameterName]: expectedValue,
116
+ customFees: {
117
+ parameters: {
118
+ fees: undefined,
119
+ },
165
120
  },
166
- },
167
- }),
168
- );
169
-
170
- expect((getAlpacaApi as jest.Mock)().estimateFees).toHaveBeenCalledTimes(2);
171
- });
121
+ }),
122
+ );
123
+ },
124
+ );
172
125
  });
@@ -27,6 +27,10 @@ describe("genericSignOperation", () => {
27
27
  amount: 100_000n,
28
28
  fees: 500n,
29
29
  tag: 1234,
30
+ recipientDomain: {
31
+ domain: "recipient.gen",
32
+ address: "recipient-address",
33
+ },
30
34
  } as any;
31
35
 
32
36
  const deviceId = "mockDevice";
@@ -38,7 +42,7 @@ describe("genericSignOperation", () => {
38
42
  },
39
43
  };
40
44
 
41
- const unsignedTx = "unsignedTx";
45
+ const unsignedTx = { transaction: "unsignedTx" };
42
46
  const signedTx = "signedTx";
43
47
  const pubKey = "pubKey";
44
48
 
@@ -49,7 +53,7 @@ describe("genericSignOperation", () => {
49
53
  craftTransaction: jest.fn().mockResolvedValue(unsignedTx),
50
54
  getAccountInfo: jest.fn().mockResolvedValue(pubKey),
51
55
  combine: jest.fn().mockResolvedValue(signedTx),
52
- getSequence: jest.fn().mockResolvedValue(1),
56
+ getSequence: jest.fn().mockResolvedValue(1n),
53
57
  });
54
58
 
55
59
  (transactionToIntent as jest.Mock).mockReturnValue(txIntent);
@@ -84,6 +88,10 @@ describe("genericSignOperation", () => {
84
88
  });
85
89
 
86
90
  expect(transactionToIntent).toHaveBeenCalledWith(account, transaction, undefined);
91
+ expect(mockSigner.signTransaction).toHaveBeenCalledWith("44'/144'/0'/0/0", "unsignedTx", {
92
+ domain: "recipient.gen",
93
+ address: "recipient-address",
94
+ });
87
95
  expect(txIntent.memo.memos.get("destinationTag")).toBe("1234");
88
96
  });
89
97