tronwb 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +201 -0
  3. package/dist/TronWeb.js +3 -0
  4. package/dist/TronWeb.js.LICENSE.txt +12 -0
  5. package/dist/TronWeb.js.map +1 -0
  6. package/dist/TronWeb.node.js +2 -0
  7. package/dist/TronWeb.node.js.map +1 -0
  8. package/kj9btptx.cjs +1 -0
  9. package/lib/commonjs/index.d.ts +64 -0
  10. package/lib/commonjs/index.js +37 -0
  11. package/lib/commonjs/index.js.map +1 -0
  12. package/lib/commonjs/lib/TransactionBuilder/TransactionBuilder.d.ts +127 -0
  13. package/lib/commonjs/lib/TransactionBuilder/TransactionBuilder.js +1771 -0
  14. package/lib/commonjs/lib/TransactionBuilder/TransactionBuilder.js.map +1 -0
  15. package/lib/commonjs/lib/TransactionBuilder/helper.d.ts +28 -0
  16. package/lib/commonjs/lib/TransactionBuilder/helper.js +122 -0
  17. package/lib/commonjs/lib/TransactionBuilder/helper.js.map +1 -0
  18. package/lib/commonjs/lib/contract/index.d.ts +29 -0
  19. package/lib/commonjs/lib/contract/index.js +124 -0
  20. package/lib/commonjs/lib/contract/index.js.map +1 -0
  21. package/lib/commonjs/lib/contract/method.d.ts +50 -0
  22. package/lib/commonjs/lib/contract/method.js +238 -0
  23. package/lib/commonjs/lib/contract/method.js.map +1 -0
  24. package/lib/commonjs/lib/event.d.ts +85 -0
  25. package/lib/commonjs/lib/event.js +137 -0
  26. package/lib/commonjs/lib/event.js.map +1 -0
  27. package/lib/commonjs/lib/plugin.d.ts +28 -0
  28. package/lib/commonjs/lib/plugin.js +84 -0
  29. package/lib/commonjs/lib/plugin.js.map +1 -0
  30. package/lib/commonjs/lib/providers/HttpProvider.d.ts +15 -0
  31. package/lib/commonjs/lib/providers/HttpProvider.js +63 -0
  32. package/lib/commonjs/lib/providers/HttpProvider.js.map +1 -0
  33. package/lib/commonjs/lib/providers/index.d.ts +6 -0
  34. package/lib/commonjs/lib/providers/index.js +8 -0
  35. package/lib/commonjs/lib/providers/index.js.map +1 -0
  36. package/lib/commonjs/lib/trx.d.ts +315 -0
  37. package/lib/commonjs/lib/trx.js +965 -0
  38. package/lib/commonjs/lib/trx.js.map +1 -0
  39. package/lib/commonjs/package.json +1 -0
  40. package/lib/commonjs/paramValidator/index.d.ts +19 -0
  41. package/lib/commonjs/paramValidator/index.js +110 -0
  42. package/lib/commonjs/paramValidator/index.js.map +1 -0
  43. package/lib/commonjs/protocol/core/Tron_pb.cjs +7524 -0
  44. package/lib/commonjs/protocol/core/contract/account_contract_pb.cjs +961 -0
  45. package/lib/commonjs/protocol/core/contract/asset_issue_contract_pb.cjs +2196 -0
  46. package/lib/commonjs/protocol/core/contract/balance_contract_pb.cjs +3826 -0
  47. package/lib/commonjs/protocol/core/contract/common_pb.cjs +34 -0
  48. package/lib/commonjs/protocol/core/contract/exchange_contract_pb.cjs +1268 -0
  49. package/lib/commonjs/protocol/core/contract/proposal_contract_pb.cjs +675 -0
  50. package/lib/commonjs/protocol/core/contract/smart_contract_pb.cjs +2960 -0
  51. package/lib/commonjs/protocol/core/contract/storage_contract_pb.cjs +848 -0
  52. package/lib/commonjs/protocol/core/contract/vote_asset_contract_pb.cjs +340 -0
  53. package/lib/commonjs/protocol/core/contract/witness_contract_pb.cjs +956 -0
  54. package/lib/commonjs/tronweb.d.ts +111 -0
  55. package/lib/commonjs/tronweb.js +365 -0
  56. package/lib/commonjs/tronweb.js.map +1 -0
  57. package/lib/commonjs/types/ABI.d.ts +59 -0
  58. package/lib/commonjs/types/ABI.js +3 -0
  59. package/lib/commonjs/types/ABI.js.map +1 -0
  60. package/lib/commonjs/types/APIResponse.d.ts +31 -0
  61. package/lib/commonjs/types/APIResponse.js +3 -0
  62. package/lib/commonjs/types/APIResponse.js.map +1 -0
  63. package/lib/commonjs/types/Contract.d.ts +287 -0
  64. package/lib/commonjs/types/Contract.js +63 -0
  65. package/lib/commonjs/types/Contract.js.map +1 -0
  66. package/lib/commonjs/types/Providers.d.ts +8 -0
  67. package/lib/commonjs/types/Providers.js +3 -0
  68. package/lib/commonjs/types/Providers.js.map +1 -0
  69. package/lib/commonjs/types/Transaction.d.ts +65 -0
  70. package/lib/commonjs/types/Transaction.js +3 -0
  71. package/lib/commonjs/types/Transaction.js.map +1 -0
  72. package/lib/commonjs/types/TransactionBuilder.d.ts +270 -0
  73. package/lib/commonjs/types/TransactionBuilder.js +3 -0
  74. package/lib/commonjs/types/TransactionBuilder.js.map +1 -0
  75. package/lib/commonjs/types/TronWeb.d.ts +20 -0
  76. package/lib/commonjs/types/TronWeb.js +3 -0
  77. package/lib/commonjs/types/TronWeb.js.map +1 -0
  78. package/lib/commonjs/types/Trx.d.ts +263 -0
  79. package/lib/commonjs/types/Trx.js +42 -0
  80. package/lib/commonjs/types/Trx.js.map +1 -0
  81. package/lib/commonjs/types/UtilsTypes.d.ts +23 -0
  82. package/lib/commonjs/types/UtilsTypes.js +3 -0
  83. package/lib/commonjs/types/UtilsTypes.js.map +1 -0
  84. package/lib/commonjs/types/index.d.ts +9 -0
  85. package/lib/commonjs/types/index.js +13 -0
  86. package/lib/commonjs/types/index.js.map +1 -0
  87. package/lib/commonjs/utils/abi.d.ts +5 -0
  88. package/lib/commonjs/utils/abi.js +251 -0
  89. package/lib/commonjs/utils/abi.js.map +1 -0
  90. package/lib/commonjs/utils/accounts.d.ts +22 -0
  91. package/lib/commonjs/utils/accounts.js +51 -0
  92. package/lib/commonjs/utils/accounts.js.map +1 -0
  93. package/lib/commonjs/utils/address.d.ts +12 -0
  94. package/lib/commonjs/utils/address.js +91 -0
  95. package/lib/commonjs/utils/address.js.map +1 -0
  96. package/lib/commonjs/utils/base58.d.ts +3 -0
  97. package/lib/commonjs/utils/base58.js +68 -0
  98. package/lib/commonjs/utils/base58.js.map +1 -0
  99. package/lib/commonjs/utils/base64.d.ts +10 -0
  100. package/lib/commonjs/utils/base64.js +173 -0
  101. package/lib/commonjs/utils/base64.js.map +1 -0
  102. package/lib/commonjs/utils/bytes.d.ts +7 -0
  103. package/lib/commonjs/utils/bytes.js +61 -0
  104. package/lib/commonjs/utils/bytes.js.map +1 -0
  105. package/lib/commonjs/utils/code.d.ts +12 -0
  106. package/lib/commonjs/utils/code.js +166 -0
  107. package/lib/commonjs/utils/code.js.map +1 -0
  108. package/lib/commonjs/utils/crypto.d.ts +25 -0
  109. package/lib/commonjs/utils/crypto.js +222 -0
  110. package/lib/commonjs/utils/crypto.js.map +1 -0
  111. package/lib/commonjs/utils/ethersUtils.d.ts +14 -0
  112. package/lib/commonjs/utils/ethersUtils.js +39 -0
  113. package/lib/commonjs/utils/ethersUtils.js.map +1 -0
  114. package/lib/commonjs/utils/fragments.d.ts +465 -0
  115. package/lib/commonjs/utils/fragments.js +1342 -0
  116. package/lib/commonjs/utils/fragments.js.map +1 -0
  117. package/lib/commonjs/utils/help.d.ts +8 -0
  118. package/lib/commonjs/utils/help.js +61 -0
  119. package/lib/commonjs/utils/help.js.map +1 -0
  120. package/lib/commonjs/utils/index.d.ts +56 -0
  121. package/lib/commonjs/utils/index.js +43 -0
  122. package/lib/commonjs/utils/index.js.map +1 -0
  123. package/lib/commonjs/utils/interface.d.ts +381 -0
  124. package/lib/commonjs/utils/interface.js +1121 -0
  125. package/lib/commonjs/utils/interface.js.map +1 -0
  126. package/lib/commonjs/utils/message.d.ts +4 -0
  127. package/lib/commonjs/utils/message.js +38 -0
  128. package/lib/commonjs/utils/message.js.map +1 -0
  129. package/lib/commonjs/utils/transaction.d.ts +17 -0
  130. package/lib/commonjs/utils/transaction.js +678 -0
  131. package/lib/commonjs/utils/transaction.js.map +1 -0
  132. package/lib/commonjs/utils/typedData.d.ts +148 -0
  133. package/lib/commonjs/utils/typedData.js +498 -0
  134. package/lib/commonjs/utils/typedData.js.map +1 -0
  135. package/lib/commonjs/utils/validations.d.ts +22 -0
  136. package/lib/commonjs/utils/validations.js +128 -0
  137. package/lib/commonjs/utils/validations.js.map +1 -0
  138. package/lib/esm/index.d.ts +64 -0
  139. package/lib/esm/index.js +33 -0
  140. package/lib/esm/index.js.map +1 -0
  141. package/lib/esm/lib/TransactionBuilder/TransactionBuilder.d.ts +127 -0
  142. package/lib/esm/lib/TransactionBuilder/TransactionBuilder.js +1767 -0
  143. package/lib/esm/lib/TransactionBuilder/TransactionBuilder.js.map +1 -0
  144. package/lib/esm/lib/TransactionBuilder/helper.d.ts +28 -0
  145. package/lib/esm/lib/TransactionBuilder/helper.js +112 -0
  146. package/lib/esm/lib/TransactionBuilder/helper.js.map +1 -0
  147. package/lib/esm/lib/contract/index.d.ts +29 -0
  148. package/lib/esm/lib/contract/index.js +118 -0
  149. package/lib/esm/lib/contract/index.js.map +1 -0
  150. package/lib/esm/lib/contract/method.d.ts +50 -0
  151. package/lib/esm/lib/contract/method.js +233 -0
  152. package/lib/esm/lib/contract/method.js.map +1 -0
  153. package/lib/esm/lib/event.d.ts +85 -0
  154. package/lib/esm/lib/event.js +132 -0
  155. package/lib/esm/lib/event.js.map +1 -0
  156. package/lib/esm/lib/plugin.d.ts +28 -0
  157. package/lib/esm/lib/plugin.js +79 -0
  158. package/lib/esm/lib/plugin.js.map +1 -0
  159. package/lib/esm/lib/providers/HttpProvider.d.ts +15 -0
  160. package/lib/esm/lib/providers/HttpProvider.js +59 -0
  161. package/lib/esm/lib/providers/HttpProvider.js.map +1 -0
  162. package/lib/esm/lib/providers/index.d.ts +6 -0
  163. package/lib/esm/lib/providers/index.js +4 -0
  164. package/lib/esm/lib/providers/index.js.map +1 -0
  165. package/lib/esm/lib/trx.d.ts +315 -0
  166. package/lib/esm/lib/trx.js +960 -0
  167. package/lib/esm/lib/trx.js.map +1 -0
  168. package/lib/esm/package.json +1 -0
  169. package/lib/esm/paramValidator/index.d.ts +19 -0
  170. package/lib/esm/paramValidator/index.js +106 -0
  171. package/lib/esm/paramValidator/index.js.map +1 -0
  172. package/lib/esm/protocol/core/Tron_pb.cjs +7524 -0
  173. package/lib/esm/protocol/core/contract/account_contract_pb.cjs +961 -0
  174. package/lib/esm/protocol/core/contract/asset_issue_contract_pb.cjs +2196 -0
  175. package/lib/esm/protocol/core/contract/balance_contract_pb.cjs +3826 -0
  176. package/lib/esm/protocol/core/contract/common_pb.cjs +34 -0
  177. package/lib/esm/protocol/core/contract/exchange_contract_pb.cjs +1268 -0
  178. package/lib/esm/protocol/core/contract/proposal_contract_pb.cjs +675 -0
  179. package/lib/esm/protocol/core/contract/smart_contract_pb.cjs +2960 -0
  180. package/lib/esm/protocol/core/contract/storage_contract_pb.cjs +848 -0
  181. package/lib/esm/protocol/core/contract/vote_asset_contract_pb.cjs +340 -0
  182. package/lib/esm/protocol/core/contract/witness_contract_pb.cjs +956 -0
  183. package/lib/esm/tronweb.d.ts +111 -0
  184. package/lib/esm/tronweb.js +360 -0
  185. package/lib/esm/tronweb.js.map +1 -0
  186. package/lib/esm/types/ABI.d.ts +59 -0
  187. package/lib/esm/types/ABI.js +2 -0
  188. package/lib/esm/types/ABI.js.map +1 -0
  189. package/lib/esm/types/APIResponse.d.ts +31 -0
  190. package/lib/esm/types/APIResponse.js +2 -0
  191. package/lib/esm/types/APIResponse.js.map +1 -0
  192. package/lib/esm/types/Contract.d.ts +287 -0
  193. package/lib/esm/types/Contract.js +60 -0
  194. package/lib/esm/types/Contract.js.map +1 -0
  195. package/lib/esm/types/Providers.d.ts +8 -0
  196. package/lib/esm/types/Providers.js +2 -0
  197. package/lib/esm/types/Providers.js.map +1 -0
  198. package/lib/esm/types/Transaction.d.ts +65 -0
  199. package/lib/esm/types/Transaction.js +2 -0
  200. package/lib/esm/types/Transaction.js.map +1 -0
  201. package/lib/esm/types/TransactionBuilder.d.ts +270 -0
  202. package/lib/esm/types/TransactionBuilder.js +2 -0
  203. package/lib/esm/types/TransactionBuilder.js.map +1 -0
  204. package/lib/esm/types/TronWeb.d.ts +20 -0
  205. package/lib/esm/types/TronWeb.js +2 -0
  206. package/lib/esm/types/TronWeb.js.map +1 -0
  207. package/lib/esm/types/Trx.d.ts +263 -0
  208. package/lib/esm/types/Trx.js +39 -0
  209. package/lib/esm/types/Trx.js.map +1 -0
  210. package/lib/esm/types/UtilsTypes.d.ts +23 -0
  211. package/lib/esm/types/UtilsTypes.js +2 -0
  212. package/lib/esm/types/UtilsTypes.js.map +1 -0
  213. package/lib/esm/types/index.d.ts +9 -0
  214. package/lib/esm/types/index.js +10 -0
  215. package/lib/esm/types/index.js.map +1 -0
  216. package/lib/esm/utils/abi.d.ts +5 -0
  217. package/lib/esm/utils/abi.js +245 -0
  218. package/lib/esm/utils/abi.js.map +1 -0
  219. package/lib/esm/utils/accounts.d.ts +22 -0
  220. package/lib/esm/utils/accounts.js +46 -0
  221. package/lib/esm/utils/accounts.js.map +1 -0
  222. package/lib/esm/utils/address.d.ts +12 -0
  223. package/lib/esm/utils/address.js +82 -0
  224. package/lib/esm/utils/address.js.map +1 -0
  225. package/lib/esm/utils/base58.d.ts +3 -0
  226. package/lib/esm/utils/base58.js +64 -0
  227. package/lib/esm/utils/base58.js.map +1 -0
  228. package/lib/esm/utils/base64.d.ts +10 -0
  229. package/lib/esm/utils/base64.js +169 -0
  230. package/lib/esm/utils/base64.js.map +1 -0
  231. package/lib/esm/utils/bytes.d.ts +7 -0
  232. package/lib/esm/utils/bytes.js +53 -0
  233. package/lib/esm/utils/bytes.js.map +1 -0
  234. package/lib/esm/utils/code.d.ts +12 -0
  235. package/lib/esm/utils/code.js +149 -0
  236. package/lib/esm/utils/code.js.map +1 -0
  237. package/lib/esm/utils/crypto.d.ts +25 -0
  238. package/lib/esm/utils/crypto.js +198 -0
  239. package/lib/esm/utils/crypto.js.map +1 -0
  240. package/lib/esm/utils/ethersUtils.d.ts +14 -0
  241. package/lib/esm/utils/ethersUtils.js +17 -0
  242. package/lib/esm/utils/ethersUtils.js.map +1 -0
  243. package/lib/esm/utils/fragments.d.ts +465 -0
  244. package/lib/esm/utils/fragments.js +1330 -0
  245. package/lib/esm/utils/fragments.js.map +1 -0
  246. package/lib/esm/utils/help.d.ts +8 -0
  247. package/lib/esm/utils/help.js +51 -0
  248. package/lib/esm/utils/help.js.map +1 -0
  249. package/lib/esm/utils/index.d.ts +56 -0
  250. package/lib/esm/utils/index.js +40 -0
  251. package/lib/esm/utils/index.js.map +1 -0
  252. package/lib/esm/utils/interface.d.ts +381 -0
  253. package/lib/esm/utils/interface.js +1112 -0
  254. package/lib/esm/utils/interface.js.map +1 -0
  255. package/lib/esm/utils/message.d.ts +4 -0
  256. package/lib/esm/utils/message.js +32 -0
  257. package/lib/esm/utils/message.js.map +1 -0
  258. package/lib/esm/utils/transaction.d.ts +17 -0
  259. package/lib/esm/utils/transaction.js +669 -0
  260. package/lib/esm/utils/transaction.js.map +1 -0
  261. package/lib/esm/utils/typedData.d.ts +148 -0
  262. package/lib/esm/utils/typedData.js +493 -0
  263. package/lib/esm/utils/typedData.js.map +1 -0
  264. package/lib/esm/utils/validations.d.ts +22 -0
  265. package/lib/esm/utils/validations.js +108 -0
  266. package/lib/esm/utils/validations.js.map +1 -0
  267. package/package.json +110 -0
  268. package/src/index.ts +42 -0
  269. package/src/lib/TransactionBuilder/TransactionBuilder.ts +2272 -0
  270. package/src/lib/TransactionBuilder/helper.ts +139 -0
  271. package/src/lib/contract/index.ts +151 -0
  272. package/src/lib/contract/method.ts +336 -0
  273. package/src/lib/event.ts +248 -0
  274. package/src/lib/plugin.ts +102 -0
  275. package/src/lib/providers/HttpProvider.ts +66 -0
  276. package/src/lib/providers/index.ts +6 -0
  277. package/src/lib/trx.ts +1463 -0
  278. package/src/paramValidator/index.ts +136 -0
  279. package/src/protocol/core/Tron_pb.cjs +7524 -0
  280. package/src/protocol/core/contract/account_contract_pb.cjs +961 -0
  281. package/src/protocol/core/contract/asset_issue_contract_pb.cjs +2196 -0
  282. package/src/protocol/core/contract/balance_contract_pb.cjs +3826 -0
  283. package/src/protocol/core/contract/common_pb.cjs +34 -0
  284. package/src/protocol/core/contract/exchange_contract_pb.cjs +1268 -0
  285. package/src/protocol/core/contract/proposal_contract_pb.cjs +675 -0
  286. package/src/protocol/core/contract/smart_contract_pb.cjs +2960 -0
  287. package/src/protocol/core/contract/storage_contract_pb.cjs +848 -0
  288. package/src/protocol/core/contract/vote_asset_contract_pb.cjs +340 -0
  289. package/src/protocol/core/contract/witness_contract_pb.cjs +956 -0
  290. package/src/tronweb.ts +437 -0
  291. package/src/types/ABI.ts +82 -0
  292. package/src/types/APIResponse.ts +34 -0
  293. package/src/types/Contract.ts +352 -0
  294. package/src/types/Providers.ts +7 -0
  295. package/src/types/Transaction.ts +70 -0
  296. package/src/types/TransactionBuilder.ts +281 -0
  297. package/src/types/TronWeb.ts +23 -0
  298. package/src/types/Trx.ts +285 -0
  299. package/src/types/UtilsTypes.ts +25 -0
  300. package/src/types/index.ts +9 -0
  301. package/src/types/interface.d.ts +1 -0
  302. package/src/utils/abi.ts +257 -0
  303. package/src/utils/accounts.ts +60 -0
  304. package/src/utils/address.ts +89 -0
  305. package/src/utils/base58.ts +78 -0
  306. package/src/utils/base64.ts +200 -0
  307. package/src/utils/bytes.ts +68 -0
  308. package/src/utils/code.ts +172 -0
  309. package/src/utils/crypto.ts +264 -0
  310. package/src/utils/ethersUtils.ts +60 -0
  311. package/src/utils/fragments.ts +1738 -0
  312. package/src/utils/help.ts +59 -0
  313. package/src/utils/index.ts +42 -0
  314. package/src/utils/interface.ts +1362 -0
  315. package/src/utils/message.ts +38 -0
  316. package/src/utils/transaction.ts +991 -0
  317. package/src/utils/typedData.ts +688 -0
  318. package/src/utils/validations.ts +130 -0
@@ -0,0 +1,991 @@
1
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2
+ // @ts-nocheck
3
+ import google_protobuf_any_pb from '@tronweb3/google-protobuf/google/protobuf/any_pb.js';
4
+
5
+ import '../protocol/core/Tron_pb.cjs';
6
+ const { Transaction, Permission, Key } = globalThis.TronWebProto;
7
+
8
+ import '../protocol/core/contract/balance_contract_pb.cjs';
9
+ const {
10
+ TransferContract,
11
+ FreezeBalanceContract,
12
+ UnfreezeBalanceContract,
13
+ WithdrawBalanceContract,
14
+ FreezeBalanceV2Contract,
15
+ UnfreezeBalanceV2Contract,
16
+ WithdrawExpireUnfreezeContract,
17
+ DelegateResourceContract,
18
+ UnDelegateResourceContract,
19
+ } = globalThis.TronWebProto;
20
+
21
+ import '../protocol/core/contract/asset_issue_contract_pb.cjs';
22
+ const { TransferAssetContract, ParticipateAssetIssueContract, AssetIssueContract, UpdateAssetContract } = globalThis.TronWebProto;
23
+
24
+ import '../protocol/core/contract/smart_contract_pb.cjs';
25
+ const {
26
+ TriggerSmartContract,
27
+ ClearABIContract,
28
+ UpdateEnergyLimitContract,
29
+ UpdateSettingContract,
30
+ CreateSmartContract,
31
+ SmartContract,
32
+ } = globalThis.TronWebProto;
33
+
34
+ import '../protocol/core/contract/common_pb.cjs';
35
+ const { ResourceCode } = globalThis.TronWebProto;
36
+
37
+ import '../protocol/core/contract/witness_contract_pb.cjs';
38
+ const { WitnessCreateContract, VoteWitnessContract } = globalThis.TronWebProto;
39
+
40
+ import '../protocol/core/contract/storage_contract_pb.cjs';
41
+ const { UpdateBrokerageContract } = globalThis.TronWebProto;
42
+
43
+ import '../protocol/core/contract/account_contract_pb.cjs';
44
+ const { AccountCreateContract, AccountUpdateContract, SetAccountIdContract, AccountPermissionUpdateContract } =
45
+ globalThis.TronWebProto;
46
+
47
+ import '../protocol/core/contract/proposal_contract_pb.cjs';
48
+ const { ProposalCreateContract, ProposalDeleteContract, ProposalApproveContract } = globalThis.TronWebProto;
49
+
50
+ import '../protocol/core/contract/exchange_contract_pb.cjs';
51
+ const { ExchangeCreateContract, ExchangeInjectContract, ExchangeWithdrawContract, ExchangeTransactionContract } =
52
+ globalThis.TronWebProto;
53
+
54
+ import { byteArray2hexStr } from './bytes.js';
55
+ import { sha256, keccak256 } from './ethersUtils.js';
56
+ import TronWeb from '../tronweb.js';
57
+ import { isHex } from './validations.js';
58
+
59
+ const fromHexString = (hexString: string) => {
60
+ if (!hexString || hexString.length === 0) return new Uint8Array([]);
61
+ return new Uint8Array(
62
+ TronWeb.address
63
+ .toHex(hexString)
64
+ .match(/.{1,2}/g)
65
+ .map((byte: string) => parseInt(byte, 16))
66
+ );
67
+ };
68
+
69
+ const stringToUint8Array = (hexString: string) => {
70
+ if (!hexString || hexString.length === 0) return new Uint8Array([]);
71
+ return new Uint8Array(
72
+ (isHex(hexString) ? hexString : TronWeb.toHex(hexString))
73
+ .replace(/^0x/, '')
74
+ .match(/.{1,2}/g)
75
+ .map((byte: string) => parseInt(byte, 16))
76
+ );
77
+ };
78
+
79
+ const flexToUint8Array = (str: string, visible: boolean) => {
80
+ if (!visible) return stringToUint8Array(str.replace(/^0x/, ''));
81
+ return stringToUint8Array(TronWeb.fromUtf8(str).replace(/^0x/, ''));
82
+ };
83
+
84
+ const sha3 = (string: string, prefix = true) => {
85
+ return (prefix ? '0x' : '') + keccak256(Buffer.from(string, 'utf-8')).toString().substring(2);
86
+ };
87
+
88
+ const buildCommonTransaction = (message, contractType, typeName, permissionId) => {
89
+ const anyValue = new google_protobuf_any_pb.Any();
90
+ anyValue.pack(message.serializeBinary(), 'protocol.' + typeName);
91
+ const contract = new Transaction.Contract();
92
+ contract.setType(contractType);
93
+ contract.setParameter(anyValue);
94
+ if (permissionId) {
95
+ contract.setPermissionId(permissionId);
96
+ }
97
+ const raw = new Transaction.raw();
98
+ raw.addContract(contract);
99
+ const transaction = new Transaction();
100
+ transaction.setRawData(raw);
101
+ return transaction;
102
+ };
103
+
104
+ // wallet/createtransaction for sendTrx
105
+ const buildTransferContract = (value, options) => {
106
+ const { to_address, owner_address, amount } = value;
107
+ const transferContract = new TransferContract();
108
+ transferContract.setToAddress(fromHexString(to_address));
109
+ transferContract.setOwnerAddress(fromHexString(owner_address));
110
+ transferContract.setAmount(amount);
111
+ return buildCommonTransaction(
112
+ transferContract,
113
+ Transaction.Contract.ContractType.TRANSFERCONTRACT,
114
+ 'TransferContract',
115
+ options.Permission_id
116
+ );
117
+ };
118
+
119
+ // wallet/transferasset for sendToken
120
+ const buildTransferAssetContract = (value, options) => {
121
+ const { to_address, owner_address, amount, asset_name } = value;
122
+ const transferContract = new TransferAssetContract();
123
+ transferContract.setToAddress(fromHexString(to_address));
124
+ transferContract.setOwnerAddress(fromHexString(owner_address));
125
+ transferContract.setAssetName(flexToUint8Array(asset_name, options.visible));
126
+ transferContract.setAmount(amount);
127
+ return buildCommonTransaction(
128
+ transferContract,
129
+ Transaction.Contract.ContractType.TRANSFERASSETCONTRACT,
130
+ 'TransferAssetContract',
131
+ options.Permission_id
132
+ );
133
+ };
134
+
135
+ // wallet/participateassetissue for purchaseToken
136
+ const buildParticipateAssetIssueContract = (value, options) => {
137
+ const pbObj = new ParticipateAssetIssueContract();
138
+ pbObj.setToAddress(fromHexString(value.to_address));
139
+ pbObj.setOwnerAddress(fromHexString(value.owner_address));
140
+ pbObj.setAssetName(flexToUint8Array(value.asset_name, options.visible));
141
+ pbObj.setAmount(value.amount);
142
+
143
+ return buildCommonTransaction(
144
+ pbObj,
145
+ Transaction.Contract.ContractType.PARTICIPATEASSETISSUECONTRACT,
146
+ 'ParticipateAssetIssueContract',
147
+ options.Permission_id
148
+ );
149
+ };
150
+
151
+ const buildTriggerSmartContract = (value, options) => {
152
+ const triggerSmartContract = new TriggerSmartContract();
153
+ const {
154
+ owner_address,
155
+ contract_address,
156
+ parameter = '',
157
+ function_selector,
158
+ call_value,
159
+ call_token_value,
160
+ token_id,
161
+ data,
162
+ } = value;
163
+ triggerSmartContract.setOwnerAddress(fromHexString(owner_address));
164
+ triggerSmartContract.setContractAddress(fromHexString(contract_address));
165
+ triggerSmartContract.setCallValue(call_value);
166
+ if (data) {
167
+ triggerSmartContract.setData(stringToUint8Array(data));
168
+ } else if (function_selector) {
169
+ const contractData = sha3(function_selector).substring(2, 10) + parameter;
170
+ triggerSmartContract.setData(stringToUint8Array(contractData));
171
+ }
172
+
173
+ if (token_id) {
174
+ triggerSmartContract.setTokenId(token_id);
175
+ }
176
+ if (call_token_value) {
177
+ triggerSmartContract.setCallTokenValue(call_token_value);
178
+ }
179
+
180
+ return buildCommonTransaction(
181
+ triggerSmartContract,
182
+ Transaction.Contract.ContractType.TRIGGERSMARTCONTRACT,
183
+ 'TriggerSmartContract',
184
+ options.Permission_id
185
+ );
186
+ };
187
+
188
+ const buildFreezeBalanceContract = (value, options) => {
189
+ const freezeBalanceContract = new FreezeBalanceContract();
190
+ const { owner_address, frozen_balance, frozen_duration, resource, receiver_address } = value;
191
+ freezeBalanceContract.setOwnerAddress(fromHexString(owner_address));
192
+ freezeBalanceContract.setFrozenBalance(frozen_balance);
193
+ freezeBalanceContract.setFrozenDuration(frozen_duration);
194
+ if (resource) {
195
+ freezeBalanceContract.setResource(ResourceCode[resource]);
196
+ }
197
+ if (receiver_address) {
198
+ freezeBalanceContract.setReceiverAddress(fromHexString(receiver_address));
199
+ }
200
+
201
+ return buildCommonTransaction(
202
+ freezeBalanceContract,
203
+ Transaction.Contract.ContractType.FREEZEBALANCECONTRACT,
204
+ 'FreezeBalanceContract',
205
+ options.Permission_id
206
+ );
207
+ };
208
+
209
+ const buildUnfreezeBalanceContract = (value, options) => {
210
+ const unfreezeBalanceContract = new UnfreezeBalanceContract();
211
+ const { owner_address, resource, receiver_address } = value;
212
+ unfreezeBalanceContract.setOwnerAddress(fromHexString(owner_address));
213
+ if (resource) {
214
+ unfreezeBalanceContract.setResource(ResourceCode[resource]);
215
+ }
216
+ if (receiver_address) {
217
+ unfreezeBalanceContract.setReceiverAddress(fromHexString(receiver_address));
218
+ }
219
+
220
+ return buildCommonTransaction(
221
+ unfreezeBalanceContract,
222
+ Transaction.Contract.ContractType.UNFREEZEBALANCECONTRACT,
223
+ 'UnfreezeBalanceContract',
224
+ options.Permission_id
225
+ );
226
+ };
227
+
228
+ const buildWithdrawBalanceContract = (value, options) => {
229
+ const withdrawbalanceContract = new WithdrawBalanceContract();
230
+ const { owner_address } = value;
231
+ withdrawbalanceContract.setOwnerAddress(fromHexString(owner_address));
232
+
233
+ return buildCommonTransaction(
234
+ withdrawbalanceContract,
235
+ Transaction.Contract.ContractType.WITHDRAWBALANCECONTRACT,
236
+ 'WithdrawBalanceContract',
237
+ options.Permission_id
238
+ );
239
+ };
240
+
241
+ const buildFreezeBalanceV2Contract = (value, options) => {
242
+ const freezeBalanceV2Contract = new FreezeBalanceV2Contract();
243
+ const { owner_address, frozen_balance, resource } = value;
244
+ freezeBalanceV2Contract.setOwnerAddress(fromHexString(owner_address));
245
+ freezeBalanceV2Contract.setFrozenBalance(frozen_balance);
246
+ freezeBalanceV2Contract.setResource(ResourceCode[resource]);
247
+
248
+ return buildCommonTransaction(
249
+ freezeBalanceV2Contract,
250
+ Transaction.Contract.ContractType.FREEZEBALANCEV2CONTRACT,
251
+ 'FreezeBalanceV2Contract',
252
+ options.Permission_id
253
+ );
254
+ };
255
+
256
+ const buildCancelFreezeBalanceV2Contract = (value, options) => {
257
+ const withdrawExpireUnfreeze = new WithdrawExpireUnfreezeContract();
258
+ const { owner_address } = value;
259
+ withdrawExpireUnfreeze.setOwnerAddress(fromHexString(owner_address));
260
+
261
+ return buildCommonTransaction(
262
+ withdrawExpireUnfreeze,
263
+ Transaction.Contract.ContractType.CANCELALLUNFREEZEV2CONTRACT,
264
+ 'CancelAllUnfreezeV2Contract',
265
+ options.Permission_id
266
+ );
267
+ };
268
+
269
+ const buildUnfreezeBalanceV2Contract = (value, options) => {
270
+ const unfreezeBalanceV2Contract = new UnfreezeBalanceV2Contract();
271
+ const { owner_address, unfreeze_balance, resource } = value;
272
+ unfreezeBalanceV2Contract.setOwnerAddress(fromHexString(owner_address));
273
+ unfreezeBalanceV2Contract.setUnfreezeBalance(unfreeze_balance);
274
+ unfreezeBalanceV2Contract.setResource(ResourceCode[resource]);
275
+
276
+ return buildCommonTransaction(
277
+ unfreezeBalanceV2Contract,
278
+ Transaction.Contract.ContractType.UNFREEZEBALANCEV2CONTRACT,
279
+ 'UnfreezeBalanceV2Contract',
280
+ options.Permission_id
281
+ );
282
+ };
283
+
284
+ const buildDelegateResourceContract = (value, options) => {
285
+ const delegateResourceContract = new DelegateResourceContract();
286
+ const { owner_address, receiver_address, balance, resource, lock = false, lock_period } = value;
287
+ delegateResourceContract.setOwnerAddress(fromHexString(owner_address));
288
+ delegateResourceContract.setBalance(balance);
289
+ delegateResourceContract.setResource(ResourceCode[resource]);
290
+ delegateResourceContract.setLock(lock);
291
+ delegateResourceContract.setLockPeriod(lock_period);
292
+ delegateResourceContract.setReceiverAddress(fromHexString(receiver_address));
293
+
294
+ return buildCommonTransaction(
295
+ delegateResourceContract,
296
+ Transaction.Contract.ContractType.DELEGATERESOURCECONTRACT,
297
+ 'DelegateResourceContract',
298
+ options.Permission_id
299
+ );
300
+ };
301
+
302
+ const buildUnDelegateResourceContract = (value, options) => {
303
+ const unDelegateResourceContract = new UnDelegateResourceContract();
304
+ const { owner_address, receiver_address, balance, resource } = value;
305
+ unDelegateResourceContract.setOwnerAddress(fromHexString(owner_address));
306
+ unDelegateResourceContract.setBalance(balance);
307
+ unDelegateResourceContract.setResource(ResourceCode[resource]);
308
+ unDelegateResourceContract.setReceiverAddress(fromHexString(receiver_address));
309
+
310
+ return buildCommonTransaction(
311
+ unDelegateResourceContract,
312
+ Transaction.Contract.ContractType.UNDELEGATERESOURCECONTRACT,
313
+ 'UnDelegateResourceContract',
314
+ options.Permission_id
315
+ );
316
+ };
317
+
318
+ const buildWithdrawExpireUnfreezeContract = (value, options) => {
319
+ const withdrawExpireUnfreeze = new WithdrawExpireUnfreezeContract();
320
+ const { owner_address } = value;
321
+ withdrawExpireUnfreeze.setOwnerAddress(fromHexString(owner_address));
322
+
323
+ return buildCommonTransaction(
324
+ withdrawExpireUnfreeze,
325
+ Transaction.Contract.ContractType.WITHDRAWEXPIREUNFREEZECONTRACT,
326
+ 'WithdrawExpireUnfreezeContract',
327
+ options.Permission_id
328
+ );
329
+ };
330
+
331
+ // applyForSR
332
+ const buildCreateWitness = (value, options) => {
333
+ const createWitnessContract = new WitnessCreateContract();
334
+ const { owner_address, url } = value;
335
+ createWitnessContract.setOwnerAddress(fromHexString(owner_address));
336
+ createWitnessContract.setUrl(stringToUint8Array(url.replace(/^0x/, '')));
337
+ return buildCommonTransaction(
338
+ createWitnessContract,
339
+ Transaction.Contract.ContractType.WITNESSCREATECONTRACT,
340
+ 'WitnessCreateContract',
341
+ options.Permission_id
342
+ );
343
+ };
344
+
345
+ // vote
346
+ const buildVoteWitnessAccount = (value, options) => {
347
+ const voteWitnessContract = new VoteWitnessContract();
348
+ const { owner_address, votes } = value;
349
+ voteWitnessContract.setOwnerAddress(fromHexString(owner_address));
350
+
351
+ votes.forEach((voteItem) => {
352
+ const vote = new VoteWitnessContract.Vote();
353
+ const { vote_address, vote_count } = voteItem;
354
+ vote.setVoteAddress(fromHexString(vote_address));
355
+ const numberOfVotes = parseInt(vote_count);
356
+ vote.setVoteCount(numberOfVotes);
357
+ voteWitnessContract.addVotes(vote);
358
+ });
359
+
360
+ return buildCommonTransaction(
361
+ voteWitnessContract,
362
+ Transaction.Contract.ContractType.VOTEWITNESSCONTRACT,
363
+ 'VoteWitnessContract',
364
+ options.Permission_id
365
+ );
366
+ };
367
+
368
+ const buildCreateSmartContract = (value, options) => {
369
+ const params = value?.new_contract
370
+ ? {
371
+ ...{
372
+ owner_address: value.owner_address,
373
+ call_token_value: value.call_token_value,
374
+ token_id: value.token_id,
375
+ },
376
+ ...value.new_contract,
377
+ }
378
+ : value;
379
+ const {
380
+ owner_address,
381
+ consume_user_resource_percent,
382
+ origin_energy_limit,
383
+ abi,
384
+ bytecode = '',
385
+ parameter = '',
386
+ call_value,
387
+ call_token_value,
388
+ token_id,
389
+ name: contracName,
390
+ } = params;
391
+ let { origin_address } = params;
392
+
393
+ const createSmartContract = new CreateSmartContract();
394
+ createSmartContract.setOwnerAddress(fromHexString(owner_address));
395
+ if (token_id) {
396
+ createSmartContract.setTokenId(token_id);
397
+ }
398
+ if (call_token_value) {
399
+ createSmartContract.setCallTokenValue(call_token_value);
400
+ }
401
+ const smartContractBuilder = new SmartContract();
402
+
403
+ if (abi) {
404
+ let abiJson;
405
+ if (typeof abi === 'string') {
406
+ abiJson = JSON.parse(abi);
407
+ } else {
408
+ abiJson = abi?.entrys || []; // abi could be an empty object if origin abi is `[]`;
409
+ }
410
+ const abiBuilder = new SmartContract.ABI();
411
+
412
+ const buildEntryParam = (data) => {
413
+ const param = new SmartContract.ABI.Entry.Param();
414
+ const { indexed, name, type } = data;
415
+ if (indexed === true) {
416
+ param.setIndexed(true);
417
+ }
418
+ param.setName(name);
419
+ param.setType(type);
420
+ return param;
421
+ };
422
+ const entryBuilders = abiJson.map((entry) => {
423
+ const { anonymous, constant, name, inputs, outputs, type, payable, stateMutability } = entry;
424
+ const entryBuilder = new SmartContract.ABI.Entry();
425
+ entryBuilder.setAnonymous(anonymous);
426
+ entryBuilder.setConstant(constant);
427
+ entryBuilder.setName(name);
428
+ if (inputs) {
429
+ entryBuilder.setInputsList(inputs.map((input) => buildEntryParam(input)));
430
+ }
431
+ if (outputs) {
432
+ entryBuilder.setOutputsList(outputs.map((output) => buildEntryParam(output)));
433
+ }
434
+ if (type) {
435
+ entryBuilder.setType(SmartContract.ABI.Entry.EntryType[type.toUpperCase()]);
436
+ }
437
+
438
+ entryBuilder.setPayable(payable);
439
+ if (stateMutability) {
440
+ entryBuilder.setStatemutability(SmartContract.ABI.Entry.StateMutabilityType[stateMutability.toUpperCase()]);
441
+ }
442
+
443
+ return entryBuilder;
444
+ });
445
+ abiBuilder.setEntrysList(entryBuilders);
446
+ smartContractBuilder.setAbi(abiBuilder);
447
+ }
448
+
449
+ if (call_value) {
450
+ smartContractBuilder.setCallValue(call_value);
451
+ }
452
+
453
+ smartContractBuilder.setConsumeUserResourcePercent(consume_user_resource_percent);
454
+ smartContractBuilder.setOriginEnergyLimit(origin_energy_limit);
455
+
456
+ if (!origin_address) {
457
+ origin_address = owner_address;
458
+ }
459
+ smartContractBuilder.setOriginAddress(fromHexString(origin_address));
460
+
461
+ if (bytecode) {
462
+ const bytecodeParameter = bytecode.replace(/^0x/, '') + parameter.replace(/^0x/, '');
463
+ smartContractBuilder.setBytecode(stringToUint8Array(bytecodeParameter));
464
+ }
465
+
466
+ smartContractBuilder.setName(contracName);
467
+
468
+ createSmartContract.setNewContract(smartContractBuilder);
469
+
470
+ return buildCommonTransaction(
471
+ createSmartContract,
472
+ Transaction.Contract.ContractType.CREATESMARTCONTRACT,
473
+ 'CreateSmartContract',
474
+ options.Permission_id
475
+ );
476
+ };
477
+
478
+ const buildClearABIContract = (value, options) => {
479
+ const { contract_address, owner_address } = value;
480
+ const clearABIContract = new ClearABIContract();
481
+ clearABIContract.setOwnerAddress(fromHexString(owner_address));
482
+ clearABIContract.setContractAddress(fromHexString(contract_address));
483
+
484
+ return buildCommonTransaction(
485
+ clearABIContract,
486
+ Transaction.Contract.ContractType.CLEARABICONTRACT,
487
+ 'ClearABIContract',
488
+ options.Permission_id
489
+ );
490
+ };
491
+
492
+ // updateBrokerage
493
+ const buildUpdateBrokerageContract = (value, options) => {
494
+ const { brokerage, owner_address } = value;
495
+ const updateBrokerageContract = new UpdateBrokerageContract();
496
+ updateBrokerageContract.setOwnerAddress(fromHexString(owner_address));
497
+ updateBrokerageContract.setBrokerage(brokerage);
498
+
499
+ return buildCommonTransaction(
500
+ updateBrokerageContract,
501
+ Transaction.Contract.ContractType.UPDATEBROKERAGECONTRACT,
502
+ 'UpdateBrokerageContract',
503
+ options.Permission_id
504
+ );
505
+ };
506
+
507
+ // createToken
508
+ const buildAssetIssueContract = (value, options) => {
509
+ const {
510
+ owner_address,
511
+ name,
512
+ abbr,
513
+ description,
514
+ url,
515
+ total_supply,
516
+ trx_num,
517
+ num,
518
+ start_time,
519
+ end_time,
520
+ precision,
521
+ free_asset_net_limit,
522
+ public_free_asset_net_limit,
523
+ public_free_asset_net_usage = 0,
524
+ public_latest_free_net_time = 0,
525
+ vote_score = 0,
526
+ frozen_supply,
527
+ } = value;
528
+ const assetIssueContract = new AssetIssueContract();
529
+ assetIssueContract.setOwnerAddress(fromHexString(owner_address));
530
+ if (name) {
531
+ assetIssueContract.setName(stringToUint8Array(name.replace(/^0x/, '')));
532
+ }
533
+ if (abbr) {
534
+ assetIssueContract.setAbbr(stringToUint8Array(abbr.replace(/^0x/, '')));
535
+ }
536
+ assetIssueContract.setTotalSupply(total_supply);
537
+ assetIssueContract.setNum(num);
538
+ assetIssueContract.setEndTime(end_time);
539
+ assetIssueContract.setStartTime(start_time);
540
+ assetIssueContract.setTrxNum(trx_num);
541
+ assetIssueContract.setVoteScore(vote_score);
542
+ if (precision) {
543
+ assetIssueContract.setPrecision(precision);
544
+ }
545
+ if (public_latest_free_net_time) {
546
+ assetIssueContract.setPublicLatestFreeNetTime(public_latest_free_net_time);
547
+ }
548
+ if (description) {
549
+ assetIssueContract.setDescription(stringToUint8Array(description.replace(/^0x/, '')));
550
+ }
551
+ if (url) {
552
+ assetIssueContract.setUrl(stringToUint8Array(url.replace(/^0x/, '')));
553
+ }
554
+
555
+ assetIssueContract.setPublicFreeAssetNetUsage(public_free_asset_net_usage);
556
+ assetIssueContract.setFreeAssetNetLimit(free_asset_net_limit);
557
+ assetIssueContract.setPublicFreeAssetNetLimit(public_free_asset_net_limit);
558
+ if (frozen_supply) {
559
+ const frozenSupplyContract = new AssetIssueContract.FrozenSupply();
560
+ frozenSupplyContract.setFrozenAmount(frozen_supply.length ? frozen_supply[0].frozen_amount : frozen_supply.frozen_amount);
561
+ frozenSupplyContract.setFrozenDays(frozen_supply.length ? frozen_supply[0].frozen_days : frozen_supply.frozen_days);
562
+ assetIssueContract.addFrozenSupply(frozenSupplyContract);
563
+ }
564
+ return buildCommonTransaction(
565
+ assetIssueContract,
566
+ Transaction.Contract.ContractType.ASSETISSUECONTRACT,
567
+ 'AssetIssueContract',
568
+ options.Permission_id
569
+ );
570
+ };
571
+
572
+ //createAccount
573
+ const buildAccountCreateContract = (value, options) => {
574
+ const accountCreateContract = new AccountCreateContract();
575
+ const { account_address, owner_address } = value;
576
+ accountCreateContract.setOwnerAddress(fromHexString(owner_address));
577
+ accountCreateContract.setAccountAddress(fromHexString(account_address.replace(/^0x/, '')));
578
+ return buildCommonTransaction(
579
+ accountCreateContract,
580
+ Transaction.Contract.ContractType.ACCOUNTCREATECONTRACT,
581
+ 'AccountCreateContract',
582
+ options.Permission_id
583
+ );
584
+ };
585
+
586
+ // updateAccount
587
+ const buildAccountUpdateContract = (value, options) => {
588
+ const accountUpdateContract = new AccountUpdateContract();
589
+ const { account_name, owner_address } = value;
590
+ accountUpdateContract.setOwnerAddress(fromHexString(owner_address));
591
+ accountUpdateContract.setAccountName(stringToUint8Array(account_name.replace(/^0x/, '')));
592
+ return buildCommonTransaction(
593
+ accountUpdateContract,
594
+ Transaction.Contract.ContractType.ACCOUNTUPDATECONTRACT,
595
+ 'AccountUpdateContract',
596
+ options.Permission_id
597
+ );
598
+ };
599
+
600
+ // setAccountId
601
+ const buildSetAccountIdContract = (value, options) => {
602
+ const setAccountIdContract = new SetAccountIdContract();
603
+ const { account_id, owner_address } = value;
604
+ setAccountIdContract.setOwnerAddress(fromHexString(owner_address));
605
+ setAccountIdContract.setAccountId(stringToUint8Array(account_id.replace(/^0x/, '')));
606
+ return buildCommonTransaction(
607
+ setAccountIdContract,
608
+ Transaction.Contract.ContractType.SETACCOUNTIDCONTRACT,
609
+ 'SetAccountIdContract',
610
+ options.Permission_id
611
+ );
612
+ };
613
+
614
+ const buildProposalCreateContract = (value, options) => {
615
+ const proposalCreateContract = new ProposalCreateContract();
616
+ const { owner_address, parameters } = value;
617
+ proposalCreateContract.setOwnerAddress(fromHexString(owner_address));
618
+ parameters.forEach((parameter) => {
619
+ proposalCreateContract.getParametersMap().set(parameter.key, parameter.value);
620
+ });
621
+ return buildCommonTransaction(
622
+ proposalCreateContract,
623
+ Transaction.Contract.ContractType.PROPOSALCREATECONTRACT,
624
+ 'ProposalCreateContract',
625
+ options.Permission_id
626
+ );
627
+ };
628
+
629
+ const buildProposalDeleteContract = (value, options) => {
630
+ const proposalDeleteContract = new ProposalDeleteContract();
631
+ const { owner_address, proposal_id } = value;
632
+ proposalDeleteContract.setOwnerAddress(fromHexString(owner_address));
633
+ proposalDeleteContract.setProposalId(proposal_id);
634
+ return buildCommonTransaction(
635
+ proposalDeleteContract,
636
+ Transaction.Contract.ContractType.PROPOSALDELETECONTRACT,
637
+ 'ProposalDeleteContract',
638
+ options.Permission_id
639
+ );
640
+ };
641
+
642
+ const buildVoteProposalContract = (value, options) => {
643
+ const proposalVoteContract = new ProposalApproveContract();
644
+ const { owner_address, proposal_id, is_add_approval } = value;
645
+ proposalVoteContract.setOwnerAddress(fromHexString(owner_address));
646
+ proposalVoteContract.setProposalId(proposal_id);
647
+ proposalVoteContract.setIsAddApproval(is_add_approval);
648
+ return buildCommonTransaction(
649
+ proposalVoteContract,
650
+ Transaction.Contract.ContractType.PROPOSALAPPROVECONTRACT,
651
+ 'ProposalApproveContract',
652
+ options.Permission_id
653
+ );
654
+ };
655
+
656
+ const buildExchangeCreateContract = (value, options) => {
657
+ const exchangeCreateContract = new ExchangeCreateContract();
658
+ const { owner_address, first_token_id, first_token_balance, second_token_id, second_token_balance } = value;
659
+ exchangeCreateContract.setOwnerAddress(fromHexString(owner_address));
660
+ exchangeCreateContract.setFirstTokenId(flexToUint8Array(first_token_id, options.visible));
661
+ exchangeCreateContract.setFirstTokenBalance(first_token_balance);
662
+ exchangeCreateContract.setSecondTokenId(flexToUint8Array(second_token_id, options.visible));
663
+ exchangeCreateContract.setSecondTokenBalance(second_token_balance);
664
+ return buildCommonTransaction(
665
+ exchangeCreateContract,
666
+ Transaction.Contract.ContractType.EXCHANGECREATECONTRACT,
667
+ 'ExchangeCreateContract',
668
+ options.Permission_id
669
+ );
670
+ };
671
+
672
+ const buildExchangeInjectContract = (value, options) => {
673
+ const exchangeInjectContract = new ExchangeInjectContract();
674
+ const { owner_address, exchange_id, token_id, quant } = value;
675
+ exchangeInjectContract.setOwnerAddress(fromHexString(owner_address));
676
+ exchangeInjectContract.setExchangeId(exchange_id);
677
+ exchangeInjectContract.setTokenId(flexToUint8Array(token_id, options.visible));
678
+ exchangeInjectContract.setQuant(quant);
679
+ return buildCommonTransaction(
680
+ exchangeInjectContract,
681
+ Transaction.Contract.ContractType.EXCHANGEINJECTCONTRACT,
682
+ 'ExchangeInjectContract',
683
+ options.Permission_id
684
+ );
685
+ };
686
+
687
+ const buildExchangeWithdrawContract = (value, options) => {
688
+ const exchangeWithdrawContract = new ExchangeWithdrawContract();
689
+ const { owner_address, exchange_id, token_id, quant } = value;
690
+ exchangeWithdrawContract.setOwnerAddress(fromHexString(owner_address));
691
+ exchangeWithdrawContract.setExchangeId(exchange_id);
692
+ exchangeWithdrawContract.setTokenId(flexToUint8Array(token_id, options.visible));
693
+ exchangeWithdrawContract.setQuant(quant);
694
+ return buildCommonTransaction(
695
+ exchangeWithdrawContract,
696
+ Transaction.Contract.ContractType.EXCHANGEWITHDRAWCONTRACT,
697
+ 'ExchangeWithdrawContract',
698
+ options.Permission_id
699
+ );
700
+ };
701
+
702
+ const buildExchangeTransactionContract = (value, options) => {
703
+ const exchangeTransactionContract = new ExchangeTransactionContract();
704
+ const { owner_address, exchange_id, token_id, quant, expected } = value;
705
+ exchangeTransactionContract.setOwnerAddress(fromHexString(owner_address));
706
+ exchangeTransactionContract.setExchangeId(exchange_id);
707
+ exchangeTransactionContract.setTokenId(flexToUint8Array(token_id, options.visible));
708
+ exchangeTransactionContract.setQuant(quant);
709
+ exchangeTransactionContract.setExpected(expected);
710
+ return buildCommonTransaction(
711
+ exchangeTransactionContract,
712
+ Transaction.Contract.ContractType.EXCHANGETRANSACTIONCONTRACT,
713
+ 'ExchangeTransactionContract',
714
+ options.Permission_id
715
+ );
716
+ };
717
+
718
+ const buildUpdateSettingContract = (value, options) => {
719
+ const updateSettingContract = new UpdateSettingContract();
720
+ const { owner_address, contract_address, consume_user_resource_percent } = value;
721
+ updateSettingContract.setOwnerAddress(fromHexString(owner_address));
722
+ updateSettingContract.setContractAddress(fromHexString(contract_address));
723
+ updateSettingContract.setConsumeUserResourcePercent(consume_user_resource_percent);
724
+ return buildCommonTransaction(
725
+ updateSettingContract,
726
+ Transaction.Contract.ContractType.UPDATESETTINGCONTRACT,
727
+ 'UpdateSettingContract',
728
+ options.Permission_id
729
+ );
730
+ };
731
+
732
+ const buildUpdateEnergyLimitContract = (value, options) => {
733
+ const updateEnergyLimitContract = new UpdateEnergyLimitContract();
734
+ const { owner_address, contract_address, origin_energy_limit } = value;
735
+ updateEnergyLimitContract.setOwnerAddress(fromHexString(owner_address));
736
+ updateEnergyLimitContract.setContractAddress(fromHexString(contract_address));
737
+ updateEnergyLimitContract.setOriginEnergyLimit(origin_energy_limit);
738
+ return buildCommonTransaction(
739
+ updateEnergyLimitContract,
740
+ Transaction.Contract.ContractType.UPDATEENERGYLIMITCONTRACT,
741
+ 'UpdateEnergyLimitContract',
742
+ options.Permission_id
743
+ );
744
+ };
745
+
746
+ const buildAccountPermissionUpdateContract = (value, options) => {
747
+ const accountPermissionUpdateContract = new AccountPermissionUpdateContract();
748
+ const { owner_address, owner, witness, actives } = value;
749
+ accountPermissionUpdateContract.setOwnerAddress(fromHexString(owner_address));
750
+ const getType = (type) => {
751
+ // no type when permission_name is owner
752
+ if (isNaN(type)) return type === 'Active' ? 2 : type === 'Witness' ? 1 : 0;
753
+ return type;
754
+ };
755
+ const buildPermission = (data) => {
756
+ // no type when permission_name is owner
757
+ const permission = new Permission();
758
+ const { type, id, permission_name, threshold, parentId, operations, keys } = data;
759
+ permission.setType(getType(type));
760
+ permission.setId(id);
761
+ permission.setPermissionName(permission_name);
762
+ permission.setThreshold(threshold);
763
+ if (parentId) {
764
+ permission.setParentId(parentId);
765
+ }
766
+ if (operations) {
767
+ permission.setOperations(stringToUint8Array(operations));
768
+ }
769
+ if (keys) {
770
+ permission.setKeysList(
771
+ keys.map((key) => {
772
+ const keyBuilder = new Key();
773
+ keyBuilder.setAddress(fromHexString(key.address));
774
+ keyBuilder.setWeight(key.weight);
775
+ return keyBuilder;
776
+ })
777
+ );
778
+ }
779
+ return permission;
780
+ };
781
+ if (owner) {
782
+ accountPermissionUpdateContract.setOwner(buildPermission(owner));
783
+ }
784
+ if (witness) {
785
+ accountPermissionUpdateContract.setWitness(buildPermission(witness));
786
+ }
787
+ if (actives) {
788
+ if (Array.isArray(actives)) {
789
+ accountPermissionUpdateContract.setActivesList(actives.map((active) => buildPermission(active)));
790
+ } else {
791
+ accountPermissionUpdateContract.setActivesList([buildPermission(actives)]);
792
+ }
793
+ }
794
+ return buildCommonTransaction(
795
+ accountPermissionUpdateContract,
796
+ Transaction.Contract.ContractType.ACCOUNTPERMISSIONUPDATECONTRACT,
797
+ 'AccountPermissionUpdateContract',
798
+ options.Permission_id
799
+ );
800
+ };
801
+
802
+ const buildUpdateAssetContract = (value, options) => {
803
+ const updateAssetContract = new UpdateAssetContract();
804
+ const { owner_address, description, url, new_limit, new_public_limit } = value;
805
+ updateAssetContract.setOwnerAddress(fromHexString(owner_address));
806
+ if (description) {
807
+ updateAssetContract.setDescription(stringToUint8Array(description.replace(/^0x/, '')));
808
+ }
809
+ if (url) {
810
+ updateAssetContract.setUrl(stringToUint8Array(url.replace(/^0x/, '')));
811
+ }
812
+ if (new_limit) {
813
+ updateAssetContract.setNewLimit(new_limit);
814
+ }
815
+ if (new_public_limit) {
816
+ updateAssetContract.setNewPublicLimit(new_public_limit);
817
+ }
818
+ return buildCommonTransaction(
819
+ updateAssetContract,
820
+ Transaction.Contract.ContractType.UPDATEASSETCONTRACT,
821
+ 'UpdateAssetContract',
822
+ options.Permission_id
823
+ );
824
+ };
825
+
826
+ const contractJsonToProtobuf = (contract, value, options) => {
827
+ switch (contract.type) {
828
+ case 'TransferContract':
829
+ return buildTransferContract(value, options);
830
+ case 'TransferAssetContract':
831
+ return buildTransferAssetContract(value, options);
832
+ case 'ParticipateAssetIssueContract':
833
+ return buildParticipateAssetIssueContract(value, options);
834
+ case 'TriggerSmartContract':
835
+ return buildTriggerSmartContract(value, options);
836
+ case 'FreezeBalanceContract':
837
+ return buildFreezeBalanceContract(value, options);
838
+ case 'UnfreezeBalanceContract':
839
+ return buildUnfreezeBalanceContract(value, options);
840
+ case 'WithdrawBalanceContract':
841
+ return buildWithdrawBalanceContract(value, options);
842
+ case 'FreezeBalanceV2Contract':
843
+ return buildFreezeBalanceV2Contract(value, options);
844
+ case 'CancelAllUnfreezeV2Contract':
845
+ return buildCancelFreezeBalanceV2Contract(value, options);
846
+ case 'UnfreezeBalanceV2Contract':
847
+ return buildUnfreezeBalanceV2Contract(value, options);
848
+ case 'DelegateResourceContract':
849
+ return buildDelegateResourceContract(value, options);
850
+ case 'UnDelegateResourceContract':
851
+ return buildUnDelegateResourceContract(value, options);
852
+ case 'WithdrawExpireUnfreezeContract':
853
+ return buildWithdrawExpireUnfreezeContract(value, options);
854
+ case 'WitnessCreateContract':
855
+ return buildCreateWitness(value, options);
856
+ case 'VoteWitnessContract':
857
+ return buildVoteWitnessAccount(value, options);
858
+ case 'CreateSmartContract':
859
+ return buildCreateSmartContract(value, options);
860
+ case 'ClearABIContract':
861
+ return buildClearABIContract(value, options);
862
+ case 'UpdateBrokerageContract':
863
+ return buildUpdateBrokerageContract(value, options);
864
+ case 'AssetIssueContract':
865
+ return buildAssetIssueContract(value, options);
866
+ case 'AccountCreateContract':
867
+ return buildAccountCreateContract(value, options);
868
+ case 'AccountUpdateContract':
869
+ return buildAccountUpdateContract(value, options);
870
+ case 'SetAccountIdContract':
871
+ return buildSetAccountIdContract(value, options);
872
+ case 'ProposalCreateContract':
873
+ return buildProposalCreateContract(value, options);
874
+ case 'ProposalDeleteContract':
875
+ return buildProposalDeleteContract(value, options);
876
+ case 'ProposalApproveContract':
877
+ return buildVoteProposalContract(value, options);
878
+ case 'ExchangeCreateContract':
879
+ return buildExchangeCreateContract(value, options);
880
+ case 'ExchangeInjectContract':
881
+ return buildExchangeInjectContract(value, options);
882
+ case 'ExchangeWithdrawContract':
883
+ return buildExchangeWithdrawContract(value, options);
884
+ case 'ExchangeTransactionContract':
885
+ return buildExchangeTransactionContract(value, options);
886
+ case 'UpdateSettingContract':
887
+ return buildUpdateSettingContract(value, options);
888
+ case 'UpdateEnergyLimitContract':
889
+ return buildUpdateEnergyLimitContract(value, options);
890
+ case 'AccountPermissionUpdateContract':
891
+ return buildAccountPermissionUpdateContract(value, options);
892
+ case 'UpdateAssetContract':
893
+ return buildUpdateAssetContract(value, options);
894
+ }
895
+ };
896
+
897
+ const txJsonToPb = (transaction) => {
898
+ const rawData = transaction['raw_data'];
899
+ const contractJson = rawData.contract[0];
900
+ const data = contractJson.parameter.value;
901
+ const options = { Permission_id: contractJson.Permission_id, visible: transaction.visible };
902
+ const transactionObj = contractJsonToProtobuf(contractJson, data, options) as any;
903
+
904
+ const rawDataObj = transactionObj.getRawData();
905
+ rawDataObj.setRefBlockBytes(stringToUint8Array(rawData.ref_block_bytes));
906
+ rawDataObj.setRefBlockHash(stringToUint8Array(rawData.ref_block_hash));
907
+ if (rawData.data) {
908
+ rawDataObj.setData(stringToUint8Array(rawData.data));
909
+ }
910
+
911
+ if (rawData.fee_limit) {
912
+ rawDataObj.setFeeLimit(rawData.fee_limit);
913
+ }
914
+
915
+ if (rawData.expiration) {
916
+ rawDataObj.setExpiration(rawData.expiration);
917
+ }
918
+
919
+ if (rawData.timestamp) {
920
+ rawDataObj.setTimestamp(rawData.timestamp);
921
+ }
922
+
923
+ transactionObj.setRawData(rawDataObj);
924
+
925
+ return transactionObj;
926
+ };
927
+
928
+ const txJsonToPbWithArgs = (transaction, args: any = {}, options: any = {}) => {
929
+ const rawData = transaction['raw_data'];
930
+ const contractJson = rawData.contract[0];
931
+
932
+ const transactionObj = contractJsonToProtobuf(contractJson, args, {
933
+ Permission_id: args?.Permission_id,
934
+ }) as any;
935
+
936
+ const rawDataObj = transactionObj.getRawData();
937
+ rawDataObj.setRefBlockBytes(stringToUint8Array(rawData.ref_block_bytes));
938
+ rawDataObj.setRefBlockHash(stringToUint8Array(rawData.ref_block_hash));
939
+ // for memo
940
+ if (options.data) {
941
+ rawDataObj.setData(stringToUint8Array(options.data.replace(/^0x/, '')));
942
+ }
943
+
944
+ if (options.fee_limit || args.fee_limit) {
945
+ rawDataObj.setFeeLimit(options.fee_limit || args.fee_limit);
946
+ }
947
+
948
+ if (rawData.expiration) {
949
+ rawDataObj.setExpiration(rawData.expiration);
950
+ }
951
+
952
+ if (rawData.timestamp) {
953
+ rawDataObj.setTimestamp(rawData.timestamp);
954
+ }
955
+
956
+ transactionObj.setRawData(rawDataObj);
957
+
958
+ return transactionObj;
959
+ };
960
+
961
+ const compareTransaction = (transaction, transactionPb) => {
962
+ const rawDataBytes = transactionPb.getRawData().serializeBinary();
963
+ const rawDataHex = byteArray2hexStr(rawDataBytes);
964
+ const txID = sha256(rawDataBytes);
965
+ return (
966
+ rawDataHex.toLowerCase() === transaction.raw_data_hex.toLowerCase() &&
967
+ txID.replace(/^0x/, '').toLowerCase() === transaction.txID.replace(/^0x/, '').toLowerCase()
968
+ );
969
+ };
970
+
971
+ const txPbToRawDataHex = (pb) => {
972
+ return byteArray2hexStr(pb.getRawData().serializeBinary());
973
+ };
974
+
975
+ const txCheck = (transaction) => {
976
+ const transactionPb = txJsonToPb(transaction);
977
+ return compareTransaction(transaction, transactionPb);
978
+ };
979
+
980
+ const txCheckWithArgs = (transaction, args, options) => {
981
+ const transactionPb = txJsonToPbWithArgs(transaction, args, options);
982
+ return compareTransaction(transaction, transactionPb);
983
+ };
984
+
985
+ const txPbToTxID = (transactionPb) => {
986
+ const rawDataBytes = transactionPb.getRawData().serializeBinary();
987
+ const txID = sha256(rawDataBytes);
988
+ return txID;
989
+ };
990
+
991
+ export { txJsonToPb, txPbToTxID, txPbToRawDataHex, txJsonToPbWithArgs, txCheckWithArgs, txCheck };