@ledgerhq/coin-celo 1.1.0-next.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 (387) hide show
  1. package/.eslintrc.js +22 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/.unimportedrc.json +56 -0
  4. package/CHANGELOG.md +15 -0
  5. package/LICENSE.txt +21 -0
  6. package/jest.config.js +8 -0
  7. package/jest.integ.config.js +8 -0
  8. package/lib/bridge/broadcast.d.ts +5 -0
  9. package/lib/bridge/broadcast.d.ts.map +1 -0
  10. package/lib/bridge/broadcast.js +13 -0
  11. package/lib/bridge/broadcast.js.map +1 -0
  12. package/lib/bridge/buildOptimisticOperation.d.ts +4 -0
  13. package/lib/bridge/buildOptimisticOperation.d.ts.map +1 -0
  14. package/lib/bridge/buildOptimisticOperation.js +49 -0
  15. package/lib/bridge/buildOptimisticOperation.js.map +1 -0
  16. package/lib/bridge/buildTransaction.d.ts +5 -0
  17. package/lib/bridge/buildTransaction.d.ts.map +1 -0
  18. package/lib/bridge/buildTransaction.js +142 -0
  19. package/lib/bridge/buildTransaction.js.map +1 -0
  20. package/lib/bridge/createTransaction.d.ts +5 -0
  21. package/lib/bridge/createTransaction.d.ts.map +1 -0
  22. package/lib/bridge/createTransaction.js +16 -0
  23. package/lib/bridge/createTransaction.js.map +1 -0
  24. package/lib/bridge/deviceTransactionConfig.d.ts +4 -0
  25. package/lib/bridge/deviceTransactionConfig.d.ts.map +1 -0
  26. package/lib/bridge/deviceTransactionConfig.js +16 -0
  27. package/lib/bridge/deviceTransactionConfig.js.map +1 -0
  28. package/lib/bridge/estimateMaxSpendable.d.ts +5 -0
  29. package/lib/bridge/estimateMaxSpendable.d.ts.map +1 -0
  30. package/lib/bridge/estimateMaxSpendable.js +23 -0
  31. package/lib/bridge/estimateMaxSpendable.js.map +1 -0
  32. package/lib/bridge/getFeesForTransaction.d.ts +8 -0
  33. package/lib/bridge/getFeesForTransaction.d.ts.map +1 -0
  34. package/lib/bridge/getFeesForTransaction.js +93 -0
  35. package/lib/bridge/getFeesForTransaction.js.map +1 -0
  36. package/lib/bridge/getTransactionStatus.d.ts +5 -0
  37. package/lib/bridge/getTransactionStatus.d.ts.map +1 -0
  38. package/lib/bridge/getTransactionStatus.js +98 -0
  39. package/lib/bridge/getTransactionStatus.js.map +1 -0
  40. package/lib/bridge/index.d.ts +11 -0
  41. package/lib/bridge/index.d.ts.map +1 -0
  42. package/lib/bridge/index.js +62 -0
  43. package/lib/bridge/index.js.map +1 -0
  44. package/lib/bridge/preload.d.ts +10 -0
  45. package/lib/bridge/preload.d.ts.map +1 -0
  46. package/lib/bridge/preload.js +72 -0
  47. package/lib/bridge/preload.js.map +1 -0
  48. package/lib/bridge/prepareTransaction.d.ts +5 -0
  49. package/lib/bridge/prepareTransaction.d.ts.map +1 -0
  50. package/lib/bridge/prepareTransaction.js +28 -0
  51. package/lib/bridge/prepareTransaction.js.map +1 -0
  52. package/lib/bridge/serialization.d.ts +9 -0
  53. package/lib/bridge/serialization.d.ts.map +1 -0
  54. package/lib/bridge/serialization.js +92 -0
  55. package/lib/bridge/serialization.js.map +1 -0
  56. package/lib/bridge/signOperation.d.ts +10 -0
  57. package/lib/bridge/signOperation.d.ts.map +1 -0
  58. package/lib/bridge/signOperation.js +77 -0
  59. package/lib/bridge/signOperation.js.map +1 -0
  60. package/lib/bridge/synchronisation.d.ts +5 -0
  61. package/lib/bridge/synchronisation.d.ts.map +1 -0
  62. package/lib/bridge/synchronisation.js +49 -0
  63. package/lib/bridge/synchronisation.js.map +1 -0
  64. package/lib/bridge/transaction.d.ts +14 -0
  65. package/lib/bridge/transaction.d.ts.map +1 -0
  66. package/lib/bridge/transaction.js +47 -0
  67. package/lib/bridge/transaction.js.map +1 -0
  68. package/lib/config.d.ts +3 -0
  69. package/lib/config.d.ts.map +1 -0
  70. package/lib/config.js +14 -0
  71. package/lib/config.js.map +1 -0
  72. package/lib/datasets/celo.scanAccounts.1.d.ts +5 -0
  73. package/lib/datasets/celo.scanAccounts.1.d.ts.map +1 -0
  74. package/lib/datasets/celo.scanAccounts.1.js +364 -0
  75. package/lib/datasets/celo.scanAccounts.1.js.map +1 -0
  76. package/lib/errors.d.ts +4 -0
  77. package/lib/errors.d.ts.map +1 -0
  78. package/lib/errors.js +6 -0
  79. package/lib/errors.js.map +1 -0
  80. package/lib/logic.d.ts +21 -0
  81. package/lib/logic.d.ts.map +1 -0
  82. package/lib/logic.js +97 -0
  83. package/lib/logic.js.map +1 -0
  84. package/lib/network/hubble.d.ts +12 -0
  85. package/lib/network/hubble.d.ts.map +1 -0
  86. package/lib/network/hubble.js +141 -0
  87. package/lib/network/hubble.js.map +1 -0
  88. package/lib/network/index.d.ts +4 -0
  89. package/lib/network/index.d.ts.map +1 -0
  90. package/lib/network/index.js +23 -0
  91. package/lib/network/index.js.map +1 -0
  92. package/lib/network/sdk.d.ts +27 -0
  93. package/lib/network/sdk.d.ts.map +1 -0
  94. package/lib/network/sdk.js +93 -0
  95. package/lib/network/sdk.js.map +1 -0
  96. package/lib/network/validators.d.ts +2 -0
  97. package/lib/network/validators.d.ts.map +1 -0
  98. package/lib/network/validators.js +6 -0
  99. package/lib/network/validators.js.map +1 -0
  100. package/lib/signer/hw-getAddress.d.ts +6 -0
  101. package/lib/signer/hw-getAddress.d.ts.map +1 -0
  102. package/lib/signer/hw-getAddress.js +26 -0
  103. package/lib/signer/hw-getAddress.js.map +1 -0
  104. package/lib/signer/index.d.ts +2 -0
  105. package/lib/signer/index.d.ts.map +1 -0
  106. package/lib/signer/index.js +18 -0
  107. package/lib/signer/index.js.map +1 -0
  108. package/lib/signer/signer.d.ts +16 -0
  109. package/lib/signer/signer.d.ts.map +1 -0
  110. package/lib/signer/signer.js +3 -0
  111. package/lib/signer/signer.js.map +1 -0
  112. package/lib/test/bot-specs.d.ts +7 -0
  113. package/lib/test/bot-specs.d.ts.map +1 -0
  114. package/lib/test/bot-specs.js +42 -0
  115. package/lib/test/bot-specs.js.map +1 -0
  116. package/lib/test/bridgeDatasetTest.d.ts +4 -0
  117. package/lib/test/bridgeDatasetTest.d.ts.map +1 -0
  118. package/lib/test/bridgeDatasetTest.js +14 -0
  119. package/lib/test/bridgeDatasetTest.js.map +1 -0
  120. package/lib/test/cli-transaction.d.ts +25 -0
  121. package/lib/test/cli-transaction.d.ts.map +1 -0
  122. package/lib/test/cli-transaction.js +56 -0
  123. package/lib/test/cli-transaction.js.map +1 -0
  124. package/lib/test/please-add-coverage.test.d.ts +2 -0
  125. package/lib/test/please-add-coverage.test.d.ts.map +1 -0
  126. package/lib/test/please-add-coverage.test.js +6 -0
  127. package/lib/test/please-add-coverage.test.js.map +1 -0
  128. package/lib/test/specs/createActivateVoteMutation.d.ts +4 -0
  129. package/lib/test/specs/createActivateVoteMutation.d.ts.map +1 -0
  130. package/lib/test/specs/createActivateVoteMutation.js +37 -0
  131. package/lib/test/specs/createActivateVoteMutation.js.map +1 -0
  132. package/lib/test/specs/createLockMutation.d.ts +4 -0
  133. package/lib/test/specs/createLockMutation.d.ts.map +1 -0
  134. package/lib/test/specs/createLockMutation.js +37 -0
  135. package/lib/test/specs/createLockMutation.js.map +1 -0
  136. package/lib/test/specs/createRegisterAccountMutation.d.ts +4 -0
  137. package/lib/test/specs/createRegisterAccountMutation.d.ts.map +1 -0
  138. package/lib/test/specs/createRegisterAccountMutation.js +31 -0
  139. package/lib/test/specs/createRegisterAccountMutation.js.map +1 -0
  140. package/lib/test/specs/createRevokeVoteMutation.d.ts +4 -0
  141. package/lib/test/specs/createRevokeVoteMutation.d.ts.map +1 -0
  142. package/lib/test/specs/createRevokeVoteMutation.js +38 -0
  143. package/lib/test/specs/createRevokeVoteMutation.js.map +1 -0
  144. package/lib/test/specs/createSendMutation.d.ts +6 -0
  145. package/lib/test/specs/createSendMutation.d.ts.map +1 -0
  146. package/lib/test/specs/createSendMutation.js +45 -0
  147. package/lib/test/specs/createSendMutation.js.map +1 -0
  148. package/lib/test/specs/createUnlockMutation.d.ts +4 -0
  149. package/lib/test/specs/createUnlockMutation.d.ts.map +1 -0
  150. package/lib/test/specs/createUnlockMutation.js +37 -0
  151. package/lib/test/specs/createUnlockMutation.js.map +1 -0
  152. package/lib/test/specs/createVoteMutation.d.ts +4 -0
  153. package/lib/test/specs/createVoteMutation.d.ts.map +1 -0
  154. package/lib/test/specs/createVoteMutation.js +48 -0
  155. package/lib/test/specs/createVoteMutation.js.map +1 -0
  156. package/lib/test/specs/createWithdrawMutation.d.ts +4 -0
  157. package/lib/test/specs/createWithdrawMutation.d.ts.map +1 -0
  158. package/lib/test/specs/createWithdrawMutation.js +37 -0
  159. package/lib/test/specs/createWithdrawMutation.js.map +1 -0
  160. package/lib/test/specs/index.d.ts +9 -0
  161. package/lib/test/specs/index.d.ts.map +1 -0
  162. package/lib/test/specs/index.js +25 -0
  163. package/lib/test/specs/index.js.map +1 -0
  164. package/lib/test/speculos-deviceActions.d.ts +4 -0
  165. package/lib/test/speculos-deviceActions.d.ts.map +1 -0
  166. package/lib/test/speculos-deviceActions.js +58 -0
  167. package/lib/test/speculos-deviceActions.js.map +1 -0
  168. package/lib/types/index.d.ts +4 -0
  169. package/lib/types/index.d.ts.map +1 -0
  170. package/lib/types/index.js +19 -0
  171. package/lib/types/index.js.map +1 -0
  172. package/lib/types/types.d.ts +126 -0
  173. package/lib/types/types.d.ts.map +1 -0
  174. package/lib/types/types.js +11 -0
  175. package/lib/types/types.js.map +1 -0
  176. package/lib-es/bridge/broadcast.d.ts +5 -0
  177. package/lib-es/bridge/broadcast.d.ts.map +1 -0
  178. package/lib-es/bridge/broadcast.js +9 -0
  179. package/lib-es/bridge/broadcast.js.map +1 -0
  180. package/lib-es/bridge/buildOptimisticOperation.d.ts +4 -0
  181. package/lib-es/bridge/buildOptimisticOperation.d.ts.map +1 -0
  182. package/lib-es/bridge/buildOptimisticOperation.js +42 -0
  183. package/lib-es/bridge/buildOptimisticOperation.js.map +1 -0
  184. package/lib-es/bridge/buildTransaction.d.ts +5 -0
  185. package/lib-es/bridge/buildTransaction.d.ts.map +1 -0
  186. package/lib-es/bridge/buildTransaction.js +140 -0
  187. package/lib-es/bridge/buildTransaction.js.map +1 -0
  188. package/lib-es/bridge/createTransaction.d.ts +5 -0
  189. package/lib-es/bridge/createTransaction.d.ts.map +1 -0
  190. package/lib-es/bridge/createTransaction.js +12 -0
  191. package/lib-es/bridge/createTransaction.js.map +1 -0
  192. package/lib-es/bridge/deviceTransactionConfig.d.ts +4 -0
  193. package/lib-es/bridge/deviceTransactionConfig.d.ts.map +1 -0
  194. package/lib-es/bridge/deviceTransactionConfig.js +14 -0
  195. package/lib-es/bridge/deviceTransactionConfig.js.map +1 -0
  196. package/lib-es/bridge/estimateMaxSpendable.d.ts +5 -0
  197. package/lib-es/bridge/estimateMaxSpendable.d.ts.map +1 -0
  198. package/lib-es/bridge/estimateMaxSpendable.js +16 -0
  199. package/lib-es/bridge/estimateMaxSpendable.js.map +1 -0
  200. package/lib-es/bridge/getFeesForTransaction.d.ts +8 -0
  201. package/lib-es/bridge/getFeesForTransaction.d.ts.map +1 -0
  202. package/lib-es/bridge/getFeesForTransaction.js +91 -0
  203. package/lib-es/bridge/getFeesForTransaction.js.map +1 -0
  204. package/lib-es/bridge/getTransactionStatus.d.ts +5 -0
  205. package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -0
  206. package/lib-es/bridge/getTransactionStatus.js +94 -0
  207. package/lib-es/bridge/getTransactionStatus.js.map +1 -0
  208. package/lib-es/bridge/index.d.ts +11 -0
  209. package/lib-es/bridge/index.d.ts.map +1 -0
  210. package/lib-es/bridge/index.js +54 -0
  211. package/lib-es/bridge/index.js.map +1 -0
  212. package/lib-es/bridge/preload.d.ts +10 -0
  213. package/lib-es/bridge/preload.d.ts.map +1 -0
  214. package/lib-es/bridge/preload.js +64 -0
  215. package/lib-es/bridge/preload.js.map +1 -0
  216. package/lib-es/bridge/prepareTransaction.d.ts +5 -0
  217. package/lib-es/bridge/prepareTransaction.d.ts.map +1 -0
  218. package/lib-es/bridge/prepareTransaction.js +21 -0
  219. package/lib-es/bridge/prepareTransaction.js.map +1 -0
  220. package/lib-es/bridge/serialization.d.ts +9 -0
  221. package/lib-es/bridge/serialization.d.ts.map +1 -0
  222. package/lib-es/bridge/serialization.js +84 -0
  223. package/lib-es/bridge/serialization.js.map +1 -0
  224. package/lib-es/bridge/signOperation.d.ts +10 -0
  225. package/lib-es/bridge/signOperation.d.ts.map +1 -0
  226. package/lib-es/bridge/signOperation.js +70 -0
  227. package/lib-es/bridge/signOperation.js.map +1 -0
  228. package/lib-es/bridge/synchronisation.d.ts +5 -0
  229. package/lib-es/bridge/synchronisation.d.ts.map +1 -0
  230. package/lib-es/bridge/synchronisation.js +45 -0
  231. package/lib-es/bridge/synchronisation.js.map +1 -0
  232. package/lib-es/bridge/transaction.d.ts +14 -0
  233. package/lib-es/bridge/transaction.d.ts.map +1 -0
  234. package/lib-es/bridge/transaction.js +42 -0
  235. package/lib-es/bridge/transaction.js.map +1 -0
  236. package/lib-es/config.d.ts +3 -0
  237. package/lib-es/config.d.ts.map +1 -0
  238. package/lib-es/config.js +11 -0
  239. package/lib-es/config.js.map +1 -0
  240. package/lib-es/datasets/celo.scanAccounts.1.d.ts +5 -0
  241. package/lib-es/datasets/celo.scanAccounts.1.d.ts.map +1 -0
  242. package/lib-es/datasets/celo.scanAccounts.1.js +359 -0
  243. package/lib-es/datasets/celo.scanAccounts.1.js.map +1 -0
  244. package/lib-es/errors.d.ts +4 -0
  245. package/lib-es/errors.d.ts.map +1 -0
  246. package/lib-es/errors.js +3 -0
  247. package/lib-es/errors.js.map +1 -0
  248. package/lib-es/logic.d.ts +21 -0
  249. package/lib-es/logic.d.ts.map +1 -0
  250. package/lib-es/logic.js +77 -0
  251. package/lib-es/logic.js.map +1 -0
  252. package/lib-es/network/hubble.d.ts +12 -0
  253. package/lib-es/network/hubble.d.ts.map +1 -0
  254. package/lib-es/network/hubble.js +133 -0
  255. package/lib-es/network/hubble.js.map +1 -0
  256. package/lib-es/network/index.d.ts +4 -0
  257. package/lib-es/network/index.d.ts.map +1 -0
  258. package/lib-es/network/index.js +4 -0
  259. package/lib-es/network/index.js.map +1 -0
  260. package/lib-es/network/sdk.d.ts +27 -0
  261. package/lib-es/network/sdk.d.ts.map +1 -0
  262. package/lib-es/network/sdk.js +85 -0
  263. package/lib-es/network/sdk.js.map +1 -0
  264. package/lib-es/network/validators.d.ts +2 -0
  265. package/lib-es/network/validators.d.ts.map +1 -0
  266. package/lib-es/network/validators.js +2 -0
  267. package/lib-es/network/validators.js.map +1 -0
  268. package/lib-es/signer/hw-getAddress.d.ts +6 -0
  269. package/lib-es/signer/hw-getAddress.d.ts.map +1 -0
  270. package/lib-es/signer/hw-getAddress.js +21 -0
  271. package/lib-es/signer/hw-getAddress.js.map +1 -0
  272. package/lib-es/signer/index.d.ts +2 -0
  273. package/lib-es/signer/index.d.ts.map +1 -0
  274. package/lib-es/signer/index.js +2 -0
  275. package/lib-es/signer/index.js.map +1 -0
  276. package/lib-es/signer/signer.d.ts +16 -0
  277. package/lib-es/signer/signer.d.ts.map +1 -0
  278. package/lib-es/signer/signer.js +2 -0
  279. package/lib-es/signer/signer.js.map +1 -0
  280. package/lib-es/test/bot-specs.d.ts +7 -0
  281. package/lib-es/test/bot-specs.d.ts.map +1 -0
  282. package/lib-es/test/bot-specs.js +40 -0
  283. package/lib-es/test/bot-specs.js.map +1 -0
  284. package/lib-es/test/bridgeDatasetTest.d.ts +4 -0
  285. package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -0
  286. package/lib-es/test/bridgeDatasetTest.js +8 -0
  287. package/lib-es/test/bridgeDatasetTest.js.map +1 -0
  288. package/lib-es/test/cli-transaction.d.ts +25 -0
  289. package/lib-es/test/cli-transaction.d.ts.map +1 -0
  290. package/lib-es/test/cli-transaction.js +50 -0
  291. package/lib-es/test/cli-transaction.js.map +1 -0
  292. package/lib-es/test/please-add-coverage.test.d.ts +1 -0
  293. package/lib-es/test/please-add-coverage.test.d.ts.map +1 -0
  294. package/lib-es/test/please-add-coverage.test.js +5 -0
  295. package/lib-es/test/please-add-coverage.test.js.map +1 -0
  296. package/lib-es/test/specs/createActivateVoteMutation.d.ts +4 -0
  297. package/lib-es/test/specs/createActivateVoteMutation.d.ts.map +1 -0
  298. package/lib-es/test/specs/createActivateVoteMutation.js +30 -0
  299. package/lib-es/test/specs/createActivateVoteMutation.js.map +1 -0
  300. package/lib-es/test/specs/createLockMutation.d.ts +4 -0
  301. package/lib-es/test/specs/createLockMutation.d.ts.map +1 -0
  302. package/lib-es/test/specs/createLockMutation.js +30 -0
  303. package/lib-es/test/specs/createLockMutation.js.map +1 -0
  304. package/lib-es/test/specs/createRegisterAccountMutation.d.ts +4 -0
  305. package/lib-es/test/specs/createRegisterAccountMutation.d.ts.map +1 -0
  306. package/lib-es/test/specs/createRegisterAccountMutation.js +24 -0
  307. package/lib-es/test/specs/createRegisterAccountMutation.js.map +1 -0
  308. package/lib-es/test/specs/createRevokeVoteMutation.d.ts +4 -0
  309. package/lib-es/test/specs/createRevokeVoteMutation.d.ts.map +1 -0
  310. package/lib-es/test/specs/createRevokeVoteMutation.js +31 -0
  311. package/lib-es/test/specs/createRevokeVoteMutation.js.map +1 -0
  312. package/lib-es/test/specs/createSendMutation.d.ts +6 -0
  313. package/lib-es/test/specs/createSendMutation.d.ts.map +1 -0
  314. package/lib-es/test/specs/createSendMutation.js +37 -0
  315. package/lib-es/test/specs/createSendMutation.js.map +1 -0
  316. package/lib-es/test/specs/createUnlockMutation.d.ts +4 -0
  317. package/lib-es/test/specs/createUnlockMutation.d.ts.map +1 -0
  318. package/lib-es/test/specs/createUnlockMutation.js +30 -0
  319. package/lib-es/test/specs/createUnlockMutation.js.map +1 -0
  320. package/lib-es/test/specs/createVoteMutation.d.ts +4 -0
  321. package/lib-es/test/specs/createVoteMutation.d.ts.map +1 -0
  322. package/lib-es/test/specs/createVoteMutation.js +41 -0
  323. package/lib-es/test/specs/createVoteMutation.js.map +1 -0
  324. package/lib-es/test/specs/createWithdrawMutation.d.ts +4 -0
  325. package/lib-es/test/specs/createWithdrawMutation.d.ts.map +1 -0
  326. package/lib-es/test/specs/createWithdrawMutation.js +30 -0
  327. package/lib-es/test/specs/createWithdrawMutation.js.map +1 -0
  328. package/lib-es/test/specs/index.d.ts +9 -0
  329. package/lib-es/test/specs/index.d.ts.map +1 -0
  330. package/lib-es/test/specs/index.js +9 -0
  331. package/lib-es/test/specs/index.js.map +1 -0
  332. package/lib-es/test/speculos-deviceActions.d.ts +4 -0
  333. package/lib-es/test/speculos-deviceActions.d.ts.map +1 -0
  334. package/lib-es/test/speculos-deviceActions.js +55 -0
  335. package/lib-es/test/speculos-deviceActions.js.map +1 -0
  336. package/lib-es/types/index.d.ts +4 -0
  337. package/lib-es/types/index.d.ts.map +1 -0
  338. package/lib-es/types/index.js +3 -0
  339. package/lib-es/types/index.js.map +1 -0
  340. package/lib-es/types/types.d.ts +126 -0
  341. package/lib-es/types/types.d.ts.map +1 -0
  342. package/lib-es/types/types.js +7 -0
  343. package/lib-es/types/types.js.map +1 -0
  344. package/package.json +156 -0
  345. package/src/bridge/broadcast.ts +14 -0
  346. package/src/bridge/buildOptimisticOperation.ts +53 -0
  347. package/src/bridge/buildTransaction.ts +154 -0
  348. package/src/bridge/createTransaction.ts +15 -0
  349. package/src/bridge/deviceTransactionConfig.ts +19 -0
  350. package/src/bridge/estimateMaxSpendable.ts +22 -0
  351. package/src/bridge/getFeesForTransaction.ts +115 -0
  352. package/src/bridge/getTransactionStatus.ts +120 -0
  353. package/src/bridge/index.ts +77 -0
  354. package/src/bridge/preload.ts +75 -0
  355. package/src/bridge/prepareTransaction.ts +33 -0
  356. package/src/bridge/serialization.ts +114 -0
  357. package/src/bridge/signOperation.ts +121 -0
  358. package/src/bridge/synchronisation.ts +60 -0
  359. package/src/bridge/transaction.ts +53 -0
  360. package/src/config.ts +12 -0
  361. package/src/datasets/celo.scanAccounts.1.ts +370 -0
  362. package/src/errors.ts +3 -0
  363. package/src/logic.ts +146 -0
  364. package/src/network/hubble.ts +183 -0
  365. package/src/network/index.ts +3 -0
  366. package/src/network/sdk.ts +101 -0
  367. package/src/network/validators.ts +1 -0
  368. package/src/signer/hw-getAddress.ts +27 -0
  369. package/src/signer/index.ts +1 -0
  370. package/src/signer/signer.ts +36 -0
  371. package/src/test/bot-specs.ts +55 -0
  372. package/src/test/bridgeDatasetTest.ts +10 -0
  373. package/src/test/cli-transaction.ts +70 -0
  374. package/src/test/please-add-coverage.test.ts +3 -0
  375. package/src/test/specs/createActivateVoteMutation.ts +37 -0
  376. package/src/test/specs/createLockMutation.ts +38 -0
  377. package/src/test/specs/createRegisterAccountMutation.ts +35 -0
  378. package/src/test/specs/createRevokeVoteMutation.ts +38 -0
  379. package/src/test/specs/createSendMutation.ts +41 -0
  380. package/src/test/specs/createUnlockMutation.ts +35 -0
  381. package/src/test/specs/createVoteMutation.ts +55 -0
  382. package/src/test/specs/createWithdrawMutation.ts +37 -0
  383. package/src/test/specs/index.ts +8 -0
  384. package/src/test/speculos-deviceActions.ts +63 -0
  385. package/src/types/index.ts +3 -0
  386. package/src/types/types.ts +155 -0
  387. package/tsconfig.json +12 -0
@@ -0,0 +1,133 @@
1
+ import network from "@ledgerhq/live-network/network";
2
+ import { BigNumber } from "bignumber.js";
3
+ import { getEnv } from "@ledgerhq/live-env";
4
+ import { encodeOperationId } from "@ledgerhq/coin-framework/operation";
5
+ import { isDefaultValidatorGroup } from "../logic";
6
+ import { celoKit } from "../network/sdk";
7
+ const DEFAULT_TRANSACTIONS_LIMIT = 200;
8
+ const getUrl = (route) => `${getEnv("API_CELO_INDEXER")}${route || ""}`;
9
+ // Indexer returns both account data and transactions in one call.
10
+ // Transactions are just limited, there's no block height offset
11
+ const fetchAccountDetails = async (address, transactionsLimit = DEFAULT_TRANSACTIONS_LIMIT) => {
12
+ const { data } = await network({
13
+ method: "GET",
14
+ url: getUrl(`/account_details/${address}?limit=${transactionsLimit}`),
15
+ });
16
+ return data;
17
+ };
18
+ const fetchStatus = async () => {
19
+ const { data } = await network({
20
+ method: "GET",
21
+ url: getUrl(`/status`),
22
+ });
23
+ return data;
24
+ };
25
+ const fetchValidatorGroups = async () => {
26
+ const { data } = await network({
27
+ method: "GET",
28
+ url: getUrl(`/validator_groups`),
29
+ });
30
+ return data.items;
31
+ };
32
+ const getOperationType = (type) => {
33
+ switch (type) {
34
+ case "InternalTransferSent":
35
+ return "OUT";
36
+ case "InternalTransferReceived":
37
+ return "IN";
38
+ case "GoldLocked":
39
+ return "LOCK";
40
+ case "GoldUnlocked":
41
+ return "UNLOCK";
42
+ case "GoldWithdrawn":
43
+ return "WITHDRAW";
44
+ case "ValidatorGroupVoteCastSent":
45
+ return "VOTE";
46
+ case "ValidatorGroupActiveVoteRevokedSent":
47
+ return "REVOKE";
48
+ case "ValidatorGroupPendingVoteRevokedSent":
49
+ return "REVOKE";
50
+ case "ValidatorGroupVoteActivatedSent":
51
+ return "ACTIVATE";
52
+ case "AccountCreated":
53
+ return "REGISTER";
54
+ case "AccountSlashed":
55
+ return "SLASH";
56
+ default:
57
+ return "NONE";
58
+ }
59
+ };
60
+ const transactionToOperation = (accountId, transaction) => {
61
+ const type = getOperationType(transaction.kind);
62
+ const hasFailed = transaction.data?.success ? !transaction.data?.success : false;
63
+ const data = transaction.data;
64
+ const sender = data?.Account || data?.from;
65
+ const recipient = data?.Group || data?.to || data?.Raw?.address;
66
+ const fee = new BigNumber(transaction.data?.gas_used || 0).times(new BigNumber(transaction.data?.gas_price || 0));
67
+ const value = ["LOCK", "UNLOCK", "ACTIVATE", "VOTE", "REVOKE", "REGISTER"].includes(type)
68
+ ? new BigNumber(fee)
69
+ : new BigNumber(transaction.amount);
70
+ return {
71
+ id: encodeOperationId(accountId, transaction.transaction_hash, type),
72
+ hash: transaction.transaction_hash,
73
+ accountId,
74
+ fee,
75
+ value,
76
+ type,
77
+ blockHeight: transaction.height,
78
+ date: new Date(transaction.time),
79
+ senders: sender ? [sender] : [],
80
+ recipients: recipient ? [recipient] : [],
81
+ hasFailed,
82
+ blockHash: null,
83
+ extra: {
84
+ celoOperationValue: new BigNumber(transaction.amount),
85
+ ...(["ACTIVATE", "VOTE", "REVOKE"].includes(type)
86
+ ? {
87
+ celoSourceValidator: recipient ? recipient : "",
88
+ }
89
+ : {}),
90
+ },
91
+ };
92
+ };
93
+ export const getAccountDetails = async (address, accountId) => {
94
+ const accountDetails = await fetchAccountDetails(address);
95
+ const spendableBalance = new BigNumber(accountDetails.gold_balance);
96
+ const lockedBalance = new BigNumber(accountDetails.total_locked_gold);
97
+ const nonvotingLockedBalance = new BigNumber(accountDetails.total_nonvoting_locked_gold);
98
+ const balance = spendableBalance.plus(lockedBalance);
99
+ const indexerStatus = await fetchStatus();
100
+ const kit = celoKit();
101
+ const lockedGold = await kit.contracts.getLockedGold();
102
+ const allTransactions = accountDetails.internal_transfers
103
+ .filter((transfer) => transfer.data?.to != lockedGold.address && transfer.data?.from != lockedGold.address)
104
+ .concat(accountDetails.transactions);
105
+ const operations = allTransactions.map((transaction) => transactionToOperation(accountId, transaction));
106
+ return {
107
+ blockHeight: indexerStatus.last_indexed_height,
108
+ balance,
109
+ spendableBalance,
110
+ operations,
111
+ lockedBalance,
112
+ nonvotingLockedBalance,
113
+ };
114
+ };
115
+ export const getValidatorGroups = async () => {
116
+ const validatorGroups = await fetchValidatorGroups();
117
+ const result = validatorGroups.map((validatorGroup) => ({
118
+ address: validatorGroup.address,
119
+ name: validatorGroup.name || validatorGroup.address,
120
+ votes: new BigNumber(validatorGroup.active_votes).plus(new BigNumber(validatorGroup.pending_votes)),
121
+ }));
122
+ return customValidatorGroupsOrder(result);
123
+ };
124
+ const customValidatorGroupsOrder = (validatorGroups) => {
125
+ const defaultValidatorGroup = validatorGroups.find(isDefaultValidatorGroup);
126
+ const sortedValidatorGroups = [...validatorGroups]
127
+ .sort((a, b) => b.votes.minus(a.votes))
128
+ .filter(group => !isDefaultValidatorGroup(group));
129
+ return defaultValidatorGroup
130
+ ? [defaultValidatorGroup, ...sortedValidatorGroups]
131
+ : sortedValidatorGroups;
132
+ };
133
+ //# sourceMappingURL=hubble.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hubble.js","sourceRoot":"","sources":["../../src/network/hubble.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,gCAAgC,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,MAAM,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,GAAG,KAAK,IAAI,EAAE,EAAE,CAAC;AAExF,kEAAkE;AAClE,gEAAgE;AAChE,MAAM,mBAAmB,GAAG,KAAK,EAC/B,OAAe,EACf,oBAA4B,0BAA0B,EACtD,EAAE;IACF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC;QAC7B,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,MAAM,CAAC,oBAAoB,OAAO,UAAU,iBAAiB,EAAE,CAAC;KACtE,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;IAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC;QAC7B,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC;KACvB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,KAAK,IAAI,EAAE;IACtC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC;QAC7B,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,MAAM,CAAC,mBAAmB,CAAC;KACjC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAiB,EAAE;IACvD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,sBAAsB;YACzB,OAAO,KAAK,CAAC;QACf,KAAK,0BAA0B;YAC7B,OAAO,IAAI,CAAC;QACd,KAAK,YAAY;YACf,OAAO,MAAM,CAAC;QAChB,KAAK,cAAc;YACjB,OAAO,QAAQ,CAAC;QAClB,KAAK,eAAe;YAClB,OAAO,UAAU,CAAC;QACpB,KAAK,4BAA4B;YAC/B,OAAO,MAAM,CAAC;QAChB,KAAK,qCAAqC;YACxC,OAAO,QAAQ,CAAC;QAClB,KAAK,sCAAsC;YACzC,OAAO,QAAQ,CAAC;QAClB,KAAK,iCAAiC;YACpC,OAAO,UAAU,CAAC;QACpB,KAAK,gBAAgB;YACnB,OAAO,UAAU,CAAC;QACpB,KAAK,gBAAgB;YACnB,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC7B,SAAiB,EACjB,WAAsC,EACvB,EAAE;IACjB,MAAM,IAAI,GAAkB,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IACjF,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;IAChE,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,CAC9D,IAAI,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC,CAChD,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvF,CAAC,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC;QACpB,CAAC,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAEtC,OAAO;QACL,EAAE,EAAE,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC;QACpE,IAAI,EAAE,WAAW,CAAC,gBAAgB;QAClC,SAAS;QACT,GAAG;QACH,KAAK;QACL,IAAI;QACJ,WAAW,EAAE,WAAW,CAAC,MAAM;QAC/B,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAChC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QAC/B,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QACxC,SAAS;QACT,SAAS,EAAE,IAAI;QACf,KAAK,EAAE;YACL,kBAAkB,EAAE,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC;YACrD,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC/C,CAAC,CAAC;oBACE,mBAAmB,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;iBAChD;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,OAAe,EACf,SAAiB,EAQhB,EAAE;IACH,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACtE,MAAM,sBAAsB,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,2BAA2B,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,MAAM,WAAW,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;IAEvD,MAAM,eAAe,GAAG,cAAc,CAAC,kBAAkB;SACtD,MAAM,CACL,CAAC,QAAgD,EAAE,EAAE,CACnD,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,UAAU,CAAC,OAAO,CACvF;SACA,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAEvC,MAAM,UAAU,GAAoB,eAAe,CAAC,GAAG,CACrD,CAAC,WAAsC,EAAE,EAAE,CAAC,sBAAsB,CAAC,SAAS,EAAE,WAAW,CAAC,CAC3F,CAAC;IAEF,OAAO;QACL,WAAW,EAAE,aAAa,CAAC,mBAAmB;QAC9C,OAAO;QACP,gBAAgB;QAChB,UAAU;QACV,aAAa;QACb,sBAAsB;KACvB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAAmC,EAAE;IAC1E,MAAM,eAAe,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAErD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAChC,CAAC,cAKA,EAAE,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,cAAc,CAAC,OAAO;QAC/B,IAAI,EAAE,cAAc,CAAC,IAAI,IAAI,cAAc,CAAC,OAAO;QACnD,KAAK,EAAE,IAAI,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,IAAI,CACpD,IAAI,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,CAC5C;KACF,CAAC,CACH,CAAC;IACF,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,eAAsB,EAAwB,EAAE;IAClF,MAAM,qBAAqB,GAAG,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAE5E,MAAM,qBAAqB,GAAG,CAAC,GAAG,eAAe,CAAC;SAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACtC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpD,OAAO,qBAAqB;QAC1B,CAAC,CAAC,CAAC,qBAAqB,EAAE,GAAG,qBAAqB,CAAC;QACnD,CAAC,CAAC,qBAAqB,CAAC;AAC5B,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { getAccountDetails, getValidatorGroups } from "./hubble";
2
+ export * from "./validators";
3
+ export * from "./sdk";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACjE,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { getAccountDetails, getValidatorGroups } from "./hubble";
2
+ export * from "./validators";
3
+ export * from "./sdk";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACjE,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { ContractKit } from "@celo/contractkit";
2
+ import { CeloVote } from "../types/types";
3
+ import { CeloTx } from "@celo/connect";
4
+ export declare const celoKit: () => ContractKit;
5
+ /**
6
+ * Fetch account registered status. To lock any Celo, account needs to be registered first
7
+ */
8
+ export declare const getAccountRegistrationStatus: (address: string) => Promise<boolean>;
9
+ export declare const determineFees: (txParams: CeloTx) => Promise<void>;
10
+ /**
11
+ * Fetch pending withdrawals, with an index
12
+ */
13
+ export declare const getPendingWithdrawals: (address: string) => Promise<{
14
+ index: number;
15
+ time: import("bignumber.js").BigNumber;
16
+ value: import("bignumber.js").BigNumber;
17
+ }[]>;
18
+ /**
19
+ * Fetch all votes
20
+ */
21
+ export declare const getVotes: (address: string) => Promise<CeloVote[]>;
22
+ /**
23
+ * Fetch and cache address of a vote signer account
24
+ * Cache it for 1h since vote signer is usually the same account as our address
25
+ */
26
+ export declare const voteSignerAccount: import("@ledgerhq/live-network/cache").CacheRes<[address: string], string>;
27
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/network/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAU,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,eAAO,MAAM,OAAO,mBAGnB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,YAAmB,MAAM,KAAG,OAAO,CAAC,OAAO,CAGnF,CAAC;AAEF,eAAO,MAAM,aAAa,aAAoB,MAAM,KAAG,OAAO,CAAC,IAAI,CAMlE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,YAAmB,MAAM;;;;IAU1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,YAAmB,MAAM,KAAG,OAAO,CAAC,QAAQ,EAAE,CAkClE,CAAC;AAOF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,4EAS7B,CAAC"}
@@ -0,0 +1,85 @@
1
+ import { newKit } from "@celo/contractkit";
2
+ import { makeLRUCache } from "@ledgerhq/live-network/cache";
3
+ import { getEnv } from "@ledgerhq/live-env";
4
+ let kit;
5
+ export const celoKit = () => {
6
+ if (!kit)
7
+ kit = newKit(getEnv("API_CELO_NODE"));
8
+ return kit;
9
+ };
10
+ /**
11
+ * Fetch account registered status. To lock any Celo, account needs to be registered first
12
+ */
13
+ export const getAccountRegistrationStatus = async (address) => {
14
+ const accounts = await celoKit().contracts.getAccounts();
15
+ return await accounts.isAccount(address);
16
+ };
17
+ export const determineFees = async (txParams) => {
18
+ const { connection: { setFeeMarketGas }, } = celoKit();
19
+ await setFeeMarketGas(txParams);
20
+ };
21
+ /**
22
+ * Fetch pending withdrawals, with an index
23
+ */
24
+ export const getPendingWithdrawals = async (address) => {
25
+ const lockedGold = await celoKit().contracts.getLockedGold();
26
+ const pendingWithdrawals = await lockedGold.getPendingWithdrawals(address);
27
+ const pendingWithdrawalsWithIndexes = pendingWithdrawals
28
+ .map((withdrawal, index) => ({
29
+ ...withdrawal,
30
+ index,
31
+ }))
32
+ .sort((a, b) => a.time.minus(b.time).toNumber());
33
+ return pendingWithdrawalsWithIndexes;
34
+ };
35
+ /**
36
+ * Fetch all votes
37
+ */
38
+ export const getVotes = async (address) => {
39
+ const election = await celoKit().contracts.getElection();
40
+ const voter = await election.getVoter(await voteSignerAccount(address));
41
+ const activates = await getActivateTransactionObjects(address);
42
+ const activatableValidatorGroups = activates.map(activate => activate.txo.arguments[0]);
43
+ const votes = [];
44
+ voter.votes.forEach(vote => {
45
+ let activeVoteRevokable = true;
46
+ if (vote.pending.gt(0)) {
47
+ // If there's a pending vote, it has to be revoked first
48
+ activeVoteRevokable = false;
49
+ votes.push({
50
+ validatorGroup: vote.group,
51
+ amount: vote.pending,
52
+ // Not all pending votes can be activated, 24h has to pass
53
+ activatable: activatableValidatorGroups.includes(vote.group),
54
+ revokable: true,
55
+ index: 0,
56
+ type: "pending",
57
+ });
58
+ }
59
+ if (vote.active.gt(0))
60
+ votes.push({
61
+ validatorGroup: vote.group,
62
+ amount: vote.active,
63
+ activatable: false,
64
+ revokable: activeVoteRevokable,
65
+ index: 1,
66
+ type: "active",
67
+ });
68
+ });
69
+ return votes;
70
+ };
71
+ const getActivateTransactionObjects = async (address) => {
72
+ const election = await celoKit().contracts.getElection();
73
+ return await election.activate(await voteSignerAccount(address));
74
+ };
75
+ /**
76
+ * Fetch and cache address of a vote signer account
77
+ * Cache it for 1h since vote signer is usually the same account as our address
78
+ */
79
+ export const voteSignerAccount = makeLRUCache(async (address) => {
80
+ const accounts = await celoKit().contracts.getAccounts();
81
+ return await accounts.voteSignerToAccount(address);
82
+ }, address => address, {
83
+ ttl: 60 * 60 * 1000, // 1 hour
84
+ });
85
+ //# sourceMappingURL=sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/network/sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { getValidatorGroups } from ".";
2
+ //# sourceMappingURL=validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/network/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,GAAG,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { getValidatorGroups } from ".";
2
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/network/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,GAAG,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
2
+ import { GetAddressFn } from "@ledgerhq/coin-framework/bridge/getAddressWrapper";
3
+ import { CeloSigner } from ".";
4
+ declare const resolver: (signerContext: SignerContext<CeloSigner>) => GetAddressFn;
5
+ export default resolver;
6
+ //# sourceMappingURL=hw-getAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hw-getAddress.d.ts","sourceRoot":"","sources":["../../src/signer/hw-getAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,mDAAmD,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC;AAM/B,QAAA,MAAM,QAAQ,kBAAmB,aAAa,CAAC,UAAU,CAAC,KAAG,YAc5D,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,21 @@
1
+ import eip55 from "eip55";
2
+ /*
3
+ NOTE: we should use the evm resolver for celo, but due to the signer types conflicting for now
4
+ we are using a separate resolver
5
+ */
6
+ const resolver = (signerContext) => {
7
+ return async (deviceId, { path, verify, currency }) => {
8
+ const { address, publicKey } = await signerContext(deviceId, signer => {
9
+ /* istanbul ignore next: optional chaining + undefined is a valid value */
10
+ const chainId = currency?.ethereumLikeInfo?.chainId.toString();
11
+ return signer.getAddress(path, verify, false, chainId);
12
+ });
13
+ return {
14
+ address: eip55.encode(address),
15
+ publicKey,
16
+ path,
17
+ };
18
+ };
19
+ };
20
+ export default resolver;
21
+ //# sourceMappingURL=hw-getAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hw-getAddress.js","sourceRoot":"","sources":["../../src/signer/hw-getAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B;;;EAGE;AACF,MAAM,QAAQ,GAAG,CAAC,aAAwC,EAAgB,EAAE;IAC1E,OAAO,KAAK,EAAE,QAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAqB,EAAE,EAAE;QAC/E,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YACpE,0EAA0E;YAC1E,MAAM,OAAO,GAAG,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC/D,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAC9B,SAAS;YACT,IAAI;SACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./signer";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./signer";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { CeloTx, RLPEncodedTx, LegacyEncodedTx } from "../types";
2
+ import { EvmSignature, EvmAddress } from "@ledgerhq/coin-evm/types/signer";
3
+ import { LoadConfig, ResolutionConfig } from "@ledgerhq/hw-app-eth/lib/services/types";
4
+ import { EIP712Message } from "@ledgerhq/types-live";
5
+ export interface CeloSigner {
6
+ getAddress: (path: string, boolDisplay?: boolean, boolChaincode?: boolean, chainId?: string) => Promise<EvmAddress>;
7
+ signTransaction: (path: string, rawTxHex: string, resolution?: any) => Promise<EvmSignature>;
8
+ signPersonalMessage: (path: string, messageHex: string) => Promise<EvmSignature>;
9
+ signEIP712Message(path: string, jsonMessage: EIP712Message, fullImplem?: boolean): Promise<EvmSignature>;
10
+ setLoadConfig: (config: LoadConfig) => void;
11
+ clearSignTransaction: (path: string, rawTxHex: string, resolutionConfig: ResolutionConfig, throwOnError: boolean) => Promise<EvmSignature>;
12
+ signEIP712HashedMessage: (path: string, domainSeparatorHex: string, hashStructMessageHex: string) => Promise<EvmSignature>;
13
+ verifyTokenInfo(to: string, chainId: number): Promise<void>;
14
+ rlpEncodedTxForLedger(txParams: CeloTx): Promise<RLPEncodedTx | LegacyEncodedTx>;
15
+ }
16
+ //# sourceMappingURL=signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signer/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,OAAO,EACrB,aAAa,CAAC,EAAE,OAAO,EACvB,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7F,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACjF,iBAAiB,CACf,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,aAAa,EAC1B,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAAC,YAAY,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5C,oBAAoB,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B,uBAAuB,EAAE,CACvB,IAAI,EAAE,MAAM,EACZ,kBAAkB,EAAE,MAAM,EAC1B,oBAAoB,EAAE,MAAM,KACzB,OAAO,CAAC,YAAY,CAAC,CAAC;IAE3B,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC;CAClF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signer/signer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { AppSpec } from "@ledgerhq/coin-framework/bot/types";
2
+ import type { Transaction } from "../types";
3
+ declare const _default: {
4
+ celo: AppSpec<Transaction>;
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=bot-specs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot-specs.d.ts","sourceRoot":"","sources":["../../src/test/bot-specs.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;;;;AAqC5C,wBAEE"}
@@ -0,0 +1,40 @@
1
+ import { DeviceModelId } from "@ledgerhq/devices";
2
+ import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/index";
3
+ import { minimalAmount, createLockMutation, createRegisterAccountMutation, createSend50PercentMutation, createSendMaxMutation, createUnlockMutation, createVoteMutation, createActivateVoteMutation, createRevokeVoteMutation, createWithdrawMutation, } from "./specs/index";
4
+ import { acceptTransaction } from "./speculos-deviceActions";
5
+ const currency = getCryptoCurrencyById("celo");
6
+ const send50PercentMutation = createSend50PercentMutation();
7
+ const sendMaxMutation = createSendMaxMutation();
8
+ const registerAccountMutation = createRegisterAccountMutation();
9
+ const unlockMutation = createUnlockMutation();
10
+ const lockMutation = createLockMutation();
11
+ const voteMutation = createVoteMutation();
12
+ const activateVoteMutation = createActivateVoteMutation();
13
+ const revokeVoteMutation = createRevokeVoteMutation();
14
+ const withdrawMutation = createWithdrawMutation();
15
+ const celo = {
16
+ name: "Celo",
17
+ currency,
18
+ appQuery: {
19
+ model: DeviceModelId.nanoS,
20
+ appName: "Celo",
21
+ },
22
+ testTimeout: 4 * 60 * 1000,
23
+ genericDeviceAction: acceptTransaction,
24
+ minViableAmount: minimalAmount,
25
+ mutations: [
26
+ send50PercentMutation,
27
+ sendMaxMutation,
28
+ registerAccountMutation,
29
+ unlockMutation,
30
+ lockMutation,
31
+ voteMutation,
32
+ activateVoteMutation,
33
+ revokeVoteMutation,
34
+ withdrawMutation,
35
+ ],
36
+ };
37
+ export default {
38
+ celo,
39
+ };
40
+ //# sourceMappingURL=bot-specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot-specs.js","sourceRoot":"","sources":["../../src/test/bot-specs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,6BAA6B,EAC7B,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC/C,MAAM,qBAAqB,GAAG,2BAA2B,EAAE,CAAC;AAC5D,MAAM,eAAe,GAAG,qBAAqB,EAAE,CAAC;AAChD,MAAM,uBAAuB,GAAG,6BAA6B,EAAE,CAAC;AAChE,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;AAC9C,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;AAC1C,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;AAC1C,MAAM,oBAAoB,GAAG,0BAA0B,EAAE,CAAC;AAC1D,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;AACtD,MAAM,gBAAgB,GAAG,sBAAsB,EAAE,CAAC;AAElD,MAAM,IAAI,GAAyB;IACjC,IAAI,EAAE,MAAM;IACZ,QAAQ;IACR,QAAQ,EAAE;QACR,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,OAAO,EAAE,MAAM;KAChB;IACD,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;IAC1B,mBAAmB,EAAE,iBAAiB;IACtC,eAAe,EAAE,aAAa;IAC9B,SAAS,EAAE;QACT,qBAAqB;QACrB,eAAe;QACf,uBAAuB;QACvB,cAAc;QACd,YAAY;QACZ,YAAY;QACZ,oBAAoB;QACpB,kBAAkB;QAClB,gBAAgB;KACjB;CACF,CAAC;AAEF,eAAe;IACb,IAAI;CACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Transaction } from "../types";
2
+ import type { DatasetTest } from "@ledgerhq/types-live";
3
+ export declare const dataset: DatasetTest<Transaction>;
4
+ //# sourceMappingURL=bridgeDatasetTest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridgeDatasetTest.d.ts","sourceRoot":"","sources":["../../src/test/bridgeDatasetTest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,WAAW,CAK5C,CAAC"}
@@ -0,0 +1,8 @@
1
+ import celo from "../datasets/celo.scanAccounts.1";
2
+ export const dataset = {
3
+ implementations: ["js"],
4
+ currencies: {
5
+ celo,
6
+ },
7
+ };
8
+ //# sourceMappingURL=bridgeDatasetTest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridgeDatasetTest.js","sourceRoot":"","sources":["../../src/test/bridgeDatasetTest.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,iCAAiC,CAAC;AAInD,MAAM,CAAC,MAAM,OAAO,GAA6B;IAC/C,eAAe,EAAE,CAAC,IAAI,CAAC;IACvB,UAAU,EAAE;QACV,IAAI;KACL;CACF,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { Account, AccountLike, AccountLikeArray } from "@ledgerhq/types-live";
2
+ import type { Transaction } from "../types";
3
+ declare function inferAccounts(account: Account): AccountLikeArray;
4
+ declare function inferTransactions(transactions: Array<{
5
+ account: AccountLike;
6
+ transaction: Transaction;
7
+ mainAccount: Account;
8
+ }>, opts: Record<string, any>): Transaction[];
9
+ export default function makeCliTools(): {
10
+ options: {
11
+ name: string;
12
+ type: StringConstructor;
13
+ desc: string;
14
+ }[];
15
+ inferAccounts: typeof inferAccounts;
16
+ inferTransactions: typeof inferTransactions;
17
+ commands: {
18
+ celoValidatorGroups: {
19
+ args: never[];
20
+ job: () => import("rxjs").Observable<string>;
21
+ };
22
+ };
23
+ };
24
+ export {};
25
+ //# sourceMappingURL=cli-transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-transaction.d.ts","sourceRoot":"","sources":["../../src/test/cli-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAe5C,iBAAS,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAKzD;AAED,iBAAS,iBAAiB,CACxB,YAAY,EAAE,KAAK,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC,EACF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,WAAW,EAAE,CAiBf;AAOD,MAAM,CAAC,OAAO,UAAU,YAAY;;;;;;;;;;;;;;EASnC"}
@@ -0,0 +1,50 @@
1
+ import { from } from "rxjs";
2
+ import { map } from "rxjs/operators";
3
+ import { getValidatorGroups } from "../network";
4
+ import invariant from "invariant";
5
+ import flatMap from "lodash/flatMap";
6
+ const options = [
7
+ {
8
+ name: "mode",
9
+ type: String,
10
+ desc: "mode of transaction: send, lock, unlock, withdraw, vote, revoke, activate, register",
11
+ },
12
+ {
13
+ name: "transactionIndex",
14
+ type: String,
15
+ desc: "transaction index of a pending withdraw in case of withdraw mode",
16
+ },
17
+ ];
18
+ function inferAccounts(account) {
19
+ invariant(account.currency.family === "celo", "celo family");
20
+ const accounts = [account];
21
+ return accounts;
22
+ }
23
+ function inferTransactions(transactions, opts) {
24
+ const mode = opts.mode || "send";
25
+ invariant(["send", "lock", "unlock", "withdraw", "vote", "revoke", "activate", "register"].includes(mode), `Unexpected mode: ${mode}`);
26
+ return flatMap(transactions, ({ transaction }) => {
27
+ invariant(transaction.family === "celo", "celo family");
28
+ return {
29
+ ...transaction,
30
+ family: "celo",
31
+ mode,
32
+ index: opts.transactionIndex || null,
33
+ };
34
+ });
35
+ }
36
+ const celoValidatorGroups = {
37
+ args: [],
38
+ job: () => from(getValidatorGroups()).pipe(map(validatorGroup => JSON.stringify(validatorGroup))),
39
+ };
40
+ export default function makeCliTools() {
41
+ return {
42
+ options,
43
+ inferAccounts,
44
+ inferTransactions,
45
+ commands: {
46
+ celoValidatorGroups,
47
+ },
48
+ };
49
+ }
50
+ //# sourceMappingURL=cli-transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-transaction.js","sourceRoot":"","sources":["../../src/test/cli-transaction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,OAAO,MAAM,gBAAgB,CAAC;AAGrC,MAAM,OAAO,GAAG;IACd;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,qFAAqF;KAC5F;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,kEAAkE;KACzE;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,OAAgB;IACrC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,aAAa,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAc,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CACxB,YAIE,EACF,IAAyB;IAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;IACjC,SAAS,CACP,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC/F,oBAAoB,IAAI,EAAE,CAC3B,CAAC;IAEF,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;QAC/C,SAAS,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,EAAE,aAAa,CAAC,CAAC;QAExD,OAAO;YACL,GAAG,WAAW;YACd,MAAM,EAAE,MAAM;YACd,IAAI;YACJ,KAAK,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI;SACtB,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,mBAAmB,GAAG;IAC1B,IAAI,EAAE,EAAE;IACR,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;CAClG,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,YAAY;IAClC,OAAO;QACL,OAAO;QACP,aAAa;QACb,iBAAiB;QACjB,QAAQ,EAAE;YACR,mBAAmB;SACpB;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=please-add-coverage.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"please-add-coverage.test.d.ts","sourceRoot":"","sources":["../../src/test/please-add-coverage.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ describe("Celo", () => {
3
+ it.todo("should be tested");
4
+ });
5
+ //# sourceMappingURL=please-add-coverage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"please-add-coverage.test.js","sourceRoot":"","sources":["../../src/test/please-add-coverage.test.ts"],"names":[],"mappings":";AAAA,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { MutationSpec } from "@ledgerhq/coin-framework/bot/types";
2
+ import type { Transaction } from "../../types";
3
+ export declare const createActivateVoteMutation: () => MutationSpec<Transaction>;
4
+ //# sourceMappingURL=createActivateVoteMutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createActivateVoteMutation.d.ts","sourceRoot":"","sources":["../../../src/test/specs/createActivateVoteMutation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,aAAa,CAAC;AAK5D,eAAO,MAAM,0BAA0B,QAAO,YAAY,CAAC,WAAW,CA2BpE,CAAC"}
@@ -0,0 +1,30 @@
1
+ import invariant from "invariant";
2
+ import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/index";
3
+ import { parseCurrencyUnit } from "@ledgerhq/coin-framework/currencies/parseCurrencyUnit";
4
+ const currency = getCryptoCurrencyById("celo");
5
+ const minimalAmount = parseCurrencyUnit(currency.units[0], "0.001");
6
+ export const createActivateVoteMutation = () => ({
7
+ name: "Celo: Activate Vote",
8
+ feature: "staking",
9
+ maxRun: 1,
10
+ transaction: ({ account, bridge, maxSpendable }) => {
11
+ const { celoResources } = account;
12
+ invariant(celoResources?.registrationStatus, "Celo: Activate Vote | Account is not registered");
13
+ invariant(maxSpendable.gt(minimalAmount), "Celo: Activate Vote | balance is too low");
14
+ const activatableVote = celoResources?.votes?.find(vote => vote.activatable);
15
+ invariant(!!activatableVote, "Celo: Activate Vote | No activatable votes");
16
+ const transaction = {
17
+ recipient: activatableVote.validatorGroup,
18
+ };
19
+ return {
20
+ transaction: bridge.createTransaction(account),
21
+ updates: [
22
+ {
23
+ mode: "activate",
24
+ },
25
+ transaction,
26
+ ],
27
+ };
28
+ },
29
+ });
30
+ //# sourceMappingURL=createActivateVoteMutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createActivateVoteMutation.js","sourceRoot":"","sources":["../../../src/test/specs/createActivateVoteMutation.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAI1F,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC/C,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAA8B,EAAE,CAAC,CAAC;IAC1E,IAAI,EAAE,qBAAqB;IAC3B,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;QACjD,MAAM,EAAE,aAAa,EAAE,GAAG,OAAsB,CAAC;QACjD,SAAS,CAAC,aAAa,EAAE,kBAAkB,EAAE,iDAAiD,CAAC,CAAC;QAChG,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,2CAA2C,CAAC,CAAC;QAEvF,MAAM,eAAe,GAAG,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE7E,SAAS,CAAC,CAAC,CAAC,eAAe,EAAE,4CAA4C,CAAC,CAAC;QAE3E,MAAM,WAAW,GAAG;YAClB,SAAS,EAAE,eAAgB,CAAC,cAAc;SAC3C,CAAC;QAEF,OAAO;YACL,WAAW,EAAE,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC9C,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,UAAU;iBACjB;gBACD,WAAW;aACZ;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { MutationSpec } from "@ledgerhq/coin-framework/bot/types";
2
+ import type { Transaction } from "../../types";
3
+ export declare const createLockMutation: () => MutationSpec<Transaction>;
4
+ //# sourceMappingURL=createLockMutation.d.ts.map