@ledgerhq/coin-ton 0.3.12-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 (341) hide show
  1. package/.eslintrc.js +20 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/.unimportedrc.json +19 -0
  4. package/CHANGELOG.md +15 -0
  5. package/LICENSE.txt +21 -0
  6. package/jest.config.js +12 -0
  7. package/lib/__tests__/fixtures/api.fixtures.d.ts +4 -0
  8. package/lib/__tests__/fixtures/api.fixtures.d.ts.map +1 -0
  9. package/lib/__tests__/fixtures/api.fixtures.js +33 -0
  10. package/lib/__tests__/fixtures/api.fixtures.js.map +1 -0
  11. package/lib/__tests__/fixtures/common.fixtures.d.ts +29 -0
  12. package/lib/__tests__/fixtures/common.fixtures.d.ts.map +1 -0
  13. package/lib/__tests__/fixtures/common.fixtures.js +124 -0
  14. package/lib/__tests__/fixtures/common.fixtures.js.map +1 -0
  15. package/lib/__tests__/integration/bridge.integration.test.d.ts +14 -0
  16. package/lib/__tests__/integration/bridge.integration.test.d.ts.map +1 -0
  17. package/lib/__tests__/integration/bridge.integration.test.js +136 -0
  18. package/lib/__tests__/integration/bridge.integration.test.js.map +1 -0
  19. package/lib/__tests__/unit/api.unit.test.d.ts +2 -0
  20. package/lib/__tests__/unit/api.unit.test.d.ts.map +1 -0
  21. package/lib/__tests__/unit/api.unit.test.js +77 -0
  22. package/lib/__tests__/unit/api.unit.test.js.map +1 -0
  23. package/lib/__tests__/unit/broadcast.unit.test.d.ts +2 -0
  24. package/lib/__tests__/unit/broadcast.unit.test.d.ts.map +1 -0
  25. package/lib/__tests__/unit/broadcast.unit.test.js +40 -0
  26. package/lib/__tests__/unit/broadcast.unit.test.js.map +1 -0
  27. package/lib/__tests__/unit/createTransaction.unit.test.d.ts +2 -0
  28. package/lib/__tests__/unit/createTransaction.unit.test.d.ts.map +1 -0
  29. package/lib/__tests__/unit/createTransaction.unit.test.js +34 -0
  30. package/lib/__tests__/unit/createTransaction.unit.test.js.map +1 -0
  31. package/lib/__tests__/unit/deviceTransactionConfig.unit.test.d.ts +2 -0
  32. package/lib/__tests__/unit/deviceTransactionConfig.unit.test.d.ts.map +1 -0
  33. package/lib/__tests__/unit/deviceTransactionConfig.unit.test.js +74 -0
  34. package/lib/__tests__/unit/deviceTransactionConfig.unit.test.js.map +1 -0
  35. package/lib/__tests__/unit/estimateMaxSpendable.unit.test.d.ts +2 -0
  36. package/lib/__tests__/unit/estimateMaxSpendable.unit.test.d.ts.map +1 -0
  37. package/lib/__tests__/unit/estimateMaxSpendable.unit.test.js +31 -0
  38. package/lib/__tests__/unit/estimateMaxSpendable.unit.test.js.map +1 -0
  39. package/lib/__tests__/unit/getTransactionStatus.unit.test.d.ts +2 -0
  40. package/lib/__tests__/unit/getTransactionStatus.unit.test.d.ts.map +1 -0
  41. package/lib/__tests__/unit/getTransactionStatus.unit.test.js +96 -0
  42. package/lib/__tests__/unit/getTransactionStatus.unit.test.js.map +1 -0
  43. package/lib/__tests__/unit/hw-getAddress.unit.test.d.ts +2 -0
  44. package/lib/__tests__/unit/hw-getAddress.unit.test.d.ts.map +1 -0
  45. package/lib/__tests__/unit/hw-getAddress.unit.test.js +67 -0
  46. package/lib/__tests__/unit/hw-getAddress.unit.test.js.map +1 -0
  47. package/lib/__tests__/unit/prepareTransaction.unit.test.d.ts +2 -0
  48. package/lib/__tests__/unit/prepareTransaction.unit.test.d.ts.map +1 -0
  49. package/lib/__tests__/unit/prepareTransaction.unit.test.js +42 -0
  50. package/lib/__tests__/unit/prepareTransaction.unit.test.js.map +1 -0
  51. package/lib/__tests__/unit/signOperation.unit.test.d.ts +2 -0
  52. package/lib/__tests__/unit/signOperation.unit.test.d.ts.map +1 -0
  53. package/lib/__tests__/unit/signOperation.unit.test.js +83 -0
  54. package/lib/__tests__/unit/signOperation.unit.test.js.map +1 -0
  55. package/lib/__tests__/unit/txn.unit.test.d.ts +2 -0
  56. package/lib/__tests__/unit/txn.unit.test.d.ts.map +1 -0
  57. package/lib/__tests__/unit/txn.unit.test.js +116 -0
  58. package/lib/__tests__/unit/txn.unit.test.js.map +1 -0
  59. package/lib/__tests__/unit/utils.unit.test.d.ts +2 -0
  60. package/lib/__tests__/unit/utils.unit.test.d.ts.map +1 -0
  61. package/lib/__tests__/unit/utils.unit.test.js +97 -0
  62. package/lib/__tests__/unit/utils.unit.test.js.map +1 -0
  63. package/lib/bridge/bridgeHelpers/api.d.ts +10 -0
  64. package/lib/bridge/bridgeHelpers/api.d.ts.map +1 -0
  65. package/lib/bridge/bridgeHelpers/api.js +104 -0
  66. package/lib/bridge/bridgeHelpers/api.js.map +1 -0
  67. package/lib/bridge/bridgeHelpers/api.types.d.ts +164 -0
  68. package/lib/bridge/bridgeHelpers/api.types.d.ts.map +1 -0
  69. package/lib/bridge/bridgeHelpers/api.types.js +3 -0
  70. package/lib/bridge/bridgeHelpers/api.types.js.map +1 -0
  71. package/lib/bridge/bridgeHelpers/txn.d.ts +5 -0
  72. package/lib/bridge/bridgeHelpers/txn.d.ts.map +1 -0
  73. package/lib/bridge/bridgeHelpers/txn.js +166 -0
  74. package/lib/bridge/bridgeHelpers/txn.js.map +1 -0
  75. package/lib/bridge/js.d.ts +12 -0
  76. package/lib/bridge/js.d.ts.map +1 -0
  77. package/lib/bridge/js.js +65 -0
  78. package/lib/bridge/js.js.map +1 -0
  79. package/lib/broadcast.d.ts +5 -0
  80. package/lib/broadcast.d.ts.map +1 -0
  81. package/lib/broadcast.js +19 -0
  82. package/lib/broadcast.js.map +1 -0
  83. package/lib/cli-transaction.d.ts +12 -0
  84. package/lib/cli-transaction.d.ts.map +1 -0
  85. package/lib/cli-transaction.js +21 -0
  86. package/lib/cli-transaction.js.map +1 -0
  87. package/lib/config.d.ts +9 -0
  88. package/lib/config.d.ts.map +1 -0
  89. package/lib/config.js +16 -0
  90. package/lib/config.js.map +1 -0
  91. package/lib/createTransaction.d.ts +5 -0
  92. package/lib/createTransaction.d.ts.map +1 -0
  93. package/lib/createTransaction.js +16 -0
  94. package/lib/createTransaction.js.map +1 -0
  95. package/lib/deviceTransactionConfig.d.ts +11 -0
  96. package/lib/deviceTransactionConfig.d.ts.map +1 -0
  97. package/lib/deviceTransactionConfig.js +37 -0
  98. package/lib/deviceTransactionConfig.js.map +1 -0
  99. package/lib/errors.d.ts +4 -0
  100. package/lib/errors.d.ts.map +1 -0
  101. package/lib/errors.js +9 -0
  102. package/lib/errors.js.map +1 -0
  103. package/lib/estimateMaxSpendable.d.ts +5 -0
  104. package/lib/estimateMaxSpendable.d.ts.map +1 -0
  105. package/lib/estimateMaxSpendable.js +32 -0
  106. package/lib/estimateMaxSpendable.js.map +1 -0
  107. package/lib/getTransactionStatus.d.ts +5 -0
  108. package/lib/getTransactionStatus.d.ts.map +1 -0
  109. package/lib/getTransactionStatus.js +97 -0
  110. package/lib/getTransactionStatus.js.map +1 -0
  111. package/lib/hw-getAddress.d.ts +6 -0
  112. package/lib/hw-getAddress.d.ts.map +1 -0
  113. package/lib/hw-getAddress.js +31 -0
  114. package/lib/hw-getAddress.js.map +1 -0
  115. package/lib/hw-signMessage.d.ts +12 -0
  116. package/lib/hw-signMessage.d.ts.map +1 -0
  117. package/lib/hw-signMessage.js +33 -0
  118. package/lib/hw-signMessage.js.map +1 -0
  119. package/lib/prepareTransaction.d.ts +5 -0
  120. package/lib/prepareTransaction.d.ts.map +1 -0
  121. package/lib/prepareTransaction.js +29 -0
  122. package/lib/prepareTransaction.js.map +1 -0
  123. package/lib/signOperation.d.ts +11 -0
  124. package/lib/signOperation.d.ts.map +1 -0
  125. package/lib/signOperation.js +96 -0
  126. package/lib/signOperation.js.map +1 -0
  127. package/lib/signer.d.ts +27 -0
  128. package/lib/signer.d.ts.map +1 -0
  129. package/lib/signer.js +3 -0
  130. package/lib/signer.js.map +1 -0
  131. package/lib/specs.d.ts +8 -0
  132. package/lib/specs.d.ts.map +1 -0
  133. package/lib/specs.js +106 -0
  134. package/lib/specs.js.map +1 -0
  135. package/lib/speculos-deviceActions.d.ts +4 -0
  136. package/lib/speculos-deviceActions.d.ts.map +1 -0
  137. package/lib/speculos-deviceActions.js +34 -0
  138. package/lib/speculos-deviceActions.js.map +1 -0
  139. package/lib/synchronisation.d.ts +5 -0
  140. package/lib/synchronisation.d.ts.map +1 -0
  141. package/lib/synchronisation.js +95 -0
  142. package/lib/synchronisation.js.map +1 -0
  143. package/lib/transaction.d.ts +14 -0
  144. package/lib/transaction.d.ts.map +1 -0
  145. package/lib/transaction.js +41 -0
  146. package/lib/transaction.js.map +1 -0
  147. package/lib/types.d.ts +65 -0
  148. package/lib/types.d.ts.map +1 -0
  149. package/lib/types.js +3 -0
  150. package/lib/types.js.map +1 -0
  151. package/lib/utils.d.ts +11 -0
  152. package/lib/utils.d.ts.map +1 -0
  153. package/lib/utils.js +125 -0
  154. package/lib/utils.js.map +1 -0
  155. package/lib-es/__tests__/fixtures/api.fixtures.d.ts +4 -0
  156. package/lib-es/__tests__/fixtures/api.fixtures.d.ts.map +1 -0
  157. package/lib-es/__tests__/fixtures/api.fixtures.js +30 -0
  158. package/lib-es/__tests__/fixtures/api.fixtures.js.map +1 -0
  159. package/lib-es/__tests__/fixtures/common.fixtures.d.ts +29 -0
  160. package/lib-es/__tests__/fixtures/common.fixtures.d.ts.map +1 -0
  161. package/lib-es/__tests__/fixtures/common.fixtures.js +118 -0
  162. package/lib-es/__tests__/fixtures/common.fixtures.js.map +1 -0
  163. package/lib-es/__tests__/integration/bridge.integration.test.d.ts +14 -0
  164. package/lib-es/__tests__/integration/bridge.integration.test.d.ts.map +1 -0
  165. package/lib-es/__tests__/integration/bridge.integration.test.js +130 -0
  166. package/lib-es/__tests__/integration/bridge.integration.test.js.map +1 -0
  167. package/lib-es/__tests__/unit/api.unit.test.d.ts +2 -0
  168. package/lib-es/__tests__/unit/api.unit.test.d.ts.map +1 -0
  169. package/lib-es/__tests__/unit/api.unit.test.js +52 -0
  170. package/lib-es/__tests__/unit/api.unit.test.js.map +1 -0
  171. package/lib-es/__tests__/unit/broadcast.unit.test.d.ts +2 -0
  172. package/lib-es/__tests__/unit/broadcast.unit.test.d.ts.map +1 -0
  173. package/lib-es/__tests__/unit/broadcast.unit.test.js +35 -0
  174. package/lib-es/__tests__/unit/broadcast.unit.test.js.map +1 -0
  175. package/lib-es/__tests__/unit/createTransaction.unit.test.d.ts +2 -0
  176. package/lib-es/__tests__/unit/createTransaction.unit.test.d.ts.map +1 -0
  177. package/lib-es/__tests__/unit/createTransaction.unit.test.js +29 -0
  178. package/lib-es/__tests__/unit/createTransaction.unit.test.js.map +1 -0
  179. package/lib-es/__tests__/unit/deviceTransactionConfig.unit.test.d.ts +2 -0
  180. package/lib-es/__tests__/unit/deviceTransactionConfig.unit.test.d.ts.map +1 -0
  181. package/lib-es/__tests__/unit/deviceTransactionConfig.unit.test.js +69 -0
  182. package/lib-es/__tests__/unit/deviceTransactionConfig.unit.test.js.map +1 -0
  183. package/lib-es/__tests__/unit/estimateMaxSpendable.unit.test.d.ts +2 -0
  184. package/lib-es/__tests__/unit/estimateMaxSpendable.unit.test.d.ts.map +1 -0
  185. package/lib-es/__tests__/unit/estimateMaxSpendable.unit.test.js +26 -0
  186. package/lib-es/__tests__/unit/estimateMaxSpendable.unit.test.js.map +1 -0
  187. package/lib-es/__tests__/unit/getTransactionStatus.unit.test.d.ts +2 -0
  188. package/lib-es/__tests__/unit/getTransactionStatus.unit.test.d.ts.map +1 -0
  189. package/lib-es/__tests__/unit/getTransactionStatus.unit.test.js +91 -0
  190. package/lib-es/__tests__/unit/getTransactionStatus.unit.test.js.map +1 -0
  191. package/lib-es/__tests__/unit/hw-getAddress.unit.test.d.ts +2 -0
  192. package/lib-es/__tests__/unit/hw-getAddress.unit.test.d.ts.map +1 -0
  193. package/lib-es/__tests__/unit/hw-getAddress.unit.test.js +62 -0
  194. package/lib-es/__tests__/unit/hw-getAddress.unit.test.js.map +1 -0
  195. package/lib-es/__tests__/unit/prepareTransaction.unit.test.d.ts +2 -0
  196. package/lib-es/__tests__/unit/prepareTransaction.unit.test.d.ts.map +1 -0
  197. package/lib-es/__tests__/unit/prepareTransaction.unit.test.js +37 -0
  198. package/lib-es/__tests__/unit/prepareTransaction.unit.test.js.map +1 -0
  199. package/lib-es/__tests__/unit/signOperation.unit.test.d.ts +2 -0
  200. package/lib-es/__tests__/unit/signOperation.unit.test.d.ts.map +1 -0
  201. package/lib-es/__tests__/unit/signOperation.unit.test.js +78 -0
  202. package/lib-es/__tests__/unit/signOperation.unit.test.js.map +1 -0
  203. package/lib-es/__tests__/unit/txn.unit.test.d.ts +2 -0
  204. package/lib-es/__tests__/unit/txn.unit.test.d.ts.map +1 -0
  205. package/lib-es/__tests__/unit/txn.unit.test.js +111 -0
  206. package/lib-es/__tests__/unit/txn.unit.test.js.map +1 -0
  207. package/lib-es/__tests__/unit/utils.unit.test.d.ts +2 -0
  208. package/lib-es/__tests__/unit/utils.unit.test.d.ts.map +1 -0
  209. package/lib-es/__tests__/unit/utils.unit.test.js +95 -0
  210. package/lib-es/__tests__/unit/utils.unit.test.js.map +1 -0
  211. package/lib-es/bridge/bridgeHelpers/api.d.ts +10 -0
  212. package/lib-es/bridge/bridgeHelpers/api.d.ts.map +1 -0
  213. package/lib-es/bridge/bridgeHelpers/api.js +93 -0
  214. package/lib-es/bridge/bridgeHelpers/api.js.map +1 -0
  215. package/lib-es/bridge/bridgeHelpers/api.types.d.ts +164 -0
  216. package/lib-es/bridge/bridgeHelpers/api.types.d.ts.map +1 -0
  217. package/lib-es/bridge/bridgeHelpers/api.types.js +2 -0
  218. package/lib-es/bridge/bridgeHelpers/api.types.js.map +1 -0
  219. package/lib-es/bridge/bridgeHelpers/txn.d.ts +5 -0
  220. package/lib-es/bridge/bridgeHelpers/txn.d.ts.map +1 -0
  221. package/lib-es/bridge/bridgeHelpers/txn.js +158 -0
  222. package/lib-es/bridge/bridgeHelpers/txn.js.map +1 -0
  223. package/lib-es/bridge/js.d.ts +12 -0
  224. package/lib-es/bridge/js.d.ts.map +1 -0
  225. package/lib-es/bridge/js.js +56 -0
  226. package/lib-es/bridge/js.js.map +1 -0
  227. package/lib-es/broadcast.d.ts +5 -0
  228. package/lib-es/broadcast.d.ts.map +1 -0
  229. package/lib-es/broadcast.js +17 -0
  230. package/lib-es/broadcast.js.map +1 -0
  231. package/lib-es/cli-transaction.d.ts +12 -0
  232. package/lib-es/cli-transaction.d.ts.map +1 -0
  233. package/lib-es/cli-transaction.js +15 -0
  234. package/lib-es/cli-transaction.js.map +1 -0
  235. package/lib-es/config.d.ts +9 -0
  236. package/lib-es/config.d.ts.map +1 -0
  237. package/lib-es/config.js +11 -0
  238. package/lib-es/config.js.map +1 -0
  239. package/lib-es/createTransaction.d.ts +5 -0
  240. package/lib-es/createTransaction.d.ts.map +1 -0
  241. package/lib-es/createTransaction.js +14 -0
  242. package/lib-es/createTransaction.js.map +1 -0
  243. package/lib-es/deviceTransactionConfig.d.ts +11 -0
  244. package/lib-es/deviceTransactionConfig.d.ts.map +1 -0
  245. package/lib-es/deviceTransactionConfig.js +35 -0
  246. package/lib-es/deviceTransactionConfig.js.map +1 -0
  247. package/lib-es/errors.d.ts +4 -0
  248. package/lib-es/errors.d.ts.map +1 -0
  249. package/lib-es/errors.js +6 -0
  250. package/lib-es/errors.js.map +1 -0
  251. package/lib-es/estimateMaxSpendable.d.ts +5 -0
  252. package/lib-es/estimateMaxSpendable.d.ts.map +1 -0
  253. package/lib-es/estimateMaxSpendable.js +30 -0
  254. package/lib-es/estimateMaxSpendable.js.map +1 -0
  255. package/lib-es/getTransactionStatus.d.ts +5 -0
  256. package/lib-es/getTransactionStatus.d.ts.map +1 -0
  257. package/lib-es/getTransactionStatus.js +93 -0
  258. package/lib-es/getTransactionStatus.js.map +1 -0
  259. package/lib-es/hw-getAddress.d.ts +6 -0
  260. package/lib-es/hw-getAddress.d.ts.map +1 -0
  261. package/lib-es/hw-getAddress.js +29 -0
  262. package/lib-es/hw-getAddress.js.map +1 -0
  263. package/lib-es/hw-signMessage.d.ts +12 -0
  264. package/lib-es/hw-signMessage.d.ts.map +1 -0
  265. package/lib-es/hw-signMessage.js +29 -0
  266. package/lib-es/hw-signMessage.js.map +1 -0
  267. package/lib-es/prepareTransaction.d.ts +5 -0
  268. package/lib-es/prepareTransaction.d.ts.map +1 -0
  269. package/lib-es/prepareTransaction.js +27 -0
  270. package/lib-es/prepareTransaction.js.map +1 -0
  271. package/lib-es/signOperation.d.ts +11 -0
  272. package/lib-es/signOperation.d.ts.map +1 -0
  273. package/lib-es/signOperation.js +91 -0
  274. package/lib-es/signOperation.js.map +1 -0
  275. package/lib-es/signer.d.ts +27 -0
  276. package/lib-es/signer.d.ts.map +1 -0
  277. package/lib-es/signer.js +2 -0
  278. package/lib-es/signer.js.map +1 -0
  279. package/lib-es/specs.d.ts +8 -0
  280. package/lib-es/specs.d.ts.map +1 -0
  281. package/lib-es/specs.js +99 -0
  282. package/lib-es/specs.js.map +1 -0
  283. package/lib-es/speculos-deviceActions.d.ts +4 -0
  284. package/lib-es/speculos-deviceActions.d.ts.map +1 -0
  285. package/lib-es/speculos-deviceActions.js +31 -0
  286. package/lib-es/speculos-deviceActions.js.map +1 -0
  287. package/lib-es/synchronisation.d.ts +5 -0
  288. package/lib-es/synchronisation.d.ts.map +1 -0
  289. package/lib-es/synchronisation.js +88 -0
  290. package/lib-es/synchronisation.js.map +1 -0
  291. package/lib-es/transaction.d.ts +14 -0
  292. package/lib-es/transaction.d.ts.map +1 -0
  293. package/lib-es/transaction.js +33 -0
  294. package/lib-es/transaction.js.map +1 -0
  295. package/lib-es/types.d.ts +65 -0
  296. package/lib-es/types.d.ts.map +1 -0
  297. package/lib-es/types.js +2 -0
  298. package/lib-es/types.js.map +1 -0
  299. package/lib-es/utils.d.ts +11 -0
  300. package/lib-es/utils.d.ts.map +1 -0
  301. package/lib-es/utils.js +112 -0
  302. package/lib-es/utils.js.map +1 -0
  303. package/package.json +86 -0
  304. package/src/__tests__/fixtures/api.fixtures.ts +39 -0
  305. package/src/__tests__/fixtures/common.fixtures.ts +139 -0
  306. package/src/__tests__/integration/bridge.integration.test.ts +135 -0
  307. package/src/__tests__/unit/api.unit.test.ts +60 -0
  308. package/src/__tests__/unit/broadcast.unit.test.ts +36 -0
  309. package/src/__tests__/unit/createTransaction.unit.test.ts +20 -0
  310. package/src/__tests__/unit/deviceTransactionConfig.unit.test.ts +69 -0
  311. package/src/__tests__/unit/estimateMaxSpendable.unit.test.ts +19 -0
  312. package/src/__tests__/unit/getTransactionStatus.unit.test.ts +119 -0
  313. package/src/__tests__/unit/hw-getAddress.unit.test.ts +58 -0
  314. package/src/__tests__/unit/prepareTransaction.unit.test.ts +52 -0
  315. package/src/__tests__/unit/signOperation.unit.test.ts +90 -0
  316. package/src/__tests__/unit/txn.unit.test.ts +121 -0
  317. package/src/__tests__/unit/utils.unit.test.ts +126 -0
  318. package/src/bridge/bridgeHelpers/api.ts +104 -0
  319. package/src/bridge/bridgeHelpers/api.types.ts +178 -0
  320. package/src/bridge/bridgeHelpers/txn.ts +166 -0
  321. package/src/bridge/js.ts +65 -0
  322. package/src/broadcast.ts +13 -0
  323. package/src/cli-transaction.ts +30 -0
  324. package/src/config.ts +21 -0
  325. package/src/createTransaction.ts +17 -0
  326. package/src/deviceTransactionConfig.ts +48 -0
  327. package/src/errors.ts +6 -0
  328. package/src/estimateMaxSpendable.ts +40 -0
  329. package/src/getTransactionStatus.ts +130 -0
  330. package/src/hw-getAddress.ts +28 -0
  331. package/src/hw-signMessage.ts +31 -0
  332. package/src/prepareTransaction.ts +27 -0
  333. package/src/signOperation.ts +115 -0
  334. package/src/signer.ts +32 -0
  335. package/src/specs.ts +122 -0
  336. package/src/speculos-deviceActions.ts +38 -0
  337. package/src/synchronisation.ts +91 -0
  338. package/src/transaction.ts +61 -0
  339. package/src/types.ts +82 -0
  340. package/src/utils.ts +120 -0
  341. package/tsconfig.json +12 -0
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.getTransactionStatus = void 0;
13
+ const errors_1 = require("@ledgerhq/errors");
14
+ const errors_2 = require("./errors");
15
+ const utils_1 = require("./utils");
16
+ /**
17
+ * Validate an address for account transaction
18
+ */
19
+ const validateRecipient = (account, tx) => {
20
+ const errors = {};
21
+ if (tx.recipient) {
22
+ // Check if recipient is matching the format of account valid eth address or not
23
+ const isRecipientValidate = (0, utils_1.isAddressValid)(tx.recipient);
24
+ if (!isRecipientValidate) {
25
+ errors.recipient = new errors_1.InvalidAddress("", {
26
+ currencyName: account.currency.name,
27
+ });
28
+ }
29
+ if ((0, utils_1.addressesAreEqual)(account.freshAddress, tx.recipient)) {
30
+ errors.recipient = new errors_1.InvalidAddressBecauseDestinationIsAlsoSource("", {
31
+ currencyName: account.currency.name,
32
+ });
33
+ }
34
+ }
35
+ else {
36
+ errors.recipient = new errors_1.RecipientRequired(); // ""
37
+ }
38
+ return [errors];
39
+ };
40
+ /**
41
+ * Validate the sender address for account transaction
42
+ */
43
+ const validateSender = (account) => {
44
+ const errors = {};
45
+ // Check if sender is matching the format of account valid ton address or not
46
+ const isSenderValidate = (0, utils_1.isAddressValid)(account.freshAddress);
47
+ if (!isSenderValidate) {
48
+ errors.sender = new errors_1.InvalidAddress("", {
49
+ currencyName: account.currency.name,
50
+ });
51
+ }
52
+ return [errors];
53
+ };
54
+ const validateAmount = (account, transaction, totalSpent) => {
55
+ const errors = {};
56
+ const warnings = {};
57
+ // if no amount or 0
58
+ if (!transaction.amount || transaction.amount.isZero()) {
59
+ errors.amount = new errors_1.AmountRequired(); // "Amount required"
60
+ }
61
+ else if (totalSpent.isGreaterThan(account.balance)) {
62
+ // if not enough to make the transaction
63
+ errors.amount = new errors_1.NotEnoughBalance(); // "Sorry, insufficient funds"
64
+ }
65
+ return [errors, warnings];
66
+ };
67
+ const validateComment = (transaction) => {
68
+ const errors = {};
69
+ // if the comment isn'transaction encrypted, it should be valid
70
+ if (transaction.comment.isEncrypted || !(0, utils_1.commentIsValid)(transaction.comment)) {
71
+ errors.transaction = new errors_2.TonCommentInvalid();
72
+ }
73
+ return [errors];
74
+ };
75
+ const getTransactionStatus = (account, transaction) => __awaiter(void 0, void 0, void 0, function* () {
76
+ const totalSpent = transaction.amount.plus(transaction.fees);
77
+ // Recipient related errors and warnings
78
+ const [recipientErr] = validateRecipient(account, transaction);
79
+ // Sender related errors and warnings
80
+ const [senderErr] = validateSender(account);
81
+ // Amount related errors and warnings
82
+ const [amountErr, amountWarn] = validateAmount(account, transaction, totalSpent);
83
+ // Transaction related errors and warnings
84
+ const [transactionErr] = validateComment(transaction);
85
+ const errors = Object.assign(Object.assign(Object.assign(Object.assign({}, recipientErr), senderErr), amountErr), transactionErr);
86
+ const warnings = Object.assign({}, amountWarn);
87
+ return {
88
+ amount: transaction.amount,
89
+ errors,
90
+ warnings,
91
+ estimatedFees: transaction.fees,
92
+ totalSpent,
93
+ };
94
+ });
95
+ exports.getTransactionStatus = getTransactionStatus;
96
+ exports.default = exports.getTransactionStatus;
97
+ //# sourceMappingURL=getTransactionStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionStatus.js","sourceRoot":"","sources":["../src/getTransactionStatus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { GetAddressFn } from "@ledgerhq/coin-framework/bridge/getAddressWrapper";
2
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
3
+ import { TonSigner } from "./signer";
4
+ declare const resolver: (signerContext: SignerContext<TonSigner>) => 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/hw-getAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mDAAmD,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,QAAA,MAAM,QAAQ,kBAAmB,cAAc,SAAS,CAAC,KAAG,YAmB3D,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const utils_1 = require("./utils");
13
+ const resolver = (signerContext) => {
14
+ return (deviceId_1, _a) => __awaiter(void 0, [deviceId_1, _a], void 0, function* (deviceId, { path, verify }) {
15
+ const ledgerPath = (0, utils_1.getLedgerTonPath)(path);
16
+ const sig = yield signerContext(deviceId, (signer) => __awaiter(void 0, void 0, void 0, function* () {
17
+ return verify
18
+ ? yield signer.validateAddress(ledgerPath, { bounceable: false })
19
+ : yield signer.getAddress(ledgerPath, { bounceable: false });
20
+ }));
21
+ if (!sig.address || !sig.publicKey.length)
22
+ throw Error(`[ton] Response is empty ${sig.address} ${sig.publicKey}`);
23
+ return {
24
+ address: sig.address,
25
+ publicKey: sig.publicKey.toString("hex"),
26
+ path,
27
+ };
28
+ });
29
+ };
30
+ exports.default = resolver;
31
+ //# sourceMappingURL=hw-getAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hw-getAddress.js","sourceRoot":"","sources":["../src/hw-getAddress.ts"],"names":[],"mappings":";;;;;;;;;;;AAIA,mCAA2C;AAE3C,MAAM,QAAQ,GAAG,CAAC,aAAuC,EAAgB,EAAE;IACzE,OAAO,iBAA8D,EAAE,wDAAzD,QAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAqB;QACjE,MAAM,UAAU,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC;QAE1C,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAM,MAAM,EAAC,EAAE;YACvD,OAAO,MAAM;gBACX,CAAC,CAAC,MAAM,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;gBACjE,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC,CAAA,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM;YACvC,MAAM,KAAK,CAAC,2BAA2B,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QAEzE,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxC,IAAI;SACL,CAAC;IACJ,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
2
+ import { Account, AnyMessage } from "@ledgerhq/types-live";
3
+ import { TonSigner } from "./signer";
4
+ export declare const signMessage: (signerContext: SignerContext<TonSigner>) => (deviceId: string, account: Account, { message }: AnyMessage) => Promise<{
5
+ rsv: {
6
+ r: string;
7
+ s: string;
8
+ v: number;
9
+ };
10
+ signature: string;
11
+ }>;
12
+ //# sourceMappingURL=hw-signMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hw-signMessage.d.ts","sourceRoot":"","sources":["../src/hw-signMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAIrC,eAAO,MAAM,WAAW,kBACN,cAAc,SAAS,CAAC,gBACvB,MAAM,WAAW,OAAO,eAAe,UAAU;;;;;;;EAsBjE,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.signMessage = void 0;
13
+ const utils_1 = require("./utils");
14
+ const signMessage = (signerContext) => (deviceId_1, account_1, _a) => __awaiter(void 0, [deviceId_1, account_1, _a], void 0, function* (deviceId, account, { message }) {
15
+ if (typeof message !== "string")
16
+ throw new Error("Invalid message value");
17
+ const parsedMessage = JSON.parse(message);
18
+ const ledgerPath = (0, utils_1.getLedgerTonPath)(account.freshAddressPath);
19
+ const sig = yield signerContext(deviceId, signer => signer.signTransaction(ledgerPath, parsedMessage));
20
+ if (!sig) {
21
+ throw new Error("No signature");
22
+ }
23
+ return {
24
+ rsv: {
25
+ r: "",
26
+ s: "",
27
+ v: 0,
28
+ },
29
+ signature: sig.toString(),
30
+ };
31
+ });
32
+ exports.signMessage = signMessage;
33
+ //# sourceMappingURL=hw-signMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hw-signMessage.js","sourceRoot":"","sources":["../src/hw-signMessage.ts"],"names":[],"mappings":";;;;;;;;;;;;AAIA,mCAA2C;AAEpC,MAAM,WAAW,GACtB,CAAC,aAAuC,EAAE,EAAE,CAC5C,4BAAoE,EAAE,mEAA/D,QAAgB,EAAE,OAAgB,EAAE,EAAE,OAAO,EAAc;IAChE,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAE1E,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAA,wBAAgB,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE9D,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CACjD,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,aAA+B,CAAC,CACpE,CAAC;IAEF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACL,GAAG,EAAE;YACH,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,CAAC;SACL;QACD,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE;KAC1B,CAAC;AACJ,CAAC,CAAA,CAAC;AAxBS,QAAA,WAAW,eAwBpB"}
@@ -0,0 +1,5 @@
1
+ import { Account, AccountBridge } from "@ledgerhq/types-live";
2
+ import type { Transaction } from "./types";
3
+ declare const prepareTransaction: AccountBridge<Transaction, Account>["prepareTransaction"];
4
+ export default prepareTransaction;
5
+ //# sourceMappingURL=prepareTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../src/prepareTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,QAAA,MAAM,kBAAkB,EAAE,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,oBAAoB,CAkBjF,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const jsHelpers_1 = require("@ledgerhq/coin-framework/bridge/jsHelpers");
13
+ const api_1 = require("./bridge/bridgeHelpers/api");
14
+ const utils_1 = require("./utils");
15
+ const prepareTransaction = (account, transaction) => __awaiter(void 0, void 0, void 0, function* () {
16
+ const accountInfo = yield (0, api_1.fetchAccountInfo)(account.freshAddress);
17
+ const simpleTx = (0, utils_1.buildTonTransaction)(transaction, accountInfo.seqno);
18
+ const fees = yield (0, utils_1.getTonEstimatedFees)(account, accountInfo.status === "uninit", simpleTx);
19
+ let amount;
20
+ if (transaction.useAllAmount) {
21
+ amount = account.spendableBalance.minus(fees);
22
+ }
23
+ else {
24
+ amount = transaction.amount;
25
+ }
26
+ return (0, jsHelpers_1.defaultUpdateTransaction)(transaction, { fees, amount });
27
+ });
28
+ exports.default = prepareTransaction;
29
+ //# sourceMappingURL=prepareTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../src/prepareTransaction.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,yEAAqF;AAErF,oDAA8D;AAE9D,mCAAmE;AAEnE,MAAM,kBAAkB,GAA8D,CACpF,OAAgB,EAChB,WAAwB,EACF,EAAE;IACxB,MAAM,WAAW,GAAG,MAAM,IAAA,sBAAgB,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEjE,MAAM,QAAQ,GAAG,IAAA,2BAAmB,EAAC,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAErE,MAAM,IAAI,GAAG,MAAM,IAAA,2BAAmB,EAAC,OAAO,EAAE,WAAW,CAAC,MAAM,KAAK,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE3F,IAAI,MAAM,CAAC;IACX,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;QAC7B,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,OAAO,IAAA,oCAAwB,EAAC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACjE,CAAC,CAAA,CAAC;AAEF,kBAAe,kBAAkB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
2
+ import type { Account, AccountBridge } from "@ledgerhq/types-live";
3
+ import type { TonSigner } from "./signer";
4
+ import type { TonOperation, Transaction } from "./types";
5
+ /**
6
+ * Sign Transaction with Ledger hardware
7
+ */
8
+ export declare const buildSignOperation: (signerContext: SignerContext<TonSigner>) => AccountBridge<Transaction>["signOperation"];
9
+ export declare const buildOptimisticOperation: (account: Account, transaction: Transaction) => TonOperation;
10
+ export default buildSignOperation;
11
+ //# sourceMappingURL=signOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signOperation.d.ts","sourceRoot":"","sources":["../src/signOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAgC,MAAM,sBAAsB,CAAC;AAKjG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAW,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAkBlE;;GAEG;AACH,eAAO,MAAM,kBAAkB,kBACb,cAAc,SAAS,CAAC,KAAG,cAAc,WAAW,CAAC,CAAC,eAAe,CAsDjF,CAAC;AAEP,eAAO,MAAM,wBAAwB,YAC1B,OAAO,eACH,WAAW,KACvB,YAwBF,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.buildOptimisticOperation = exports.buildSignOperation = void 0;
13
+ const core_1 = require("@ton/core");
14
+ const ton_1 = require("@ton/ton");
15
+ const rxjs_1 = require("rxjs");
16
+ const api_1 = require("./bridge/bridgeHelpers/api");
17
+ const utils_1 = require("./utils");
18
+ const packTransaction = (account, needsInit, signature) => {
19
+ var _a;
20
+ const { address } = core_1.Address.parseFriendly(account.freshAddress);
21
+ let init = null;
22
+ if (needsInit) {
23
+ if (((_a = account.xpub) === null || _a === void 0 ? void 0 : _a.length) !== 64)
24
+ throw Error("[ton] xpub can't be found");
25
+ const wallet = ton_1.WalletContractV4.create({
26
+ workchain: 0,
27
+ publicKey: Buffer.from(account.xpub, "hex"),
28
+ });
29
+ init = wallet.init;
30
+ }
31
+ const ext = (0, core_1.external)({ to: address, init, body: signature });
32
+ return (0, core_1.beginCell)().store((0, core_1.storeMessage)(ext)).endCell().toBoc().toString("base64");
33
+ };
34
+ /**
35
+ * Sign Transaction with Ledger hardware
36
+ */
37
+ const buildSignOperation = (signerContext) => ({ account, transaction, deviceId, }) => new rxjs_1.Observable(o => {
38
+ let cancelled = false;
39
+ function main() {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ const address = account.freshAddress;
42
+ const accountInfo = yield (0, api_1.fetchAccountInfo)(address);
43
+ const tonTx = (0, utils_1.buildTonTransaction)(transaction, accountInfo.seqno);
44
+ const ledgerPath = (0, utils_1.getLedgerTonPath)(account.freshAddressPath);
45
+ o.next({ type: "device-signature-requested" });
46
+ const sig = yield signerContext(deviceId, signer => signer.signTransaction(ledgerPath, tonTx));
47
+ if (cancelled)
48
+ return;
49
+ o.next({ type: "device-signature-granted" });
50
+ if (!sig) {
51
+ throw new Error("No signature");
52
+ }
53
+ const signature = packTransaction(account, accountInfo.status === "uninit", sig);
54
+ const operation = (0, exports.buildOptimisticOperation)(account, transaction);
55
+ o.next({
56
+ type: "signed",
57
+ signedOperation: {
58
+ operation,
59
+ signature,
60
+ },
61
+ });
62
+ });
63
+ }
64
+ main().then(() => o.complete(), e => o.error(e));
65
+ return () => {
66
+ cancelled = true;
67
+ };
68
+ });
69
+ exports.buildSignOperation = buildSignOperation;
70
+ const buildOptimisticOperation = (account, transaction) => {
71
+ const { recipient, amount, fees, comment } = transaction;
72
+ const { id: accountId } = account;
73
+ const op = {
74
+ id: "",
75
+ hash: "",
76
+ type: "OUT",
77
+ senders: [account.freshAddress],
78
+ recipients: [recipient],
79
+ accountId,
80
+ value: amount.plus(fees),
81
+ fee: fees,
82
+ blockHash: null,
83
+ blockHeight: null,
84
+ date: new Date(),
85
+ extra: {
86
+ // we don't know yet, will be patched in final operation
87
+ lt: "",
88
+ explorerHash: "",
89
+ comment: comment,
90
+ },
91
+ };
92
+ return op;
93
+ };
94
+ exports.buildOptimisticOperation = buildOptimisticOperation;
95
+ exports.default = exports.buildSignOperation;
96
+ //# sourceMappingURL=signOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../src/signOperation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /// <reference types="node" />
2
+ import { TonCell, TonTransaction } from "./types";
3
+ export type TonAddress = {
4
+ publicKey: Buffer;
5
+ address: string;
6
+ };
7
+ export type TonSignature = TonCell | undefined;
8
+ export interface TonSigner {
9
+ getAddress(path: number[], opts?: {
10
+ testOnly?: boolean;
11
+ bounceable?: boolean;
12
+ chain?: number;
13
+ }): Promise<{
14
+ address: string;
15
+ publicKey: Buffer;
16
+ }>;
17
+ validateAddress(path: number[], opts?: {
18
+ testOnly?: boolean;
19
+ bounceable?: boolean;
20
+ chain?: number;
21
+ }): Promise<{
22
+ address: string;
23
+ publicKey: Buffer;
24
+ }>;
25
+ signTransaction: (path: number[], transaction: TonTransaction) => Promise<TonCell>;
26
+ }
27
+ //# sourceMappingURL=signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;AAC/C,MAAM,WAAW,SAAS;IACxB,UAAU,CACR,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,eAAe,CACb,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACpF"}
package/lib/signer.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":""}
package/lib/specs.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import type { AppSpec, TransactionDestinationTestInput } from "@ledgerhq/coin-framework/bot/types";
2
+ import { Transaction } from "./types";
3
+ export declare const testDestination: <T>({ destination, destinationBeforeTransaction, sendingOperation, }: TransactionDestinationTestInput<T>) => void;
4
+ declare const _default: {
5
+ tonSpecs: AppSpec<Transaction>;
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=specs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../src/specs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,+BAA+B,EAAE,MAAM,oCAAoC,CAAC;AAOnG,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAItC,eAAO,MAAM,eAAe,wEAIzB,gCAAgC,CAAC,CAAC,KAAG,IAoBvC,CAAC;;;;AAmFF,wBAEE"}
package/lib/specs.js ADDED
@@ -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
+ exports.testDestination = void 0;
7
+ const specs_1 = require("@ledgerhq/coin-framework/bot/specs");
8
+ const cryptoassets_1 = require("@ledgerhq/cryptoassets");
9
+ const devices_1 = require("@ledgerhq/devices");
10
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
11
+ const expect_1 = __importDefault(require("expect"));
12
+ const invariant_1 = __importDefault(require("invariant"));
13
+ const speculos_deviceActions_1 = require("./speculos-deviceActions");
14
+ const MIN_SAFE = new bignumber_js_1.default(1.5e7); // approx two txs' fees (0.015 TON)
15
+ const testDestination = ({ destination, destinationBeforeTransaction, sendingOperation, }) => {
16
+ var _a;
17
+ const amount = sendingOperation.value.minus(sendingOperation.fee);
18
+ const inOp = destination.operations.find(op => op.hash === sendingOperation.hash && op.type === "IN");
19
+ const inFees = (_a = inOp === null || inOp === void 0 ? void 0 : inOp.fee) !== null && _a !== void 0 ? _a : (0, bignumber_js_1.default)(0);
20
+ (0, specs_1.botTest)("account balance increased with transaction amount", () => (0, expect_1.default)(destination.balance.toString()).toBe(destinationBeforeTransaction.balance.plus(amount).minus(inFees).toString()));
21
+ (0, specs_1.botTest)("operation amount is consistent with sendingOperation", () => {
22
+ var _a;
23
+ return (0, expect_1.default)({
24
+ type: inOp === null || inOp === void 0 ? void 0 : inOp.type,
25
+ amount: (_a = inOp === null || inOp === void 0 ? void 0 : inOp.value) === null || _a === void 0 ? void 0 : _a.toString(),
26
+ }).toMatchObject({
27
+ type: "IN",
28
+ amount: amount.toString(),
29
+ });
30
+ });
31
+ };
32
+ exports.testDestination = testDestination;
33
+ const tonSpecs = {
34
+ name: "TON",
35
+ currency: (0, cryptoassets_1.getCryptoCurrencyById)("ton"),
36
+ appQuery: {
37
+ model: devices_1.DeviceModelId.nanoS,
38
+ appName: "TON",
39
+ },
40
+ genericDeviceAction: speculos_deviceActions_1.acceptTransaction,
41
+ testTimeout: 6 * 60 * 1000,
42
+ minViableAmount: MIN_SAFE,
43
+ transactionCheck: ({ maxSpendable }) => {
44
+ (0, invariant_1.default)(maxSpendable.gt(MIN_SAFE), "balance is too low");
45
+ },
46
+ mutations: [
47
+ {
48
+ name: "Send ~50%",
49
+ maxRun: 1,
50
+ testDestination: exports.testDestination,
51
+ transaction: ({ account, siblings, bridge, maxSpendable }) => {
52
+ (0, invariant_1.default)(maxSpendable.gt(MIN_SAFE), "balance is too low");
53
+ const updates = [
54
+ { recipient: (0, specs_1.pickSiblings)(siblings).freshAddress },
55
+ { amount: maxSpendable.div(2).integerValue() },
56
+ ];
57
+ if (Math.random() < 0.5)
58
+ updates.push({ comment: { isEncrypted: false, text: "LL Bot" } });
59
+ return {
60
+ transaction: bridge.createTransaction(account),
61
+ updates,
62
+ };
63
+ },
64
+ test: ({ accountBeforeTransaction, operation, account, transaction }) => {
65
+ // we don't know the exact amount in fees, so we accept +- 20% of expected fees
66
+ const baseAmount = accountBeforeTransaction.balance.minus(transaction.amount);
67
+ const maxBalance = baseAmount.minus(transaction.fees.multipliedBy(0.8).integerValue());
68
+ const minBalance = baseAmount.minus(transaction.fees.multipliedBy(1.2).integerValue());
69
+ (0, specs_1.botTest)("account spendable balance decreased with operation", () => {
70
+ (0, expect_1.default)(account.spendableBalance.lte(maxBalance)).toBe(true);
71
+ (0, expect_1.default)(account.spendableBalance.gte(minBalance)).toBe(true);
72
+ });
73
+ (0, specs_1.botTest)("operation comment", () => (0, expect_1.default)(operation.extra).toMatchObject({
74
+ comment: transaction.comment,
75
+ }));
76
+ },
77
+ },
78
+ {
79
+ name: "Transfer Max",
80
+ maxRun: 1,
81
+ transaction: ({ account, siblings, bridge }) => {
82
+ const updates = [
83
+ { recipient: (0, specs_1.pickSiblings)(siblings).freshAddress },
84
+ { useAllAmount: true },
85
+ ];
86
+ if (Math.random() < 0.5)
87
+ updates.push({ comment: { isEncrypted: false, text: "LL Bot" } });
88
+ return {
89
+ transaction: bridge.createTransaction(account),
90
+ updates,
91
+ };
92
+ },
93
+ testDestination: exports.testDestination,
94
+ test: ({ account, transaction, operation }) => {
95
+ (0, specs_1.botTest)("account spendable balance is zero", () => (0, expect_1.default)(account.spendableBalance.toFixed()).toBe("0"));
96
+ (0, specs_1.botTest)("operation comment", () => (0, expect_1.default)(operation.extra).toMatchObject({
97
+ comment: transaction.comment,
98
+ }));
99
+ },
100
+ },
101
+ ],
102
+ };
103
+ exports.default = {
104
+ tonSpecs,
105
+ };
106
+ //# sourceMappingURL=specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specs.js","sourceRoot":"","sources":["../src/specs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { DeviceAction, State } from "@ledgerhq/coin-framework/bot/types";
2
+ import type { Transaction } from "./types";
3
+ export declare const acceptTransaction: DeviceAction<Transaction, State<Transaction>>;
4
+ //# sourceMappingURL=speculos-deviceActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speculos-deviceActions.d.ts","sourceRoot":"","sources":["../src/speculos-deviceActions.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,iBAAiB,EAAE,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CA6B1E,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.acceptTransaction = void 0;
4
+ const specs_1 = require("@ledgerhq/coin-framework/bot/specs");
5
+ exports.acceptTransaction = (0, specs_1.deviceActionFlow)({
6
+ steps: [
7
+ {
8
+ title: "Review",
9
+ button: specs_1.SpeculosButton.RIGHT,
10
+ },
11
+ {
12
+ title: "To",
13
+ button: specs_1.SpeculosButton.RIGHT,
14
+ expectedValue: ({ transaction }) => transaction.recipient,
15
+ },
16
+ {
17
+ title: "Amount",
18
+ button: specs_1.SpeculosButton.RIGHT,
19
+ expectedValue: ({ account, transaction }) => transaction.useAllAmount
20
+ ? "ALL YOUR TONs"
21
+ : (0, specs_1.formatDeviceAmount)(account.currency, transaction.amount),
22
+ },
23
+ {
24
+ title: "Comment",
25
+ button: specs_1.SpeculosButton.RIGHT,
26
+ expectedValue: ({ transaction }) => transaction.comment.text,
27
+ },
28
+ {
29
+ title: "Approve",
30
+ button: specs_1.SpeculosButton.BOTH,
31
+ },
32
+ ],
33
+ });
34
+ //# sourceMappingURL=speculos-deviceActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speculos-deviceActions.js","sourceRoot":"","sources":["../src/speculos-deviceActions.ts"],"names":[],"mappings":";;;AAAA,8DAI4C;AAI/B,QAAA,iBAAiB,GAAkD,IAAA,wBAAgB,EAAC;IAC/F,KAAK,EAAE;QACL;YACE,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,sBAAc,CAAC,KAAK;SAC7B;QACD;YACE,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,sBAAc,CAAC,KAAK;YAC5B,aAAa,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;SAC1D;QACD;YACE,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,sBAAc,CAAC,KAAK;YAC5B,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAC1C,WAAW,CAAC,YAAY;gBACtB,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,IAAA,0BAAkB,EAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC;SAC/D;QACD;YACE,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,sBAAc,CAAC,KAAK;YAC5B,aAAa,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI;SAC7D;QACD;YACE,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,sBAAc,CAAC,IAAI;SAC5B;KACF;CACF,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { GetAccountShape } from "@ledgerhq/coin-framework/bridge/jsHelpers";
2
+ import { Account } from "@ledgerhq/types-live";
3
+ export declare const getAccountShape: GetAccountShape<Account>;
4
+ export declare const sync: (initialAccount: Account, syncConfig: import("@ledgerhq/types-live").SyncConfig) => import("rxjs").Observable<(arg0: Account) => Account>;
5
+ //# sourceMappingURL=synchronisation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synchronisation.d.ts","sourceRoot":"","sources":["../src/synchronisation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAsB,MAAM,2CAA2C,CAAC;AAEhG,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAQ/C,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,OAAO,CAiDpD,CAAC;AA8BF,eAAO,MAAM,IAAI,2IAA0C,CAAC"}