@ledgerhq/live-common 34.45.0 → 34.45.1-nightly.1

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 (321) hide show
  1. package/lib/__tests__/test-helpers/bridge.d.ts.map +1 -1
  2. package/lib/__tests__/test-helpers/bridge.js +3 -1
  3. package/lib/__tests__/test-helpers/bridge.js.map +1 -1
  4. package/lib/bridge/generic-alpaca/accountBridge.d.ts +1 -1
  5. package/lib/bridge/generic-alpaca/accountBridge.d.ts.map +1 -1
  6. package/lib/bridge/generic-alpaca/accountBridge.js.map +1 -1
  7. package/lib/bridge/generic-alpaca/alpaca/index.d.ts +1 -1
  8. package/lib/bridge/generic-alpaca/alpaca/index.d.ts.map +1 -1
  9. package/lib/bridge/generic-alpaca/alpaca/index.js +4 -2
  10. package/lib/bridge/generic-alpaca/alpaca/index.js.map +1 -1
  11. package/lib/bridge/generic-alpaca/alpaca/network/network-alpaca.d.ts +4 -4
  12. package/lib/bridge/generic-alpaca/alpaca/network/network-alpaca.d.ts.map +1 -1
  13. package/lib/bridge/generic-alpaca/alpaca/network/network-alpaca.js +10 -10
  14. package/lib/bridge/generic-alpaca/alpaca/network/network-alpaca.js.map +1 -1
  15. package/lib/bridge/generic-alpaca/broadcast.d.ts +1 -1
  16. package/lib/bridge/generic-alpaca/broadcast.d.ts.map +1 -1
  17. package/lib/bridge/generic-alpaca/broadcast.js.map +1 -1
  18. package/lib/bridge/generic-alpaca/buildSubAccounts.d.ts +17 -0
  19. package/lib/bridge/generic-alpaca/buildSubAccounts.d.ts.map +1 -0
  20. package/lib/bridge/generic-alpaca/buildSubAccounts.js +75 -0
  21. package/lib/bridge/generic-alpaca/buildSubAccounts.js.map +1 -0
  22. package/lib/bridge/generic-alpaca/createTransaction.d.ts +17 -9
  23. package/lib/bridge/generic-alpaca/createTransaction.d.ts.map +1 -1
  24. package/lib/bridge/generic-alpaca/createTransaction.js +36 -10
  25. package/lib/bridge/generic-alpaca/createTransaction.js.map +1 -1
  26. package/lib/bridge/generic-alpaca/currencyBridge.d.ts +1 -1
  27. package/lib/bridge/generic-alpaca/currencyBridge.d.ts.map +1 -1
  28. package/lib/bridge/generic-alpaca/currencyBridge.js.map +1 -1
  29. package/lib/bridge/generic-alpaca/estimateMaxSpendable.d.ts +1 -1
  30. package/lib/bridge/generic-alpaca/estimateMaxSpendable.d.ts.map +1 -1
  31. package/lib/bridge/generic-alpaca/estimateMaxSpendable.js +9 -0
  32. package/lib/bridge/generic-alpaca/estimateMaxSpendable.js.map +1 -1
  33. package/lib/bridge/generic-alpaca/getAccountShape.d.ts +1 -1
  34. package/lib/bridge/generic-alpaca/getAccountShape.d.ts.map +1 -1
  35. package/lib/bridge/generic-alpaca/getAccountShape.js +66 -37
  36. package/lib/bridge/generic-alpaca/getAccountShape.js.map +1 -1
  37. package/lib/bridge/generic-alpaca/getTransactionStatus.d.ts +1 -1
  38. package/lib/bridge/generic-alpaca/getTransactionStatus.d.ts.map +1 -1
  39. package/lib/bridge/generic-alpaca/getTransactionStatus.js +27 -15
  40. package/lib/bridge/generic-alpaca/getTransactionStatus.js.map +1 -1
  41. package/lib/bridge/generic-alpaca/prepareTransaction.d.ts +5 -1
  42. package/lib/bridge/generic-alpaca/prepareTransaction.d.ts.map +1 -1
  43. package/lib/bridge/generic-alpaca/prepareTransaction.js +28 -5
  44. package/lib/bridge/generic-alpaca/prepareTransaction.js.map +1 -1
  45. package/lib/bridge/generic-alpaca/signOperation.d.ts +1 -1
  46. package/lib/bridge/generic-alpaca/signOperation.d.ts.map +1 -1
  47. package/lib/bridge/generic-alpaca/signOperation.js +68 -13
  48. package/lib/bridge/generic-alpaca/signOperation.js.map +1 -1
  49. package/lib/bridge/generic-alpaca/signer/index.d.ts +1 -1
  50. package/lib/bridge/generic-alpaca/signer/index.d.ts.map +1 -1
  51. package/lib/bridge/generic-alpaca/signer/index.js +38 -5
  52. package/lib/bridge/generic-alpaca/signer/index.js.map +1 -1
  53. package/lib/bridge/generic-alpaca/signer/signTransaction.d.ts +2 -0
  54. package/lib/bridge/generic-alpaca/signer/signTransaction.d.ts.map +1 -1
  55. package/lib/bridge/generic-alpaca/signer/signTransaction.js +8 -1
  56. package/lib/bridge/generic-alpaca/signer/signTransaction.js.map +1 -1
  57. package/lib/bridge/generic-alpaca/signer/types.d.ts +3 -0
  58. package/lib/bridge/generic-alpaca/signer/types.d.ts.map +1 -1
  59. package/lib/bridge/generic-alpaca/tests/estimateMaxSpendable.test.js +70 -46
  60. package/lib/bridge/generic-alpaca/tests/estimateMaxSpendable.test.js.map +1 -1
  61. package/lib/bridge/generic-alpaca/tests/prepareTransaction.test.js +1 -1
  62. package/lib/bridge/generic-alpaca/tests/prepareTransaction.test.js.map +1 -1
  63. package/lib/bridge/generic-alpaca/tests/signOperation.test.js +25 -22
  64. package/lib/bridge/generic-alpaca/tests/signOperation.test.js.map +1 -1
  65. package/lib/bridge/generic-alpaca/tests/utils.test.d.ts.map +1 -0
  66. package/lib/bridge/generic-alpaca/{utils.test.js → tests/utils.test.js} +1 -1
  67. package/lib/bridge/generic-alpaca/tests/utils.test.js.map +1 -0
  68. package/lib/bridge/generic-alpaca/utils.d.ts +36 -1
  69. package/lib/bridge/generic-alpaca/utils.d.ts.map +1 -1
  70. package/lib/bridge/generic-alpaca/utils.js +130 -14
  71. package/lib/bridge/generic-alpaca/utils.js.map +1 -1
  72. package/lib/bridge/impl.d.ts.map +1 -1
  73. package/lib/bridge/impl.js +5 -4
  74. package/lib/bridge/impl.js.map +1 -1
  75. package/lib/e2e/enum/Account.js +4 -4
  76. package/lib/e2e/enum/Account.js.map +1 -1
  77. package/lib/e2e/enum/AppInfos.d.ts +1 -1
  78. package/lib/e2e/enum/AppInfos.d.ts.map +1 -1
  79. package/lib/e2e/enum/AppInfos.js +1 -1
  80. package/lib/e2e/enum/AppInfos.js.map +1 -1
  81. package/lib/e2e/enum/Currency.d.ts +3 -1
  82. package/lib/e2e/enum/Currency.d.ts.map +1 -1
  83. package/lib/e2e/enum/Currency.js +102 -42
  84. package/lib/e2e/enum/Currency.js.map +1 -1
  85. package/lib/e2e/enum/DeviceLabels.d.ts +3 -2
  86. package/lib/e2e/enum/DeviceLabels.d.ts.map +1 -1
  87. package/lib/e2e/enum/DeviceLabels.js +2 -1
  88. package/lib/e2e/enum/DeviceLabels.js.map +1 -1
  89. package/lib/e2e/enum/Network.d.ts +34 -0
  90. package/lib/e2e/enum/Network.d.ts.map +1 -0
  91. package/lib/e2e/enum/Network.js +38 -0
  92. package/lib/e2e/enum/Network.js.map +1 -0
  93. package/lib/e2e/families/solana.d.ts.map +1 -1
  94. package/lib/e2e/families/solana.js +4 -4
  95. package/lib/e2e/families/solana.js.map +1 -1
  96. package/lib/e2e/speculos.js +3 -3
  97. package/lib/e2e/speculos.js.map +1 -1
  98. package/lib/exchange/index.d.ts.map +1 -1
  99. package/lib/exchange/index.js +1 -0
  100. package/lib/exchange/index.js.map +1 -1
  101. package/lib/families/evm/config.js +1 -1
  102. package/lib/families/evm/config.js.map +1 -1
  103. package/lib/families/stellar/bridge/logic.d.ts +1 -1
  104. package/lib/families/stellar/bridge/logic.d.ts.map +1 -1
  105. package/lib/families/stellar/bridge/logic.js +1 -1
  106. package/lib/families/stellar/bridge/logic.js.map +1 -1
  107. package/lib/families/stellar/bridge/mock.js +2 -2
  108. package/lib/families/stellar/bridge/mock.js.map +1 -1
  109. package/lib/families/stellar/setup.d.ts +3 -6
  110. package/lib/families/stellar/setup.d.ts.map +1 -1
  111. package/lib/families/stellar/setup.js +3 -12
  112. package/lib/families/stellar/setup.js.map +1 -1
  113. package/lib/families/xrp/bridge/mock.js +2 -2
  114. package/lib/families/xrp/bridge/mock.js.map +1 -1
  115. package/lib/featureFlags/defaultFeatures.d.ts.map +1 -1
  116. package/lib/featureFlags/defaultFeatures.js +4 -2
  117. package/lib/featureFlags/defaultFeatures.js.map +1 -1
  118. package/lib/generated/bridge/js.d.ts +0 -1
  119. package/lib/generated/bridge/js.d.ts.map +1 -1
  120. package/lib/generated/bridge/js.js +12 -14
  121. package/lib/generated/bridge/js.js.map +1 -1
  122. package/lib/generated/transaction.d.ts +1 -1
  123. package/lib/modularDrawer/__test__/useModularDrawerVisibility.test.js +229 -14
  124. package/lib/modularDrawer/__test__/useModularDrawerVisibility.test.js.map +1 -1
  125. package/lib/modularDrawer/enums.d.ts +0 -1
  126. package/lib/modularDrawer/enums.d.ts.map +1 -1
  127. package/lib/modularDrawer/enums.js +0 -1
  128. package/lib/modularDrawer/enums.js.map +1 -1
  129. package/lib/modularDrawer/useModularDrawerVisibility.d.ts +7 -1
  130. package/lib/modularDrawer/useModularDrawerVisibility.d.ts.map +1 -1
  131. package/lib/modularDrawer/useModularDrawerVisibility.js +18 -2
  132. package/lib/modularDrawer/useModularDrawerVisibility.js.map +1 -1
  133. package/lib-es/__tests__/test-helpers/bridge.d.ts.map +1 -1
  134. package/lib-es/__tests__/test-helpers/bridge.js +3 -1
  135. package/lib-es/__tests__/test-helpers/bridge.js.map +1 -1
  136. package/lib-es/bridge/generic-alpaca/accountBridge.d.ts +1 -1
  137. package/lib-es/bridge/generic-alpaca/accountBridge.d.ts.map +1 -1
  138. package/lib-es/bridge/generic-alpaca/accountBridge.js.map +1 -1
  139. package/lib-es/bridge/generic-alpaca/alpaca/index.d.ts +1 -1
  140. package/lib-es/bridge/generic-alpaca/alpaca/index.d.ts.map +1 -1
  141. package/lib-es/bridge/generic-alpaca/alpaca/index.js +4 -2
  142. package/lib-es/bridge/generic-alpaca/alpaca/index.js.map +1 -1
  143. package/lib-es/bridge/generic-alpaca/alpaca/network/network-alpaca.d.ts +4 -4
  144. package/lib-es/bridge/generic-alpaca/alpaca/network/network-alpaca.d.ts.map +1 -1
  145. package/lib-es/bridge/generic-alpaca/alpaca/network/network-alpaca.js +10 -10
  146. package/lib-es/bridge/generic-alpaca/alpaca/network/network-alpaca.js.map +1 -1
  147. package/lib-es/bridge/generic-alpaca/broadcast.d.ts +1 -1
  148. package/lib-es/bridge/generic-alpaca/broadcast.d.ts.map +1 -1
  149. package/lib-es/bridge/generic-alpaca/broadcast.js.map +1 -1
  150. package/lib-es/bridge/generic-alpaca/buildSubAccounts.d.ts +17 -0
  151. package/lib-es/bridge/generic-alpaca/buildSubAccounts.d.ts.map +1 -0
  152. package/lib-es/bridge/generic-alpaca/buildSubAccounts.js +65 -0
  153. package/lib-es/bridge/generic-alpaca/buildSubAccounts.js.map +1 -0
  154. package/lib-es/bridge/generic-alpaca/createTransaction.d.ts +17 -9
  155. package/lib-es/bridge/generic-alpaca/createTransaction.d.ts.map +1 -1
  156. package/lib-es/bridge/generic-alpaca/createTransaction.js +35 -9
  157. package/lib-es/bridge/generic-alpaca/createTransaction.js.map +1 -1
  158. package/lib-es/bridge/generic-alpaca/currencyBridge.d.ts +1 -1
  159. package/lib-es/bridge/generic-alpaca/currencyBridge.d.ts.map +1 -1
  160. package/lib-es/bridge/generic-alpaca/currencyBridge.js.map +1 -1
  161. package/lib-es/bridge/generic-alpaca/estimateMaxSpendable.d.ts +1 -1
  162. package/lib-es/bridge/generic-alpaca/estimateMaxSpendable.d.ts.map +1 -1
  163. package/lib-es/bridge/generic-alpaca/estimateMaxSpendable.js +9 -0
  164. package/lib-es/bridge/generic-alpaca/estimateMaxSpendable.js.map +1 -1
  165. package/lib-es/bridge/generic-alpaca/getAccountShape.d.ts +1 -1
  166. package/lib-es/bridge/generic-alpaca/getAccountShape.d.ts.map +1 -1
  167. package/lib-es/bridge/generic-alpaca/getAccountShape.js +66 -37
  168. package/lib-es/bridge/generic-alpaca/getAccountShape.js.map +1 -1
  169. package/lib-es/bridge/generic-alpaca/getTransactionStatus.d.ts +1 -1
  170. package/lib-es/bridge/generic-alpaca/getTransactionStatus.d.ts.map +1 -1
  171. package/lib-es/bridge/generic-alpaca/getTransactionStatus.js +27 -15
  172. package/lib-es/bridge/generic-alpaca/getTransactionStatus.js.map +1 -1
  173. package/lib-es/bridge/generic-alpaca/prepareTransaction.d.ts +5 -1
  174. package/lib-es/bridge/generic-alpaca/prepareTransaction.d.ts.map +1 -1
  175. package/lib-es/bridge/generic-alpaca/prepareTransaction.js +26 -4
  176. package/lib-es/bridge/generic-alpaca/prepareTransaction.js.map +1 -1
  177. package/lib-es/bridge/generic-alpaca/signOperation.d.ts +1 -1
  178. package/lib-es/bridge/generic-alpaca/signOperation.d.ts.map +1 -1
  179. package/lib-es/bridge/generic-alpaca/signOperation.js +65 -13
  180. package/lib-es/bridge/generic-alpaca/signOperation.js.map +1 -1
  181. package/lib-es/bridge/generic-alpaca/signer/index.d.ts +1 -1
  182. package/lib-es/bridge/generic-alpaca/signer/index.d.ts.map +1 -1
  183. package/lib-es/bridge/generic-alpaca/signer/index.js +39 -6
  184. package/lib-es/bridge/generic-alpaca/signer/index.js.map +1 -1
  185. package/lib-es/bridge/generic-alpaca/signer/signTransaction.d.ts +2 -0
  186. package/lib-es/bridge/generic-alpaca/signer/signTransaction.d.ts.map +1 -1
  187. package/lib-es/bridge/generic-alpaca/signer/signTransaction.js +6 -0
  188. package/lib-es/bridge/generic-alpaca/signer/signTransaction.js.map +1 -1
  189. package/lib-es/bridge/generic-alpaca/signer/types.d.ts +3 -0
  190. package/lib-es/bridge/generic-alpaca/signer/types.d.ts.map +1 -1
  191. package/lib-es/bridge/generic-alpaca/tests/estimateMaxSpendable.test.js +70 -46
  192. package/lib-es/bridge/generic-alpaca/tests/estimateMaxSpendable.test.js.map +1 -1
  193. package/lib-es/bridge/generic-alpaca/tests/prepareTransaction.test.js +1 -1
  194. package/lib-es/bridge/generic-alpaca/tests/prepareTransaction.test.js.map +1 -1
  195. package/lib-es/bridge/generic-alpaca/tests/signOperation.test.js +25 -22
  196. package/lib-es/bridge/generic-alpaca/tests/signOperation.test.js.map +1 -1
  197. package/lib-es/bridge/generic-alpaca/tests/utils.test.d.ts.map +1 -0
  198. package/lib-es/bridge/generic-alpaca/{utils.test.js → tests/utils.test.js} +1 -1
  199. package/lib-es/bridge/generic-alpaca/tests/utils.test.js.map +1 -0
  200. package/lib-es/bridge/generic-alpaca/utils.d.ts +36 -1
  201. package/lib-es/bridge/generic-alpaca/utils.d.ts.map +1 -1
  202. package/lib-es/bridge/generic-alpaca/utils.js +130 -14
  203. package/lib-es/bridge/generic-alpaca/utils.js.map +1 -1
  204. package/lib-es/bridge/impl.d.ts.map +1 -1
  205. package/lib-es/bridge/impl.js +5 -4
  206. package/lib-es/bridge/impl.js.map +1 -1
  207. package/lib-es/e2e/enum/Account.js +4 -4
  208. package/lib-es/e2e/enum/Account.js.map +1 -1
  209. package/lib-es/e2e/enum/AppInfos.d.ts +1 -1
  210. package/lib-es/e2e/enum/AppInfos.d.ts.map +1 -1
  211. package/lib-es/e2e/enum/AppInfos.js +1 -1
  212. package/lib-es/e2e/enum/AppInfos.js.map +1 -1
  213. package/lib-es/e2e/enum/Currency.d.ts +3 -1
  214. package/lib-es/e2e/enum/Currency.d.ts.map +1 -1
  215. package/lib-es/e2e/enum/Currency.js +102 -42
  216. package/lib-es/e2e/enum/Currency.js.map +1 -1
  217. package/lib-es/e2e/enum/DeviceLabels.d.ts +3 -2
  218. package/lib-es/e2e/enum/DeviceLabels.d.ts.map +1 -1
  219. package/lib-es/e2e/enum/DeviceLabels.js +2 -1
  220. package/lib-es/e2e/enum/DeviceLabels.js.map +1 -1
  221. package/lib-es/e2e/enum/Network.d.ts +34 -0
  222. package/lib-es/e2e/enum/Network.d.ts.map +1 -0
  223. package/lib-es/e2e/enum/Network.js +35 -0
  224. package/lib-es/e2e/enum/Network.js.map +1 -0
  225. package/lib-es/e2e/families/solana.d.ts.map +1 -1
  226. package/lib-es/e2e/families/solana.js +4 -4
  227. package/lib-es/e2e/families/solana.js.map +1 -1
  228. package/lib-es/e2e/speculos.js +3 -3
  229. package/lib-es/e2e/speculos.js.map +1 -1
  230. package/lib-es/exchange/index.d.ts.map +1 -1
  231. package/lib-es/exchange/index.js +1 -0
  232. package/lib-es/exchange/index.js.map +1 -1
  233. package/lib-es/families/evm/config.js +1 -1
  234. package/lib-es/families/evm/config.js.map +1 -1
  235. package/lib-es/families/stellar/bridge/logic.d.ts +1 -1
  236. package/lib-es/families/stellar/bridge/logic.d.ts.map +1 -1
  237. package/lib-es/families/stellar/bridge/logic.js +1 -1
  238. package/lib-es/families/stellar/bridge/logic.js.map +1 -1
  239. package/lib-es/families/stellar/bridge/mock.js +2 -2
  240. package/lib-es/families/stellar/bridge/mock.js.map +1 -1
  241. package/lib-es/families/stellar/setup.d.ts +3 -6
  242. package/lib-es/families/stellar/setup.d.ts.map +1 -1
  243. package/lib-es/families/stellar/setup.js +2 -10
  244. package/lib-es/families/stellar/setup.js.map +1 -1
  245. package/lib-es/families/xrp/bridge/mock.js +2 -2
  246. package/lib-es/families/xrp/bridge/mock.js.map +1 -1
  247. package/lib-es/featureFlags/defaultFeatures.d.ts.map +1 -1
  248. package/lib-es/featureFlags/defaultFeatures.js +4 -2
  249. package/lib-es/featureFlags/defaultFeatures.js.map +1 -1
  250. package/lib-es/generated/bridge/js.d.ts +0 -1
  251. package/lib-es/generated/bridge/js.d.ts.map +1 -1
  252. package/lib-es/generated/bridge/js.js +0 -2
  253. package/lib-es/generated/bridge/js.js.map +1 -1
  254. package/lib-es/generated/transaction.d.ts +1 -1
  255. package/lib-es/modularDrawer/__test__/useModularDrawerVisibility.test.js +229 -14
  256. package/lib-es/modularDrawer/__test__/useModularDrawerVisibility.test.js.map +1 -1
  257. package/lib-es/modularDrawer/enums.d.ts +0 -1
  258. package/lib-es/modularDrawer/enums.d.ts.map +1 -1
  259. package/lib-es/modularDrawer/enums.js +0 -1
  260. package/lib-es/modularDrawer/enums.js.map +1 -1
  261. package/lib-es/modularDrawer/useModularDrawerVisibility.d.ts +7 -1
  262. package/lib-es/modularDrawer/useModularDrawerVisibility.d.ts.map +1 -1
  263. package/lib-es/modularDrawer/useModularDrawerVisibility.js +18 -2
  264. package/lib-es/modularDrawer/useModularDrawerVisibility.js.map +1 -1
  265. package/package.json +7 -5
  266. package/src/__tests__/test-helpers/bridge.ts +3 -1
  267. package/src/bridge/generic-alpaca/accountBridge.ts +1 -4
  268. package/src/bridge/generic-alpaca/alpaca/index.ts +7 -2
  269. package/src/bridge/generic-alpaca/alpaca/network/network-alpaca.ts +17 -22
  270. package/src/bridge/generic-alpaca/broadcast.ts +1 -4
  271. package/src/bridge/generic-alpaca/buildSubAccounts.ts +110 -0
  272. package/src/bridge/generic-alpaca/createTransaction.ts +48 -18
  273. package/src/bridge/generic-alpaca/currencyBridge.ts +1 -1
  274. package/src/bridge/generic-alpaca/estimateMaxSpendable.ts +13 -4
  275. package/src/bridge/generic-alpaca/getAccountShape.ts +84 -46
  276. package/src/bridge/generic-alpaca/getTransactionStatus.ts +46 -22
  277. package/src/bridge/generic-alpaca/prepareTransaction.ts +41 -7
  278. package/src/bridge/generic-alpaca/signOperation.ts +88 -18
  279. package/src/bridge/generic-alpaca/signer/index.ts +43 -7
  280. package/src/bridge/generic-alpaca/signer/signTransaction.ts +11 -0
  281. package/src/bridge/generic-alpaca/signer/types.ts +1 -0
  282. package/src/bridge/generic-alpaca/tests/estimateMaxSpendable.test.ts +72 -47
  283. package/src/bridge/generic-alpaca/tests/prepareTransaction.test.ts +1 -1
  284. package/src/bridge/generic-alpaca/tests/signOperation.test.ts +28 -26
  285. package/src/bridge/generic-alpaca/{utils.test.ts → tests/utils.test.ts} +1 -1
  286. package/src/bridge/generic-alpaca/utils.ts +158 -18
  287. package/src/bridge/impl.ts +5 -4
  288. package/src/e2e/enum/Account.ts +4 -4
  289. package/src/e2e/enum/AppInfos.ts +1 -1
  290. package/src/e2e/enum/Currency.ts +102 -40
  291. package/src/e2e/enum/DeviceLabels.ts +2 -1
  292. package/src/e2e/enum/Network.ts +33 -0
  293. package/src/e2e/families/solana.ts +7 -4
  294. package/src/e2e/speculos.ts +3 -3
  295. package/src/exchange/index.ts +1 -0
  296. package/src/families/evm/config.ts +1 -1
  297. package/src/families/stellar/__snapshots__/bridge.integration.test.ts.snap +184 -1887
  298. package/src/families/stellar/bridge/logic.ts +1 -1
  299. package/src/families/stellar/bridge/mock.ts +2 -2
  300. package/src/families/stellar/setup.ts +2 -22
  301. package/src/families/xrp/bridge/mock.ts +2 -2
  302. package/src/featureFlags/defaultFeatures.ts +4 -2
  303. package/src/generated/bridge/js.ts +0 -2
  304. package/src/modularDrawer/__test__/useModularDrawerVisibility.test.ts +345 -14
  305. package/src/modularDrawer/enums.ts +0 -1
  306. package/src/modularDrawer/useModularDrawerVisibility.ts +26 -2
  307. package/lib/bridge/generic-alpaca/utils.test.d.ts.map +0 -1
  308. package/lib/bridge/generic-alpaca/utils.test.js.map +0 -1
  309. package/lib/families/canton/bridge.integration.test.d.ts +0 -2
  310. package/lib/families/canton/bridge.integration.test.d.ts.map +0 -1
  311. package/lib/families/canton/bridge.integration.test.js +0 -7
  312. package/lib/families/canton/bridge.integration.test.js.map +0 -1
  313. package/lib-es/bridge/generic-alpaca/utils.test.d.ts.map +0 -1
  314. package/lib-es/bridge/generic-alpaca/utils.test.js.map +0 -1
  315. package/lib-es/families/canton/bridge.integration.test.d.ts +0 -2
  316. package/lib-es/families/canton/bridge.integration.test.d.ts.map +0 -1
  317. package/lib-es/families/canton/bridge.integration.test.js +0 -5
  318. package/lib-es/families/canton/bridge.integration.test.js.map +0 -1
  319. package/src/families/canton/bridge.integration.test.ts +0 -6
  320. /package/lib/bridge/generic-alpaca/{utils.test.d.ts → tests/utils.test.d.ts} +0 -0
  321. /package/lib-es/bridge/generic-alpaca/{utils.test.d.ts → tests/utils.test.d.ts} +0 -0
@@ -11,66 +11,91 @@ jest.mock("../alpaca", () => ({
11
11
  const mockedGetAlpacaApi = alpaca.getAlpacaApi as jest.Mock;
12
12
 
13
13
  // Dummy data
14
- const dummyAccount = {
15
- id: "js:2:ripple:r123:",
16
- type: "Account", // <-- this is mandatory for getMainAccount to work
17
- spendableBalance: new BigNumber(50000000),
18
- currency: { id: "ripple", name: "XRP", units: [{ name: "XRP", magnitude: 6 }] },
19
- freshAddress: "r123",
20
- } as unknown as Account;
14
+ const dummyAccounts = [
15
+ {
16
+ id: "js:2:ripple:r123:",
17
+ type: "Account",
18
+ spendableBalance: new BigNumber(50000000),
19
+ balance: new BigNumber(60000000),
20
+ currency: { id: "ripple", family: "xrp", name: "XRP", units: [{ name: "XRP", magnitude: 6 }] },
21
+ freshAddress: "r123",
22
+ pendingOperations: [],
23
+ },
24
+ {
25
+ id: "js:2:stellar:s123:",
26
+ type: "Account",
27
+ spendableBalance: new BigNumber(50000000),
28
+ balance: new BigNumber(60000000),
29
+ currency: {
30
+ id: "stellar",
31
+ family: "stellar",
32
+ name: "Stellar",
33
+ units: [{ name: "XLM", magnitude: 7 }],
34
+ },
35
+ freshAddress: "s123",
36
+ pendingOperations: [],
37
+ },
38
+ ] as unknown as Account[];
21
39
 
22
- describe("genericEstimateMaxSpendable", () => {
23
- afterEach(() => {
24
- jest.clearAllMocks();
25
- });
40
+ ["xrp", "stellar"].forEach((currencyName, idx) => {
41
+ describe(`genericEstimateMaxSpendable for ${currencyName}`, () => {
42
+ const dummyAccount = dummyAccounts[idx];
26
43
 
27
- it("subtracts estimated fee from spendable balance", async () => {
28
- mockedGetAlpacaApi.mockReturnValue({
29
- estimateFees: jest.fn().mockResolvedValue({ value: 10000n }), // 0.01 XRP
44
+ afterEach(() => {
45
+ jest.clearAllMocks();
30
46
  });
31
47
 
32
- const estimate = genericEstimateMaxSpendable("xrp", "local");
33
- const result = await estimate({
34
- account: dummyAccount,
35
- parentAccount: null,
36
- transaction: {},
48
+ it("subtracts estimated fee from spendable balance", async () => {
49
+ mockedGetAlpacaApi.mockReturnValue({
50
+ estimateFees: jest.fn().mockResolvedValue({ value: 10000n }),
51
+ validateIntent: jest.fn().mockResolvedValue({ amount: 49990000n }),
52
+ });
53
+
54
+ const estimate = genericEstimateMaxSpendable(currencyName, "local");
55
+ const result = await estimate({
56
+ account: dummyAccount,
57
+ parentAccount: null,
58
+ transaction: {},
59
+ });
60
+
61
+ expect(result.toString()).toBe("49990000");
37
62
  });
38
63
 
39
- expect(result.toString()).toBe("49990000"); // 50_000_000 - 10_000
40
- });
64
+ it("returns 0 if fee is higher than spendable", async () => {
65
+ const poorAccount = {
66
+ ...dummyAccount,
67
+ spendableBalance: new BigNumber(5000),
68
+ };
41
69
 
42
- it("returns 0 if fee is higher than spendable", async () => {
43
- const poorAccount = {
44
- ...dummyAccount,
45
- spendableBalance: new BigNumber(5000), // very low
46
- };
70
+ mockedGetAlpacaApi.mockReturnValue({
71
+ estimateFees: jest.fn().mockResolvedValue({ value: 10000n }),
72
+ validateIntent: jest.fn().mockResolvedValue({ amount: 0n }),
73
+ });
47
74
 
48
- mockedGetAlpacaApi.mockReturnValue({
49
- estimateFees: jest.fn().mockResolvedValue({ value: 10000n }),
50
- });
75
+ const estimate = genericEstimateMaxSpendable(currencyName, "local");
76
+ const result = await estimate({
77
+ account: poorAccount,
78
+ parentAccount: null,
79
+ transaction: {},
80
+ });
51
81
 
52
- const estimate = genericEstimateMaxSpendable("xrp", "local");
53
- const result = await estimate({
54
- account: poorAccount,
55
- parentAccount: null,
56
- transaction: {},
82
+ expect(result.toString()).toBe("0");
57
83
  });
58
84
 
59
- expect(result.toString()).toBe("0");
60
- });
85
+ it("returns full spendable balance if fee is 0", async () => {
86
+ mockedGetAlpacaApi.mockReturnValue({
87
+ estimateFees: jest.fn().mockResolvedValue({ value: 0n }),
88
+ validateIntent: jest.fn().mockResolvedValue({ amount: 50000000n }),
89
+ });
61
90
 
62
- it("returns full spendable balance if fee is 0", async () => {
63
- mockedGetAlpacaApi.mockReturnValue({
64
- estimateFees: jest.fn().mockResolvedValue({ value: 0n }),
65
- });
91
+ const estimate = genericEstimateMaxSpendable(currencyName, "local");
92
+ const result = await estimate({
93
+ account: dummyAccount,
94
+ parentAccount: null,
95
+ transaction: {},
96
+ });
66
97
 
67
- const estimate = genericEstimateMaxSpendable("xrp", "local");
68
- const result = await estimate({
69
- account: dummyAccount,
70
- parentAccount: null,
71
- transaction: {},
98
+ expect(result.toString()).toBe("50000000");
72
99
  });
73
-
74
- expect(result.toString()).toBe("50000000");
75
100
  });
76
101
  });
@@ -47,7 +47,7 @@ describe("genericPrepareTransaction", () => {
47
47
  expect((result as any).fees.toString()).toBe(newFee.toString());
48
48
  expect(transactionToIntent).toHaveBeenCalledWith(
49
49
  account,
50
- expect.objectContaining(baseTransaction),
50
+ expect.objectContaining({ ...baseTransaction, fees: 500n }),
51
51
  );
52
52
  });
53
53
 
@@ -13,9 +13,8 @@ jest.mock("../utils", () => ({
13
13
  buildOptimisticOperation: jest.fn(),
14
14
  transactionToIntent: jest.fn(),
15
15
  }));
16
-
17
16
  describe("genericSignOperation", () => {
18
- const network = "xrp";
17
+ const networks = ["xrp", "stellar"];
19
18
  const kind = "local";
20
19
 
21
20
  const mockSignerContext = jest.fn();
@@ -55,6 +54,7 @@ describe("genericSignOperation", () => {
55
54
  craftTransaction: jest.fn().mockResolvedValue(unsignedTx),
56
55
  getAccountInfo: jest.fn().mockResolvedValue(pubKey),
57
56
  combine: jest.fn().mockResolvedValue(signedTx),
57
+ getSequence: jest.fn().mockResolvedValue(1),
58
58
  });
59
59
 
60
60
  (transactionToIntent as jest.Mock).mockReturnValue(txIntent);
@@ -65,33 +65,35 @@ describe("genericSignOperation", () => {
65
65
  mockSignerContext.mockImplementation(async (_deviceId, cb) => cb(mockSigner));
66
66
  });
67
67
 
68
- it("emits full sign operation flow", async () => {
69
- const signOperation = genericSignOperation(network, kind)(mockSignerContext);
70
- const observable = signOperation({ account, transaction, deviceId });
71
-
72
- const events = await lastValueFrom(observable.pipe(toArray()));
73
-
74
- expect(events[0]).toEqual({ type: "device-signature-requested" });
75
- expect(events[1]).toEqual({ type: "device-signature-granted" });
76
- expect(events[2]).toEqual({
77
- type: "signed",
78
- signedOperation: {
79
- operation: { id: "mock-op" },
80
- signature: signedTx,
81
- },
68
+ networks.forEach(network => {
69
+ it(`emits full sign operation flow for ${network}`, async () => {
70
+ const signOperation = genericSignOperation(network, kind)(mockSignerContext);
71
+ const observable = signOperation({ account, transaction, deviceId });
72
+
73
+ const events = await lastValueFrom(observable.pipe(toArray()));
74
+
75
+ expect(events[0]).toEqual({ type: "device-signature-requested" });
76
+ expect(events[1]).toEqual({ type: "device-signature-granted" });
77
+ expect(events[2]).toEqual({
78
+ type: "signed",
79
+ signedOperation: {
80
+ operation: { id: "mock-op" },
81
+ signature: signedTx,
82
+ },
83
+ });
84
+
85
+ expect(transactionToIntent).toHaveBeenCalledWith(account, transaction);
86
+ expect(txIntent.memo.memos.get("destinationTag")).toBe("1234");
82
87
  });
83
88
 
84
- expect(transactionToIntent).toHaveBeenCalledWith(account, transaction);
85
- expect(txIntent.memo.memos.get("destinationTag")).toBe("1234");
86
- });
87
-
88
- it("throws FeeNotLoaded if fees are missing", async () => {
89
- const txWithoutFees = { ...transaction };
90
- delete txWithoutFees.fees;
89
+ it(`throws FeeNotLoaded if fees are missing for ${network}`, async () => {
90
+ const txWithoutFees = { ...transaction };
91
+ delete txWithoutFees.fees;
91
92
 
92
- const signOperation = genericSignOperation(network, kind)(mockSignerContext);
93
- const observable = signOperation({ account, transaction: txWithoutFees, deviceId });
93
+ const signOperation = genericSignOperation(network, kind)(mockSignerContext);
94
+ const observable = signOperation({ account, transaction: txWithoutFees, deviceId });
94
95
 
95
- await expect(observable.toPromise()).rejects.toThrow(FeeNotLoaded);
96
+ await expect(observable.toPromise()).rejects.toThrow(FeeNotLoaded);
97
+ });
96
98
  });
97
99
  });
@@ -1,4 +1,4 @@
1
- import { extractBalance } from "./utils";
1
+ import { extractBalance } from "../utils";
2
2
 
3
3
  describe("Alpaca utils", () => {
4
4
  describe("extractBalance", () => {
@@ -1,23 +1,56 @@
1
1
  import { encodeOperationId } from "@ledgerhq/coin-framework/operation";
2
2
  import { Account, Operation, OperationType, TransactionCommon } from "@ledgerhq/types-live";
3
+ import BigNumber from "bignumber.js";
4
+ import { fromBigNumberToBigInt } from "@ledgerhq/coin-framework/utils";
3
5
  import {
4
6
  Balance,
5
7
  Operation as CoreOperation,
6
8
  TransactionIntent,
7
9
  } from "@ledgerhq/coin-framework/api/types";
8
- import BigNumber from "bignumber.js";
9
- import { fromBigNumberToBigInt } from "@ledgerhq/coin-framework/utils";
10
10
 
11
11
  export function extractBalance(balances: Balance[], type: string): Balance {
12
- return balances.find(balance => balance.asset.type === type) ?? { asset: { type }, value: 0n };
12
+ return (
13
+ balances.find(balance => balance.asset.type === type) ?? {
14
+ asset: { type },
15
+ value: 0n,
16
+ }
17
+ );
13
18
  }
14
19
 
15
20
  export function adaptCoreOperationToLiveOperation(accountId: string, op: CoreOperation): Operation {
16
- return {
17
- id: encodeOperationId(accountId, op.tx.hash, op.type),
21
+ const opType = op.type as OperationType;
22
+
23
+ const extra: {
24
+ assetReference?: string;
25
+ assetOwner?: string;
26
+ assetAmount?: string | undefined;
27
+ ledgerOpType?: string | undefined;
28
+ memo?: string | undefined;
29
+ } = {};
30
+
31
+ if (op.details?.ledgerOpType !== undefined) {
32
+ extra.ledgerOpType = op.details.ledgerOpType as string;
33
+ }
34
+
35
+ if (op.details?.assetAmount !== undefined) {
36
+ extra.assetAmount = op.details.assetAmount as string;
37
+ }
38
+
39
+ if (op.asset?.type !== "native") {
40
+ extra.assetReference =
41
+ "assetReference" in (op.asset ?? {}) ? (op.asset as any).assetReference : "";
42
+ extra.assetOwner = "assetOwner" in (op.asset ?? {}) ? (op.asset as any).assetOwner : "";
43
+ }
44
+ if (op.details?.memo) {
45
+ extra.memo = op.details.memo as string;
46
+ }
47
+ const res = {
48
+ id: extra.ledgerOpType
49
+ ? encodeOperationId(accountId, op.tx.hash, extra.ledgerOpType)
50
+ : encodeOperationId(accountId, op.tx.hash, op.type),
18
51
  hash: op.tx.hash,
19
52
  accountId,
20
- type: op.type as OperationType,
53
+ type: opType,
21
54
  value: new BigNumber(op.value.toString()),
22
55
  fee: new BigNumber(op.tx.fees.toString()),
23
56
  blockHash: op.tx.block.hash,
@@ -26,21 +59,94 @@ export function adaptCoreOperationToLiveOperation(accountId: string, op: CoreOpe
26
59
  recipients: op.recipients,
27
60
  date: op.tx.date,
28
61
  transactionSequenceNumber: op.details?.sequence as number,
29
- extra: {},
62
+ hasFailed: (op.details as unknown as { status?: string })?.status === "failed",
63
+ extra,
30
64
  };
65
+
66
+ return res;
31
67
  }
32
68
 
69
+ /**
70
+ * Converts a transaction object into a `TransactionIntent` object, which is used to represent
71
+ * the intent of a transaction in a standardized format.
72
+ *
73
+ * @template MemoType - The type of memo supported by the transaction, defaults to `MemoNotSupported`.
74
+ *
75
+ * @param account - The account initiating the transaction. Contains details such as the sender's address.
76
+ * @param transaction - The transaction object containing details about the operation to be performed.
77
+ * - `assetOwner` (optional): The issuer of the asset, if applicable.
78
+ * - `assetReference` (optional): The code of the asset, if applicable.
79
+ * - `mode` (optional): The mode of the transaction, e.g., "changetrust" or "send".
80
+ * - `fees` (optional): The fees associated with the transaction.
81
+ * - `memoType` (optional): The type of memo to attach to the transaction.
82
+ * - `memoValue` (optional): The value of the memo to attach to the transaction.
83
+ *
84
+ * @returns A `TransactionIntent` object containing the standardized representation of the transaction.
85
+ * - Includes details such as type, sender, recipient, amount, fees, asset, and an optional memo.
86
+ * - If `assetReference` and `assetOwner` are provided, the asset is represented as a token.
87
+ * - If `memoType` and `memoValue` are provided, a memo is included; otherwise, a default memo of type "NO_MEMO" is added.
88
+ *
89
+ * @throws An error if the transaction mode is unsupported.
90
+ */
33
91
  export function transactionToIntent(
34
92
  account: Account,
35
- transaction: TransactionCommon,
36
- ): TransactionIntent<any> {
37
- return {
38
- type: "Payment",
93
+ transaction: TransactionCommon & {
94
+ assetOwner?: string;
95
+ assetReference?: string;
96
+ mode?: string;
97
+ fees?: bigint | null | undefined;
98
+ memoType?: string;
99
+ memoValue?: string;
100
+ useAllAmount?: boolean;
101
+ },
102
+ ): TransactionIntent<any> & { memo?: { type: string; value?: string } } {
103
+ let transactionType = "Payment"; // NOTE: assuming payment by default here, can be changed based on transaction.mode
104
+ if (transaction.mode) {
105
+ switch (transaction.mode) {
106
+ case "changeTrust":
107
+ transactionType = "changeTrust";
108
+ break;
109
+ case "send":
110
+ transactionType = "send";
111
+ break;
112
+ default:
113
+ throw new Error(`Unsupported transaction mode: ${transaction.mode}`);
114
+ }
115
+ }
116
+ const res: TransactionIntent & { memo?: { type: string; value?: string } } = {
117
+ fees: transaction?.fees ? transaction.fees : null,
118
+ type: transactionType,
39
119
  sender: account.freshAddress,
40
120
  recipient: transaction.recipient,
41
121
  amount: fromBigNumberToBigInt(transaction.amount, BigInt(0)),
42
- asset: { type: "native" },
122
+ asset: { type: "native", name: account.currency.name, unit: account.currency.units[0] },
123
+ useAllAmount: !!transaction.useAllAmount,
43
124
  };
125
+ if (transaction.assetReference && transaction.assetOwner) {
126
+ const { subAccountId } = transaction;
127
+ const { subAccounts } = account;
128
+
129
+ const tokenAccount = !subAccountId
130
+ ? null
131
+ : subAccounts && subAccounts.find(ta => ta.id === subAccountId);
132
+
133
+ res.asset = {
134
+ type: tokenAccount?.token.tokenType ?? "token",
135
+ assetReference: transaction.assetReference,
136
+ name: tokenAccount?.token.name ?? transaction.assetReference, // NOTE: for stellar, assetReference = tokenAccount.name, this is futureproofing
137
+ unit: account.currency.units[0],
138
+ assetOwner: transaction.assetOwner,
139
+ };
140
+ }
141
+ if (transaction.memoType && transaction.memoValue) {
142
+ res.memo = {
143
+ type: transaction.memoType,
144
+ value: transaction.memoValue,
145
+ };
146
+ } else {
147
+ res.memo = { type: "NO_MEMO" };
148
+ }
149
+ return res;
44
150
  }
45
151
 
46
152
  export const buildOptimisticOperation = (
@@ -48,12 +154,17 @@ export const buildOptimisticOperation = (
48
154
  transaction: TransactionCommon,
49
155
  sequenceNumber?: number,
50
156
  ): Operation => {
51
- return {
52
- id: encodeOperationId(account.id, "", "OUT"),
157
+ const type = transaction["mode"] === "changeTrust" ? "OPT_IN" : "OUT";
158
+ const fees = BigInt(transaction["fees"]?.toString() || "0");
159
+ const { subAccountId } = transaction;
160
+ const { subAccounts } = account;
161
+
162
+ const operation: Operation = {
163
+ id: encodeOperationId(account.id, "", type),
53
164
  hash: "",
54
- type: "OUT",
55
- value: transaction.amount,
56
- fee: transaction["fees"] ?? BigNumber(0),
165
+ type: type,
166
+ value: subAccountId ? new BigNumber(fees.toString()) : transaction.amount, // match old behavior
167
+ fee: new BigNumber(fees.toString()),
57
168
  blockHash: null,
58
169
  blockHeight: null,
59
170
  senders: [account.freshAddress.toString()],
@@ -61,6 +172,35 @@ export const buildOptimisticOperation = (
61
172
  transactionSequenceNumber: sequenceNumber ?? 0,
62
173
  accountId: account.id,
63
174
  date: new Date(),
64
- extra: {},
175
+ extra: {
176
+ ledgerOpType: type,
177
+ blockTime: new Date(),
178
+ index: "0",
179
+ },
65
180
  };
181
+
182
+ const tokenAccount = !subAccountId
183
+ ? null
184
+ : subAccounts && subAccounts.find(ta => ta.id === subAccountId);
185
+ if (tokenAccount && subAccountId) {
186
+ operation.subOperations = [
187
+ {
188
+ id: `${subAccountId}--OUT`,
189
+ hash: "",
190
+ type: "OUT",
191
+ value: transaction.useAllAmount ? tokenAccount.balance : transaction.amount,
192
+ fee: new BigNumber(0),
193
+ blockHash: null,
194
+ blockHeight: null,
195
+ senders: [account.freshAddress],
196
+ recipients: [transaction.recipient],
197
+ accountId: subAccountId,
198
+ date: new Date(),
199
+ extra: {
200
+ ledgerOpType: type,
201
+ },
202
+ },
203
+ ];
204
+ }
205
+ return operation;
66
206
  };
@@ -26,11 +26,12 @@ import { getCryptoAssetsStore, setCryptoAssetsStore } from "./crypto-assets";
26
26
 
27
27
  const alpacaized = {
28
28
  xrp: true,
29
+ stellar: true,
29
30
  };
30
31
 
31
32
  // let accountBridgeInstance: AccountBridge<any> | null = null;
32
33
  const bridgeCache: Record<string, AccountBridge<any>> = {};
33
- let currencyBridgeInstance: CurrencyBridge | null = null;
34
+ const currencyBridgeCache: Record<string, CurrencyBridge> = {};
34
35
 
35
36
  export const getCurrencyBridge = (currency: CryptoCurrency): CurrencyBridge => {
36
37
  if (getEnv("MOCK")) {
@@ -42,10 +43,10 @@ export const getCurrencyBridge = (currency: CryptoCurrency): CurrencyBridge => {
42
43
  }
43
44
 
44
45
  if (alpacaized[currency.family]) {
45
- if (!currencyBridgeInstance) {
46
- currencyBridgeInstance = getAlpacaCurrencyBridge(currency.family, "local");
46
+ if (!currencyBridgeCache[currency.family]) {
47
+ currencyBridgeCache[currency.family] = getAlpacaCurrencyBridge(currency.family, "local");
47
48
  }
48
- return currencyBridgeInstance;
49
+ return currencyBridgeCache[currency.family];
49
50
  }
50
51
 
51
52
  const jsBridge = jsBridges[currency.family];
@@ -94,25 +94,25 @@ export class Account {
94
94
 
95
95
  static readonly BSC_1 = new Account(
96
96
  Currency.BSC,
97
- "Binance Smart Chain 1",
97
+ "BNB Chain 1",
98
98
  "0x4BE2E2B8872AA298D6d123b9211B53E41f611566",
99
99
  0,
100
100
  );
101
101
  static readonly BSC_BUSD_1 = new Account(
102
102
  Currency.BSC_BUSD,
103
- "Binance Smart Chain 1",
103
+ "BNB Chain 1",
104
104
  "0x4BE2E2B8872AA298D6d123b9211B53E41f611566",
105
105
  0,
106
106
  );
107
107
  static readonly BSC_BUSD_2 = new Account(
108
108
  Currency.BSC_BUSD,
109
- "Binance Smart Chain 2",
109
+ "BNB Chain 2",
110
110
  "0xa1baa625c5E6A9304cB7AcD86d2fee6B710eC3eB",
111
111
  1,
112
112
  );
113
113
  static readonly BSC_SHIBA = new Account(
114
114
  Currency.BSC_SHIBA,
115
- "Binance Smart Chain 1",
115
+ "BNB Chain 1",
116
116
  "0x4BE2E2B8872AA298D6d123b9211B53E41f611566",
117
117
  0,
118
118
  );
@@ -43,7 +43,7 @@ export class AppInfos {
43
43
 
44
44
  static readonly POLYGON = new AppInfos("Polygon");
45
45
 
46
- static readonly BINANCE_SMART_CHAIN = new AppInfos("Binance Smart Chain");
46
+ static readonly BNB_CHAIN = new AppInfos("BNB Chain");
47
47
 
48
48
  static readonly TON = new AppInfos("Ton");
49
49