@bitgo-beta/sdk-coin-vet 1.0.1-beta.33 → 1.0.1-beta.330
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/.mocharc.yml +1 -1
- package/CHANGELOG.md +163 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/lib/constants.d.ts +13 -1
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +15 -3
- package/dist/src/lib/iface.d.ts +30 -1
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +18 -3
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +35 -5
- package/dist/src/lib/transaction/addressInitializationTransaction.d.ts +31 -0
- package/dist/src/lib/transaction/addressInitializationTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/addressInitializationTransaction.js +170 -0
- package/dist/src/lib/transaction/burnNftTransaction.d.ts +26 -0
- package/dist/src/lib/transaction/burnNftTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/burnNftTransaction.js +124 -0
- package/dist/src/lib/transaction/claimRewards.d.ts +41 -0
- package/dist/src/lib/transaction/claimRewards.d.ts.map +1 -0
- package/dist/src/lib/transaction/claimRewards.js +210 -0
- package/dist/src/lib/transaction/exitDelegation.d.ts +26 -0
- package/dist/src/lib/transaction/exitDelegation.d.ts.map +1 -0
- package/dist/src/lib/transaction/exitDelegation.js +124 -0
- package/dist/src/lib/transaction/flushTokenTransaction.d.ts +20 -0
- package/dist/src/lib/transaction/flushTokenTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/flushTokenTransaction.js +98 -0
- package/dist/src/lib/transaction/nftTransaction.d.ts +17 -0
- package/dist/src/lib/transaction/nftTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/nftTransaction.js +108 -0
- package/dist/src/lib/transaction/stakingTransaction.d.ts +35 -0
- package/dist/src/lib/transaction/stakingTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/stakingTransaction.js +175 -0
- package/dist/src/lib/transaction/tokenTransaction.d.ts +14 -0
- package/dist/src/lib/transaction/tokenTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/tokenTransaction.js +95 -0
- package/dist/src/lib/transaction/transaction.d.ts +106 -0
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/transaction.js +468 -0
- package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts +78 -0
- package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/addressInitializationBuilder.js +158 -0
- package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts +59 -0
- package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/burnNftBuilder.js +118 -0
- package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts +57 -0
- package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/claimRewardsBuilder.js +142 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts +58 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.js +115 -0
- package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts +66 -0
- package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.js +129 -0
- package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts +23 -0
- package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/nftTransactionBuilder.js +93 -0
- package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts +81 -0
- package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/stakingBuilder.js +158 -0
- package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts +21 -0
- package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.js +70 -0
- package/dist/src/lib/{transactionBuilder.d.ts → transactionBuilder/transactionBuilder.d.ts} +29 -18
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.js +155 -0
- package/dist/src/lib/{transferBuilder.d.ts → transactionBuilder/transferBuilder.d.ts} +4 -2
- package/dist/src/lib/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/transferBuilder.js +45 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +64 -5
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +140 -5
- package/dist/src/lib/types.d.ts +15 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +3 -0
- package/dist/src/lib/utils.d.ts +82 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +235 -3
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +9 -1
- package/dist/src/vet.d.ts +15 -4
- package/dist/src/vet.d.ts.map +1 -1
- package/dist/src/vet.js +154 -7
- package/dist/src/vetNFTCollection.d.ts +18 -0
- package/dist/src/vetNFTCollection.d.ts.map +1 -0
- package/dist/src/vetNFTCollection.js +52 -0
- package/dist/src/vetToken.d.ts +19 -0
- package/dist/src/vetToken.d.ts.map +1 -0
- package/dist/src/vetToken.js +52 -0
- package/package.json +14 -9
- package/dist/src/lib/transaction.d.ts +0 -8
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -17
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -78
- package/dist/src/lib/transferBuilder.d.ts.map +0 -1
- package/dist/src/lib/transferBuilder.js +0 -15
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.NFTTransaction = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const sdk_core_1 = require("@vechain/sdk-core");
|
|
9
|
+
const sdk_core_2 = require("@bitgo-beta/sdk-core");
|
|
10
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
11
|
+
const transaction_1 = require("./transaction");
|
|
12
|
+
class NFTTransaction extends transaction_1.Transaction {
|
|
13
|
+
constructor(_coinConfig) {
|
|
14
|
+
super(_coinConfig);
|
|
15
|
+
this._type = sdk_core_2.TransactionType.SendNFT;
|
|
16
|
+
}
|
|
17
|
+
get nftCollectionId() {
|
|
18
|
+
return this._nftCollectionId;
|
|
19
|
+
}
|
|
20
|
+
set nftCollectionId(nftCollectionId) {
|
|
21
|
+
this._nftCollectionId = nftCollectionId;
|
|
22
|
+
}
|
|
23
|
+
get tokenId() {
|
|
24
|
+
return this._tokenId;
|
|
25
|
+
}
|
|
26
|
+
set tokenId(tokenId) {
|
|
27
|
+
this._tokenId = tokenId;
|
|
28
|
+
}
|
|
29
|
+
buildClauses() {
|
|
30
|
+
if (!this.nftCollectionId) {
|
|
31
|
+
throw new Error('NFT collection id is not set');
|
|
32
|
+
}
|
|
33
|
+
if (!this.sender) {
|
|
34
|
+
throw new Error('Sender address is not set');
|
|
35
|
+
}
|
|
36
|
+
if (!this.tokenId) {
|
|
37
|
+
throw new Error('Token id is not set');
|
|
38
|
+
}
|
|
39
|
+
this.clauses = this.recipients.map((recipient) => {
|
|
40
|
+
const data = utils_1.default.getTransferNFTData(this.sender, recipient.address, this.tokenId);
|
|
41
|
+
return {
|
|
42
|
+
to: this.nftCollectionId,
|
|
43
|
+
value: '0x0',
|
|
44
|
+
data,
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
toJson() {
|
|
49
|
+
const json = {
|
|
50
|
+
id: this.id,
|
|
51
|
+
chainTag: this.chainTag,
|
|
52
|
+
blockRef: this.blockRef,
|
|
53
|
+
expiration: this.expiration,
|
|
54
|
+
recipients: this.recipients,
|
|
55
|
+
gasPriceCoef: this.gasPriceCoef,
|
|
56
|
+
gas: this.gas,
|
|
57
|
+
dependsOn: this.dependsOn,
|
|
58
|
+
nonce: this.nonce,
|
|
59
|
+
sender: this.sender,
|
|
60
|
+
feePayer: this.feePayerAddress,
|
|
61
|
+
nftCollectionId: this.nftCollectionId,
|
|
62
|
+
tokenId: this.tokenId,
|
|
63
|
+
};
|
|
64
|
+
return json;
|
|
65
|
+
}
|
|
66
|
+
fromDeserializedSignedTransaction(signedTx) {
|
|
67
|
+
try {
|
|
68
|
+
if (!signedTx || !signedTx.body) {
|
|
69
|
+
throw new sdk_core_2.InvalidTransactionError('Invalid transaction: missing transaction body');
|
|
70
|
+
}
|
|
71
|
+
// Store the raw transaction
|
|
72
|
+
this.rawTransaction = signedTx;
|
|
73
|
+
// Set transaction body properties
|
|
74
|
+
const body = signedTx.body;
|
|
75
|
+
this.chainTag = body.chainTag;
|
|
76
|
+
this.blockRef = body.blockRef;
|
|
77
|
+
this.expiration = body.expiration;
|
|
78
|
+
this.clauses = body.clauses;
|
|
79
|
+
this.gasPriceCoef = typeof body.gasPriceCoef === 'number' ? body.gasPriceCoef : 128;
|
|
80
|
+
this.gas = Number(body.gas);
|
|
81
|
+
this.dependsOn = body.dependsOn;
|
|
82
|
+
this.nonce = String(body.nonce);
|
|
83
|
+
// Set recipients from clauses
|
|
84
|
+
(0, assert_1.default)(body.clauses[0].to, 'nft collection id(contract address) address not found in the clauses');
|
|
85
|
+
(0, assert_1.default)(body.clauses.length === 1, 'NFT transaction should have exactly one clause');
|
|
86
|
+
this.nftCollectionId = body.clauses[0].to;
|
|
87
|
+
const decodedData = utils_1.default.decodeTransferNFTData(body.clauses[0].data);
|
|
88
|
+
this.recipients = decodedData.recipients;
|
|
89
|
+
this.tokenId = decodedData.tokenId;
|
|
90
|
+
this.sender = decodedData.sender;
|
|
91
|
+
this.loadInputsAndOutputs();
|
|
92
|
+
// Set signatures if present
|
|
93
|
+
if (signedTx.signature) {
|
|
94
|
+
// First signature is sender's signature
|
|
95
|
+
this.senderSignature = Buffer.from(signedTx.signature.slice(0, sdk_core_1.Secp256k1.SIGNATURE_LENGTH));
|
|
96
|
+
// If there's additional signature data, it's the fee payer's signature
|
|
97
|
+
if (signedTx.signature.length > sdk_core_1.Secp256k1.SIGNATURE_LENGTH) {
|
|
98
|
+
this.feePayerSignature = Buffer.from(signedTx.signature.slice(sdk_core_1.Secp256k1.SIGNATURE_LENGTH));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (e) {
|
|
103
|
+
throw new sdk_core_2.InvalidTransactionError(`Failed to deserialize transaction: ${e.message}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.NFTTransaction = NFTTransaction;
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmZ0VHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL25mdFRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixnREFBNkU7QUFFN0UsbURBQWdGO0FBQ2hGLHFEQUE2QjtBQUU3QiwrQ0FBNEM7QUFFNUMsTUFBYSxjQUFlLFNBQVEseUJBQVc7SUFJN0MsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRywwQkFBZSxDQUFDLE9BQU8sQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxlQUF1QjtRQUN6QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLE9BQWU7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7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QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztZQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDakMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFFNUIsNEJBQTRCO1lBQzVCLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN2Qix3Q0FBd0M7Z0JBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsb0JBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBRTVGLHVFQUF1RTtnQkFDdkUsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxvQkFBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0JBQzNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLG9CQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO2dCQUM3RixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHNDQUFzQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBL0dELHdDQStHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IFNlY3AyNTZrMSwgVHJhbnNhY3Rpb24gYXMgVmV0VHJhbnNhY3Rpb24gfSBmcm9tICdAdmVjaGFpbi9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFZldFRyYW5zYWN0aW9uRGF0YSB9IGZyb20gJy4uL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBORlRUcmFuc2FjdGlvbiBleHRlbmRzIFRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfbmZ0Q29sbGVjdGlvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgX3Rva2VuSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kTkZUO1xuICB9XG5cbiAgZ2V0IG5mdENvbGxlY3Rpb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9uZnRDb2xsZWN0aW9uSWQ7XG4gIH1cblxuICBzZXQgbmZ0Q29sbGVjdGlvbklkKG5mdENvbGxlY3Rpb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fbmZ0Q29sbGVjdGlvbklkID0gbmZ0Q29sbGVjdGlvbklkO1xuICB9XG5cbiAgZ2V0IHRva2VuSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5JZDtcbiAgfVxuXG4gIHNldCB0b2tlbklkKHRva2VuSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Rva2VuSWQgPSB0b2tlbklkO1xuICB9XG5cbiAgYnVpbGRDbGF1c2VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5uZnRDb2xsZWN0aW9uSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTkZUIGNvbGxlY3Rpb24gaWQgaXMgbm90IHNldCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zZW5kZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2VuZGVyIGFkZHJlc3MgaXMgbm90IHNldCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy50b2tlbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rva2VuIGlkIGlzIG5vdCBzZXQnKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsYXVzZXMgPSB0aGlzLnJlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB1dGlscy5nZXRUcmFuc2Zlck5GVERhdGEodGhpcy5zZW5kZXIsIHJlY2lwaWVudC5hZGRyZXNzLCB0aGlzLnRva2VuSWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG86IHRoaXMubmZ0Q29sbGVjdGlvbklkLFxuICAgICAgICB2YWx1ZTogJzB4MCcsXG4gICAgICAgIGRhdGEsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgdG9Kc29uKCk6IFZldFRyYW5zYWN0aW9uRGF0YSB7XG4gICAgY29uc3QganNvbjogVmV0VHJhbnNhY3Rpb25EYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBjaGFpblRhZzogdGhpcy5jaGFpblRhZyxcbiAgICAgIGJsb2NrUmVmOiB0aGlzLmJsb2NrUmVmLFxuICAgICAgZXhwaXJhdGlvbjogdGhpcy5leHBpcmF0aW9uLFxuICAgICAgcmVjaXBpZW50czogdGhpcy5yZWNpcGllbnRzLFxuICAgICAgZ2FzUHJpY2VDb2VmOiB0aGlzLmdhc1ByaWNlQ29lZixcbiAgICAgIGdhczogdGhpcy5nYXMsXG4gICAgICBkZXBlbmRzT246IHRoaXMuZGVwZW5kc09uLFxuICAgICAgbm9uY2U6IHRoaXMubm9uY2UsXG4gICAgICBzZW5kZXI6IHRoaXMuc2VuZGVyLFxuICAgICAgZmVlUGF5ZXI6IHRoaXMuZmVlUGF5ZXJBZGRyZXNzLFxuICAgICAgbmZ0Q29sbGVjdGlvbklkOiB0aGlzLm5mdENvbGxlY3Rpb25JZCxcbiAgICAgIHRva2VuSWQ6IHRoaXMudG9rZW5JZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBmcm9tRGVzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkVHg6IFZldFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghc2lnbmVkVHggfHwgIXNpZ25lZFR4LmJvZHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHRyYW5zYWN0aW9uIGJvZHknKTtcbiAgICAgIH1cblxuICAgICAgLy8gU3RvcmUgdGhlIHJhdyB0cmFuc2FjdGlvblxuICAgICAgdGhpcy5yYXdUcmFuc2FjdGlvbiA9IHNpZ25lZFR4O1xuXG4gICAgICAvLyBTZXQgdHJhbnNhY3Rpb24gYm9keSBwcm9wZXJ0aWVzXG4gICAgICBjb25zdCBib2R5ID0gc2lnbmVkVHguYm9keTtcbiAgICAgIHRoaXMuY2hhaW5UYWcgPSBib2R5LmNoYWluVGFnO1xuICAgICAgdGhpcy5ibG9ja1JlZiA9IGJvZHkuYmxvY2tSZWY7XG4gICAgICB0aGlzLmV4cGlyYXRpb24gPSBib2R5LmV4cGlyYXRpb247XG4gICAgICB0aGlzLmNsYXVzZXMgPSBib2R5LmNsYXVzZXM7XG4gICAgICB0aGlzLmdhc1ByaWNlQ29lZiA9IHR5cGVvZiBib2R5Lmdhc1ByaWNlQ29lZiA9PT0gJ251bWJlcicgPyBib2R5Lmdhc1ByaWNlQ29lZiA6IDEyODtcbiAgICAgIHRoaXMuZ2FzID0gTnVtYmVyKGJvZHkuZ2FzKTtcbiAgICAgIHRoaXMuZGVwZW5kc09uID0gYm9keS5kZXBlbmRzT247XG4gICAgICB0aGlzLm5vbmNlID0gU3RyaW5nKGJvZHkubm9uY2UpO1xuICAgICAgLy8gU2V0IHJlY2lwaWVudHMgZnJvbSBjbGF1c2VzXG4gICAgICBhc3NlcnQoYm9keS5jbGF1c2VzWzBdLnRvLCAnbmZ0IGNvbGxlY3Rpb24gaWQoY29udHJhY3QgYWRkcmVzcykgYWRkcmVzcyBub3QgZm91bmQgaW4gdGhlIGNsYXVzZXMnKTtcbiAgICAgIGFzc2VydChib2R5LmNsYXVzZXMubGVuZ3RoID09PSAxLCAnTkZUIHRyYW5zYWN0aW9uIHNob3VsZCBoYXZlIGV4YWN0bHkgb25lIGNsYXVzZScpO1xuICAgICAgdGhpcy5uZnRDb2xsZWN0aW9uSWQgPSBib2R5LmNsYXVzZXNbMF0udG87XG4gICAgICBjb25zdCBkZWNvZGVkRGF0YSA9IHV0aWxzLmRlY29kZVRyYW5zZmVyTkZURGF0YShib2R5LmNsYXVzZXNbMF0uZGF0YSk7XG4gICAgICB0aGlzLnJlY2lwaWVudHMgPSBkZWNvZGVkRGF0YS5yZWNpcGllbnRzO1xuICAgICAgdGhpcy50b2tlbklkID0gZGVjb2RlZERhdGEudG9rZW5JZDtcbiAgICAgIHRoaXMuc2VuZGVyID0gZGVjb2RlZERhdGEuc2VuZGVyO1xuICAgICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuXG4gICAgICAvLyBTZXQgc2lnbmF0dXJlcyBpZiBwcmVzZW50XG4gICAgICBpZiAoc2lnbmVkVHguc2lnbmF0dXJlKSB7XG4gICAgICAgIC8vIEZpcnN0IHNpZ25hdHVyZSBpcyBzZW5kZXIncyBzaWduYXR1cmVcbiAgICAgICAgdGhpcy5zZW5kZXJTaWduYXR1cmUgPSBCdWZmZXIuZnJvbShzaWduZWRUeC5zaWduYXR1cmUuc2xpY2UoMCwgU2VjcDI1NmsxLlNJR05BVFVSRV9MRU5HVEgpKTtcblxuICAgICAgICAvLyBJZiB0aGVyZSdzIGFkZGl0aW9uYWwgc2lnbmF0dXJlIGRhdGEsIGl0J3MgdGhlIGZlZSBwYXllcidzIHNpZ25hdHVyZVxuICAgICAgICBpZiAoc2lnbmVkVHguc2lnbmF0dXJlLmxlbmd0aCA+IFNlY3AyNTZrMS5TSUdOQVRVUkVfTEVOR1RIKSB7XG4gICAgICAgICAgdGhpcy5mZWVQYXllclNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKHNpZ25lZFR4LnNpZ25hdHVyZS5zbGljZShTZWNwMjU2azEuU0lHTkFUVVJFX0xFTkdUSCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBGYWlsZWQgdG8gZGVzZXJpYWxpemUgdHJhbnNhY3Rpb246ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
2
|
+
import { Transaction as VetTransaction } from '@vechain/sdk-core';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
import { VetTransactionData } from '../iface';
|
|
5
|
+
import EthereumAbi from 'ethereumjs-abi';
|
|
6
|
+
export declare class StakingTransaction extends Transaction {
|
|
7
|
+
private _stakingContractAddress;
|
|
8
|
+
private _levelId;
|
|
9
|
+
private _autorenew;
|
|
10
|
+
private _amountToStake;
|
|
11
|
+
private _stakingContractABI;
|
|
12
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
13
|
+
get stakingContractAddress(): string;
|
|
14
|
+
set stakingContractAddress(address: string);
|
|
15
|
+
get levelId(): number;
|
|
16
|
+
set levelId(levelId: number);
|
|
17
|
+
get autorenew(): boolean;
|
|
18
|
+
set autorenew(autorenew: boolean);
|
|
19
|
+
get amountToStake(): string;
|
|
20
|
+
set amountToStake(amount: string);
|
|
21
|
+
get stakingContractABI(): EthereumAbi;
|
|
22
|
+
set stakingContractABI(abi: EthereumAbi);
|
|
23
|
+
buildClauses(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Encodes staking transaction data using ethereumjs-abi for stakeAndDelegate method
|
|
26
|
+
*
|
|
27
|
+
* @param {number} levelId - The level ID for staking
|
|
28
|
+
* @param {boolean} autorenew - Whether to enable autorenew
|
|
29
|
+
* @returns {string} - The encoded transaction data
|
|
30
|
+
*/
|
|
31
|
+
getStakingData(levelId: number, autorenew?: boolean): string;
|
|
32
|
+
toJson(): VetTransactionData;
|
|
33
|
+
fromDeserializedSignedTransaction(signedTx: VetTransaction): void;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=stakingTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stakingTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/stakingTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,IAAI,cAAc,EAAa,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAKzC,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,mBAAmB,CAAc;gBAE7B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C,IAAI,sBAAsB,IAAI,MAAM,CAEnC;IAED,IAAI,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAEzC;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAE1B;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,SAAS,CAAC,SAAS,EAAE,OAAO,EAE/B;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,aAAa,CAAC,MAAM,EAAE,MAAM,EAE/B;IAED,IAAI,kBAAkB,IAAI,WAAW,CAEpC;IAED,IAAI,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAEtC;IAED,YAAY,IAAI,IAAI;IAmCpB;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,UAAO,GAAG,MAAM;IAWzD,MAAM,IAAI,kBAAkB;IAuB5B,iCAAiC,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;CA+DlE"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.StakingTransaction = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const sdk_core_2 = require("@vechain/sdk-core");
|
|
9
|
+
const transaction_1 = require("./transaction");
|
|
10
|
+
const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
|
|
11
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
12
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
13
|
+
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
14
|
+
class StakingTransaction extends transaction_1.Transaction {
|
|
15
|
+
constructor(_coinConfig) {
|
|
16
|
+
super(_coinConfig);
|
|
17
|
+
this._autorenew = true;
|
|
18
|
+
this._type = sdk_core_1.TransactionType.ContractCall;
|
|
19
|
+
this._autorenew = true;
|
|
20
|
+
}
|
|
21
|
+
get stakingContractAddress() {
|
|
22
|
+
return this._stakingContractAddress;
|
|
23
|
+
}
|
|
24
|
+
set stakingContractAddress(address) {
|
|
25
|
+
this._stakingContractAddress = address;
|
|
26
|
+
}
|
|
27
|
+
get levelId() {
|
|
28
|
+
return this._levelId;
|
|
29
|
+
}
|
|
30
|
+
set levelId(levelId) {
|
|
31
|
+
this._levelId = levelId;
|
|
32
|
+
}
|
|
33
|
+
get autorenew() {
|
|
34
|
+
return this._autorenew;
|
|
35
|
+
}
|
|
36
|
+
set autorenew(autorenew) {
|
|
37
|
+
this._autorenew = autorenew;
|
|
38
|
+
}
|
|
39
|
+
get amountToStake() {
|
|
40
|
+
return this._amountToStake;
|
|
41
|
+
}
|
|
42
|
+
set amountToStake(amount) {
|
|
43
|
+
this._amountToStake = amount;
|
|
44
|
+
}
|
|
45
|
+
get stakingContractABI() {
|
|
46
|
+
return this._stakingContractABI;
|
|
47
|
+
}
|
|
48
|
+
set stakingContractABI(abi) {
|
|
49
|
+
this._stakingContractABI = abi;
|
|
50
|
+
}
|
|
51
|
+
buildClauses() {
|
|
52
|
+
if (!this.stakingContractAddress) {
|
|
53
|
+
throw new Error('Staking contract address is not set');
|
|
54
|
+
}
|
|
55
|
+
utils_1.default.validateStakingContractAddress(this.stakingContractAddress, this._coinConfig);
|
|
56
|
+
if (this.levelId === undefined || this.levelId === null) {
|
|
57
|
+
throw new Error('Level ID is not set');
|
|
58
|
+
}
|
|
59
|
+
if (!this.amountToStake) {
|
|
60
|
+
throw new Error('Amount to stake is not set');
|
|
61
|
+
}
|
|
62
|
+
const data = this.getStakingData(this.levelId, this.autorenew);
|
|
63
|
+
this._transactionData = data;
|
|
64
|
+
// Create the clause for staking
|
|
65
|
+
this._clauses = [
|
|
66
|
+
{
|
|
67
|
+
to: this.stakingContractAddress,
|
|
68
|
+
value: this.amountToStake,
|
|
69
|
+
data: this._transactionData,
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
// Set recipients based on the clauses
|
|
73
|
+
this._recipients = [
|
|
74
|
+
{
|
|
75
|
+
address: this.stakingContractAddress,
|
|
76
|
+
amount: this.amountToStake,
|
|
77
|
+
},
|
|
78
|
+
];
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Encodes staking transaction data using ethereumjs-abi for stakeAndDelegate method
|
|
82
|
+
*
|
|
83
|
+
* @param {number} levelId - The level ID for staking
|
|
84
|
+
* @param {boolean} autorenew - Whether to enable autorenew
|
|
85
|
+
* @returns {string} - The encoded transaction data
|
|
86
|
+
*/
|
|
87
|
+
getStakingData(levelId, autorenew = true) {
|
|
88
|
+
const methodName = 'stakeAndDelegate';
|
|
89
|
+
const types = ['uint8', 'bool'];
|
|
90
|
+
const params = [levelId, autorenew];
|
|
91
|
+
const method = ethereumjs_abi_1.default.methodID(methodName, types);
|
|
92
|
+
const args = ethereumjs_abi_1.default.rawEncode(types, params);
|
|
93
|
+
return (0, ethereumjs_util_1.addHexPrefix)(Buffer.concat([method, args]).toString('hex'));
|
|
94
|
+
}
|
|
95
|
+
toJson() {
|
|
96
|
+
const json = {
|
|
97
|
+
id: this.id,
|
|
98
|
+
chainTag: this.chainTag,
|
|
99
|
+
blockRef: this.blockRef,
|
|
100
|
+
expiration: this.expiration,
|
|
101
|
+
gasPriceCoef: this.gasPriceCoef,
|
|
102
|
+
gas: this.gas,
|
|
103
|
+
dependsOn: this.dependsOn,
|
|
104
|
+
nonce: this.nonce,
|
|
105
|
+
data: this.transactionData,
|
|
106
|
+
value: this.amountToStake,
|
|
107
|
+
sender: this.sender,
|
|
108
|
+
to: this.stakingContractAddress,
|
|
109
|
+
stakingContractAddress: this.stakingContractAddress,
|
|
110
|
+
amountToStake: this.amountToStake,
|
|
111
|
+
nftTokenId: this.levelId,
|
|
112
|
+
autorenew: this.autorenew,
|
|
113
|
+
};
|
|
114
|
+
return json;
|
|
115
|
+
}
|
|
116
|
+
fromDeserializedSignedTransaction(signedTx) {
|
|
117
|
+
try {
|
|
118
|
+
if (!signedTx || !signedTx.body) {
|
|
119
|
+
throw new sdk_core_1.InvalidTransactionError('Invalid transaction: missing transaction body');
|
|
120
|
+
}
|
|
121
|
+
// Store the raw transaction
|
|
122
|
+
this.rawTransaction = signedTx;
|
|
123
|
+
// Set transaction body properties
|
|
124
|
+
const body = signedTx.body;
|
|
125
|
+
this.chainTag = typeof body.chainTag === 'number' ? body.chainTag : 0;
|
|
126
|
+
this.blockRef = body.blockRef || '0x0';
|
|
127
|
+
this.expiration = typeof body.expiration === 'number' ? body.expiration : 64;
|
|
128
|
+
this.clauses = body.clauses || [];
|
|
129
|
+
this.gasPriceCoef = typeof body.gasPriceCoef === 'number' ? body.gasPriceCoef : 128;
|
|
130
|
+
this.gas = typeof body.gas === 'number' ? body.gas : Number(body.gas) || 0;
|
|
131
|
+
this.dependsOn = body.dependsOn || null;
|
|
132
|
+
this.nonce = String(body.nonce);
|
|
133
|
+
// Set staking-specific properties
|
|
134
|
+
if (body.clauses.length > 0) {
|
|
135
|
+
const clause = body.clauses[0];
|
|
136
|
+
if (clause.to) {
|
|
137
|
+
this.stakingContractAddress = clause.to;
|
|
138
|
+
}
|
|
139
|
+
if (clause.value) {
|
|
140
|
+
this.amountToStake = String(clause.value);
|
|
141
|
+
}
|
|
142
|
+
if (clause.data) {
|
|
143
|
+
this.transactionData = clause.data;
|
|
144
|
+
const decoded = utils_1.default.decodeStakingData(clause.data);
|
|
145
|
+
this.levelId = decoded.levelId;
|
|
146
|
+
this.autorenew = decoded.autorenew;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Set recipients from clauses
|
|
150
|
+
this.recipients = body.clauses.map((clause) => ({
|
|
151
|
+
address: (clause.to || '0x0').toString().toLowerCase(),
|
|
152
|
+
amount: new bignumber_js_1.default(clause.value || 0).toString(),
|
|
153
|
+
}));
|
|
154
|
+
this.loadInputsAndOutputs();
|
|
155
|
+
// Set sender address
|
|
156
|
+
if (signedTx.signature && signedTx.origin) {
|
|
157
|
+
this.sender = signedTx.origin.toString().toLowerCase();
|
|
158
|
+
}
|
|
159
|
+
// Set signatures if present
|
|
160
|
+
if (signedTx.signature) {
|
|
161
|
+
// First signature is sender's signature
|
|
162
|
+
this.senderSignature = Buffer.from(signedTx.signature.slice(0, sdk_core_2.Secp256k1.SIGNATURE_LENGTH));
|
|
163
|
+
// If there's additional signature data, it's the fee payer's signature
|
|
164
|
+
if (signedTx.signature.length > sdk_core_2.Secp256k1.SIGNATURE_LENGTH) {
|
|
165
|
+
this.feePayerSignature = Buffer.from(signedTx.signature.slice(sdk_core_2.Secp256k1.SIGNATURE_LENGTH));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (e) {
|
|
170
|
+
throw new sdk_core_1.InvalidTransactionError(`Failed to deserialize transaction: ${e.message}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.StakingTransaction = StakingTransaction;
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1RyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbi9zdGFraW5nVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQWdGO0FBRWhGLGdEQUE2RTtBQUM3RSwrQ0FBNEM7QUFFNUMsb0VBQXlDO0FBQ3pDLHFEQUE2QjtBQUM3QixnRUFBcUM7QUFDckMscURBQStDO0FBRS9DLE1BQWEsa0JBQW1CLFNBQVEseUJBQVc7SUFPakQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFMYixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBTXhCLElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQWUsQ0FBQyxZQUFZLENBQUM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLHNCQUFzQixDQUFDLE9BQWU7UUFDeEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE9BQU8sQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxPQUFlO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLFNBQWtCO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElB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QUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWhNRCxnREFnTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUsIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gYXMgVmV0VHJhbnNhY3Rpb24sIFNlY3AyNTZrMSB9IGZyb20gJ0B2ZWNoYWluL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBWZXRUcmFuc2FjdGlvbkRhdGEgfSBmcm9tICcuLi9pZmFjZSc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IGFkZEhleFByZWZpeCB9IGZyb20gJ2V0aGVyZXVtanMtdXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBTdGFraW5nVHJhbnNhY3Rpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX3N0YWtpbmdDb250cmFjdEFkZHJlc3M6IHN0cmluZztcbiAgcHJpdmF0ZSBfbGV2ZWxJZDogbnVtYmVyO1xuICBwcml2YXRlIF9hdXRvcmVuZXcgPSB0cnVlO1xuICBwcml2YXRlIF9hbW91bnRUb1N0YWtlOiBzdHJpbmc7XG4gIHByaXZhdGUgX3N0YWtpbmdDb250cmFjdEFCSTogRXRoZXJldW1BYmk7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsO1xuICAgIHRoaXMuX2F1dG9yZW5ldyA9IHRydWU7XG4gIH1cblxuICBnZXQgc3Rha2luZ0NvbnRyYWN0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGFraW5nQ29udHJhY3RBZGRyZXNzO1xuICB9XG5cbiAgc2V0IHN0YWtpbmdDb250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKSB7XG4gICAgdGhpcy5fc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyA9IGFkZHJlc3M7XG4gIH1cblxuICBnZXQgbGV2ZWxJZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9sZXZlbElkO1xuICB9XG5cbiAgc2V0IGxldmVsSWQobGV2ZWxJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbGV2ZWxJZCA9IGxldmVsSWQ7XG4gIH1cblxuICBnZXQgYXV0b3JlbmV3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hdXRvcmVuZXc7XG4gIH1cblxuICBzZXQgYXV0b3JlbmV3KGF1dG9yZW5ldzogYm9vbGVhbikge1xuICAgIHRoaXMuX2F1dG9yZW5ldyA9IGF1dG9yZW5ldztcbiAgfVxuXG4gIGdldCBhbW91bnRUb1N0YWtlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Ftb3VudFRvU3Rha2U7XG4gIH1cblxuICBzZXQgYW1vdW50VG9TdGFrZShhbW91bnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Ftb3VudFRvU3Rha2UgPSBhbW91bnQ7XG4gIH1cblxuICBnZXQgc3Rha2luZ0NvbnRyYWN0QUJJKCk6IEV0aGVyZXVtQWJpIHtcbiAgICByZXR1cm4gdGhpcy5fc3Rha2luZ0NvbnRyYWN0QUJJO1xuICB9XG5cbiAgc2V0IHN0YWtpbmdDb250cmFjdEFCSShhYmk6IEV0aGVyZXVtQWJpKSB7XG4gICAgdGhpcy5fc3Rha2luZ0NvbnRyYWN0QUJJID0gYWJpO1xuICB9XG5cbiAgYnVpbGRDbGF1c2VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGFraW5nQ29udHJhY3RBZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0YWtpbmcgY29udHJhY3QgYWRkcmVzcyBpcyBub3Qgc2V0Jyk7XG4gICAgfVxuXG4gICAgdXRpbHMudmFsaWRhdGVTdGFraW5nQ29udHJhY3RBZGRyZXNzKHRoaXMuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcywgdGhpcy5fY29pbkNvbmZpZyk7XG5cbiAgICBpZiAodGhpcy5sZXZlbElkID09PSB1bmRlZmluZWQgfHwgdGhpcy5sZXZlbElkID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xldmVsIElEIGlzIG5vdCBzZXQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYW1vdW50VG9TdGFrZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBbW91bnQgdG8gc3Rha2UgaXMgbm90IHNldCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldFN0YWtpbmdEYXRhKHRoaXMubGV2ZWxJZCwgdGhpcy5hdXRvcmVuZXcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uRGF0YSA9IGRhdGE7XG5cbiAgICAvLyBDcmVhdGUgdGhlIGNsYXVzZSBmb3Igc3Rha2luZ1xuICAgIHRoaXMuX2NsYXVzZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHRvOiB0aGlzLnN0YWtpbmdDb250cmFjdEFkZHJlc3MsXG4gICAgICAgIHZhbHVlOiB0aGlzLmFtb3VudFRvU3Rha2UsXG4gICAgICAgIGRhdGE6IHRoaXMuX3RyYW5zYWN0aW9uRGF0YSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIC8vIFNldCByZWNpcGllbnRzIGJhc2VkIG9uIHRoZSBjbGF1c2VzXG4gICAgdGhpcy5fcmVjaXBpZW50cyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogdGhpcy5zdGFraW5nQ29udHJhY3RBZGRyZXNzLFxuICAgICAgICBhbW91bnQ6IHRoaXMuYW1vdW50VG9TdGFrZSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuICAvKipcbiAgICogRW5jb2RlcyBzdGFraW5nIHRyYW5zYWN0aW9uIGRhdGEgdXNpbmcgZXRoZXJldW1qcy1hYmkgZm9yIHN0YWtlQW5kRGVsZWdhdGUgbWV0aG9kXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbElkIC0gVGhlIGxldmVsIElEIGZvciBzdGFraW5nXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXV0b3JlbmV3IC0gV2hldGhlciB0byBlbmFibGUgYXV0b3JlbmV3XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGVuY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgZ2V0U3Rha2luZ0RhdGEobGV2ZWxJZDogbnVtYmVyLCBhdXRvcmVuZXcgPSB0cnVlKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gJ3N0YWtlQW5kRGVsZWdhdGUnO1xuICAgIGNvbnN0IHR5cGVzID0gWyd1aW50OCcsICdib29sJ107XG4gICAgY29uc3QgcGFyYW1zID0gW2xldmVsSWQsIGF1dG9yZW5ld107XG5cbiAgICBjb25zdCBtZXRob2QgPSBFdGhlcmV1bUFiaS5tZXRob2RJRChtZXRob2ROYW1lLCB0eXBlcyk7XG4gICAgY29uc3QgYXJncyA9IEV0aGVyZXVtQWJpLnJhd0VuY29kZSh0eXBlcywgcGFyYW1zKTtcblxuICAgIHJldHVybiBhZGRIZXhQcmVmaXgoQnVmZmVyLmNvbmNhdChbbWV0aG9kLCBhcmdzXSkudG9TdHJpbmcoJ2hleCcpKTtcbiAgfVxuXG4gIHRvSnNvbigpOiBWZXRUcmFuc2FjdGlvbkRhdGEge1xuICAgIGNvbnN0IGpzb246IFZldFRyYW5zYWN0aW9uRGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgY2hhaW5UYWc6IHRoaXMuY2hhaW5UYWcsXG4gICAgICBibG9ja1JlZjogdGhpcy5ibG9ja1JlZixcbiAgICAgIGV4cGlyYXRpb246IHRoaXMuZXhwaXJhdGlvbixcbiAgICAgIGdhc1ByaWNlQ29lZjogdGhpcy5nYXNQcmljZUNvZWYsXG4gICAgICBnYXM6IHRoaXMuZ2FzLFxuICAgICAgZGVwZW5kc09uOiB0aGlzLmRlcGVuZHNPbixcbiAgICAgIG5vbmNlOiB0aGlzLm5vbmNlLFxuICAgICAgZGF0YTogdGhpcy50cmFuc2FjdGlvbkRhdGEsXG4gICAgICB2YWx1ZTogdGhpcy5hbW91bnRUb1N0YWtlLFxuICAgICAgc2VuZGVyOiB0aGlzLnNlbmRlcixcbiAgICAgIHRvOiB0aGlzLnN0YWtpbmdDb250cmFjdEFkZHJlc3MsXG4gICAgICBzdGFraW5nQ29udHJhY3RBZGRyZXNzOiB0aGlzLnN0YWtpbmdDb250cmFjdEFkZHJlc3MsXG4gICAgICBhbW91bnRUb1N0YWtlOiB0aGlzLmFtb3VudFRvU3Rha2UsXG4gICAgICBuZnRUb2tlbklkOiB0aGlzLmxldmVsSWQsXG4gICAgICBhdXRvcmVuZXc6IHRoaXMuYXV0b3JlbmV3LFxuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIGZyb21EZXNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbihzaWduZWRUeDogVmV0VHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFzaWduZWRUeCB8fCAhc2lnbmVkVHguYm9keSkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgdHJhbnNhY3Rpb24gYm9keScpO1xuICAgICAgfVxuXG4gICAgICAvLyBTdG9yZSB0aGUgcmF3IHRyYW5zYWN0aW9uXG4gICAgICB0aGlzLnJhd1RyYW5zYWN0aW9uID0gc2lnbmVkVHg7XG5cbiAgICAgIC8vIFNldCB0cmFuc2FjdGlvbiBib2R5IHByb3BlcnRpZXNcbiAgICAgIGNvbnN0IGJvZHkgPSBzaWduZWRUeC5ib2R5O1xuICAgICAgdGhpcy5jaGFpblRhZyA9IHR5cGVvZiBib2R5LmNoYWluVGFnID09PSAnbnVtYmVyJyA/IGJvZHkuY2hhaW5UYWcgOiAwO1xuICAgICAgdGhpcy5ibG9ja1JlZiA9IGJvZHkuYmxvY2tSZWYgfHwgJzB4MCc7XG4gICAgICB0aGlzLmV4cGlyYXRpb24gPSB0eXBlb2YgYm9keS5leHBpcmF0aW9uID09PSAnbnVtYmVyJyA/IGJvZHkuZXhwaXJhdGlvbiA6IDY0O1xuICAgICAgdGhpcy5jbGF1c2VzID0gYm9keS5jbGF1c2VzIHx8IFtdO1xuICAgICAgdGhpcy5nYXNQcmljZUNvZWYgPSB0eXBlb2YgYm9keS5nYXNQcmljZUNvZWYgPT09ICdudW1iZXInID8gYm9keS5nYXNQcmljZUNvZWYgOiAxMjg7XG4gICAgICB0aGlzLmdhcyA9IHR5cGVvZiBib2R5LmdhcyA9PT0gJ251bWJlcicgPyBib2R5LmdhcyA6IE51bWJlcihib2R5LmdhcykgfHwgMDtcbiAgICAgIHRoaXMuZGVwZW5kc09uID0gYm9keS5kZXBlbmRzT24gfHwgbnVsbDtcbiAgICAgIHRoaXMubm9uY2UgPSBTdHJpbmcoYm9keS5ub25jZSk7XG5cbiAgICAgIC8vIFNldCBzdGFraW5nLXNwZWNpZmljIHByb3BlcnRpZXNcbiAgICAgIGlmIChib2R5LmNsYXVzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBjbGF1c2UgPSBib2R5LmNsYXVzZXNbMF07XG4gICAgICAgIGlmIChjbGF1c2UudG8pIHtcbiAgICAgICAgICB0aGlzLnN0YWtpbmdDb250cmFjdEFkZHJlc3MgPSBjbGF1c2UudG87XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsYXVzZS52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuYW1vdW50VG9TdGFrZSA9IFN0cmluZyhjbGF1c2UudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjbGF1c2UuZGF0YSkge1xuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25EYXRhID0gY2xhdXNlLmRhdGE7XG4gICAgICAgICAgY29uc3QgZGVjb2RlZCA9IHV0aWxzLmRlY29kZVN0YWtpbmdEYXRhKGNsYXVzZS5kYXRhKTtcbiAgICAgICAgICB0aGlzLmxldmVsSWQgPSBkZWNvZGVkLmxldmVsSWQ7XG4gICAgICAgICAgdGhpcy5hdXRvcmVuZXcgPSBkZWNvZGVkLmF1dG9yZW5ldztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTZXQgcmVjaXBpZW50cyBmcm9tIGNsYXVzZXNcbiAgICAgIHRoaXMucmVjaXBpZW50cyA9IGJvZHkuY2xhdXNlcy5tYXAoKGNsYXVzZSkgPT4gKHtcbiAgICAgICAgYWRkcmVzczogKGNsYXVzZS50byB8fCAnMHgwJykudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICBhbW91bnQ6IG5ldyBCaWdOdW1iZXIoY2xhdXNlLnZhbHVlIHx8IDApLnRvU3RyaW5nKCksXG4gICAgICB9KSk7XG4gICAgICB0aGlzLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG5cbiAgICAgIC8vIFNldCBzZW5kZXIgYWRkcmVzc1xuICAgICAgaWYgKHNpZ25lZFR4LnNpZ25hdHVyZSAmJiBzaWduZWRUeC5vcmlnaW4pIHtcbiAgICAgICAgdGhpcy5zZW5kZXIgPSBzaWduZWRUeC5vcmlnaW4udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgc2lnbmF0dXJlcyBpZiBwcmVzZW50XG4gICAgICBpZiAoc2lnbmVkVHguc2lnbmF0dXJlKSB7XG4gICAgICAgIC8vIEZpcnN0IHNpZ25hdHVyZSBpcyBzZW5kZXIncyBzaWduYXR1cmVcbiAgICAgICAgdGhpcy5zZW5kZXJTaWduYXR1cmUgPSBCdWZmZXIuZnJvbShzaWduZWRUeC5zaWduYXR1cmUuc2xpY2UoMCwgU2VjcDI1NmsxLlNJR05BVFVSRV9MRU5HVEgpKTtcblxuICAgICAgICAvLyBJZiB0aGVyZSdzIGFkZGl0aW9uYWwgc2lnbmF0dXJlIGRhdGEsIGl0J3MgdGhlIGZlZSBwYXllcidzIHNpZ25hdHVyZVxuICAgICAgICBpZiAoc2lnbmVkVHguc2lnbmF0dXJlLmxlbmd0aCA+IFNlY3AyNTZrMS5TSUdOQVRVUkVfTEVOR1RIKSB7XG4gICAgICAgICAgdGhpcy5mZWVQYXllclNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKHNpZ25lZFR4LnNpZ25hdHVyZS5zbGljZShTZWNwMjU2azEuU0lHTkFUVVJFX0xFTkdUSCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBGYWlsZWQgdG8gZGVzZXJpYWxpemUgdHJhbnNhY3Rpb246ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Transaction as VetTransaction } from '@vechain/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
import { VetTransactionData } from '../iface';
|
|
5
|
+
export declare class TokenTransaction extends Transaction {
|
|
6
|
+
private _tokenAddress;
|
|
7
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
8
|
+
get tokenAddress(): string;
|
|
9
|
+
set tokenAddress(address: string);
|
|
10
|
+
buildClauses(): void;
|
|
11
|
+
toJson(): VetTransactionData;
|
|
12
|
+
fromDeserializedSignedTransaction(signedTx: VetTransaction): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=tokenTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/tokenTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,WAAW,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE7E,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,OAAO,CAAC,aAAa,CAAS;gBAElB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,CAAC,OAAO,EAAE,MAAM,EAE/B;IAED,YAAY,IAAI,IAAI;IAcpB,MAAM,IAAI,kBAAkB;IAmB5B,iCAAiC,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;CA4ClE"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TokenTransaction = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const sdk_core_1 = require("@vechain/sdk-core");
|
|
9
|
+
const sdk_core_2 = require("@bitgo-beta/sdk-core");
|
|
10
|
+
const transaction_1 = require("./transaction");
|
|
11
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
12
|
+
class TokenTransaction extends transaction_1.Transaction {
|
|
13
|
+
constructor(_coinConfig) {
|
|
14
|
+
super(_coinConfig);
|
|
15
|
+
this._type = sdk_core_2.TransactionType.Send;
|
|
16
|
+
}
|
|
17
|
+
get tokenAddress() {
|
|
18
|
+
return this._tokenAddress;
|
|
19
|
+
}
|
|
20
|
+
set tokenAddress(address) {
|
|
21
|
+
this._tokenAddress = address;
|
|
22
|
+
}
|
|
23
|
+
buildClauses() {
|
|
24
|
+
if (!this.tokenAddress) {
|
|
25
|
+
throw new Error('Token address is not set');
|
|
26
|
+
}
|
|
27
|
+
this.clauses = this.recipients.map((recipient) => {
|
|
28
|
+
const data = utils_1.default.getTransferTokenData(recipient.address, String(recipient.amount));
|
|
29
|
+
return {
|
|
30
|
+
to: this.tokenAddress,
|
|
31
|
+
value: '0x0',
|
|
32
|
+
data,
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
toJson() {
|
|
37
|
+
const json = {
|
|
38
|
+
id: this.id,
|
|
39
|
+
chainTag: this.chainTag,
|
|
40
|
+
blockRef: this.blockRef,
|
|
41
|
+
expiration: this.expiration,
|
|
42
|
+
recipients: this.recipients,
|
|
43
|
+
gasPriceCoef: this.gasPriceCoef,
|
|
44
|
+
gas: this.gas,
|
|
45
|
+
dependsOn: this.dependsOn,
|
|
46
|
+
nonce: this.nonce,
|
|
47
|
+
sender: this.sender,
|
|
48
|
+
feePayer: this.feePayerAddress,
|
|
49
|
+
tokenAddress: this.tokenAddress,
|
|
50
|
+
};
|
|
51
|
+
return json;
|
|
52
|
+
}
|
|
53
|
+
fromDeserializedSignedTransaction(signedTx) {
|
|
54
|
+
try {
|
|
55
|
+
if (!signedTx || !signedTx.body) {
|
|
56
|
+
throw new sdk_core_2.InvalidTransactionError('Invalid transaction: missing transaction body');
|
|
57
|
+
}
|
|
58
|
+
// Store the raw transaction
|
|
59
|
+
this.rawTransaction = signedTx;
|
|
60
|
+
// Set transaction body properties
|
|
61
|
+
const body = signedTx.body;
|
|
62
|
+
this.chainTag = body.chainTag;
|
|
63
|
+
this.blockRef = body.blockRef;
|
|
64
|
+
this.expiration = body.expiration;
|
|
65
|
+
this.clauses = body.clauses;
|
|
66
|
+
this.gasPriceCoef = typeof body.gasPriceCoef === 'number' ? body.gasPriceCoef : 128;
|
|
67
|
+
this.gas = Number(body.gas);
|
|
68
|
+
this.dependsOn = body.dependsOn;
|
|
69
|
+
this.nonce = String(body.nonce);
|
|
70
|
+
// Set recipients from clauses
|
|
71
|
+
(0, assert_1.default)(body.clauses[0].to, 'token address not found in the clauses');
|
|
72
|
+
this.tokenAddress = body.clauses[0].to;
|
|
73
|
+
this.recipients = body.clauses.map((clause) => utils_1.default.decodeTransferTokenData(clause.data));
|
|
74
|
+
this.loadInputsAndOutputs();
|
|
75
|
+
// Set sender address
|
|
76
|
+
if (signedTx.signature && signedTx.origin) {
|
|
77
|
+
this.sender = signedTx.origin.toString().toLowerCase();
|
|
78
|
+
}
|
|
79
|
+
// Set signatures if present
|
|
80
|
+
if (signedTx.signature) {
|
|
81
|
+
// First signature is sender's signature
|
|
82
|
+
this.senderSignature = Buffer.from(signedTx.signature.slice(0, sdk_core_1.Secp256k1.SIGNATURE_LENGTH));
|
|
83
|
+
// If there's additional signature data, it's the fee payer's signature
|
|
84
|
+
if (signedTx.signature.length > sdk_core_1.Secp256k1.SIGNATURE_LENGTH) {
|
|
85
|
+
this.feePayerSignature = Buffer.from(signedTx.signature.slice(sdk_core_1.Secp256k1.SIGNATURE_LENGTH));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
throw new sdk_core_2.InvalidTransactionError(`Failed to deserialize transaction: ${e.message}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.TokenTransaction = TokenTransaction;
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb24vdG9rZW5UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsZ0RBQTZFO0FBRzdFLG1EQUFnRjtBQUNoRiwrQ0FBNEM7QUFDNUMscURBQTZCO0FBSTdCLE1BQWEsZ0JBQWlCLFNBQVEseUJBQVc7SUFHL0MsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxPQUFlO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUMvQyxNQUFNLElBQUksR0FBRyxlQUFLLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDckYsT0FBTztnQkFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQ3JCLEtBQUssRUFBRSxLQUFLO2dCQUNaLElBQUk7YUFDTCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sSUFB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QUMsQ0FBQztnQkFFNUYsdUVBQXVFO2dCQUN2RSxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLG9CQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDM0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsb0JBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzdGLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksa0NBQXVCLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUE3RkQsNENBNkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgU2VjcDI1NmsxLCBUcmFuc2FjdGlvbiBhcyBWZXRUcmFuc2FjdGlvbiB9IGZyb20gJ0B2ZWNoYWluL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQgeyBWZXRUcmFuc2FjdGlvbkRhdGEgfSBmcm9tICcuLi9pZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBUb2tlblRyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF90b2tlbkFkZHJlc3M6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG5cbiAgZ2V0IHRva2VuQWRkcmVzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90b2tlbkFkZHJlc3M7XG4gIH1cblxuICBzZXQgdG9rZW5BZGRyZXNzKGFkZHJlc3M6IHN0cmluZykge1xuICAgIHRoaXMuX3Rva2VuQWRkcmVzcyA9IGFkZHJlc3M7XG4gIH1cblxuICBidWlsZENsYXVzZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRva2VuQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUb2tlbiBhZGRyZXNzIGlzIG5vdCBzZXQnKTtcbiAgICB9XG4gICAgdGhpcy5jbGF1c2VzID0gdGhpcy5yZWNpcGllbnRzLm1hcCgocmVjaXBpZW50KSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdXRpbHMuZ2V0VHJhbnNmZXJUb2tlbkRhdGEocmVjaXBpZW50LmFkZHJlc3MsIFN0cmluZyhyZWNpcGllbnQuYW1vdW50KSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0bzogdGhpcy50b2tlbkFkZHJlc3MsXG4gICAgICAgIHZhbHVlOiAnMHgwJyxcbiAgICAgICAgZGF0YSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICB0b0pzb24oKTogVmV0VHJhbnNhY3Rpb25EYXRhIHtcbiAgICBjb25zdCBqc29uOiBWZXRUcmFuc2FjdGlvbkRhdGEgPSB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIGNoYWluVGFnOiB0aGlzLmNoYWluVGFnLFxuICAgICAgYmxvY2tSZWY6IHRoaXMuYmxvY2tSZWYsXG4gICAgICBleHBpcmF0aW9uOiB0aGlzLmV4cGlyYXRpb24sXG4gICAgICByZWNpcGllbnRzOiB0aGlzLnJlY2lwaWVudHMsXG4gICAgICBnYXNQcmljZUNvZWY6IHRoaXMuZ2FzUHJpY2VDb2VmLFxuICAgICAgZ2FzOiB0aGlzLmdhcyxcbiAgICAgIGRlcGVuZHNPbjogdGhpcy5kZXBlbmRzT24sXG4gICAgICBub25jZTogdGhpcy5ub25jZSxcbiAgICAgIHNlbmRlcjogdGhpcy5zZW5kZXIsXG4gICAgICBmZWVQYXllcjogdGhpcy5mZWVQYXllckFkZHJlc3MsXG4gICAgICB0b2tlbkFkZHJlc3M6IHRoaXMudG9rZW5BZGRyZXNzLFxuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIGZyb21EZXNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbihzaWduZWRUeDogVmV0VHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFzaWduZWRUeCB8fCAhc2lnbmVkVHguYm9keSkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgdHJhbnNhY3Rpb24gYm9keScpO1xuICAgICAgfVxuXG4gICAgICAvLyBTdG9yZSB0aGUgcmF3IHRyYW5zYWN0aW9uXG4gICAgICB0aGlzLnJhd1RyYW5zYWN0aW9uID0gc2lnbmVkVHg7XG5cbiAgICAgIC8vIFNldCB0cmFuc2FjdGlvbiBib2R5IHByb3BlcnRpZXNcbiAgICAgIGNvbnN0IGJvZHkgPSBzaWduZWRUeC5ib2R5O1xuICAgICAgdGhpcy5jaGFpblRhZyA9IGJvZHkuY2hhaW5UYWc7XG4gICAgICB0aGlzLmJsb2NrUmVmID0gYm9keS5ibG9ja1JlZjtcbiAgICAgIHRoaXMuZXhwaXJhdGlvbiA9IGJvZHkuZXhwaXJhdGlvbjtcbiAgICAgIHRoaXMuY2xhdXNlcyA9IGJvZHkuY2xhdXNlcztcbiAgICAgIHRoaXMuZ2FzUHJpY2VDb2VmID0gdHlwZW9mIGJvZHkuZ2FzUHJpY2VDb2VmID09PSAnbnVtYmVyJyA/IGJvZHkuZ2FzUHJpY2VDb2VmIDogMTI4O1xuICAgICAgdGhpcy5nYXMgPSBOdW1iZXIoYm9keS5nYXMpO1xuICAgICAgdGhpcy5kZXBlbmRzT24gPSBib2R5LmRlcGVuZHNPbjtcbiAgICAgIHRoaXMubm9uY2UgPSBTdHJpbmcoYm9keS5ub25jZSk7XG4gICAgICAvLyBTZXQgcmVjaXBpZW50cyBmcm9tIGNsYXVzZXNcbiAgICAgIGFzc2VydChib2R5LmNsYXVzZXNbMF0udG8sICd0b2tlbiBhZGRyZXNzIG5vdCBmb3VuZCBpbiB0aGUgY2xhdXNlcycpO1xuICAgICAgdGhpcy50b2tlbkFkZHJlc3MgPSBib2R5LmNsYXVzZXNbMF0udG87XG4gICAgICB0aGlzLnJlY2lwaWVudHMgPSBib2R5LmNsYXVzZXMubWFwKChjbGF1c2UpID0+IHV0aWxzLmRlY29kZVRyYW5zZmVyVG9rZW5EYXRhKGNsYXVzZS5kYXRhKSk7XG4gICAgICB0aGlzLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG5cbiAgICAgIC8vIFNldCBzZW5kZXIgYWRkcmVzc1xuICAgICAgaWYgKHNpZ25lZFR4LnNpZ25hdHVyZSAmJiBzaWduZWRUeC5vcmlnaW4pIHtcbiAgICAgICAgdGhpcy5zZW5kZXIgPSBzaWduZWRUeC5vcmlnaW4udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgc2lnbmF0dXJlcyBpZiBwcmVzZW50XG4gICAgICBpZiAoc2lnbmVkVHguc2lnbmF0dXJlKSB7XG4gICAgICAgIC8vIEZpcnN0IHNpZ25hdHVyZSBpcyBzZW5kZXIncyBzaWduYXR1cmVcbiAgICAgICAgdGhpcy5zZW5kZXJTaWduYXR1cmUgPSBCdWZmZXIuZnJvbShzaWduZWRUeC5zaWduYXR1cmUuc2xpY2UoMCwgU2VjcDI1NmsxLlNJR05BVFVSRV9MRU5HVEgpKTtcblxuICAgICAgICAvLyBJZiB0aGVyZSdzIGFkZGl0aW9uYWwgc2lnbmF0dXJlIGRhdGEsIGl0J3MgdGhlIGZlZSBwYXllcidzIHNpZ25hdHVyZVxuICAgICAgICBpZiAoc2lnbmVkVHguc2lnbmF0dXJlLmxlbmd0aCA+IFNlY3AyNTZrMS5TSUdOQVRVUkVfTEVOR1RIKSB7XG4gICAgICAgICAgdGhpcy5mZWVQYXllclNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKHNpZ25lZFR4LnNpZ25hdHVyZS5zbGljZShTZWNwMjU2azEuU0lHTkFUVVJFX0xFTkdUSCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBGYWlsZWQgdG8gZGVzZXJpYWxpemUgdHJhbnNhY3Rpb246ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { BaseTransaction, TransactionType, TransactionRecipient } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { TransactionClause, Transaction as VetTransaction } from '@vechain/sdk-core';
|
|
4
|
+
import { VetTransactionExplanation, VetTransactionData } from '../iface';
|
|
5
|
+
export declare class Transaction extends BaseTransaction {
|
|
6
|
+
protected _rawTransaction: VetTransaction;
|
|
7
|
+
protected _type: TransactionType;
|
|
8
|
+
protected _recipients: TransactionRecipient[];
|
|
9
|
+
protected _clauses: TransactionClause[];
|
|
10
|
+
protected _contract: string;
|
|
11
|
+
protected _transactionData: string;
|
|
12
|
+
private _chainTag;
|
|
13
|
+
private _blockRef;
|
|
14
|
+
private _expiration;
|
|
15
|
+
private _gasPriceCoef;
|
|
16
|
+
private _gas;
|
|
17
|
+
private _dependsOn;
|
|
18
|
+
private _nonce;
|
|
19
|
+
private _sender;
|
|
20
|
+
private _senderSignature;
|
|
21
|
+
private _feePayerAddress;
|
|
22
|
+
private _feePayerSignature;
|
|
23
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
24
|
+
get id(): string;
|
|
25
|
+
get rawTransaction(): VetTransaction;
|
|
26
|
+
set rawTransaction(rawTx: VetTransaction);
|
|
27
|
+
get type(): TransactionType;
|
|
28
|
+
set type(type: TransactionType);
|
|
29
|
+
get sender(): string;
|
|
30
|
+
set sender(address: string);
|
|
31
|
+
get senderSignature(): Uint8Array | undefined;
|
|
32
|
+
set senderSignature(sig: Buffer);
|
|
33
|
+
get feePayerAddress(): string;
|
|
34
|
+
set feePayerAddress(address: string);
|
|
35
|
+
get feePayerSignature(): Uint8Array | undefined;
|
|
36
|
+
set feePayerSignature(sig: Buffer);
|
|
37
|
+
get chainTag(): number;
|
|
38
|
+
set chainTag(tag: number);
|
|
39
|
+
get blockRef(): string;
|
|
40
|
+
set blockRef(ref: string);
|
|
41
|
+
get expiration(): number;
|
|
42
|
+
set expiration(exp: number);
|
|
43
|
+
get recipients(): TransactionRecipient[];
|
|
44
|
+
set recipients(recipients: TransactionRecipient[]);
|
|
45
|
+
get clauses(): TransactionClause[];
|
|
46
|
+
set clauses(clauses: TransactionClause[]);
|
|
47
|
+
get gasPriceCoef(): number;
|
|
48
|
+
set gasPriceCoef(coef: number);
|
|
49
|
+
get gas(): number;
|
|
50
|
+
set gas(g: number);
|
|
51
|
+
get dependsOn(): string | null;
|
|
52
|
+
set dependsOn(dep: string | null);
|
|
53
|
+
get nonce(): string;
|
|
54
|
+
set nonce(n: string);
|
|
55
|
+
get contract(): string;
|
|
56
|
+
set contract(address: string);
|
|
57
|
+
get transactionData(): string;
|
|
58
|
+
set transactionData(transactionData: string);
|
|
59
|
+
/**
|
|
60
|
+
* Get all signatures associated with this transaction
|
|
61
|
+
* Required by BaseTransaction
|
|
62
|
+
*/
|
|
63
|
+
get signature(): string[];
|
|
64
|
+
/**
|
|
65
|
+
* Set signatures for this transaction
|
|
66
|
+
* Required by BaseTransaction
|
|
67
|
+
* Note: This is mainly for compatibility with the base class.
|
|
68
|
+
* Prefer using senderSignature and feePayerSignature directly.
|
|
69
|
+
*/
|
|
70
|
+
set signature(sigs: string[]);
|
|
71
|
+
/** @inheritdoc */
|
|
72
|
+
canSign(): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Check if this is a fee delegated transaction
|
|
75
|
+
*/
|
|
76
|
+
isFeeDelegated(): boolean;
|
|
77
|
+
addRecipients(clauses: TransactionClause[]): void;
|
|
78
|
+
buildClauses(): void;
|
|
79
|
+
/**
|
|
80
|
+
* Populates the transaction object with data from a deserialized VeChain transaction
|
|
81
|
+
* @param signedTx - The deserialized VeChain transaction containing body, signatures, and other transaction data
|
|
82
|
+
* @throws {InvalidTransactionError} When the transaction is invalid or missing required data
|
|
83
|
+
*/
|
|
84
|
+
fromDeserializedSignedTransaction(signedTx: VetTransaction): void;
|
|
85
|
+
addSenderSignature(signature: Buffer): void;
|
|
86
|
+
addFeePayerSignature(signature: Buffer): void;
|
|
87
|
+
build(): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Sets the transaction ID from the raw transaction if it is signed
|
|
90
|
+
* @protected
|
|
91
|
+
*/
|
|
92
|
+
protected generateTxnIdAndSetSender(): void;
|
|
93
|
+
protected buildRawTransaction(): Promise<void>;
|
|
94
|
+
loadInputsAndOutputs(): void;
|
|
95
|
+
fromRawTransaction(rawTransaction: string): void;
|
|
96
|
+
/** @inheritdoc */
|
|
97
|
+
toJson(): VetTransactionData;
|
|
98
|
+
getFee(): string;
|
|
99
|
+
get signablePayload(): Buffer;
|
|
100
|
+
/** @inheritdoc */
|
|
101
|
+
toBroadcastFormat(): string;
|
|
102
|
+
serialize(): string;
|
|
103
|
+
static deserializeTransaction(rawTx: string): VetTransaction;
|
|
104
|
+
explainTransaction(): VetTransactionExplanation;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/transaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAA2B,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACvH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAEL,iBAAiB,EACjB,WAAW,IAAI,cAAc,EAG9B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAIzE,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,eAAe,EAAE,cAAc,CAAC;IAC1C,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IAC9C,SAAS,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IACxC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,kBAAkB,CAAgB;gBAE9B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAgB7C,IAAW,EAAE,IAAI,MAAM,CAGtB;IAED,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,cAAc,EAEvC;IAED,IAAI,IAAI,IAAI,eAAe,CAE1B;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,eAAe,EAE7B;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAEzB;IAED,IAAI,eAAe,IAAI,UAAU,GAAG,SAAS,CAM5C;IAED,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,EAE9B;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,EAElC;IAED,IAAI,iBAAiB,IAAI,UAAU,GAAG,SAAS,CAM9C;IAED,IAAI,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAEhC;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,EAEvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,EAEvB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,CAAC,GAAG,EAAE,MAAM,EAEzB;IAED,IAAI,UAAU,IAAI,oBAAoB,EAAE,CAEvC;IAED,IAAI,UAAU,CAAC,UAAU,EAAE,oBAAoB,EAAE,EAEhD;IAED,IAAI,OAAO,IAAI,iBAAiB,EAAE,CAEjC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAEvC;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,EAE5B;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,EAEhB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAE/B;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAElB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAE3B;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,eAAe,CAAC,eAAe,EAAE,MAAM,EAE1C;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,MAAM,EAAE,CASxB;IAED;;;;;OAKG;IACH,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAO3B;IAED,kBAAkB;IAClB,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB,aAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAOjD,YAAY,IAAI,IAAI;IAQpB;;;;OAIG;IACH,iCAAiC,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IA8CjE,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI3C,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;OAGG;IACH,SAAS,CAAC,yBAAyB,IAAI,IAAI;cAkC3B,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBpD,oBAAoB,IAAI,IAAI;IAqB5B,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAUhD,kBAAkB;IAClB,MAAM,IAAI,kBAAkB;IAkBrB,MAAM,IAAI,MAAM;IAQvB,IAAW,eAAe,IAAI,MAAM,CAEnC;IAED,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,SAAS,IAAI,MAAM;IA+BnB,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;IAc5D,kBAAkB,IAAI,yBAAyB;CA6BhD"}
|