@bitgo-beta/sdk-coin-vet 1.0.1-beta.57 → 1.0.1-beta.570
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/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/constants.d.ts +26 -0
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +28 -2
- package/dist/src/lib/iface.d.ts +27 -2
- 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 +19 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +40 -2
- 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 +29 -0
- package/dist/src/lib/transaction/burnNftTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/burnNftTransaction.js +138 -0
- package/dist/src/lib/transaction/claimRewards.d.ts +31 -0
- package/dist/src/lib/transaction/claimRewards.d.ts.map +1 -0
- package/dist/src/lib/transaction/claimRewards.js +151 -0
- package/dist/src/lib/transaction/delegateClauseTransaction.d.ts +27 -0
- package/dist/src/lib/transaction/delegateClauseTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/delegateClauseTransaction.js +158 -0
- package/dist/src/lib/transaction/exitDelegation.d.ts +29 -0
- package/dist/src/lib/transaction/exitDelegation.d.ts.map +1 -0
- package/dist/src/lib/transaction/exitDelegation.js +143 -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/stakeClauseTransaction.d.ts +27 -0
- package/dist/src/lib/transaction/stakeClauseTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/stakeClauseTransaction.js +158 -0
- package/dist/src/lib/transaction/stakingTransaction.d.ts +31 -0
- package/dist/src/lib/transaction/stakingTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/stakingTransaction.js +169 -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 +18 -28
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/transaction.js +98 -58
- 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 +59 -0
- package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/claimRewardsBuilder.js +117 -0
- package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts +72 -0
- package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/delegateTxnBuilder.js +133 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts +59 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.js +118 -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/stakeClauseTxnBuilder.d.ts +73 -0
- package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.js +146 -0
- package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts +73 -0
- package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/stakingBuilder.js +147 -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/transactionBuilder.d.ts +10 -9
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder/transactionBuilder.js +25 -19
- package/dist/src/lib/transactionBuilderFactory.d.ts +52 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +115 -1
- package/dist/src/lib/types.d.ts +21 -0
- package/dist/src/lib/types.d.ts.map +1 -1
- package/dist/src/lib/types.js +1 -1
- package/dist/src/lib/utils.d.ts +98 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +262 -8
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/dist/src/vet.d.ts +94 -3
- package/dist/src/vet.d.ts.map +1 -1
- package/dist/src/vet.js +505 -10
- 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 +1 -1
- package/dist/src/vetToken.d.ts.map +1 -1
- package/dist/src/vetToken.js +2 -2
- package/dist/test/resources/vet.d.ts +73 -0
- package/dist/test/resources/vet.d.ts.map +1 -0
- package/dist/test/resources/vet.js +128 -0
- package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/addressInitializationBuilder.js +141 -0
- package/dist/test/transactionBuilder/burnNftBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/burnNftBuilder.js +150 -0
- package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/claimRewardsBuilder.js +175 -0
- package/dist/test/transactionBuilder/delegateClauseTxnBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/delegateClauseTxnBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/delegateClauseTxnBuilder.js +184 -0
- package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/exitDelegationBuilder.js +150 -0
- package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/flushTokenTransactionBuilder.js +132 -0
- package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/nftTransactionBuilder.js +242 -0
- package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.js +247 -0
- package/dist/test/transactionBuilder/stakingTransaction.d.ts +2 -0
- package/dist/test/transactionBuilder/stakingTransaction.d.ts.map +1 -0
- package/dist/test/transactionBuilder/stakingTransaction.js +250 -0
- package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/tokenTransactionBuilder.js +249 -0
- package/dist/test/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/transferBuilder.js +244 -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 +181 -0
- package/dist/test/unit/stakingFlowE2E.d.ts +2 -0
- package/dist/test/unit/stakingFlowE2E.d.ts.map +1 -0
- package/dist/test/unit/stakingFlowE2E.js +222 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +106 -0
- package/dist/test/unit/vet.d.ts +2 -0
- package/dist/test/unit/vet.d.ts.map +1 -0
- package/dist/test/unit/vet.js +336 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +16 -10
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -34
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const should_1 = __importDefault(require("should"));
|
|
40
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
41
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
42
|
+
const lib_1 = require("../../src/lib");
|
|
43
|
+
const testData = __importStar(require("../resources/vet"));
|
|
44
|
+
describe('VET Staking Flow - End-to-End Test', function () {
|
|
45
|
+
const coinConfig = statics_1.coins.get('tvet');
|
|
46
|
+
const factory = new lib_1.TransactionBuilderFactory(coinConfig);
|
|
47
|
+
// Test data
|
|
48
|
+
const stakingContractAddress = testData.STAKING_CONTRACT_ADDRESS;
|
|
49
|
+
const amountToStake = '1000000000000000000'; // 1 VET in wei
|
|
50
|
+
const levelId = testData.STAKING_LEVEL_ID;
|
|
51
|
+
const senderAddress = '0x9378c12BD7502A11F770a5C1F223c959B2805dA9';
|
|
52
|
+
const feePayerAddress = '0xdc9fef0b84a0ccf3f1bd4b84e41743e3e051a083';
|
|
53
|
+
// Mock signatures for testing (these would come from actual signing in real scenario)
|
|
54
|
+
const mockSenderSignature = Buffer.from(testData.senderSig, 'hex');
|
|
55
|
+
const mockFeePayerSignature = Buffer.from(testData.feePayerSig, 'hex');
|
|
56
|
+
describe('Complete Staking Transaction Flow', function () {
|
|
57
|
+
it('should build, sign, and serialize a complete staking transaction with fee delegation', async function () {
|
|
58
|
+
// Step 1: Build the staking transaction
|
|
59
|
+
const stakingBuilder = factory.getStakingActivateBuilder();
|
|
60
|
+
stakingBuilder
|
|
61
|
+
.stakingContractAddress(stakingContractAddress)
|
|
62
|
+
.amountToStake(amountToStake)
|
|
63
|
+
.levelId(levelId)
|
|
64
|
+
.sender(senderAddress)
|
|
65
|
+
.chainTag(0x27) // Testnet chain tag
|
|
66
|
+
.blockRef('0x014ead140e77bbc1')
|
|
67
|
+
.expiration(64)
|
|
68
|
+
.gas(100000)
|
|
69
|
+
.gasPriceCoef(128)
|
|
70
|
+
.nonce('12345');
|
|
71
|
+
stakingBuilder.addFeePayerAddress(feePayerAddress);
|
|
72
|
+
const unsignedTx = await stakingBuilder.build();
|
|
73
|
+
should_1.default.exist(unsignedTx);
|
|
74
|
+
unsignedTx.should.be.instanceof(lib_1.StakeClauseTransaction);
|
|
75
|
+
const stakingTx = unsignedTx;
|
|
76
|
+
// Verify transaction structure
|
|
77
|
+
stakingTx.type.should.equal(sdk_core_1.TransactionType.StakingActivate);
|
|
78
|
+
stakingTx.stakingContractAddress.should.equal(stakingContractAddress);
|
|
79
|
+
stakingTx.amountToStake.should.equal(amountToStake);
|
|
80
|
+
stakingTx.levelId.should.equal(levelId);
|
|
81
|
+
should_1.default.exist(stakingTx.rawTransaction);
|
|
82
|
+
should_1.default.exist(stakingTx.rawTransaction.body);
|
|
83
|
+
// This is the critical test - ensure reserved.features = 1 for ContractCall type
|
|
84
|
+
should_1.default.exist(stakingTx.rawTransaction.body.reserved);
|
|
85
|
+
stakingTx.rawTransaction.body.reserved.should.have.property('features', 1);
|
|
86
|
+
// Step 3: Add sender signature
|
|
87
|
+
stakingTx.addSenderSignature(mockSenderSignature);
|
|
88
|
+
should_1.default.exist(stakingTx.senderSignature);
|
|
89
|
+
Buffer.from(stakingTx.senderSignature).should.eql(mockSenderSignature);
|
|
90
|
+
// Step 4: Add fee payer signature
|
|
91
|
+
stakingTx.addFeePayerSignature(mockFeePayerSignature);
|
|
92
|
+
should_1.default.exist(stakingTx.feePayerSignature);
|
|
93
|
+
Buffer.from(stakingTx.feePayerSignature).should.eql(mockFeePayerSignature);
|
|
94
|
+
// Step 5: Generate transaction ID
|
|
95
|
+
// This should NOT throw "not signed transaction: id unavailable" error anymore
|
|
96
|
+
const transactionId = stakingTx.id;
|
|
97
|
+
should_1.default.exist(transactionId);
|
|
98
|
+
transactionId.should.not.equal('UNAVAILABLE');
|
|
99
|
+
// Step 6: Serialize the fully signed transaction
|
|
100
|
+
const serializedTx = stakingTx.toBroadcastFormat();
|
|
101
|
+
should_1.default.exist(serializedTx);
|
|
102
|
+
serializedTx.should.be.type('string');
|
|
103
|
+
serializedTx.should.startWith('0x');
|
|
104
|
+
// Step 7: Verify transaction can be deserialized
|
|
105
|
+
const deserializedBuilder = factory.from(serializedTx);
|
|
106
|
+
const deserializedTx = deserializedBuilder.transaction;
|
|
107
|
+
deserializedTx.should.be.instanceof(lib_1.StakeClauseTransaction);
|
|
108
|
+
deserializedTx.stakingContractAddress.should.equal(stakingContractAddress);
|
|
109
|
+
deserializedTx.amountToStake.should.equal(amountToStake);
|
|
110
|
+
deserializedTx.levelId.should.equal(levelId);
|
|
111
|
+
// Step 8: Verify toJson output
|
|
112
|
+
const jsonOutput = stakingTx.toJson();
|
|
113
|
+
should_1.default.exist(jsonOutput);
|
|
114
|
+
jsonOutput.should.have.property('id', transactionId);
|
|
115
|
+
jsonOutput.should.have.property('stakingContractAddress', stakingContractAddress);
|
|
116
|
+
// JSON output keeps decimal format for amounts
|
|
117
|
+
jsonOutput.should.have.property('amountToStake', amountToStake);
|
|
118
|
+
jsonOutput.should.have.property('levelId', levelId);
|
|
119
|
+
});
|
|
120
|
+
it('should handle signature combination in the correct order', async function () {
|
|
121
|
+
// This test specifically validates the signature combination flow that was failing
|
|
122
|
+
const stakingBuilder = factory.getStakingActivateBuilder();
|
|
123
|
+
stakingBuilder
|
|
124
|
+
.stakingContractAddress(stakingContractAddress)
|
|
125
|
+
.amountToStake(amountToStake)
|
|
126
|
+
.levelId(levelId)
|
|
127
|
+
.sender(senderAddress)
|
|
128
|
+
.chainTag(0x27)
|
|
129
|
+
.blockRef('0x014ead140e77bbc1')
|
|
130
|
+
.expiration(64)
|
|
131
|
+
.gas(100000)
|
|
132
|
+
.gasPriceCoef(128)
|
|
133
|
+
.nonce('12345');
|
|
134
|
+
stakingBuilder.addFeePayerAddress(feePayerAddress);
|
|
135
|
+
const tx = (await stakingBuilder.build());
|
|
136
|
+
// Test 1: Only sender signature - should generate half-signed transaction
|
|
137
|
+
tx.addSenderSignature(mockSenderSignature);
|
|
138
|
+
// Test 2: Add fee payer signature - should generate fully signed transaction
|
|
139
|
+
tx.addFeePayerSignature(mockFeePayerSignature);
|
|
140
|
+
// Should be able to get transaction ID with both signatures
|
|
141
|
+
const fullSignedId = tx.id;
|
|
142
|
+
should_1.default.exist(fullSignedId);
|
|
143
|
+
fullSignedId.should.not.equal('UNAVAILABLE');
|
|
144
|
+
// The ID should be consistent
|
|
145
|
+
fullSignedId.should.be.type('string');
|
|
146
|
+
fullSignedId.length.should.be.greaterThan(10);
|
|
147
|
+
});
|
|
148
|
+
it('should properly set transaction type for fee delegation validation', async function () {
|
|
149
|
+
// This test ensures our fix for TransactionType.ContractCall is working
|
|
150
|
+
const stakingBuilder = factory.getStakingActivateBuilder();
|
|
151
|
+
stakingBuilder
|
|
152
|
+
.stakingContractAddress(stakingContractAddress)
|
|
153
|
+
.amountToStake(amountToStake)
|
|
154
|
+
.levelId(levelId)
|
|
155
|
+
.sender(senderAddress)
|
|
156
|
+
.chainTag(0x27)
|
|
157
|
+
.blockRef('0x014ead140e77bbc1')
|
|
158
|
+
.expiration(64)
|
|
159
|
+
.gas(100000)
|
|
160
|
+
.gasPriceCoef(128)
|
|
161
|
+
.nonce('12345');
|
|
162
|
+
stakingBuilder.addFeePayerAddress(feePayerAddress);
|
|
163
|
+
const tx = (await stakingBuilder.build());
|
|
164
|
+
// Verify the transaction type is ContractCall
|
|
165
|
+
tx.type.should.equal(sdk_core_1.TransactionType.StakingActivate);
|
|
166
|
+
// Verify fee delegation is enabled via reserved.features = 1
|
|
167
|
+
const rawTxBody = tx.rawTransaction.body;
|
|
168
|
+
should_1.default.exist(rawTxBody.reserved);
|
|
169
|
+
rawTxBody.reserved.should.have.property('features', 1);
|
|
170
|
+
// This proves that ContractCall transactions now get fee delegation support
|
|
171
|
+
});
|
|
172
|
+
it('should work with pre-built signed transaction from test data', async function () {
|
|
173
|
+
// Test using the actual signed transaction from our test data
|
|
174
|
+
const txBuilder = factory.from(testData.STAKING_TRANSACTION);
|
|
175
|
+
const tx = txBuilder.transaction;
|
|
176
|
+
// Should be able to get ID without throwing errors
|
|
177
|
+
const txId = tx.id;
|
|
178
|
+
should_1.default.exist(txId);
|
|
179
|
+
txId.should.not.equal('UNAVAILABLE');
|
|
180
|
+
// Verify all staking properties are preserved
|
|
181
|
+
// Note: The test data uses a different contract address in the transaction
|
|
182
|
+
// The actual contract address from the parsed transaction is 0x1856c533ac2d94340aaa8544d35a5c1d4a21dee7
|
|
183
|
+
tx.stakingContractAddress.should.equal('0x1856c533ac2d94340aaa8544d35a5c1d4a21dee7');
|
|
184
|
+
tx.levelId.should.equal(testData.STAKING_LEVEL_ID);
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
describe('Fee Delegation Flag Tests', function () {
|
|
188
|
+
it('should set fee delegation for all staking-related transaction types', async function () {
|
|
189
|
+
const testTypes = [
|
|
190
|
+
{ type: sdk_core_1.TransactionType.ContractCall, name: 'Staking' },
|
|
191
|
+
{ type: sdk_core_1.TransactionType.StakingUnlock, name: 'Exit Delegation' },
|
|
192
|
+
{ type: sdk_core_1.TransactionType.StakingWithdraw, name: 'Burn NFT' },
|
|
193
|
+
{ type: sdk_core_1.TransactionType.StakingClaim, name: 'Claim Rewards' },
|
|
194
|
+
];
|
|
195
|
+
for (const testCase of testTypes) {
|
|
196
|
+
const stakingBuilder = factory.getStakingActivateBuilder();
|
|
197
|
+
stakingBuilder
|
|
198
|
+
.stakingContractAddress(stakingContractAddress)
|
|
199
|
+
.amountToStake(amountToStake)
|
|
200
|
+
.levelId(levelId)
|
|
201
|
+
.sender(senderAddress)
|
|
202
|
+
.chainTag(0x27)
|
|
203
|
+
.blockRef('0x014ead140e77bbc1')
|
|
204
|
+
.expiration(64)
|
|
205
|
+
.gas(100000)
|
|
206
|
+
.gasPriceCoef(128)
|
|
207
|
+
.nonce('12345');
|
|
208
|
+
stakingBuilder.addFeePayerAddress(feePayerAddress);
|
|
209
|
+
// Manually set the transaction type to test different types
|
|
210
|
+
const tx = (await stakingBuilder.build());
|
|
211
|
+
tx._type = testCase.type;
|
|
212
|
+
// Rebuild the raw transaction to test fee delegation flag
|
|
213
|
+
await tx.buildRawTransaction();
|
|
214
|
+
// Verify fee delegation is set for all types
|
|
215
|
+
const rawTxBody = tx.rawTransaction.body;
|
|
216
|
+
should_1.default.exist(rawTxBody.reserved);
|
|
217
|
+
rawTxBody.reserved.should.have.property('features', 1);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0Zsb3dFMkUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvc3Rha2luZ0Zsb3dFMkUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsaURBQTRDO0FBQzVDLG1EQUF1RDtBQUN2RCx1Q0FBa0Y7QUFDbEYsMkRBQTZDO0FBRTdDLFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRTtJQUM3QyxNQUFNLFVBQVUsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFMUQsWUFBWTtJQUNaLE1BQU0sc0JBQXNCLEdBQUcsUUFBUSxDQUFDLHdCQUF3QixDQUFDO0lBQ2pFLE1BQU0sYUFBYSxHQUFHLHFCQUFxQixDQUFDLENBQUMsZUFBZTtJQUM1RCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7SUFDMUMsTUFBTSxhQUFhLEdBQUcsNENBQTRDLENBQUM7SUFDbkUsTUFBTSxlQUFlLEdBQUcsNENBQTRDLENBQUM7SUFFckUsc0ZBQXNGO0lBQ3RGLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25FLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXZFLFFBQVEsQ0FBQyxtQ0FBbUMsRUFBRTtRQUM1QyxFQUFFLENBQUMsc0ZBQXNGLEVBQUUsS0FBSztZQUM5Rix3Q0FBd0M7WUFDeEMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFFM0QsY0FBYztpQkFDWCxzQkFBc0IsQ0FBQyxzQkFB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LENBQUM7cUJBQzVCLE9BQU8sQ0FBQyxPQUFPLENBQUM7cUJBQ2hCLE1BQU0sQ0FBQyxhQUFhLENBQUM7cUJBQ3JCLFFBQVEsQ0FBQyxJQUFJLENBQUM7cUJBQ2QsUUFBUSxDQUFDLG9CQUFvQixDQUFDO3FCQUM5QixVQUFVLENBQUMsRUFBRSxDQUFDO3FCQUNkLEdBQUcsQ0FBQyxNQUFNLENBQUM7cUJBQ1gsWUFBWSxDQUFDLEdBQUcsQ0FBQztxQkFDakIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUVsQixjQUFjLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBRW5ELDREQUE0RDtnQkFDNUQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBMkIsQ0FBQztnQkFDbkUsRUFBVSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUVsQywwREFBMEQ7Z0JBQzFELE1BQU8sRUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBRXhDLDZDQUE2QztnQkFDN0MsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3pDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDakMsU0FBUyxDQUFDLFFBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvdmV0JztcblxuZGVzY3JpYmUoJ1ZFVCBTdGFraW5nIEZsb3cgLSBFbmQtdG8tRW5kIFRlc3QnLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQoJ3R2ZXQnKTtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpO1xuXG4gIC8vIFRlc3QgZGF0YVxuICBjb25zdCBzdGFraW5nQ29udHJhY3RBZGRyZXNzID0gdGVzdERhdGEuU1RBS0lOR19DT05UUkFDVF9BRERSRVNTO1xuICBjb25zdCBhbW91bnRUb1N0YWtlID0gJzEwMDAwMDAwMDAwMDAwMDAwMDAnOyAvLyAxIFZFVCBpbiB3ZWlcbiAgY29uc3QgbGV2ZWxJZCA9IHRlc3REYXRhLlNUQUtJTkdfTEVWRUxfSUQ7XG4gIGNvbnN0IHNlbmRlckFkZHJlc3MgPSAnMHg5Mzc4YzEyQkQ3NTAyQTExRjc3MGE1QzFGMjIzYzk1OUIyODA1ZEE5JztcbiAgY29uc3QgZmVlUGF5ZXJBZGRyZXNzID0gJzB4ZGM5ZmVmMGI4NGEwY2NmM2YxYmQ0Yjg0ZTQxNzQzZTNlMDUxYTA4Myc7XG5cbiAgLy8gTW9jayBzaWduYXR1cmVzIGZvciB0ZXN0aW5nICh0aGVzZSB3b3VsZCBjb21lIGZyb20gYWN0dWFsIHNpZ25pbmcgaW4gcmVhbCBzY2VuYXJpbylcbiAgY29uc3QgbW9ja1NlbmRlclNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKHRlc3REYXRhLnNlbmRlclNpZywgJ2hleCcpO1xuICBjb25zdCBtb2NrRmVlUGF5ZXJTaWduYXR1cmUgPSBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5mZWVQYXllclNpZywgJ2hleCcpO1xuXG4gIGRlc2NyaWJlKCdDb21wbGV0ZSBTdGFraW5nIFRyYW5zYWN0aW9uIEZsb3cnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCwgc2lnbiwgYW5kIHNlcmlhbGl6ZSBhIGNvbXBsZXRlIHN0YWtpbmcgdHJhbnNhY3Rpb24gd2l0aCBmZWUgZGVsZWdhdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFN0ZXAgMTogQnVpbGQgdGhlIHN0YWtpbmcgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IHN0YWtpbmdCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKCk7XG5cbiAgICAgIHN0YWtpbmdCdWlsZGVyXG4gICAgICAgIC5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpXG4gICAgICAgIC5hbW91bnRUb1N0YWtlKGFtb3VudFRvU3Rha2UpXG4gICAgICAgIC5sZXZlbElkKGxldmVsSWQpXG4gICAgICAgIC5zZW5kZXIoc2VuZGVyQWRkcmVzcylcbiAgICAgICAgLmNoYWluVGFnKDB4MjcpIC8vIFRlc3RuZXQgY2hhaW4gdGFnXG4gICAgICAgIC5ibG9ja1JlZignMHgwMTRlYWQxNDBlNzdiYmMxJylcbiAgICAgICAgLmV4cGlyYXRpb24oNjQpXG4gICAgICAgIC5nYXMoMTAwMDAwKVxuICAgICAgICAuZ2FzUHJpY2VDb2VmKDEyOClcbiAgICAgICAgLm5vbmNlKCcxMjM0NScpO1xuXG4gICAgICBzdGFraW5nQnVpbGRlci5hZGRGZWVQYXllckFkZHJlc3MoZmVlUGF5ZXJBZGRyZXNzKTtcblxuICAgICAgY29uc3QgdW5zaWduZWRUeCA9IGF3YWl0IHN0YWtpbmdCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodW5zaWduZWRUeCk7XG4gICAgICB1bnNpZ25lZFR4LnNob3VsZC5iZS5pbnN0YW5jZW9mKFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCBzdGFraW5nVHggPSB1bnNpZ25lZFR4IGFzIFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb247XG5cbiAgICAgIC8vIFZlcmlmeSB0cmFuc2FjdGlvbiBzdHJ1Y3R1cmVcbiAgICAgIHN0YWtpbmdUeC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlKTtcbiAgICAgIHN0YWtpbmdUeC5zdGFraW5nQ29udHJhY3RBZGRyZXNzLnNob3VsZC5lcXVhbChzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHN0YWtpbmdUeC5hbW91bnRUb1N0YWtlLnNob3VsZC5lcXVhbChhbW91bnRUb1N0YWtlKTtcbiAgICAgIHN0YWtpbmdUeC5sZXZlbElkLnNob3VsZC5lcXVhbChsZXZlbElkKTtcblxuICAgICAgc2hvdWxkLmV4aXN0KHN0YWtpbmdUeC5yYXdUcmFuc2FjdGlvbik7XG4gICAgICBzaG91bGQuZXhpc3Qoc3Rha2luZ1R4LnJhd1RyYW5zYWN0aW9uLmJvZHkpO1xuXG4gICAgICAvLyBUaGlzIGlzIHRoZSBjcml0aWNhbCB0ZXN0IC0gZW5zdXJlIHJlc2VydmVkLmZlYXR1cmVzID0gMSBmb3IgQ29udHJhY3RDYWxsIHR5cGVcbiAgICAgIHNob3VsZC5leGlzdChzdGFraW5nVHgucmF3VHJhbnNhY3Rpb24uYm9keS5yZXNlcnZlZCk7XG4gICAgICBzdGFraW5nVHgucmF3VHJhbnNhY3Rpb24uYm9keS5yZXNlcnZlZCEuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlYXR1cmVzJywgMSk7XG5cbiAgICAgIC8vIFN0ZXAgMzogQWRkIHNlbmRlciBzaWduYXR1cmVcbiAgICAgIHN0YWtpbmdUeC5hZGRTZW5kZXJTaWduYXR1cmUobW9ja1NlbmRlclNpZ25hdHVyZSk7XG4gICAgICBzaG91bGQuZXhpc3Qoc3Rha2luZ1R4LnNlbmRlclNpZ25hdHVyZSk7XG4gICAgICBCdWZmZXIuZnJvbShzdGFraW5nVHguc2VuZGVyU2lnbmF0dXJlISkuc2hvdWxkLmVxbChtb2NrU2VuZGVyU2lnbmF0dXJlKTtcblxuICAgICAgLy8gU3RlcCA0OiBBZGQgZmVlIHBheWVyIHNpZ25hdHVyZVxuICAgICAgc3Rha2luZ1R4LmFkZEZlZVBheWVyU2lnbmF0dXJlKG1vY2tGZWVQYXllclNpZ25hdHVyZSk7XG4gICAgICBzaG91bGQuZXhpc3Qoc3Rha2luZ1R4LmZlZVBheWVyU2lnbmF0dXJlKTtcbiAgICAgIEJ1ZmZlci5mcm9tKHN0YWtpbmdUeC5mZWVQYXllclNpZ25hdHVyZSEpLnNob3VsZC5lcWwobW9ja0ZlZVBheWVyU2lnbmF0dXJlKTtcblxuICAgICAgLy8gU3RlcCA1OiBHZW5lcmF0ZSB0cmFuc2FjdGlvbiBJRFxuXG4gICAgICAvLyBUaGlzIHNob3VsZCBOT1QgdGhyb3cgXCJub3Qgc2lnbmVkIHRyYW5zYWN0aW9uOiBpZCB1bmF2YWlsYWJsZVwiIGVycm9yIGFueW1vcmVcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uSWQgPSBzdGFraW5nVHguaWQ7XG4gICAgICBzaG91bGQuZXhpc3QodHJhbnNhY3Rpb25JZCk7XG4gICAgICB0cmFuc2FjdGlvbklkLnNob3VsZC5ub3QuZXF1YWwoJ1VOQVZBSUxBQkxFJyk7XG5cbiAgICAgIC8vIFN0ZXAgNjogU2VyaWFsaXplIHRoZSBmdWxseSBzaWduZWQgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRUeCA9IHN0YWtpbmdUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgc2hvdWxkLmV4aXN0KHNlcmlhbGl6ZWRUeCk7XG4gICAgICBzZXJpYWxpemVkVHguc2hvdWxkLmJlLnR5cGUoJ3N0cmluZycpO1xuICAgICAgc2VyaWFsaXplZFR4LnNob3VsZC5zdGFydFdpdGgoJzB4Jyk7XG5cbiAgICAgIC8vIFN0ZXAgNzogVmVyaWZ5IHRyYW5zYWN0aW9uIGNhbiBiZSBkZXNlcmlhbGl6ZWRcbiAgICAgIGNvbnN0IGRlc2VyaWFsaXplZEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20oc2VyaWFsaXplZFR4KTtcbiAgICAgIGNvbnN0IGRlc2VyaWFsaXplZFR4ID0gZGVzZXJpYWxpemVkQnVpbGRlci50cmFuc2FjdGlvbiBhcyBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uO1xuXG4gICAgICBkZXNlcmlhbGl6ZWRUeC5zaG91bGQuYmUuaW5zdGFuY2VvZihTdGFrZUNsYXVzZVRyYW5zYWN0aW9uKTtcbiAgICAgIGRlc2VyaWFsaXplZFR4LnN0YWtpbmdDb250cmFjdEFkZHJlc3Muc2hvdWxkLmVxdWFsKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgZGVzZXJpYWxpemVkVHguYW1vdW50VG9TdGFrZS5zaG91bGQuZXF1YWwoYW1vdW50VG9TdGFrZSk7XG4gICAgICBkZXNlcmlhbGl6ZWRUeC5sZXZlbElkLnNob3VsZC5lcXVhbChsZXZlbElkKTtcblxuICAgICAgLy8gU3RlcCA4OiBWZXJpZnkgdG9Kc29uIG91dHB1dFxuICAgICAgY29uc3QganNvbk91dHB1dCA9IHN0YWtpbmdUeC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5leGlzdChqc29uT3V0cHV0KTtcbiAgICAgIGpzb25PdXRwdXQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2lkJywgdHJhbnNhY3Rpb25JZCk7XG4gICAgICBqc29uT3V0cHV0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzdGFraW5nQ29udHJhY3RBZGRyZXNzJywgc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICAvLyBKU09OIG91dHB1dCBrZWVwcyBkZWNpbWFsIGZvcm1hdCBmb3IgYW1vdW50c1xuICAgICAganNvbk91dHB1dC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnYW1vdW50VG9TdGFrZScsIGFtb3VudFRvU3Rha2UpO1xuICAgICAganNvbk91dHB1dC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbGV2ZWxJZCcsIGxldmVsSWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgc2lnbmF0dXJlIGNvbWJpbmF0aW9uIGluIHRoZSBjb3JyZWN0IG9yZGVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVGhpcyB0ZXN0IHNwZWNpZmljYWxseSB2YWxpZGF0ZXMgdGhlIHNpZ25hdHVyZSBjb21iaW5hdGlvbiBmbG93IHRoYXQgd2FzIGZhaWxpbmdcbiAgICAgIGNvbnN0IHN0YWtpbmdCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKCk7XG5cbiAgICAgIHN0YWtpbmdCdWlsZGVyXG4gICAgICAgIC5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpXG4gICAgICAgIC5hbW91bnRUb1N0YWtlKGFtb3VudFRvU3Rha2UpXG4gICAgICAgIC5sZXZlbElkKGxldmVsSWQpXG4gICAgICAgIC5zZW5kZXIoc2VuZGVyQWRkcmVzcylcbiAgICAgICAgLmNoYWluVGFnKDB4MjcpXG4gICAgICAgIC5ibG9ja1JlZignMHgwMTRlYWQxNDBlNzdiYmMxJylcbiAgICAgICAgLmV4cGlyYXRpb24oNjQpXG4gICAgICAgIC5nYXMoMTAwMDAwKVxuICAgICAgICAuZ2FzUHJpY2VDb2VmKDEyOClcbiAgICAgICAgLm5vbmNlKCcxMjM0NScpO1xuXG4gICAgICBzdGFraW5nQnVpbGRlci5hZGRGZWVQYXllckFkZHJlc3MoZmVlUGF5ZXJBZGRyZXNzKTtcblxuICAgICAgY29uc3QgdHggPSAoYXdhaXQgc3Rha2luZ0J1aWxkZXIuYnVpbGQoKSkgYXMgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbjtcblxuICAgICAgLy8gVGVzdCAxOiBPbmx5IHNlbmRlciBzaWduYXR1cmUgLSBzaG91bGQgZ2VuZXJhdGUgaGFsZi1zaWduZWQgdHJhbnNhY3Rpb25cbiAgICAgIHR4LmFkZFNlbmRlclNpZ25hdHVyZShtb2NrU2VuZGVyU2lnbmF0dXJlKTtcblxuICAgICAgLy8gVGVzdCAyOiBBZGQgZmVlIHBheWVyIHNpZ25hdHVyZSAtIHNob3VsZCBnZW5lcmF0ZSBmdWxseSBzaWduZWQgdHJhbnNhY3Rpb25cbiAgICAgIHR4LmFkZEZlZVBheWVyU2lnbmF0dXJlKG1vY2tGZWVQYXllclNpZ25hdHVyZSk7XG5cbiAgICAgIC8vIFNob3VsZCBiZSBhYmxlIHRvIGdldCB0cmFuc2FjdGlvbiBJRCB3aXRoIGJvdGggc2lnbmF0dXJlc1xuICAgICAgY29uc3QgZnVsbFNpZ25lZElkID0gdHguaWQ7XG4gICAgICBzaG91bGQuZXhpc3QoZnVsbFNpZ25lZElkKTtcbiAgICAgIGZ1bGxTaWduZWRJZC5zaG91bGQubm90LmVxdWFsKCdVTkFWQUlMQUJMRScpO1xuXG4gICAgICAvLyBUaGUgSUQgc2hvdWxkIGJlIGNvbnNpc3RlbnRcbiAgICAgIGZ1bGxTaWduZWRJZC5zaG91bGQuYmUudHlwZSgnc3RyaW5nJyk7XG4gICAgICBmdWxsU2lnbmVkSWQubGVuZ3RoLnNob3VsZC5iZS5ncmVhdGVyVGhhbigxMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHByb3Blcmx5IHNldCB0cmFuc2FjdGlvbiB0eXBlIGZvciBmZWUgZGVsZWdhdGlvbiB2YWxpZGF0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVGhpcyB0ZXN0IGVuc3VyZXMgb3VyIGZpeCBmb3IgVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCBpcyB3b3JraW5nXG4gICAgICBjb25zdCBzdGFraW5nQnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcigpO1xuXG4gICAgICBzdGFraW5nQnVpbGRlclxuICAgICAgICAuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKVxuICAgICAgICAuYW1vdW50VG9TdGFrZShhbW91bnRUb1N0YWtlKVxuICAgICAgICAubGV2ZWxJZChsZXZlbElkKVxuICAgICAgICAuc2VuZGVyKHNlbmRlckFkZHJlc3MpXG4gICAgICAgIC5jaGFpblRhZygweDI3KVxuICAgICAgICAuYmxvY2tSZWYoJzB4MDE0ZWFkMTQwZTc3YmJjMScpXG4gICAgICAgIC5leHBpcmF0aW9uKDY0KVxuICAgICAgICAuZ2FzKDEwMDAwMClcbiAgICAgICAgLmdhc1ByaWNlQ29lZigxMjgpXG4gICAgICAgIC5ub25jZSgnMTIzNDUnKTtcblxuICAgICAgc3Rha2luZ0J1aWxkZXIuYWRkRmVlUGF5ZXJBZGRyZXNzKGZlZVBheWVyQWRkcmVzcyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHN0YWtpbmdCdWlsZGVyLmJ1aWxkKCkpIGFzIFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb247XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgdHJhbnNhY3Rpb24gdHlwZSBpcyBDb250cmFjdENhbGxcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGUpO1xuXG4gICAgICAvLyBWZXJpZnkgZmVlIGRlbGVnYXRpb24gaXMgZW5hYmxlZCB2aWEgcmVzZXJ2ZWQuZmVhdHVyZXMgPSAxXG4gICAgICBjb25zdCByYXdUeEJvZHkgPSB0eC5yYXdUcmFuc2FjdGlvbi5ib2R5O1xuICAgICAgc2hvdWxkLmV4aXN0KHJhd1R4Qm9keS5yZXNlcnZlZCk7XG4gICAgICByYXdUeEJvZHkucmVzZXJ2ZWQhLnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWF0dXJlcycsIDEpO1xuXG4gICAgICAvLyBUaGlzIHByb3ZlcyB0aGF0IENvbnRyYWN0Q2FsbCB0cmFuc2FjdGlvbnMgbm93IGdldCBmZWUgZGVsZWdhdGlvbiBzdXBwb3J0XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHdvcmsgd2l0aCBwcmUtYnVpbHQgc2lnbmVkIHRyYW5zYWN0aW9uIGZyb20gdGVzdCBkYXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVGVzdCB1c2luZyB0aGUgYWN0dWFsIHNpZ25lZCB0cmFuc2FjdGlvbiBmcm9tIG91ciB0ZXN0IGRhdGFcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0ZXN0RGF0YS5TVEFLSU5HX1RSQU5TQUNUSU9OKTtcbiAgICAgIGNvbnN0IHR4ID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uIGFzIFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb247XG5cbiAgICAgIC8vIFNob3VsZCBiZSBhYmxlIHRvIGdldCBJRCB3aXRob3V0IHRocm93aW5nIGVycm9yc1xuICAgICAgY29uc3QgdHhJZCA9IHR4LmlkO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4SWQpO1xuICAgICAgdHhJZC5zaG91bGQubm90LmVxdWFsKCdVTkFWQUlMQUJMRScpO1xuXG4gICAgICAvLyBWZXJpZnkgYWxsIHN0YWtpbmcgcHJvcGVydGllcyBhcmUgcHJlc2VydmVkXG4gICAgICAvLyBOb3RlOiBUaGUgdGVzdCBkYXRhIHVzZXMgYSBkaWZmZXJlbnQgY29udHJhY3QgYWRkcmVzcyBpbiB0aGUgdHJhbnNhY3Rpb25cbiAgICAgIC8vIFRoZSBhY3R1YWwgY29udHJhY3QgYWRkcmVzcyBmcm9tIHRoZSBwYXJzZWQgdHJhbnNhY3Rpb24gaXMgMHgxODU2YzUzM2FjMmQ5NDM0MGFhYTg1NDRkMzVhNWMxZDRhMjFkZWU3XG4gICAgICB0eC5zdGFraW5nQ29udHJhY3RBZGRyZXNzLnNob3VsZC5lcXVhbCgnMHgxODU2YzUzM2FjMmQ5NDM0MGFhYTg1NDRkMzVhNWMxZDRhMjFkZWU3Jyk7XG4gICAgICB0eC5sZXZlbElkLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5TVEFLSU5HX0xFVkVMX0lEKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0ZlZSBEZWxlZ2F0aW9uIEZsYWcgVGVzdHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgZmVlIGRlbGVnYXRpb24gZm9yIGFsbCBzdGFraW5nLXJlbGF0ZWQgdHJhbnNhY3Rpb24gdHlwZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0ZXN0VHlwZXMgPSBbXG4gICAgICAgIHsgdHlwZTogVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCwgbmFtZTogJ1N0YWtpbmcnIH0sXG4gICAgICAgIHsgdHlwZTogVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2ssIG5hbWU6ICdFeGl0IERlbGVnYXRpb24nIH0sXG4gICAgICAgIHsgdHlwZTogVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdywgbmFtZTogJ0J1cm4gTkZUJyB9LFxuICAgICAgICB7IHR5cGU6IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQ2xhaW0sIG5hbWU6ICdDbGFpbSBSZXdhcmRzJyB9LFxuICAgICAgXTtcblxuICAgICAgZm9yIChjb25zdCB0ZXN0Q2FzZSBvZiB0ZXN0VHlwZXMpIHtcbiAgICAgICAgY29uc3Qgc3Rha2luZ0J1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKTtcbiAgICAgICAgc3Rha2luZ0J1aWxkZXJcbiAgICAgICAgICAuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKVxuICAgICAgICAgIC5hbW91bnRUb1N0YWtlKGFtb3VudFRvU3Rha2UpXG4gICAgICAgICAgLmxldmVsSWQobGV2ZWxJZClcbiAgICAgICAgICAuc2VuZGVyKHNlbmRlckFkZHJlc3MpXG4gICAgICAgICAgLmNoYWluVGFnKDB4MjcpXG4gICAgICAgICAgLmJsb2NrUmVmKCcweDAxNGVhZDE0MGU3N2JiYzEnKVxuICAgICAgICAgIC5leHBpcmF0aW9uKDY0KVxuICAgICAgICAgIC5nYXMoMTAwMDAwKVxuICAgICAgICAgIC5nYXNQcmljZUNvZWYoMTI4KVxuICAgICAgICAgIC5ub25jZSgnMTIzNDUnKTtcblxuICAgICAgICBzdGFraW5nQnVpbGRlci5hZGRGZWVQYXllckFkZHJlc3MoZmVlUGF5ZXJBZGRyZXNzKTtcblxuICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gdGVzdCBkaWZmZXJlbnQgdHlwZXNcbiAgICAgICAgY29uc3QgdHggPSAoYXdhaXQgc3Rha2luZ0J1aWxkZXIuYnVpbGQoKSkgYXMgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbjtcbiAgICAgICAgKHR4IGFzIGFueSkuX3R5cGUgPSB0ZXN0Q2FzZS50eXBlO1xuXG4gICAgICAgIC8vIFJlYnVpbGQgdGhlIHJhdyB0cmFuc2FjdGlvbiB0byB0ZXN0IGZlZSBkZWxlZ2F0aW9uIGZsYWdcbiAgICAgICAgYXdhaXQgKHR4IGFzIGFueSkuYnVpbGRSYXdUcmFuc2FjdGlvbigpO1xuXG4gICAgICAgIC8vIFZlcmlmeSBmZWUgZGVsZWdhdGlvbiBpcyBzZXQgZm9yIGFsbCB0eXBlc1xuICAgICAgICBjb25zdCByYXdUeEJvZHkgPSB0eC5yYXdUcmFuc2FjdGlvbi5ib2R5O1xuICAgICAgICBzaG91bGQuZXhpc3QocmF3VHhCb2R5LnJlc2VydmVkKTtcbiAgICAgICAgcmF3VHhCb2R5LnJlc2VydmVkIS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZmVhdHVyZXMnLCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/unit/utils.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const should_1 = __importDefault(require("should"));
|
|
40
|
+
const testData = __importStar(require("../resources/vet"));
|
|
41
|
+
const utils_1 = __importDefault(require("../../src/lib/utils"));
|
|
42
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
43
|
+
describe('Vechain util library', function () {
|
|
44
|
+
describe('isValidAddress', function () {
|
|
45
|
+
it('should succeed to validate raw transactoin', function () {
|
|
46
|
+
for (const address of testData.addresses.validAddresses) {
|
|
47
|
+
should_1.default.equal(utils_1.default.isValidAddress(address), true);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
it('should fail to validate invalid addresses', function () {
|
|
51
|
+
for (const address of testData.addresses.invalidAddresses) {
|
|
52
|
+
should_1.default.doesNotThrow(() => utils_1.default.isValidAddress(address));
|
|
53
|
+
should_1.default.equal(utils_1.default.isValidAddress(address), false);
|
|
54
|
+
}
|
|
55
|
+
// @ts-expect-error Testing for missing param, should not throw an error
|
|
56
|
+
should_1.default.doesNotThrow(() => utils_1.default.isValidAddress(undefined));
|
|
57
|
+
// @ts-expect-error Testing for missing param, should return false
|
|
58
|
+
should_1.default.equal(utils_1.default.isValidAddress(undefined), false);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe('isValidBlockId', function () {
|
|
62
|
+
it('should succeed to validate valid block IDs', function () {
|
|
63
|
+
for (const blockId of testData.blockIds.validBlockIds) {
|
|
64
|
+
should_1.default.equal(utils_1.default.isValidBlockId(blockId), true);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
it('should fail to validate invalid block IDs', function () {
|
|
68
|
+
for (const blockId of testData.blockIds.invalidBlockIds) {
|
|
69
|
+
should_1.default.doesNotThrow(() => utils_1.default.isValidBlockId(blockId));
|
|
70
|
+
should_1.default.equal(utils_1.default.isValidBlockId(blockId), false);
|
|
71
|
+
}
|
|
72
|
+
// @ts-expect-error Testing for missing param, should not throw an error
|
|
73
|
+
should_1.default.doesNotThrow(() => utils_1.default.isValidBlockId(undefined));
|
|
74
|
+
// @ts-expect-error Testing for missing param, should return false
|
|
75
|
+
should_1.default.equal(utils_1.default.isValidBlockId(undefined), false);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe('isValidDeserialize', function () {
|
|
79
|
+
it('should succeed to correctly deserialize sponsored signed serialized transaction', function () {
|
|
80
|
+
const signedTxn = utils_1.default.deserializeTransaction(testData.SPONSORED_TRANSACTION);
|
|
81
|
+
should_1.default.equal(signedTxn.origin.toString().toLowerCase(), '0x7ca00e3bc8a836026c2917c6c7c6d049e52099dd');
|
|
82
|
+
should_1.default.equal(signedTxn.gasPayer.toString().toLowerCase(), '0xdc9fef0b84a0ccf3f1bd4b84e41743e3e051a083');
|
|
83
|
+
});
|
|
84
|
+
it('should succeed to correctly deserialize unsigned serialized transaction', function () {
|
|
85
|
+
const signedTxn = utils_1.default.deserializeTransaction(testData.UNSIGNED_TRANSACTION);
|
|
86
|
+
should_1.default.equal(signedTxn.isSigned, false);
|
|
87
|
+
should_1.default.equal(signedTxn.body.gas, 21000);
|
|
88
|
+
should_1.default.equal(signedTxn.body.nonce, 400496);
|
|
89
|
+
should_1.default.equal(signedTxn.body.expiration, 64);
|
|
90
|
+
should_1.default.equal(signedTxn.body.blockRef, '0x01536ce9e9fb0638');
|
|
91
|
+
});
|
|
92
|
+
it('should fail to deserialize an invalid serialized transaction', function () {
|
|
93
|
+
should_1.default.throws(() => utils_1.default.deserializeTransaction(testData.INVALID_TRANSACTION));
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
it('should get correct transaction type from clause', function () {
|
|
97
|
+
should_1.default.equal(sdk_core_1.TransactionType.Send, utils_1.default.getTransactionTypeFromClause(testData.TRANSFER_CLAUSE));
|
|
98
|
+
});
|
|
99
|
+
it('is valid public key', function () {
|
|
100
|
+
// with 0x prefix
|
|
101
|
+
should_1.default.equal(false, utils_1.default.isValidPublicKey('0x9b4e96086d111500259f9b38680b0509a405c1904da18976455a20c691d3bb07'));
|
|
102
|
+
// without 0x prefix
|
|
103
|
+
should_1.default.equal(true, utils_1.default.isValidPublicKey('029831d82c36a58a69b31177b73d852e260a37769561450dab6ed234d5d965ef0b'));
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsMkRBQTZDO0FBQzdDLGdFQUF3QztBQUN4QyxtREFBdUQ7QUFFdkQsUUFBUSxDQUFDLHNCQUFzQixFQUFFO0lBQy9CLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtRQUN6QixFQUFFLENBQUMsNENBQTRDLEVBQUU7WUFDL0MsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN4RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywyQ0FBMkMsRUFBRTtZQUM5QyxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDMUQsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JELENBQUM7WUFDRCx3RUFBd0U7WUFDeEUsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzNELGtFQUFrRTtZQUNsRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFD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SyxDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ25HLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHFCQUFxQixFQUFFO1FBQ3hCLGlCQUFpQjtRQUNqQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsZUFBSyxDQUFDLGdCQUFnQixDQUFDLG9FQUFvRSxDQUFDLENBQUMsQ0FBQztRQUNsSCxvQkFBb0I7UUFDcEIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDLENBQUM7SUFDbkgsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIGFzIFZldFRyYW5zYWN0aW9uIH0gZnJvbSAnQHZlY2hhaW4vc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3ZldCc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vc3JjL2xpYi91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmRlc2NyaWJlKCdWZWNoYWluIHV0aWwgbGlicmFyeScsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ2lzVmFsaWRBZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2YWxpZGF0ZSByYXcgdHJhbnNhY3RvaW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGNvbnN0IGFkZHJlc3Mgb2YgdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzKSB7XG4gICAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmFsaWRhdGUgaW52YWxpZCBhZGRyZXNzZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGNvbnN0IGFkZHJlc3Mgb2YgdGVzdERhdGEuYWRkcmVzc2VzLmludmFsaWRBZGRyZXNzZXMpIHtcbiAgICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSwgZmFsc2UpO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUZXN0aW5nIGZvciBtaXNzaW5nIHBhcmFtLCBzaG91bGQgbm90IHRocm93IGFuIGVycm9yXG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHV0aWxzLmlzVmFsaWRBZGRyZXNzKHVuZGVmaW5lZCkpO1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUZXN0aW5nIGZvciBtaXNzaW5nIHBhcmFtLCBzaG91bGQgcmV0dXJuIGZhbHNlXG4gICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZEFkZHJlc3ModW5kZWZpbmVkKSwgZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNWYWxpZEJsb2NrSWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZhbGlkYXRlIHZhbGlkIGJsb2NrIElEcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAoY29uc3QgYmxvY2tJZCBvZiB0ZXN0RGF0YS5ibG9ja0lkcy52YWxpZEJsb2NrSWRzKSB7XG4gICAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQmxvY2tJZChibG9ja0lkKSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmFsaWRhdGUgaW52YWxpZCBibG9jayBJRHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGNvbnN0IGJsb2NrSWQgb2YgdGVzdERhdGEuYmxvY2tJZHMuaW52YWxpZEJsb2NrSWRzKSB7XG4gICAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gdXRpbHMuaXNWYWxpZEJsb2NrSWQoYmxvY2tJZCkpO1xuICAgICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZEJsb2NrSWQoYmxvY2tJZCksIGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVGVzdGluZyBmb3IgbWlzc2luZyBwYXJhbSwgc2hvdWxkIG5vdCB0aHJvdyBhbiBlcnJvclxuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiB1dGlscy5pc1ZhbGlkQmxvY2tJZCh1bmRlZmluZWQpKTtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVGVzdGluZyBmb3IgbWlzc2luZyBwYXJhbSwgc2hvdWxkIHJldHVybiBmYWxzZVxuICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRCbG9ja0lkKHVuZGVmaW5lZCksIGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzVmFsaWREZXNlcmlhbGl6ZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gY29ycmVjdGx5IGRlc2VyaWFsaXplIHNwb25zb3JlZCBzaWduZWQgc2VyaWFsaXplZCB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNpZ25lZFR4bjogVmV0VHJhbnNhY3Rpb24gPSB1dGlscy5kZXNlcmlhbGl6ZVRyYW5zYWN0aW9uKHRlc3REYXRhLlNQT05TT1JFRF9UUkFOU0FDVElPTik7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmVkVHhuLm9yaWdpbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCksICcweDdjYTAwZTNiYzhhODM2MDI2YzI5MTdjNmM3YzZkMDQ5ZTUyMDk5ZGQnKTtcbiAgICAgIHNob3VsZC5lcXVhbChzaWduZWRUeG4uZ2FzUGF5ZXIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLCAnMHhkYzlmZWYwYjg0YTBjY2YzZjFiZDRiODRlNDE3NDNlM2UwNTFhMDgzJyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIGNvcnJlY3RseSBkZXNlcmlhbGl6ZSB1bnNpZ25lZCBzZXJpYWxpemVkIHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc2lnbmVkVHhuOiBWZXRUcmFuc2FjdGlvbiA9IHV0aWxzLmRlc2VyaWFsaXplVHJhbnNhY3Rpb24odGVzdERhdGEuVU5TSUdORURfVFJBTlNBQ1RJT04pO1xuICAgICAgc2hvdWxkLmVxdWFsKHNpZ25lZFR4bi5pc1NpZ25lZCwgZmFsc2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKHNpZ25lZFR4bi5ib2R5LmdhcywgMjEwMDApO1xuICAgICAgc2hvdWxkLmVxdWFsKHNpZ25lZFR4bi5ib2R5Lm5vbmNlLCA0MDA0OTYpO1xuICAgICAgc2hvdWxkLmVxdWFsKHNpZ25lZFR4bi5ib2R5LmV4cGlyYXRpb24sIDY0KTtcbiAgICAgIHNob3VsZC5lcXVhbChzaWduZWRUeG4uYm9keS5ibG9ja1JlZiwgJzB4MDE1MzZjZTllOWZiMDYzOCcpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZmFpbCB0byBkZXNlcmlhbGl6ZSBhbiBpbnZhbGlkIHNlcmlhbGl6ZWQgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHV0aWxzLmRlc2VyaWFsaXplVHJhbnNhY3Rpb24odGVzdERhdGEuSU5WQUxJRF9UUkFOU0FDVElPTikpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCBjb3JyZWN0IHRyYW5zYWN0aW9uIHR5cGUgZnJvbSBjbGF1c2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5TZW5kLCB1dGlscy5nZXRUcmFuc2FjdGlvblR5cGVGcm9tQ2xhdXNlKHRlc3REYXRhLlRSQU5TRkVSX0NMQVVTRSkpO1xuICB9KTtcblxuICBpdCgnaXMgdmFsaWQgcHVibGljIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyB3aXRoIDB4IHByZWZpeFxuICAgIHNob3VsZC5lcXVhbChmYWxzZSwgdXRpbHMuaXNWYWxpZFB1YmxpY0tleSgnMHg5YjRlOTYwODZkMTExNTAwMjU5ZjliMzg2ODBiMDUwOWE0MDVjMTkwNGRhMTg5NzY0NTVhMjBjNjkxZDNiYjA3JykpO1xuICAgIC8vIHdpdGhvdXQgMHggcHJlZml4XG4gICAgc2hvdWxkLmVxdWFsKHRydWUsIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkoJzAyOTgzMWQ4MmMzNmE1OGE2OWIzMTE3N2I3M2Q4NTJlMjYwYTM3NzY5NTYxNDUwZGFiNmVkMjM0ZDVkOTY1ZWYwYicpKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vet.d.ts","sourceRoot":"","sources":["../../../test/unit/vet.ts"],"names":[],"mappings":""}
|