@bitgo-beta/sdk-coin-trx 1.2.3-alpha.49 → 1.2.3-alpha.490

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 (133) 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 +104 -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 +217 -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 +3 -0
  34. package/dist/src/lib/transaction.d.ts.map +1 -1
  35. package/dist/src/lib/transaction.js +108 -6
  36. package/dist/src/lib/transactionBuilder.d.ts +53 -6
  37. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  38. package/dist/src/lib/transactionBuilder.js +114 -21
  39. package/dist/src/lib/undelegateResourceTxBuilder.d.ts +27 -0
  40. package/dist/src/lib/undelegateResourceTxBuilder.d.ts.map +1 -0
  41. package/dist/src/lib/undelegateResourceTxBuilder.js +104 -0
  42. package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts +65 -0
  43. package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts.map +1 -0
  44. package/dist/src/lib/unfreezeBalanceTxBuilder.js +210 -0
  45. package/dist/src/lib/utils.d.ts +85 -4
  46. package/dist/src/lib/utils.d.ts.map +1 -1
  47. package/dist/src/lib/utils.js +444 -47
  48. package/dist/src/lib/voteWitnessTxBuilder.d.ts +62 -0
  49. package/dist/src/lib/voteWitnessTxBuilder.d.ts.map +1 -0
  50. package/dist/src/lib/voteWitnessTxBuilder.js +219 -0
  51. package/dist/src/lib/withdrawBuilder.d.ts +49 -0
  52. package/dist/src/lib/withdrawBuilder.d.ts.map +1 -0
  53. package/dist/src/lib/withdrawBuilder.js +167 -0
  54. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts +49 -0
  55. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
  56. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.js +167 -0
  57. package/dist/src/lib/wrappedBuilder.d.ts +59 -1
  58. package/dist/src/lib/wrappedBuilder.d.ts.map +1 -1
  59. package/dist/src/lib/wrappedBuilder.js +101 -4
  60. package/dist/src/trx.d.ts +93 -4
  61. package/dist/src/trx.d.ts.map +1 -1
  62. package/dist/src/trx.js +500 -147
  63. package/dist/src/trxToken.d.ts +2 -2
  64. package/dist/src/trxToken.d.ts.map +1 -1
  65. package/dist/src/trxToken.js +14 -6
  66. package/dist/test/fixtures.d.ts +40 -0
  67. package/dist/test/fixtures.d.ts.map +1 -0
  68. package/dist/test/fixtures.js +46 -0
  69. package/dist/test/resources.d.ts +586 -0
  70. package/dist/test/resources.d.ts.map +1 -0
  71. package/dist/test/resources.js +746 -0
  72. package/dist/test/unit/index.d.ts +2 -0
  73. package/dist/test/unit/index.d.ts.map +1 -0
  74. package/dist/test/unit/index.js +19 -0
  75. package/dist/test/unit/keyPair.d.ts +2 -0
  76. package/dist/test/unit/keyPair.d.ts.map +1 -0
  77. package/dist/test/unit/keyPair.js +163 -0
  78. package/dist/test/unit/transaction.d.ts +2 -0
  79. package/dist/test/unit/transaction.d.ts.map +1 -0
  80. package/dist/test/unit/transaction.js +38 -0
  81. package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts +2 -0
  82. package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts.map +1 -0
  83. package/dist/test/unit/transactionBuilder/contractCallBuilder.js +315 -0
  84. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts +2 -0
  85. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts.map +1 -0
  86. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.js +339 -0
  87. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts +2 -0
  88. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts.map +1 -0
  89. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.js +365 -0
  90. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  91. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  92. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +55 -0
  93. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts +2 -0
  94. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts.map +1 -0
  95. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.js +339 -0
  96. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts +2 -0
  97. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts.map +1 -0
  98. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.js +336 -0
  99. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts +2 -0
  100. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts.map +1 -0
  101. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.js +277 -0
  102. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts +2 -0
  103. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts.map +1 -0
  104. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.js +213 -0
  105. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts +2 -0
  106. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
  107. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.js +213 -0
  108. package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts +2 -0
  109. package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts.map +1 -0
  110. package/dist/test/unit/transactionBuilder/wrappedBuilder.js +50 -0
  111. package/dist/test/unit/transactionBuilder.d.ts +2 -0
  112. package/dist/test/unit/transactionBuilder.d.ts.map +1 -0
  113. package/dist/test/unit/transactionBuilder.js +178 -0
  114. package/dist/test/unit/trx.d.ts +2 -0
  115. package/dist/test/unit/trx.d.ts.map +1 -0
  116. package/dist/test/unit/trx.js +639 -0
  117. package/dist/test/unit/util.d.ts +2 -0
  118. package/dist/test/unit/util.d.ts.map +1 -0
  119. package/dist/test/unit/util.js +141 -0
  120. package/dist/test/unit/verifyTransaction.d.ts +2 -0
  121. package/dist/test/unit/verifyTransaction.d.ts.map +1 -0
  122. package/dist/test/unit/verifyTransaction.js +573 -0
  123. package/dist/tsconfig.tsbuildinfo +1 -0
  124. package/package.json +22 -16
  125. package/.eslintignore +0 -5
  126. package/.mocharc.yml +0 -8
  127. package/CHANGELOG.md +0 -134
  128. package/resources/README.md +0 -31
  129. package/resources/protobuf/Contract.proto +0 -256
  130. package/resources/protobuf/Discover.proto +0 -44
  131. package/resources/protobuf/tron.d.ts +0 -11205
  132. package/resources/protobuf/tron.js +0 -33480
  133. package/resources/protobuf/tron.proto +0 -677
@@ -0,0 +1,210 @@
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
+ };
138
+ // Only include resource if it's not BANDWIDTH (the default value = 0)
139
+ // In protobuf3, default values are typically not encoded in the wire format.
140
+ // TRON's node re-serializes transactions and omits default values,
141
+ // so we must match that behavior to ensure consistent transaction hashes.
142
+ if (this._resource !== 'BANDWIDTH') {
143
+ rawContract.resource = this._resource;
144
+ }
145
+ const unfreezeContract = tron_1.protocol.UnfreezeBalanceV2Contract.fromObject(rawContract);
146
+ const unfreezeContractBytes = tron_1.protocol.UnfreezeBalanceV2Contract.encode(unfreezeContract).finish();
147
+ const txContract = {
148
+ type: ContractType.UnfreezeBalanceV2Contract,
149
+ parameter: {
150
+ value: unfreezeContractBytes,
151
+ type_url: 'type.googleapis.com/protocol.UnfreezeBalanceV2Contract',
152
+ },
153
+ };
154
+ const raw = {
155
+ refBlockBytes: Buffer.from(this._refBlockBytes, 'hex'),
156
+ refBlockHash: Buffer.from(this._refBlockHash, 'hex'),
157
+ expiration: this._expiration || Date.now() + utils_1.TRANSACTION_DEFAULT_EXPIRATION,
158
+ timestamp: this._timestamp || Date.now(),
159
+ contract: [txContract],
160
+ };
161
+ const rawTx = tron_1.protocol.Transaction.raw.create(raw);
162
+ return Buffer.from(tron_1.protocol.Transaction.raw.encode(rawTx).finish()).toString('hex');
163
+ }
164
+ /** @inheritdoc */
165
+ signImplementation(key) {
166
+ if (this._signingKeys.some((signingKey) => signingKey.key === key.key)) {
167
+ throw new sdk_core_1.SigningError('Duplicated key');
168
+ }
169
+ this._signingKeys.push(key);
170
+ // We keep this return for compatibility but is not meant to be use
171
+ return this.transaction;
172
+ }
173
+ applySignatures() {
174
+ if (!this.transaction.inputs) {
175
+ throw new sdk_core_1.SigningError('Transaction has no inputs');
176
+ }
177
+ this._signingKeys.forEach((key) => this.applySignature(key));
178
+ }
179
+ /**
180
+ * Validates the transaction
181
+ *
182
+ * @param {Transaction} transaction - The transaction to validate
183
+ * @throws {BuildTransactionError} when the transaction is invalid
184
+ */
185
+ validateTransaction(transaction) {
186
+ this.validateFreezeTransactionFields();
187
+ }
188
+ /**
189
+ * Validates if the transaction is a valid unfreeze transaction
190
+ *
191
+ * @param {TransactionReceipt} transaction - The transaction to validate
192
+ * @throws {BuildTransactionError} when the transaction is invalid
193
+ */
194
+ validateFreezeTransactionFields() {
195
+ if (!this._unfreezeBalance) {
196
+ throw new sdk_core_1.BuildTransactionError('Missing parameter: unfreezeBalance');
197
+ }
198
+ if (!this._ownerAddress) {
199
+ throw new sdk_core_1.BuildTransactionError('Missing parameter: source');
200
+ }
201
+ if (!this._resource) {
202
+ throw new sdk_core_1.BuildTransactionError('Missing parameter: resource');
203
+ }
204
+ if (!this._refBlockBytes || !this._refBlockHash) {
205
+ throw new sdk_core_1.BuildTransactionError('Missing block reference information');
206
+ }
207
+ }
208
+ }
209
+ exports.UnfreezeBalanceTxBuilder = UnfreezeBalanceTxBuilder;
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5mcmVlemVCYWxhbmNlVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi91bmZyZWV6ZUJhbGFuY2VUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW9DO0FBQ3BDLG1EQUE2SDtBQUU3SCw2REFBMEQ7QUFDMUQsK0NBQTRDO0FBRTVDLG1DQU1pQjtBQUNqQix3REFBeUQ7QUFFekQsSUFBTyxZQUFZLEdBQUcsZUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBRWpFLE1BQWEsd0JBQXlCLFNBQVEsdUNBQWtCO0lBSzlELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxpQkFBaUIsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBQyxNQUFjO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsUUFBZ0I7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixhQUFhLENBQUMsV0FBbUI7UUFDL0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxN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O1FBQzFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLCtCQUErQjtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2hELE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF0T0QsNERBc09DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUsIEJhc2VLZXksIEV4dGVuZFRyYW5zYWN0aW9uRXJyb3IsIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgU2lnbmluZ0Vycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVjZWlwdCwgVW5mcmVlemVCYWxhbmNlVjJDb250cmFjdCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHtcbiAgZGVjb2RlVHJhbnNhY3Rpb24sXG4gIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzLFxuICBnZXRCYXNlNThBZGRyZXNzRnJvbUhleCxcbiAgVFJBTlNBQ1RJT05fTUFYX0VYUElSQVRJT04sXG4gIFRSQU5TQUNUSU9OX0RFRkFVTFRfRVhQSVJBVElPTixcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBwcm90b2NvbCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9wcm90b2J1Zi90cm9uJztcblxuaW1wb3J0IENvbnRyYWN0VHlwZSA9IHByb3RvY29sLlRyYW5zYWN0aW9uLkNvbnRyYWN0LkNvbnRyYWN0VHlwZTtcblxuZXhwb3J0IGNsYXNzIFVuZnJlZXplQmFsYW5jZVR4QnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfc2lnbmluZ0tleXM6IEJhc2VLZXlbXTtcbiAgcHJpdmF0ZSBfdW5mcmVlemVCYWxhbmNlOiBzdHJpbmc7XG4gIHByaXZhdGUgX3Jlc291cmNlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3NpZ25pbmdLZXlzID0gW107XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdW5mcm96ZW4gYmFsYW5jZSBhbW91bnRcbiAgICpcbiAgICogQHBhcmFtIGFtb3VudCBhbW91bnQgaW4gVFJYIHRvIHVuZnJlZXplXG4gICAqIEByZXR1cm5zIHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICBzZXRVbmZyZWV6ZUJhbGFuY2UoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl91bmZyZWV6ZUJhbGFuY2UgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSByZXNvdXJjZSB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSByZXNvdXJjZSByZXNvdXJjZSB0eXBlIHRvIHVuZnJlZXplXG4gICAqIEByZXR1cm5zIHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICBzZXRSZXNvdXJjZShyZXNvdXJjZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVJlc291cmNlKHJlc291cmNlKTtcbiAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGV4dGVuZFZhbGlkVG8oZXh0ZW5zaW9uTXM6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZSAmJiB0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXh0ZW5kVHJhbnNhY3Rpb25FcnJvcignQ2Fubm90IGV4dGVuZCBhIHNpZ25lZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGlmIChleHRlbnNpb25NcyA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBiZWxvdyB6ZXJvJyk7XG4gICAgfVxuXG4gICAgaWYgKGV4dGVuc2lvbk1zID4gVFJBTlNBQ1RJT05fTUFYX0VYUElSQVRJT04pIHtcbiAgICAgIHRocm93IG5ldyBFeHRlbmRUcmFuc2FjdGlvbkVycm9yKCdUaGUgZXhwaXJhdGlvbiBjYW5ub3QgYmUgZXh0ZW5kZWQgbW9yZSB0aGFuIG9uZSB5ZWFyJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V4cGlyYXRpb24pIHtcbiAgICAgIHRoaXMuX2V4cGlyYXRpb24gPSB0aGlzLl9leHBpcmF0aW9uICsgZXh0ZW5zaW9uTXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlcmUgaXMgbm90IGV4cGlyYXRpb24gdG8gZXh0ZW5kJyk7XG4gICAgfVxuICB9XG5cbiAgaW5pdEJ1aWxkZXIocmF3VHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uUmVjZWlwdCB8IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0aGlzLmZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIHRoaXMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgY29uc3QgdHggPSB0aGlzLmZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IHR4O1xuICAgIHRoaXMuX3NpZ25pbmdLZXlzID0gW107XG4gICAgY29uc3QgcmF3RGF0YSA9IHR4LnRvSnNvbigpLnJhd19kYXRhO1xuICAgIHRoaXMuX3JlZkJsb2NrQnl0ZXMgPSByYXdEYXRhLnJlZl9ibG9ja19ieXRlcztcbiAgICB0aGlzLl9yZWZCbG9ja0hhc2ggPSByYXdEYXRhLnJlZl9ibG9ja19oYXNoO1xuICAgIHRoaXMuX2V4cGlyYXRpb24gPSByYXdEYXRhLmV4cGlyYXRpb247XG4gICAgdGhpcy5fdGltZXN0YW1wID0gcmF3RGF0YS50aW1lc3RhbXA7XG4gICAgY29uc3QgY29udHJhY3RDYWxsID0gcmF3RGF0YS5jb250cmFjdFswXSBhcyBVbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0O1xuICAgIHRoaXMuaW5pdFVuZnJlZXplQ29udHJhY3RDYWxsKGNvbnRyYWN0Q2FsbCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgZnJlZXplIGNvbnRyYWN0IGNhbGwgc3BlY2lmaWMgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1VuZnJlZXplQmFsYW5jZVYyQ29udHJhY3R9IHVuZnJlZXplQ29udHJhY3RDYWxsIG9iamVjdCB3aXRoIGZyZWV6ZSB0eG4gZGF0YVxuICAgKi9cbiAgcHJvdGVjdGVkIGluaXRVbmZyZWV6ZUNvbnRyYWN0Q2FsbCh1bmZyZWV6ZUNvbnRyYWN0Q2FsbDogVW5mcmVlemVCYWxhbmNlVjJDb250cmFjdCk6IHZvaWQge1xuICAgIGNvbnN0IHsgcmVzb3VyY2UsIG93bmVyX2FkZHJlc3MsIHVuZnJlZXplX2JhbGFuY2UgfSA9IHVuZnJlZXplQ29udHJhY3RDYWxsLnBhcmFtZXRlci52YWx1ZTtcbiAgICBpZiAob3duZXJfYWRkcmVzcykge1xuICAgICAgdGhpcy5zb3VyY2UoeyBhZGRyZXNzOiBnZXRCYXNlNThBZGRyZXNzRnJvbUhleChvd25lcl9hZGRyZXNzKSB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzb3VyY2UpIHtcbiAgICAgIHRoaXMuc2V0UmVzb3VyY2UocmVzb3VyY2UpO1xuICAgIH1cblxuICAgIGlmICh1bmZyZWV6ZV9iYWxhbmNlKSB7XG4gICAgICB0aGlzLnNldFVuZnJlZXplQmFsYW5jZSh1bmZyZWV6ZV9iYWxhbmNlLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLmNyZWF0ZVVuZnJlZXplQmFsYW5jZVRyYW5zYWN0aW9uKCk7XG4gICAgLyoqIEBpbmhlcml0ZG9jY3JlYXRlVHJhbnNhY3Rpb24gKi9cbiAgICAvLyBUaGlzIG1ldGhvZCBtdXN0IGJlIGV4dGVuZGVkIG9uIGNoaWxkIGNsYXNzZXNcbiAgICBpZiAodGhpcy5fc2lnbmluZ0tleXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5hcHBseVNpZ25hdHVyZXMoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uaWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0EgdmFsaWQgdHJhbnNhY3Rpb24gbXVzdCBoYXZlIGFuIGlkJyk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy50cmFuc2FjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBjcmVhdGUgdGhlIGZyZWV6ZSBiYWxhbmNlIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVVuZnJlZXplQmFsYW5jZVRyYW5zYWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHJhd0RhdGFIZXggPSB0aGlzLmdldFVuZnJlZXplUmF3RGF0YUhleCgpO1xuICAgIGNvbnN0IHJhd0RhdGEgPSBkZWNvZGVUcmFuc2FjdGlvbihyYXdEYXRhSGV4KTtcbiAgICBjb25zdCBjb250cmFjdCA9IHJhd0RhdGEuY29udHJhY3RbMF0gYXMgVW5mcmVlemVCYWxhbmNlVjJDb250cmFjdDtcbiAgICBjb25zdCBjb250cmFjdFBhcmFtZXRlciA9IGNvbnRyYWN0LnBhcmFtZXRlcjtcbiAgICBjb250cmFjdFBhcmFtZXRlci52YWx1ZS5vd25lcl9hZGRyZXNzID0gdGhpcy5fb3duZXJBZGRyZXNzLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgY29udHJhY3RQYXJhbWV0ZXIudmFsdWUudW5mcmVlemVfYmFsYW5jZSA9IE51bWJlcih0aGlzLl91bmZyZWV6ZUJhbGFuY2UpO1xuICAgIGNvbnRyYWN0UGFyYW1ldGVyLnZhbHVlLnJlc291cmNlID0gdGhpcy5fcmVzb3VyY2U7XG4gICAgY29udHJhY3RQYXJhbWV0ZXIudHlwZV91cmwgPSAndHlwZS5nb29nbGVhcGlzLmNvbS9wcm90b2NvbC5VbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0JztcbiAgICBjb250cmFjdC50eXBlID0gJ1VuZnJlZXplQmFsYW5jZVYyQ29udHJhY3QnO1xuICAgIGNvbnN0IGhleEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHJhd0RhdGFIZXgsICdoZXgnKTtcbiAgICBjb25zdCBpZCA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShoZXhCdWZmZXIpLmRpZ2VzdCgnaGV4Jyk7XG4gICAgY29uc3QgdHhSZWNpcDogVHJhbnNhY3Rpb25SZWNlaXB0ID0ge1xuICAgICAgcmF3X2RhdGE6IHJhd0RhdGEsXG4gICAgICByYXdfZGF0YV9oZXg6IHJhd0RhdGFIZXgsXG4gICAgICB0eElEOiBpZCxcbiAgICAgIHNpZ25hdHVyZTogdGhpcy50cmFuc2FjdGlvbi5zaWduYXR1cmUsXG4gICAgfTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcsIHR4UmVjaXApO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gZ2V0IHRoZSB1bmZyZWV6ZSBiYWxhbmNlIHRyYW5zYWN0aW9uIHJhdyBkYXRhIGhleFxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgZnJlZXplIGJhbGFuY2UgdHJhbnNhY3Rpb24gcmF3IGRhdGEgaGV4XG4gICAqL1xuICBwcml2YXRlIGdldFVuZnJlZXplUmF3RGF0YUhleCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhd0NvbnRyYWN0OiB7XG4gICAgICBvd25lckFkZHJlc3M6IG51bWJlcltdO1xuICAgICAgdW5mcmVlemVCYWxhbmNlOiBzdHJpbmc7XG4gICAgICByZXNvdXJjZT86IHN0cmluZztcbiAgICB9ID0ge1xuICAgICAgb3duZXJBZGRyZXNzOiBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyh0aGlzLl9vd25lckFkZHJlc3MpLFxuICAgICAgdW5mcmVlemVCYWxhbmNlOiB0aGlzLl91bmZyZWV6ZUJhbGFuY2UsXG4gICAgfTtcblxuICAgIC8vIE9ubHkgaW5jbHVkZSByZXNvdXJjZSBpZiBpdCdzIG5vdCBCQU5EV0lEVEggKHRoZSBkZWZhdWx0IHZhbHVlID0gMClcbiAgICAvLyBJbiBwcm90b2J1ZjMsIGRlZmF1bHQgdmFsdWVzIGFyZSB0eXBpY2FsbHkgbm90IGVuY29kZWQgaW4gdGhlIHdpcmUgZm9ybWF0LlxuICAgIC8vIFRST04ncyBub2RlIHJlLXNlcmlhbGl6ZXMgdHJhbnNhY3Rpb25zIGFuZCBvbWl0cyBkZWZhdWx0IHZhbHVlcyxcbiAgICAvLyBzbyB3ZSBtdXN0IG1hdGNoIHRoYXQgYmVoYXZpb3IgdG8gZW5zdXJlIGNvbnNpc3RlbnQgdHJhbnNhY3Rpb24gaGFzaGVzLlxuICAgIGlmICh0aGlzLl9yZXNvdXJjZSAhPT0gJ0JBTkRXSURUSCcpIHtcbiAgICAgIHJhd0NvbnRyYWN0LnJlc291cmNlID0gdGhpcy5fcmVzb3VyY2U7XG4gICAgfVxuXG4gICAgY29uc3QgdW5mcmVlemVDb250cmFjdCA9IHByb3RvY29sLlVuZnJlZXplQmFsYW5jZVYyQ29udHJhY3QuZnJvbU9iamVjdChyYXdDb250cmFjdCk7XG4gICAgY29uc3QgdW5mcmVlemVDb250cmFjdEJ5dGVzID0gcHJvdG9jb2wuVW5mcmVlemVCYWxhbmNlVjJDb250cmFjdC5lbmNvZGUodW5mcmVlemVDb250cmFjdCkuZmluaXNoKCk7XG4gICAgY29uc3QgdHhDb250cmFjdCA9IHtcbiAgICAgIHR5cGU6IENvbnRyYWN0VHlwZS5VbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0LFxuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB1bmZyZWV6ZUNvbnRyYWN0Qnl0ZXMsXG4gICAgICAgIHR5cGVfdXJsOiAndHlwZS5nb29nbGVhcGlzLmNvbS9wcm90b2NvbC5VbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0JyxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCByYXcgPSB7XG4gICAgICByZWZCbG9ja0J5dGVzOiBCdWZmZXIuZnJvbSh0aGlzLl9yZWZCbG9ja0J5dGVzLCAnaGV4JyksXG4gICAgICByZWZCbG9ja0hhc2g6IEJ1ZmZlci5mcm9tKHRoaXMuX3JlZkJsb2NrSGFzaCwgJ2hleCcpLFxuICAgICAgZXhwaXJhdGlvbjogdGhpcy5fZXhwaXJhdGlvbiB8fCBEYXRlLm5vdygpICsgVFJBTlNBQ1RJT05fREVGQVVMVF9FWFBJUkFUSU9OLFxuICAgICAgdGltZXN0YW1wOiB0aGlzLl90aW1lc3RhbXAgfHwgRGF0ZS5ub3coKSxcbiAgICAgIGNvbnRyYWN0OiBbdHhDb250cmFjdF0sXG4gICAgfTtcbiAgICBjb25zdCByYXdUeCA9IHByb3RvY29sLlRyYW5zYWN0aW9uLnJhdy5jcmVhdGUocmF3KTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20ocHJvdG9jb2wuVHJhbnNhY3Rpb24ucmF3LmVuY29kZShyYXdUeCkuZmluaXNoKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICBpZiAodGhpcy5fc2lnbmluZ0tleXMuc29tZSgoc2lnbmluZ0tleSkgPT4gc2lnbmluZ0tleS5rZXkgPT09IGtleS5rZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdEdXBsaWNhdGVkIGtleScpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduaW5nS2V5cy5wdXNoKGtleSk7XG5cbiAgICAvLyBXZSBrZWVwIHRoaXMgcmV0dXJuIGZvciBjb21wYXRpYmlsaXR5IGJ1dCBpcyBub3QgbWVhbnQgdG8gYmUgdXNlXG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2lnbmF0dXJlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uaW5wdXRzKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdUcmFuc2FjdGlvbiBoYXMgbm8gaW5wdXRzJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2lnbmluZ0tleXMuZm9yRWFjaCgoa2V5KSA9PiB0aGlzLmFwcGx5U2lnbmF0dXJlKGtleSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24gLSBUaGUgdHJhbnNhY3Rpb24gdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyB7QnVpbGRUcmFuc2FjdGlvbkVycm9yfSB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkXG4gICAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVGcmVlemVUcmFuc2FjdGlvbkZpZWxkcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBpZiB0aGUgdHJhbnNhY3Rpb24gaXMgYSB2YWxpZCB1bmZyZWV6ZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUmVjZWlwdH0gdHJhbnNhY3Rpb24gLSBUaGUgdHJhbnNhY3Rpb24gdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyB7QnVpbGRUcmFuc2FjdGlvbkVycm9yfSB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRnJlZXplVHJhbnNhY3Rpb25GaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl91bmZyZWV6ZUJhbGFuY2UpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgcGFyYW1ldGVyOiB1bmZyZWV6ZUJhbGFuY2UnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX293bmVyQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBwYXJhbWV0ZXI6IHNvdXJjZScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcmVzb3VyY2UpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgcGFyYW1ldGVyOiByZXNvdXJjZScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcmVmQmxvY2tCeXRlcyB8fCAhdGhpcy5fcmVmQmxvY2tIYXNoKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIGJsb2NrIHJlZmVyZW5jZSBpbmZvcm1hdGlvbicpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -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 = 10800000;
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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"}