@ledgerhq/live-common 21.21.4 → 21.24.0-beta.0

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 (308) hide show
  1. package/lib/account/formatters.d.ts.map +1 -1
  2. package/lib/account/formatters.js +1 -0
  3. package/lib/account/formatters.js.map +1 -1
  4. package/lib/account/support.d.ts.map +1 -1
  5. package/lib/account/support.js +1 -0
  6. package/lib/account/support.js.map +1 -1
  7. package/lib/apps/polyfill.d.ts.map +1 -1
  8. package/lib/apps/polyfill.js +1 -0
  9. package/lib/apps/polyfill.js.map +1 -1
  10. package/lib/bot/engine.js +1 -1
  11. package/lib/bot/engine.js.map +1 -1
  12. package/lib/bot/specs.d.ts +1 -0
  13. package/lib/bot/specs.d.ts.map +1 -1
  14. package/lib/bot/specs.js +3 -1
  15. package/lib/bot/specs.js.map +1 -1
  16. package/lib/data/icons/react/index.d.ts +1 -0
  17. package/lib/data/icons/react/index.d.ts.map +1 -1
  18. package/lib/data/icons/react/index.js +4 -2
  19. package/lib/data/icons/react/index.js.map +1 -1
  20. package/lib/data/icons/react/sol.js +4 -2
  21. package/lib/data/icons/react/sol.js.map +1 -1
  22. package/lib/data/icons/react/ssv.d.ts +8 -0
  23. package/lib/data/icons/react/ssv.d.ts.map +1 -0
  24. package/lib/data/icons/react/ssv.js +31 -0
  25. package/lib/data/icons/react/ssv.js.map +1 -0
  26. package/lib/data/icons/reactNative/index.d.ts +1 -0
  27. package/lib/data/icons/reactNative/index.d.ts.map +1 -1
  28. package/lib/data/icons/reactNative/index.js +4 -2
  29. package/lib/data/icons/reactNative/index.js.map +1 -1
  30. package/lib/data/icons/reactNative/sol.js +4 -2
  31. package/lib/data/icons/reactNative/sol.js.map +1 -1
  32. package/lib/data/icons/reactNative/ssv.d.ts +8 -0
  33. package/lib/data/icons/reactNative/ssv.d.ts.map +1 -0
  34. package/lib/data/icons/reactNative/ssv.js +32 -0
  35. package/lib/data/icons/reactNative/ssv.js.map +1 -0
  36. package/lib/derivation.d.ts.map +1 -1
  37. package/lib/derivation.js +0 -3
  38. package/lib/derivation.js.map +1 -1
  39. package/lib/env.d.ts +10 -10
  40. package/lib/env.d.ts.map +1 -1
  41. package/lib/env.js +6 -6
  42. package/lib/env.js.map +1 -1
  43. package/lib/env.react.d.ts +1 -1
  44. package/lib/env.react.d.ts.map +1 -1
  45. package/lib/families/algorand/account.d.ts.map +1 -1
  46. package/lib/families/algorand/account.js +0 -4
  47. package/lib/families/algorand/account.js.map +1 -1
  48. package/lib/families/algorand/api/algodv2.d.ts +5 -0
  49. package/lib/families/algorand/api/algodv2.d.ts.map +1 -0
  50. package/lib/families/algorand/api/algodv2.js +118 -0
  51. package/lib/families/algorand/api/algodv2.js.map +1 -0
  52. package/lib/families/algorand/api/algodv2.types.d.ts +24 -0
  53. package/lib/families/algorand/api/algodv2.types.d.ts.map +1 -0
  54. package/lib/families/algorand/api/algodv2.types.js +3 -0
  55. package/lib/families/algorand/api/algodv2.types.js.map +1 -0
  56. package/lib/families/algorand/api/index.d.ts +5 -0
  57. package/lib/families/algorand/api/index.d.ts.map +1 -0
  58. package/lib/families/algorand/api/index.js +17 -0
  59. package/lib/families/algorand/api/index.js.map +1 -0
  60. package/lib/families/algorand/api/indexer.d.ts +3 -0
  61. package/lib/families/algorand/api/indexer.d.ts.map +1 -0
  62. package/lib/families/algorand/api/indexer.js +134 -0
  63. package/lib/families/algorand/api/indexer.js.map +1 -0
  64. package/lib/families/algorand/api/indexer.types.d.ts +35 -0
  65. package/lib/families/algorand/api/indexer.types.d.ts.map +1 -0
  66. package/lib/families/algorand/api/indexer.types.js +10 -0
  67. package/lib/families/algorand/api/indexer.types.js.map +1 -0
  68. package/lib/families/algorand/bridge/js.d.ts +8 -0
  69. package/lib/families/algorand/bridge/js.d.ts.map +1 -0
  70. package/lib/families/algorand/bridge/js.js +85 -0
  71. package/lib/families/algorand/bridge/js.js.map +1 -0
  72. package/lib/families/algorand/bridge/libcore.d.ts +3 -3
  73. package/lib/families/algorand/bridge/libcore.d.ts.map +1 -1
  74. package/lib/families/algorand/bridge/libcore.js.map +1 -1
  75. package/lib/families/algorand/bridge/mock.d.ts +2 -2
  76. package/lib/families/algorand/bridge/mock.d.ts.map +1 -1
  77. package/lib/families/algorand/bridge/mock.js.map +1 -1
  78. package/lib/families/algorand/buildTransaction.d.ts +8 -0
  79. package/lib/families/algorand/buildTransaction.d.ts.map +1 -0
  80. package/lib/families/algorand/buildTransaction.js +101 -0
  81. package/lib/families/algorand/buildTransaction.js.map +1 -0
  82. package/lib/families/algorand/cli-transaction.js +1 -1
  83. package/lib/families/algorand/cli-transaction.js.map +1 -1
  84. package/lib/families/algorand/deviceTransactionConfig.d.ts +2 -2
  85. package/lib/families/algorand/deviceTransactionConfig.d.ts.map +1 -1
  86. package/lib/families/algorand/deviceTransactionConfig.js +0 -13
  87. package/lib/families/algorand/deviceTransactionConfig.js.map +1 -1
  88. package/lib/families/algorand/hw-getAddress.d.ts.map +1 -1
  89. package/lib/families/algorand/hw-getAddress.js +2 -24
  90. package/lib/families/algorand/hw-getAddress.js.map +1 -1
  91. package/lib/families/algorand/js-broadcast.d.ts +9 -0
  92. package/lib/families/algorand/js-broadcast.d.ts.map +1 -0
  93. package/lib/families/algorand/js-broadcast.js +63 -0
  94. package/lib/families/algorand/js-broadcast.js.map +1 -0
  95. package/lib/families/algorand/js-estimateMaxSpendable.d.ts +9 -0
  96. package/lib/families/algorand/js-estimateMaxSpendable.d.ts.map +1 -0
  97. package/lib/families/algorand/js-estimateMaxSpendable.js +89 -0
  98. package/lib/families/algorand/js-estimateMaxSpendable.js.map +1 -0
  99. package/lib/families/algorand/js-getFeesForTransaction.d.ts +5 -0
  100. package/lib/families/algorand/js-getFeesForTransaction.d.ts.map +1 -0
  101. package/lib/families/algorand/js-getFeesForTransaction.js +69 -0
  102. package/lib/families/algorand/js-getFeesForTransaction.js.map +1 -0
  103. package/lib/families/algorand/js-getTransactionStatus.d.ts +11 -0
  104. package/lib/families/algorand/js-getTransactionStatus.d.ts.map +1 -0
  105. package/lib/families/algorand/js-getTransactionStatus.js +201 -0
  106. package/lib/families/algorand/js-getTransactionStatus.js.map +1 -0
  107. package/lib/families/algorand/js-prepareTransaction.d.ts +5 -0
  108. package/lib/families/algorand/js-prepareTransaction.d.ts.map +1 -0
  109. package/lib/families/algorand/js-prepareTransaction.js +101 -0
  110. package/lib/families/algorand/js-prepareTransaction.js.map +1 -0
  111. package/lib/families/algorand/js-signOperation.d.ts +10 -0
  112. package/lib/families/algorand/js-signOperation.d.ts.map +1 -0
  113. package/lib/families/algorand/js-signOperation.js +164 -0
  114. package/lib/families/algorand/js-signOperation.js.map +1 -0
  115. package/lib/families/algorand/js-synchronization.d.ts +10 -0
  116. package/lib/families/algorand/js-synchronization.d.ts.map +1 -0
  117. package/lib/families/algorand/js-synchronization.js +411 -0
  118. package/lib/families/algorand/js-synchronization.js.map +1 -0
  119. package/lib/families/algorand/libcore-buildTransaction.d.ts +2 -2
  120. package/lib/families/algorand/libcore-buildTransaction.d.ts.map +1 -1
  121. package/lib/families/algorand/libcore-getFeesForTransaction.d.ts +4 -4
  122. package/lib/families/algorand/libcore-getFeesForTransaction.d.ts.map +1 -1
  123. package/lib/families/algorand/libcore-getFeesForTransaction.js +2 -2
  124. package/lib/families/algorand/libcore-getFeesForTransaction.js.map +1 -1
  125. package/lib/families/algorand/libcore-postBuildAccount.d.ts.map +1 -1
  126. package/lib/families/algorand/libcore-postBuildAccount.js +5 -11
  127. package/lib/families/algorand/libcore-postBuildAccount.js.map +1 -1
  128. package/lib/families/algorand/libcore-signOperation.d.ts +2 -2
  129. package/lib/families/algorand/libcore-signOperation.d.ts.map +1 -1
  130. package/lib/families/algorand/libcore-signOperation.js.map +1 -1
  131. package/lib/families/algorand/logic.d.ts +10 -0
  132. package/lib/families/algorand/logic.d.ts.map +1 -1
  133. package/lib/families/algorand/logic.js +79 -1
  134. package/lib/families/algorand/logic.js.map +1 -1
  135. package/lib/families/algorand/mock.d.ts.map +1 -1
  136. package/lib/families/algorand/mock.js +4 -11
  137. package/lib/families/algorand/mock.js.map +1 -1
  138. package/lib/families/algorand/serialization.js +4 -4
  139. package/lib/families/algorand/serialization.js.map +1 -1
  140. package/lib/families/algorand/specs.d.ts +2 -2
  141. package/lib/families/algorand/specs.d.ts.map +1 -1
  142. package/lib/families/algorand/specs.js +8 -16
  143. package/lib/families/algorand/specs.js.map +1 -1
  144. package/lib/families/algorand/speculos-deviceActions.d.ts +2 -2
  145. package/lib/families/algorand/speculos-deviceActions.d.ts.map +1 -1
  146. package/lib/families/algorand/speculos-deviceActions.js +4 -0
  147. package/lib/families/algorand/speculos-deviceActions.js.map +1 -1
  148. package/lib/families/algorand/test-dataset.d.ts +2 -2
  149. package/lib/families/algorand/test-dataset.d.ts.map +1 -1
  150. package/lib/families/algorand/test-dataset.js +1 -2
  151. package/lib/families/algorand/test-dataset.js.map +1 -1
  152. package/lib/families/algorand/tokens.d.ts.map +1 -1
  153. package/lib/families/algorand/tokens.js.map +1 -1
  154. package/lib/families/algorand/transaction.d.ts +5 -5
  155. package/lib/families/algorand/transaction.d.ts.map +1 -1
  156. package/lib/families/algorand/transaction.js.map +1 -1
  157. package/lib/families/algorand/types.d.ts +7 -5
  158. package/lib/families/algorand/types.d.ts.map +1 -1
  159. package/lib/families/algorand/types.js.map +1 -1
  160. package/lib/families/bitcoin/js-prepareTransaction.d.ts.map +1 -1
  161. package/lib/families/bitcoin/js-prepareTransaction.js +3 -2
  162. package/lib/families/bitcoin/js-prepareTransaction.js.map +1 -1
  163. package/lib/families/bitcoin/js-synchronisation.d.ts.map +1 -1
  164. package/lib/families/bitcoin/js-synchronisation.js +13 -14
  165. package/lib/families/bitcoin/js-synchronisation.js.map +1 -1
  166. package/lib/families/bitcoin/wallet-btc/crypto/base.d.ts.map +1 -1
  167. package/lib/families/bitcoin/wallet-btc/crypto/base.js +30 -22
  168. package/lib/families/bitcoin/wallet-btc/crypto/base.js.map +1 -1
  169. package/lib/families/bitcoin/wallet-btc/crypto/bip32.d.ts +11 -0
  170. package/lib/families/bitcoin/wallet-btc/crypto/bip32.d.ts.map +1 -0
  171. package/lib/families/bitcoin/wallet-btc/crypto/bip32.js +32 -0
  172. package/lib/families/bitcoin/wallet-btc/crypto/bip32.js.map +1 -0
  173. package/lib/families/bitcoin/wallet-btc/crypto/decred.d.ts.map +1 -1
  174. package/lib/families/bitcoin/wallet-btc/crypto/decred.js +3 -115
  175. package/lib/families/bitcoin/wallet-btc/crypto/decred.js.map +1 -1
  176. package/lib/families/bitcoin/wallet-btc/storage/index.d.ts +24 -8
  177. package/lib/families/bitcoin/wallet-btc/storage/index.d.ts.map +1 -1
  178. package/lib/families/bitcoin/wallet-btc/storage/index.js +114 -128
  179. package/lib/families/bitcoin/wallet-btc/storage/index.js.map +1 -1
  180. package/lib/families/bitcoin/wallet-btc/storage/types.d.ts +8 -7
  181. package/lib/families/bitcoin/wallet-btc/storage/types.d.ts.map +1 -1
  182. package/lib/families/bitcoin/wallet-btc/xpub.d.ts.map +1 -1
  183. package/lib/families/bitcoin/wallet-btc/xpub.js +42 -63
  184. package/lib/families/bitcoin/wallet-btc/xpub.js.map +1 -1
  185. package/lib/families/tezos/bridge/js.d.ts.map +1 -1
  186. package/lib/families/tezos/bridge/js.js +90 -50
  187. package/lib/families/tezos/bridge/js.js.map +1 -1
  188. package/lib/families/tezos/bridge/libcore.d.ts.map +1 -1
  189. package/lib/families/tezos/bridge/libcore.js +2 -1
  190. package/lib/families/tezos/bridge/libcore.js.map +1 -1
  191. package/lib/families/tezos/bridge/mock.d.ts.map +1 -1
  192. package/lib/families/tezos/bridge/mock.js +2 -1
  193. package/lib/families/tezos/bridge/mock.js.map +1 -1
  194. package/lib/families/tezos/signOperation.d.ts.map +1 -1
  195. package/lib/families/tezos/signOperation.js +37 -19
  196. package/lib/families/tezos/signOperation.js.map +1 -1
  197. package/lib/families/tezos/specs.d.ts.map +1 -1
  198. package/lib/families/tezos/specs.js +8 -4
  199. package/lib/families/tezos/specs.js.map +1 -1
  200. package/lib/families/tezos/speculos-deviceActions.js +6 -7
  201. package/lib/families/tezos/speculos-deviceActions.js.map +1 -1
  202. package/lib/families/tezos/synchronisation.d.ts.map +1 -1
  203. package/lib/families/tezos/synchronisation.js +8 -5
  204. package/lib/families/tezos/synchronisation.js.map +1 -1
  205. package/lib/families/tezos/synchronisation.test.d.ts.map +1 -1
  206. package/lib/families/tezos/synchronisation.test.js +0 -3
  207. package/lib/families/tezos/synchronisation.test.js.map +1 -1
  208. package/lib/families/tezos/test-dataset.d.ts +2 -2
  209. package/lib/families/tezos/test-dataset.d.ts.map +1 -1
  210. package/lib/families/tezos/test-dataset.js +45 -319
  211. package/lib/families/tezos/test-dataset.js.map +1 -1
  212. package/lib/families/tezos/transaction.d.ts +2 -2
  213. package/lib/families/tezos/transaction.d.ts.map +1 -1
  214. package/lib/families/tezos/transaction.js +4 -4
  215. package/lib/families/tezos/transaction.js.map +1 -1
  216. package/lib/families/tezos/types.d.ts +2 -0
  217. package/lib/families/tezos/types.d.ts.map +1 -1
  218. package/lib/families/tezos/types.js.map +1 -1
  219. package/lib/generated/bridge/js.d.ts +4 -0
  220. package/lib/generated/bridge/js.d.ts.map +1 -1
  221. package/lib/generated/bridge/js.js +26 -24
  222. package/lib/generated/bridge/js.js.map +1 -1
  223. package/lib/generated/bridge/libcore.d.ts +1 -1
  224. package/lib/generated/bridge/mock.d.ts +1 -1
  225. package/lib/generated/specs.d.ts +1 -1
  226. package/lib/generated/speculos-deviceActions.d.ts +1 -1
  227. package/lib/generated/test-dataset.d.ts +1 -1
  228. package/lib/generated/transaction.d.ts +4 -4
  229. package/lib/libcore/buildAccount/index.d.ts.map +1 -1
  230. package/lib/libcore/buildAccount/index.js +0 -1
  231. package/lib/libcore/buildAccount/index.js.map +1 -1
  232. package/lib/mock/account.js +21 -21
  233. package/lib/mock/account.js.map +1 -1
  234. package/lib/types/operation.d.ts +1 -1
  235. package/lib/types/operation.d.ts.map +1 -1
  236. package/package.json +10 -9
  237. package/src/__tests__/__snapshots__/all.libcore.ts.snap +0 -107
  238. package/src/account/formatters.ts +1 -0
  239. package/src/account/support.ts +1 -0
  240. package/src/apps/polyfill.ts +1 -0
  241. package/src/bot/engine.ts +1 -1
  242. package/src/bot/specs.ts +7 -1
  243. package/src/data/icons/react/index.tsx +1 -0
  244. package/src/data/icons/react/sol.tsx +1 -1
  245. package/src/data/icons/react/ssv.tsx +12 -0
  246. package/src/data/icons/reactNative/index.tsx +1 -0
  247. package/src/data/icons/reactNative/sol.tsx +1 -1
  248. package/src/data/icons/reactNative/ssv.tsx +13 -0
  249. package/src/data/icons/svg/SOL.svg +1 -3
  250. package/src/data/icons/svg/SSV.svg +4 -0
  251. package/src/derivation.ts +0 -2
  252. package/src/env.ts +6 -6
  253. package/src/families/algorand/account.ts +0 -9
  254. package/src/families/algorand/api/algodv2.ts +68 -0
  255. package/src/families/algorand/api/algodv2.types.ts +27 -0
  256. package/src/families/algorand/api/index.ts +4 -0
  257. package/src/families/algorand/api/indexer.ts +99 -0
  258. package/src/families/algorand/api/indexer.types.ts +41 -0
  259. package/src/families/algorand/bridge/js.ts +46 -0
  260. package/src/families/algorand/bridge/libcore.ts +4 -4
  261. package/src/families/algorand/bridge/mock.ts +3 -3
  262. package/src/families/algorand/buildTransaction.ts +100 -0
  263. package/src/families/algorand/cli-transaction.ts +1 -1
  264. package/src/families/algorand/deviceTransactionConfig.ts +2 -16
  265. package/src/families/algorand/hw-getAddress.ts +1 -10
  266. package/src/families/algorand/js-broadcast.ts +17 -0
  267. package/src/families/algorand/js-estimateMaxSpendable.ts +51 -0
  268. package/src/families/algorand/js-getFeesForTransaction.ts +25 -0
  269. package/src/families/algorand/js-getTransactionStatus.ts +178 -0
  270. package/src/families/algorand/js-prepareTransaction.ts +42 -0
  271. package/src/families/algorand/js-signOperation.ts +145 -0
  272. package/src/families/algorand/js-synchronization.ts +433 -0
  273. package/src/families/algorand/libcore-buildTransaction.ts +2 -2
  274. package/src/families/algorand/libcore-getFeesForTransaction.ts +4 -4
  275. package/src/families/algorand/libcore-postBuildAccount.ts +2 -7
  276. package/src/families/algorand/libcore-signOperation.ts +2 -2
  277. package/src/families/algorand/logic.ts +47 -0
  278. package/src/families/algorand/mock.ts +2 -12
  279. package/src/families/algorand/serialization.ts +4 -4
  280. package/src/families/algorand/specs.ts +16 -22
  281. package/src/families/algorand/speculos-deviceActions.ts +87 -82
  282. package/src/families/algorand/test-dataset.ts +5 -6
  283. package/src/families/algorand/tokens.ts +1 -0
  284. package/src/families/algorand/transaction.ts +13 -4
  285. package/src/families/algorand/types.ts +10 -5
  286. package/src/families/bitcoin/js-prepareTransaction.ts +3 -2
  287. package/src/families/bitcoin/js-synchronisation.ts +17 -15
  288. package/src/families/bitcoin/wallet-btc/crypto/base.ts +33 -21
  289. package/src/families/bitcoin/wallet-btc/crypto/bip32.ts +36 -0
  290. package/src/families/bitcoin/wallet-btc/crypto/decred.ts +3 -155
  291. package/src/families/bitcoin/wallet-btc/storage/index.ts +23 -11
  292. package/src/families/bitcoin/wallet-btc/storage/types.ts +8 -10
  293. package/src/families/bitcoin/wallet-btc/xpub.ts +14 -10
  294. package/src/families/tezos/bridge/js.ts +77 -36
  295. package/src/families/tezos/bridge/libcore.ts +1 -0
  296. package/src/families/tezos/bridge/mock.ts +1 -0
  297. package/src/families/tezos/signOperation.ts +31 -8
  298. package/src/families/tezos/specs.ts +16 -5
  299. package/src/families/tezos/speculos-deviceActions.ts +5 -5
  300. package/src/families/tezos/synchronisation.test.ts +0 -3
  301. package/src/families/tezos/synchronisation.ts +7 -4
  302. package/src/families/tezos/test-dataset.ts +33 -363
  303. package/src/families/tezos/transaction.ts +7 -1
  304. package/src/families/tezos/types.ts +2 -0
  305. package/src/generated/bridge/js.ts +3 -0
  306. package/src/libcore/buildAccount/index.ts +1 -2
  307. package/src/mock/account.ts +27 -27
  308. package/src/types/operation.ts +9 -4
@@ -5566,16 +5566,6 @@ Array [
5566
5566
  "operator": undefined,
5567
5567
  "recipients": Array [
5568
5568
  "3P4ZNTpZH81H8z5rzsZPYRAHdbCeepy24S",
5569
- "39dN3Yh3JoKKYHBE125V3oseNxqEazrZNT",
5570
- "361eHKcTxvCRyFntqULCU3T3uq5BB5F7SA",
5571
- "36GF7JNYDG5YxK3tVcsF1rvxLEGZfoCVqJ",
5572
- "3P8dNFWTbcK9k3qFaTqjLB3ApiRLjXueRs",
5573
- "1JA74bnt3rhkH1ZbzVaxHiKz4CNqUqqBsc",
5574
- "16cb8FaMs1vge2fAsg8CuSE5SEnmDqzynt",
5575
- "19VZfg47ADTauA6cktMuQNiDkbHGLuRDYE",
5576
- "19FBokKEYLSthbk9Tg6A9JGcD3p7Ygx889",
5577
- "16GCAeS8oZ1oRQLdz29ckQfjMp6Qa7mPVY",
5578
- "3GEzxpE35ajZThSpMBu8LLEB3S8QkLRYiF",
5579
5569
  ],
5580
5570
  "senders": Array [
5581
5571
  "1GHiAwwxX5RR6MFTtDnD1e9Q2DssDut7Bh",
@@ -8169,103 +8159,7 @@ Array [
8169
8159
  "id": "js:2:bitcoin:xpub6CKb86o7RHSD1tDBFKwPgEZ5Q83gnRPG7Bs5HzBRUxcm4dvLEPnSTWP8C7c4P71GgMCk1Fw6xS6Ki4XC6bGAQcxE8gc9KJHXzQnErDtwTa6:segwit-efe8d2fd21349d7b2827b058c3d863538eae1ad2685516d6bdb6b80fca85af30-IN",
8170
8160
  "operator": undefined,
8171
8161
  "recipients": Array [
8172
- "3Jc2AiR82JJdZ91CpcJH9TQMPm2NFstFp1",
8173
- "bc1qaq0sdjddu666zm9rr58l2nx008nf002am9qx83",
8174
- "bc1qdpvgd8rdc9gmtmcqupdahaxxlfkahprkte6kn0",
8175
- "bc1qvy650pv32mlwlggl45n7sphsrwsk7u3vkcjg7s",
8176
- "3FGHK3ZPfFSD5Jffx5ZCMUegFJdMEZp6F6",
8177
- "1E8JvjXBV7rg1GErmWKt9ZuyeLCcYc9hyi",
8178
- "38SHEZQAAsBpMDEDS5GuRu7edvjxXAt2hk",
8179
- "1EgWPd5VA57zY3VyZ7XHJHNTyj7nHpvmia",
8180
- "bc1qh8z7hauj8kyacw0zngtuxpsnt4vmte6ld75gdu",
8181
- "3A5PCMt2e6QNqd2dHNjBqPZLaDuVDgWSzV",
8182
- "3NieCQwhFb99b4Le1JhDB8r7LLyRVMHyhG",
8183
- "3QkKLy6rGQtAMjJuRdKijhCVjusDcqY66d",
8184
- "3F2Fi6HwLad68oi4QGYpFbDNDjiHoa2crf",
8185
- "bc1q4yu4sx8swc6tgps9lvud78jfz87jpw24e0upjr",
8186
- "36vbV47FkSUpeGPasDhB36CbrbfbC4ca7Q",
8187
- "3KAq1EcHmb54qTKAQpyy7o1sheAStq8ddf",
8188
- "bc1q935erkg0xkfmlazexzkkq24z84d9nu86edfn7y",
8189
- "3ExsrSjXcSYhfaABAx3SnqvTtF7o9dng7p",
8190
- "3F17UvsvDDazG8F795P6QjTTGFXsFZahRH",
8191
- "3PRwk5nfYPWSsbr8LcNtj33qYtcGFrTHPw",
8192
- "39zHVK98pRiZW17HhgbBgbe7g9DoDv1C9H",
8193
- "bc1qduaughynrt4rrr3xdu4sszxdpn8ur7n5hg2n0z",
8194
- "3QvTF3fzJtBieb3spx2KaGZKe5QkqCzgDP",
8195
- "3ELrydVs6B4zhDQiLEWAKDyN7pt6K4GM1F",
8196
- "38XFHuFfWhg77n59xwhwLbgtretho2WUZG",
8197
- "35odLH5jc89dneJGxr5s4vrprqL5EBysqF",
8198
- "39XvDCp5eTEfbyUVTmqzAYJ66xPhgWtjEw",
8199
- "373ZFgRmpXTbimg7xK3iLDXMCEKCGwu7BY",
8200
- "3AUAKeFfwkz7gLRasvEfjrZd5pPiKZNSzA",
8201
- "33uoRcKdtVKUQjNhE74f2BQwqPWgKpc8VJ",
8202
8162
  "3G4ViRo3PUMH6G61S8gBvaABAAgHD5a7ZM",
8203
- "33iik7ZT9i1KfGtQ62ex1bwxuESAYTFjpe",
8204
- "3GhTQ42UamN8Br56pskasZdmSNFo5NkwF8",
8205
- "3GhXBXYNxJjGLsesSvorWQTJiGr5twkrn4",
8206
- "bc1qhnx0w2jx2kgclvl2k70gph3vjvzgxyd7q0g8k4",
8207
- "bc1q38f2339wtahx3lcylpudnfcv3yyk836r0pdr40",
8208
- "3PNjvVmptgCNrhGMDrU6XWW1Y1Bcee6oT2",
8209
- "3CDg7eYgptT8v3jccFFpZEGZRNZTJW2VNA",
8210
- "38xoEaT1NR178iqXQwwguVzob9YzbFbRvG",
8211
- "3PzfoNsoJPefhpLtgdhdV5rnU4wmp5SkoL",
8212
- "bc1qmfnly0eawda5r24acldj0zlvd574qwdgf94jwe",
8213
- "3H3r5DCUdLRPnYETg9SQtag3Gz94hYqvF8",
8214
- "3J6oUiNhkxM3Lz1TZ1sCjjw6GCT6cCi5we",
8215
- "bc1qrwjxw7hhv728a7hukwy4lgarypju623ldl3f05",
8216
- "3E1CQMn3aC6oP7k5LYcXZ96QnmeRL7WgUb",
8217
- "3JKPxCdSbSKkz4jsL2f6qXFNwLsH1uez2q",
8218
- "bc1q3953pvmdtacclgvxpl6aqa8r6p4xyqhr8gsdgk",
8219
- "3MgkgeUf1YmZ9HLLUEYMJ2hm3cQ3CKBYmJ",
8220
- "bc1qkypmfj9jr7v7e95t6khw853rtfp62sk8s0qjef",
8221
- "354B8dgNGeKFqDZJcpVX4C6WUu2s3hRF7H",
8222
- "35bxt1NyamKCRhGJRLaBw61oKXkGpMnWuF",
8223
- "13pgMz1vDjAArY26id2jjpBTdHLo2DTXgz",
8224
- "3A76vCh5a4MA1eVZumTNm3bKmSo5fBGGPT",
8225
- "37QCGyCmp849Av4HSrByATrJQLs4VJNt5C",
8226
- "34TgtAXt1DUKJG2YAqKp1nt5zUsR4uYN4w",
8227
- "bc1q55vkq2weafgqwzwdvel46hj6xgsfnz8vzz68gp",
8228
- "3MXmnuhoixnCrET7QTZ21z857t8s2qWkHh",
8229
- "bc1q042sm59em2z2ruprynymp5mgf888pvdnza74wm",
8230
- "1N86q7JYb6HxM1TjrK4gha9aQNVge2TTnR",
8231
- "3LoDZAghtN2QeMf4xgCQTDgo9ibnUPHUkY",
8232
- "33byPkR5v5G94yBKCHS4c7RXXCX3Nvi7N6",
8233
- "3Ho6Y8bt1g1BopzjcGTLMQ7DtxZuZpuPcw",
8234
- "bc1q83sf9uvjmr92mwy3y5j9rxmd2q7h28hshn2ejq",
8235
- "3D3pY5YjYXsijimv3G1H5bVnpNqL5Fod7n",
8236
- "3HZbWxTC3MihJb8LryiiWetdhg7WHBwDZY",
8237
- "1M9ciK5F9mWjoXgNdYf9eLi4PhXwkSm4ht",
8238
- "bc1qcrtxgwt92zr4xr5g3h78adz4xn492y93703kn2",
8239
- "39ZWjHTrNgfmYCsqGsPxmNmTV97Uigy22k",
8240
- "3MavZxQSTH6JAGybD7Ca5ZFbYF6Ph59g5u",
8241
- "33xeESivakwS6rMoZvtmwi4RDDmZ7YqYML",
8242
- "3Pp7C6F5VHdJDMdQfpnvTEzMVsmafVJpxX",
8243
- "3AZK7qSKAwx7Rnbf22TDGJdEWsRGf7RXpk",
8244
- "bc1q0kg67ap0syeyy3k0gseucz29y7kxq8clf79egy",
8245
- "3MHj8t455ZYovDribvzAjvUERKWPwJvMJu",
8246
- "37GS3GGFrtzS5nZNMh9Fd1i2Gzn2ra5TeM",
8247
- "bc1qsr7ea4tl2csdcga00jzx3yj8pt60gx3r7mhhzp",
8248
- "bc1qxnxuerl0pm35d9wxuvh4a2ujg6f4au9zexg2xv",
8249
- "3QmSEZsiZafsUSGXNafNcwmtrgYzHhbYi3",
8250
- "3CjLiSWHJs4VuXneSxE51fSkTFr8rHKHWf",
8251
- "36aAMuCVkQ9EZQ6vW17kbpAKn38FmZxF8g",
8252
- "bc1qze42xwwxmn7rumaj3wjhykwhpaazzexfr27k2t",
8253
- "1FcmjYLAjaYofoWzADoDyfu52af2Jne5jd",
8254
- "34YSKaSekucu4gR4kcVJCKF2aYnuapcy2g",
8255
- "3Qs9Td6w3UUMHaYwJjVSDfrTSq8bqqj7EA",
8256
- "32dCda5w5HRmvYHBoVNZUvCgPmwcCv8MQc",
8257
- "3Di64LBBeBp328J5wVyeuMYDevD653xiTE",
8258
- "38NXg2iAQUQD29UeckCQLDabsH8f13BY2d",
8259
- "18gCFC3FShPo5Vw51zxQ6rqwREriHDZtLF",
8260
- "39V2KVFz7i9JCa63oSpa7TYZtLr7WGXCDT",
8261
- "3JyahsGAmMb3uNcyJdRkzhx5Jxa6xcVe4X",
8262
- "3MS3C44UtBwtTN7f59kRX6oaUWisTDdj9y",
8263
- "3JLm7gMtkpPDuCxfiFxXu6C6tiQFdNSJTz",
8264
- "bc1q56e64r7hpuhma4nkapesy43pyf9u9rzf2nr78z",
8265
- "3EKy9DZMoATcSvWvpF2PawjbhLeaiWPf9R",
8266
- "bc1qk7c904l8tklxyr2n6xx0tnx0sqg3ze3yvn9a8u",
8267
- "bc1qskeepvre8zut4ja3p3eyfq7p68u29ywuvjv0ls",
8268
- "3Jzuj9ZfahdFFMuCDi8EXikZSc6aBjqrRp",
8269
8163
  ],
8270
8164
  "senders": Array [
8271
8165
  "32U9FSutLUAJ2XvpArnRYYwCQ9dCdxNbEQ",
@@ -14785,7 +14679,6 @@ Array [
14785
14679
  "operator": undefined,
14786
14680
  "recipients": Array [
14787
14681
  "DPjGymoyCoctCcSmBtL6NtAFUW9mURi5ZA",
14788
- "DPo316Hrotqkhz9xELTxLSAXd3MvTzKsJk",
14789
14682
  ],
14790
14683
  "senders": Array [
14791
14684
  "D9GqmkGCpgtnXP7xMD78v9xfqeDkqBZBMT",
@@ -111,6 +111,7 @@ const cliFormat = (account, level?: string) => {
111
111
 
112
112
  if (family && family.formatAccountSpecifics) {
113
113
  str += family.formatAccountSpecifics(account);
114
+ str += "\n";
114
115
  }
115
116
 
116
117
  const subAccounts = account.subAccounts || [];
@@ -21,6 +21,7 @@ import { getAccountBridge } from "../bridge";
21
21
  import jsBridges from "../generated/bridge/js";
22
22
 
23
23
  const experimentalIntegrations = [
24
+ "algorand",
24
25
  "bitcoin",
25
26
  "bsc",
26
27
  "bitcoin_cash",
@@ -52,6 +52,7 @@ export const whitelistDependencies = ["Decred", "Decred Testnet"];
52
52
  ["RocketPool", "Ethereum"],
53
53
  ["POAP", "Ethereum"],
54
54
  ["OlympusDAO", "Ethereum"],
55
+ ["Rarible", "Ethereum"],
55
56
  ].forEach(([name, dep]) => declareDep(name, dep));
56
57
  export const getDependencies = (appName: string): string[] =>
57
58
  directDep[appName] || [];
package/src/bot/engine.ts CHANGED
@@ -678,7 +678,7 @@ function transactionTest<T>({
678
678
  const dt = Date.now().valueOf() - operation.date.valueOf();
679
679
  invariant(dt > 0, "operation.date must not be in in future");
680
680
  expect(dt).toBeLessThan(timingThreshold);
681
- invariant(!operation.hasFailed, "operation must be hasFailed");
681
+ invariant(!operation.hasFailed, "operation has failed");
682
682
  const { blockAvgTime } = account.currency;
683
683
 
684
684
  if (blockAvgTime && account.blockHeight) {
package/src/bot/specs.ts CHANGED
@@ -6,6 +6,9 @@ import sample from "lodash/sample";
6
6
  import { isAccountEmpty } from "../account";
7
7
  import type { DeviceAction, DeviceActionArg } from "./types";
8
8
  import type { Account, Transaction } from "../types";
9
+
10
+ const stepValueTransformDefault = (s) => s.trim();
11
+
9
12
  // TODO should weight the choice to favorize accounts with small amounts
10
13
  export function pickSiblings(siblings: Account[], maxAccount = 5): Account {
11
14
  const withoutEmpties = siblings.filter((a) => a.used);
@@ -37,6 +40,7 @@ type State<T extends Transaction> = {
37
40
  };
38
41
  type Step<T extends Transaction> = {
39
42
  title: string;
43
+ stepValueTransform?: (string) => string;
40
44
  expectedValue?: (
41
45
  arg0: DeviceActionArg<T, State<T>>,
42
46
  acc: Array<{
@@ -79,10 +83,12 @@ export function deviceActionFlow<T extends Transaction>(
79
83
  // there were accumulated text and we are on new step, we need to release it and compare to expected
80
84
  if (currentStep && currentStep.expectedValue) {
81
85
  const { expectedValue, ignoreAssertionFailure } = currentStep;
86
+ const stepValueTransform =
87
+ currentStep.stepValueTransform || stepValueTransformDefault;
82
88
 
83
89
  if (!ignoreAssertionFailure) {
84
90
  expect({
85
- [stepTitle]: stepValue.trim(),
91
+ [stepTitle]: stepValueTransform(stepValue),
86
92
  }).toMatchObject({
87
93
  [stepTitle]: expectedValue(arg, acc).trim(),
88
94
  });
@@ -352,6 +352,7 @@ export { default as sol } from "./sol";
352
352
  export { default as spank } from "./spank";
353
353
  export { default as sphtx } from "./sphtx";
354
354
  export { default as srn } from "./srn";
355
+ export { default as ssv } from "./ssv";
355
356
  export { default as stak } from "./stak";
356
357
  export { default as start } from "./start";
357
358
  export { default as steem } from "./steem";
@@ -6,7 +6,7 @@ interface Props {
6
6
  };
7
7
 
8
8
  function sol({size, color = "currentColor"}: Props) {
9
- return <svg width={size} height={size} viewBox="0 0 24 24" fill="none"><path d="M9.925 18.687a.59.59 0 01.415-.17h14.366a.29.29 0 01.207.497l-2.838 2.815a.59.59 0 01-.415.171H7.294a.291.291 0 01-.207-.498l2.838-2.815zm0-10.517A.59.59 0 0110.34 8h14.366c.261 0 .392.314.207.498l-2.838 2.815a.59.59 0 01-.415.17H7.294a.291.291 0 01-.207-.497L9.925 8.17zm12.15 5.225a.59.59 0 00-.415-.17H7.294a.291.291 0 00-.207.498l2.838 2.815c.11.109.26.17.415.17h14.366a.291.291 0 00.207-.498l-2.838-2.815z" fill={color} fillRule="nonzero" /></svg>;
9
+ return <svg width={size} height={size} viewBox="0 0 24 24"><path d="M2.41,7.77H18.09a.51.51,0,0,0,.37-.16l3.43-3.67a.4.4,0,0,0-.3-.67H5.91a.51.51,0,0,0-.37.16L2.11,7.1A.4.4,0,0,0,2.41,7.77Z" /><path d="M2.41,20.77H18.09a.51.51,0,0,0,.37-.16l3.43-3.67a.4.4,0,0,0-.3-.67H5.91a.51.51,0,0,0-.37.16L2.11,20.1A.4.4,0,0,0,2.41,20.77Z" /><path d="M21.59,14.27H5.91a.51.51,0,0,1-.37-.16L2.11,10.44a.4.4,0,0,1,.3-.67H18.09a.51.51,0,0,1,.37.16l3.43,3.67A.4.4,0,0,1,21.59,14.27Z" /></svg>;
10
10
  }
11
11
 
12
12
  export default sol;
@@ -0,0 +1,12 @@
1
+
2
+ import * as React from "react";
3
+ interface Props {
4
+ size: number;
5
+ color?: string;
6
+ };
7
+
8
+ function ssv({size, color = "currentColor"}: Props) {
9
+ return <svg width={size} height={size} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path opacity={0.62} d="M177.641 404.919L242.226 325.315C248.972 316.999 261.661 316.999 268.407 325.315L332.991 404.919C338.013 411.108 338.013 419.97 332.991 426.16L268.407 505.764C261.661 514.079 248.972 514.079 242.226 505.764L177.641 426.16C172.62 419.97 172.62 411.108 177.641 404.919Z" fill={color} /><path fillRule="evenodd" clipRule="evenodd" d="M242.226 6.23638L177.641 85.8404C172.62 92.0303 172.62 100.892 177.641 107.082L242.226 186.686C248.972 195.001 261.661 195.001 268.407 186.686L332.991 107.082C338.013 100.892 338.013 92.0303 332.991 85.8404L268.407 6.23639C261.661 -2.07879 248.972 -2.0788 242.226 6.23638ZM76.7665 210.257L141.351 130.653C148.097 122.338 160.786 122.338 167.532 130.653L232.116 210.257C237.138 216.447 237.138 225.308 232.116 231.498L167.532 311.102C160.786 319.417 148.097 319.417 141.351 311.102L76.7665 231.498C71.7445 225.308 71.7445 216.447 76.7665 210.257ZM278.579 210.257L343.163 130.653C349.91 122.338 362.598 122.338 369.344 130.653L433.929 210.257C438.951 216.447 438.951 225.308 433.929 231.498L369.344 311.102C362.598 319.417 349.91 319.417 343.163 311.102L278.579 231.498C273.557 225.308 273.557 216.447 278.579 210.257Z" fill={color} /></svg>;
10
+ }
11
+
12
+ export default ssv;
@@ -352,6 +352,7 @@ export { default as sol } from "./sol";
352
352
  export { default as spank } from "./spank";
353
353
  export { default as sphtx } from "./sphtx";
354
354
  export { default as srn } from "./srn";
355
+ export { default as ssv } from "./ssv";
355
356
  export { default as stak } from "./stak";
356
357
  export { default as start } from "./start";
357
358
  export { default as steem } from "./steem";
@@ -7,7 +7,7 @@ interface Props {
7
7
  };
8
8
 
9
9
  function sol({ size, color }: Props) {
10
- return <Svg width={size} height={size} viewBox="0 0 24 24" fill="none"><Path d="M9.925 18.687a.59.59 0 01.415-.17h14.366a.29.29 0 01.207.497l-2.838 2.815a.59.59 0 01-.415.171H7.294a.291.291 0 01-.207-.498l2.838-2.815zm0-10.517A.59.59 0 0110.34 8h14.366c.261 0 .392.314.207.498l-2.838 2.815a.59.59 0 01-.415.17H7.294a.291.291 0 01-.207-.497L9.925 8.17zm12.15 5.225a.59.59 0 00-.415-.17H7.294a.291.291 0 00-.207.498l2.838 2.815c.11.109.26.17.415.17h14.366a.291.291 0 00.207-.498l-2.838-2.815z" fill={color} fillRule="nonzero" /></Svg>;
10
+ return <Svg width={size} height={size} viewBox="0 0 24 24"><Path d="M2.41,7.77H18.09a.51.51,0,0,0,.37-.16l3.43-3.67a.4.4,0,0,0-.3-.67H5.91a.51.51,0,0,0-.37.16L2.11,7.1A.4.4,0,0,0,2.41,7.77Z" /><Path d="M2.41,20.77H18.09a.51.51,0,0,0,.37-.16l3.43-3.67a.4.4,0,0,0-.3-.67H5.91a.51.51,0,0,0-.37.16L2.11,20.1A.4.4,0,0,0,2.41,20.77Z" /><Path d="M21.59,14.27H5.91a.51.51,0,0,1-.37-.16L2.11,10.44a.4.4,0,0,1,.3-.67H18.09a.51.51,0,0,1,.37.16l3.43,3.67A.4.4,0,0,1,21.59,14.27Z" /></Svg>;
11
11
  }
12
12
 
13
13
  export default sol;
@@ -0,0 +1,13 @@
1
+
2
+ import * as React from "react";
3
+ import Svg, { Path } from "react-native-svg";
4
+ interface Props {
5
+ size: number;
6
+ color: string;
7
+ };
8
+
9
+ function ssv({ size, color }: Props) {
10
+ return <Svg width={size} height={size} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><Path opacity={0.62} d="M177.641 404.919L242.226 325.315C248.972 316.999 261.661 316.999 268.407 325.315L332.991 404.919C338.013 411.108 338.013 419.97 332.991 426.16L268.407 505.764C261.661 514.079 248.972 514.079 242.226 505.764L177.641 426.16C172.62 419.97 172.62 411.108 177.641 404.919Z" fill={color} /><Path fillRule="evenodd" clipRule="evenodd" d="M242.226 6.23638L177.641 85.8404C172.62 92.0303 172.62 100.892 177.641 107.082L242.226 186.686C248.972 195.001 261.661 195.001 268.407 186.686L332.991 107.082C338.013 100.892 338.013 92.0303 332.991 85.8404L268.407 6.23639C261.661 -2.07879 248.972 -2.0788 242.226 6.23638ZM76.7665 210.257L141.351 130.653C148.097 122.338 160.786 122.338 167.532 130.653L232.116 210.257C237.138 216.447 237.138 225.308 232.116 231.498L167.532 311.102C160.786 319.417 148.097 319.417 141.351 311.102L76.7665 231.498C71.7445 225.308 71.7445 216.447 76.7665 210.257ZM278.579 210.257L343.163 130.653C349.91 122.338 362.598 122.338 369.344 130.653L433.929 210.257C438.951 216.447 438.951 225.308 433.929 231.498L369.344 311.102C362.598 319.417 349.91 319.417 343.163 311.102L278.579 231.498C273.557 225.308 273.557 216.447 278.579 210.257Z" fill={color} /></Svg>;
11
+ }
12
+
13
+ export default ssv;
@@ -1,3 +1 @@
1
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none">
2
- <path d="M9.925 18.687a.59.59 0 01.415-.17h14.366a.29.29 0 01.207.497l-2.838 2.815a.59.59 0 01-.415.171H7.294a.291.291 0 01-.207-.498l2.838-2.815zm0-10.517A.59.59 0 0110.34 8h14.366c.261 0 .392.314.207.498l-2.838 2.815a.59.59 0 01-.415.17H7.294a.291.291 0 01-.207-.497L9.925 8.17zm12.15 5.225a.59.59 0 00-.415-.17H7.294a.291.291 0 00-.207.498l2.838 2.815c.11.109.26.17.415.17h14.366a.291.291 0 00.207-.498l-2.838-2.815z" fill="#FFF" fill-rule="nonzero"/>
3
- </svg>
1
+ <svg width="24" height="24" viewBox="0 0 24 24"><path d="M2.41,7.77H18.09a.51.51,0,0,0,.37-.16l3.43-3.67a.4.4,0,0,0-.3-.67H5.91a.51.51,0,0,0-.37.16L2.11,7.1A.4.4,0,0,0,2.41,7.77Z"/><path d="M2.41,20.77H18.09a.51.51,0,0,0,.37-.16l3.43-3.67a.4.4,0,0,0-.3-.67H5.91a.51.51,0,0,0-.37.16L2.11,20.1A.4.4,0,0,0,2.41,20.77Z"/><path d="M21.59,14.27H5.91a.51.51,0,0,1-.37-.16L2.11,10.44a.4.4,0,0,1,.3-.67H18.09a.51.51,0,0,1,.37.16l3.43,3.67A.4.4,0,0,1,21.59,14.27Z"/></svg>
@@ -0,0 +1,4 @@
1
+ <svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path opacity="0.62" d="M177.641 404.919L242.226 325.315C248.972 316.999 261.661 316.999 268.407 325.315L332.991 404.919C338.013 411.108 338.013 419.97 332.991 426.16L268.407 505.764C261.661 514.079 248.972 514.079 242.226 505.764L177.641 426.16C172.62 419.97 172.62 411.108 177.641 404.919Z" fill="#1BA5F8"/>
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M242.226 6.23638L177.641 85.8404C172.62 92.0303 172.62 100.892 177.641 107.082L242.226 186.686C248.972 195.001 261.661 195.001 268.407 186.686L332.991 107.082C338.013 100.892 338.013 92.0303 332.991 85.8404L268.407 6.23639C261.661 -2.07879 248.972 -2.0788 242.226 6.23638ZM76.7665 210.257L141.351 130.653C148.097 122.338 160.786 122.338 167.532 130.653L232.116 210.257C237.138 216.447 237.138 225.308 232.116 231.498L167.532 311.102C160.786 319.417 148.097 319.417 141.351 311.102L76.7665 231.498C71.7445 225.308 71.7445 216.447 76.7665 210.257ZM278.579 210.257L343.163 130.653C349.91 122.338 362.598 122.338 369.344 130.653L433.929 210.257C438.951 216.447 438.951 225.308 433.929 231.498L369.344 311.102C362.598 319.417 349.91 319.417 343.163 311.102L278.579 231.498C273.557 225.308 273.557 216.447 278.579 210.257Z" fill="#1BA5F8"/>
4
+ </svg>
package/src/derivation.ts CHANGED
@@ -59,8 +59,6 @@ const extraConfigPerCurrency: Record<string, LibcoreConfig> = {
59
59
  algorand: {
60
60
  BLOCKCHAIN_EXPLORER_API_ENDPOINT: () =>
61
61
  getEnv("API_ALGORAND_BLOCKCHAIN_EXPLORER_API_ENDPOINT"),
62
- BLOCKCHAIN_EXPLORER_API_KEY: () =>
63
- getEnv("API_ALGORAND_BLOCKCHAIN_EXPLORER_API_KEY"),
64
62
  },
65
63
  };
66
64
  const modes = Object.freeze({
package/src/env.ts CHANGED
@@ -40,11 +40,6 @@ const envDefinitions = {
40
40
  parser: stringParser,
41
41
  desc: "Node API endpoint for algorand",
42
42
  },
43
- API_ALGORAND_BLOCKCHAIN_EXPLORER_API_KEY: {
44
- def: "",
45
- parser: stringParser,
46
- desc: "Node API key for algorand",
47
- },
48
43
  API_COSMOS_BLOCKCHAIN_EXPLORER_API_ENDPOINT: {
49
44
  def: "https://cosmoshub4.coin.ledger.com/",
50
45
  parser: stringParser,
@@ -111,7 +106,7 @@ const envDefinitions = {
111
106
  desc: "Ledger explorer API for tezos",
112
107
  },
113
108
  API_TEZOS_TZKT_API: {
114
- def: "http://xtz-tzkt-explorer.api-01.live.ledger-stg.com",
109
+ def: "https://xtz-tzkt-explorer.api.live.ledger.com",
115
110
  parser: stringParser,
116
111
  desc: "tzkt.io explorer",
117
112
  },
@@ -511,6 +506,11 @@ const envDefinitions = {
511
506
  parser: boolParser,
512
507
  desc: "enable visibility of debug apps and tools in Platform Catalog",
513
508
  },
509
+ PLATFORM_EXPERIMENTAL_APPS: {
510
+ def: false,
511
+ parser: boolParser,
512
+ desc: "enable visibility of experimental apps and tools in Platform Catalog",
513
+ },
514
514
  PLATFORM_MANIFEST_API_URL: {
515
515
  def: "https://cdn.live.ledger.com/platform/apps/v1/data.json",
516
516
  parser: stringParser,
@@ -46,15 +46,6 @@ function formatAccountSpecifics(account: Account): string {
46
46
  ) + " rewards. ";
47
47
  }
48
48
 
49
- if ((algorandResources as AlgorandResources).rewardsAccumulated.gt(0)) {
50
- str +=
51
- formatCurrencyUnit(
52
- unit,
53
- (algorandResources as AlgorandResources).rewardsAccumulated,
54
- formatConfig
55
- ) + " rewardsAccumulated. ";
56
- }
57
-
58
49
  return str;
59
50
  }
60
51
 
@@ -0,0 +1,68 @@
1
+ import { BigNumber } from "bignumber.js";
2
+ import { getEnv } from "../../../env";
3
+ import network from "../../../network";
4
+ import {
5
+ AlgoAccount,
6
+ AlgoAsset,
7
+ AlgoTransactionParams,
8
+ AlgoTransactionBroadcastResponse,
9
+ } from "./algodv2.types";
10
+
11
+ const BASE_URL = getEnv("API_ALGORAND_BLOCKCHAIN_EXPLORER_API_ENDPOINT");
12
+ const NODE_URL = `${BASE_URL}/ps2/v2`;
13
+
14
+ const fullUrl = (route: string): string => `${NODE_URL}${route}`;
15
+
16
+ export const getAccount = async (address: string): Promise<AlgoAccount> => {
17
+ const { data } = await network({
18
+ method: "GET",
19
+ url: fullUrl(`/accounts/${address}`),
20
+ });
21
+
22
+ const assets: AlgoAsset[] = data.assets
23
+ ? data.assets.map((a): AlgoAsset => {
24
+ return {
25
+ assetId: a["asset-id"].toString(),
26
+ balance: new BigNumber(a.amount),
27
+ };
28
+ })
29
+ : [];
30
+
31
+ return {
32
+ round: data.round,
33
+ address: data.address,
34
+ balance: new BigNumber(data.amount),
35
+ pendingRewards: new BigNumber(data["pending-rewards"]),
36
+ assets,
37
+ };
38
+ };
39
+
40
+ // TODO Cache
41
+ export const getTransactionParams =
42
+ async (): Promise<AlgoTransactionParams> => {
43
+ const { data } = await network({
44
+ method: "GET",
45
+ url: fullUrl(`/transactions/params`),
46
+ });
47
+
48
+ return {
49
+ fee: data["fee"],
50
+ minFee: data["min-fee"],
51
+ firstRound: data["first-round"] ?? 0,
52
+ lastRound: data["last-round"],
53
+ genesisID: data["genesis-id"],
54
+ genesisHash: data["genesis-hash"],
55
+ };
56
+ };
57
+
58
+ export const broadcastTransaction = async (
59
+ payload: string
60
+ ): Promise<string> => {
61
+ const { data }: { data: AlgoTransactionBroadcastResponse } = await network({
62
+ method: "POST",
63
+ url: fullUrl(`/transactions`),
64
+ data: payload,
65
+ });
66
+
67
+ return data.txId;
68
+ };
@@ -0,0 +1,27 @@
1
+ import { BigNumber } from "bignumber.js";
2
+
3
+ export interface AlgoAccount {
4
+ round: number;
5
+ address: string;
6
+ balance: BigNumber;
7
+ pendingRewards: BigNumber;
8
+ assets: AlgoAsset[];
9
+ }
10
+
11
+ export interface AlgoAsset {
12
+ assetId: string;
13
+ balance: BigNumber;
14
+ }
15
+
16
+ export interface AlgoTransactionParams {
17
+ fee: number;
18
+ minFee: number;
19
+ firstRound: number;
20
+ lastRound: number;
21
+ genesisHash: string;
22
+ genesisID: string;
23
+ }
24
+
25
+ export interface AlgoTransactionBroadcastResponse {
26
+ txId: string;
27
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./algodv2.types";
2
+ export * from "./algodv2";
3
+ export * from "./indexer.types";
4
+ export * from "./indexer";
@@ -0,0 +1,99 @@
1
+ import { BigNumber } from "bignumber.js";
2
+ import { getEnv } from "../../../env";
3
+ import network from "../../../network";
4
+ import {
5
+ AlgoTransaction,
6
+ AlgoTransactionDetails,
7
+ AlgoPaymentInfo,
8
+ AlgoAssetTransferInfo,
9
+ } from "./indexer.types";
10
+
11
+ const LIMIT = 100; // Max nb of transactions per request
12
+
13
+ const BASE_URL = getEnv("API_ALGORAND_BLOCKCHAIN_EXPLORER_API_ENDPOINT");
14
+ const INDEXER_URL = `${BASE_URL}/idx2/v2`;
15
+
16
+ const fullUrl = (route: string): string =>
17
+ `${INDEXER_URL}${route}?limit=${LIMIT}`;
18
+
19
+ export const getAccountTransactions = async (
20
+ address: string,
21
+ startAt?: number
22
+ ): Promise<AlgoTransaction[]> => {
23
+ const url = fullUrl(`/accounts/${address}/transactions`);
24
+
25
+ let nextToken: string | undefined;
26
+ let newRawTxs: any[] = [];
27
+ const mergedTxs: AlgoTransaction[] = [];
28
+ do {
29
+ let nextUrl: string = url;
30
+ if (startAt) {
31
+ nextUrl = nextUrl.concat(`&min-round=${startAt}`);
32
+ }
33
+ if (nextToken) {
34
+ nextUrl = nextUrl.concat(`&next=${nextToken}`);
35
+ }
36
+ const { data }: { data: { transactions: any[] } } = await network({
37
+ method: "GET",
38
+ url: nextUrl,
39
+ });
40
+ nextToken = data["next-token"];
41
+ newRawTxs = data.transactions;
42
+ newRawTxs.map(parseRawTransaction).forEach((tx) => mergedTxs.push(tx));
43
+ } while (newRawTxs.length >= LIMIT);
44
+
45
+ return mergedTxs;
46
+ };
47
+
48
+ const parseRawTransaction = (tx: any): AlgoTransaction => {
49
+ let details: AlgoTransactionDetails | undefined = undefined;
50
+ if (tx["tx-type"] === "pay") {
51
+ const info = tx["payment-transaction"];
52
+ const paymentInfo: AlgoPaymentInfo = {
53
+ amount: new BigNumber(info.amount),
54
+ recipientAddress: info.receiver,
55
+ closeAmount:
56
+ info["close-amount"] === undefined
57
+ ? undefined
58
+ : new BigNumber(info["close-amount"]),
59
+ closeToAddress: info["close-remainder-to"],
60
+ };
61
+ details = paymentInfo;
62
+ } else if (tx["tx-type"] === "axfer") {
63
+ const info = tx["asset-transfer-transaction"];
64
+ const assetTransferInfo: AlgoAssetTransferInfo = {
65
+ assetAmount: new BigNumber(info.amount),
66
+ assetId: info["asset-id"],
67
+ assetRecipientAddress: info.receiver,
68
+ assetSenderAddress: info.sender,
69
+ assetCloseAmount:
70
+ info["close-amount"] === undefined
71
+ ? undefined
72
+ : new BigNumber(info["close-amount"]),
73
+ assetCloseToAddress: tx["close-to"],
74
+ };
75
+ details = assetTransferInfo;
76
+ }
77
+
78
+ return {
79
+ id: tx.id,
80
+ timestamp: tx["round-time"],
81
+ round: tx["confirmed-round"],
82
+ senderAddress: tx.sender,
83
+ senderRewards: new BigNumber(tx["sender-rewards"]),
84
+ recipientRewards: new BigNumber(tx["receiver-rewards"]),
85
+ closeRewards:
86
+ tx["close-rewards"] === undefined
87
+ ? undefined
88
+ : new BigNumber(tx["close-rewards"]),
89
+ closeAmount:
90
+ tx["closing-amount"] === undefined
91
+ ? undefined
92
+ : new BigNumber(tx["closing-amount"]),
93
+ fee: new BigNumber(tx.fee),
94
+ note: tx.note,
95
+
96
+ type: tx["tx-type"],
97
+ details,
98
+ };
99
+ };
@@ -0,0 +1,41 @@
1
+ import { BigNumber } from "bignumber.js";
2
+
3
+ export type AlgoTransactionDetails = AlgoPaymentInfo | AlgoAssetTransferInfo;
4
+
5
+ // Define only types we explicitely support
6
+ export enum AlgoTransactionType {
7
+ PAYMENT = "pay",
8
+ ASSET_TRANSFER = "axfer",
9
+ }
10
+
11
+ export interface AlgoTransaction {
12
+ id: string;
13
+ timestamp: string; // 'round-time': 1597933539,
14
+ round: number; // 'confirmed-round': 8575676,
15
+ senderAddress: string; // sender: 'RGX5XA7DWZOZ5SLG4WQSNIFKIG4CNX4VOH23YCEX56523DQEAL3QL56XZM',
16
+ senderRewards: BigNumber; // 'sender-rewards': 0,
17
+ recipientRewards: BigNumber; //'receiver-rewards': 0,
18
+ closeRewards?: BigNumber; // 'close-rewards': 0,
19
+ closeAmount?: BigNumber; //'closing-amount': 0,
20
+ fee: BigNumber;
21
+ note: string;
22
+
23
+ type: string; // 'tx-type': 'pay'
24
+ details?: AlgoTransactionDetails;
25
+ }
26
+
27
+ export interface AlgoPaymentInfo {
28
+ amount: BigNumber;
29
+ recipientAddress: string; // receiver
30
+ closeAmount?: BigNumber; // close-amount
31
+ closeToAddress?: string; // close-remainder-to
32
+ }
33
+
34
+ export interface AlgoAssetTransferInfo {
35
+ assetId: string; // asset-id
36
+ assetAmount: BigNumber; // amount
37
+ assetRecipientAddress: string; // receiver
38
+ assetSenderAddress?: string; // sender
39
+ assetCloseAmount?: BigNumber; // close-amount
40
+ assetCloseToAddress?: string; // close-to
41
+ }
@@ -0,0 +1,46 @@
1
+ import type { AccountBridge, CurrencyBridge } from "../../../types";
2
+ import { makeAccountBridgeReceive } from "../../../bridge/jsHelpers";
3
+
4
+ import type { AlgorandTransaction } from "../types";
5
+ import { sync, scanAccounts } from "../js-synchronization";
6
+ import {
7
+ createTransaction,
8
+ prepareTransaction,
9
+ } from "../js-prepareTransaction";
10
+ import { estimateMaxSpendable } from "../js-estimateMaxSpendable";
11
+ import { getTransactionStatus } from "../js-getTransactionStatus";
12
+ import { signOperation } from "../js-signOperation";
13
+ import { broadcast } from "../js-broadcast";
14
+
15
+ const receive = makeAccountBridgeReceive();
16
+
17
+ const updateTransaction = (t, patch) => {
18
+ return { ...t, ...patch };
19
+ };
20
+
21
+ const preload = async () => Promise.resolve({});
22
+
23
+ const hydrate = () => {};
24
+
25
+ const currencyBridge: CurrencyBridge = {
26
+ preload,
27
+ hydrate,
28
+ scanAccounts,
29
+ };
30
+
31
+ const accountBridge: AccountBridge<AlgorandTransaction> = {
32
+ createTransaction,
33
+ updateTransaction,
34
+ prepareTransaction,
35
+ getTransactionStatus,
36
+ sync,
37
+ receive,
38
+ signOperation,
39
+ broadcast,
40
+ estimateMaxSpendable,
41
+ };
42
+
43
+ export default {
44
+ currencyBridge,
45
+ accountBridge,
46
+ };