@bitgo-beta/sdk-coin-trx 1.2.3-alpha.43 → 1.2.3-alpha.430
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.
- package/dist/resources/protobuf/Contract.proto +32 -0
- package/dist/resources/protobuf/tron.d.ts +1478 -214
- package/dist/resources/protobuf/tron.js +6312 -2600
- package/dist/resources/protobuf/tron.proto +6 -0
- package/dist/src/index.js +6 -2
- package/dist/src/lib/constants.d.ts +3 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +6 -0
- package/dist/src/lib/contractCallBuilder.d.ts +1 -35
- package/dist/src/lib/contractCallBuilder.d.ts.map +1 -1
- package/dist/src/lib/contractCallBuilder.js +12 -75
- package/dist/src/lib/delegateResourceTxBuilder.d.ts +27 -0
- package/dist/src/lib/delegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/delegateResourceTxBuilder.js +98 -0
- package/dist/src/lib/enum.d.ts +36 -1
- package/dist/src/lib/enum.d.ts.map +1 -1
- package/dist/src/lib/enum.js +40 -4
- package/dist/src/lib/freezeBalanceTxBuilder.d.ts +71 -0
- package/dist/src/lib/freezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/freezeBalanceTxBuilder.js +211 -0
- package/dist/src/lib/iface.d.ts +220 -2
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.js +23 -9
- package/dist/src/lib/keyPair.d.ts +0 -1
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +31 -18
- package/dist/src/lib/resourceManagementTxBuilder.d.ts +72 -0
- package/dist/src/lib/resourceManagementTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/resourceManagementTxBuilder.js +150 -0
- package/dist/src/lib/tokenTransferBuilder.d.ts +1 -1
- package/dist/src/lib/tokenTransferBuilder.js +3 -3
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +92 -6
- package/dist/src/lib/transactionBuilder.d.ts +50 -5
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +110 -21
- package/dist/src/lib/undelegateResourceTxBuilder.d.ts +27 -0
- package/dist/src/lib/undelegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/undelegateResourceTxBuilder.js +98 -0
- package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts +65 -0
- package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/unfreezeBalanceTxBuilder.js +204 -0
- package/dist/src/lib/utils.d.ts +85 -4
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +445 -47
- package/dist/src/lib/voteWitnessTxBuilder.d.ts +62 -0
- package/dist/src/lib/voteWitnessTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/voteWitnessTxBuilder.js +219 -0
- package/dist/src/lib/withdrawBuilder.d.ts +49 -0
- package/dist/src/lib/withdrawBuilder.d.ts.map +1 -0
- package/dist/src/lib/withdrawBuilder.js +167 -0
- package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts +49 -0
- package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.js +167 -0
- package/dist/src/lib/wrappedBuilder.d.ts +56 -0
- package/dist/src/lib/wrappedBuilder.d.ts.map +1 -1
- package/dist/src/lib/wrappedBuilder.js +86 -2
- package/dist/src/trx.d.ts +78 -4
- package/dist/src/trx.d.ts.map +1 -1
- package/dist/src/trx.js +436 -147
- package/dist/src/trxToken.d.ts +2 -2
- package/dist/src/trxToken.d.ts.map +1 -1
- package/dist/src/trxToken.js +5 -5
- package/dist/test/fixtures.d.ts +40 -0
- package/dist/test/fixtures.d.ts.map +1 -0
- package/dist/test/fixtures.js +46 -0
- package/dist/test/resources.d.ts +586 -0
- package/dist/test/resources.d.ts.map +1 -0
- package/dist/test/resources.js +746 -0
- package/dist/test/unit/index.d.ts +2 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +19 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +163 -0
- package/dist/test/unit/transaction.d.ts +2 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +38 -0
- package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/contractCallBuilder.js +315 -0
- package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.js +255 -0
- package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.js +285 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +42 -0
- package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.js +255 -0
- package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.js +256 -0
- package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.js +277 -0
- package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.js +213 -0
- package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.js +213 -0
- package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/wrappedBuilder.js +50 -0
- package/dist/test/unit/transactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder.js +178 -0
- package/dist/test/unit/trx.d.ts +2 -0
- package/dist/test/unit/trx.d.ts.map +1 -0
- package/dist/test/unit/trx.js +639 -0
- package/dist/test/unit/util.d.ts +2 -0
- package/dist/test/unit/util.d.ts.map +1 -0
- package/dist/test/unit/util.js +141 -0
- package/dist/test/unit/verifyTransaction.d.ts +2 -0
- package/dist/test/unit/verifyTransaction.d.ts.map +1 -0
- package/dist/test/unit/verifyTransaction.js +378 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +20 -15
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -118
- package/resources/README.md +0 -31
- package/resources/protobuf/Contract.proto +0 -256
- package/resources/protobuf/Discover.proto +0 -44
- package/resources/protobuf/tron.d.ts +0 -11205
- package/resources/protobuf/tron.js +0 -33480
- 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
|
package/dist/src/lib/utils.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
|
|
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
|
|
9
|
-
export
|
|
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":";
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|