@getomnichain/omnichain 0.5.0 → 0.6.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 (305) hide show
  1. package/CHANGELOG.md +134 -0
  2. package/README.md +5 -3
  3. package/dist/cjs/address.factory.js +7 -4
  4. package/dist/cjs/address.factory.js.map +1 -1
  5. package/dist/cjs/asset_balance.js +7 -0
  6. package/dist/cjs/asset_balance.js.map +1 -0
  7. package/dist/cjs/asset_map.js +45 -0
  8. package/dist/cjs/asset_map.js.map +1 -0
  9. package/dist/cjs/asset_registry.js +21 -0
  10. package/dist/cjs/asset_registry.js.map +1 -0
  11. package/dist/cjs/bip39.js +88 -0
  12. package/dist/cjs/bip39.js.map +1 -0
  13. package/dist/cjs/bytes_from_hex.js +34 -0
  14. package/dist/cjs/bytes_from_hex.js.map +1 -0
  15. package/dist/cjs/chain_type.js +35 -0
  16. package/dist/cjs/chain_type.js.map +1 -0
  17. package/dist/cjs/index.js +12 -0
  18. package/dist/cjs/index.js.map +1 -1
  19. package/dist/cjs/network_type.js +5 -2
  20. package/dist/cjs/network_type.js.map +1 -1
  21. package/dist/cjs/python_builtins.js +225 -0
  22. package/dist/cjs/python_builtins.js.map +1 -0
  23. package/dist/cjs/python_json.js +120 -0
  24. package/dist/cjs/python_json.js.map +1 -0
  25. package/dist/cjs/python_pydantic.js +50 -0
  26. package/dist/cjs/python_pydantic.js.map +1 -0
  27. package/dist/cjs/python_repr.js +172 -0
  28. package/dist/cjs/python_repr.js.map +1 -0
  29. package/dist/cjs/signed_transaction.js +24 -0
  30. package/dist/cjs/signed_transaction.js.map +1 -0
  31. package/dist/cjs/solana/solana_chain.js +89 -25
  32. package/dist/cjs/solana/solana_chain.js.map +1 -1
  33. package/dist/cjs/solana/solana_transaction_status.js +39 -3
  34. package/dist/cjs/solana/solana_transaction_status.js.map +1 -1
  35. package/dist/cjs/stellar/index.js +26 -0
  36. package/dist/cjs/stellar/index.js.map +1 -0
  37. package/dist/cjs/stellar/stellar_address.js +25 -0
  38. package/dist/cjs/stellar/stellar_address.js.map +1 -0
  39. package/dist/cjs/stellar/stellar_asset.js +155 -0
  40. package/dist/cjs/stellar/stellar_asset.js.map +1 -0
  41. package/dist/cjs/stellar/stellar_assets.js +26 -0
  42. package/dist/cjs/stellar/stellar_assets.js.map +1 -0
  43. package/dist/cjs/stellar/stellar_chain.js +1334 -0
  44. package/dist/cjs/stellar/stellar_chain.js.map +1 -0
  45. package/dist/cjs/stellar/stellar_chains.js +28 -0
  46. package/dist/cjs/stellar/stellar_chains.js.map +1 -0
  47. package/dist/cjs/stellar/stellar_gas_pricing.js +22 -0
  48. package/dist/cjs/stellar/stellar_gas_pricing.js.map +1 -0
  49. package/dist/cjs/stellar/stellar_strkey.js +71 -0
  50. package/dist/cjs/stellar/stellar_strkey.js.map +1 -0
  51. package/dist/cjs/stellar/stellar_transaction_status.js +72 -0
  52. package/dist/cjs/stellar/stellar_transaction_status.js.map +1 -0
  53. package/dist/cjs/stellar/stellar_transactions.js +475 -0
  54. package/dist/cjs/stellar/stellar_transactions.js.map +1 -0
  55. package/dist/cjs/stellar/stellar_wallet.js +195 -0
  56. package/dist/cjs/stellar/stellar_wallet.js.map +1 -0
  57. package/dist/cjs/token.js +3 -1
  58. package/dist/cjs/token.js.map +1 -1
  59. package/dist/cjs/transaction_json.js +85 -0
  60. package/dist/cjs/transaction_json.js.map +1 -0
  61. package/dist/cjs/transaction_prerequisite.js +19 -0
  62. package/dist/cjs/transaction_prerequisite.js.map +1 -0
  63. package/dist/cjs/transaction_simulation.js +21 -0
  64. package/dist/cjs/transaction_simulation.js.map +1 -0
  65. package/dist/cjs/tron/index.js +32 -0
  66. package/dist/cjs/tron/index.js.map +1 -0
  67. package/dist/cjs/tron/tron_abi.js +287 -0
  68. package/dist/cjs/tron/tron_abi.js.map +1 -0
  69. package/dist/cjs/tron/tron_address.js +38 -0
  70. package/dist/cjs/tron/tron_address.js.map +1 -0
  71. package/dist/cjs/tron/tron_asset.js +56 -0
  72. package/dist/cjs/tron/tron_asset.js.map +1 -0
  73. package/dist/cjs/tron/tron_assets.js +17 -0
  74. package/dist/cjs/tron/tron_assets.js.map +1 -0
  75. package/dist/cjs/tron/tron_base58.js +95 -0
  76. package/dist/cjs/tron/tron_base58.js.map +1 -0
  77. package/dist/cjs/tron/tron_canonical_transaction.js +268 -0
  78. package/dist/cjs/tron/tron_canonical_transaction.js.map +1 -0
  79. package/dist/cjs/tron/tron_chain.js +809 -0
  80. package/dist/cjs/tron/tron_chain.js.map +1 -0
  81. package/dist/cjs/tron/tron_chains.js +19 -0
  82. package/dist/cjs/tron/tron_chains.js.map +1 -0
  83. package/dist/cjs/tron/tron_client.js +327 -0
  84. package/dist/cjs/tron/tron_client.js.map +1 -0
  85. package/dist/cjs/tron/tron_contract.js +195 -0
  86. package/dist/cjs/tron/tron_contract.js.map +1 -0
  87. package/dist/cjs/tron/tron_gas_pricing.js +21 -0
  88. package/dist/cjs/tron/tron_gas_pricing.js.map +1 -0
  89. package/dist/cjs/tron/tron_keys.js +251 -0
  90. package/dist/cjs/tron/tron_keys.js.map +1 -0
  91. package/dist/cjs/tron/tron_transaction_builder.js +196 -0
  92. package/dist/cjs/tron/tron_transaction_builder.js.map +1 -0
  93. package/dist/cjs/tron/tron_transaction_status.js +118 -0
  94. package/dist/cjs/tron/tron_transaction_status.js.map +1 -0
  95. package/dist/cjs/tron/tron_transactions.js +192 -0
  96. package/dist/cjs/tron/tron_transactions.js.map +1 -0
  97. package/dist/cjs/tron/tron_wallet.js +152 -0
  98. package/dist/cjs/tron/tron_wallet.js.map +1 -0
  99. package/dist/cjs/unsigned_transaction.js +12 -0
  100. package/dist/cjs/unsigned_transaction.js.map +1 -1
  101. package/dist/cjs/wallet.base.js +29 -0
  102. package/dist/cjs/wallet.base.js.map +1 -0
  103. package/dist/esm/address.factory.d.ts.map +1 -1
  104. package/dist/esm/address.factory.js +7 -4
  105. package/dist/esm/address.factory.js.map +1 -1
  106. package/dist/esm/asset_balance.d.ts +5 -0
  107. package/dist/esm/asset_balance.d.ts.map +1 -0
  108. package/dist/esm/asset_balance.js +3 -0
  109. package/dist/esm/asset_balance.js.map +1 -0
  110. package/dist/esm/asset_map.d.ts +12 -0
  111. package/dist/esm/asset_map.d.ts.map +1 -0
  112. package/dist/esm/asset_map.js +40 -0
  113. package/dist/esm/asset_map.js.map +1 -0
  114. package/dist/esm/asset_registry.d.ts +6 -0
  115. package/dist/esm/asset_registry.d.ts.map +1 -0
  116. package/dist/esm/asset_registry.js +15 -0
  117. package/dist/esm/asset_registry.js.map +1 -0
  118. package/dist/esm/bip39.d.ts +4 -0
  119. package/dist/esm/bip39.d.ts.map +1 -0
  120. package/dist/esm/bip39.js +83 -0
  121. package/dist/esm/bip39.js.map +1 -0
  122. package/dist/esm/bytes_from_hex.d.ts +2 -0
  123. package/dist/esm/bytes_from_hex.d.ts.map +1 -0
  124. package/dist/esm/bytes_from_hex.js +31 -0
  125. package/dist/esm/bytes_from_hex.js.map +1 -0
  126. package/dist/esm/chain_type.d.ts +29 -0
  127. package/dist/esm/chain_type.d.ts.map +1 -0
  128. package/dist/esm/chain_type.js +32 -0
  129. package/dist/esm/chain_type.js.map +1 -0
  130. package/dist/esm/index.d.ts +12 -0
  131. package/dist/esm/index.d.ts.map +1 -1
  132. package/dist/esm/index.js +12 -0
  133. package/dist/esm/index.js.map +1 -1
  134. package/dist/esm/network_type.d.ts +3 -2
  135. package/dist/esm/network_type.d.ts.map +1 -1
  136. package/dist/esm/network_type.js +6 -3
  137. package/dist/esm/network_type.js.map +1 -1
  138. package/dist/esm/python_builtins.d.ts +13 -0
  139. package/dist/esm/python_builtins.d.ts.map +1 -0
  140. package/dist/esm/python_builtins.js +212 -0
  141. package/dist/esm/python_builtins.js.map +1 -0
  142. package/dist/esm/python_json.d.ts +9 -0
  143. package/dist/esm/python_json.d.ts.map +1 -0
  144. package/dist/esm/python_json.js +117 -0
  145. package/dist/esm/python_json.js.map +1 -0
  146. package/dist/esm/python_pydantic.d.ts +11 -0
  147. package/dist/esm/python_pydantic.d.ts.map +1 -0
  148. package/dist/esm/python_pydantic.js +39 -0
  149. package/dist/esm/python_pydantic.js.map +1 -0
  150. package/dist/esm/python_repr.d.ts +17 -0
  151. package/dist/esm/python_repr.d.ts.map +1 -0
  152. package/dist/esm/python_repr.js +160 -0
  153. package/dist/esm/python_repr.js.map +1 -0
  154. package/dist/esm/signed_transaction.d.ts +17 -0
  155. package/dist/esm/signed_transaction.d.ts.map +1 -0
  156. package/dist/esm/signed_transaction.js +19 -0
  157. package/dist/esm/signed_transaction.js.map +1 -0
  158. package/dist/esm/solana/solana_chain.d.ts.map +1 -1
  159. package/dist/esm/solana/solana_chain.js +90 -26
  160. package/dist/esm/solana/solana_chain.js.map +1 -1
  161. package/dist/esm/solana/solana_transaction_status.d.ts +40 -2
  162. package/dist/esm/solana/solana_transaction_status.d.ts.map +1 -1
  163. package/dist/esm/solana/solana_transaction_status.js +38 -2
  164. package/dist/esm/solana/solana_transaction_status.js.map +1 -1
  165. package/dist/esm/stellar/index.d.ts +10 -0
  166. package/dist/esm/stellar/index.d.ts.map +1 -0
  167. package/dist/esm/stellar/index.js +10 -0
  168. package/dist/esm/stellar/index.js.map +1 -0
  169. package/dist/esm/stellar/stellar_address.d.ts +8 -0
  170. package/dist/esm/stellar/stellar_address.d.ts.map +1 -0
  171. package/dist/esm/stellar/stellar_address.js +21 -0
  172. package/dist/esm/stellar/stellar_address.js.map +1 -0
  173. package/dist/esm/stellar/stellar_asset.d.ts +52 -0
  174. package/dist/esm/stellar/stellar_asset.d.ts.map +1 -0
  175. package/dist/esm/stellar/stellar_asset.js +147 -0
  176. package/dist/esm/stellar/stellar_asset.js.map +1 -0
  177. package/dist/esm/stellar/stellar_assets.d.ts +11 -0
  178. package/dist/esm/stellar/stellar_assets.d.ts.map +1 -0
  179. package/dist/esm/stellar/stellar_assets.js +23 -0
  180. package/dist/esm/stellar/stellar_assets.js.map +1 -0
  181. package/dist/esm/stellar/stellar_chain.d.ts +173 -0
  182. package/dist/esm/stellar/stellar_chain.d.ts.map +1 -0
  183. package/dist/esm/stellar/stellar_chain.js +1325 -0
  184. package/dist/esm/stellar/stellar_chain.js.map +1 -0
  185. package/dist/esm/stellar/stellar_chains.d.ts +5 -0
  186. package/dist/esm/stellar/stellar_chains.d.ts.map +1 -0
  187. package/dist/esm/stellar/stellar_chains.js +25 -0
  188. package/dist/esm/stellar/stellar_chains.js.map +1 -0
  189. package/dist/esm/stellar/stellar_gas_pricing.d.ts +13 -0
  190. package/dist/esm/stellar/stellar_gas_pricing.d.ts.map +1 -0
  191. package/dist/esm/stellar/stellar_gas_pricing.js +18 -0
  192. package/dist/esm/stellar/stellar_gas_pricing.js.map +1 -0
  193. package/dist/esm/stellar/stellar_strkey.d.ts +3 -0
  194. package/dist/esm/stellar/stellar_strkey.d.ts.map +1 -0
  195. package/dist/esm/stellar/stellar_strkey.js +67 -0
  196. package/dist/esm/stellar/stellar_strkey.js.map +1 -0
  197. package/dist/esm/stellar/stellar_transaction_status.d.ts +39 -0
  198. package/dist/esm/stellar/stellar_transaction_status.d.ts.map +1 -0
  199. package/dist/esm/stellar/stellar_transaction_status.js +68 -0
  200. package/dist/esm/stellar/stellar_transaction_status.js.map +1 -0
  201. package/dist/esm/stellar/stellar_transactions.d.ts +166 -0
  202. package/dist/esm/stellar/stellar_transactions.d.ts.map +1 -0
  203. package/dist/esm/stellar/stellar_transactions.js +451 -0
  204. package/dist/esm/stellar/stellar_transactions.js.map +1 -0
  205. package/dist/esm/stellar/stellar_wallet.d.ts +43 -0
  206. package/dist/esm/stellar/stellar_wallet.d.ts.map +1 -0
  207. package/dist/esm/stellar/stellar_wallet.js +190 -0
  208. package/dist/esm/stellar/stellar_wallet.js.map +1 -0
  209. package/dist/esm/token.d.ts +1 -0
  210. package/dist/esm/token.d.ts.map +1 -1
  211. package/dist/esm/token.js +3 -1
  212. package/dist/esm/token.js.map +1 -1
  213. package/dist/esm/transaction_json.d.ts +21 -0
  214. package/dist/esm/transaction_json.d.ts.map +1 -0
  215. package/dist/esm/transaction_json.js +75 -0
  216. package/dist/esm/transaction_json.js.map +1 -0
  217. package/dist/esm/transaction_prerequisite.d.ts +17 -0
  218. package/dist/esm/transaction_prerequisite.d.ts.map +1 -0
  219. package/dist/esm/transaction_prerequisite.js +13 -0
  220. package/dist/esm/transaction_prerequisite.js.map +1 -0
  221. package/dist/esm/transaction_simulation.d.ts +20 -0
  222. package/dist/esm/transaction_simulation.d.ts.map +1 -0
  223. package/dist/esm/transaction_simulation.js +17 -0
  224. package/dist/esm/transaction_simulation.js.map +1 -0
  225. package/dist/esm/tron/index.d.ts +16 -0
  226. package/dist/esm/tron/index.d.ts.map +1 -0
  227. package/dist/esm/tron/index.js +16 -0
  228. package/dist/esm/tron/index.js.map +1 -0
  229. package/dist/esm/tron/tron_abi.d.ts +3 -0
  230. package/dist/esm/tron/tron_abi.d.ts.map +1 -0
  231. package/dist/esm/tron/tron_abi.js +283 -0
  232. package/dist/esm/tron/tron_abi.js.map +1 -0
  233. package/dist/esm/tron/tron_address.d.ts +10 -0
  234. package/dist/esm/tron/tron_address.d.ts.map +1 -0
  235. package/dist/esm/tron/tron_address.js +34 -0
  236. package/dist/esm/tron/tron_address.js.map +1 -0
  237. package/dist/esm/tron/tron_asset.d.ts +19 -0
  238. package/dist/esm/tron/tron_asset.d.ts.map +1 -0
  239. package/dist/esm/tron/tron_asset.js +51 -0
  240. package/dist/esm/tron/tron_asset.js.map +1 -0
  241. package/dist/esm/tron/tron_assets.d.ts +10 -0
  242. package/dist/esm/tron/tron_assets.d.ts.map +1 -0
  243. package/dist/esm/tron/tron_assets.js +14 -0
  244. package/dist/esm/tron/tron_assets.js.map +1 -0
  245. package/dist/esm/tron/tron_base58.d.ts +7 -0
  246. package/dist/esm/tron/tron_base58.d.ts.map +1 -0
  247. package/dist/esm/tron/tron_base58.js +84 -0
  248. package/dist/esm/tron/tron_base58.js.map +1 -0
  249. package/dist/esm/tron/tron_canonical_transaction.d.ts +164 -0
  250. package/dist/esm/tron/tron_canonical_transaction.d.ts.map +1 -0
  251. package/dist/esm/tron/tron_canonical_transaction.js +262 -0
  252. package/dist/esm/tron/tron_canonical_transaction.js.map +1 -0
  253. package/dist/esm/tron/tron_chain.d.ts +136 -0
  254. package/dist/esm/tron/tron_chain.d.ts.map +1 -0
  255. package/dist/esm/tron/tron_chain.js +801 -0
  256. package/dist/esm/tron/tron_chain.js.map +1 -0
  257. package/dist/esm/tron/tron_chains.d.ts +5 -0
  258. package/dist/esm/tron/tron_chains.d.ts.map +1 -0
  259. package/dist/esm/tron/tron_chains.js +16 -0
  260. package/dist/esm/tron/tron_chains.js.map +1 -0
  261. package/dist/esm/tron/tron_client.d.ts +56 -0
  262. package/dist/esm/tron/tron_client.d.ts.map +1 -0
  263. package/dist/esm/tron/tron_client.js +319 -0
  264. package/dist/esm/tron/tron_client.js.map +1 -0
  265. package/dist/esm/tron/tron_contract.d.ts +69 -0
  266. package/dist/esm/tron/tron_contract.d.ts.map +1 -0
  267. package/dist/esm/tron/tron_contract.js +190 -0
  268. package/dist/esm/tron/tron_contract.js.map +1 -0
  269. package/dist/esm/tron/tron_gas_pricing.d.ts +12 -0
  270. package/dist/esm/tron/tron_gas_pricing.d.ts.map +1 -0
  271. package/dist/esm/tron/tron_gas_pricing.js +17 -0
  272. package/dist/esm/tron/tron_gas_pricing.js.map +1 -0
  273. package/dist/esm/tron/tron_keys.d.ts +61 -0
  274. package/dist/esm/tron/tron_keys.d.ts.map +1 -0
  275. package/dist/esm/tron/tron_keys.js +228 -0
  276. package/dist/esm/tron/tron_keys.js.map +1 -0
  277. package/dist/esm/tron/tron_transaction_builder.d.ts +56 -0
  278. package/dist/esm/tron/tron_transaction_builder.d.ts.map +1 -0
  279. package/dist/esm/tron/tron_transaction_builder.js +188 -0
  280. package/dist/esm/tron/tron_transaction_builder.js.map +1 -0
  281. package/dist/esm/tron/tron_transaction_status.d.ts +54 -0
  282. package/dist/esm/tron/tron_transaction_status.d.ts.map +1 -0
  283. package/dist/esm/tron/tron_transaction_status.js +113 -0
  284. package/dist/esm/tron/tron_transaction_status.js.map +1 -0
  285. package/dist/esm/tron/tron_transactions.d.ts +96 -0
  286. package/dist/esm/tron/tron_transactions.d.ts.map +1 -0
  287. package/dist/esm/tron/tron_transactions.js +181 -0
  288. package/dist/esm/tron/tron_transactions.js.map +1 -0
  289. package/dist/esm/tron/tron_wallet.d.ts +43 -0
  290. package/dist/esm/tron/tron_wallet.d.ts.map +1 -0
  291. package/dist/esm/tron/tron_wallet.js +148 -0
  292. package/dist/esm/tron/tron_wallet.js.map +1 -0
  293. package/dist/esm/unsigned_transaction.d.ts +5 -0
  294. package/dist/esm/unsigned_transaction.d.ts.map +1 -1
  295. package/dist/esm/unsigned_transaction.js +12 -0
  296. package/dist/esm/unsigned_transaction.js.map +1 -1
  297. package/dist/esm/wallet.base.d.ts +32 -0
  298. package/dist/esm/wallet.base.d.ts.map +1 -0
  299. package/dist/esm/wallet.base.js +23 -0
  300. package/dist/esm/wallet.base.js.map +1 -0
  301. package/docs/README.md +16 -7
  302. package/docs/solana.md +23 -0
  303. package/docs/stellar.md +113 -0
  304. package/docs/tron.md +103 -0
  305. package/package.json +14 -2
@@ -0,0 +1,188 @@
1
+ import { ChainError, ChainErrorKinds } from "../errors.js";
2
+ import { pyEncodeUtf8, pyItem } from "../python_builtins.js";
3
+ import { pyRepr, pyTypeName } from "../python_repr.js";
4
+ import { bytesToHex, hexToBytes, toHexAddress } from "./tron_keys.js";
5
+ export function currentTimestampMs() {
6
+ return Date.now();
7
+ }
8
+ export class TronTransaction {
9
+ rawData;
10
+ signature;
11
+ txid;
12
+ permission;
13
+ client;
14
+ constructor(init) {
15
+ const source = init.rawData;
16
+ this.rawData = ('raw_data' in source ? source.raw_data : source);
17
+ this.signature = 'signature' in source ? source.signature : init.signature || [];
18
+ this.client = init.client ?? null;
19
+ this.txid = 'txID' in source ? source.txID : (init.txid ?? '');
20
+ this.permission = 'permission' in source ? source.permission : (init.permission ?? null);
21
+ }
22
+ static async create(init) {
23
+ const transaction = new TronTransaction(init);
24
+ if (!transaction.txid)
25
+ await transaction.checkSignWeight();
26
+ return transaction;
27
+ }
28
+ async checkSignWeight() {
29
+ const client = this.requireClient();
30
+ const signWeight = await client.getSignWeight(this.toJson());
31
+ if (!('transaction' in signWeight)) {
32
+ client.handleApiError(signWeight);
33
+ throw new ChainError(ChainErrorKinds.RpcError, 'transaction not in sign_weight');
34
+ }
35
+ const wrapped = signWeight.transaction;
36
+ this.txid = wrapped.transaction.txID;
37
+ this.permission = signWeight.permission ?? null;
38
+ }
39
+ toJson() {
40
+ return {
41
+ txID: this.txid,
42
+ raw_data: this.rawData,
43
+ signature: this.signature,
44
+ permission: this.permission,
45
+ };
46
+ }
47
+ sign(privateKey) {
48
+ if (!this.txid) {
49
+ throw new ChainError(ChainErrorKinds.InvalidArgument, 'txID not calculated');
50
+ }
51
+ if (this.isExpired) {
52
+ throw new ChainError(ChainErrorKinds.InvalidArgument, 'expired');
53
+ }
54
+ if (this.permission !== null) {
55
+ const addressOfKey = privateKey.publicKey.toHexAddress();
56
+ const keys = pyItem(this.permission, 'keys');
57
+ if (!keys.some((key) => pyItem(key, 'address') === addressOfKey)) {
58
+ const reasons = [
59
+ 'provided private key is not in the permission list',
60
+ `provided ${privateKey.publicKey.toBase58CheckAddress()}`,
61
+ `required ${pyRepr(this.permission)}`,
62
+ ];
63
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `(${reasons.map(pyRepr).join(', ')})`);
64
+ }
65
+ }
66
+ if (typeof this.txid !== 'string') {
67
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `fromhex() argument must be str, not ${pyTypeName(this.txid)}`);
68
+ }
69
+ const messageHash = hexToBytes(this.txid);
70
+ if (messageHash.length !== 32) {
71
+ throw new ChainError(ChainErrorKinds.InvalidArgument, 'Message hash must be 32 bytes long.');
72
+ }
73
+ if (!Array.isArray(this.signature)) {
74
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `'${pyTypeName(this.signature)}' object has no attribute 'append'`);
75
+ }
76
+ this.signature.push(privateKey.signMsgHash(messageHash).hex());
77
+ return this;
78
+ }
79
+ setSignature(signature) {
80
+ this.signature = signature;
81
+ return this;
82
+ }
83
+ get isExpired() {
84
+ const expiration = pyItem(this.rawData, 'expiration');
85
+ if (typeof expiration === 'boolean')
86
+ return currentTimestampMs() >= Number(expiration);
87
+ if (typeof expiration !== 'number') {
88
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `'>=' not supported between instances of 'int' and '${pyTypeName(expiration)}'`);
89
+ }
90
+ return currentTimestampMs() >= expiration;
91
+ }
92
+ async broadcast() {
93
+ const payload = await this.requireClient().broadcast(this.toJson());
94
+ if (!('txid' in payload)) {
95
+ throw new ChainError(ChainErrorKinds.RpcError, pyRepr('txid'));
96
+ }
97
+ return payload;
98
+ }
99
+ toString() {
100
+ return JSON.stringify(this.toJson(), null, 2);
101
+ }
102
+ requireClient() {
103
+ if (this.client === null) {
104
+ throw new ChainError(ChainErrorKinds.RpcNotConfigured, 'TronTransaction has no client bound');
105
+ }
106
+ return this.client;
107
+ }
108
+ }
109
+ export class TronTransactionBuilder {
110
+ rawData;
111
+ client;
112
+ constructor(inner, client) {
113
+ this.client = client;
114
+ this.rawData = {
115
+ contract: [inner],
116
+ timestamp: currentTimestampMs(),
117
+ expiration: currentTimestampMs() + 60_000,
118
+ ref_block_bytes: null,
119
+ ref_block_hash: null,
120
+ };
121
+ if (inner.type === 'TriggerSmartContract' || inner.type === 'CreateSmartContract') {
122
+ this.rawData.fee_limit = client.feeLimitSun;
123
+ }
124
+ }
125
+ withOwner(address) {
126
+ const value = this.firstContractValue();
127
+ if (!('owner_address' in value)) {
128
+ throw new ChainError(ChainErrorKinds.InvalidArgument, 'can not set owner');
129
+ }
130
+ value.owner_address = toHexAddress(address);
131
+ return this;
132
+ }
133
+ permissionId(permissionId) {
134
+ this.rawData.contract[0].Permission_id = permissionId;
135
+ return this;
136
+ }
137
+ memo(memo) {
138
+ const data = typeof memo === 'string' ? pyEncodeUtf8(memo) : memo;
139
+ this.rawData.data = bytesToHex(data);
140
+ return this;
141
+ }
142
+ expiration(expirationMs) {
143
+ this.rawData.expiration = currentTimestampMs() + expirationMs;
144
+ return this;
145
+ }
146
+ feeLimit(valueSun) {
147
+ this.rawData.fee_limit = valueSun;
148
+ return this;
149
+ }
150
+ async build() {
151
+ const refBlockId = await this.client.getLatestSolidBlockId();
152
+ this.rawData.ref_block_bytes = refBlockId.slice(12, 16);
153
+ this.rawData.ref_block_hash = refBlockId.slice(16, 32);
154
+ return TronTransaction.create({ rawData: this.rawData, client: this.client });
155
+ }
156
+ firstContractValue() {
157
+ const contract = this.rawData.contract[0];
158
+ return contract.parameter.value;
159
+ }
160
+ }
161
+ export class TronTrx {
162
+ client;
163
+ constructor(client) {
164
+ this.client = client;
165
+ }
166
+ buildTransaction(type, value) {
167
+ const inner = {
168
+ parameter: { value, type_url: `type.googleapis.com/protocol.${type}` },
169
+ type,
170
+ };
171
+ return new TronTransactionBuilder(inner, this.client);
172
+ }
173
+ transfer(fromAddress, toAddress, amountSun) {
174
+ return this.buildTransaction('TransferContract', {
175
+ owner_address: toHexAddress(fromAddress),
176
+ to_address: toHexAddress(toAddress),
177
+ amount: toJsonInteger(amountSun),
178
+ });
179
+ }
180
+ }
181
+ export function toJsonInteger(value) {
182
+ const asBigInt = typeof value === 'bigint' ? value : BigInt(value);
183
+ if (asBigInt > BigInt(Number.MAX_SAFE_INTEGER) || asBigInt < BigInt(Number.MIN_SAFE_INTEGER)) {
184
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `Tron amount ${asBigInt} exceeds the JSON-safe integer range`);
185
+ }
186
+ return Number(asBigInt);
187
+ }
188
+ //# sourceMappingURL=tron_transaction_builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tron_transaction_builder.js","sourceRoot":"","sources":["../../../tron/tron_transaction_builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { NestedBalanceChanges, TransactionErrorInfo, TransactionStatus, TransactionStatusType } from '../transaction_status.ts';
2
+ export interface TronTransactionFeesInit {
3
+ feeInSun: number;
4
+ energyUsage: number;
5
+ energyFee: number;
6
+ originEnergyUsage: number;
7
+ energyUsageTotal: number;
8
+ netUsage: number;
9
+ netFee: number;
10
+ energyPenaltyTotal: number;
11
+ chainParamGetEnergyFee: number;
12
+ }
13
+ export declare class TronTransactionFees {
14
+ readonly feeInSun: number;
15
+ readonly energyUsage: number;
16
+ readonly energyFee: number;
17
+ readonly originEnergyUsage: number;
18
+ readonly energyUsageTotal: number;
19
+ readonly netUsage: number;
20
+ readonly netFee: number;
21
+ readonly energyPenaltyTotal: number;
22
+ readonly chainParamGetEnergyFee: number;
23
+ constructor(init: TronTransactionFeesInit);
24
+ toString(): string;
25
+ static fromTransactionInfo(info: Record<string, unknown>, chainGetEnergyFee: number): TronTransactionFees;
26
+ }
27
+ export interface TronTransactionStatusInit {
28
+ chainId: number;
29
+ status: TransactionStatusType;
30
+ inclusionAt?: Date | null;
31
+ balanceChanges?: NestedBalanceChanges | null;
32
+ error?: TransactionErrorInfo | null;
33
+ fees?: TronTransactionFees | null;
34
+ }
35
+ export declare class TronTransactionStatus extends TransactionStatus {
36
+ readonly fees: TronTransactionFees | null;
37
+ constructor(init: TronTransactionStatusInit);
38
+ toString(): string;
39
+ static successful(args: {
40
+ chainId: number;
41
+ inclusionAt: Date;
42
+ balanceChanges: NestedBalanceChanges;
43
+ fees: TronTransactionFees;
44
+ }): TronTransactionStatus;
45
+ static failed(args: {
46
+ chainId: number;
47
+ inclusionAt: Date | null;
48
+ error: TransactionErrorInfo;
49
+ fees?: TronTransactionFees | null;
50
+ }): TronTransactionStatus;
51
+ static pending(chainId: number): TronTransactionStatus;
52
+ static notFound(chainId: number, error?: TransactionErrorInfo | null): TronTransactionStatus;
53
+ }
54
+ //# sourceMappingURL=tron_transaction_status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tron_transaction_status.d.ts","sourceRoot":"","sources":["../../../tron/tron_transaction_status.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAGlC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;gBAE5B,IAAI,EAAE,uBAAuB;IAyBzC,QAAQ,IAAI,MAAM;IAQlB,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,MAAM,GAAG,mBAAmB;CAe1G;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC7C,KAAK,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpC,IAAI,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACnC;AAED,qBAAa,qBAAsB,SAAQ,iBAAiB;IAC1D,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC;gBAE9B,IAAI,EAAE,yBAAyB;IAW3C,QAAQ,IAAI,MAAM;IAQlB,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,IAAI,CAAC;QAClB,cAAc,EAAE,oBAAoB,CAAC;QACrC,IAAI,EAAE,mBAAmB,CAAC;KAC3B,GAAG,qBAAqB;IAWzB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;QACzB,KAAK,EAAE,oBAAoB,CAAC;QAC5B,IAAI,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;KACnC,GAAG,qBAAqB;IAWzB,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB;IAWtD,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,oBAAoB,GAAG,IAAW,GAAG,qBAAqB;CAUnG"}
@@ -0,0 +1,113 @@
1
+ import { ChainError, ChainErrorKinds } from "../errors.js";
2
+ import { TransactionStatus, TransactionStatusTypes, } from "../transaction_status.js";
3
+ import { pyBalanceChangesRepr, pyDatetimeStr, pyStr } from "../python_repr.js";
4
+ export class TronTransactionFees {
5
+ feeInSun;
6
+ energyUsage;
7
+ energyFee;
8
+ originEnergyUsage;
9
+ energyUsageTotal;
10
+ netUsage;
11
+ netFee;
12
+ energyPenaltyTotal;
13
+ chainParamGetEnergyFee;
14
+ constructor(init) {
15
+ for (const [field, value] of Object.entries(init)) {
16
+ if (!Number.isSafeInteger(value)) {
17
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `TronTransactionFees.${field} must be an integer, got ${value}`);
18
+ }
19
+ }
20
+ const expectedTotal = init.energyUsage + init.originEnergyUsage + Math.trunc(init.energyFee / init.chainParamGetEnergyFee);
21
+ if (init.energyUsageTotal !== expectedTotal) {
22
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `TronTransactionFees.energyUsageTotal (${init.energyUsageTotal}) must equal energyUsage + originEnergyUsage + energyFee / chainParamGetEnergyFee (${expectedTotal})`);
23
+ }
24
+ this.feeInSun = init.feeInSun;
25
+ this.energyUsage = init.energyUsage;
26
+ this.energyFee = init.energyFee;
27
+ this.originEnergyUsage = init.originEnergyUsage;
28
+ this.energyUsageTotal = init.energyUsageTotal;
29
+ this.netUsage = init.netUsage;
30
+ this.netFee = init.netFee;
31
+ this.energyPenaltyTotal = init.energyPenaltyTotal;
32
+ this.chainParamGetEnergyFee = init.chainParamGetEnergyFee;
33
+ }
34
+ toString() {
35
+ return (`fee_in_sun=${this.feeInSun} energy_usage=${this.energyUsage} energy_fee=${this.energyFee} ` +
36
+ `origin_energy_usage=${this.originEnergyUsage} energy_usage_total=${this.energyUsageTotal} net_usage=${this.netUsage} ` +
37
+ `net_fee=${this.netFee} energy_penalty_total=${this.energyPenaltyTotal} chain_param_get_energy_fee=${this.chainParamGetEnergyFee}`);
38
+ }
39
+ static fromTransactionInfo(info, chainGetEnergyFee) {
40
+ const receipt = info.receipt ?? {};
41
+ const int = (value) => (value ? Math.trunc(Number(value)) : 0);
42
+ return new TronTransactionFees({
43
+ feeInSun: int(info.fee),
44
+ energyUsage: int(receipt.energy_usage),
45
+ energyFee: int(receipt.energy_fee),
46
+ originEnergyUsage: int(receipt.origin_energy_usage),
47
+ energyUsageTotal: int(receipt.energy_usage_total),
48
+ netUsage: int(receipt.net_usage),
49
+ netFee: int(receipt.net_fee),
50
+ energyPenaltyTotal: int(receipt.energy_penalty_total),
51
+ chainParamGetEnergyFee: chainGetEnergyFee,
52
+ });
53
+ }
54
+ }
55
+ export class TronTransactionStatus extends TransactionStatus {
56
+ fees;
57
+ constructor(init) {
58
+ super({
59
+ chainId: init.chainId,
60
+ status: init.status,
61
+ inclusionAt: init.inclusionAt,
62
+ balanceChanges: init.balanceChanges,
63
+ error: init.error,
64
+ });
65
+ this.fees = init.fees ?? null;
66
+ }
67
+ toString() {
68
+ return (`TronTransactionStatus[chain_id=${this.chainId}, status_type=${this.status}, ` +
69
+ `inclusion_datetime_utc=${pyDatetimeStr(this.inclusionAt)}, ` +
70
+ `fees=${pyStr(this.fees)}, balance_changes=${pyBalanceChangesRepr(this.balanceChanges)}]`);
71
+ }
72
+ static successful(args) {
73
+ return new TronTransactionStatus({
74
+ chainId: args.chainId,
75
+ status: TransactionStatusTypes.Success,
76
+ inclusionAt: args.inclusionAt,
77
+ balanceChanges: args.balanceChanges,
78
+ error: null,
79
+ fees: args.fees,
80
+ });
81
+ }
82
+ static failed(args) {
83
+ return new TronTransactionStatus({
84
+ chainId: args.chainId,
85
+ status: TransactionStatusTypes.Failed,
86
+ inclusionAt: args.inclusionAt,
87
+ balanceChanges: null,
88
+ error: args.error,
89
+ fees: args.fees ?? null,
90
+ });
91
+ }
92
+ static pending(chainId) {
93
+ return new TronTransactionStatus({
94
+ chainId,
95
+ status: TransactionStatusTypes.Pending,
96
+ inclusionAt: null,
97
+ balanceChanges: null,
98
+ error: null,
99
+ fees: null,
100
+ });
101
+ }
102
+ static notFound(chainId, error = null) {
103
+ return new TronTransactionStatus({
104
+ chainId,
105
+ status: TransactionStatusTypes.NotFound,
106
+ inclusionAt: null,
107
+ balanceChanges: null,
108
+ error,
109
+ fees: null,
110
+ });
111
+ }
112
+ }
113
+ //# sourceMappingURL=tron_transaction_status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tron_transaction_status.js","sourceRoot":"","sources":["../../../tron/tron_transaction_status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAGL,iBAAiB,EAEjB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAc/E,MAAM,OAAO,mBAAmB;IACrB,QAAQ,CAAS;IACjB,WAAW,CAAS;IACpB,SAAS,CAAS;IAClB,iBAAiB,CAAS;IAC1B,gBAAgB,CAAS;IACzB,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,kBAAkB,CAAS;IAC3B,sBAAsB,CAAS;IAExC,YAAY,IAA6B;QACvC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,UAAU,CAAC,eAAe,CAAC,eAAe,EAAE,uBAAuB,KAAK,4BAA4B,KAAK,EAAE,CAAC,CAAC;YACzH,CAAC;QACH,CAAC;QACD,MAAM,aAAa,GACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACvG,IAAI,IAAI,CAAC,gBAAgB,KAAK,aAAa,EAAE,CAAC;YAC5C,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,yCAAyC,IAAI,CAAC,gBAAgB,sFAAsF,aAAa,GAAG,CACrK,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;IAC5D,CAAC;IAED,QAAQ;QACN,OAAO,CACL,cAAc,IAAI,CAAC,QAAQ,iBAAiB,IAAI,CAAC,WAAW,eAAe,IAAI,CAAC,SAAS,GAAG;YAC5F,uBAAuB,IAAI,CAAC,iBAAiB,uBAAuB,IAAI,CAAC,gBAAgB,cAAc,IAAI,CAAC,QAAQ,GAAG;YACvH,WAAW,IAAI,CAAC,MAAM,yBAAyB,IAAI,CAAC,kBAAkB,+BAA+B,IAAI,CAAC,sBAAsB,EAAE,CACnI,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,IAA6B,EAAE,iBAAyB;QACjF,MAAM,OAAO,GAAI,IAAI,CAAC,OAA+C,IAAI,EAAE,CAAC;QAC5E,MAAM,GAAG,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,mBAAmB,CAAC;YAC7B,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YACvB,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC;YACtC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;YAClC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;YACnD,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC;YACjD,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;YAChC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;YAC5B,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC;YACrD,sBAAsB,EAAE,iBAAiB;SAC1C,CAAC,CAAC;IACL,CAAC;CACF;AAWD,MAAM,OAAO,qBAAsB,SAAQ,iBAAiB;IACjD,IAAI,CAA6B;IAE1C,YAAY,IAA+B;QACzC,KAAK,CAAC;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;IAChC,CAAC;IAED,QAAQ;QACN,OAAO,CACL,kCAAkC,IAAI,CAAC,OAAO,iBAAiB,IAAI,CAAC,MAAM,IAAI;YAC9E,0BAA0B,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI;YAC7D,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAC1F,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAKjB;QACC,OAAO,IAAI,qBAAqB,CAAC;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,sBAAsB,CAAC,OAAO;YACtC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAKb;QACC,OAAO,IAAI,qBAAqB,CAAC;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,sBAAsB,CAAC,MAAM;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,cAAc,EAAE,IAAI;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;SACxB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,qBAAqB,CAAC;YAC/B,OAAO;YACP,MAAM,EAAE,sBAAsB,CAAC,OAAO;YACtC,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,IAAI;YACpB,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAe,EAAE,QAAqC,IAAI;QACxE,OAAO,IAAI,qBAAqB,CAAC;YAC/B,OAAO;YACP,MAAM,EAAE,sBAAsB,CAAC,QAAQ;YACvC,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,IAAI;YACpB,KAAK;YACL,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,96 @@
1
+ import type { Chain } from '../chain.base.ts';
2
+ import { AbstractBroadcastTransactionResponse, AbstractSignedTransaction } from '../signed_transaction.ts';
3
+ import { JsonDict, JsonTransactionInput } from '../transaction_json.ts';
4
+ import { AbstractHandledPrerequisiteResponse, AbstractTransactionPrerequisite } from '../transaction_prerequisite.ts';
5
+ import { AbstractTransactionSimulationResult, TransactionSimulationStatusType } from '../transaction_simulation.ts';
6
+ import { NestedBalanceChanges } from '../transaction_status.ts';
7
+ import { UnsignedTransaction } from '../unsigned_transaction.ts';
8
+ import { TronAsset } from './tron_asset.ts';
9
+ import { TronCanonicalTransaction } from './tron_canonical_transaction.ts';
10
+ import { TronJson } from './tron_client.ts';
11
+ import { TronTransaction } from './tron_transaction_builder.ts';
12
+ export declare function tronTransactionFromJson(transactionJson: TronJson): TronTransaction;
13
+ export declare function assertJsonSafeIntegers(value: unknown): void;
14
+ export declare class TronUnsignedTransaction extends UnsignedTransaction {
15
+ static readonly JSON_TYPE = "TronUnsignedTransaction";
16
+ readonly transaction: TronTransaction;
17
+ constructor(init: {
18
+ chainId: number;
19
+ transaction: TronTransaction;
20
+ });
21
+ get txId(): string;
22
+ get canonicalTransaction(): TronCanonicalTransaction;
23
+ toJson(): JsonDict;
24
+ static fromJson(data: JsonTransactionInput): TronUnsignedTransaction;
25
+ toString(): string;
26
+ }
27
+ export declare class TronSignedTransaction extends AbstractSignedTransaction {
28
+ static readonly JSON_TYPE = "TronSignedTransaction";
29
+ private readonly _chainId;
30
+ readonly signedTransaction: TronTransaction;
31
+ constructor(init: {
32
+ chainId: number;
33
+ signedTransaction: TronTransaction;
34
+ });
35
+ get chainId(): number;
36
+ get txId(): string;
37
+ get txHash(): string;
38
+ toJson(): JsonDict;
39
+ static fromJson(data: JsonTransactionInput): TronSignedTransaction;
40
+ }
41
+ export declare class TronBroadcastTransactionResponse extends AbstractBroadcastTransactionResponse {
42
+ private readonly _chain;
43
+ private readonly _txHash;
44
+ private readonly _broadcastError;
45
+ constructor(init: {
46
+ chain: Chain;
47
+ txHash: string;
48
+ broadcastError?: Error | null;
49
+ });
50
+ get chain(): Chain;
51
+ get txHash(): string;
52
+ get broadcastError(): Error | null;
53
+ toString(): string;
54
+ }
55
+ export declare class TronTransactionSimulationResult extends AbstractTransactionSimulationResult {
56
+ readonly energyUsed: number | null;
57
+ constructor(init: {
58
+ chainId: number;
59
+ energyUsed: number | null;
60
+ statusType: TransactionSimulationStatusType;
61
+ balanceChanges: NestedBalanceChanges;
62
+ error: Error | null;
63
+ });
64
+ toString(): string;
65
+ }
66
+ export declare class TronApproveTransactionPrerequisite extends AbstractTransactionPrerequisite {
67
+ private readonly _chainId;
68
+ readonly asset: TronAsset;
69
+ readonly walletAddress: string;
70
+ readonly spenderContractAddress: string;
71
+ readonly amount: bigint;
72
+ readonly requiresZeroResetFirst: boolean;
73
+ constructor(init: {
74
+ chainId: number;
75
+ asset: TronAsset;
76
+ walletAddress: string;
77
+ spenderContractAddress: string;
78
+ amount: bigint;
79
+ requiresZeroResetFirst?: boolean;
80
+ });
81
+ get chainId(): number;
82
+ toString(): string;
83
+ }
84
+ export declare class TronHandledApprovePrerequisiteResponse extends AbstractHandledPrerequisiteResponse {
85
+ private readonly _skipped;
86
+ readonly txHash: string | null;
87
+ readonly zeroResetTxHash: string | null;
88
+ constructor(init: {
89
+ skipped: boolean;
90
+ txHash: string | null;
91
+ zeroResetTxHash?: string | null;
92
+ });
93
+ get skipped(): boolean;
94
+ toString(): string;
95
+ }
96
+ //# sourceMappingURL=tron_transactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tron_transactions.d.ts","sourceRoot":"","sources":["../../../tron/tron_transactions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ import { ChainError, ChainErrorKinds } from "../errors.js";
2
+ import { pyBalanceChangesRepr, pyRepr, pyStr, pyTypeName } from "../python_repr.js";
3
+ import { NetworkType } from "../network_type.js";
4
+ import { AbstractBroadcastTransactionResponse, AbstractSignedTransaction } from "../signed_transaction.js";
5
+ import { jsonTransactionEnvelope, parseJsonTransactionEnvelope, jsonPayloadItem, registerJsonTransactionType, } from "../transaction_json.js";
6
+ import { AbstractHandledPrerequisiteResponse, AbstractTransactionPrerequisite } from "../transaction_prerequisite.js";
7
+ import { AbstractTransactionSimulationResult, } from "../transaction_simulation.js";
8
+ import { UnsignedTransaction } from "../unsigned_transaction.js";
9
+ import { TronAsset } from "./tron_asset.js";
10
+ import { parseTronCanonicalTransaction } from "./tron_canonical_transaction.js";
11
+ import { toBase58CheckAddress } from "./tron_keys.js";
12
+ import { TronTransaction } from "./tron_transaction_builder.js";
13
+ export function tronTransactionFromJson(transactionJson) {
14
+ if (transactionJson === null || typeof transactionJson !== 'object' || Array.isArray(transactionJson)) {
15
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `'${pyTypeName(transactionJson)}' object is not iterable`);
16
+ }
17
+ return new TronTransaction({ rawData: { ...transactionJson }, client: null });
18
+ }
19
+ export function assertJsonSafeIntegers(value) {
20
+ if (typeof value === 'number') {
21
+ if (Number.isInteger(value) && !Number.isSafeInteger(value)) {
22
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `Tron JSON integer ${value} is outside the JSON-safe integer range and cannot be represented exactly`);
23
+ }
24
+ return;
25
+ }
26
+ if (Array.isArray(value)) {
27
+ value.forEach(assertJsonSafeIntegers);
28
+ return;
29
+ }
30
+ if (value !== null && typeof value === 'object') {
31
+ Object.values(value).forEach(assertJsonSafeIntegers);
32
+ }
33
+ }
34
+ export class TronUnsignedTransaction extends UnsignedTransaction {
35
+ static JSON_TYPE = 'TronUnsignedTransaction';
36
+ transaction;
37
+ constructor(init) {
38
+ super(init.chainId, NetworkType.TRON);
39
+ this.transaction = init.transaction;
40
+ }
41
+ get txId() {
42
+ return this.transaction.txid;
43
+ }
44
+ get canonicalTransaction() {
45
+ return parseTronCanonicalTransaction(this.transaction.toJson());
46
+ }
47
+ toJson() {
48
+ return jsonTransactionEnvelope(TronUnsignedTransaction.JSON_TYPE, this.chainId, {
49
+ transaction: this.transaction.toJson(),
50
+ });
51
+ }
52
+ static fromJson(data) {
53
+ const payload = parseJsonTransactionEnvelope(data, TronUnsignedTransaction.JSON_TYPE);
54
+ assertJsonSafeIntegers(payload);
55
+ return new TronUnsignedTransaction({
56
+ chainId: jsonPayloadItem(payload, 'chain_id'),
57
+ transaction: tronTransactionFromJson(jsonPayloadItem(payload, 'transaction')),
58
+ });
59
+ }
60
+ toString() {
61
+ return `TronUnsignedTransaction[tx_id=${this.txId}, raw_data=${pyRepr(this.transaction.rawData)}]`;
62
+ }
63
+ }
64
+ export class TronSignedTransaction extends AbstractSignedTransaction {
65
+ static JSON_TYPE = 'TronSignedTransaction';
66
+ _chainId;
67
+ signedTransaction;
68
+ constructor(init) {
69
+ super();
70
+ this._chainId = init.chainId;
71
+ this.signedTransaction = init.signedTransaction;
72
+ }
73
+ get chainId() {
74
+ return this._chainId;
75
+ }
76
+ get txId() {
77
+ return this.signedTransaction.txid;
78
+ }
79
+ get txHash() {
80
+ return this.txId;
81
+ }
82
+ toJson() {
83
+ return jsonTransactionEnvelope(TronSignedTransaction.JSON_TYPE, this.chainId, {
84
+ signed_transaction: this.signedTransaction.toJson(),
85
+ });
86
+ }
87
+ static fromJson(data) {
88
+ const payload = parseJsonTransactionEnvelope(data, TronSignedTransaction.JSON_TYPE);
89
+ assertJsonSafeIntegers(payload);
90
+ return new TronSignedTransaction({
91
+ chainId: jsonPayloadItem(payload, 'chain_id'),
92
+ signedTransaction: tronTransactionFromJson(jsonPayloadItem(payload, 'signed_transaction')),
93
+ });
94
+ }
95
+ }
96
+ registerJsonTransactionType(TronUnsignedTransaction);
97
+ registerJsonTransactionType(TronSignedTransaction);
98
+ export class TronBroadcastTransactionResponse extends AbstractBroadcastTransactionResponse {
99
+ _chain;
100
+ _txHash;
101
+ _broadcastError;
102
+ constructor(init) {
103
+ super();
104
+ if (init.chain.networkType !== NetworkType.TRON) {
105
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `Unsupported chain ${String(init.chain)}, expected TronChain`);
106
+ }
107
+ this._chain = init.chain;
108
+ this._txHash = init.txHash;
109
+ this._broadcastError = init.broadcastError ?? null;
110
+ }
111
+ get chain() {
112
+ return this._chain;
113
+ }
114
+ get txHash() {
115
+ return this._txHash;
116
+ }
117
+ get broadcastError() {
118
+ return this._broadcastError;
119
+ }
120
+ toString() {
121
+ return `TronBroadcastTransactionResponse[chain=${String(this.chain)}, tx_hash=${this.txHash}, broadcast_error=${pyStr(this.broadcastError)}]`;
122
+ }
123
+ }
124
+ export class TronTransactionSimulationResult extends AbstractTransactionSimulationResult {
125
+ energyUsed;
126
+ constructor(init) {
127
+ super(init);
128
+ this.energyUsed = init.energyUsed;
129
+ }
130
+ toString() {
131
+ return (`TronTransactionSimulationResult[chain_id=${this.chainId}, status_type=${this.statusType}, ` +
132
+ `balance_changes=${pyBalanceChangesRepr(this.balanceChanges)}, energy_used=${pyStr(this.energyUsed)}, error=${pyStr(this.error)}]`);
133
+ }
134
+ }
135
+ export class TronApproveTransactionPrerequisite extends AbstractTransactionPrerequisite {
136
+ _chainId;
137
+ asset;
138
+ walletAddress;
139
+ spenderContractAddress;
140
+ amount;
141
+ requiresZeroResetFirst;
142
+ constructor(init) {
143
+ super();
144
+ if (!(init.asset instanceof TronAsset)) {
145
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `Invalid asset ${String(init.asset)}, expected TronAsset`);
146
+ }
147
+ if (init.asset.isNative()) {
148
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `Cannot build approve prerequisite for native TRX asset ${String(init.asset)}`);
149
+ }
150
+ this._chainId = init.chainId;
151
+ this.asset = init.asset;
152
+ this.walletAddress = toBase58CheckAddress(init.walletAddress);
153
+ this.spenderContractAddress = toBase58CheckAddress(init.spenderContractAddress);
154
+ this.amount = init.amount;
155
+ this.requiresZeroResetFirst = init.requiresZeroResetFirst ?? false;
156
+ }
157
+ get chainId() {
158
+ return this._chainId;
159
+ }
160
+ toString() {
161
+ return `TronApproveTransactionPrerequisite[asset=${String(this.asset)}, wallet=${this.walletAddress}, spender=${this.spenderContractAddress}, amount=${this.amount}]`;
162
+ }
163
+ }
164
+ export class TronHandledApprovePrerequisiteResponse extends AbstractHandledPrerequisiteResponse {
165
+ _skipped;
166
+ txHash;
167
+ zeroResetTxHash;
168
+ constructor(init) {
169
+ super();
170
+ this._skipped = init.skipped;
171
+ this.txHash = init.txHash;
172
+ this.zeroResetTxHash = init.zeroResetTxHash ?? null;
173
+ }
174
+ get skipped() {
175
+ return this._skipped;
176
+ }
177
+ toString() {
178
+ return `TronHandledApprovePrerequisiteResponse[skipped=${pyStr(this.skipped)}, tx_hash=${pyStr(this.txHash)}]`;
179
+ }
180
+ }
181
+ //# sourceMappingURL=tron_transactions.js.map