@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,213 @@
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 { getAccountCurrency } from "@ledgerhq/coin-framework/account";
11
+ import { AmountRequired, InvalidAddress, InvalidAddressBecauseDestinationIsAlsoSource, NotEnoughBalance, RecipientRequired, } from "@ledgerhq/errors";
12
+ import { formatCurrencyUnit } from "@ledgerhq/coin-framework/currencies";
13
+ import BigNumber from "bignumber.js";
14
+ import sumBy from "lodash/sumBy";
15
+ import { ONE_TRX } from "../logic/constants";
16
+ import { fetchTronAccount, fetchTronContract, getContractUserEnergyRatioConsumption, getDelegatedResource, getTronSuperRepresentatives, validateAddress, } from "../network";
17
+ import { TronInvalidFreezeAmount, TronInvalidUnDelegateResourceAmount, TronInvalidVoteCount, TronLegacyUnfreezeNotExpired, TronNoFrozenForBandwidth, TronNoFrozenForEnergy, TronNoReward, TronNotEnoughEnergy, TronNotEnoughTronPower, TronNoUnfrozenResource, TronRewardNotAvailable, TronSendTrc20ToNewAccountForbidden, TronUnexpectedFees, TronUnfreezeNotExpired, TronVoteRequired, } from "../types/errors";
18
+ import getEstimatedFees from "./getEstimateFees";
19
+ const getTransactionStatus = (acc, transaction) => __awaiter(void 0, void 0, void 0, function* () {
20
+ var _a, _b, _c, _d;
21
+ const errors = {};
22
+ const warnings = {};
23
+ const { family, mode, recipient, resource, votes, useAllAmount = false } = transaction;
24
+ const tokenAccount = !transaction.subAccountId
25
+ ? null
26
+ : acc.subAccounts && acc.subAccounts.find(ta => ta.id === transaction.subAccountId);
27
+ const account = tokenAccount || acc;
28
+ const isContractAddressRecipient = (yield fetchTronContract(recipient)) !== undefined;
29
+ if (mode === "send" && !recipient) {
30
+ errors.recipient = new RecipientRequired();
31
+ }
32
+ if (["send", "unDelegateResource", "legacyUnfreeze"].includes(mode)) {
33
+ if (recipient === acc.freshAddress) {
34
+ errors.recipient = new InvalidAddressBecauseDestinationIsAlsoSource();
35
+ }
36
+ else if (recipient && !(yield validateAddress(recipient))) {
37
+ errors.recipient = new InvalidAddress(undefined, {
38
+ currencyName: acc.currency.name,
39
+ });
40
+ }
41
+ else if (recipient &&
42
+ mode === "send" &&
43
+ account.type === "TokenAccount" &&
44
+ account.token.tokenType === "trc20" &&
45
+ !isContractAddressRecipient && // send trc20 to a smart contract is allowed
46
+ (yield fetchTronAccount(recipient)).length === 0) {
47
+ // send trc20 to a new account is forbidden by us (because it will not activate the account)
48
+ errors.recipient = new TronSendTrc20ToNewAccountForbidden();
49
+ }
50
+ }
51
+ if (mode === "unfreeze") {
52
+ const { bandwidth, energy } = acc.tronResources.frozen;
53
+ if (resource === "BANDWIDTH" && transaction.amount.gt((bandwidth === null || bandwidth === void 0 ? void 0 : bandwidth.amount) || new BigNumber(0))) {
54
+ errors.resource = new TronNoFrozenForBandwidth();
55
+ }
56
+ else if (resource === "ENERGY" && transaction.amount.gt((energy === null || energy === void 0 ? void 0 : energy.amount) || new BigNumber(0))) {
57
+ errors.resource = new TronNoFrozenForEnergy();
58
+ }
59
+ }
60
+ if (mode === "legacyUnfreeze") {
61
+ const now = new Date();
62
+ const expirationDate = resource === "ENERGY"
63
+ ? (_a = acc.tronResources.legacyFrozen.energy) === null || _a === void 0 ? void 0 : _a.expiredAt
64
+ : (_b = acc.tronResources.legacyFrozen.bandwidth) === null || _b === void 0 ? void 0 : _b.expiredAt;
65
+ if (!expirationDate) {
66
+ if (resource === "BANDWIDTH") {
67
+ errors.resource = new TronNoFrozenForBandwidth();
68
+ }
69
+ else {
70
+ errors.resource = new TronNoFrozenForEnergy();
71
+ }
72
+ }
73
+ else if (now.getTime() < expirationDate.getTime()) {
74
+ errors.resource = new TronLegacyUnfreezeNotExpired();
75
+ }
76
+ }
77
+ if (mode === "withdrawExpireUnfreeze") {
78
+ const now = new Date();
79
+ if ((!acc.tronResources.unFrozen.bandwidth ||
80
+ acc.tronResources.unFrozen.bandwidth.length === 0) &&
81
+ (!acc.tronResources.unFrozen.energy || acc.tronResources.unFrozen.energy.length === 0)) {
82
+ errors.resource = new TronNoUnfrozenResource();
83
+ }
84
+ else {
85
+ const unfreezingResources = [
86
+ ...((_c = acc.tronResources.unFrozen.bandwidth) !== null && _c !== void 0 ? _c : []),
87
+ ...((_d = acc.tronResources.unFrozen.energy) !== null && _d !== void 0 ? _d : []),
88
+ ];
89
+ const hasNoExpiredResource = !unfreezingResources.some(unfrozen => unfrozen.expireTime.getTime() <= now.getTime());
90
+ if (hasNoExpiredResource) {
91
+ const closestExpireTime = unfreezingResources.reduce((closest, current) => {
92
+ if (!closest) {
93
+ return current;
94
+ }
95
+ const closestTimeDifference = Math.abs(closest.expireTime.getTime() - now.getTime());
96
+ const currentTimeDifference = Math.abs(current.expireTime.getTime() - now.getTime());
97
+ return currentTimeDifference < closestTimeDifference ? current : closest;
98
+ });
99
+ errors.resource = new TronUnfreezeNotExpired(undefined, {
100
+ time: closestExpireTime.expireTime.toISOString(),
101
+ });
102
+ }
103
+ }
104
+ }
105
+ if (mode === "unDelegateResource" && resource && acc.tronResources) {
106
+ const delegatedResourceAmount = yield getDelegatedResource(acc, transaction, resource);
107
+ if (delegatedResourceAmount.lt(transaction.amount)) {
108
+ errors.resource = new TronInvalidUnDelegateResourceAmount();
109
+ }
110
+ }
111
+ if (mode === "vote") {
112
+ if (votes.length === 0) {
113
+ errors.vote = new TronVoteRequired();
114
+ }
115
+ else {
116
+ const superRepresentatives = yield getTronSuperRepresentatives();
117
+ const isValidVoteCounts = votes.every(v => v.voteCount > 0);
118
+ const isValidAddresses = votes.every(v => superRepresentatives.some(s => s.address === v.address));
119
+ if (!isValidAddresses) {
120
+ errors.vote = new InvalidAddress("", {
121
+ currencyName: acc.currency.name,
122
+ });
123
+ }
124
+ else if (!isValidVoteCounts) {
125
+ errors.vote = new TronInvalidVoteCount();
126
+ }
127
+ else {
128
+ const totalVoteCount = sumBy(votes, "voteCount");
129
+ const tronPower = (acc.tronResources && acc.tronResources.tronPower) || 0;
130
+ if (totalVoteCount > tronPower) {
131
+ errors.vote = new TronNotEnoughTronPower();
132
+ }
133
+ }
134
+ }
135
+ }
136
+ if (mode === "claimReward") {
137
+ const lastRewardOp = account.operations.find(o => o.type === "REWARD");
138
+ const claimableRewardDate = lastRewardOp
139
+ ? new Date(lastRewardOp.date.getTime() + 24 * 60 * 60 * 1000) // date + 24 hours
140
+ : new Date();
141
+ if (acc.tronResources && acc.tronResources.unwithdrawnReward.eq(0)) {
142
+ errors.reward = new TronNoReward();
143
+ }
144
+ else if (lastRewardOp && claimableRewardDate.valueOf() > new Date().valueOf()) {
145
+ errors.reward = new TronRewardNotAvailable("Reward is not claimable", {
146
+ until: claimableRewardDate.toISOString(),
147
+ });
148
+ }
149
+ }
150
+ const estimatedFees = Object.entries(errors).length > 0
151
+ ? new BigNumber(0)
152
+ : yield getEstimatedFees(acc, transaction, isContractAddressRecipient);
153
+ const balance = account.type === "Account"
154
+ ? BigNumber.max(0, account.spendableBalance.minus(estimatedFees))
155
+ : account.balance;
156
+ const amount = useAllAmount ? balance : transaction.amount;
157
+ const amountSpent = ["send", "freeze", "undelegateResource"].includes(mode)
158
+ ? amount
159
+ : new BigNumber(0);
160
+ if (mode === "freeze" && amount.lt(ONE_TRX)) {
161
+ errors.amount = new TronInvalidFreezeAmount();
162
+ }
163
+ // fees are applied in the parent only (TRX)
164
+ const totalSpent = account.type === "Account" ? amountSpent.plus(estimatedFees) : amountSpent;
165
+ if (["send", "freeze"].includes(mode)) {
166
+ if (amount.eq(0)) {
167
+ errors.amount = new AmountRequired();
168
+ }
169
+ if (amountSpent.eq(0)) {
170
+ errors.amount = useAllAmount ? new NotEnoughBalance() : new AmountRequired();
171
+ }
172
+ else if (amount.gt(balance)) {
173
+ errors.amount = new NotEnoughBalance();
174
+ }
175
+ else if (account.type === "TokenAccount" && estimatedFees.gt(acc.balance)) {
176
+ errors.amount = new NotEnoughBalance();
177
+ }
178
+ const energy = (acc.tronResources && acc.tronResources.energy) || new BigNumber(0);
179
+ // For the moment, we rely on this rule:
180
+ // Add a 'TronNotEnoughEnergy' warning only if the account sastifies theses 3 conditions:
181
+ // - no energy
182
+ // - balance is lower than 1 TRX
183
+ // - contract consumes user energy (ie: user's ratio > 0%)
184
+ if (account.type === "TokenAccount" &&
185
+ account.token.tokenType === "trc20" &&
186
+ energy.lt(47619) // temporary value corresponding to usdt trc20 energy
187
+ ) {
188
+ const contractUserEnergyConsumption = yield getContractUserEnergyRatioConsumption(account.token.contractAddress);
189
+ if (contractUserEnergyConsumption > 0) {
190
+ warnings.amount = new TronNotEnoughEnergy();
191
+ }
192
+ }
193
+ }
194
+ if (!errors.recipient && estimatedFees.gt(0)) {
195
+ const fees = formatCurrencyUnit(getAccountCurrency(acc).units[0], estimatedFees, {
196
+ showCode: true,
197
+ disableRounding: true,
198
+ });
199
+ warnings.fee = new TronUnexpectedFees("Estimated fees", {
200
+ fees,
201
+ });
202
+ }
203
+ return Promise.resolve({
204
+ errors,
205
+ warnings,
206
+ amount: amountSpent,
207
+ estimatedFees,
208
+ totalSpent,
209
+ family,
210
+ });
211
+ });
212
+ export default getTransactionStatus;
213
+ //# sourceMappingURL=getTransactionStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionStatus.js","sourceRoot":"","sources":["../../src/bridge/getTransactionStatus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { CoinConfig } from "@ledgerhq/coin-framework/config";
2
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
3
+ import type { AccountBridge, CurrencyBridge } from "@ledgerhq/types-live";
4
+ import { type Transaction, TronAccount, TronSigner } from "../types";
5
+ import { TronCoinConfig } from "../config";
6
+ export declare function createBridges(signerContext: SignerContext<TronSigner>, coinConfig: CoinConfig<TronCoinConfig>): {
7
+ currencyBridge: CurrencyBridge;
8
+ accountBridge: AccountBridge<Transaction, TronAccount, import("@ledgerhq/types-live").TransactionStatusCommon, import("@ledgerhq/types-live").AccountRaw>;
9
+ };
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,KAAK,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAgBrE,OAAO,EAAiB,cAAc,EAAE,MAAM,WAAW,CAAC;AA0C1D,wBAAgB,aAAa,CAC3B,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC,EACxC,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC;;;EAQvC"}
@@ -0,0 +1,53 @@
1
+ import getAddressWrapper from "@ledgerhq/coin-framework/bridge/getAddressWrapper";
2
+ import { defaultUpdateTransaction, makeAccountBridgeReceive, makeScanAccounts, } from "@ledgerhq/coin-framework/bridge/jsHelpers";
3
+ import signerGetAddress from "../signer";
4
+ import broadcast from "./broadcast";
5
+ import createTransaction from "./createTransaction";
6
+ import estimateMaxSpendable from "./estimateMaxSpendable";
7
+ import getTransactionStatus from "./getTransactionStatus";
8
+ import { hydrate, preload } from "./preload";
9
+ import { prepareTransaction } from "./prepareTransaction";
10
+ import { assignFromAccountRaw, assignToAccountRaw, fromOperationExtraRaw, toOperationExtraRaw, } from "./serialization";
11
+ import { buildSignOperation } from "./signOperation";
12
+ import { getAccountShape, sync } from "./synchronization";
13
+ import { setCoinConfig } from "../config";
14
+ function buildCurrencyBridge(signerContext) {
15
+ const getAddress = signerGetAddress(signerContext);
16
+ const scanAccounts = makeScanAccounts({
17
+ getAccountShape,
18
+ getAddressFn: getAddressWrapper(getAddress),
19
+ });
20
+ return {
21
+ preload,
22
+ hydrate,
23
+ scanAccounts,
24
+ };
25
+ }
26
+ function buildAccountBridge(signerContext) {
27
+ const getAddress = signerGetAddress(signerContext);
28
+ const receive = makeAccountBridgeReceive(getAddressWrapper(getAddress));
29
+ const signOperation = buildSignOperation(signerContext);
30
+ return {
31
+ estimateMaxSpendable,
32
+ createTransaction,
33
+ updateTransaction: defaultUpdateTransaction,
34
+ getTransactionStatus,
35
+ prepareTransaction,
36
+ sync,
37
+ receive,
38
+ signOperation,
39
+ broadcast,
40
+ assignFromAccountRaw,
41
+ assignToAccountRaw,
42
+ fromOperationExtraRaw,
43
+ toOperationExtraRaw,
44
+ };
45
+ }
46
+ export function createBridges(signerContext, coinConfig) {
47
+ setCoinConfig(coinConfig);
48
+ return {
49
+ currencyBridge: buildCurrencyBridge(signerContext),
50
+ accountBridge: buildAccountBridge(signerContext),
51
+ };
52
+ }
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,mDAAmD,CAAC;AAClF,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,2CAA2C,CAAC;AAKnD,OAAO,gBAAgB,MAAM,WAAW,CAAC;AACzC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAkB,MAAM,WAAW,CAAC;AAE1D,SAAS,mBAAmB,CAAC,aAAwC;IACnE,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAEnD,MAAM,YAAY,GAAG,gBAAgB,CAAC;QACpC,eAAe;QACf,YAAY,EAAE,iBAAiB,CAAC,UAAU,CAAC;KAC5C,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,OAAO;QACP,YAAY;KACb,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,aAAwC;IAExC,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAG,wBAAwB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAExD,OAAO;QACL,oBAAoB;QACpB,iBAAiB;QACjB,iBAAiB,EAAE,wBAAwB;QAC3C,oBAAoB;QACpB,kBAAkB;QAClB,IAAI;QACJ,OAAO;QACP,aAAa;QACb,SAAS;QACT,oBAAoB;QACpB,kBAAkB;QAClB,qBAAqB;QACrB,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,aAAwC,EACxC,UAAsC;IAEtC,aAAa,CAAC,UAAU,CAAC,CAAC;IAE1B,OAAO;QACL,cAAc,EAAE,mBAAmB,CAAC,aAAa,CAAC;QAClD,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC;KACjD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { SuperRepresentative } from "../types";
2
+ export declare const preload: () => Promise<{
3
+ superRepresentatives: SuperRepresentative[];
4
+ }>;
5
+ export declare const hydrate: (data?: {
6
+ superRepresentatives?: SuperRepresentative[];
7
+ }) => void;
8
+ //# sourceMappingURL=preload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preload.d.ts","sourceRoot":"","sources":["../../src/bridge/preload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,eAAO,MAAM,OAAO;;EAKnB,CAAC;AAEF,eAAO,MAAM,OAAO,UAAW;IAAE,oBAAoB,CAAC,EAAE,mBAAmB,EAAE,CAAA;CAAE,SAa9E,CAAC"}
@@ -0,0 +1,27 @@
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 { getTronSuperRepresentatives, hydrateSuperRepresentatives } from "../network";
11
+ export const preload = () => __awaiter(void 0, void 0, void 0, function* () {
12
+ const superRepresentatives = yield getTronSuperRepresentatives();
13
+ return {
14
+ superRepresentatives,
15
+ };
16
+ });
17
+ export const hydrate = (data) => {
18
+ if (!data || !data.superRepresentatives)
19
+ return;
20
+ const { superRepresentatives } = data;
21
+ if (!superRepresentatives ||
22
+ typeof superRepresentatives !== "object" ||
23
+ !Array.isArray(superRepresentatives))
24
+ return;
25
+ hydrateSuperRepresentatives(superRepresentatives);
26
+ };
27
+ //# sourceMappingURL=preload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preload.js","sourceRoot":"","sources":["../../src/bridge/preload.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAGtF,MAAM,CAAC,MAAM,OAAO,GAAG,GAAS,EAAE;IAChC,MAAM,oBAAoB,GAAG,MAAM,2BAA2B,EAAE,CAAC;IACjE,OAAO;QACL,oBAAoB;KACrB,CAAC;AACJ,CAAC,CAAA,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAuD,EAAE,EAAE;IACjF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB;QAAE,OAAO;IAEhD,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;IAEtC,IACE,CAAC,oBAAoB;QACrB,OAAO,oBAAoB,KAAK,QAAQ;QACxC,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAEpC,OAAO;IAET,2BAA2B,CAAC,oBAAoB,CAAC,CAAC;AACpD,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { AccountBridge } from "@ledgerhq/types-live";
2
+ import { Transaction, TronAccount } from "../types";
3
+ export declare const prepareTransaction: AccountBridge<Transaction, TronAccount>["prepareTransaction"];
4
+ //# sourceMappingURL=prepareTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAC5C,WAAW,EACX,WAAW,CACZ,CAAC,oBAAoB,CAIrB,CAAC"}
@@ -0,0 +1,15 @@
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 { getTronAccountNetwork } from "../network";
11
+ export const prepareTransaction = (account, transaction) => __awaiter(void 0, void 0, void 0, function* () {
12
+ const networkInfo = transaction.networkInfo || (yield getTronAccountNetwork(account.freshAddress));
13
+ return transaction.networkInfo === networkInfo ? transaction : Object.assign(Object.assign({}, transaction), { networkInfo });
14
+ });
15
+ //# sourceMappingURL=prepareTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,MAAM,CAAC,MAAM,kBAAkB,GAGL,CAAO,OAAO,EAAE,WAAW,EAAE,EAAE;IACvD,MAAM,WAAW,GACf,WAAW,CAAC,WAAW,IAAI,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IACjF,OAAO,WAAW,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,iCAAM,WAAW,KAAE,WAAW,GAAE,CAAC;AACjG,CAAC,CAAA,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type TronResources, type TronResourcesRaw, type TrongridExtraTxInfo, type TrongridExtraTxInfoRaw } from "../types";
2
+ import { Account, AccountRaw, OperationExtra, OperationExtraRaw } from "@ledgerhq/types-live";
3
+ export declare const toTronResourcesRaw: ({ frozen, unFrozen, delegatedFrozen, legacyFrozen, votes, tronPower, energy, bandwidth, unwithdrawnReward, lastWithdrawnRewardDate, lastVotedDate, cacheTransactionInfoById: cacheTx, }: TronResources) => TronResourcesRaw;
4
+ export declare const fromTronResourcesRaw: ({ frozen, unFrozen, delegatedFrozen, legacyFrozen, votes, tronPower, energy, bandwidth, unwithdrawnReward, lastWithdrawnRewardDate, lastVotedDate, cacheTransactionInfoById: cacheTransactionInfoByIdRaw, }: TronResourcesRaw) => TronResources;
5
+ export declare function assignToAccountRaw(account: Account, accountRaw: AccountRaw): void;
6
+ export declare function assignFromAccountRaw(accountRaw: AccountRaw, account: Account): void;
7
+ export declare function fromOperationExtraRaw(extraRaw: OperationExtraRaw): TrongridExtraTxInfo;
8
+ export declare function toOperationExtraRaw(extra: OperationExtra): TrongridExtraTxInfoRaw;
9
+ //# sourceMappingURL=serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../src/bridge/serialization.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9F,eAAO,MAAM,kBAAkB,4LAa5B,aAAa,KAAG,gBAmFlB,CAAC;AACF,eAAO,MAAM,oBAAoB,gNAa9B,gBAAgB,KAAG,aA2FrB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,QAK1E;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,QAI5E;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,mBAAmB,CA2BtF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,sBAAsB,CA2BjF"}
@@ -0,0 +1,229 @@
1
+ import { BigNumber } from "bignumber.js";
2
+ import { isTrongridExtraTxInfo, isTrongridExtraTxInfoRaw, } from "../types";
3
+ export const toTronResourcesRaw = ({ frozen, unFrozen, delegatedFrozen, legacyFrozen, votes, tronPower, energy, bandwidth, unwithdrawnReward, lastWithdrawnRewardDate, lastVotedDate, cacheTransactionInfoById: cacheTx, }) => {
4
+ const frozenBandwidth = frozen.bandwidth;
5
+ const frozenEnergy = frozen.energy;
6
+ const delegatedFrozenBandwidth = delegatedFrozen.bandwidth;
7
+ const delegatedFrozenEnergy = delegatedFrozen.energy;
8
+ const cacheTransactionInfoById = {};
9
+ const unFrozenBandwidth = unFrozen === null || unFrozen === void 0 ? void 0 : unFrozen.bandwidth;
10
+ const unFrozenEnergy = unFrozen === null || unFrozen === void 0 ? void 0 : unFrozen.energy;
11
+ const legacyFrozenBandwidth = legacyFrozen === null || legacyFrozen === void 0 ? void 0 : legacyFrozen.bandwidth;
12
+ const legacyFrozenEnergy = legacyFrozen === null || legacyFrozen === void 0 ? void 0 : legacyFrozen.energy;
13
+ for (const k in cacheTx) {
14
+ const { fee, blockNumber, withdraw_amount, unfreeze_amount } = cacheTx[k];
15
+ cacheTransactionInfoById[k] = [fee, blockNumber, withdraw_amount, unfreeze_amount];
16
+ }
17
+ return {
18
+ frozen: {
19
+ bandwidth: frozenBandwidth
20
+ ? {
21
+ amount: frozenBandwidth.amount.toString(),
22
+ }
23
+ : undefined,
24
+ energy: frozenEnergy
25
+ ? {
26
+ amount: frozenEnergy.amount.toString(),
27
+ }
28
+ : undefined,
29
+ },
30
+ delegatedFrozen: {
31
+ bandwidth: delegatedFrozenBandwidth
32
+ ? {
33
+ amount: delegatedFrozenBandwidth.amount.toString(),
34
+ }
35
+ : undefined,
36
+ energy: delegatedFrozenEnergy
37
+ ? {
38
+ amount: delegatedFrozenEnergy.amount.toString(),
39
+ }
40
+ : undefined,
41
+ },
42
+ unFrozen: {
43
+ bandwidth: unFrozenBandwidth
44
+ ? unFrozenBandwidth.map(entry => {
45
+ return { amount: entry.amount.toString(), expireTime: entry.expireTime.toISOString() };
46
+ })
47
+ : undefined,
48
+ energy: unFrozenEnergy
49
+ ? unFrozenEnergy.map(entry => {
50
+ return { amount: entry.amount.toString(), expireTime: entry.expireTime.toISOString() };
51
+ })
52
+ : undefined,
53
+ },
54
+ legacyFrozen: {
55
+ bandwidth: legacyFrozenBandwidth
56
+ ? {
57
+ amount: legacyFrozenBandwidth.amount.toString(),
58
+ expiredAt: legacyFrozenBandwidth.expiredAt.toISOString(),
59
+ }
60
+ : undefined,
61
+ energy: legacyFrozenEnergy
62
+ ? {
63
+ amount: legacyFrozenEnergy.amount.toString(),
64
+ expiredAt: legacyFrozenEnergy.expiredAt.toISOString(),
65
+ }
66
+ : undefined,
67
+ },
68
+ votes,
69
+ tronPower,
70
+ energy: energy.toString(),
71
+ bandwidth: {
72
+ freeUsed: bandwidth.freeUsed.toString(),
73
+ freeLimit: bandwidth.freeLimit.toString(),
74
+ gainedUsed: bandwidth.gainedUsed.toString(),
75
+ gainedLimit: bandwidth.gainedLimit.toString(),
76
+ },
77
+ unwithdrawnReward: unwithdrawnReward.toString(),
78
+ lastWithdrawnRewardDate: lastWithdrawnRewardDate
79
+ ? lastWithdrawnRewardDate.toISOString()
80
+ : undefined,
81
+ lastVotedDate: lastVotedDate ? lastVotedDate.toISOString() : undefined,
82
+ cacheTransactionInfoById,
83
+ };
84
+ };
85
+ export const fromTronResourcesRaw = ({ frozen, unFrozen, delegatedFrozen, legacyFrozen, votes, tronPower, energy, bandwidth, unwithdrawnReward, lastWithdrawnRewardDate, lastVotedDate, cacheTransactionInfoById: cacheTransactionInfoByIdRaw, }) => {
86
+ const frozenBandwidth = frozen.bandwidth;
87
+ const frozenEnergy = frozen.energy;
88
+ const delegatedFrozenBandwidth = delegatedFrozen.bandwidth;
89
+ const delegatedFrozenEnergy = delegatedFrozen.energy;
90
+ const unFrozenBandwidth = unFrozen === null || unFrozen === void 0 ? void 0 : unFrozen.bandwidth;
91
+ const unFrozenEnergy = unFrozen === null || unFrozen === void 0 ? void 0 : unFrozen.energy;
92
+ const legacyFrozenBandwidth = legacyFrozen === null || legacyFrozen === void 0 ? void 0 : legacyFrozen.bandwidth;
93
+ const legacyFrozenEnergy = legacyFrozen === null || legacyFrozen === void 0 ? void 0 : legacyFrozen.energy;
94
+ const cacheTransactionInfoById = {};
95
+ if (cacheTransactionInfoByIdRaw) {
96
+ for (const k in cacheTransactionInfoByIdRaw) {
97
+ const [fee, blockNumber, withdraw_amount, unfreeze_amount] = cacheTransactionInfoByIdRaw[k];
98
+ cacheTransactionInfoById[k] = {
99
+ fee,
100
+ blockNumber,
101
+ withdraw_amount,
102
+ unfreeze_amount,
103
+ };
104
+ }
105
+ }
106
+ return {
107
+ frozen: {
108
+ bandwidth: frozenBandwidth
109
+ ? {
110
+ amount: new BigNumber(frozenBandwidth.amount),
111
+ }
112
+ : undefined,
113
+ energy: frozenEnergy
114
+ ? {
115
+ amount: new BigNumber(frozenEnergy.amount),
116
+ }
117
+ : undefined,
118
+ },
119
+ delegatedFrozen: {
120
+ bandwidth: delegatedFrozenBandwidth
121
+ ? {
122
+ amount: new BigNumber(delegatedFrozenBandwidth.amount),
123
+ }
124
+ : undefined,
125
+ energy: delegatedFrozenEnergy
126
+ ? {
127
+ amount: new BigNumber(delegatedFrozenEnergy.amount),
128
+ }
129
+ : undefined,
130
+ },
131
+ unFrozen: {
132
+ bandwidth: unFrozenBandwidth
133
+ ? unFrozenBandwidth.map(entry => {
134
+ return { amount: new BigNumber(entry.amount), expireTime: new Date(entry.expireTime) };
135
+ })
136
+ : undefined,
137
+ energy: unFrozenEnergy
138
+ ? unFrozenEnergy.map(entry => {
139
+ return { amount: new BigNumber(entry.amount), expireTime: new Date(entry.expireTime) };
140
+ })
141
+ : undefined,
142
+ },
143
+ legacyFrozen: {
144
+ bandwidth: legacyFrozenBandwidth
145
+ ? {
146
+ amount: new BigNumber(legacyFrozenBandwidth.amount),
147
+ expiredAt: new Date(legacyFrozenBandwidth.expiredAt),
148
+ }
149
+ : undefined,
150
+ energy: legacyFrozenEnergy
151
+ ? {
152
+ amount: new BigNumber(legacyFrozenEnergy.amount),
153
+ expiredAt: new Date(legacyFrozenEnergy.expiredAt),
154
+ }
155
+ : undefined,
156
+ },
157
+ votes,
158
+ tronPower,
159
+ energy: new BigNumber(energy),
160
+ bandwidth: {
161
+ freeUsed: new BigNumber(bandwidth.freeUsed),
162
+ freeLimit: new BigNumber(bandwidth.freeLimit),
163
+ gainedUsed: new BigNumber(bandwidth.gainedUsed),
164
+ gainedLimit: new BigNumber(bandwidth.gainedLimit),
165
+ },
166
+ unwithdrawnReward: new BigNumber(unwithdrawnReward),
167
+ lastWithdrawnRewardDate: lastWithdrawnRewardDate
168
+ ? new Date(lastWithdrawnRewardDate)
169
+ : undefined,
170
+ lastVotedDate: lastVotedDate ? new Date(lastVotedDate) : undefined,
171
+ cacheTransactionInfoById,
172
+ };
173
+ };
174
+ export function assignToAccountRaw(account, accountRaw) {
175
+ const tronAccount = account;
176
+ if (tronAccount.tronResources) {
177
+ accountRaw.tronResources = toTronResourcesRaw(tronAccount.tronResources);
178
+ }
179
+ }
180
+ export function assignFromAccountRaw(accountRaw, account) {
181
+ const tronResourcesRaw = accountRaw.tronResources;
182
+ if (tronResourcesRaw)
183
+ account.tronResources = fromTronResourcesRaw(tronResourcesRaw);
184
+ }
185
+ export function fromOperationExtraRaw(extraRaw) {
186
+ const extra = {};
187
+ if (!isTrongridExtraTxInfoRaw(extraRaw)) {
188
+ return extra;
189
+ }
190
+ if (extraRaw.frozenAmount) {
191
+ extra.frozenAmount = new BigNumber(extraRaw.frozenAmount);
192
+ }
193
+ if (extraRaw.unfreezeAmount) {
194
+ extra.unfreezeAmount = new BigNumber(extraRaw.unfreezeAmount);
195
+ }
196
+ if (extraRaw.votes) {
197
+ extra.votes = extraRaw.votes;
198
+ }
199
+ if (extraRaw.unDelegatedAmount) {
200
+ extra.unDelegatedAmount = new BigNumber(extraRaw.unDelegatedAmount);
201
+ }
202
+ if (extraRaw.receiverAddress) {
203
+ extra.receiverAddress = extraRaw.receiverAddress;
204
+ }
205
+ return extra;
206
+ }
207
+ export function toOperationExtraRaw(extra) {
208
+ const extraRaw = {};
209
+ if (!isTrongridExtraTxInfo(extra)) {
210
+ return extraRaw;
211
+ }
212
+ if (extra.frozenAmount) {
213
+ extraRaw.frozenAmount = extra.frozenAmount.toString();
214
+ }
215
+ if (extra.unfreezeAmount) {
216
+ extraRaw.unfreezeAmount = extra.unfreezeAmount.toString();
217
+ }
218
+ if (extra.votes) {
219
+ extraRaw.votes = extra.votes;
220
+ }
221
+ if (extra.unDelegatedAmount) {
222
+ extraRaw.unDelegatedAmount = extra.unDelegatedAmount.toString();
223
+ }
224
+ if (extra.receiverAddress) {
225
+ extraRaw.receiverAddress = extra.receiverAddress;
226
+ }
227
+ return extraRaw;
228
+ }
229
+ //# sourceMappingURL=serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.js","sourceRoot":"","sources":["../../src/bridge/serialization.ts"],"names":[],"mappings":"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"}