@ledgerhq/coin-tron 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/.eslintrc.js +20 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/.unimportedrc.json +25 -0
  4. package/LICENSE.txt +21 -0
  5. package/jest.config.js +8 -0
  6. package/jest.integ.config.js +7 -0
  7. package/lib/bridge/broadcast.d.ts +7 -0
  8. package/lib/bridge/broadcast.d.ts.map +1 -0
  9. package/lib/bridge/broadcast.js +26 -0
  10. package/lib/bridge/broadcast.js.map +1 -0
  11. package/lib/bridge/buildOptimisticOperation.d.ts +5 -0
  12. package/lib/bridge/buildOptimisticOperation.d.ts.map +1 -0
  13. package/lib/bridge/buildOptimisticOperation.js +101 -0
  14. package/lib/bridge/buildOptimisticOperation.js.map +1 -0
  15. package/lib/bridge/createTransaction.d.ts +4 -0
  16. package/lib/bridge/createTransaction.d.ts.map +1 -0
  17. package/lib/bridge/createTransaction.js +19 -0
  18. package/lib/bridge/createTransaction.js.map +1 -0
  19. package/lib/bridge/deviceTransactionConfig.d.ts +20 -0
  20. package/lib/bridge/deviceTransactionConfig.d.ts.map +1 -0
  21. package/lib/bridge/deviceTransactionConfig.js +65 -0
  22. package/lib/bridge/deviceTransactionConfig.js.map +1 -0
  23. package/lib/bridge/estimateMaxSpendable.d.ts +5 -0
  24. package/lib/bridge/estimateMaxSpendable.d.ts.map +1 -0
  25. package/lib/bridge/estimateMaxSpendable.js +30 -0
  26. package/lib/bridge/estimateMaxSpendable.js.map +1 -0
  27. package/lib/bridge/getEstimateFees.d.ts +6 -0
  28. package/lib/bridge/getEstimateFees.d.ts.map +1 -0
  29. package/lib/bridge/getEstimateFees.js +52 -0
  30. package/lib/bridge/getEstimateFees.js.map +1 -0
  31. package/lib/bridge/getTransactionStatus.d.ts +4 -0
  32. package/lib/bridge/getTransactionStatus.d.ts.map +1 -0
  33. package/lib/bridge/getTransactionStatus.js +218 -0
  34. package/lib/bridge/getTransactionStatus.js.map +1 -0
  35. package/lib/bridge/index.d.ts +10 -0
  36. package/lib/bridge/index.d.ts.map +1 -0
  37. package/lib/bridge/index.js +60 -0
  38. package/lib/bridge/index.js.map +1 -0
  39. package/lib/bridge/preload.d.ts +8 -0
  40. package/lib/bridge/preload.d.ts.map +1 -0
  41. package/lib/bridge/preload.js +32 -0
  42. package/lib/bridge/preload.js.map +1 -0
  43. package/lib/bridge/prepareTransaction.d.ts +4 -0
  44. package/lib/bridge/prepareTransaction.d.ts.map +1 -0
  45. package/lib/bridge/prepareTransaction.js +19 -0
  46. package/lib/bridge/prepareTransaction.js.map +1 -0
  47. package/lib/bridge/serialization.d.ts +9 -0
  48. package/lib/bridge/serialization.d.ts.map +1 -0
  49. package/lib/bridge/serialization.js +238 -0
  50. package/lib/bridge/serialization.js.map +1 -0
  51. package/lib/bridge/signOperation.d.ts +5 -0
  52. package/lib/bridge/signOperation.d.ts.map +1 -0
  53. package/lib/bridge/signOperation.js +92 -0
  54. package/lib/bridge/signOperation.js.map +1 -0
  55. package/lib/bridge/synchronization.d.ts +5 -0
  56. package/lib/bridge/synchronization.d.ts.map +1 -0
  57. package/lib/bridge/synchronization.integ.test.d.ts +3 -0
  58. package/lib/bridge/synchronization.integ.test.d.ts.map +1 -0
  59. package/lib/bridge/synchronization.integ.test.js +96 -0
  60. package/lib/bridge/synchronization.integ.test.js.map +1 -0
  61. package/lib/bridge/synchronization.js +216 -0
  62. package/lib/bridge/synchronization.js.map +1 -0
  63. package/lib/bridge/transaction.d.ts +15 -0
  64. package/lib/bridge/transaction.d.ts.map +1 -0
  65. package/lib/bridge/transaction.js +61 -0
  66. package/lib/bridge/transaction.js.map +1 -0
  67. package/lib/config.d.ts +10 -0
  68. package/lib/config.d.ts.map +1 -0
  69. package/lib/config.js +17 -0
  70. package/lib/config.js.map +1 -0
  71. package/lib/index.d.ts +3 -0
  72. package/lib/index.d.ts.map +1 -0
  73. package/lib/index.js +21 -0
  74. package/lib/index.js.map +1 -0
  75. package/lib/logic/constants.d.ts +4 -0
  76. package/lib/logic/constants.d.ts.map +1 -0
  77. package/lib/logic/constants.js +7 -0
  78. package/lib/logic/constants.js.map +1 -0
  79. package/lib/logic/pagination.d.ts +3 -0
  80. package/lib/logic/pagination.d.ts.map +1 -0
  81. package/lib/logic/pagination.js +19 -0
  82. package/lib/logic/pagination.js.map +1 -0
  83. package/lib/logic/utils.d.ts +12 -0
  84. package/lib/logic/utils.d.ts.map +1 -0
  85. package/lib/logic/utils.js +177 -0
  86. package/lib/logic/utils.js.map +1 -0
  87. package/lib/network/format.d.ts +9 -0
  88. package/lib/network/format.d.ts.map +1 -0
  89. package/lib/network/format.js +127 -0
  90. package/lib/network/format.js.map +1 -0
  91. package/lib/network/index.d.ts +30 -0
  92. package/lib/network/index.d.ts.map +1 -0
  93. package/lib/network/index.integ.test.d.ts +2 -0
  94. package/lib/network/index.integ.test.d.ts.map +1 -0
  95. package/lib/network/index.integ.test.js +38 -0
  96. package/lib/network/index.integ.test.js.map +1 -0
  97. package/lib/network/index.js +555 -0
  98. package/lib/network/index.js.map +1 -0
  99. package/lib/network/index.test.d.ts +2 -0
  100. package/lib/network/index.test.d.ts.map +1 -0
  101. package/lib/network/index.test.js +66 -0
  102. package/lib/network/index.test.js.map +1 -0
  103. package/lib/network/superRepresentativesData.mock.d.ts +69 -0
  104. package/lib/network/superRepresentativesData.mock.d.ts.map +1 -0
  105. package/lib/network/superRepresentativesData.mock.js +2208 -0
  106. package/lib/network/superRepresentativesData.mock.js.map +1 -0
  107. package/lib/network/types.d.ts +122 -0
  108. package/lib/network/types.d.ts.map +1 -0
  109. package/lib/network/types.fixture.d.ts +498 -0
  110. package/lib/network/types.fixture.d.ts.map +1 -0
  111. package/lib/network/types.fixture.js +4375 -0
  112. package/lib/network/types.fixture.js.map +1 -0
  113. package/lib/network/types.js +13 -0
  114. package/lib/network/types.js.map +1 -0
  115. package/lib/signer/getAddress.d.ts +6 -0
  116. package/lib/signer/getAddress.d.ts.map +1 -0
  117. package/lib/signer/getAddress.js +19 -0
  118. package/lib/signer/getAddress.js.map +1 -0
  119. package/lib/signer/index.d.ts +6 -0
  120. package/lib/signer/index.d.ts.map +1 -0
  121. package/lib/signer/index.js +11 -0
  122. package/lib/signer/index.js.map +1 -0
  123. package/lib/test/bot-deviceActions.d.ts +4 -0
  124. package/lib/test/bot-deviceActions.d.ts.map +1 -0
  125. package/lib/test/bot-deviceActions.js +103 -0
  126. package/lib/test/bot-deviceActions.js.map +1 -0
  127. package/lib/test/bot-specs.d.ts +7 -0
  128. package/lib/test/bot-specs.d.ts.map +1 -0
  129. package/lib/test/bot-specs.js +433 -0
  130. package/lib/test/bot-specs.js.map +1 -0
  131. package/lib/test/bridgeDatasetTest.d.ts +4 -0
  132. package/lib/test/bridgeDatasetTest.d.ts.map +1 -0
  133. package/lib/test/bridgeDatasetTest.js +1284 -0
  134. package/lib/test/bridgeDatasetTest.js.map +1 -0
  135. package/lib/test/cli.d.ts +52 -0
  136. package/lib/test/cli.d.ts.map +1 -0
  137. package/lib/test/cli.js +155 -0
  138. package/lib/test/cli.js.map +1 -0
  139. package/lib/test/index.d.ts +6 -0
  140. package/lib/test/index.d.ts.map +1 -0
  141. package/lib/test/index.js +26 -0
  142. package/lib/test/index.js.map +1 -0
  143. package/lib/types/bridge.d.ts +245 -0
  144. package/lib/types/bridge.d.ts.map +1 -0
  145. package/lib/types/bridge.js +16 -0
  146. package/lib/types/bridge.js.map +1 -0
  147. package/lib/types/errors.d.ts +49 -0
  148. package/lib/types/errors.d.ts.map +1 -0
  149. package/lib/types/errors.js +21 -0
  150. package/lib/types/errors.js.map +1 -0
  151. package/lib/types/index.d.ts +4 -0
  152. package/lib/types/index.d.ts.map +1 -0
  153. package/lib/types/index.js +21 -0
  154. package/lib/types/index.js.map +1 -0
  155. package/lib/types/signer.d.ts +10 -0
  156. package/lib/types/signer.d.ts.map +1 -0
  157. package/lib/types/signer.js +3 -0
  158. package/lib/types/signer.js.map +1 -0
  159. package/lib-es/bridge/broadcast.d.ts +7 -0
  160. package/lib-es/bridge/broadcast.d.ts.map +1 -0
  161. package/lib-es/bridge/broadcast.js +24 -0
  162. package/lib-es/bridge/broadcast.js.map +1 -0
  163. package/lib-es/bridge/buildOptimisticOperation.d.ts +5 -0
  164. package/lib-es/bridge/buildOptimisticOperation.d.ts.map +1 -0
  165. package/lib-es/bridge/buildOptimisticOperation.js +94 -0
  166. package/lib-es/bridge/buildOptimisticOperation.js.map +1 -0
  167. package/lib-es/bridge/createTransaction.d.ts +4 -0
  168. package/lib-es/bridge/createTransaction.d.ts.map +1 -0
  169. package/lib-es/bridge/createTransaction.js +14 -0
  170. package/lib-es/bridge/createTransaction.js.map +1 -0
  171. package/lib-es/bridge/deviceTransactionConfig.d.ts +20 -0
  172. package/lib-es/bridge/deviceTransactionConfig.d.ts.map +1 -0
  173. package/lib-es/bridge/deviceTransactionConfig.js +63 -0
  174. package/lib-es/bridge/deviceTransactionConfig.js.map +1 -0
  175. package/lib-es/bridge/estimateMaxSpendable.d.ts +5 -0
  176. package/lib-es/bridge/estimateMaxSpendable.d.ts.map +1 -0
  177. package/lib-es/bridge/estimateMaxSpendable.js +25 -0
  178. package/lib-es/bridge/estimateMaxSpendable.js.map +1 -0
  179. package/lib-es/bridge/getEstimateFees.d.ts +6 -0
  180. package/lib-es/bridge/getEstimateFees.d.ts.map +1 -0
  181. package/lib-es/bridge/getEstimateFees.js +47 -0
  182. package/lib-es/bridge/getEstimateFees.js.map +1 -0
  183. package/lib-es/bridge/getTransactionStatus.d.ts +4 -0
  184. package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -0
  185. package/lib-es/bridge/getTransactionStatus.js +213 -0
  186. package/lib-es/bridge/getTransactionStatus.js.map +1 -0
  187. package/lib-es/bridge/index.d.ts +10 -0
  188. package/lib-es/bridge/index.d.ts.map +1 -0
  189. package/lib-es/bridge/index.js +53 -0
  190. package/lib-es/bridge/index.js.map +1 -0
  191. package/lib-es/bridge/preload.d.ts +8 -0
  192. package/lib-es/bridge/preload.d.ts.map +1 -0
  193. package/lib-es/bridge/preload.js +27 -0
  194. package/lib-es/bridge/preload.js.map +1 -0
  195. package/lib-es/bridge/prepareTransaction.d.ts +4 -0
  196. package/lib-es/bridge/prepareTransaction.d.ts.map +1 -0
  197. package/lib-es/bridge/prepareTransaction.js +15 -0
  198. package/lib-es/bridge/prepareTransaction.js.map +1 -0
  199. package/lib-es/bridge/serialization.d.ts +9 -0
  200. package/lib-es/bridge/serialization.d.ts.map +1 -0
  201. package/lib-es/bridge/serialization.js +229 -0
  202. package/lib-es/bridge/serialization.js.map +1 -0
  203. package/lib-es/bridge/signOperation.d.ts +5 -0
  204. package/lib-es/bridge/signOperation.d.ts.map +1 -0
  205. package/lib-es/bridge/signOperation.js +85 -0
  206. package/lib-es/bridge/signOperation.js.map +1 -0
  207. package/lib-es/bridge/synchronization.d.ts +5 -0
  208. package/lib-es/bridge/synchronization.d.ts.map +1 -0
  209. package/lib-es/bridge/synchronization.integ.test.d.ts +3 -0
  210. package/lib-es/bridge/synchronization.integ.test.d.ts.map +1 -0
  211. package/lib-es/bridge/synchronization.integ.test.js +89 -0
  212. package/lib-es/bridge/synchronization.integ.test.js.map +1 -0
  213. package/lib-es/bridge/synchronization.js +209 -0
  214. package/lib-es/bridge/synchronization.js.map +1 -0
  215. package/lib-es/bridge/transaction.d.ts +15 -0
  216. package/lib-es/bridge/transaction.d.ts.map +1 -0
  217. package/lib-es/bridge/transaction.js +55 -0
  218. package/lib-es/bridge/transaction.js.map +1 -0
  219. package/lib-es/config.d.ts +10 -0
  220. package/lib-es/config.d.ts.map +1 -0
  221. package/lib-es/config.js +12 -0
  222. package/lib-es/config.js.map +1 -0
  223. package/lib-es/index.d.ts +3 -0
  224. package/lib-es/index.d.ts.map +1 -0
  225. package/lib-es/index.js +3 -0
  226. package/lib-es/index.js.map +1 -0
  227. package/lib-es/logic/constants.d.ts +4 -0
  228. package/lib-es/logic/constants.d.ts.map +1 -0
  229. package/lib-es/logic/constants.js +4 -0
  230. package/lib-es/logic/constants.js.map +1 -0
  231. package/lib-es/logic/pagination.d.ts +3 -0
  232. package/lib-es/logic/pagination.d.ts.map +1 -0
  233. package/lib-es/logic/pagination.js +15 -0
  234. package/lib-es/logic/pagination.js.map +1 -0
  235. package/lib-es/logic/utils.d.ts +12 -0
  236. package/lib-es/logic/utils.d.ts.map +1 -0
  237. package/lib-es/logic/utils.js +167 -0
  238. package/lib-es/logic/utils.js.map +1 -0
  239. package/lib-es/network/format.d.ts +9 -0
  240. package/lib-es/network/format.d.ts.map +1 -0
  241. package/lib-es/network/format.js +117 -0
  242. package/lib-es/network/format.js.map +1 -0
  243. package/lib-es/network/index.d.ts +30 -0
  244. package/lib-es/network/index.d.ts.map +1 -0
  245. package/lib-es/network/index.integ.test.d.ts +2 -0
  246. package/lib-es/network/index.integ.test.d.ts.map +1 -0
  247. package/lib-es/network/index.integ.test.js +36 -0
  248. package/lib-es/network/index.integ.test.js.map +1 -0
  249. package/lib-es/network/index.js +524 -0
  250. package/lib-es/network/index.js.map +1 -0
  251. package/lib-es/network/index.test.d.ts +2 -0
  252. package/lib-es/network/index.test.d.ts.map +1 -0
  253. package/lib-es/network/index.test.js +63 -0
  254. package/lib-es/network/index.test.js.map +1 -0
  255. package/lib-es/network/superRepresentativesData.mock.d.ts +69 -0
  256. package/lib-es/network/superRepresentativesData.mock.d.ts.map +1 -0
  257. package/lib-es/network/superRepresentativesData.mock.js +2206 -0
  258. package/lib-es/network/superRepresentativesData.mock.js.map +1 -0
  259. package/lib-es/network/types.d.ts +122 -0
  260. package/lib-es/network/types.d.ts.map +1 -0
  261. package/lib-es/network/types.fixture.d.ts +498 -0
  262. package/lib-es/network/types.fixture.d.ts.map +1 -0
  263. package/lib-es/network/types.fixture.js +4371 -0
  264. package/lib-es/network/types.fixture.js.map +1 -0
  265. package/lib-es/network/types.js +8 -0
  266. package/lib-es/network/types.js.map +1 -0
  267. package/lib-es/signer/getAddress.d.ts +6 -0
  268. package/lib-es/signer/getAddress.d.ts.map +1 -0
  269. package/lib-es/signer/getAddress.js +17 -0
  270. package/lib-es/signer/getAddress.js.map +1 -0
  271. package/lib-es/signer/index.d.ts +6 -0
  272. package/lib-es/signer/index.d.ts.map +1 -0
  273. package/lib-es/signer/index.js +6 -0
  274. package/lib-es/signer/index.js.map +1 -0
  275. package/lib-es/test/bot-deviceActions.d.ts +4 -0
  276. package/lib-es/test/bot-deviceActions.d.ts.map +1 -0
  277. package/lib-es/test/bot-deviceActions.js +100 -0
  278. package/lib-es/test/bot-deviceActions.js.map +1 -0
  279. package/lib-es/test/bot-specs.d.ts +7 -0
  280. package/lib-es/test/bot-specs.d.ts.map +1 -0
  281. package/lib-es/test/bot-specs.js +428 -0
  282. package/lib-es/test/bot-specs.js.map +1 -0
  283. package/lib-es/test/bridgeDatasetTest.d.ts +4 -0
  284. package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -0
  285. package/lib-es/test/bridgeDatasetTest.js +1278 -0
  286. package/lib-es/test/bridgeDatasetTest.js.map +1 -0
  287. package/lib-es/test/cli.d.ts +52 -0
  288. package/lib-es/test/cli.d.ts.map +1 -0
  289. package/lib-es/test/cli.js +149 -0
  290. package/lib-es/test/cli.js.map +1 -0
  291. package/lib-es/test/index.d.ts +6 -0
  292. package/lib-es/test/index.d.ts.map +1 -0
  293. package/lib-es/test/index.js +6 -0
  294. package/lib-es/test/index.js.map +1 -0
  295. package/lib-es/types/bridge.d.ts +245 -0
  296. package/lib-es/types/bridge.d.ts.map +1 -0
  297. package/lib-es/types/bridge.js +11 -0
  298. package/lib-es/types/bridge.js.map +1 -0
  299. package/lib-es/types/errors.d.ts +49 -0
  300. package/lib-es/types/errors.d.ts.map +1 -0
  301. package/lib-es/types/errors.js +18 -0
  302. package/lib-es/types/errors.js.map +1 -0
  303. package/lib-es/types/index.d.ts +4 -0
  304. package/lib-es/types/index.d.ts.map +1 -0
  305. package/lib-es/types/index.js +5 -0
  306. package/lib-es/types/index.js.map +1 -0
  307. package/lib-es/types/signer.d.ts +10 -0
  308. package/lib-es/types/signer.d.ts.map +1 -0
  309. package/lib-es/types/signer.js +2 -0
  310. package/lib-es/types/signer.js.map +1 -0
  311. package/package.json +133 -0
  312. package/src/bridge/broadcast.ts +24 -0
  313. package/src/bridge/buildOptimisticOperation.ts +133 -0
  314. package/src/bridge/createTransaction.ts +16 -0
  315. package/src/bridge/deviceTransactionConfig.ts +99 -0
  316. package/src/bridge/estimateMaxSpendable.ts +32 -0
  317. package/src/bridge/getEstimateFees.ts +52 -0
  318. package/src/bridge/getTransactionStatus.ts +263 -0
  319. package/src/bridge/index.ts +78 -0
  320. package/src/bridge/preload.ts +24 -0
  321. package/src/bridge/prepareTransaction.ts +12 -0
  322. package/src/bridge/serialization.ts +288 -0
  323. package/src/bridge/signOperation.ts +123 -0
  324. package/src/bridge/synchronization.integ.test.ts +105 -0
  325. package/src/bridge/synchronization.ts +284 -0
  326. package/src/bridge/transaction.ts +84 -0
  327. package/src/config.ts +24 -0
  328. package/src/index.ts +3 -0
  329. package/src/logic/constants.ts +4 -0
  330. package/src/logic/pagination.ts +21 -0
  331. package/src/logic/utils.ts +231 -0
  332. package/src/network/format.ts +148 -0
  333. package/src/network/index.integ.test.ts +33 -0
  334. package/src/network/index.test.ts +61 -0
  335. package/src/network/index.ts +747 -0
  336. package/src/network/superRepresentativesData.mock.ts +2205 -0
  337. package/src/network/types.fixture.ts +4476 -0
  338. package/src/network/types.ts +147 -0
  339. package/src/signer/getAddress.ts +13 -0
  340. package/src/signer/index.ts +7 -0
  341. package/src/test/bot-deviceActions.ts +121 -0
  342. package/src/test/bot-specs.ts +457 -0
  343. package/src/test/bridgeDatasetTest.ts +1343 -0
  344. package/src/test/cli.ts +219 -0
  345. package/src/test/index.ts +6 -0
  346. package/src/types/bridge.ts +304 -0
  347. package/src/types/errors.ts +22 -0
  348. package/src/types/index.ts +4 -0
  349. package/src/types/signer.ts +9 -0
  350. package/tsconfig.json +14 -0
  351. package/types/tronweb/index.d.ts +5 -0
@@ -0,0 +1,5 @@
1
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
2
+ import { SignOperationFnSignature } from "@ledgerhq/types-live";
3
+ import { Transaction, TronAccount, TronSigner } from "../types";
4
+ export declare const buildSignOperation: (signerContext: SignerContext<TronSigner>) => SignOperationFnSignature<Transaction, TronAccount>;
5
+ //# sourceMappingURL=signOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signOperation.d.ts","sourceRoot":"","sources":["../../src/bridge/signOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAsB,wBAAwB,EAAgB,MAAM,sBAAsB,CAAC;AAclG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAIhE,eAAO,MAAM,kBAAkB,kBACb,cAAc,UAAU,CAAC,KAAG,yBAAyB,WAAW,EAAE,WAAW,CAsEzF,CAAC"}
@@ -0,0 +1,85 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import BigNumber from "bignumber.js";
11
+ import { Observable } from "rxjs";
12
+ import { claimRewardTronTransaction, createTronTransaction, fetchTronContract, freezeTronTransaction, legacyUnfreezeTronTransaction, unDelegateResourceTransaction, unfreezeTronTransaction, voteTronSuperRepresentatives, withdrawExpireUnfreezeTronTransaction, } from "../network";
13
+ import { buildOptimisticOperation } from "./buildOptimisticOperation";
14
+ import getEstimatedFees from "./getEstimateFees";
15
+ export const buildSignOperation = (signerContext) => ({ account, transaction, deviceId }) => new Observable(o => {
16
+ function main() {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ const subAccount = transaction.subAccountId && account.subAccounts
19
+ ? account.subAccounts.find(sa => sa.id === transaction.subAccountId)
20
+ : undefined;
21
+ const isContractAddressRecipient = (yield fetchTronContract(transaction.recipient)) !== undefined;
22
+ const fee = yield getEstimatedFees(account, transaction, isContractAddressRecipient);
23
+ const balance = subAccount
24
+ ? subAccount.balance
25
+ : BigNumber.max(0, account.spendableBalance.minus(fee));
26
+ if (transaction.useAllAmount) {
27
+ transaction = Object.assign({}, transaction); // transaction object must not be mutated
28
+ transaction.amount = balance; // force the amount to be the max
29
+ }
30
+ const { raw_data_hex: rawDataHex, raw_data: rawData, txID: hash, } = yield prepareTransactionForSignature(account, subAccount, transaction);
31
+ o.next({
32
+ type: "device-signature-requested",
33
+ });
34
+ const txArg = {
35
+ rawDataHex,
36
+ // only for trc10, we need to put the token ledger signature
37
+ tokenSignature: subAccount &&
38
+ subAccount.type === "TokenAccount" &&
39
+ subAccount.token.id.includes("trc10")
40
+ ? subAccount.token.ledgerSignature
41
+ : undefined,
42
+ };
43
+ // Sign by device
44
+ const signature = yield signerContext(deviceId, signer => {
45
+ var _a;
46
+ return signer.sign(account.freshAddressPath, (_a = txArg.rawDataHex) !== null && _a !== void 0 ? _a : "", //FIXME: why rawDataHex could be undefined? This shouldn't be the case.
47
+ txArg.tokenSignature ? [txArg.tokenSignature] : []);
48
+ });
49
+ o.next({
50
+ type: "device-signature-granted",
51
+ });
52
+ const operation = buildOptimisticOperation(account, subAccount, transaction, fee, hash);
53
+ o.next({
54
+ type: "signed",
55
+ signedOperation: {
56
+ operation,
57
+ signature,
58
+ rawData,
59
+ },
60
+ });
61
+ });
62
+ }
63
+ main().then(() => o.complete(), e => o.error(e));
64
+ });
65
+ const prepareTransactionForSignature = (account, subAccount, transaction) => {
66
+ switch (transaction.mode) {
67
+ case "freeze":
68
+ return freezeTronTransaction(account, transaction);
69
+ case "unfreeze":
70
+ return unfreezeTronTransaction(account, transaction);
71
+ case "vote":
72
+ return voteTronSuperRepresentatives(account, transaction);
73
+ case "claimReward":
74
+ return claimRewardTronTransaction(account);
75
+ case "withdrawExpireUnfreeze":
76
+ return withdrawExpireUnfreezeTronTransaction(account, transaction);
77
+ case "unDelegateResource":
78
+ return unDelegateResourceTransaction(account, transaction);
79
+ case "legacyUnfreeze":
80
+ return legacyUnfreezeTronTransaction(account, transaction);
81
+ default:
82
+ return createTronTransaction(account, transaction, subAccount);
83
+ }
84
+ };
85
+ //# sourceMappingURL=signOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../../src/bridge/signOperation.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,6BAA6B,EAC7B,6BAA6B,EAC7B,uBAAuB,EACvB,4BAA4B,EAC5B,qCAAqC,GACtC,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,gBAAgB,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,MAAM,kBAAkB,GAC7B,CAAC,aAAwC,EAAsD,EAAE,CACjG,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAkC,EAAE,CACrE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;IACjB,SAAe,IAAI;;YACjB,MAAM,UAAU,GACd,WAAW,CAAC,YAAY,IAAI,OAAO,CAAC,WAAW;gBAC7C,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,YAAY,CAAC;gBACpE,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,0BAA0B,GAC9B,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,SAAS,CAAC;YACjE,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,0BAA0B,CAAC,CAAC;YACrF,MAAM,OAAO,GAAG,UAAU;gBACxB,CAAC,CAAC,UAAU,CAAC,OAAO;gBACpB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAE1D,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;gBAC7B,WAAW,qBAAQ,WAAW,CAAE,CAAC,CAAC,yCAAyC;gBAC3E,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,iCAAiC;YACjE,CAAC;YAED,MAAM,EACJ,YAAY,EAAE,UAAU,EACxB,QAAQ,EAAE,OAAO,EACjB,IAAI,EAAE,IAAI,GACX,GAAG,MAAM,8BAA8B,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;YAE3E,CAAC,CAAC,IAAI,CAAC;gBACL,IAAI,EAAE,4BAA4B;aACnC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG;gBACZ,UAAU;gBACV,4DAA4D;gBAC5D,cAAc,EACZ,UAAU;oBACV,UAAU,CAAC,IAAI,KAAK,cAAc;oBAClC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACnC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe;oBAClC,CAAC,CAAC,SAAS;aAChB,CAAC;YAEF,iBAAiB;YACjB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;;gBACvD,OAAA,MAAM,CAAC,IAAI,CACT,OAAO,CAAC,gBAAgB,EACxB,MAAA,KAAK,CAAC,UAAU,mCAAI,EAAE,EAAE,uEAAuE;gBAC/F,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CACnD,CAAA;aAAA,CACF,CAAC;YAEF,CAAC,CAAC,IAAI,CAAC;gBACL,IAAI,EAAE,0BAA0B;aACjC,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAExF,CAAC,CAAC,IAAI,CAAC;gBACL,IAAI,EAAE,QAAQ;gBACd,eAAe,EAAE;oBACf,SAAS;oBACT,SAAS;oBACT,OAAO;iBACR;aACF,CAAC,CAAC;QACL,CAAC;KAAA;IAED,IAAI,EAAE,CAAC,IAAI,CACT,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAClB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAChB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEP,MAAM,8BAA8B,GAAG,CACrC,OAAoB,EACpB,UAAoC,EACpC,WAAwB,EACxB,EAAE;IACF,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAErD,KAAK,UAAU;YACb,OAAO,uBAAuB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAEvD,KAAK,MAAM;YACT,OAAO,4BAA4B,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAE5D,KAAK,aAAa;YAChB,OAAO,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAE7C,KAAK,wBAAwB;YAC3B,OAAO,qCAAqC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAErE,KAAK,oBAAoB;YACvB,OAAO,6BAA6B,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAE7D,KAAK,gBAAgB;YACnB,OAAO,6BAA6B,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAE7D;YACE,OAAO,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { GetAccountShape } from "@ledgerhq/coin-framework/bridge/jsHelpers";
2
+ import { TronAccount } from "../types";
3
+ export declare const getAccountShape: GetAccountShape<TronAccount>;
4
+ export declare const sync: (initialAccount: TronAccount, syncConfig: import("@ledgerhq/types-live").SyncConfig) => import("rxjs").Observable<(arg0: TronAccount) => TronAccount>;
5
+ //# sourceMappingURL=synchronization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synchronization.d.ts","sourceRoot":"","sources":["../../src/bridge/synchronization.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAY,MAAM,2CAA2C,CAAC;AAetF,OAAO,EAAE,WAAW,EAAsC,MAAM,UAAU,CAAC;AAY3E,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,WAAW,CAmMxD,CAAC;AAqDF,eAAO,MAAM,IAAI,uJAGf,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Account, AccountBridge, SyncConfig, TransactionCommon } from "@ledgerhq/types-live";
2
+ export declare function syncAccount<T extends TransactionCommon, A extends Account = Account>(bridge: AccountBridge<T, A>, account: A, syncConfig?: SyncConfig): Promise<A>;
3
+ //# sourceMappingURL=synchronization.integ.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synchronization.integ.test.d.ts","sourceRoot":"","sources":["../../src/bridge/synchronization.integ.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAa7F,wBAAgB,WAAW,CAAC,CAAC,SAAS,iBAAiB,EAAE,CAAC,SAAS,OAAO,GAAG,OAAO,EAClF,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,OAAO,EAAE,CAAC,EACV,UAAU,GAAE,UAA8B,GACzC,OAAO,CAAC,CAAC,CAAC,CAIZ"}
@@ -0,0 +1,89 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import BigNumber from "bignumber.js";
11
+ import { firstValueFrom, reduce } from "rxjs";
12
+ import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/index";
13
+ import { defaultTronResources } from "../logic/utils";
14
+ import { createBridges } from "./index";
15
+ jest.setTimeout(30000);
16
+ const tron = getCryptoCurrencyById("tron");
17
+ const defaultSyncConfig = {
18
+ paginationConfig: {},
19
+ blacklistedTokenIds: [],
20
+ };
21
+ export function syncAccount(bridge, account, syncConfig = defaultSyncConfig) {
22
+ return firstValueFrom(bridge.sync(account, syncConfig).pipe(reduce((a, f) => f(a), account)));
23
+ }
24
+ const dummyAccount = {
25
+ type: "Account",
26
+ id: "",
27
+ derivationMode: "",
28
+ seedIdentifier: "",
29
+ used: false,
30
+ currency: tron,
31
+ index: 0,
32
+ freshAddress: "",
33
+ freshAddressPath: "",
34
+ swapHistory: [],
35
+ blockHeight: 0,
36
+ balance: new BigNumber(0),
37
+ spendableBalance: new BigNumber(0),
38
+ operationsCount: 0,
39
+ operations: [],
40
+ pendingOperations: [],
41
+ lastSyncDate: new Date(0),
42
+ creationDate: new Date(),
43
+ balanceHistoryCache: {
44
+ HOUR: {
45
+ balances: [],
46
+ latestDate: undefined,
47
+ },
48
+ DAY: {
49
+ balances: [],
50
+ latestDate: undefined,
51
+ },
52
+ WEEK: {
53
+ balances: [],
54
+ latestDate: undefined,
55
+ },
56
+ },
57
+ tronResources: {},
58
+ };
59
+ describe("Tron Accounts", () => {
60
+ let bridge;
61
+ beforeAll(() => {
62
+ const signer = jest.fn();
63
+ const coinConfig = () => ({
64
+ status: {
65
+ type: "active",
66
+ },
67
+ explorer: {
68
+ url: "https://tron.coin.ledger.com",
69
+ },
70
+ });
71
+ bridge = createBridges(signer, coinConfig);
72
+ });
73
+ test("should always have tronResources", () => __awaiter(void 0, void 0, void 0, function* () {
74
+ const account = yield syncAccount(bridge.accountBridge, dummyAccount, defaultSyncConfig);
75
+ expect(account.tronResources).toEqual(defaultTronResources);
76
+ }));
77
+ test.each([
78
+ "TL24LCps5FKwp3PoU1MvrYrwhi5LU1tHre",
79
+ "TAVrrARNdnjHgCGMQYeQV7hv4PSu7mVsMj",
80
+ "THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi",
81
+ "TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9",
82
+ "TUxd6v64YTWkfpFpNDdtgc5Ps4SfGxwizT",
83
+ "TY2ksFgpvb82TgGPwUSa7iseqPW5weYQyh",
84
+ ])("should always be sync wihtout error for address %s", (accountId) => __awaiter(void 0, void 0, void 0, function* () {
85
+ const account = yield syncAccount(bridge.accountBridge, Object.assign(Object.assign({}, dummyAccount), { id: `js:2:tron:${accountId}:`, freshAddress: accountId }), defaultSyncConfig);
86
+ expect(account.id).toEqual(`js:2:tron:${accountId}:`);
87
+ }));
88
+ });
89
+ //# sourceMappingURL=synchronization.integ.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synchronization.integ.test.js","sourceRoot":"","sources":["../../src/bridge/synchronization.integ.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { emptyHistoryCache, encodeAccountId, encodeTokenAccountId, } from "@ledgerhq/coin-framework/account";
11
+ import { makeSync } from "@ledgerhq/coin-framework/bridge/jsHelpers";
12
+ import { encodeOperationId } from "@ledgerhq/coin-framework/operation";
13
+ import { findTokenByAddressInCurrency, findTokenById } from "@ledgerhq/cryptoassets/index";
14
+ import BigNumber from "bignumber.js";
15
+ import compact from "lodash/compact";
16
+ import get from "lodash/get";
17
+ import { getOperationsPageSize } from "../logic/pagination";
18
+ import { isParentTx, txInfoToOperation } from "../logic/utils";
19
+ import { fetchCurrentBlockHeight, fetchTronAccount, fetchTronAccountTxs, getTronResources, } from "../network";
20
+ // the balance does not update straightaway so we should ignore recent operations if they are in pending for a bit
21
+ const PREFER_PENDING_OPERATIONS_UNTIL_BLOCK_VALIDATION = 35;
22
+ export const getAccountShape = (_a, syncConfig_1) => __awaiter(void 0, [_a, syncConfig_1], void 0, function* ({ initialAccount, currency, address, derivationMode }, syncConfig) {
23
+ var _b;
24
+ const blockHeight = yield fetchCurrentBlockHeight();
25
+ const tronAcc = yield fetchTronAccount(address);
26
+ const accountId = encodeAccountId({
27
+ type: "js",
28
+ version: "2",
29
+ currencyId: currency.id,
30
+ xpubOrAddress: address,
31
+ derivationMode: derivationMode,
32
+ });
33
+ if (tronAcc.length === 0) {
34
+ const defaultTronResources = yield getTronResources();
35
+ return {
36
+ id: accountId,
37
+ blockHeight,
38
+ balance: new BigNumber(0),
39
+ tronResources: defaultTronResources,
40
+ };
41
+ }
42
+ const acc = tronAcc[0];
43
+ const spendableBalance = acc.balance ? new BigNumber(acc.balance) : new BigNumber(0);
44
+ const cacheTransactionInfoById = initialAccount
45
+ ? Object.assign({}, (((_b = initialAccount === null || initialAccount === void 0 ? void 0 : initialAccount.tronResources) === null || _b === void 0 ? void 0 : _b.cacheTransactionInfoById) || {})) : {};
46
+ const operationsPageSize = Math.min(1000, getOperationsPageSize(initialAccount && initialAccount.id, syncConfig));
47
+ // FIXME: this is not optional especially that we might already have initialAccount
48
+ // use minimalOperationsBuilderSync to reconciliate and KEEP REF
49
+ const txs = yield fetchTronAccountTxs(address, txs => txs.length < operationsPageSize, cacheTransactionInfoById);
50
+ const tronResources = yield getTronResources(acc, txs, cacheTransactionInfoById);
51
+ const balance = spendableBalance
52
+ .plus(tronResources.frozen.bandwidth ? tronResources.frozen.bandwidth.amount : new BigNumber(0))
53
+ .plus(tronResources.frozen.energy ? tronResources.frozen.energy.amount : new BigNumber(0))
54
+ .plus(tronResources.delegatedFrozen.bandwidth
55
+ ? tronResources.delegatedFrozen.bandwidth.amount
56
+ : new BigNumber(0))
57
+ .plus(tronResources.delegatedFrozen.energy
58
+ ? tronResources.delegatedFrozen.energy.amount
59
+ : new BigNumber(0))
60
+ .plus(tronResources.unFrozen.energy
61
+ ? tronResources.unFrozen.energy.reduce((accum, cur) => {
62
+ return accum.plus(cur.amount);
63
+ }, new BigNumber(0))
64
+ : new BigNumber(0))
65
+ .plus(tronResources.unFrozen.bandwidth
66
+ ? tronResources.unFrozen.bandwidth.reduce((accum, cur) => {
67
+ return accum.plus(cur.amount);
68
+ }, new BigNumber(0))
69
+ : new BigNumber(0))
70
+ .plus(tronResources.legacyFrozen.bandwidth
71
+ ? tronResources.legacyFrozen.bandwidth.amount
72
+ : new BigNumber(0))
73
+ .plus(tronResources.legacyFrozen.energy
74
+ ? tronResources.legacyFrozen.energy.amount
75
+ : new BigNumber(0));
76
+ const parentTxs = txs.filter(isParentTx);
77
+ const parentOperations = compact(parentTxs.map(tx => txInfoToOperation(accountId, address, tx)));
78
+ const trc10Tokens = get(acc, "assetV2", []).reduce((accumulator, { key, value }) => {
79
+ const tokenInfo = findTokenById(`tron/trc10/${key}`);
80
+ if (tokenInfo) {
81
+ accumulator.push({
82
+ key,
83
+ type: "trc10",
84
+ tokenId: tokenInfo.id,
85
+ balance: value,
86
+ });
87
+ }
88
+ return accumulator;
89
+ }, []);
90
+ const trc20Tokens = get(acc, "trc20", []).reduce((accumulator, trc20) => {
91
+ const [[contractAddress, balance]] = Object.entries(trc20);
92
+ const tokenInfo = findTokenByAddressInCurrency(contractAddress, currency.id);
93
+ if (tokenInfo) {
94
+ accumulator.push({
95
+ key: contractAddress,
96
+ type: "trc20",
97
+ tokenId: tokenInfo.id,
98
+ balance,
99
+ });
100
+ }
101
+ return accumulator;
102
+ }, []);
103
+ const { blacklistedTokenIds = [] } = syncConfig;
104
+ const subAccounts = compact(trc10Tokens.concat(trc20Tokens).map(({ key, tokenId, balance }) => {
105
+ var _a;
106
+ const { blacklistedTokenIds = [] } = syncConfig;
107
+ const token = findTokenById(tokenId);
108
+ if (!token || blacklistedTokenIds.includes(tokenId))
109
+ return;
110
+ const id = encodeTokenAccountId(accountId, token);
111
+ const tokenTxs = txs.filter(tx => tx.tokenId === key);
112
+ const operations = compact(tokenTxs.map(tx => txInfoToOperation(id, address, tx)));
113
+ const maybeExistingSubAccount = (_a = initialAccount === null || initialAccount === void 0 ? void 0 : initialAccount.subAccounts) === null || _a === void 0 ? void 0 : _a.find(a => a.id === id);
114
+ const bnBalance = new BigNumber(balance);
115
+ const sub = {
116
+ type: "TokenAccount",
117
+ id,
118
+ parentId: accountId,
119
+ token,
120
+ balance: bnBalance,
121
+ spendableBalance: bnBalance,
122
+ operationsCount: operations.length,
123
+ operations,
124
+ pendingOperations: maybeExistingSubAccount ? maybeExistingSubAccount.pendingOperations : [],
125
+ creationDate: operations.length > 0 ? operations[operations.length - 1].date : new Date(),
126
+ swapHistory: maybeExistingSubAccount ? maybeExistingSubAccount.swapHistory : [],
127
+ balanceHistoryCache: emptyHistoryCache, // calculated in the jsHelpers
128
+ };
129
+ return sub;
130
+ }));
131
+ // Filter blacklisted tokens from the initial account's subAccounts
132
+ // Could be use to filter out tokens that got their CAL id changed
133
+ const filteredInitialSubAccounts = ((initialAccount === null || initialAccount === void 0 ? void 0 : initialAccount.subAccounts) || []).filter(subAccount => !blacklistedTokenIds.includes(subAccount.token.id));
134
+ // keep old account with emptyBalance and a history not returned by the BE fixes LIVE-12797
135
+ const mergedSubAccounts = mergeSubAccounts(subAccounts, filteredInitialSubAccounts);
136
+ // get 'OUT' token operations with fee
137
+ const subOutOperationsWithFee = subAccounts
138
+ .flatMap(s => s.operations)
139
+ .filter(o => o.type === "OUT" && o.fee.isGreaterThan(0))
140
+ .map((o) => (Object.assign(Object.assign({}, o), { accountId, value: o.fee, id: encodeOperationId(accountId, o.hash, "OUT"), extra: o.extra })));
141
+ // add them to the parent operations and sort by date desc
142
+ /**
143
+ * FIXME
144
+ *
145
+ * We have a problem here as we're just concatenating ops without ever really linking them.
146
+ * It means no operation can be "FEES" of a subOp by example. It leads to our issues with TRC10/TRC20
147
+ * optimistic operation never really existing in the end.
148
+ */
149
+ const parentOpsAndSubOutOpsWithFee = parentOperations
150
+ .concat(subOutOperationsWithFee)
151
+ .sort((a, b) => b.date.valueOf() - a.date.valueOf());
152
+ return {
153
+ id: accountId,
154
+ balance,
155
+ spendableBalance,
156
+ operationsCount: parentOpsAndSubOutOpsWithFee.length,
157
+ operations: parentOpsAndSubOutOpsWithFee,
158
+ subAccounts: mergedSubAccounts,
159
+ tronResources,
160
+ blockHeight,
161
+ };
162
+ });
163
+ const postSync = (initial, parent) => {
164
+ function evictRecentOpsIfPending(a) {
165
+ a.pendingOperations.forEach(pending => {
166
+ const i = a.operations.findIndex(o => o.id === pending.id);
167
+ if (i !== -1) {
168
+ const diff = parent.blockHeight - (a.operations[i].blockHeight || 0);
169
+ if (diff < PREFER_PENDING_OPERATIONS_UNTIL_BLOCK_VALIDATION) {
170
+ a.operations.splice(i, 1);
171
+ }
172
+ }
173
+ });
174
+ }
175
+ evictRecentOpsIfPending(parent);
176
+ parent.subAccounts && parent.subAccounts.forEach(evictRecentOpsIfPending);
177
+ return parent;
178
+ };
179
+ /**
180
+ * Merges two arrays of subAccounts according to specific rules:
181
+ * - The first array (subAccounts1) is up-to-date and should not be modified.
182
+ * - Old duplicates from the second array (subAccounts2) should be filtered out.
183
+ * - Only new subAccounts with a unique ID from the second array should be included.
184
+ * - The balance and spendableBalance fields of the second array's subAccounts should be set to 0.
185
+ *
186
+ * @param {Array} subAccounts1 - The first array of subAccounts, which is up-to-date and should not be modified.
187
+ * @param {Array} subAccounts2 - The second array of subAccounts, from which only new unique subAccounts should be included.
188
+ * @returns {Array} - The merged array of subAccounts.
189
+ */
190
+ const mergeSubAccounts = (subAccounts1, subAccounts2) => {
191
+ const existingIds = new Set(subAccounts1.map(subAccount => subAccount.id));
192
+ const filteredSubAccounts2 = subAccounts2
193
+ .map(subAccount => {
194
+ if (existingIds.has(subAccount.id)) {
195
+ return null;
196
+ }
197
+ else {
198
+ // Set balance and spendableBalance to 0 has if they are not here it means balance is 0
199
+ return Object.assign(Object.assign({}, subAccount), { balance: new BigNumber(0), spendableBalance: new BigNumber(0) });
200
+ }
201
+ })
202
+ .filter((elt) => elt !== null);
203
+ return subAccounts1.concat(filteredSubAccounts2);
204
+ };
205
+ export const sync = makeSync({
206
+ getAccountShape,
207
+ postSync,
208
+ });
209
+ //# sourceMappingURL=synchronization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synchronization.js","sourceRoot":"","sources":["../../src/bridge/synchronization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Transaction, TransactionRaw } from "../types";
2
+ import type { Account } from "@ledgerhq/types-live";
3
+ export declare const fromTransactionRaw: (tr: TransactionRaw) => Transaction;
4
+ export declare const toTransactionRaw: (t: Transaction) => TransactionRaw;
5
+ export declare const formatTransaction: (t: Transaction, mainAccount: Account) => string;
6
+ declare const _default: {
7
+ formatTransaction: (t: Transaction, mainAccount: Account) => string;
8
+ fromTransactionRaw: (tr: TransactionRaw) => Transaction;
9
+ toTransactionRaw: (t: Transaction) => TransactionRaw;
10
+ fromTransactionStatusRaw: (ts: import("@ledgerhq/types-live").TransactionStatusCommonRaw) => import("@ledgerhq/types-live").TransactionStatusCommon;
11
+ toTransactionStatusRaw: (ts: import("@ledgerhq/types-live").TransactionStatusCommon) => import("@ledgerhq/types-live").TransactionStatusCommonRaw;
12
+ formatTransactionStatus: (t: import("@ledgerhq/types-live").TransactionCommon, { errors, warnings, estimatedFees, amount, totalSpent }: import("@ledgerhq/types-live").TransactionStatusCommon, mainAccount: Account) => string;
13
+ };
14
+ export default _default;
15
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/bridge/transaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAQ5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAIpD,eAAO,MAAM,kBAAkB,OAAQ,cAAc,KAAG,WAoBvD,CAAC;AAEF,eAAO,MAAM,gBAAgB,MAAO,WAAW,KAAG,cAoBjD,CAAC;AAEF,eAAO,MAAM,iBAAiB,MAAO,WAAW,eAAe,OAAO,KAAG,MAiBxE,CAAC;;;;;;;;;AAEF,wBAOE"}
@@ -0,0 +1,55 @@
1
+ import { BigNumber } from "bignumber.js";
2
+ import { formatTransactionStatus } from "@ledgerhq/coin-framework/formatters";
3
+ import { fromTransactionCommonRaw, fromTransactionStatusRawCommon as fromTransactionStatusRaw, toTransactionCommonRaw, toTransactionStatusRawCommon as toTransactionStatusRaw, } from "@ledgerhq/coin-framework/serialization";
4
+ import { getAccountCurrency } from "@ledgerhq/coin-framework/account";
5
+ import { formatCurrencyUnit } from "@ledgerhq/coin-framework/currencies";
6
+ export const fromTransactionRaw = (tr) => {
7
+ const common = fromTransactionCommonRaw(tr);
8
+ const { networkInfo } = tr;
9
+ return Object.assign(Object.assign({}, common), { networkInfo: networkInfo && {
10
+ family: "tron",
11
+ freeNetUsed: new BigNumber(networkInfo.freeNetUsed),
12
+ freeNetLimit: new BigNumber(networkInfo.freeNetLimit),
13
+ netUsed: new BigNumber(networkInfo.netUsed),
14
+ netLimit: new BigNumber(networkInfo.netLimit),
15
+ energyUsed: new BigNumber(networkInfo.energyUsed),
16
+ energyLimit: new BigNumber(networkInfo.energyLimit),
17
+ }, family: tr.family, mode: tr.mode, resource: tr.resource || null, duration: tr.duration || 3, votes: tr.votes });
18
+ };
19
+ export const toTransactionRaw = (t) => {
20
+ const common = toTransactionCommonRaw(t);
21
+ const { networkInfo } = t;
22
+ return Object.assign(Object.assign({}, common), { networkInfo: networkInfo && {
23
+ family: "tron",
24
+ freeNetUsed: networkInfo.freeNetUsed.toString(),
25
+ freeNetLimit: networkInfo.freeNetLimit.toString(),
26
+ netUsed: networkInfo.netUsed.toString(),
27
+ netLimit: networkInfo.netLimit.toString(),
28
+ energyUsed: networkInfo.energyUsed.toString(),
29
+ energyLimit: networkInfo.energyLimit.toString(),
30
+ }, family: t.family, mode: t.mode, resource: t.resource || null, duration: t.duration || 3, votes: t.votes });
31
+ };
32
+ export const formatTransaction = (t, mainAccount) => {
33
+ const account = (t.subAccountId && (mainAccount.subAccounts || []).find(a => a.id === t.subAccountId)) ||
34
+ mainAccount;
35
+ return `
36
+ ${t.mode.toUpperCase()}${t.resource ? " " + t.resource : ""} ${t.useAllAmount
37
+ ? "MAX"
38
+ : t.amount.isZero()
39
+ ? ""
40
+ : " " +
41
+ formatCurrencyUnit(getAccountCurrency(account).units[0], t.amount, {
42
+ showCode: true,
43
+ disableRounding: true,
44
+ })}${!t.votes ? "" : " " + t.votes.map(v => v.voteCount + "->" + v.address).join(" ")}
45
+ TO ${t.recipient}`;
46
+ };
47
+ export default {
48
+ formatTransaction,
49
+ fromTransactionRaw,
50
+ toTransactionRaw,
51
+ fromTransactionStatusRaw,
52
+ toTransactionStatusRaw,
53
+ formatTransactionStatus,
54
+ };
55
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/bridge/transaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { CurrencyConfig, CoinConfig } from "@ledgerhq/coin-framework/config";
2
+ export type TronConfig = {
3
+ explorer: {
4
+ url: string;
5
+ };
6
+ };
7
+ export type TronCoinConfig = CurrencyConfig & TronConfig;
8
+ export declare const setCoinConfig: (config: CoinConfig<TronCoinConfig>) => void;
9
+ export declare const getCoinConfig: () => TronCoinConfig;
10
+ //# 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,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7E,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE;QACR,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,UAAU,CAAC;AAIzD,eAAO,MAAM,aAAa,WAAY,WAAW,cAAc,CAAC,KAAG,IAElE,CAAC;AAEF,eAAO,MAAM,aAAa,QAAO,cAMhC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { MissingCoinConfig } from "@ledgerhq/coin-framework/errors";
2
+ let coinConfig;
3
+ export const setCoinConfig = (config) => {
4
+ coinConfig = config;
5
+ };
6
+ export const getCoinConfig = () => {
7
+ if (!coinConfig) {
8
+ throw new MissingCoinConfig();
9
+ }
10
+ return coinConfig();
11
+ };
12
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAUpE,IAAI,UAAkD,CAAC;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAkC,EAAQ,EAAE;IACxE,UAAU,GAAG,MAAM,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAmB,EAAE;IAChD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,iBAAiB,EAAE,CAAC;IAChC,CAAC;IAED,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export { createBridges } from "./bridge/index";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export { createBridges } from "./bridge/index";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { BigNumber } from "bignumber.js";
2
+ export declare const ONE_TRX: BigNumber;
3
+ export declare const ACTIVATION_FEES: BigNumber;
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/logic/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,OAAO,WAAyB,CAAC;AAC9C,eAAO,MAAM,eAAe,WAAyB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { BigNumber } from "bignumber.js";
2
+ export const ONE_TRX = new BigNumber(1000000);
3
+ export const ACTIVATION_FEES = new BigNumber(1100000); // ONE TRX fee + 0.1 TRX activation cost
4
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/logic/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,wCAAwC"}
@@ -0,0 +1,3 @@
1
+ import type { SyncConfig } from "@ledgerhq/types-live";
2
+ export declare function getOperationsPageSize(accountId: string | null | undefined, syncConfig: SyncConfig): number;
3
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/logic/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,UAAU,EAAE,UAAU,GACrB,MAAM,CAeR"}
@@ -0,0 +1,15 @@
1
+ export function getOperationsPageSize(accountId, syncConfig) {
2
+ const { paginationConfig } = syncConfig;
3
+ const { operationsPerAccountId, operations } = paginationConfig;
4
+ const numbers = [];
5
+ if (operationsPerAccountId && accountId && accountId in operationsPerAccountId) {
6
+ numbers.push(operationsPerAccountId[accountId]);
7
+ }
8
+ if (typeof operations === "number") {
9
+ numbers.push(operations);
10
+ }
11
+ if (numbers.length === 0)
12
+ return Infinity;
13
+ return Math.max(...numbers);
14
+ }
15
+ //# sourceMappingURL=pagination.js.map