@bitgo-beta/sdk-coin-trx 1.2.3-alpha.43 → 1.2.3-alpha.431

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 (132) hide show
  1. package/dist/resources/protobuf/Contract.proto +32 -0
  2. package/dist/resources/protobuf/tron.d.ts +1478 -214
  3. package/dist/resources/protobuf/tron.js +6312 -2600
  4. package/dist/resources/protobuf/tron.proto +6 -0
  5. package/dist/src/index.js +6 -2
  6. package/dist/src/lib/constants.d.ts +3 -0
  7. package/dist/src/lib/constants.d.ts.map +1 -0
  8. package/dist/src/lib/constants.js +6 -0
  9. package/dist/src/lib/contractCallBuilder.d.ts +1 -35
  10. package/dist/src/lib/contractCallBuilder.d.ts.map +1 -1
  11. package/dist/src/lib/contractCallBuilder.js +12 -75
  12. package/dist/src/lib/delegateResourceTxBuilder.d.ts +27 -0
  13. package/dist/src/lib/delegateResourceTxBuilder.d.ts.map +1 -0
  14. package/dist/src/lib/delegateResourceTxBuilder.js +98 -0
  15. package/dist/src/lib/enum.d.ts +36 -1
  16. package/dist/src/lib/enum.d.ts.map +1 -1
  17. package/dist/src/lib/enum.js +40 -4
  18. package/dist/src/lib/freezeBalanceTxBuilder.d.ts +71 -0
  19. package/dist/src/lib/freezeBalanceTxBuilder.d.ts.map +1 -0
  20. package/dist/src/lib/freezeBalanceTxBuilder.js +211 -0
  21. package/dist/src/lib/iface.d.ts +220 -2
  22. package/dist/src/lib/iface.d.ts.map +1 -1
  23. package/dist/src/lib/iface.js +1 -1
  24. package/dist/src/lib/index.js +23 -9
  25. package/dist/src/lib/keyPair.d.ts +0 -1
  26. package/dist/src/lib/keyPair.d.ts.map +1 -1
  27. package/dist/src/lib/keyPair.js +31 -18
  28. package/dist/src/lib/resourceManagementTxBuilder.d.ts +72 -0
  29. package/dist/src/lib/resourceManagementTxBuilder.d.ts.map +1 -0
  30. package/dist/src/lib/resourceManagementTxBuilder.js +150 -0
  31. package/dist/src/lib/tokenTransferBuilder.d.ts +1 -1
  32. package/dist/src/lib/tokenTransferBuilder.js +3 -3
  33. package/dist/src/lib/transaction.d.ts.map +1 -1
  34. package/dist/src/lib/transaction.js +92 -6
  35. package/dist/src/lib/transactionBuilder.d.ts +50 -5
  36. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  37. package/dist/src/lib/transactionBuilder.js +110 -21
  38. package/dist/src/lib/undelegateResourceTxBuilder.d.ts +27 -0
  39. package/dist/src/lib/undelegateResourceTxBuilder.d.ts.map +1 -0
  40. package/dist/src/lib/undelegateResourceTxBuilder.js +98 -0
  41. package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts +65 -0
  42. package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts.map +1 -0
  43. package/dist/src/lib/unfreezeBalanceTxBuilder.js +204 -0
  44. package/dist/src/lib/utils.d.ts +85 -4
  45. package/dist/src/lib/utils.d.ts.map +1 -1
  46. package/dist/src/lib/utils.js +445 -47
  47. package/dist/src/lib/voteWitnessTxBuilder.d.ts +62 -0
  48. package/dist/src/lib/voteWitnessTxBuilder.d.ts.map +1 -0
  49. package/dist/src/lib/voteWitnessTxBuilder.js +219 -0
  50. package/dist/src/lib/withdrawBuilder.d.ts +49 -0
  51. package/dist/src/lib/withdrawBuilder.d.ts.map +1 -0
  52. package/dist/src/lib/withdrawBuilder.js +167 -0
  53. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts +49 -0
  54. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
  55. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.js +167 -0
  56. package/dist/src/lib/wrappedBuilder.d.ts +56 -0
  57. package/dist/src/lib/wrappedBuilder.d.ts.map +1 -1
  58. package/dist/src/lib/wrappedBuilder.js +86 -2
  59. package/dist/src/trx.d.ts +78 -4
  60. package/dist/src/trx.d.ts.map +1 -1
  61. package/dist/src/trx.js +436 -147
  62. package/dist/src/trxToken.d.ts +2 -2
  63. package/dist/src/trxToken.d.ts.map +1 -1
  64. package/dist/src/trxToken.js +5 -5
  65. package/dist/test/fixtures.d.ts +40 -0
  66. package/dist/test/fixtures.d.ts.map +1 -0
  67. package/dist/test/fixtures.js +46 -0
  68. package/dist/test/resources.d.ts +586 -0
  69. package/dist/test/resources.d.ts.map +1 -0
  70. package/dist/test/resources.js +746 -0
  71. package/dist/test/unit/index.d.ts +2 -0
  72. package/dist/test/unit/index.d.ts.map +1 -0
  73. package/dist/test/unit/index.js +19 -0
  74. package/dist/test/unit/keyPair.d.ts +2 -0
  75. package/dist/test/unit/keyPair.d.ts.map +1 -0
  76. package/dist/test/unit/keyPair.js +163 -0
  77. package/dist/test/unit/transaction.d.ts +2 -0
  78. package/dist/test/unit/transaction.d.ts.map +1 -0
  79. package/dist/test/unit/transaction.js +38 -0
  80. package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts +2 -0
  81. package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts.map +1 -0
  82. package/dist/test/unit/transactionBuilder/contractCallBuilder.js +315 -0
  83. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts +2 -0
  84. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts.map +1 -0
  85. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.js +255 -0
  86. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts +2 -0
  87. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts.map +1 -0
  88. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.js +285 -0
  89. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  90. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  91. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +42 -0
  92. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts +2 -0
  93. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts.map +1 -0
  94. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.js +255 -0
  95. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts +2 -0
  96. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts.map +1 -0
  97. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.js +256 -0
  98. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts +2 -0
  99. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts.map +1 -0
  100. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.js +277 -0
  101. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts +2 -0
  102. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts.map +1 -0
  103. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.js +213 -0
  104. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts +2 -0
  105. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
  106. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.js +213 -0
  107. package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts +2 -0
  108. package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts.map +1 -0
  109. package/dist/test/unit/transactionBuilder/wrappedBuilder.js +50 -0
  110. package/dist/test/unit/transactionBuilder.d.ts +2 -0
  111. package/dist/test/unit/transactionBuilder.d.ts.map +1 -0
  112. package/dist/test/unit/transactionBuilder.js +178 -0
  113. package/dist/test/unit/trx.d.ts +2 -0
  114. package/dist/test/unit/trx.d.ts.map +1 -0
  115. package/dist/test/unit/trx.js +639 -0
  116. package/dist/test/unit/util.d.ts +2 -0
  117. package/dist/test/unit/util.d.ts.map +1 -0
  118. package/dist/test/unit/util.js +141 -0
  119. package/dist/test/unit/verifyTransaction.d.ts +2 -0
  120. package/dist/test/unit/verifyTransaction.d.ts.map +1 -0
  121. package/dist/test/unit/verifyTransaction.js +378 -0
  122. package/dist/tsconfig.tsbuildinfo +1 -0
  123. package/package.json +20 -15
  124. package/.eslintignore +0 -5
  125. package/.mocharc.yml +0 -8
  126. package/CHANGELOG.md +0 -118
  127. package/resources/README.md +0 -31
  128. package/resources/protobuf/Contract.proto +0 -256
  129. package/resources/protobuf/Discover.proto +0 -44
  130. package/resources/protobuf/tron.d.ts +0 -11205
  131. package/resources/protobuf/tron.js +0 -33480
  132. package/resources/protobuf/tron.proto +0 -677
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undelegateResourceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/undelegateResourceTxBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAE,kBAAkB,EAA8B,MAAM,SAAS,CAAC;AAIzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAI5E,qBAAa,2BAA4B,SAAQ,2BAA2B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;OAKG;IACH,WAAW,CAAC,cAAc,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI;IAgB9D;;OAEG;IACH,SAAS,CAAC,mCAAmC,IAAI,IAAI;IAsBrD;;;;OAIG;IACH,SAAS,CAAC,iCAAiC,IAAI,MAAM;CA2BtD"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UndelegateResourceTxBuilder = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
6
+ const transaction_1 = require("./transaction");
7
+ const constants_1 = require("./constants");
8
+ const utils_1 = require("./utils");
9
+ const tron_1 = require("../../resources/protobuf/tron");
10
+ const resourceManagementTxBuilder_1 = require("./resourceManagementTxBuilder");
11
+ var ContractType = tron_1.protocol.Transaction.Contract.ContractType;
12
+ class UndelegateResourceTxBuilder extends resourceManagementTxBuilder_1.ResourceManagementTxBuilder {
13
+ constructor(_coinConfig) {
14
+ super(_coinConfig);
15
+ }
16
+ /** @inheritdoc */
17
+ get transactionType() {
18
+ return sdk_core_1.TransactionType.UnDelegateResource;
19
+ }
20
+ /**
21
+ * Initialize the transaction builder fields using the transaction data
22
+ *
23
+ * @param {TransactionReceipt | string} rawTransaction the transaction data in a string or JSON format
24
+ * @returns {DelegateResourceTxBuilder} the builder with the transaction data set
25
+ */
26
+ initBuilder(rawTransaction) {
27
+ this.validateRawTransaction(rawTransaction);
28
+ const tx = this.fromImplementation(rawTransaction);
29
+ this.transaction = tx;
30
+ this._signingKeys = [];
31
+ const rawData = tx.toJson().raw_data;
32
+ this._refBlockBytes = rawData.ref_block_bytes;
33
+ this._refBlockHash = rawData.ref_block_hash;
34
+ this._expiration = rawData.expiration;
35
+ this._timestamp = rawData.timestamp;
36
+ this.transaction.setTransactionType(sdk_core_1.TransactionType.UnDelegateResource);
37
+ const contractCall = rawData.contract[0];
38
+ this.initResourceManagementContractCall(contractCall);
39
+ return this;
40
+ }
41
+ /**
42
+ * Helper method to create the undelegate resource transaction
43
+ */
44
+ createResourceManagementTransaction() {
45
+ const rawDataHex = this.getResourceManagementTxRawDataHex();
46
+ const rawData = (0, utils_1.decodeTransaction)(rawDataHex);
47
+ const contract = rawData.contract[0];
48
+ const contractParameter = contract.parameter;
49
+ contractParameter.value.owner_address = this._ownerAddress.toLocaleLowerCase();
50
+ contractParameter.value.balance = Number(this._balance);
51
+ contractParameter.value.receiver_address = this._receiverAddress.toLocaleLowerCase();
52
+ contractParameter.value.resource = this._resource;
53
+ contractParameter.type_url = constants_1.UNDELEGATION_TYPE_URL;
54
+ contract.type = 'UnDelegateResourceContract';
55
+ const hexBuffer = Buffer.from(rawDataHex, 'hex');
56
+ const id = (0, crypto_1.createHash)('sha256').update(hexBuffer).digest('hex');
57
+ const txReceipt = {
58
+ raw_data: rawData,
59
+ raw_data_hex: rawDataHex,
60
+ txID: id,
61
+ signature: this.transaction.signature,
62
+ };
63
+ this.transaction = new transaction_1.Transaction(this._coinConfig, txReceipt);
64
+ }
65
+ /**
66
+ * Helper method to get the undelegate resource transaction raw data hex
67
+ *
68
+ * @returns {string} the undelegate resource transaction raw data hex
69
+ */
70
+ getResourceManagementTxRawDataHex() {
71
+ const rawContract = {
72
+ ownerAddress: (0, utils_1.getByteArrayFromHexAddress)(this._ownerAddress),
73
+ receiverAddress: (0, utils_1.getByteArrayFromHexAddress)(this._receiverAddress),
74
+ balance: this._balance,
75
+ resource: this._resource,
76
+ };
77
+ const undelegateResourceContract = tron_1.protocol.UnDelegateResourceContract.fromObject(rawContract);
78
+ const undelegateResourceContractBytes = tron_1.protocol.UnDelegateResourceContract.encode(undelegateResourceContract).finish();
79
+ const txContract = {
80
+ type: ContractType.UnDelegateResourceContract,
81
+ parameter: {
82
+ value: undelegateResourceContractBytes,
83
+ type_url: constants_1.UNDELEGATION_TYPE_URL,
84
+ },
85
+ };
86
+ const raw = {
87
+ refBlockBytes: Buffer.from(this._refBlockBytes, 'hex'),
88
+ refBlockHash: Buffer.from(this._refBlockHash, 'hex'),
89
+ expiration: this._expiration || Date.now() + utils_1.TRANSACTION_DEFAULT_EXPIRATION,
90
+ timestamp: this._timestamp || Date.now(),
91
+ contract: [txContract],
92
+ };
93
+ const rawTx = tron_1.protocol.Transaction.raw.create(raw);
94
+ return Buffer.from(tron_1.protocol.Transaction.raw.encode(rawTx).finish()).toString('hex');
95
+ }
96
+ }
97
+ exports.UndelegateResourceTxBuilder = UndelegateResourceTxBuilder;
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kZWxlZ2F0ZVJlc291cmNlVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi91bmRlbGVnYXRlUmVzb3VyY2VUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW9DO0FBQ3BDLG1EQUF1RDtBQUd2RCwrQ0FBNEM7QUFFNUMsMkNBQW9EO0FBQ3BELG1DQUF3RztBQUN4Ryx3REFBeUQ7QUFDekQsK0VBQTRFO0FBRTVFLElBQU8sWUFBWSxHQUFHLGVBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUVqRSxNQUFhLDJCQUE0QixTQUFRLHlEQUEyQjtJQUMxRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsa0JBQWtCLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLGNBQTJDO1FBQ3JELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLE9B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LFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDO1lBQ3BELFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxzQ0FBOEI7WUFDM0UsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQUM7U0FDdkIsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLGVBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RGLENBQUM7Q0FDRjtBQXpGRCxrRUF5RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVjZWlwdCwgUmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3QgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFVOREVMRUdBVElPTl9UWVBFX1VSTCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGRlY29kZVRyYW5zYWN0aW9uLCBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcywgVFJBTlNBQ1RJT05fREVGQVVMVF9FWFBJUkFUSU9OIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBwcm90b2NvbCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9wcm90b2J1Zi90cm9uJztcbmltcG9ydCB7IFJlc291cmNlTWFuYWdlbWVudFR4QnVpbGRlciB9IGZyb20gJy4vcmVzb3VyY2VNYW5hZ2VtZW50VHhCdWlsZGVyJztcblxuaW1wb3J0IENvbnRyYWN0VHlwZSA9IHByb3RvY29sLlRyYW5zYWN0aW9uLkNvbnRyYWN0LkNvbnRyYWN0VHlwZTtcblxuZXhwb3J0IGNsYXNzIFVuZGVsZWdhdGVSZXNvdXJjZVR4QnVpbGRlciBleHRlbmRzIFJlc291cmNlTWFuYWdlbWVudFR4QnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuVW5EZWxlZ2F0ZVJlc291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25SZWNlaXB0IHwgc3RyaW5nfSByYXdUcmFuc2FjdGlvbiB0aGUgdHJhbnNhY3Rpb24gZGF0YSBpbiBhIHN0cmluZyBvciBKU09OIGZvcm1hdFxuICAgKiBAcmV0dXJucyB7RGVsZWdhdGVSZXNvdXJjZVR4QnVpbGRlcn0gdGhlIGJ1aWxkZXIgd2l0aCB0aGUgdHJhbnNhY3Rpb24gZGF0YSBzZXRcbiAgICovXG4gIGluaXRCdWlsZGVyKHJhd1RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblJlY2VpcHQgfCBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIGNvbnN0IHR4ID0gdGhpcy5mcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0eDtcbiAgICB0aGlzLl9zaWduaW5nS2V5cyA9IFtdO1xuICAgIGNvbnN0IHJhd0RhdGEgPSB0eC50b0pzb24oKS5yYXdfZGF0YTtcbiAgICB0aGlzLl9yZWZCbG9ja0J5dGVzID0gcmF3RGF0YS5yZWZfYmxvY2tfYnl0ZXM7XG4gICAgdGhpcy5fcmVmQmxvY2tIYXNoID0gcmF3RGF0YS5yZWZfYmxvY2tfaGFzaDtcbiAgICB0aGlzLl9leHBpcmF0aW9uID0gcmF3RGF0YS5leHBpcmF0aW9uO1xuICAgIHRoaXMuX3RpbWVzdGFtcCA9IHJhd0RhdGEudGltZXN0YW1wO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5VbkRlbGVnYXRlUmVzb3VyY2UpO1xuICAgIGNvbnN0IGNvbnRyYWN0Q2FsbCA9IHJhd0RhdGEuY29udHJhY3RbMF0gYXMgUmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3Q7XG4gICAgdGhpcy5pbml0UmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3RDYWxsKGNvbnRyYWN0Q2FsbCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBjcmVhdGUgdGhlIHVuZGVsZWdhdGUgcmVzb3VyY2UgdHJhbnNhY3Rpb25cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZU1hbmFnZW1lbnRUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCByYXdEYXRhSGV4ID0gdGhpcy5nZXRSZXNvdXJjZU1hbmFnZW1lbnRUeFJhd0RhdGFIZXgoKTtcbiAgICBjb25zdCByYXdEYXRhID0gZGVjb2RlVHJhbnNhY3Rpb24ocmF3RGF0YUhleCk7XG4gICAgY29uc3QgY29udHJhY3QgPSByYXdEYXRhLmNvbnRyYWN0WzBdIGFzIFJlc291cmNlTWFuYWdlbWVudENvbnRyYWN0O1xuICAgIGNvbnN0IGNvbnRyYWN0UGFyYW1ldGVyID0gY29udHJhY3QucGFyYW1ldGVyO1xuICAgIGNvbnRyYWN0UGFyYW1ldGVyLnZhbHVlLm93bmVyX2FkZHJlc3MgPSB0aGlzLl9vd25lckFkZHJlc3MudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICBjb250cmFjdFBhcmFtZXRlci52YWx1ZS5iYWxhbmNlID0gTnVtYmVyKHRoaXMuX2JhbGFuY2UpO1xuICAgIGNvbnRyYWN0UGFyYW1ldGVyLnZhbHVlLnJlY2VpdmVyX2FkZHJlc3MgPSB0aGlzLl9yZWNlaXZlckFkZHJlc3MudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICBjb250cmFjdFBhcmFtZXRlci52YWx1ZS5yZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlO1xuICAgIGNvbnRyYWN0UGFyYW1ldGVyLnR5cGVfdXJsID0gVU5ERUxFR0FUSU9OX1RZUEVfVVJMO1xuICAgIGNvbnRyYWN0LnR5cGUgPSAnVW5EZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QnO1xuICAgIGNvbnN0IGhleEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHJhd0RhdGFIZXgsICdoZXgnKTtcbiAgICBjb25zdCBpZCA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShoZXhCdWZmZXIpLmRpZ2VzdCgnaGV4Jyk7XG4gICAgY29uc3QgdHhSZWNlaXB0OiBUcmFuc2FjdGlvblJlY2VpcHQgPSB7XG4gICAgICByYXdfZGF0YTogcmF3RGF0YSxcbiAgICAgIHJhd19kYXRhX2hleDogcmF3RGF0YUhleCxcbiAgICAgIHR4SUQ6IGlkLFxuICAgICAgc2lnbmF0dXJlOiB0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZSxcbiAgICB9O1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZywgdHhSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGdldCB0aGUgdW5kZWxlZ2F0ZSByZXNvdXJjZSB0cmFuc2FjdGlvbiByYXcgZGF0YSBoZXhcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gdGhlIHVuZGVsZWdhdGUgcmVzb3VyY2UgdHJhbnNhY3Rpb24gcmF3IGRhdGEgaGV4XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0UmVzb3VyY2VNYW5hZ2VtZW50VHhSYXdEYXRhSGV4KCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmF3Q29udHJhY3QgPSB7XG4gICAgICBvd25lckFkZHJlc3M6IGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKHRoaXMuX293bmVyQWRkcmVzcyksXG4gICAgICByZWNlaXZlckFkZHJlc3M6IGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKHRoaXMuX3JlY2VpdmVyQWRkcmVzcyksXG4gICAgICBiYWxhbmNlOiB0aGlzLl9iYWxhbmNlLFxuICAgICAgcmVzb3VyY2U6IHRoaXMuX3Jlc291cmNlLFxuICAgIH07XG4gICAgY29uc3QgdW5kZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QgPSBwcm90b2NvbC5VbkRlbGVnYXRlUmVzb3VyY2VDb250cmFjdC5mcm9tT2JqZWN0KHJhd0NvbnRyYWN0KTtcbiAgICBjb25zdCB1bmRlbGVnYXRlUmVzb3VyY2VDb250cmFjdEJ5dGVzID1cbiAgICAgIHByb3RvY29sLlVuRGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0LmVuY29kZSh1bmRlbGVnYXRlUmVzb3VyY2VDb250cmFjdCkuZmluaXNoKCk7XG4gICAgY29uc3QgdHhDb250cmFjdCA9IHtcbiAgICAgIHR5cGU6IENvbnRyYWN0VHlwZS5VbkRlbGVnYXRlUmVzb3VyY2VDb250cmFjdCxcbiAgICAgIHBhcmFtZXRlcjoge1xuICAgICAgICB2YWx1ZTogdW5kZWxlZ2F0ZVJlc291cmNlQ29udHJhY3RCeXRlcyxcbiAgICAgICAgdHlwZV91cmw6IFVOREVMRUdBVElPTl9UWVBFX1VSTCxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCByYXcgPSB7XG4gICAgICByZWZCbG9ja0J5dGVzOiBCdWZmZXIuZnJvbSh0aGlzLl9yZWZCbG9ja0J5dGVzLCAnaGV4JyksXG4gICAgICByZWZCbG9ja0hhc2g6IEJ1ZmZlci5mcm9tKHRoaXMuX3JlZkJsb2NrSGFzaCwgJ2hleCcpLFxuICAgICAgZXhwaXJhdGlvbjogdGhpcy5fZXhwaXJhdGlvbiB8fCBEYXRlLm5vdygpICsgVFJBTlNBQ1RJT05fREVGQVVMVF9FWFBJUkFUSU9OLFxuICAgICAgdGltZXN0YW1wOiB0aGlzLl90aW1lc3RhbXAgfHwgRGF0ZS5ub3coKSxcbiAgICAgIGNvbnRyYWN0OiBbdHhDb250cmFjdF0sXG4gICAgfTtcbiAgICBjb25zdCByYXdUeCA9IHByb3RvY29sLlRyYW5zYWN0aW9uLnJhdy5jcmVhdGUocmF3KTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20ocHJvdG9jb2wuVHJhbnNhY3Rpb24ucmF3LmVuY29kZShyYXdUeCkuZmluaXNoKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,65 @@
1
+ import { TransactionType, BaseKey } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ import { Transaction } from './transaction';
5
+ import { TransactionReceipt, UnfreezeBalanceV2Contract } from './iface';
6
+ export declare class UnfreezeBalanceTxBuilder extends TransactionBuilder {
7
+ protected _signingKeys: BaseKey[];
8
+ private _unfreezeBalance;
9
+ private _resource;
10
+ constructor(_coinConfig: Readonly<CoinConfig>);
11
+ /** @inheritdoc */
12
+ protected get transactionType(): TransactionType;
13
+ /**
14
+ * Set the unfrozen balance amount
15
+ *
16
+ * @param amount amount in TRX to unfreeze
17
+ * @returns the builder with the new parameter set
18
+ */
19
+ setUnfreezeBalance(amount: string): this;
20
+ /**
21
+ * Set the resource type
22
+ *
23
+ * @param resource resource type to unfreeze
24
+ * @returns the builder with the new parameter set
25
+ */
26
+ setResource(resource: string): this;
27
+ /** @inheritdoc */
28
+ extendValidTo(extensionMs: number): void;
29
+ initBuilder(rawTransaction: TransactionReceipt | string): this;
30
+ /**
31
+ * Initialize the freeze contract call specific data
32
+ *
33
+ * @param {UnfreezeBalanceV2Contract} unfreezeContractCall object with freeze txn data
34
+ */
35
+ protected initUnfreezeContractCall(unfreezeContractCall: UnfreezeBalanceV2Contract): void;
36
+ protected buildImplementation(): Promise<Transaction>;
37
+ /**
38
+ * Helper method to create the freeze balance transaction
39
+ */
40
+ private createUnfreezeBalanceTransaction;
41
+ /**
42
+ * Helper method to get the unfreeze balance transaction raw data hex
43
+ *
44
+ * @returns {string} the freeze balance transaction raw data hex
45
+ */
46
+ private getUnfreezeRawDataHex;
47
+ /** @inheritdoc */
48
+ protected signImplementation(key: BaseKey): Transaction;
49
+ private applySignatures;
50
+ /**
51
+ * Validates the transaction
52
+ *
53
+ * @param {Transaction} transaction - The transaction to validate
54
+ * @throws {BuildTransactionError} when the transaction is invalid
55
+ */
56
+ validateTransaction(transaction: Transaction): void;
57
+ /**
58
+ * Validates if the transaction is a valid unfreeze transaction
59
+ *
60
+ * @param {TransactionReceipt} transaction - The transaction to validate
61
+ * @throws {BuildTransactionError} when the transaction is invalid
62
+ */
63
+ private validateFreezeTransactionFields;
64
+ }
65
+ //# sourceMappingURL=unfreezeBalanceTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unfreezeBalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/unfreezeBalanceTxBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,OAAO,EAA+D,MAAM,sBAAsB,CAAC;AAC7H,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAYxE,qBAAa,wBAAyB,SAAQ,kBAAkB;IAC9D,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;IAClC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C,kBAAkB;IAClB,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKxC;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMnC,kBAAkB;IAClB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAoBxC,WAAW,CAAC,cAAc,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI;IAiB9D;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,CAAC,oBAAoB,EAAE,yBAAyB,GAAG,IAAI;cAezE,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAc3D;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAqBxC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IA0B7B,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAUvD,OAAO,CAAC,eAAe;IAQvB;;;;;OAKG;IACH,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAInD;;;;;OAKG;IACH,OAAO,CAAC,+BAA+B;CAiBxC"}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnfreezeBalanceTxBuilder = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
6
+ const transactionBuilder_1 = require("./transactionBuilder");
7
+ const transaction_1 = require("./transaction");
8
+ const utils_1 = require("./utils");
9
+ const tron_1 = require("../../resources/protobuf/tron");
10
+ var ContractType = tron_1.protocol.Transaction.Contract.ContractType;
11
+ class UnfreezeBalanceTxBuilder extends transactionBuilder_1.TransactionBuilder {
12
+ constructor(_coinConfig) {
13
+ super(_coinConfig);
14
+ this._signingKeys = [];
15
+ this.transaction = new transaction_1.Transaction(_coinConfig);
16
+ }
17
+ /** @inheritdoc */
18
+ get transactionType() {
19
+ return sdk_core_1.TransactionType.StakingDeactivate;
20
+ }
21
+ /**
22
+ * Set the unfrozen balance amount
23
+ *
24
+ * @param amount amount in TRX to unfreeze
25
+ * @returns the builder with the new parameter set
26
+ */
27
+ setUnfreezeBalance(amount) {
28
+ this._unfreezeBalance = amount;
29
+ return this;
30
+ }
31
+ /**
32
+ * Set the resource type
33
+ *
34
+ * @param resource resource type to unfreeze
35
+ * @returns the builder with the new parameter set
36
+ */
37
+ setResource(resource) {
38
+ this.validateResource(resource);
39
+ this._resource = resource;
40
+ return this;
41
+ }
42
+ /** @inheritdoc */
43
+ extendValidTo(extensionMs) {
44
+ if (this.transaction.signature && this.transaction.signature.length > 0) {
45
+ throw new sdk_core_1.ExtendTransactionError('Cannot extend a signed transaction');
46
+ }
47
+ if (extensionMs <= 0) {
48
+ throw new Error('Value cannot be below zero');
49
+ }
50
+ if (extensionMs > utils_1.TRANSACTION_MAX_EXPIRATION) {
51
+ throw new sdk_core_1.ExtendTransactionError('The expiration cannot be extended more than one year');
52
+ }
53
+ if (this._expiration) {
54
+ this._expiration = this._expiration + extensionMs;
55
+ }
56
+ else {
57
+ throw new Error('There is not expiration to extend');
58
+ }
59
+ }
60
+ initBuilder(rawTransaction) {
61
+ this.transaction = this.fromImplementation(rawTransaction);
62
+ this.transaction.setTransactionType(this.transactionType);
63
+ this.validateRawTransaction(rawTransaction);
64
+ const tx = this.fromImplementation(rawTransaction);
65
+ this.transaction = tx;
66
+ this._signingKeys = [];
67
+ const rawData = tx.toJson().raw_data;
68
+ this._refBlockBytes = rawData.ref_block_bytes;
69
+ this._refBlockHash = rawData.ref_block_hash;
70
+ this._expiration = rawData.expiration;
71
+ this._timestamp = rawData.timestamp;
72
+ const contractCall = rawData.contract[0];
73
+ this.initUnfreezeContractCall(contractCall);
74
+ return this;
75
+ }
76
+ /**
77
+ * Initialize the freeze contract call specific data
78
+ *
79
+ * @param {UnfreezeBalanceV2Contract} unfreezeContractCall object with freeze txn data
80
+ */
81
+ initUnfreezeContractCall(unfreezeContractCall) {
82
+ const { resource, owner_address, unfreeze_balance } = unfreezeContractCall.parameter.value;
83
+ if (owner_address) {
84
+ this.source({ address: (0, utils_1.getBase58AddressFromHex)(owner_address) });
85
+ }
86
+ if (resource) {
87
+ this.setResource(resource);
88
+ }
89
+ if (unfreeze_balance) {
90
+ this.setUnfreezeBalance(unfreeze_balance.toString());
91
+ }
92
+ }
93
+ async buildImplementation() {
94
+ this.createUnfreezeBalanceTransaction();
95
+ /** @inheritdoccreateTransaction */
96
+ // This method must be extended on child classes
97
+ if (this._signingKeys.length > 0) {
98
+ this.applySignatures();
99
+ }
100
+ if (!this.transaction.id) {
101
+ throw new sdk_core_1.BuildTransactionError('A valid transaction must have an id');
102
+ }
103
+ return Promise.resolve(this.transaction);
104
+ }
105
+ /**
106
+ * Helper method to create the freeze balance transaction
107
+ */
108
+ createUnfreezeBalanceTransaction() {
109
+ const rawDataHex = this.getUnfreezeRawDataHex();
110
+ const rawData = (0, utils_1.decodeTransaction)(rawDataHex);
111
+ const contract = rawData.contract[0];
112
+ const contractParameter = contract.parameter;
113
+ contractParameter.value.owner_address = this._ownerAddress.toLocaleLowerCase();
114
+ contractParameter.value.unfreeze_balance = Number(this._unfreezeBalance);
115
+ contractParameter.value.resource = this._resource;
116
+ contractParameter.type_url = 'type.googleapis.com/protocol.UnfreezeBalanceV2Contract';
117
+ contract.type = 'UnfreezeBalanceV2Contract';
118
+ const hexBuffer = Buffer.from(rawDataHex, 'hex');
119
+ const id = (0, crypto_1.createHash)('sha256').update(hexBuffer).digest('hex');
120
+ const txRecip = {
121
+ raw_data: rawData,
122
+ raw_data_hex: rawDataHex,
123
+ txID: id,
124
+ signature: this.transaction.signature,
125
+ };
126
+ this.transaction = new transaction_1.Transaction(this._coinConfig, txRecip);
127
+ }
128
+ /**
129
+ * Helper method to get the unfreeze balance transaction raw data hex
130
+ *
131
+ * @returns {string} the freeze balance transaction raw data hex
132
+ */
133
+ getUnfreezeRawDataHex() {
134
+ const rawContract = {
135
+ ownerAddress: (0, utils_1.getByteArrayFromHexAddress)(this._ownerAddress),
136
+ unfreezeBalance: this._unfreezeBalance,
137
+ resource: this._resource,
138
+ };
139
+ const unfreezeContract = tron_1.protocol.UnfreezeBalanceV2Contract.fromObject(rawContract);
140
+ const unfreezeContractBytes = tron_1.protocol.UnfreezeBalanceV2Contract.encode(unfreezeContract).finish();
141
+ const txContract = {
142
+ type: ContractType.UnfreezeBalanceV2Contract,
143
+ parameter: {
144
+ value: unfreezeContractBytes,
145
+ type_url: 'type.googleapis.com/protocol.UnfreezeBalanceV2Contract',
146
+ },
147
+ };
148
+ const raw = {
149
+ refBlockBytes: Buffer.from(this._refBlockBytes, 'hex'),
150
+ refBlockHash: Buffer.from(this._refBlockHash, 'hex'),
151
+ expiration: this._expiration || Date.now() + utils_1.TRANSACTION_DEFAULT_EXPIRATION,
152
+ timestamp: this._timestamp || Date.now(),
153
+ contract: [txContract],
154
+ };
155
+ const rawTx = tron_1.protocol.Transaction.raw.create(raw);
156
+ return Buffer.from(tron_1.protocol.Transaction.raw.encode(rawTx).finish()).toString('hex');
157
+ }
158
+ /** @inheritdoc */
159
+ signImplementation(key) {
160
+ if (this._signingKeys.some((signingKey) => signingKey.key === key.key)) {
161
+ throw new sdk_core_1.SigningError('Duplicated key');
162
+ }
163
+ this._signingKeys.push(key);
164
+ // We keep this return for compatibility but is not meant to be use
165
+ return this.transaction;
166
+ }
167
+ applySignatures() {
168
+ if (!this.transaction.inputs) {
169
+ throw new sdk_core_1.SigningError('Transaction has no inputs');
170
+ }
171
+ this._signingKeys.forEach((key) => this.applySignature(key));
172
+ }
173
+ /**
174
+ * Validates the transaction
175
+ *
176
+ * @param {Transaction} transaction - The transaction to validate
177
+ * @throws {BuildTransactionError} when the transaction is invalid
178
+ */
179
+ validateTransaction(transaction) {
180
+ this.validateFreezeTransactionFields();
181
+ }
182
+ /**
183
+ * Validates if the transaction is a valid unfreeze transaction
184
+ *
185
+ * @param {TransactionReceipt} transaction - The transaction to validate
186
+ * @throws {BuildTransactionError} when the transaction is invalid
187
+ */
188
+ validateFreezeTransactionFields() {
189
+ if (!this._unfreezeBalance) {
190
+ throw new sdk_core_1.BuildTransactionError('Missing parameter: unfreezeBalance');
191
+ }
192
+ if (!this._ownerAddress) {
193
+ throw new sdk_core_1.BuildTransactionError('Missing parameter: source');
194
+ }
195
+ if (!this._resource) {
196
+ throw new sdk_core_1.BuildTransactionError('Missing parameter: resource');
197
+ }
198
+ if (!this._refBlockBytes || !this._refBlockHash) {
199
+ throw new sdk_core_1.BuildTransactionError('Missing block reference information');
200
+ }
201
+ }
202
+ }
203
+ exports.UnfreezeBalanceTxBuilder = UnfreezeBalanceTxBuilder;
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5mcmVlemVCYWxhbmNlVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi91bmZyZWV6ZUJhbGFuY2VUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW9DO0FBQ3BDLG1EQUE2SDtBQUU3SCw2REFBMEQ7QUFDMUQsK0NBQTRDO0FBRTVDLG1DQU1pQjtBQUNqQix3REFBeUQ7QUFFekQsSUFBTyxZQUFZLEdBQUcsZUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBRWpFLE1BQWEsd0JBQXlCLFNBQVEsdUNBQWtCO0lBSzlELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxpQkFBaUIsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBQyxNQUFjO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsUUFBZ0I7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixhQUFhLENBQUMsV0FBbUI7UUFDL0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxN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QU0sSUFBSSxnQ0FBcUIsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNoRCxNQUFNLElBQUksZ0NBQXFCLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBMU5ELDREQTBOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlLCBCYXNlS2V5LCBFeHRlbmRUcmFuc2FjdGlvbkVycm9yLCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFNpZ25pbmdFcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblJlY2VpcHQsIFVuZnJlZXplQmFsYW5jZVYyQ29udHJhY3QgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7XG4gIGRlY29kZVRyYW5zYWN0aW9uLFxuICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyxcbiAgZ2V0QmFzZTU4QWRkcmVzc0Zyb21IZXgsXG4gIFRSQU5TQUNUSU9OX01BWF9FWFBJUkFUSU9OLFxuICBUUkFOU0FDVElPTl9ERUZBVUxUX0VYUElSQVRJT04sXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgcHJvdG9jb2wgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvcHJvdG9idWYvdHJvbic7XG5cbmltcG9ydCBDb250cmFjdFR5cGUgPSBwcm90b2NvbC5UcmFuc2FjdGlvbi5Db250cmFjdC5Db250cmFjdFR5cGU7XG5cbmV4cG9ydCBjbGFzcyBVbmZyZWV6ZUJhbGFuY2VUeEJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3NpZ25pbmdLZXlzOiBCYXNlS2V5W107XG4gIHByaXZhdGUgX3VuZnJlZXplQmFsYW5jZTogc3RyaW5nO1xuICBwcml2YXRlIF9yZXNvdXJjZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl9zaWduaW5nS2V5cyA9IFtdO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHVuZnJvemVuIGJhbGFuY2UgYW1vdW50XG4gICAqXG4gICAqIEBwYXJhbSBhbW91bnQgYW1vdW50IGluIFRSWCB0byB1bmZyZWV6ZVxuICAgKiBAcmV0dXJucyB0aGUgYnVpbGRlciB3aXRoIHRoZSBuZXcgcGFyYW1ldGVyIHNldFxuICAgKi9cbiAgc2V0VW5mcmVlemVCYWxhbmNlKGFtb3VudDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fdW5mcmVlemVCYWxhbmNlID0gYW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcmVzb3VyY2UgdHlwZVxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2UgcmVzb3VyY2UgdHlwZSB0byB1bmZyZWV6ZVxuICAgKiBAcmV0dXJucyB0aGUgYnVpbGRlciB3aXRoIHRoZSBuZXcgcGFyYW1ldGVyIHNldFxuICAgKi9cbiAgc2V0UmVzb3VyY2UocmVzb3VyY2U6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVSZXNvdXJjZShyZXNvdXJjZSk7XG4gICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBleHRlbmRWYWxpZFRvKGV4dGVuc2lvbk1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5zaWduYXR1cmUgJiYgdGhpcy50cmFuc2FjdGlvbi5zaWduYXR1cmUubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEV4dGVuZFRyYW5zYWN0aW9uRXJyb3IoJ0Nhbm5vdCBleHRlbmQgYSBzaWduZWQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBpZiAoZXh0ZW5zaW9uTXMgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSBjYW5ub3QgYmUgYmVsb3cgemVybycpO1xuICAgIH1cblxuICAgIGlmIChleHRlbnNpb25NcyA+IFRSQU5TQUNUSU9OX01BWF9FWFBJUkFUSU9OKSB7XG4gICAgICB0aHJvdyBuZXcgRXh0ZW5kVHJhbnNhY3Rpb25FcnJvcignVGhlIGV4cGlyYXRpb24gY2Fubm90IGJlIGV4dGVuZGVkIG1vcmUgdGhhbiBvbmUgeWVhcicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9leHBpcmF0aW9uKSB7XG4gICAgICB0aGlzLl9leHBpcmF0aW9uID0gdGhpcy5fZXhwaXJhdGlvbiArIGV4dGVuc2lvbk1zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZXJlIGlzIG5vdCBleHBpcmF0aW9uIHRvIGV4dGVuZCcpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRCdWlsZGVyKHJhd1RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblJlY2VpcHQgfCBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gdGhpcy5mcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKHRoaXMudHJhbnNhY3Rpb25UeXBlKTtcbiAgICB0aGlzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIGNvbnN0IHR4ID0gdGhpcy5mcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0eDtcbiAgICB0aGlzLl9zaWduaW5nS2V5cyA9IFtdO1xuICAgIGNvbnN0IHJhd0RhdGEgPSB0eC50b0pzb24oKS5yYXdfZGF0YTtcbiAgICB0aGlzLl9yZWZCbG9ja0J5dGVzID0gcmF3RGF0YS5yZWZfYmxvY2tfYnl0ZXM7XG4gICAgdGhpcy5fcmVmQmxvY2tIYXNoID0gcmF3RGF0YS5yZWZfYmxvY2tfaGFzaDtcbiAgICB0aGlzLl9leHBpcmF0aW9uID0gcmF3RGF0YS5leHBpcmF0aW9uO1xuICAgIHRoaXMuX3RpbWVzdGFtcCA9IHJhd0RhdGEudGltZXN0YW1wO1xuICAgIGNvbnN0IGNvbnRyYWN0Q2FsbCA9IHJhd0RhdGEuY29udHJhY3RbMF0gYXMgVW5mcmVlemVCYWxhbmNlVjJDb250cmFjdDtcbiAgICB0aGlzLmluaXRVbmZyZWV6ZUNvbnRyYWN0Q2FsbChjb250cmFjdENhbGwpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGZyZWV6ZSBjb250cmFjdCBjYWxsIHNwZWNpZmljIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtVbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0fSB1bmZyZWV6ZUNvbnRyYWN0Q2FsbCBvYmplY3Qgd2l0aCBmcmVlemUgdHhuIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBpbml0VW5mcmVlemVDb250cmFjdENhbGwodW5mcmVlemVDb250cmFjdENhbGw6IFVuZnJlZXplQmFsYW5jZVYyQ29udHJhY3QpOiB2b2lkIHtcbiAgICBjb25zdCB7IHJlc291cmNlLCBvd25lcl9hZGRyZXNzLCB1bmZyZWV6ZV9iYWxhbmNlIH0gPSB1bmZyZWV6ZUNvbnRyYWN0Q2FsbC5wYXJhbWV0ZXIudmFsdWU7XG4gICAgaWYgKG93bmVyX2FkZHJlc3MpIHtcbiAgICAgIHRoaXMuc291cmNlKHsgYWRkcmVzczogZ2V0QmFzZTU4QWRkcmVzc0Zyb21IZXgob3duZXJfYWRkcmVzcykgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc291cmNlKSB7XG4gICAgICB0aGlzLnNldFJlc291cmNlKHJlc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAodW5mcmVlemVfYmFsYW5jZSkge1xuICAgICAgdGhpcy5zZXRVbmZyZWV6ZUJhbGFuY2UodW5mcmVlemVfYmFsYW5jZS50b1N0cmluZygpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy5jcmVhdGVVbmZyZWV6ZUJhbGFuY2VUcmFuc2FjdGlvbigpO1xuICAgIC8qKiBAaW5oZXJpdGRvY2NyZWF0ZVRyYW5zYWN0aW9uICovXG4gICAgLy8gVGhpcyBtZXRob2QgbXVzdCBiZSBleHRlbmRlZCBvbiBjaGlsZCBjbGFzc2VzXG4gICAgaWYgKHRoaXMuX3NpZ25pbmdLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYXBwbHlTaWduYXR1cmVzKCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLmlkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBIHZhbGlkIHRyYW5zYWN0aW9uIG11c3QgaGF2ZSBhbiBpZCcpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMudHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gY3JlYXRlIHRoZSBmcmVlemUgYmFsYW5jZSB0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVVbmZyZWV6ZUJhbGFuY2VUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCByYXdEYXRhSGV4ID0gdGhpcy5nZXRVbmZyZWV6ZVJhd0RhdGFIZXgoKTtcbiAgICBjb25zdCByYXdEYXRhID0gZGVjb2RlVHJhbnNhY3Rpb24ocmF3RGF0YUhleCk7XG4gICAgY29uc3QgY29udHJhY3QgPSByYXdEYXRhLmNvbnRyYWN0WzBdIGFzIFVuZnJlZXplQmFsYW5jZVYyQ29udHJhY3Q7XG4gICAgY29uc3QgY29udHJhY3RQYXJhbWV0ZXIgPSBjb250cmFjdC5wYXJhbWV0ZXI7XG4gICAgY29udHJhY3RQYXJhbWV0ZXIudmFsdWUub3duZXJfYWRkcmVzcyA9IHRoaXMuX293bmVyQWRkcmVzcy50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIGNvbnRyYWN0UGFyYW1ldGVyLnZhbHVlLnVuZnJlZXplX2JhbGFuY2UgPSBOdW1iZXIodGhpcy5fdW5mcmVlemVCYWxhbmNlKTtcbiAgICBjb250cmFjdFBhcmFtZXRlci52YWx1ZS5yZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlO1xuICAgIGNvbnRyYWN0UGFyYW1ldGVyLnR5cGVfdXJsID0gJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuVW5mcmVlemVCYWxhbmNlVjJDb250cmFjdCc7XG4gICAgY29udHJhY3QudHlwZSA9ICdVbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0JztcbiAgICBjb25zdCBoZXhCdWZmZXIgPSBCdWZmZXIuZnJvbShyYXdEYXRhSGV4LCAnaGV4Jyk7XG4gICAgY29uc3QgaWQgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoaGV4QnVmZmVyKS5kaWdlc3QoJ2hleCcpO1xuICAgIGNvbnN0IHR4UmVjaXA6IFRyYW5zYWN0aW9uUmVjZWlwdCA9IHtcbiAgICAgIHJhd19kYXRhOiByYXdEYXRhLFxuICAgICAgcmF3X2RhdGFfaGV4OiByYXdEYXRhSGV4LFxuICAgICAgdHhJRDogaWQsXG4gICAgICBzaWduYXR1cmU6IHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlLFxuICAgIH07XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCB0eFJlY2lwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGdldCB0aGUgdW5mcmVlemUgYmFsYW5jZSB0cmFuc2FjdGlvbiByYXcgZGF0YSBoZXhcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gdGhlIGZyZWV6ZSBiYWxhbmNlIHRyYW5zYWN0aW9uIHJhdyBkYXRhIGhleFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRVbmZyZWV6ZVJhd0RhdGFIZXgoKTogc3RyaW5nIHtcbiAgICBjb25zdCByYXdDb250cmFjdCA9IHtcbiAgICAgIG93bmVyQWRkcmVzczogZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3ModGhpcy5fb3duZXJBZGRyZXNzKSxcbiAgICAgIHVuZnJlZXplQmFsYW5jZTogdGhpcy5fdW5mcmVlemVCYWxhbmNlLFxuICAgICAgcmVzb3VyY2U6IHRoaXMuX3Jlc291cmNlLFxuICAgIH07XG4gICAgY29uc3QgdW5mcmVlemVDb250cmFjdCA9IHByb3RvY29sLlVuZnJlZXplQmFsYW5jZVYyQ29udHJhY3QuZnJvbU9iamVjdChyYXdDb250cmFjdCk7XG4gICAgY29uc3QgdW5mcmVlemVDb250cmFjdEJ5dGVzID0gcHJvdG9jb2wuVW5mcmVlemVCYWxhbmNlVjJDb250cmFjdC5lbmNvZGUodW5mcmVlemVDb250cmFjdCkuZmluaXNoKCk7XG4gICAgY29uc3QgdHhDb250cmFjdCA9IHtcbiAgICAgIHR5cGU6IENvbnRyYWN0VHlwZS5VbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0LFxuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB1bmZyZWV6ZUNvbnRyYWN0Qnl0ZXMsXG4gICAgICAgIHR5cGVfdXJsOiAndHlwZS5nb29nbGVhcGlzLmNvbS9wcm90b2NvbC5VbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0JyxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCByYXcgPSB7XG4gICAgICByZWZCbG9ja0J5dGVzOiBCdWZmZXIuZnJvbSh0aGlzLl9yZWZCbG9ja0J5dGVzLCAnaGV4JyksXG4gICAgICByZWZCbG9ja0hhc2g6IEJ1ZmZlci5mcm9tKHRoaXMuX3JlZkJsb2NrSGFzaCwgJ2hleCcpLFxuICAgICAgZXhwaXJhdGlvbjogdGhpcy5fZXhwaXJhdGlvbiB8fCBEYXRlLm5vdygpICsgVFJBTlNBQ1RJT05fREVGQVVMVF9FWFBJUkFUSU9OLFxuICAgICAgdGltZXN0YW1wOiB0aGlzLl90aW1lc3RhbXAgfHwgRGF0ZS5ub3coKSxcbiAgICAgIGNvbnRyYWN0OiBbdHhDb250cmFjdF0sXG4gICAgfTtcbiAgICBjb25zdCByYXdUeCA9IHByb3RvY29sLlRyYW5zYWN0aW9uLnJhdy5jcmVhdGUocmF3KTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20ocHJvdG9jb2wuVHJhbnNhY3Rpb24ucmF3LmVuY29kZShyYXdUeCkuZmluaXNoKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICBpZiAodGhpcy5fc2lnbmluZ0tleXMuc29tZSgoc2lnbmluZ0tleSkgPT4gc2lnbmluZ0tleS5rZXkgPT09IGtleS5rZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdEdXBsaWNhdGVkIGtleScpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduaW5nS2V5cy5wdXNoKGtleSk7XG5cbiAgICAvLyBXZSBrZWVwIHRoaXMgcmV0dXJuIGZvciBjb21wYXRpYmlsaXR5IGJ1dCBpcyBub3QgbWVhbnQgdG8gYmUgdXNlXG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2lnbmF0dXJlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uaW5wdXRzKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdUcmFuc2FjdGlvbiBoYXMgbm8gaW5wdXRzJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2lnbmluZ0tleXMuZm9yRWFjaCgoa2V5KSA9PiB0aGlzLmFwcGx5U2lnbmF0dXJlKGtleSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24gLSBUaGUgdHJhbnNhY3Rpb24gdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyB7QnVpbGRUcmFuc2FjdGlvbkVycm9yfSB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkXG4gICAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVGcmVlemVUcmFuc2FjdGlvbkZpZWxkcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBpZiB0aGUgdHJhbnNhY3Rpb24gaXMgYSB2YWxpZCB1bmZyZWV6ZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUmVjZWlwdH0gdHJhbnNhY3Rpb24gLSBUaGUgdHJhbnNhY3Rpb24gdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyB7QnVpbGRUcmFuc2FjdGlvbkVycm9yfSB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRnJlZXplVHJhbnNhY3Rpb25GaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl91bmZyZWV6ZUJhbGFuY2UpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgcGFyYW1ldGVyOiB1bmZyZWV6ZUJhbGFuY2UnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX293bmVyQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBwYXJhbWV0ZXI6IHNvdXJjZScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcmVzb3VyY2UpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgcGFyYW1ldGVyOiByZXNvdXJjZScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcmVmQmxvY2tCeXRlcyB8fCAhdGhpcy5fcmVmQmxvY2tIYXNoKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIGJsb2NrIHJlZmVyZW5jZSBpbmZvcm1hdGlvbicpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,12 +1,16 @@
1
- /// <reference types="node" />
2
- import { TransferContract, RawData, AccountPermissionUpdateContract, TransactionReceipt, TriggerSmartContract } from './iface';
1
+ import { protocol } from '../../resources/protobuf/tron';
2
+ import { TransferContract, RawData, AccountPermissionUpdateContract, TransactionReceipt, TriggerSmartContract, FreezeBalanceContractParameter, VoteWitnessContractParameter, UnfreezeBalanceContractParameter, WithdrawExpireUnfreezeContractParameter, ResourceManagementContractParameter } from './iface';
3
+ export declare const TRANSACTION_MAX_EXPIRATION = 86400000;
4
+ export declare const TRANSACTION_DEFAULT_EXPIRATION = 3600000;
5
+ export type BytesLike = number[] | Uint8Array;
3
6
  export declare const tokenMainnetContractAddresses: string[];
4
7
  export declare const tokenTestnetContractAddresses: string[];
5
8
  /**
6
9
  * Tron-specific helper functions
7
10
  */
8
- export declare type TronBinaryLike = ByteArray | Buffer | Uint8Array | string;
9
- export declare type ByteArray = number[];
11
+ export type ByteArray = number[];
12
+ export type TronBinaryLike = ByteArray | Buffer | Uint8Array | string;
13
+ export declare const VALID_RESOURCE_TYPES: string[];
10
14
  /**
11
15
  * @param address
12
16
  */
@@ -82,6 +86,13 @@ export declare function decodeRawTransaction(hexString: string): {
82
86
  blockHash: string;
83
87
  feeLimit: string;
84
88
  };
89
+ /**
90
+ * Converts a base64 encoded string to hex
91
+ *
92
+ * @param base64 - The base64 encoded string to convert
93
+ * @returns {string} - The hex representation
94
+ */
95
+ export declare function getHexFromBase64(base64: string): string;
85
96
  /**
86
97
  * Indicates whether the passed string is a safe hex string for tron's purposes.
87
98
  *
@@ -108,6 +119,56 @@ export declare function decodeTriggerSmartContract(base64: string): TriggerSmart
108
119
  * @returns {AccountPermissionUpdateContract}
109
120
  */
110
121
  export declare function decodeAccountPermissionUpdateContract(base64: string): AccountPermissionUpdateContract;
122
+ /**
123
+ * Deserialize the segment of the txHex corresponding with freeze balance contract
124
+ *
125
+ * @param {string} base64 - The base64 encoded contract data
126
+ * @returns {FreezeBalanceContractParameter[]} - Array containing the decoded freeze contract
127
+ */
128
+ export declare function decodeFreezeBalanceV2Contract(base64: string): FreezeBalanceContractParameter[];
129
+ /**
130
+ * Deserialize the segment of the txHex corresponding with vote witness contract
131
+ *
132
+ * @param {string} base64 - The base64 encoded contract data
133
+ * @returns {VoteWitnessContractParameter[]} - Array containing the decoded vote witness contract
134
+ */
135
+ export declare function decodeVoteWitnessContract(base64: string): VoteWitnessContractParameter[];
136
+ /**
137
+ * Deserialize the segment of the txHex corresponding with unfreeze balance contract
138
+ *
139
+ * @param {string} base64 - The base64 encoded contract data
140
+ * @returns {UnfreezeBalanceContractParameter[]} - Array containing the decoded unfreeze contract
141
+ */
142
+ export declare function decodeUnfreezeBalanceV2Contract(base64: string): UnfreezeBalanceContractParameter[];
143
+ /**
144
+ * Deserialize the segment of the txHex corresponding with withdraw balance contract
145
+ * Decoded contract is the same as withdraw expire unfreeze
146
+ *
147
+ * @param {string} base64 - The base64 encoded contract data
148
+ * @returns {WithdrawExpireUnfreezeContractParameter[]} - Array containing the decoded withdraw contract
149
+ */
150
+ export declare function decodeWithdrawBalanceContract(base64: string): WithdrawExpireUnfreezeContractParameter[];
151
+ /**
152
+ * Deserialize the segment of the txHex corresponding with withdraw expire unfreeze contract
153
+ *
154
+ * @param {string} base64 - The base64 encoded contract data
155
+ * @returns {WithdrawExpireUnfreezeContractParameter[]} - Array containing the decoded withdraw contract
156
+ */
157
+ export declare function decodeWithdrawExpireUnfreezeContract(base64: string): WithdrawExpireUnfreezeContractParameter[];
158
+ /**
159
+ * Deserialize the segment of the txHex corresponding with delegate resource contract
160
+ *
161
+ * @param {string} base64 - The base64 encoded contract data
162
+ * @returns {ResourceManagementContractParameter[]} - Array containing the decoded delegate resource contract
163
+ */
164
+ export declare function decodeDelegateResourceContract(base64: string): ResourceManagementContractParameter[];
165
+ /**
166
+ * Deserialize the segment of the txHex corresponding with undelegate resource contract
167
+ *
168
+ * @param {string} base64 - The base64 encoded contract data
169
+ * @returns {ResourceManagementContractParameter[]} - Array containing the decoded undelegate resource contract
170
+ */
171
+ export declare function decodeUnDelegateResourceContract(base64: string): ResourceManagementContractParameter[];
111
172
  /**
112
173
  * @param rawTransaction
113
174
  */
@@ -141,4 +202,24 @@ export declare function encodeDataParams(types: string[], values: any[], methodI
141
202
  * @param data - encoded string
142
203
  */
143
204
  export declare function decodeDataParams(types: string[], data: string): any[];
205
+ /**
206
+ * Generate raw_data_hex for a TRON transaction
207
+ *
208
+ * @param {Object} rawData - The transaction raw data object containing:
209
+ * @param {Array} rawData.contract - Array of contract objects
210
+ * @param {string} rawData.refBlockBytes - Reference block bytes
211
+ * @param {string} rawData.refBlockHash - Reference block hash
212
+ * @param {number} rawData.expiration - Transaction expiration timestamp
213
+ * @param {number} rawData.timestamp - Transaction creation timestamp
214
+ * @param {number} [rawData.feeLimit] - Optional fee limit for smart contracts
215
+ * @returns {string} The hex string representation of the encoded transaction data
216
+ */
217
+ export declare function generateRawDataHex(rawData?: {
218
+ contract?: protocol.Transaction.Contract[];
219
+ refBlockBytes?: string;
220
+ refBlockHash?: string;
221
+ expiration?: number;
222
+ timestamp?: number;
223
+ feeLimit?: number;
224
+ }): string;
144
225
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}