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,669 @@
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
+ import '../protocol/core/Tron_pb.cjs';
5
+ const { Transaction, Permission, Key } = globalThis.TronWebProto;
6
+ import '../protocol/core/contract/balance_contract_pb.cjs';
7
+ const { TransferContract, FreezeBalanceContract, UnfreezeBalanceContract, WithdrawBalanceContract, FreezeBalanceV2Contract, UnfreezeBalanceV2Contract, WithdrawExpireUnfreezeContract, DelegateResourceContract, UnDelegateResourceContract, } = globalThis.TronWebProto;
8
+ import '../protocol/core/contract/asset_issue_contract_pb.cjs';
9
+ const { TransferAssetContract, ParticipateAssetIssueContract, AssetIssueContract, UpdateAssetContract } = globalThis.TronWebProto;
10
+ import '../protocol/core/contract/smart_contract_pb.cjs';
11
+ const { TriggerSmartContract, ClearABIContract, UpdateEnergyLimitContract, UpdateSettingContract, CreateSmartContract, SmartContract, } = globalThis.TronWebProto;
12
+ import '../protocol/core/contract/common_pb.cjs';
13
+ const { ResourceCode } = globalThis.TronWebProto;
14
+ import '../protocol/core/contract/witness_contract_pb.cjs';
15
+ const { WitnessCreateContract, VoteWitnessContract } = globalThis.TronWebProto;
16
+ import '../protocol/core/contract/storage_contract_pb.cjs';
17
+ const { UpdateBrokerageContract } = globalThis.TronWebProto;
18
+ import '../protocol/core/contract/account_contract_pb.cjs';
19
+ const { AccountCreateContract, AccountUpdateContract, SetAccountIdContract, AccountPermissionUpdateContract } = globalThis.TronWebProto;
20
+ import '../protocol/core/contract/proposal_contract_pb.cjs';
21
+ const { ProposalCreateContract, ProposalDeleteContract, ProposalApproveContract } = globalThis.TronWebProto;
22
+ import '../protocol/core/contract/exchange_contract_pb.cjs';
23
+ const { ExchangeCreateContract, ExchangeInjectContract, ExchangeWithdrawContract, ExchangeTransactionContract } = globalThis.TronWebProto;
24
+ import { byteArray2hexStr } from './bytes.js';
25
+ import { sha256, keccak256 } from './ethersUtils.js';
26
+ import TronWeb from '../tronweb.js';
27
+ import { isHex } from './validations.js';
28
+ const fromHexString = (hexString) => {
29
+ if (!hexString || hexString.length === 0)
30
+ return new Uint8Array([]);
31
+ return new Uint8Array(TronWeb.address
32
+ .toHex(hexString)
33
+ .match(/.{1,2}/g)
34
+ .map((byte) => parseInt(byte, 16)));
35
+ };
36
+ const stringToUint8Array = (hexString) => {
37
+ if (!hexString || hexString.length === 0)
38
+ return new Uint8Array([]);
39
+ return new Uint8Array((isHex(hexString) ? hexString : TronWeb.toHex(hexString))
40
+ .replace(/^0x/, '')
41
+ .match(/.{1,2}/g)
42
+ .map((byte) => parseInt(byte, 16)));
43
+ };
44
+ const flexToUint8Array = (str, visible) => {
45
+ if (!visible)
46
+ return stringToUint8Array(str.replace(/^0x/, ''));
47
+ return stringToUint8Array(TronWeb.fromUtf8(str).replace(/^0x/, ''));
48
+ };
49
+ const sha3 = (string, prefix = true) => {
50
+ return (prefix ? '0x' : '') + keccak256(Buffer.from(string, 'utf-8')).toString().substring(2);
51
+ };
52
+ const buildCommonTransaction = (message, contractType, typeName, permissionId) => {
53
+ const anyValue = new google_protobuf_any_pb.Any();
54
+ anyValue.pack(message.serializeBinary(), 'protocol.' + typeName);
55
+ const contract = new Transaction.Contract();
56
+ contract.setType(contractType);
57
+ contract.setParameter(anyValue);
58
+ if (permissionId) {
59
+ contract.setPermissionId(permissionId);
60
+ }
61
+ const raw = new Transaction.raw();
62
+ raw.addContract(contract);
63
+ const transaction = new Transaction();
64
+ transaction.setRawData(raw);
65
+ return transaction;
66
+ };
67
+ // wallet/createtransaction for sendTrx
68
+ const buildTransferContract = (value, options) => {
69
+ const { to_address, owner_address, amount } = value;
70
+ const transferContract = new TransferContract();
71
+ transferContract.setToAddress(fromHexString(to_address));
72
+ transferContract.setOwnerAddress(fromHexString(owner_address));
73
+ transferContract.setAmount(amount);
74
+ return buildCommonTransaction(transferContract, Transaction.Contract.ContractType.TRANSFERCONTRACT, 'TransferContract', options.Permission_id);
75
+ };
76
+ // wallet/transferasset for sendToken
77
+ const buildTransferAssetContract = (value, options) => {
78
+ const { to_address, owner_address, amount, asset_name } = value;
79
+ const transferContract = new TransferAssetContract();
80
+ transferContract.setToAddress(fromHexString(to_address));
81
+ transferContract.setOwnerAddress(fromHexString(owner_address));
82
+ transferContract.setAssetName(flexToUint8Array(asset_name, options.visible));
83
+ transferContract.setAmount(amount);
84
+ return buildCommonTransaction(transferContract, Transaction.Contract.ContractType.TRANSFERASSETCONTRACT, 'TransferAssetContract', options.Permission_id);
85
+ };
86
+ // wallet/participateassetissue for purchaseToken
87
+ const buildParticipateAssetIssueContract = (value, options) => {
88
+ const pbObj = new ParticipateAssetIssueContract();
89
+ pbObj.setToAddress(fromHexString(value.to_address));
90
+ pbObj.setOwnerAddress(fromHexString(value.owner_address));
91
+ pbObj.setAssetName(flexToUint8Array(value.asset_name, options.visible));
92
+ pbObj.setAmount(value.amount);
93
+ return buildCommonTransaction(pbObj, Transaction.Contract.ContractType.PARTICIPATEASSETISSUECONTRACT, 'ParticipateAssetIssueContract', options.Permission_id);
94
+ };
95
+ const buildTriggerSmartContract = (value, options) => {
96
+ const triggerSmartContract = new TriggerSmartContract();
97
+ const { owner_address, contract_address, parameter = '', function_selector, call_value, call_token_value, token_id, data, } = value;
98
+ triggerSmartContract.setOwnerAddress(fromHexString(owner_address));
99
+ triggerSmartContract.setContractAddress(fromHexString(contract_address));
100
+ triggerSmartContract.setCallValue(call_value);
101
+ if (data) {
102
+ triggerSmartContract.setData(stringToUint8Array(data));
103
+ }
104
+ else if (function_selector) {
105
+ const contractData = sha3(function_selector).substring(2, 10) + parameter;
106
+ triggerSmartContract.setData(stringToUint8Array(contractData));
107
+ }
108
+ if (token_id) {
109
+ triggerSmartContract.setTokenId(token_id);
110
+ }
111
+ if (call_token_value) {
112
+ triggerSmartContract.setCallTokenValue(call_token_value);
113
+ }
114
+ return buildCommonTransaction(triggerSmartContract, Transaction.Contract.ContractType.TRIGGERSMARTCONTRACT, 'TriggerSmartContract', options.Permission_id);
115
+ };
116
+ const buildFreezeBalanceContract = (value, options) => {
117
+ const freezeBalanceContract = new FreezeBalanceContract();
118
+ const { owner_address, frozen_balance, frozen_duration, resource, receiver_address } = value;
119
+ freezeBalanceContract.setOwnerAddress(fromHexString(owner_address));
120
+ freezeBalanceContract.setFrozenBalance(frozen_balance);
121
+ freezeBalanceContract.setFrozenDuration(frozen_duration);
122
+ if (resource) {
123
+ freezeBalanceContract.setResource(ResourceCode[resource]);
124
+ }
125
+ if (receiver_address) {
126
+ freezeBalanceContract.setReceiverAddress(fromHexString(receiver_address));
127
+ }
128
+ return buildCommonTransaction(freezeBalanceContract, Transaction.Contract.ContractType.FREEZEBALANCECONTRACT, 'FreezeBalanceContract', options.Permission_id);
129
+ };
130
+ const buildUnfreezeBalanceContract = (value, options) => {
131
+ const unfreezeBalanceContract = new UnfreezeBalanceContract();
132
+ const { owner_address, resource, receiver_address } = value;
133
+ unfreezeBalanceContract.setOwnerAddress(fromHexString(owner_address));
134
+ if (resource) {
135
+ unfreezeBalanceContract.setResource(ResourceCode[resource]);
136
+ }
137
+ if (receiver_address) {
138
+ unfreezeBalanceContract.setReceiverAddress(fromHexString(receiver_address));
139
+ }
140
+ return buildCommonTransaction(unfreezeBalanceContract, Transaction.Contract.ContractType.UNFREEZEBALANCECONTRACT, 'UnfreezeBalanceContract', options.Permission_id);
141
+ };
142
+ const buildWithdrawBalanceContract = (value, options) => {
143
+ const withdrawbalanceContract = new WithdrawBalanceContract();
144
+ const { owner_address } = value;
145
+ withdrawbalanceContract.setOwnerAddress(fromHexString(owner_address));
146
+ return buildCommonTransaction(withdrawbalanceContract, Transaction.Contract.ContractType.WITHDRAWBALANCECONTRACT, 'WithdrawBalanceContract', options.Permission_id);
147
+ };
148
+ const buildFreezeBalanceV2Contract = (value, options) => {
149
+ const freezeBalanceV2Contract = new FreezeBalanceV2Contract();
150
+ const { owner_address, frozen_balance, resource } = value;
151
+ freezeBalanceV2Contract.setOwnerAddress(fromHexString(owner_address));
152
+ freezeBalanceV2Contract.setFrozenBalance(frozen_balance);
153
+ freezeBalanceV2Contract.setResource(ResourceCode[resource]);
154
+ return buildCommonTransaction(freezeBalanceV2Contract, Transaction.Contract.ContractType.FREEZEBALANCEV2CONTRACT, 'FreezeBalanceV2Contract', options.Permission_id);
155
+ };
156
+ const buildCancelFreezeBalanceV2Contract = (value, options) => {
157
+ const withdrawExpireUnfreeze = new WithdrawExpireUnfreezeContract();
158
+ const { owner_address } = value;
159
+ withdrawExpireUnfreeze.setOwnerAddress(fromHexString(owner_address));
160
+ return buildCommonTransaction(withdrawExpireUnfreeze, Transaction.Contract.ContractType.CANCELALLUNFREEZEV2CONTRACT, 'CancelAllUnfreezeV2Contract', options.Permission_id);
161
+ };
162
+ const buildUnfreezeBalanceV2Contract = (value, options) => {
163
+ const unfreezeBalanceV2Contract = new UnfreezeBalanceV2Contract();
164
+ const { owner_address, unfreeze_balance, resource } = value;
165
+ unfreezeBalanceV2Contract.setOwnerAddress(fromHexString(owner_address));
166
+ unfreezeBalanceV2Contract.setUnfreezeBalance(unfreeze_balance);
167
+ unfreezeBalanceV2Contract.setResource(ResourceCode[resource]);
168
+ return buildCommonTransaction(unfreezeBalanceV2Contract, Transaction.Contract.ContractType.UNFREEZEBALANCEV2CONTRACT, 'UnfreezeBalanceV2Contract', options.Permission_id);
169
+ };
170
+ const buildDelegateResourceContract = (value, options) => {
171
+ const delegateResourceContract = new DelegateResourceContract();
172
+ const { owner_address, receiver_address, balance, resource, lock = false, lock_period } = value;
173
+ delegateResourceContract.setOwnerAddress(fromHexString(owner_address));
174
+ delegateResourceContract.setBalance(balance);
175
+ delegateResourceContract.setResource(ResourceCode[resource]);
176
+ delegateResourceContract.setLock(lock);
177
+ delegateResourceContract.setLockPeriod(lock_period);
178
+ delegateResourceContract.setReceiverAddress(fromHexString(receiver_address));
179
+ return buildCommonTransaction(delegateResourceContract, Transaction.Contract.ContractType.DELEGATERESOURCECONTRACT, 'DelegateResourceContract', options.Permission_id);
180
+ };
181
+ const buildUnDelegateResourceContract = (value, options) => {
182
+ const unDelegateResourceContract = new UnDelegateResourceContract();
183
+ const { owner_address, receiver_address, balance, resource } = value;
184
+ unDelegateResourceContract.setOwnerAddress(fromHexString(owner_address));
185
+ unDelegateResourceContract.setBalance(balance);
186
+ unDelegateResourceContract.setResource(ResourceCode[resource]);
187
+ unDelegateResourceContract.setReceiverAddress(fromHexString(receiver_address));
188
+ return buildCommonTransaction(unDelegateResourceContract, Transaction.Contract.ContractType.UNDELEGATERESOURCECONTRACT, 'UnDelegateResourceContract', options.Permission_id);
189
+ };
190
+ const buildWithdrawExpireUnfreezeContract = (value, options) => {
191
+ const withdrawExpireUnfreeze = new WithdrawExpireUnfreezeContract();
192
+ const { owner_address } = value;
193
+ withdrawExpireUnfreeze.setOwnerAddress(fromHexString(owner_address));
194
+ return buildCommonTransaction(withdrawExpireUnfreeze, Transaction.Contract.ContractType.WITHDRAWEXPIREUNFREEZECONTRACT, 'WithdrawExpireUnfreezeContract', options.Permission_id);
195
+ };
196
+ // applyForSR
197
+ const buildCreateWitness = (value, options) => {
198
+ const createWitnessContract = new WitnessCreateContract();
199
+ const { owner_address, url } = value;
200
+ createWitnessContract.setOwnerAddress(fromHexString(owner_address));
201
+ createWitnessContract.setUrl(stringToUint8Array(url.replace(/^0x/, '')));
202
+ return buildCommonTransaction(createWitnessContract, Transaction.Contract.ContractType.WITNESSCREATECONTRACT, 'WitnessCreateContract', options.Permission_id);
203
+ };
204
+ // vote
205
+ const buildVoteWitnessAccount = (value, options) => {
206
+ const voteWitnessContract = new VoteWitnessContract();
207
+ const { owner_address, votes } = value;
208
+ voteWitnessContract.setOwnerAddress(fromHexString(owner_address));
209
+ votes.forEach((voteItem) => {
210
+ const vote = new VoteWitnessContract.Vote();
211
+ const { vote_address, vote_count } = voteItem;
212
+ vote.setVoteAddress(fromHexString(vote_address));
213
+ const numberOfVotes = parseInt(vote_count);
214
+ vote.setVoteCount(numberOfVotes);
215
+ voteWitnessContract.addVotes(vote);
216
+ });
217
+ return buildCommonTransaction(voteWitnessContract, Transaction.Contract.ContractType.VOTEWITNESSCONTRACT, 'VoteWitnessContract', options.Permission_id);
218
+ };
219
+ const buildCreateSmartContract = (value, options) => {
220
+ const params = value?.new_contract
221
+ ? {
222
+ ...{
223
+ owner_address: value.owner_address,
224
+ call_token_value: value.call_token_value,
225
+ token_id: value.token_id,
226
+ },
227
+ ...value.new_contract,
228
+ }
229
+ : value;
230
+ const { owner_address, consume_user_resource_percent, origin_energy_limit, abi, bytecode = '', parameter = '', call_value, call_token_value, token_id, name: contracName, } = params;
231
+ let { origin_address } = params;
232
+ const createSmartContract = new CreateSmartContract();
233
+ createSmartContract.setOwnerAddress(fromHexString(owner_address));
234
+ if (token_id) {
235
+ createSmartContract.setTokenId(token_id);
236
+ }
237
+ if (call_token_value) {
238
+ createSmartContract.setCallTokenValue(call_token_value);
239
+ }
240
+ const smartContractBuilder = new SmartContract();
241
+ if (abi) {
242
+ let abiJson;
243
+ if (typeof abi === 'string') {
244
+ abiJson = JSON.parse(abi);
245
+ }
246
+ else {
247
+ abiJson = abi?.entrys || []; // abi could be an empty object if origin abi is `[]`;
248
+ }
249
+ const abiBuilder = new SmartContract.ABI();
250
+ const buildEntryParam = (data) => {
251
+ const param = new SmartContract.ABI.Entry.Param();
252
+ const { indexed, name, type } = data;
253
+ if (indexed === true) {
254
+ param.setIndexed(true);
255
+ }
256
+ param.setName(name);
257
+ param.setType(type);
258
+ return param;
259
+ };
260
+ const entryBuilders = abiJson.map((entry) => {
261
+ const { anonymous, constant, name, inputs, outputs, type, payable, stateMutability } = entry;
262
+ const entryBuilder = new SmartContract.ABI.Entry();
263
+ entryBuilder.setAnonymous(anonymous);
264
+ entryBuilder.setConstant(constant);
265
+ entryBuilder.setName(name);
266
+ if (inputs) {
267
+ entryBuilder.setInputsList(inputs.map((input) => buildEntryParam(input)));
268
+ }
269
+ if (outputs) {
270
+ entryBuilder.setOutputsList(outputs.map((output) => buildEntryParam(output)));
271
+ }
272
+ if (type) {
273
+ entryBuilder.setType(SmartContract.ABI.Entry.EntryType[type.toUpperCase()]);
274
+ }
275
+ entryBuilder.setPayable(payable);
276
+ if (stateMutability) {
277
+ entryBuilder.setStatemutability(SmartContract.ABI.Entry.StateMutabilityType[stateMutability.toUpperCase()]);
278
+ }
279
+ return entryBuilder;
280
+ });
281
+ abiBuilder.setEntrysList(entryBuilders);
282
+ smartContractBuilder.setAbi(abiBuilder);
283
+ }
284
+ if (call_value) {
285
+ smartContractBuilder.setCallValue(call_value);
286
+ }
287
+ smartContractBuilder.setConsumeUserResourcePercent(consume_user_resource_percent);
288
+ smartContractBuilder.setOriginEnergyLimit(origin_energy_limit);
289
+ if (!origin_address) {
290
+ origin_address = owner_address;
291
+ }
292
+ smartContractBuilder.setOriginAddress(fromHexString(origin_address));
293
+ if (bytecode) {
294
+ const bytecodeParameter = bytecode.replace(/^0x/, '') + parameter.replace(/^0x/, '');
295
+ smartContractBuilder.setBytecode(stringToUint8Array(bytecodeParameter));
296
+ }
297
+ smartContractBuilder.setName(contracName);
298
+ createSmartContract.setNewContract(smartContractBuilder);
299
+ return buildCommonTransaction(createSmartContract, Transaction.Contract.ContractType.CREATESMARTCONTRACT, 'CreateSmartContract', options.Permission_id);
300
+ };
301
+ const buildClearABIContract = (value, options) => {
302
+ const { contract_address, owner_address } = value;
303
+ const clearABIContract = new ClearABIContract();
304
+ clearABIContract.setOwnerAddress(fromHexString(owner_address));
305
+ clearABIContract.setContractAddress(fromHexString(contract_address));
306
+ return buildCommonTransaction(clearABIContract, Transaction.Contract.ContractType.CLEARABICONTRACT, 'ClearABIContract', options.Permission_id);
307
+ };
308
+ // updateBrokerage
309
+ const buildUpdateBrokerageContract = (value, options) => {
310
+ const { brokerage, owner_address } = value;
311
+ const updateBrokerageContract = new UpdateBrokerageContract();
312
+ updateBrokerageContract.setOwnerAddress(fromHexString(owner_address));
313
+ updateBrokerageContract.setBrokerage(brokerage);
314
+ return buildCommonTransaction(updateBrokerageContract, Transaction.Contract.ContractType.UPDATEBROKERAGECONTRACT, 'UpdateBrokerageContract', options.Permission_id);
315
+ };
316
+ // createToken
317
+ const buildAssetIssueContract = (value, options) => {
318
+ const { owner_address, name, abbr, description, url, total_supply, trx_num, num, start_time, end_time, precision, free_asset_net_limit, public_free_asset_net_limit, public_free_asset_net_usage = 0, public_latest_free_net_time = 0, vote_score = 0, frozen_supply, } = value;
319
+ const assetIssueContract = new AssetIssueContract();
320
+ assetIssueContract.setOwnerAddress(fromHexString(owner_address));
321
+ if (name) {
322
+ assetIssueContract.setName(stringToUint8Array(name.replace(/^0x/, '')));
323
+ }
324
+ if (abbr) {
325
+ assetIssueContract.setAbbr(stringToUint8Array(abbr.replace(/^0x/, '')));
326
+ }
327
+ assetIssueContract.setTotalSupply(total_supply);
328
+ assetIssueContract.setNum(num);
329
+ assetIssueContract.setEndTime(end_time);
330
+ assetIssueContract.setStartTime(start_time);
331
+ assetIssueContract.setTrxNum(trx_num);
332
+ assetIssueContract.setVoteScore(vote_score);
333
+ if (precision) {
334
+ assetIssueContract.setPrecision(precision);
335
+ }
336
+ if (public_latest_free_net_time) {
337
+ assetIssueContract.setPublicLatestFreeNetTime(public_latest_free_net_time);
338
+ }
339
+ if (description) {
340
+ assetIssueContract.setDescription(stringToUint8Array(description.replace(/^0x/, '')));
341
+ }
342
+ if (url) {
343
+ assetIssueContract.setUrl(stringToUint8Array(url.replace(/^0x/, '')));
344
+ }
345
+ assetIssueContract.setPublicFreeAssetNetUsage(public_free_asset_net_usage);
346
+ assetIssueContract.setFreeAssetNetLimit(free_asset_net_limit);
347
+ assetIssueContract.setPublicFreeAssetNetLimit(public_free_asset_net_limit);
348
+ if (frozen_supply) {
349
+ const frozenSupplyContract = new AssetIssueContract.FrozenSupply();
350
+ frozenSupplyContract.setFrozenAmount(frozen_supply.length ? frozen_supply[0].frozen_amount : frozen_supply.frozen_amount);
351
+ frozenSupplyContract.setFrozenDays(frozen_supply.length ? frozen_supply[0].frozen_days : frozen_supply.frozen_days);
352
+ assetIssueContract.addFrozenSupply(frozenSupplyContract);
353
+ }
354
+ return buildCommonTransaction(assetIssueContract, Transaction.Contract.ContractType.ASSETISSUECONTRACT, 'AssetIssueContract', options.Permission_id);
355
+ };
356
+ //createAccount
357
+ const buildAccountCreateContract = (value, options) => {
358
+ const accountCreateContract = new AccountCreateContract();
359
+ const { account_address, owner_address } = value;
360
+ accountCreateContract.setOwnerAddress(fromHexString(owner_address));
361
+ accountCreateContract.setAccountAddress(fromHexString(account_address.replace(/^0x/, '')));
362
+ return buildCommonTransaction(accountCreateContract, Transaction.Contract.ContractType.ACCOUNTCREATECONTRACT, 'AccountCreateContract', options.Permission_id);
363
+ };
364
+ // updateAccount
365
+ const buildAccountUpdateContract = (value, options) => {
366
+ const accountUpdateContract = new AccountUpdateContract();
367
+ const { account_name, owner_address } = value;
368
+ accountUpdateContract.setOwnerAddress(fromHexString(owner_address));
369
+ accountUpdateContract.setAccountName(stringToUint8Array(account_name.replace(/^0x/, '')));
370
+ return buildCommonTransaction(accountUpdateContract, Transaction.Contract.ContractType.ACCOUNTUPDATECONTRACT, 'AccountUpdateContract', options.Permission_id);
371
+ };
372
+ // setAccountId
373
+ const buildSetAccountIdContract = (value, options) => {
374
+ const setAccountIdContract = new SetAccountIdContract();
375
+ const { account_id, owner_address } = value;
376
+ setAccountIdContract.setOwnerAddress(fromHexString(owner_address));
377
+ setAccountIdContract.setAccountId(stringToUint8Array(account_id.replace(/^0x/, '')));
378
+ return buildCommonTransaction(setAccountIdContract, Transaction.Contract.ContractType.SETACCOUNTIDCONTRACT, 'SetAccountIdContract', options.Permission_id);
379
+ };
380
+ const buildProposalCreateContract = (value, options) => {
381
+ const proposalCreateContract = new ProposalCreateContract();
382
+ const { owner_address, parameters } = value;
383
+ proposalCreateContract.setOwnerAddress(fromHexString(owner_address));
384
+ parameters.forEach((parameter) => {
385
+ proposalCreateContract.getParametersMap().set(parameter.key, parameter.value);
386
+ });
387
+ return buildCommonTransaction(proposalCreateContract, Transaction.Contract.ContractType.PROPOSALCREATECONTRACT, 'ProposalCreateContract', options.Permission_id);
388
+ };
389
+ const buildProposalDeleteContract = (value, options) => {
390
+ const proposalDeleteContract = new ProposalDeleteContract();
391
+ const { owner_address, proposal_id } = value;
392
+ proposalDeleteContract.setOwnerAddress(fromHexString(owner_address));
393
+ proposalDeleteContract.setProposalId(proposal_id);
394
+ return buildCommonTransaction(proposalDeleteContract, Transaction.Contract.ContractType.PROPOSALDELETECONTRACT, 'ProposalDeleteContract', options.Permission_id);
395
+ };
396
+ const buildVoteProposalContract = (value, options) => {
397
+ const proposalVoteContract = new ProposalApproveContract();
398
+ const { owner_address, proposal_id, is_add_approval } = value;
399
+ proposalVoteContract.setOwnerAddress(fromHexString(owner_address));
400
+ proposalVoteContract.setProposalId(proposal_id);
401
+ proposalVoteContract.setIsAddApproval(is_add_approval);
402
+ return buildCommonTransaction(proposalVoteContract, Transaction.Contract.ContractType.PROPOSALAPPROVECONTRACT, 'ProposalApproveContract', options.Permission_id);
403
+ };
404
+ const buildExchangeCreateContract = (value, options) => {
405
+ const exchangeCreateContract = new ExchangeCreateContract();
406
+ const { owner_address, first_token_id, first_token_balance, second_token_id, second_token_balance } = value;
407
+ exchangeCreateContract.setOwnerAddress(fromHexString(owner_address));
408
+ exchangeCreateContract.setFirstTokenId(flexToUint8Array(first_token_id, options.visible));
409
+ exchangeCreateContract.setFirstTokenBalance(first_token_balance);
410
+ exchangeCreateContract.setSecondTokenId(flexToUint8Array(second_token_id, options.visible));
411
+ exchangeCreateContract.setSecondTokenBalance(second_token_balance);
412
+ return buildCommonTransaction(exchangeCreateContract, Transaction.Contract.ContractType.EXCHANGECREATECONTRACT, 'ExchangeCreateContract', options.Permission_id);
413
+ };
414
+ const buildExchangeInjectContract = (value, options) => {
415
+ const exchangeInjectContract = new ExchangeInjectContract();
416
+ const { owner_address, exchange_id, token_id, quant } = value;
417
+ exchangeInjectContract.setOwnerAddress(fromHexString(owner_address));
418
+ exchangeInjectContract.setExchangeId(exchange_id);
419
+ exchangeInjectContract.setTokenId(flexToUint8Array(token_id, options.visible));
420
+ exchangeInjectContract.setQuant(quant);
421
+ return buildCommonTransaction(exchangeInjectContract, Transaction.Contract.ContractType.EXCHANGEINJECTCONTRACT, 'ExchangeInjectContract', options.Permission_id);
422
+ };
423
+ const buildExchangeWithdrawContract = (value, options) => {
424
+ const exchangeWithdrawContract = new ExchangeWithdrawContract();
425
+ const { owner_address, exchange_id, token_id, quant } = value;
426
+ exchangeWithdrawContract.setOwnerAddress(fromHexString(owner_address));
427
+ exchangeWithdrawContract.setExchangeId(exchange_id);
428
+ exchangeWithdrawContract.setTokenId(flexToUint8Array(token_id, options.visible));
429
+ exchangeWithdrawContract.setQuant(quant);
430
+ return buildCommonTransaction(exchangeWithdrawContract, Transaction.Contract.ContractType.EXCHANGEWITHDRAWCONTRACT, 'ExchangeWithdrawContract', options.Permission_id);
431
+ };
432
+ const buildExchangeTransactionContract = (value, options) => {
433
+ const exchangeTransactionContract = new ExchangeTransactionContract();
434
+ const { owner_address, exchange_id, token_id, quant, expected } = value;
435
+ exchangeTransactionContract.setOwnerAddress(fromHexString(owner_address));
436
+ exchangeTransactionContract.setExchangeId(exchange_id);
437
+ exchangeTransactionContract.setTokenId(flexToUint8Array(token_id, options.visible));
438
+ exchangeTransactionContract.setQuant(quant);
439
+ exchangeTransactionContract.setExpected(expected);
440
+ return buildCommonTransaction(exchangeTransactionContract, Transaction.Contract.ContractType.EXCHANGETRANSACTIONCONTRACT, 'ExchangeTransactionContract', options.Permission_id);
441
+ };
442
+ const buildUpdateSettingContract = (value, options) => {
443
+ const updateSettingContract = new UpdateSettingContract();
444
+ const { owner_address, contract_address, consume_user_resource_percent } = value;
445
+ updateSettingContract.setOwnerAddress(fromHexString(owner_address));
446
+ updateSettingContract.setContractAddress(fromHexString(contract_address));
447
+ updateSettingContract.setConsumeUserResourcePercent(consume_user_resource_percent);
448
+ return buildCommonTransaction(updateSettingContract, Transaction.Contract.ContractType.UPDATESETTINGCONTRACT, 'UpdateSettingContract', options.Permission_id);
449
+ };
450
+ const buildUpdateEnergyLimitContract = (value, options) => {
451
+ const updateEnergyLimitContract = new UpdateEnergyLimitContract();
452
+ const { owner_address, contract_address, origin_energy_limit } = value;
453
+ updateEnergyLimitContract.setOwnerAddress(fromHexString(owner_address));
454
+ updateEnergyLimitContract.setContractAddress(fromHexString(contract_address));
455
+ updateEnergyLimitContract.setOriginEnergyLimit(origin_energy_limit);
456
+ return buildCommonTransaction(updateEnergyLimitContract, Transaction.Contract.ContractType.UPDATEENERGYLIMITCONTRACT, 'UpdateEnergyLimitContract', options.Permission_id);
457
+ };
458
+ const buildAccountPermissionUpdateContract = (value, options) => {
459
+ const accountPermissionUpdateContract = new AccountPermissionUpdateContract();
460
+ const { owner_address, owner, witness, actives } = value;
461
+ accountPermissionUpdateContract.setOwnerAddress(fromHexString(owner_address));
462
+ const getType = (type) => {
463
+ // no type when permission_name is owner
464
+ if (isNaN(type))
465
+ return type === 'Active' ? 2 : type === 'Witness' ? 1 : 0;
466
+ return type;
467
+ };
468
+ const buildPermission = (data) => {
469
+ // no type when permission_name is owner
470
+ const permission = new Permission();
471
+ const { type, id, permission_name, threshold, parentId, operations, keys } = data;
472
+ permission.setType(getType(type));
473
+ permission.setId(id);
474
+ permission.setPermissionName(permission_name);
475
+ permission.setThreshold(threshold);
476
+ if (parentId) {
477
+ permission.setParentId(parentId);
478
+ }
479
+ if (operations) {
480
+ permission.setOperations(stringToUint8Array(operations));
481
+ }
482
+ if (keys) {
483
+ permission.setKeysList(keys.map((key) => {
484
+ const keyBuilder = new Key();
485
+ keyBuilder.setAddress(fromHexString(key.address));
486
+ keyBuilder.setWeight(key.weight);
487
+ return keyBuilder;
488
+ }));
489
+ }
490
+ return permission;
491
+ };
492
+ if (owner) {
493
+ accountPermissionUpdateContract.setOwner(buildPermission(owner));
494
+ }
495
+ if (witness) {
496
+ accountPermissionUpdateContract.setWitness(buildPermission(witness));
497
+ }
498
+ if (actives) {
499
+ if (Array.isArray(actives)) {
500
+ accountPermissionUpdateContract.setActivesList(actives.map((active) => buildPermission(active)));
501
+ }
502
+ else {
503
+ accountPermissionUpdateContract.setActivesList([buildPermission(actives)]);
504
+ }
505
+ }
506
+ return buildCommonTransaction(accountPermissionUpdateContract, Transaction.Contract.ContractType.ACCOUNTPERMISSIONUPDATECONTRACT, 'AccountPermissionUpdateContract', options.Permission_id);
507
+ };
508
+ const buildUpdateAssetContract = (value, options) => {
509
+ const updateAssetContract = new UpdateAssetContract();
510
+ const { owner_address, description, url, new_limit, new_public_limit } = value;
511
+ updateAssetContract.setOwnerAddress(fromHexString(owner_address));
512
+ if (description) {
513
+ updateAssetContract.setDescription(stringToUint8Array(description.replace(/^0x/, '')));
514
+ }
515
+ if (url) {
516
+ updateAssetContract.setUrl(stringToUint8Array(url.replace(/^0x/, '')));
517
+ }
518
+ if (new_limit) {
519
+ updateAssetContract.setNewLimit(new_limit);
520
+ }
521
+ if (new_public_limit) {
522
+ updateAssetContract.setNewPublicLimit(new_public_limit);
523
+ }
524
+ return buildCommonTransaction(updateAssetContract, Transaction.Contract.ContractType.UPDATEASSETCONTRACT, 'UpdateAssetContract', options.Permission_id);
525
+ };
526
+ const contractJsonToProtobuf = (contract, value, options) => {
527
+ switch (contract.type) {
528
+ case 'TransferContract':
529
+ return buildTransferContract(value, options);
530
+ case 'TransferAssetContract':
531
+ return buildTransferAssetContract(value, options);
532
+ case 'ParticipateAssetIssueContract':
533
+ return buildParticipateAssetIssueContract(value, options);
534
+ case 'TriggerSmartContract':
535
+ return buildTriggerSmartContract(value, options);
536
+ case 'FreezeBalanceContract':
537
+ return buildFreezeBalanceContract(value, options);
538
+ case 'UnfreezeBalanceContract':
539
+ return buildUnfreezeBalanceContract(value, options);
540
+ case 'WithdrawBalanceContract':
541
+ return buildWithdrawBalanceContract(value, options);
542
+ case 'FreezeBalanceV2Contract':
543
+ return buildFreezeBalanceV2Contract(value, options);
544
+ case 'CancelAllUnfreezeV2Contract':
545
+ return buildCancelFreezeBalanceV2Contract(value, options);
546
+ case 'UnfreezeBalanceV2Contract':
547
+ return buildUnfreezeBalanceV2Contract(value, options);
548
+ case 'DelegateResourceContract':
549
+ return buildDelegateResourceContract(value, options);
550
+ case 'UnDelegateResourceContract':
551
+ return buildUnDelegateResourceContract(value, options);
552
+ case 'WithdrawExpireUnfreezeContract':
553
+ return buildWithdrawExpireUnfreezeContract(value, options);
554
+ case 'WitnessCreateContract':
555
+ return buildCreateWitness(value, options);
556
+ case 'VoteWitnessContract':
557
+ return buildVoteWitnessAccount(value, options);
558
+ case 'CreateSmartContract':
559
+ return buildCreateSmartContract(value, options);
560
+ case 'ClearABIContract':
561
+ return buildClearABIContract(value, options);
562
+ case 'UpdateBrokerageContract':
563
+ return buildUpdateBrokerageContract(value, options);
564
+ case 'AssetIssueContract':
565
+ return buildAssetIssueContract(value, options);
566
+ case 'AccountCreateContract':
567
+ return buildAccountCreateContract(value, options);
568
+ case 'AccountUpdateContract':
569
+ return buildAccountUpdateContract(value, options);
570
+ case 'SetAccountIdContract':
571
+ return buildSetAccountIdContract(value, options);
572
+ case 'ProposalCreateContract':
573
+ return buildProposalCreateContract(value, options);
574
+ case 'ProposalDeleteContract':
575
+ return buildProposalDeleteContract(value, options);
576
+ case 'ProposalApproveContract':
577
+ return buildVoteProposalContract(value, options);
578
+ case 'ExchangeCreateContract':
579
+ return buildExchangeCreateContract(value, options);
580
+ case 'ExchangeInjectContract':
581
+ return buildExchangeInjectContract(value, options);
582
+ case 'ExchangeWithdrawContract':
583
+ return buildExchangeWithdrawContract(value, options);
584
+ case 'ExchangeTransactionContract':
585
+ return buildExchangeTransactionContract(value, options);
586
+ case 'UpdateSettingContract':
587
+ return buildUpdateSettingContract(value, options);
588
+ case 'UpdateEnergyLimitContract':
589
+ return buildUpdateEnergyLimitContract(value, options);
590
+ case 'AccountPermissionUpdateContract':
591
+ return buildAccountPermissionUpdateContract(value, options);
592
+ case 'UpdateAssetContract':
593
+ return buildUpdateAssetContract(value, options);
594
+ }
595
+ };
596
+ const txJsonToPb = (transaction) => {
597
+ const rawData = transaction['raw_data'];
598
+ const contractJson = rawData.contract[0];
599
+ const data = contractJson.parameter.value;
600
+ const options = { Permission_id: contractJson.Permission_id, visible: transaction.visible };
601
+ const transactionObj = contractJsonToProtobuf(contractJson, data, options);
602
+ const rawDataObj = transactionObj.getRawData();
603
+ rawDataObj.setRefBlockBytes(stringToUint8Array(rawData.ref_block_bytes));
604
+ rawDataObj.setRefBlockHash(stringToUint8Array(rawData.ref_block_hash));
605
+ if (rawData.data) {
606
+ rawDataObj.setData(stringToUint8Array(rawData.data));
607
+ }
608
+ if (rawData.fee_limit) {
609
+ rawDataObj.setFeeLimit(rawData.fee_limit);
610
+ }
611
+ if (rawData.expiration) {
612
+ rawDataObj.setExpiration(rawData.expiration);
613
+ }
614
+ if (rawData.timestamp) {
615
+ rawDataObj.setTimestamp(rawData.timestamp);
616
+ }
617
+ transactionObj.setRawData(rawDataObj);
618
+ return transactionObj;
619
+ };
620
+ const txJsonToPbWithArgs = (transaction, args = {}, options = {}) => {
621
+ const rawData = transaction['raw_data'];
622
+ const contractJson = rawData.contract[0];
623
+ const transactionObj = contractJsonToProtobuf(contractJson, args, {
624
+ Permission_id: args?.Permission_id,
625
+ });
626
+ const rawDataObj = transactionObj.getRawData();
627
+ rawDataObj.setRefBlockBytes(stringToUint8Array(rawData.ref_block_bytes));
628
+ rawDataObj.setRefBlockHash(stringToUint8Array(rawData.ref_block_hash));
629
+ // for memo
630
+ if (options.data) {
631
+ rawDataObj.setData(stringToUint8Array(options.data.replace(/^0x/, '')));
632
+ }
633
+ if (options.fee_limit || args.fee_limit) {
634
+ rawDataObj.setFeeLimit(options.fee_limit || args.fee_limit);
635
+ }
636
+ if (rawData.expiration) {
637
+ rawDataObj.setExpiration(rawData.expiration);
638
+ }
639
+ if (rawData.timestamp) {
640
+ rawDataObj.setTimestamp(rawData.timestamp);
641
+ }
642
+ transactionObj.setRawData(rawDataObj);
643
+ return transactionObj;
644
+ };
645
+ const compareTransaction = (transaction, transactionPb) => {
646
+ const rawDataBytes = transactionPb.getRawData().serializeBinary();
647
+ const rawDataHex = byteArray2hexStr(rawDataBytes);
648
+ const txID = sha256(rawDataBytes);
649
+ return (rawDataHex.toLowerCase() === transaction.raw_data_hex.toLowerCase() &&
650
+ txID.replace(/^0x/, '').toLowerCase() === transaction.txID.replace(/^0x/, '').toLowerCase());
651
+ };
652
+ const txPbToRawDataHex = (pb) => {
653
+ return byteArray2hexStr(pb.getRawData().serializeBinary());
654
+ };
655
+ const txCheck = (transaction) => {
656
+ const transactionPb = txJsonToPb(transaction);
657
+ return compareTransaction(transaction, transactionPb);
658
+ };
659
+ const txCheckWithArgs = (transaction, args, options) => {
660
+ const transactionPb = txJsonToPbWithArgs(transaction, args, options);
661
+ return compareTransaction(transaction, transactionPb);
662
+ };
663
+ const txPbToTxID = (transactionPb) => {
664
+ const rawDataBytes = transactionPb.getRawData().serializeBinary();
665
+ const txID = sha256(rawDataBytes);
666
+ return txID;
667
+ };
668
+ export { txJsonToPb, txPbToTxID, txPbToRawDataHex, txJsonToPbWithArgs, txCheckWithArgs, txCheck };
669
+ //# sourceMappingURL=transaction.js.map