@ledgerhq/coin-mina 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 (414) hide show
  1. package/.eslintrc.js +20 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/.unimportedrc.json +24 -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/api/index.d.ts +13 -0
  9. package/lib/api/index.d.ts.map +1 -0
  10. package/lib/api/index.integ.test.d.ts +2 -0
  11. package/lib/api/index.integ.test.d.ts.map +1 -0
  12. package/lib/api/index.integ.test.js +57 -0
  13. package/lib/api/index.integ.test.js.map +1 -0
  14. package/lib/api/index.js +91 -0
  15. package/lib/api/index.js.map +1 -0
  16. package/lib/api/rosetta/index.d.ts +9 -0
  17. package/lib/api/rosetta/index.d.ts.map +1 -0
  18. package/lib/api/rosetta/index.js +90 -0
  19. package/lib/api/rosetta/index.js.map +1 -0
  20. package/lib/api/rosetta/types.d.ts +143 -0
  21. package/lib/api/rosetta/types.d.ts.map +1 -0
  22. package/lib/api/rosetta/types.js +3 -0
  23. package/lib/api/rosetta/types.js.map +1 -0
  24. package/lib/api/rosetta/utils.d.ts +43 -0
  25. package/lib/api/rosetta/utils.d.ts.map +1 -0
  26. package/lib/api/rosetta/utils.js +60 -0
  27. package/lib/api/rosetta/utils.js.map +1 -0
  28. package/lib/api/rosetta/utils.test.d.ts +2 -0
  29. package/lib/api/rosetta/utils.test.d.ts.map +1 -0
  30. package/lib/api/rosetta/utils.test.js +82 -0
  31. package/lib/api/rosetta/utils.test.js.map +1 -0
  32. package/lib/bridge/broadcast.d.ts +6 -0
  33. package/lib/bridge/broadcast.d.ts.map +1 -0
  34. package/lib/bridge/broadcast.js +11 -0
  35. package/lib/bridge/broadcast.js.map +1 -0
  36. package/lib/bridge/broadcast.test.d.ts +2 -0
  37. package/lib/bridge/broadcast.test.d.ts.map +1 -0
  38. package/lib/bridge/broadcast.test.js +36 -0
  39. package/lib/bridge/broadcast.test.js.map +1 -0
  40. package/lib/bridge/buildTransaction.d.ts +4 -0
  41. package/lib/bridge/buildTransaction.d.ts.map +1 -0
  42. package/lib/bridge/buildTransaction.js +37 -0
  43. package/lib/bridge/buildTransaction.js.map +1 -0
  44. package/lib/bridge/buildTransaction.test.d.ts +2 -0
  45. package/lib/bridge/buildTransaction.test.d.ts.map +1 -0
  46. package/lib/bridge/buildTransaction.test.js +57 -0
  47. package/lib/bridge/buildTransaction.test.js.map +1 -0
  48. package/lib/bridge/cli-transaction.d.ts +18 -0
  49. package/lib/bridge/cli-transaction.d.ts.map +1 -0
  50. package/lib/bridge/cli-transaction.js +37 -0
  51. package/lib/bridge/cli-transaction.js.map +1 -0
  52. package/lib/bridge/createTransaction.d.ts +4 -0
  53. package/lib/bridge/createTransaction.d.ts.map +1 -0
  54. package/lib/bridge/createTransaction.js +21 -0
  55. package/lib/bridge/createTransaction.js.map +1 -0
  56. package/lib/bridge/createTransaction.test.d.ts +2 -0
  57. package/lib/bridge/createTransaction.test.d.ts.map +1 -0
  58. package/lib/bridge/createTransaction.test.js +24 -0
  59. package/lib/bridge/createTransaction.test.js.map +1 -0
  60. package/lib/bridge/deviceTransactionConfig.d.ts +11 -0
  61. package/lib/bridge/deviceTransactionConfig.d.ts.map +1 -0
  62. package/lib/bridge/deviceTransactionConfig.js +8 -0
  63. package/lib/bridge/deviceTransactionConfig.js.map +1 -0
  64. package/lib/bridge/errors.d.ts +10 -0
  65. package/lib/bridge/errors.d.ts.map +1 -0
  66. package/lib/bridge/errors.js +17 -0
  67. package/lib/bridge/errors.js.map +1 -0
  68. package/lib/bridge/estimateMaxSpendable.d.ts +5 -0
  69. package/lib/bridge/estimateMaxSpendable.d.ts.map +1 -0
  70. package/lib/bridge/estimateMaxSpendable.js +26 -0
  71. package/lib/bridge/estimateMaxSpendable.js.map +1 -0
  72. package/lib/bridge/getEstimatedFees.d.ts +8 -0
  73. package/lib/bridge/getEstimatedFees.d.ts.map +1 -0
  74. package/lib/bridge/getEstimatedFees.js +9 -0
  75. package/lib/bridge/getEstimatedFees.js.map +1 -0
  76. package/lib/bridge/getTransactionStatus.d.ts +5 -0
  77. package/lib/bridge/getTransactionStatus.d.ts.map +1 -0
  78. package/lib/bridge/getTransactionStatus.js +62 -0
  79. package/lib/bridge/getTransactionStatus.js.map +1 -0
  80. package/lib/bridge/getTransactionStatus.test.d.ts +2 -0
  81. package/lib/bridge/getTransactionStatus.test.d.ts.map +1 -0
  82. package/lib/bridge/getTransactionStatus.test.js +138 -0
  83. package/lib/bridge/getTransactionStatus.test.js.map +1 -0
  84. package/lib/bridge/index.d.ts +14 -0
  85. package/lib/bridge/index.d.ts.map +1 -0
  86. package/lib/bridge/index.js +59 -0
  87. package/lib/bridge/index.js.map +1 -0
  88. package/lib/bridge/index.test.d.ts +2 -0
  89. package/lib/bridge/index.test.d.ts.map +1 -0
  90. package/lib/bridge/index.test.js +32 -0
  91. package/lib/bridge/index.test.js.map +1 -0
  92. package/lib/bridge/prepareTransaction.d.ts +4 -0
  93. package/lib/bridge/prepareTransaction.d.ts.map +1 -0
  94. package/lib/bridge/prepareTransaction.js +23 -0
  95. package/lib/bridge/prepareTransaction.js.map +1 -0
  96. package/lib/bridge/prepareTransaction.test.d.ts +2 -0
  97. package/lib/bridge/prepareTransaction.test.d.ts.map +1 -0
  98. package/lib/bridge/prepareTransaction.test.js +43 -0
  99. package/lib/bridge/prepareTransaction.test.js.map +1 -0
  100. package/lib/bridge/signOperation.d.ts +12 -0
  101. package/lib/bridge/signOperation.d.ts.map +1 -0
  102. package/lib/bridge/signOperation.js +72 -0
  103. package/lib/bridge/signOperation.js.map +1 -0
  104. package/lib/bridge/signOperation.test.d.ts +2 -0
  105. package/lib/bridge/signOperation.test.d.ts.map +1 -0
  106. package/lib/bridge/signOperation.test.js +129 -0
  107. package/lib/bridge/signOperation.test.js.map +1 -0
  108. package/lib/bridge/synchronisation.d.ts +7 -0
  109. package/lib/bridge/synchronisation.d.ts.map +1 -0
  110. package/lib/bridge/synchronisation.js +155 -0
  111. package/lib/bridge/synchronisation.js.map +1 -0
  112. package/lib/bridge/synchronisation.test.d.ts +2 -0
  113. package/lib/bridge/synchronisation.test.d.ts.map +1 -0
  114. package/lib/bridge/synchronisation.test.js +164 -0
  115. package/lib/bridge/synchronisation.test.js.map +1 -0
  116. package/lib/bridge/transaction.d.ts +14 -0
  117. package/lib/bridge/transaction.d.ts.map +1 -0
  118. package/lib/bridge/transaction.js +61 -0
  119. package/lib/bridge/transaction.js.map +1 -0
  120. package/lib/common-logic/index.d.ts +9 -0
  121. package/lib/common-logic/index.d.ts.map +1 -0
  122. package/lib/common-logic/index.js +96 -0
  123. package/lib/common-logic/index.js.map +1 -0
  124. package/lib/common-logic/index.test.d.ts +2 -0
  125. package/lib/common-logic/index.test.d.ts.map +1 -0
  126. package/lib/common-logic/index.test.js +181 -0
  127. package/lib/common-logic/index.test.js.map +1 -0
  128. package/lib/config.d.ts +9 -0
  129. package/lib/config.d.ts.map +1 -0
  130. package/lib/config.js +16 -0
  131. package/lib/config.js.map +1 -0
  132. package/lib/consts.d.ts +16 -0
  133. package/lib/consts.d.ts.map +1 -0
  134. package/lib/consts.js +19 -0
  135. package/lib/consts.js.map +1 -0
  136. package/lib/signer/getAddress.d.ts +6 -0
  137. package/lib/signer/getAddress.d.ts.map +1 -0
  138. package/lib/signer/getAddress.js +22 -0
  139. package/lib/signer/getAddress.js.map +1 -0
  140. package/lib/signer/getAddress.test.d.ts +2 -0
  141. package/lib/signer/getAddress.test.d.ts.map +1 -0
  142. package/lib/signer/getAddress.test.js +106 -0
  143. package/lib/signer/getAddress.test.js.map +1 -0
  144. package/lib/signer/index.d.ts +3 -0
  145. package/lib/signer/index.d.ts.map +1 -0
  146. package/lib/signer/index.js +8 -0
  147. package/lib/signer/index.js.map +1 -0
  148. package/lib/test/bot-deviceActions.d.ts +4 -0
  149. package/lib/test/bot-deviceActions.d.ts.map +1 -0
  150. package/lib/test/bot-deviceActions.js +67 -0
  151. package/lib/test/bot-deviceActions.js.map +1 -0
  152. package/lib/test/bot-specs.d.ts +7 -0
  153. package/lib/test/bot-specs.d.ts.map +1 -0
  154. package/lib/test/bot-specs.js +107 -0
  155. package/lib/test/bot-specs.js.map +1 -0
  156. package/lib/test/bridgeDatasetTest.d.ts +4 -0
  157. package/lib/test/bridgeDatasetTest.d.ts.map +1 -0
  158. package/lib/test/bridgeDatasetTest.js +174 -0
  159. package/lib/test/bridgeDatasetTest.js.map +1 -0
  160. package/lib/test/fixtures.d.ts +55 -0
  161. package/lib/test/fixtures.d.ts.map +1 -0
  162. package/lib/test/fixtures.js +194 -0
  163. package/lib/test/fixtures.js.map +1 -0
  164. package/lib/test/index.d.ts +4 -0
  165. package/lib/test/index.d.ts.map +1 -0
  166. package/lib/test/index.js +20 -0
  167. package/lib/test/index.js.map +1 -0
  168. package/lib/test/testUtils.d.ts +2 -0
  169. package/lib/test/testUtils.d.ts.map +1 -0
  170. package/lib/test/testUtils.js +8 -0
  171. package/lib/test/testUtils.js.map +1 -0
  172. package/lib/test/testUtils.test.d.ts +2 -0
  173. package/lib/test/testUtils.test.d.ts.map +1 -0
  174. package/lib/test/testUtils.test.js +11 -0
  175. package/lib/test/testUtils.test.js.map +1 -0
  176. package/lib/types/common.d.ts +55 -0
  177. package/lib/types/common.d.ts.map +1 -0
  178. package/lib/types/common.js +3 -0
  179. package/lib/types/common.js.map +1 -0
  180. package/lib/types/index.d.ts +3 -0
  181. package/lib/types/index.d.ts.map +1 -0
  182. package/lib/types/index.js +19 -0
  183. package/lib/types/index.js.map +1 -0
  184. package/lib/types/signer.d.ts +32 -0
  185. package/lib/types/signer.d.ts.map +1 -0
  186. package/lib/types/signer.js +3 -0
  187. package/lib/types/signer.js.map +1 -0
  188. package/lib-es/api/index.d.ts +13 -0
  189. package/lib-es/api/index.d.ts.map +1 -0
  190. package/lib-es/api/index.integ.test.d.ts +2 -0
  191. package/lib-es/api/index.integ.test.d.ts.map +1 -0
  192. package/lib-es/api/index.integ.test.js +55 -0
  193. package/lib-es/api/index.integ.test.js.map +1 -0
  194. package/lib-es/api/index.js +79 -0
  195. package/lib-es/api/index.js.map +1 -0
  196. package/lib-es/api/rosetta/index.d.ts +8 -0
  197. package/lib-es/api/rosetta/index.d.ts.map +1 -0
  198. package/lib-es/api/rosetta/index.js +78 -0
  199. package/lib-es/api/rosetta/index.js.map +1 -0
  200. package/lib-es/api/rosetta/types.d.ts +143 -0
  201. package/lib-es/api/rosetta/types.d.ts.map +1 -0
  202. package/lib-es/api/rosetta/types.js +2 -0
  203. package/lib-es/api/rosetta/types.js.map +1 -0
  204. package/lib-es/api/rosetta/utils.d.ts +43 -0
  205. package/lib-es/api/rosetta/utils.d.ts.map +1 -0
  206. package/lib-es/api/rosetta/utils.js +54 -0
  207. package/lib-es/api/rosetta/utils.js.map +1 -0
  208. package/lib-es/api/rosetta/utils.test.d.ts +2 -0
  209. package/lib-es/api/rosetta/utils.test.d.ts.map +1 -0
  210. package/lib-es/api/rosetta/utils.test.js +80 -0
  211. package/lib-es/api/rosetta/utils.test.js.map +1 -0
  212. package/lib-es/bridge/broadcast.d.ts +6 -0
  213. package/lib-es/bridge/broadcast.d.ts.map +1 -0
  214. package/lib-es/bridge/broadcast.js +9 -0
  215. package/lib-es/bridge/broadcast.js.map +1 -0
  216. package/lib-es/bridge/broadcast.test.d.ts +2 -0
  217. package/lib-es/bridge/broadcast.test.d.ts.map +1 -0
  218. package/lib-es/bridge/broadcast.test.js +31 -0
  219. package/lib-es/bridge/broadcast.test.js.map +1 -0
  220. package/lib-es/bridge/buildTransaction.d.ts +4 -0
  221. package/lib-es/bridge/buildTransaction.d.ts.map +1 -0
  222. package/lib-es/bridge/buildTransaction.js +30 -0
  223. package/lib-es/bridge/buildTransaction.js.map +1 -0
  224. package/lib-es/bridge/buildTransaction.test.d.ts +2 -0
  225. package/lib-es/bridge/buildTransaction.test.d.ts.map +1 -0
  226. package/lib-es/bridge/buildTransaction.test.js +55 -0
  227. package/lib-es/bridge/buildTransaction.test.js.map +1 -0
  228. package/lib-es/bridge/cli-transaction.d.ts +18 -0
  229. package/lib-es/bridge/cli-transaction.d.ts.map +1 -0
  230. package/lib-es/bridge/cli-transaction.js +31 -0
  231. package/lib-es/bridge/cli-transaction.js.map +1 -0
  232. package/lib-es/bridge/createTransaction.d.ts +4 -0
  233. package/lib-es/bridge/createTransaction.d.ts.map +1 -0
  234. package/lib-es/bridge/createTransaction.js +14 -0
  235. package/lib-es/bridge/createTransaction.js.map +1 -0
  236. package/lib-es/bridge/createTransaction.test.d.ts +2 -0
  237. package/lib-es/bridge/createTransaction.test.d.ts.map +1 -0
  238. package/lib-es/bridge/createTransaction.test.js +19 -0
  239. package/lib-es/bridge/createTransaction.test.js.map +1 -0
  240. package/lib-es/bridge/deviceTransactionConfig.d.ts +11 -0
  241. package/lib-es/bridge/deviceTransactionConfig.d.ts.map +1 -0
  242. package/lib-es/bridge/deviceTransactionConfig.js +6 -0
  243. package/lib-es/bridge/deviceTransactionConfig.js.map +1 -0
  244. package/lib-es/bridge/errors.d.ts +10 -0
  245. package/lib-es/bridge/errors.d.ts.map +1 -0
  246. package/lib-es/bridge/errors.js +14 -0
  247. package/lib-es/bridge/errors.js.map +1 -0
  248. package/lib-es/bridge/estimateMaxSpendable.d.ts +5 -0
  249. package/lib-es/bridge/estimateMaxSpendable.d.ts.map +1 -0
  250. package/lib-es/bridge/estimateMaxSpendable.js +21 -0
  251. package/lib-es/bridge/estimateMaxSpendable.js.map +1 -0
  252. package/lib-es/bridge/getEstimatedFees.d.ts +8 -0
  253. package/lib-es/bridge/getEstimatedFees.d.ts.map +1 -0
  254. package/lib-es/bridge/getEstimatedFees.js +7 -0
  255. package/lib-es/bridge/getEstimatedFees.js.map +1 -0
  256. package/lib-es/bridge/getTransactionStatus.d.ts +5 -0
  257. package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -0
  258. package/lib-es/bridge/getTransactionStatus.js +60 -0
  259. package/lib-es/bridge/getTransactionStatus.js.map +1 -0
  260. package/lib-es/bridge/getTransactionStatus.test.d.ts +2 -0
  261. package/lib-es/bridge/getTransactionStatus.test.d.ts.map +1 -0
  262. package/lib-es/bridge/getTransactionStatus.test.js +133 -0
  263. package/lib-es/bridge/getTransactionStatus.test.js.map +1 -0
  264. package/lib-es/bridge/index.d.ts +14 -0
  265. package/lib-es/bridge/index.d.ts.map +1 -0
  266. package/lib-es/bridge/index.js +50 -0
  267. package/lib-es/bridge/index.js.map +1 -0
  268. package/lib-es/bridge/index.test.d.ts +2 -0
  269. package/lib-es/bridge/index.test.d.ts.map +1 -0
  270. package/lib-es/bridge/index.test.js +30 -0
  271. package/lib-es/bridge/index.test.js.map +1 -0
  272. package/lib-es/bridge/prepareTransaction.d.ts +4 -0
  273. package/lib-es/bridge/prepareTransaction.d.ts.map +1 -0
  274. package/lib-es/bridge/prepareTransaction.js +16 -0
  275. package/lib-es/bridge/prepareTransaction.js.map +1 -0
  276. package/lib-es/bridge/prepareTransaction.test.d.ts +2 -0
  277. package/lib-es/bridge/prepareTransaction.test.d.ts.map +1 -0
  278. package/lib-es/bridge/prepareTransaction.test.js +38 -0
  279. package/lib-es/bridge/prepareTransaction.test.js.map +1 -0
  280. package/lib-es/bridge/signOperation.d.ts +12 -0
  281. package/lib-es/bridge/signOperation.d.ts.map +1 -0
  282. package/lib-es/bridge/signOperation.js +64 -0
  283. package/lib-es/bridge/signOperation.js.map +1 -0
  284. package/lib-es/bridge/signOperation.test.d.ts +2 -0
  285. package/lib-es/bridge/signOperation.test.d.ts.map +1 -0
  286. package/lib-es/bridge/signOperation.test.js +127 -0
  287. package/lib-es/bridge/signOperation.test.js.map +1 -0
  288. package/lib-es/bridge/synchronisation.d.ts +7 -0
  289. package/lib-es/bridge/synchronisation.d.ts.map +1 -0
  290. package/lib-es/bridge/synchronisation.js +147 -0
  291. package/lib-es/bridge/synchronisation.js.map +1 -0
  292. package/lib-es/bridge/synchronisation.test.d.ts +2 -0
  293. package/lib-es/bridge/synchronisation.test.d.ts.map +1 -0
  294. package/lib-es/bridge/synchronisation.test.js +159 -0
  295. package/lib-es/bridge/synchronisation.test.js.map +1 -0
  296. package/lib-es/bridge/transaction.d.ts +14 -0
  297. package/lib-es/bridge/transaction.d.ts.map +1 -0
  298. package/lib-es/bridge/transaction.js +53 -0
  299. package/lib-es/bridge/transaction.js.map +1 -0
  300. package/lib-es/common-logic/index.d.ts +9 -0
  301. package/lib-es/common-logic/index.d.ts.map +1 -0
  302. package/lib-es/common-logic/index.js +84 -0
  303. package/lib-es/common-logic/index.js.map +1 -0
  304. package/lib-es/common-logic/index.test.d.ts +2 -0
  305. package/lib-es/common-logic/index.test.d.ts.map +1 -0
  306. package/lib-es/common-logic/index.test.js +179 -0
  307. package/lib-es/common-logic/index.test.js.map +1 -0
  308. package/lib-es/config.d.ts +9 -0
  309. package/lib-es/config.d.ts.map +1 -0
  310. package/lib-es/config.js +11 -0
  311. package/lib-es/config.js.map +1 -0
  312. package/lib-es/consts.d.ts +16 -0
  313. package/lib-es/consts.d.ts.map +1 -0
  314. package/lib-es/consts.js +16 -0
  315. package/lib-es/consts.js.map +1 -0
  316. package/lib-es/signer/getAddress.d.ts +6 -0
  317. package/lib-es/signer/getAddress.d.ts.map +1 -0
  318. package/lib-es/signer/getAddress.js +17 -0
  319. package/lib-es/signer/getAddress.js.map +1 -0
  320. package/lib-es/signer/getAddress.test.d.ts +2 -0
  321. package/lib-es/signer/getAddress.test.d.ts.map +1 -0
  322. package/lib-es/signer/getAddress.test.js +101 -0
  323. package/lib-es/signer/getAddress.test.js.map +1 -0
  324. package/lib-es/signer/index.d.ts +3 -0
  325. package/lib-es/signer/index.d.ts.map +1 -0
  326. package/lib-es/signer/index.js +3 -0
  327. package/lib-es/signer/index.js.map +1 -0
  328. package/lib-es/test/bot-deviceActions.d.ts +4 -0
  329. package/lib-es/test/bot-deviceActions.d.ts.map +1 -0
  330. package/lib-es/test/bot-deviceActions.js +64 -0
  331. package/lib-es/test/bot-deviceActions.js.map +1 -0
  332. package/lib-es/test/bot-specs.d.ts +7 -0
  333. package/lib-es/test/bot-specs.d.ts.map +1 -0
  334. package/lib-es/test/bot-specs.js +102 -0
  335. package/lib-es/test/bot-specs.js.map +1 -0
  336. package/lib-es/test/bridgeDatasetTest.d.ts +4 -0
  337. package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -0
  338. package/lib-es/test/bridgeDatasetTest.js +171 -0
  339. package/lib-es/test/bridgeDatasetTest.js.map +1 -0
  340. package/lib-es/test/fixtures.d.ts +55 -0
  341. package/lib-es/test/fixtures.d.ts.map +1 -0
  342. package/lib-es/test/fixtures.js +182 -0
  343. package/lib-es/test/fixtures.js.map +1 -0
  344. package/lib-es/test/index.d.ts +4 -0
  345. package/lib-es/test/index.d.ts.map +1 -0
  346. package/lib-es/test/index.js +4 -0
  347. package/lib-es/test/index.js.map +1 -0
  348. package/lib-es/test/testUtils.d.ts +2 -0
  349. package/lib-es/test/testUtils.d.ts.map +1 -0
  350. package/lib-es/test/testUtils.js +4 -0
  351. package/lib-es/test/testUtils.js.map +1 -0
  352. package/lib-es/test/testUtils.test.d.ts +2 -0
  353. package/lib-es/test/testUtils.test.d.ts.map +1 -0
  354. package/lib-es/test/testUtils.test.js +9 -0
  355. package/lib-es/test/testUtils.test.js.map +1 -0
  356. package/lib-es/types/common.d.ts +55 -0
  357. package/lib-es/types/common.d.ts.map +1 -0
  358. package/lib-es/types/common.js +2 -0
  359. package/lib-es/types/common.js.map +1 -0
  360. package/lib-es/types/index.d.ts +3 -0
  361. package/lib-es/types/index.d.ts.map +1 -0
  362. package/lib-es/types/index.js +3 -0
  363. package/lib-es/types/index.js.map +1 -0
  364. package/lib-es/types/signer.d.ts +32 -0
  365. package/lib-es/types/signer.d.ts.map +1 -0
  366. package/lib-es/types/signer.js +2 -0
  367. package/lib-es/types/signer.js.map +1 -0
  368. package/package.json +143 -0
  369. package/src/api/index.integ.test.ts +62 -0
  370. package/src/api/index.ts +120 -0
  371. package/src/api/rosetta/index.ts +110 -0
  372. package/src/api/rosetta/types.ts +156 -0
  373. package/src/api/rosetta/utils.test.ts +100 -0
  374. package/src/api/rosetta/utils.ts +71 -0
  375. package/src/bridge/broadcast.test.ts +35 -0
  376. package/src/bridge/broadcast.ts +17 -0
  377. package/src/bridge/buildTransaction.test.ts +68 -0
  378. package/src/bridge/buildTransaction.ts +34 -0
  379. package/src/bridge/cli-transaction.ts +43 -0
  380. package/src/bridge/createTransaction.test.ts +21 -0
  381. package/src/bridge/createTransaction.ts +19 -0
  382. package/src/bridge/deviceTransactionConfig.ts +15 -0
  383. package/src/bridge/errors.ts +16 -0
  384. package/src/bridge/estimateMaxSpendable.ts +31 -0
  385. package/src/bridge/getEstimatedFees.ts +17 -0
  386. package/src/bridge/getTransactionStatus.test.ts +175 -0
  387. package/src/bridge/getTransactionStatus.ts +87 -0
  388. package/src/bridge/index.test.ts +39 -0
  389. package/src/bridge/index.ts +72 -0
  390. package/src/bridge/prepareTransaction.test.ts +43 -0
  391. package/src/bridge/prepareTransaction.ts +24 -0
  392. package/src/bridge/signOperation.test.ts +158 -0
  393. package/src/bridge/signOperation.ts +112 -0
  394. package/src/bridge/synchronisation.test.ts +184 -0
  395. package/src/bridge/synchronisation.ts +168 -0
  396. package/src/bridge/transaction.ts +69 -0
  397. package/src/common-logic/index.test.ts +225 -0
  398. package/src/common-logic/index.ts +97 -0
  399. package/src/config.ts +21 -0
  400. package/src/consts.ts +18 -0
  401. package/src/signer/getAddress.test.ts +131 -0
  402. package/src/signer/getAddress.ts +24 -0
  403. package/src/signer/index.ts +3 -0
  404. package/src/test/bot-deviceActions.ts +73 -0
  405. package/src/test/bot-specs.ts +130 -0
  406. package/src/test/bridgeDatasetTest.ts +180 -0
  407. package/src/test/fixtures.ts +226 -0
  408. package/src/test/index.ts +3 -0
  409. package/src/test/testUtils.test.ts +9 -0
  410. package/src/test/testUtils.ts +3 -0
  411. package/src/types/common.ts +70 -0
  412. package/src/types/index.ts +2 -0
  413. package/src/types/signer.ts +29 -0
  414. package/tsconfig.json +13 -0
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.reEncodeRawSignature = exports.getTotalSpent = exports.getMaxAmount = exports.getAccountNumFromPath = exports.isValidMemo = exports.isValidAddress = void 0;
7
+ const bignumber_js_1 = require("bignumber.js");
8
+ const types_cryptoassets_1 = require("@ledgerhq/types-cryptoassets");
9
+ const consts_1 = require("../consts");
10
+ const bs58check_1 = __importDefault(require("bs58check"));
11
+ /*
12
+ * Validate a Mina address.
13
+ */
14
+ function isValidAddress(address) {
15
+ try {
16
+ if (!address.toLowerCase().startsWith("b62")) {
17
+ return false;
18
+ }
19
+ const decodedAddress = Buffer.from(bs58check_1.default.decode(address)).toString("hex");
20
+ return !!decodedAddress && decodedAddress.length === consts_1.MINA_DECODED_ADDRESS_LENGTH;
21
+ }
22
+ catch (ex) {
23
+ return false;
24
+ }
25
+ }
26
+ exports.isValidAddress = isValidAddress;
27
+ const isValidMemo = (memo) => {
28
+ return memo.length <= consts_1.MAX_MEMO_LENGTH;
29
+ };
30
+ exports.isValidMemo = isValidMemo;
31
+ // Get the account number from the path
32
+ const getAccountNumFromPath = (path) => {
33
+ const parts = path.split("'/");
34
+ if (parts.length === 3) {
35
+ return;
36
+ }
37
+ if (parts[1] !== `${types_cryptoassets_1.CoinType.MINA}`) {
38
+ return;
39
+ }
40
+ try {
41
+ const acc = parseInt(parts[2], 10);
42
+ if (acc >= 0) {
43
+ return acc;
44
+ }
45
+ return;
46
+ }
47
+ catch (e) {
48
+ return;
49
+ }
50
+ };
51
+ exports.getAccountNumFromPath = getAccountNumFromPath;
52
+ /*
53
+ * Get the max amount that can be spent, taking into account tx type and pending operations.
54
+ */
55
+ const getMaxAmount = (a, _t, fees) => {
56
+ let maxAmount;
57
+ let pendingDefaultAmount = new bignumber_js_1.BigNumber(0);
58
+ a.pendingOperations.forEach(({ value }) => {
59
+ pendingDefaultAmount = pendingDefaultAmount.plus(value);
60
+ });
61
+ maxAmount = a.spendableBalance.minus(pendingDefaultAmount);
62
+ if (fees) {
63
+ maxAmount = maxAmount.minus(fees);
64
+ }
65
+ if (maxAmount === undefined || maxAmount.lt(0)) {
66
+ return new bignumber_js_1.BigNumber(0);
67
+ }
68
+ return maxAmount;
69
+ };
70
+ exports.getMaxAmount = getMaxAmount;
71
+ const getTotalSpent = (a, t, fees) => {
72
+ if (t.useAllAmount) {
73
+ return a.spendableBalance;
74
+ }
75
+ return new bignumber_js_1.BigNumber(t.amount).plus(fees);
76
+ };
77
+ exports.getTotalSpent = getTotalSpent;
78
+ // reEncodeRawSignature takes a raw signature in the form of a 128-character hex string and returns a re-encoded version of it.
79
+ function reEncodeRawSignature(rawSignature) {
80
+ function shuffleBytes(hex) {
81
+ const bytes = hex.match(/.{2}/g);
82
+ if (!bytes) {
83
+ throw "Invalid hex input";
84
+ }
85
+ bytes.reverse();
86
+ return bytes.join("");
87
+ }
88
+ if (rawSignature.length !== 128) {
89
+ throw "Invalid raw signature input";
90
+ }
91
+ const field = rawSignature.substring(0, 64);
92
+ const scalar = rawSignature.substring(64);
93
+ return shuffleBytes(field) + shuffleBytes(scalar);
94
+ }
95
+ exports.reEncodeRawSignature = reEncodeRawSignature;
96
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common-logic/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/common-logic/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _1 = require(".");
4
+ const bignumber_js_1 = require("bignumber.js");
5
+ const consts_1 = require("../consts");
6
+ // Mock functions to create test objects
7
+ function createMockAccount(overrides = {}) {
8
+ return {
9
+ spendableBalance: new bignumber_js_1.BigNumber(1000),
10
+ pendingOperations: [],
11
+ ...overrides,
12
+ };
13
+ }
14
+ function createMockTransaction(overrides = {}) {
15
+ return {
16
+ family: "mina",
17
+ amount: new bignumber_js_1.BigNumber(0),
18
+ recipient: "B62qiVhtBtqakq8sNTHdCTXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc",
19
+ ...overrides,
20
+ };
21
+ }
22
+ describe("getAccountNumFromPath", () => {
23
+ it("should return undefined for invalid account number", () => {
24
+ const account = (0, _1.getAccountNumFromPath)("44'/616'/4'/0/0");
25
+ expect(account).toBe(undefined);
26
+ });
27
+ it("should return undefined for unsupported path", () => {
28
+ const account = (0, _1.getAccountNumFromPath)("44'/616'/4/0/0");
29
+ expect(account).toBe(undefined);
30
+ });
31
+ it("should return the account number", () => {
32
+ const account = (0, _1.getAccountNumFromPath)("44'/12586'/4'/0/0");
33
+ expect(account).toBe(4);
34
+ });
35
+ });
36
+ describe("testingAddress", () => {
37
+ const validAddresses = [
38
+ "B62qiVhtBtqakq8sNTHdCTXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc",
39
+ "B62qr5cXFjdnZXYxP5dEwRY7wENxcod4Q2oLxUDiq1QrBXZZyxMH8q4",
40
+ "B62qqmRToRiXZjyLLMJoGnQFXXZuZWdqaNYr43xEDDQzkXMHLouCMZp",
41
+ "B62qnixP59E4vJytpDWZ5YQPrnmqb7YNwhVWiuSAkxbYdX5RauHWwcm",
42
+ "B62qmfBiJx88gM9opov4MDxmDVKMutQsBQ1aGt7TrQYyGQx66fRFxvC",
43
+ "B62qosg21UpwpfPFaxTyirdfUVDHe2Ynsyv1QydE4z34zbLuBZ92ALM",
44
+ "B62qkWUvsVEnXmd4poHbkKujHNnjxkDcZtrLxN1FTa8pp3GkfHMB1gv",
45
+ "B62qoiK7DJurVUUJx1dmJGULdNUmX5bjdiYvoWXEXGugS2Cx3YDsHhy",
46
+ "B62qn1KptFUxxu8aRS52NGQ3GWzn5h8v7U9k571r4LCs5obpoZyd81e",
47
+ "B62qis2tX1rveddCeJeBAZJnXcCwWPp1x9ScZ3iMCxbV29gRbxWo7qi",
48
+ "B62qpBKEDTnS4efjBmou7iztx5x152JEmc29XMR1Y3FVCpnmfKGX4R4",
49
+ "B62qro5bGnk7eCNMA1S5QWmzn5sCcRWckbw83GGaqN3HM2QzP9zYS83",
50
+ "B62qospDjUj43x2yMKiNehojWWRUsE1wpdUDVpfxH8V3n5Y1QgJKFfw",
51
+ "B62qrmYwToypQv8v9cjxJdyhAxKihrqtTtEkYC4Y3u412KCPLGSD93V",
52
+ "B62qj3rpYkGM1T3VN6JDAJs9NccHCRQDYMcQ6UCBc81ff5HXTDjU44d",
53
+ "B62qp2kks3r14P8GWkR2ieT18JobwnmrBFGEoqy3dAReiyM8aDp4be7",
54
+ "B62qpW1SYPcp7TcHJYL6egnN9qzvNtQL5XGyiM8S6UsHvxCYzhhFPjz",
55
+ "B62qospDjUj43x2yMKiNehojWWRUsE1wpdUDVpfxH8V3n5Y1QgJKFfw",
56
+ "B62qj5L8U8A8gexpHLWHxBdfjKuWb8HMguVPecQ5FGqgZAwBAKHvhEy",
57
+ "B62qnt5WShcbVVnVqQqWjkyMJdxMwLq4QbRbgMjoi5nmvQw7dZLRtpx",
58
+ "B62qrGUxqRWn9A8PEJschgLZuS5S1GJiairh65mgTapaK58nkTKHUs8",
59
+ "B62qkS7hmMkzmNDjeCUKyAMZSw1c98MxszZPA7WnvBuh7Pq66ztiwdt",
60
+ "B62qjGWerE9MPNk7E2jEJe9Ex5GxkNR9JCc5mhFeJdGFaNDHnMdGQJQ",
61
+ "B62qpp2DLkLxwFn1QZdkEWgiRFMYnkgh6cj5AJC5pqCYiALh8BmiYJ8",
62
+ "B62qqALaAoEnaJPSNmQaDkUwFGiKwZo4zRK4Ay5eSMxAMVhNxwr2KeM",
63
+ "B62qospDjUj43x2yMKiNehojWWRUsE1wpdUDVpfxH8V3n5Y1QgJKFfw",
64
+ "B62qr3epzHUrxrdminUN4Hzuinuc7aBDAFSR94mPmmxVsbuFpUvDDq6",
65
+ "B62qrJurUKtcqdhQu1XtJJfSH7rR1xrEtSWPQQcFwBJBwVcsFSyVSM3",
66
+ ];
67
+ const invalidAddresses = [
68
+ "", // Empty address
69
+ null, // Null address
70
+ undefined, // Undefined address
71
+ "123", // Too short
72
+ "B61qiVhtBtqakq8sNTHdCTXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc", // Incorrect prefix
73
+ "B62q!@#$%^&*()_+{}|:<>?`~", // Invalid characters
74
+ "B62qj5L8U8A8gexpHLWHxBdfjKuWb8HMguVPecQ5FGqgZAwBAKHvhE", // Too short
75
+ "B62qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq", // Too long
76
+ " B62qiVhtBtqakq8sNTHdCTXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc", // Leading whitespace
77
+ "B62qiVhtBtqakq8sNTHdCTXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc ", // Trailing whitespace
78
+ "B62qiVhtBtqakq8sNTHdC TXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc", // Internal whitespace
79
+ "C62qiVhtBtqakq8sNTHdCTXn6tETSK6gtsmNHRn1WdLqjGLpsHbw1xc", // Incorrect prefix
80
+ ];
81
+ it("should return true for valid address", () => {
82
+ for (const address of validAddresses) {
83
+ expect((0, _1.isValidAddress)(address)).toBe(true);
84
+ }
85
+ });
86
+ it("should return false for invalid address", () => {
87
+ for (const address of invalidAddresses) {
88
+ expect((0, _1.isValidAddress)(address)).toBe(false);
89
+ }
90
+ });
91
+ });
92
+ describe("isValidMemo", () => {
93
+ it("should return true for valid memo", () => {
94
+ expect((0, _1.isValidMemo)("")).toBe(true);
95
+ expect((0, _1.isValidMemo)("Valid memo")).toBe(true);
96
+ expect((0, _1.isValidMemo)("A".repeat(consts_1.MAX_MEMO_LENGTH))).toBe(true);
97
+ });
98
+ it("should return false for memo exceeding max length", () => {
99
+ expect((0, _1.isValidMemo)("A".repeat(consts_1.MAX_MEMO_LENGTH + 1))).toBe(false);
100
+ });
101
+ });
102
+ describe("getMaxAmount", () => {
103
+ it("should calculate correct max amount with no fees", () => {
104
+ const account = createMockAccount({
105
+ spendableBalance: new bignumber_js_1.BigNumber(1000),
106
+ pendingOperations: [],
107
+ });
108
+ const transaction = createMockTransaction();
109
+ expect((0, _1.getMaxAmount)(account, transaction).toNumber()).toBe(1000);
110
+ });
111
+ it("should calculate correct max amount with fees", () => {
112
+ const account = createMockAccount({
113
+ spendableBalance: new bignumber_js_1.BigNumber(1000),
114
+ pendingOperations: [],
115
+ });
116
+ const transaction = createMockTransaction();
117
+ const fees = new bignumber_js_1.BigNumber(10);
118
+ expect((0, _1.getMaxAmount)(account, transaction, fees).toNumber()).toBe(990);
119
+ });
120
+ it("should subtract pending operations from max amount", () => {
121
+ const account = createMockAccount({
122
+ spendableBalance: new bignumber_js_1.BigNumber(1000),
123
+ pendingOperations: [
124
+ { value: new bignumber_js_1.BigNumber(100) },
125
+ { value: new bignumber_js_1.BigNumber(200) },
126
+ ],
127
+ });
128
+ const transaction = createMockTransaction();
129
+ expect((0, _1.getMaxAmount)(account, transaction).toNumber()).toBe(700);
130
+ });
131
+ it("should return 0 when max amount would be negative", () => {
132
+ const account = createMockAccount({
133
+ spendableBalance: new bignumber_js_1.BigNumber(100),
134
+ pendingOperations: [{ value: new bignumber_js_1.BigNumber(200) }],
135
+ });
136
+ const transaction = createMockTransaction();
137
+ expect((0, _1.getMaxAmount)(account, transaction).toNumber()).toBe(0);
138
+ });
139
+ });
140
+ describe("getTotalSpent", () => {
141
+ it("should return spendable balance when useAllAmount is true", () => {
142
+ const account = createMockAccount({
143
+ spendableBalance: new bignumber_js_1.BigNumber(1000),
144
+ });
145
+ const transaction = createMockTransaction({
146
+ useAllAmount: true,
147
+ amount: new bignumber_js_1.BigNumber(500),
148
+ });
149
+ const fees = new bignumber_js_1.BigNumber(10);
150
+ expect((0, _1.getTotalSpent)(account, transaction, fees).toNumber()).toBe(1000);
151
+ });
152
+ it("should return amount plus fees when useAllAmount is false", () => {
153
+ const account = createMockAccount({
154
+ spendableBalance: new bignumber_js_1.BigNumber(1000),
155
+ });
156
+ const transaction = createMockTransaction({
157
+ useAllAmount: false,
158
+ amount: new bignumber_js_1.BigNumber(500),
159
+ });
160
+ const fees = new bignumber_js_1.BigNumber(10);
161
+ expect((0, _1.getTotalSpent)(account, transaction, fees).toNumber()).toBe(510);
162
+ });
163
+ });
164
+ describe("reEncodeRawSignature", () => {
165
+ it("should correctly re-encode a valid signature", () => {
166
+ const rawSignature = "a".repeat(64) + "b".repeat(64);
167
+ const result = (0, _1.reEncodeRawSignature)(rawSignature);
168
+ // Check that the result has the correct format (reverse bytes)
169
+ expect(result.length).toBe(128);
170
+ // Check field part
171
+ const fieldPart = result.substring(0, 64);
172
+ expect(fieldPart).toBe("a".repeat(64).match(/.{2}/g)?.reverse().join(""));
173
+ // Check scalar part
174
+ const scalarPart = result.substring(64);
175
+ expect(scalarPart).toBe("b".repeat(64).match(/.{2}/g)?.reverse().join(""));
176
+ });
177
+ it("should throw an error for invalid signature length", () => {
178
+ expect(() => (0, _1.reEncodeRawSignature)("too_short")).toThrow("Invalid raw signature input");
179
+ });
180
+ });
181
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/common-logic/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { CurrencyConfig } from "@ledgerhq/coin-framework/config";
2
+ export type MinaCoinConfig = () => CurrencyConfig & {
3
+ infra: {
4
+ API_MINA_ROSETTA_NODE: string;
5
+ };
6
+ };
7
+ export declare const setCoinConfig: (config: MinaCoinConfig) => void;
8
+ export declare const getCoinConfig: () => ReturnType<MinaCoinConfig>;
9
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,MAAM,cAAc,GAAG,MAAM,cAAc,GAAG;IAClD,KAAK,EAAE;QACL,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH,CAAC;AAIF,eAAO,MAAM,aAAa,WAAY,cAAc,KAAG,IAEtD,CAAC;AAEF,eAAO,MAAM,aAAa,QAAO,WAAW,cAAc,CAMzD,CAAC"}
package/lib/config.js ADDED
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCoinConfig = exports.setCoinConfig = void 0;
4
+ let coinConfig;
5
+ const setCoinConfig = (config) => {
6
+ coinConfig = config;
7
+ };
8
+ exports.setCoinConfig = setCoinConfig;
9
+ const getCoinConfig = () => {
10
+ if (!coinConfig?.()) {
11
+ throw new Error("Mina module config not set");
12
+ }
13
+ return coinConfig();
14
+ };
15
+ exports.getCoinConfig = getCoinConfig;
16
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAQA,IAAI,UAAsC,CAAC;AAEpC,MAAM,aAAa,GAAG,CAAC,MAAsB,EAAQ,EAAE;IAC5D,UAAU,GAAG,MAAM,CAAC;AACtB,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEK,MAAM,aAAa,GAAG,GAA+B,EAAE;IAC5D,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC,CAAC;AANW,QAAA,aAAa,iBAMxB"}
@@ -0,0 +1,16 @@
1
+ export declare const MAINNET_NETWORK_IDENTIFIER: {
2
+ network_identifier: {
3
+ blockchain: string;
4
+ network: string;
5
+ };
6
+ };
7
+ export declare const MINA_MAINNET_NETWORK_ID = 1;
8
+ export declare const MINA_PAYMENT_TYPE_ID = 0;
9
+ export declare const MINA_TOKEN_ID = "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf";
10
+ export declare const MINA_DECIMALS = 9;
11
+ export declare const MINA_SYMBOL = "MINA";
12
+ export declare const MINA_CURVE_TYPE = "pallas";
13
+ export declare const MAX_MEMO_LENGTH = 32;
14
+ export declare const MINA_DECODED_ADDRESS_LENGTH = 72;
15
+ export declare const MAX_TRANSACTIONS_PER_PAGE = 100;
16
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B;;;;;CAKtC,CAAC;AAEF,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,aAAa,uDAAuD,CAAC;AAClF,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,WAAW,SAAS,CAAC;AAClC,eAAO,MAAM,eAAe,WAAW,CAAC;AAExC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,eAAO,MAAM,yBAAyB,MAAM,CAAC"}
package/lib/consts.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_TRANSACTIONS_PER_PAGE = exports.MINA_DECODED_ADDRESS_LENGTH = exports.MAX_MEMO_LENGTH = exports.MINA_CURVE_TYPE = exports.MINA_SYMBOL = exports.MINA_DECIMALS = exports.MINA_TOKEN_ID = exports.MINA_PAYMENT_TYPE_ID = exports.MINA_MAINNET_NETWORK_ID = exports.MAINNET_NETWORK_IDENTIFIER = void 0;
4
+ exports.MAINNET_NETWORK_IDENTIFIER = {
5
+ network_identifier: {
6
+ blockchain: "mina",
7
+ network: "mainnet",
8
+ },
9
+ };
10
+ exports.MINA_MAINNET_NETWORK_ID = 1;
11
+ exports.MINA_PAYMENT_TYPE_ID = 0;
12
+ exports.MINA_TOKEN_ID = "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf";
13
+ exports.MINA_DECIMALS = 9;
14
+ exports.MINA_SYMBOL = "MINA";
15
+ exports.MINA_CURVE_TYPE = "pallas";
16
+ exports.MAX_MEMO_LENGTH = 32;
17
+ exports.MINA_DECODED_ADDRESS_LENGTH = 72;
18
+ exports.MAX_TRANSACTIONS_PER_PAGE = 100;
19
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,0BAA0B,GAAG;IACxC,kBAAkB,EAAE;QAClB,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,SAAS;KACnB;CACF,CAAC;AAEW,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAC5B,QAAA,oBAAoB,GAAG,CAAC,CAAC;AACzB,QAAA,aAAa,GAAG,oDAAoD,CAAC;AACrE,QAAA,aAAa,GAAG,CAAC,CAAC;AAClB,QAAA,WAAW,GAAG,MAAM,CAAC;AACrB,QAAA,eAAe,GAAG,QAAQ,CAAC;AAE3B,QAAA,eAAe,GAAG,EAAE,CAAC;AACrB,QAAA,2BAA2B,GAAG,EAAE,CAAC;AAEjC,QAAA,yBAAyB,GAAG,GAAG,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { GetAddressFn } from "@ledgerhq/coin-framework/bridge/getAddressWrapper";
2
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
3
+ import { MinaSigner } from "../types/signer";
4
+ declare const resolver: (signerContext: SignerContext<MinaSigner>) => GetAddressFn;
5
+ export default resolver;
6
+ //# sourceMappingURL=getAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAddress.d.ts","sourceRoot":"","sources":["../../src/signer/getAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mDAAmD,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAsB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIjE,QAAA,MAAM,QAAQ,kBAAmB,cAAc,UAAU,CAAC,KAAG,YAc5D,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const common_logic_1 = require("../common-logic");
7
+ const invariant_1 = __importDefault(require("invariant"));
8
+ const resolver = (signerContext) => {
9
+ return async (deviceId, { path, verify }) => {
10
+ const account = (0, common_logic_1.getAccountNumFromPath)(path);
11
+ (0, invariant_1.default)(account !== undefined, "Invalid account path, supported: 44'/12586'/<account>'/0/0");
12
+ const r = (await signerContext(deviceId, signer => signer.getAddress(account, verify || false)));
13
+ (0, invariant_1.default)(r.publicKey, "[mina] getAddress: expected publicKey to be defined");
14
+ return {
15
+ address: r.publicKey,
16
+ publicKey: r.publicKey,
17
+ path,
18
+ };
19
+ };
20
+ };
21
+ exports.default = resolver;
22
+ //# sourceMappingURL=getAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAddress.js","sourceRoot":"","sources":["../../src/signer/getAddress.ts"],"names":[],"mappings":";;;;;AAIA,kDAAwD;AACxD,0DAAkC;AAElC,MAAM,QAAQ,GAAG,CAAC,aAAwC,EAAgB,EAAE;IAC1E,OAAO,KAAK,EAAE,QAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAqB,EAAE,EAAE;QACrE,MAAM,OAAO,GAAG,IAAA,oCAAqB,EAAC,IAAI,CAAC,CAAC;QAC5C,IAAA,mBAAS,EAAC,OAAO,KAAK,SAAS,EAAE,4DAA4D,CAAC,CAAC;QAC/F,MAAM,CAAC,GAAG,CAAC,MAAM,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAChD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,CAC5C,CAAuB,CAAC;QACzB,IAAA,mBAAS,EAAC,CAAC,CAAC,SAAS,EAAE,qDAAqD,CAAC,CAAC;QAC9E,OAAO;YACL,OAAO,EAAE,CAAC,CAAC,SAAS;YACpB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI;SACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getAddress.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAddress.test.d.ts","sourceRoot":"","sources":["../../src/signer/getAddress.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const getAddress_1 = __importDefault(require("./getAddress"));
7
+ const currencies_1 = require("@ledgerhq/cryptoassets/lib/currencies");
8
+ describe("Mina getAddress resolver", () => {
9
+ // Mock the signer context
10
+ const mockSigner = {
11
+ getAddress: jest.fn(),
12
+ signTransaction: jest.fn(),
13
+ };
14
+ const commonOptions = {
15
+ currency: (0, currencies_1.getCryptoCurrencyById)("mina"),
16
+ derivationMode: "minabip44",
17
+ };
18
+ const mockSignerContext = jest.fn(async (deviceId, callback) => {
19
+ return callback(mockSigner);
20
+ });
21
+ beforeEach(() => {
22
+ jest.clearAllMocks();
23
+ });
24
+ it("should call the signer with the correct account number", async () => {
25
+ const options = {
26
+ ...commonOptions,
27
+ path: "44'/12586'/0'/0/0",
28
+ verify: false,
29
+ };
30
+ // Mock response from signer
31
+ mockSigner.getAddress.mockResolvedValue({
32
+ publicKey: "testPublicKey123",
33
+ });
34
+ const getAddress = (0, getAddress_1.default)(mockSignerContext);
35
+ await getAddress("device1", options);
36
+ expect(mockSigner.getAddress).toHaveBeenCalledWith(0, false);
37
+ });
38
+ it("should pass the verify flag correctly", async () => {
39
+ const options = {
40
+ path: "44'/12586'/2'/0/0",
41
+ verify: true,
42
+ ...commonOptions,
43
+ };
44
+ // Mock response from signer
45
+ mockSigner.getAddress.mockResolvedValue({
46
+ publicKey: "testPublicKey456",
47
+ });
48
+ const getAddress = (0, getAddress_1.default)(mockSignerContext);
49
+ await getAddress("device1", options);
50
+ expect(mockSigner.getAddress).toHaveBeenCalledWith(2, true);
51
+ });
52
+ it("should default to verify=false when not provided", async () => {
53
+ const options = {
54
+ path: "44'/12586'/1'/0/0",
55
+ ...commonOptions,
56
+ };
57
+ // Mock response from signer
58
+ mockSigner.getAddress.mockResolvedValue({
59
+ publicKey: "testPublicKey789",
60
+ });
61
+ const getAddress = (0, getAddress_1.default)(mockSignerContext);
62
+ await getAddress("device1", options);
63
+ expect(mockSigner.getAddress).toHaveBeenCalledWith(1, false);
64
+ });
65
+ it("should return the correct address format", async () => {
66
+ const options = {
67
+ path: "44'/12586'/3'/0/0",
68
+ ...commonOptions,
69
+ };
70
+ const expectedPublicKey = "minaPublicKeyABC123";
71
+ // Mock response from signer
72
+ mockSigner.getAddress.mockResolvedValue({
73
+ publicKey: expectedPublicKey,
74
+ });
75
+ const getAddress = (0, getAddress_1.default)(mockSignerContext);
76
+ const result = await getAddress("device1", options);
77
+ expect(result).toEqual({
78
+ address: expectedPublicKey,
79
+ publicKey: expectedPublicKey,
80
+ path: options.path,
81
+ });
82
+ });
83
+ it("should throw an error for invalid path", async () => {
84
+ const options = {
85
+ path: "44'/789'/0'/0/0", // Invalid coin type for Mina
86
+ verify: false,
87
+ ...commonOptions,
88
+ };
89
+ const getAddress = (0, getAddress_1.default)(mockSignerContext);
90
+ await expect(getAddress("device1", options)).rejects.toThrow();
91
+ });
92
+ it("should throw an error when publicKey is undefined", async () => {
93
+ const options = {
94
+ path: "44'/12586'/0'/0/0",
95
+ verify: false,
96
+ ...commonOptions,
97
+ };
98
+ // Mock response from signer with undefined publicKey
99
+ mockSigner.getAddress.mockResolvedValue({
100
+ publicKey: undefined,
101
+ });
102
+ const getAddress = (0, getAddress_1.default)(mockSignerContext);
103
+ await expect(getAddress("device1", options)).rejects.toThrow("[mina] getAddress: expected publicKey to be defined");
104
+ });
105
+ });
106
+ //# sourceMappingURL=getAddress.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAddress.test.js","sourceRoot":"","sources":["../../src/signer/getAddress.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import resolver from "./getAddress";
2
+ export default resolver;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,cAAc,CAAC;AAEpC,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const getAddress_1 = __importDefault(require("./getAddress"));
7
+ exports.default = getAddress_1.default;
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":";;;;;AAAA,8DAAoC;AAEpC,kBAAe,oBAAQ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DeviceAction, State } from "@ledgerhq/coin-framework/bot/types";
2
+ import type { Transaction } from "../types/common";
3
+ export declare const acceptTransaction: DeviceAction<Transaction, State<Transaction>>;
4
+ //# sourceMappingURL=bot-deviceActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot-deviceActions.d.ts","sourceRoot":"","sources":["../../src/test/bot-deviceActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,eAAO,MAAM,iBAAiB,EAAE,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAmE1E,CAAC"}