@bitgo-beta/sdk-coin-polyx 1.0.1-beta.69 → 1.0.1-beta.690
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/baseBuilder.d.ts +24 -0
- package/dist/src/lib/baseBuilder.d.ts.map +1 -0
- package/dist/src/lib/baseBuilder.js +31 -0
- package/dist/src/lib/batchStakingBuilder.d.ts +79 -0
- package/dist/src/lib/batchStakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/batchStakingBuilder.js +299 -0
- package/dist/src/lib/batchUnstakingBuilder.d.ts +39 -0
- package/dist/src/lib/batchUnstakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/batchUnstakingBuilder.js +127 -0
- package/dist/src/lib/bondExtraBuilder.d.ts +37 -0
- package/dist/src/lib/bondExtraBuilder.d.ts.map +1 -0
- package/dist/src/lib/bondExtraBuilder.js +101 -0
- package/dist/src/lib/constants.d.ts +12 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +15 -0
- package/dist/src/lib/iface.d.ts +140 -2
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +37 -1
- package/dist/src/lib/index.d.ts +16 -7
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +44 -36
- package/dist/src/lib/preApproveAssetBuilder.d.ts +33 -0
- package/dist/src/lib/preApproveAssetBuilder.d.ts.map +1 -0
- package/dist/src/lib/preApproveAssetBuilder.js +77 -0
- package/dist/src/lib/registerDidWithCDDBuilder.d.ts +34 -0
- package/dist/src/lib/registerDidWithCDDBuilder.d.ts.map +1 -0
- package/dist/src/lib/registerDidWithCDDBuilder.js +83 -0
- package/dist/src/lib/rejectInstructionBuilder.d.ts +29 -0
- package/dist/src/lib/rejectInstructionBuilder.d.ts.map +1 -0
- package/dist/src/lib/rejectInstructionBuilder.js +89 -0
- package/dist/src/lib/tokenTransferBuilder.d.ts +58 -0
- package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/tokenTransferBuilder.js +158 -0
- package/dist/src/lib/transaction.d.ts +26 -4
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +183 -7
- package/dist/src/lib/transactionBuilderFactory.d.ts +29 -5
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +119 -8
- package/dist/src/lib/transferBuilder.d.ts +51 -3
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +109 -3
- package/dist/src/lib/txnSchema.d.ts +50 -0
- package/dist/src/lib/txnSchema.d.ts.map +1 -0
- package/dist/src/lib/txnSchema.js +165 -0
- package/dist/src/lib/unbondBuilder.d.ts +37 -0
- package/dist/src/lib/unbondBuilder.d.ts.map +1 -0
- package/dist/src/lib/unbondBuilder.js +98 -0
- package/dist/src/lib/utils.d.ts +15 -14
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +40 -23
- package/dist/src/lib/withdrawUnbondedBuilder.d.ts +35 -0
- package/dist/src/lib/withdrawUnbondedBuilder.d.ts.map +1 -0
- package/dist/src/lib/withdrawUnbondedBuilder.js +89 -0
- package/dist/src/polyx.d.ts +50 -9
- package/dist/src/polyx.d.ts.map +1 -1
- package/dist/src/polyx.js +269 -15
- package/dist/src/polyxToken.d.ts +20 -0
- package/dist/src/polyxToken.d.ts.map +1 -0
- package/dist/src/polyxToken.js +55 -0
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/dist/src/resources/index.d.ts +3 -0
- package/dist/src/resources/index.d.ts.map +1 -0
- package/dist/src/resources/index.js +19 -0
- package/dist/src/resources/mainnet.d.ts +13 -0
- package/dist/src/resources/mainnet.d.ts.map +1 -0
- package/dist/src/resources/mainnet.js +16 -0
- package/dist/src/resources/testnet.d.ts +13 -0
- package/dist/src/resources/testnet.d.ts.map +1 -0
- package/dist/src/resources/testnet.js +16 -0
- package/dist/src/tpolyx.d.ts +7 -0
- package/dist/src/tpolyx.d.ts.map +1 -1
- package/dist/src/tpolyx.js +11 -1
- package/dist/test/integration/index.d.ts +1 -0
- package/dist/test/integration/index.d.ts.map +1 -0
- package/dist/test/integration/index.js +1 -0
- package/dist/test/resources/index.d.ts +106 -0
- package/dist/test/resources/index.d.ts.map +1 -0
- package/dist/test/resources/index.js +112 -0
- package/dist/test/resources/mainnet.d.ts +2 -0
- package/dist/test/resources/mainnet.d.ts.map +1 -0
- package/dist/test/resources/mainnet.js +5 -0
- package/dist/test/resources/materialData.json +8 -0
- package/dist/test/resources/materialDataModified.json +8 -0
- package/dist/test/resources/testnet.d.ts +2 -0
- package/dist/test/resources/testnet.d.ts.map +1 -0
- package/dist/test/resources/testnet.js +5 -0
- package/dist/test/resources/wrwUsers.d.ts +19 -0
- package/dist/test/resources/wrwUsers.d.ts.map +1 -0
- package/dist/test/resources/wrwUsers.js +60 -0
- package/dist/test/unit/polyx.d.ts +2 -0
- package/dist/test/unit/polyx.d.ts.map +1 -0
- package/dist/test/unit/polyx.js +209 -0
- package/dist/test/unit/transactionBuilder/base.d.ts +4 -0
- package/dist/test/unit/transactionBuilder/base.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/base.js +245 -0
- package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/batchStakingBuilder.js +263 -0
- package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.js +159 -0
- package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/bondExtraBuilder.js +158 -0
- package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.js +115 -0
- package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.js +302 -0
- package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.js +128 -0
- package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/singletonRegistry.js +59 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +140 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +74 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.js +326 -0
- package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/unbondBuilder.js +144 -0
- package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.js +138 -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 +143 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +19 -10
- package/.eslintignore +0 -4
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -16
- package/dist/src/lib/keyPair.d.ts +0 -12
- package/dist/src/lib/keyPair.d.ts.map +0 -1
- package/dist/src/lib/keyPair.js +0 -24
- package/dist/src/lib/transactionBuilder.d.ts +0 -43
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -78
|
@@ -0,0 +1,263 @@
|
|
|
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
|
+
const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
|
|
7
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
8
|
+
const should_1 = __importDefault(require("should"));
|
|
9
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
10
|
+
const lib_1 = require("../../../src/lib");
|
|
11
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
12
|
+
const utils_1 = __importDefault(require("../../../src/lib/utils"));
|
|
13
|
+
const resources_1 = require("../../resources");
|
|
14
|
+
function createMockTransaction(txData) {
|
|
15
|
+
return {
|
|
16
|
+
id: '123',
|
|
17
|
+
type: sdk_core_1.TransactionType.Batch,
|
|
18
|
+
toBroadcastFormat: () => txData,
|
|
19
|
+
inputs: [],
|
|
20
|
+
outputs: [],
|
|
21
|
+
signature: ['mock-signature'],
|
|
22
|
+
toJson: () => ({
|
|
23
|
+
id: '123',
|
|
24
|
+
type: 'Batch',
|
|
25
|
+
sender: resources_1.accounts.account1.address,
|
|
26
|
+
referenceBlock: '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d',
|
|
27
|
+
blockNumber: 100,
|
|
28
|
+
genesisHash: '0x',
|
|
29
|
+
nonce: 1,
|
|
30
|
+
tip: 0,
|
|
31
|
+
specVersion: 1,
|
|
32
|
+
transactionVersion: 1,
|
|
33
|
+
chainName: 'Polymesh',
|
|
34
|
+
inputs: [],
|
|
35
|
+
outputs: [],
|
|
36
|
+
}),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
describe('Polyx Batch Builder', function () {
|
|
40
|
+
let builder;
|
|
41
|
+
const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tpolyx'));
|
|
42
|
+
const senderAddress = resources_1.accounts.account1.address;
|
|
43
|
+
const controllerAddress = resources_1.accounts.account2.address;
|
|
44
|
+
const validatorAddress = '5C7kNpSvVr22Z1X6gVAUjfahSJfSpvw4DHNoY7uUHpLfEJZR';
|
|
45
|
+
const testAmount = '10000';
|
|
46
|
+
beforeEach(() => {
|
|
47
|
+
builder = factory.getBatchBuilder();
|
|
48
|
+
});
|
|
49
|
+
describe('setter validation', () => {
|
|
50
|
+
it('should validate staking amount', () => {
|
|
51
|
+
const spy = sinon_1.default.spy(builder, 'validateValue');
|
|
52
|
+
should_1.default.throws(() => builder.amount('-1'), /Value cannot be less than zero/);
|
|
53
|
+
should_1.default.doesNotThrow(() => builder.amount('1000'));
|
|
54
|
+
sinon_1.default.assert.calledTwice(spy);
|
|
55
|
+
});
|
|
56
|
+
it('should validate controller address', () => {
|
|
57
|
+
const spy = sinon_1.default.spy(builder, 'validateAddress');
|
|
58
|
+
should_1.default.throws(() => builder.controller({ address: 'invalid-address' }), /is not a well-formed/);
|
|
59
|
+
should_1.default.doesNotThrow(() => builder.controller({ address: controllerAddress }));
|
|
60
|
+
sinon_1.default.assert.calledTwice(spy);
|
|
61
|
+
});
|
|
62
|
+
it('should validate validator addresses', () => {
|
|
63
|
+
const spy = sinon_1.default.spy(builder, 'validateAddress');
|
|
64
|
+
should_1.default.throws(() => builder.validators(['invalid-address']), /is not a well-formed/);
|
|
65
|
+
should_1.default.doesNotThrow(() => builder.validators([validatorAddress]));
|
|
66
|
+
sinon_1.default.assert.calledTwice(spy);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
describe('Bond and Nominate', function () {
|
|
70
|
+
it('should validate bond and nominate args together', () => {
|
|
71
|
+
builder
|
|
72
|
+
.amount(testAmount)
|
|
73
|
+
.controller({ address: controllerAddress })
|
|
74
|
+
.payee('Staked')
|
|
75
|
+
.validators([validatorAddress]);
|
|
76
|
+
should_1.default.doesNotThrow(() => {
|
|
77
|
+
builder.testValidateFields();
|
|
78
|
+
});
|
|
79
|
+
builder = factory.getBatchBuilder();
|
|
80
|
+
builder.amount(testAmount).controller({ address: controllerAddress }).payee('Staked');
|
|
81
|
+
should_1.default.throws(() => {
|
|
82
|
+
builder.testValidateFields();
|
|
83
|
+
}, /must include both bond and nominate operations/);
|
|
84
|
+
builder = factory.getBatchBuilder();
|
|
85
|
+
builder.validators([validatorAddress]);
|
|
86
|
+
should_1.default.throws(() => {
|
|
87
|
+
builder.testValidateFields();
|
|
88
|
+
}, /must include both bond and nominate operations/);
|
|
89
|
+
});
|
|
90
|
+
it('should build a batch transaction with both bond and nominate', async () => {
|
|
91
|
+
builder
|
|
92
|
+
.amount(testAmount)
|
|
93
|
+
.controller({ address: controllerAddress })
|
|
94
|
+
.payee('Staked')
|
|
95
|
+
.validators([validatorAddress])
|
|
96
|
+
.sender({ address: senderAddress })
|
|
97
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
98
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
99
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
|
|
100
|
+
const mockTx = createMockTransaction(resources_1.stakingTx.batch.bondAndNominate.unsigned);
|
|
101
|
+
sinon_1.default.stub(builder, 'build').resolves(mockTx);
|
|
102
|
+
const tx = await builder.build();
|
|
103
|
+
should_1.default.exist(tx);
|
|
104
|
+
should_1.default.equal(builder.getAmount(), testAmount);
|
|
105
|
+
should_1.default.equal(builder.getController(), controllerAddress);
|
|
106
|
+
should_1.default.equal(builder.getPayee(), 'Staked');
|
|
107
|
+
should_1.default.deepEqual(builder.getValidators(), [validatorAddress]);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
describe('Transaction Validation', function () {
|
|
111
|
+
it('should build, decode, and validate a real batch staking transaction', () => {
|
|
112
|
+
// Build the transaction with real parameters
|
|
113
|
+
builder
|
|
114
|
+
.amount(testAmount)
|
|
115
|
+
.controller({ address: controllerAddress })
|
|
116
|
+
.payee('Staked')
|
|
117
|
+
.validators([validatorAddress])
|
|
118
|
+
.sender({ address: senderAddress })
|
|
119
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
120
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
121
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
|
|
122
|
+
// Set up material for decoding
|
|
123
|
+
const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
|
|
124
|
+
builder.material(material);
|
|
125
|
+
// Build the actual unsigned transaction
|
|
126
|
+
const unsignedTx = builder['buildTransaction']();
|
|
127
|
+
const registry = builder['_registry'];
|
|
128
|
+
// Decode the actual built transaction
|
|
129
|
+
const decodedTx = (0, txwrapper_polkadot_1.decode)(unsignedTx, {
|
|
130
|
+
metadataRpc: material.metadata,
|
|
131
|
+
registry: registry,
|
|
132
|
+
});
|
|
133
|
+
// Validate the decoded transaction structure
|
|
134
|
+
should_1.default.equal(decodedTx.method.name, 'batchAll');
|
|
135
|
+
should_1.default.equal(decodedTx.method.pallet, 'utility');
|
|
136
|
+
const batchArgs = decodedTx.method.args;
|
|
137
|
+
should_1.default.exist(batchArgs.calls);
|
|
138
|
+
should_1.default.equal(batchArgs.calls.length, 2);
|
|
139
|
+
// Validate first call is bond
|
|
140
|
+
const firstCall = batchArgs.calls[0];
|
|
141
|
+
const firstCallMethod = utils_1.default.decodeMethodName(firstCall, registry);
|
|
142
|
+
should_1.default.equal(firstCallMethod, 'bond');
|
|
143
|
+
const bondArgs = firstCall.args;
|
|
144
|
+
should_1.default.equal(bondArgs.value, testAmount);
|
|
145
|
+
// Controller can be either a string or an object with id property
|
|
146
|
+
const controllerValue = typeof bondArgs.controller === 'string' ? bondArgs.controller : bondArgs.controller.id;
|
|
147
|
+
should_1.default.equal(controllerValue, controllerAddress);
|
|
148
|
+
// Payee can be either a string or an object with staked property
|
|
149
|
+
const payeeValue = typeof bondArgs.payee === 'string'
|
|
150
|
+
? bondArgs.payee
|
|
151
|
+
: bondArgs.payee.staked !== undefined
|
|
152
|
+
? 'Staked'
|
|
153
|
+
: bondArgs.payee;
|
|
154
|
+
should_1.default.equal(payeeValue, 'Staked');
|
|
155
|
+
// Validate second call is nominate
|
|
156
|
+
const secondCall = batchArgs.calls[1];
|
|
157
|
+
const secondCallMethod = utils_1.default.decodeMethodName(secondCall, registry);
|
|
158
|
+
should_1.default.equal(secondCallMethod, 'nominate');
|
|
159
|
+
const nominateArgs = secondCall.args;
|
|
160
|
+
// Targets can be either strings or objects with id property
|
|
161
|
+
const targetValues = nominateArgs.targets.map((target) => typeof target === 'string' ? target : target.id);
|
|
162
|
+
should_1.default.deepEqual(targetValues, [validatorAddress]);
|
|
163
|
+
// Now validate using the builder's validation method
|
|
164
|
+
should_1.default.doesNotThrow(() => {
|
|
165
|
+
builder.validateDecodedTransaction(decodedTx);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
it('should reject invalid batch transaction when built', () => {
|
|
169
|
+
// Try to build a batch with only bond (missing nominate)
|
|
170
|
+
builder
|
|
171
|
+
.amount(testAmount)
|
|
172
|
+
.controller({ address: controllerAddress })
|
|
173
|
+
.payee('Staked')
|
|
174
|
+
.sender({ address: senderAddress })
|
|
175
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
176
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
177
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
|
|
178
|
+
// Set up material
|
|
179
|
+
const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
|
|
180
|
+
builder.material(material);
|
|
181
|
+
// Should throw when trying to build without validators
|
|
182
|
+
should_1.default.throws(() => {
|
|
183
|
+
builder['buildTransaction']();
|
|
184
|
+
}, /must include both bond and nominate operations/);
|
|
185
|
+
});
|
|
186
|
+
it('should reject validation of non-batch method name', () => {
|
|
187
|
+
// Create a mock decoded transaction with wrong method name
|
|
188
|
+
const mockDecodedTx = {
|
|
189
|
+
method: {
|
|
190
|
+
name: 'bond',
|
|
191
|
+
pallet: 'staking',
|
|
192
|
+
args: {},
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
should_1.default.throws(() => {
|
|
196
|
+
builder.validateDecodedTransaction(mockDecodedTx);
|
|
197
|
+
}, /Invalid transaction type/);
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
describe('From Raw Transaction', function () {
|
|
201
|
+
it('should rebuild from real batch transaction', async () => {
|
|
202
|
+
// First build a transaction to get a real raw transaction
|
|
203
|
+
const originalBuilder = factory.getBatchBuilder();
|
|
204
|
+
originalBuilder
|
|
205
|
+
.amount(testAmount)
|
|
206
|
+
.controller({ address: controllerAddress })
|
|
207
|
+
.payee('Staked')
|
|
208
|
+
.validators([validatorAddress])
|
|
209
|
+
.sender({ address: senderAddress })
|
|
210
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
211
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
212
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
|
|
213
|
+
// Set up material
|
|
214
|
+
const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
|
|
215
|
+
originalBuilder.material(material);
|
|
216
|
+
// Build the transaction and get the serialized hex
|
|
217
|
+
const tx = await originalBuilder.build();
|
|
218
|
+
const rawTxHex = tx.toBroadcastFormat();
|
|
219
|
+
// Create a new builder and reconstruct from the transaction hex
|
|
220
|
+
const newBuilder = factory.getBatchBuilder();
|
|
221
|
+
newBuilder.material(material);
|
|
222
|
+
newBuilder.from(rawTxHex);
|
|
223
|
+
// Verify the reconstructed builder has the same parameters
|
|
224
|
+
should_1.default.equal(newBuilder.getAmount(), testAmount);
|
|
225
|
+
should_1.default.equal(newBuilder.getController(), controllerAddress);
|
|
226
|
+
should_1.default.equal(newBuilder.getPayee(), 'Staked');
|
|
227
|
+
should_1.default.deepEqual(newBuilder.getValidators(), [validatorAddress]);
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
describe('should create properly configured transactions', function () {
|
|
231
|
+
it('a batch transaction', async function () {
|
|
232
|
+
builder
|
|
233
|
+
.amount(testAmount)
|
|
234
|
+
.controller({ address: controllerAddress })
|
|
235
|
+
.payee('Staked')
|
|
236
|
+
.validators([validatorAddress])
|
|
237
|
+
.sender({ address: senderAddress })
|
|
238
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
239
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
240
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
|
|
241
|
+
const mockTx = createMockTransaction(resources_1.stakingTx.batch.bondAndNominate.unsigned);
|
|
242
|
+
sinon_1.default.stub(builder, 'build').resolves(mockTx);
|
|
243
|
+
const tx = await builder.build();
|
|
244
|
+
should_1.default.exist(tx);
|
|
245
|
+
});
|
|
246
|
+
it('a batch transaction with custom replay protection', async function () {
|
|
247
|
+
builder
|
|
248
|
+
.amount(testAmount)
|
|
249
|
+
.controller({ address: controllerAddress })
|
|
250
|
+
.payee('Staked')
|
|
251
|
+
.validators([validatorAddress])
|
|
252
|
+
.sender({ address: senderAddress })
|
|
253
|
+
.validity({ firstValid: 4000, maxDuration: 100 })
|
|
254
|
+
.referenceBlock('0x249799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754e')
|
|
255
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 });
|
|
256
|
+
const mockTx = createMockTransaction('custom-tx-format');
|
|
257
|
+
sinon_1.default.stub(builder, 'build').resolves(mockTx);
|
|
258
|
+
const tx = await builder.build();
|
|
259
|
+
should_1.default.exist(tx);
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hTdGFraW5nQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvYmF0Y2hTdGFraW5nQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHNFQUF1RDtBQUN2RCxpREFBNEM7QUFDNUMsb0RBQTRCO0FBQzVCLGtEQUEwQjtBQUMxQiwwQ0FBd0Y7QUFDeEYsbURBQXVEO0FBRXZELG1FQUEyQztBQUUzQywrQ0FBc0Q7QUFFdEQsU0FBUyxxQkFBcUIsQ0FBQyxNQUFjO0lBQzNDLE9BQU87UUFDTCxFQUFFLEVBQUUsS0FBSztRQUNULElBQUksRUFBRSwwQkFBZSxDQUFDLEtBQUs7UUFDM0IsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTTtRQUMvQixNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDN0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDYixFQUFFLEVBQUUsS0FBSztZQUNULElBQUksRUFBRSxPQUFPO1lBQ2IsTUFBTSxFQUFFLG9CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU87WUFDakMsY0FBYyxFQUFFLG9FQUFvRTtZQUNwRixXQUFXLEVBQUUsR0FBRztZQUNoQixXQUFXLEVBQUUsSUFBSTtZQUNqQixLQUFLLEVBQUUsQ0FBQztZQUNSLEdBQUcsRUFBRSxDQUFDO1lBQ04sV0FBVyxFQUFFLENBQUM7WUFDZCxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxVQUFVO1lBQ3JCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxRQUFRLENBQUMscUJBQXFCLEVBQUU7SUFDOUIsSUFBSSxPQUFxQixDQUFDO0lBQzFCLE1BQU0sT0FBTyxHQUFHLElB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QUFDLENBQUM7aUJBQzlCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDbEMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7aUJBQ2hELGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBRS9ELE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDekQsZUFBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQXFCLENBQUMsQ0FBQztZQUU3RCxNQUFNLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNvZGVkU2lnbmluZ1BheWxvYWQgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlJztcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgQmF0Y2hCdWlsZGVyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmF0Y2hBcmdzLCBCb25kQXJncywgTm9taW5hdGVBcmdzIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi91dGlscyc7XG5cbmltcG9ydCB7IGFjY291bnRzLCBzdGFraW5nVHggfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMnO1xuXG5mdW5jdGlvbiBjcmVhdGVNb2NrVHJhbnNhY3Rpb24odHhEYXRhOiBzdHJpbmcpOiBQYXJ0aWFsPFRyYW5zYWN0aW9uPiB7XG4gIHJldHVybiB7XG4gICAgaWQ6ICcxMjMnLFxuICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZS5CYXRjaCxcbiAgICB0b0Jyb2FkY2FzdEZvcm1hdDogKCkgPT4gdHhEYXRhLFxuICAgIGlucHV0czogW10sXG4gICAgb3V0cHV0czogW10sXG4gICAgc2lnbmF0dXJlOiBbJ21vY2stc2lnbmF0dXJlJ10sXG4gICAgdG9Kc29uOiAoKSA9PiAoe1xuICAgICAgaWQ6ICcxMjMnLFxuICAgICAgdHlwZTogJ0JhdGNoJyxcbiAgICAgIHNlbmRlcjogYWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcyxcbiAgICAgIHJlZmVyZW5jZUJsb2NrOiAnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyxcbiAgICAgIGJsb2NrTnVtYmVyOiAxMDAsXG4gICAgICBnZW5lc2lzSGFzaDogJzB4JyxcbiAgICAgIG5vbmNlOiAxLFxuICAgICAgdGlwOiAwLFxuICAgICAgc3BlY1ZlcnNpb246IDEsXG4gICAgICB0cmFuc2FjdGlvblZlcnNpb246IDEsXG4gICAgICBjaGFpbk5hbWU6ICdQb2x5bWVzaCcsXG4gICAgICBpbnB1dHM6IFtdLFxuICAgICAgb3V0cHV0czogW10sXG4gICAgfSksXG4gIH07XG59XG5cbmRlc2NyaWJlKCdQb2x5eCBCYXRjaCBCdWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBsZXQgYnVpbGRlcjogQmF0Y2hCdWlsZGVyO1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSk7XG5cbiAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IGFjY291bnRzLmFjY291bnQxLmFkZHJlc3M7XG4gIGNvbnN0IGNvbnRyb2xsZXJBZGRyZXNzID0gYWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcztcbiAgY29uc3QgdmFsaWRhdG9yQWRkcmVzcyA9ICc1QzdrTnBTdlZyMjJaMVg2Z1ZBVWpmYWhTSmZTcHZ3NERITm9ZN3VVSHBMZkVKWlInO1xuICBjb25zdCB0ZXN0QW1vdW50ID0gJzEwMDAwJztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBidWlsZGVyID0gZmFjdG9yeS5nZXRCYXRjaEJ1aWxkZXIoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NldHRlciB2YWxpZGF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgc3Rha2luZyBhbW91bnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzcHkgPSBzaW5vbi5zcHkoYnVpbGRlciwgJ3ZhbGlkYXRlVmFsdWUnKTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYnVpbGRlci5hbW91bnQoJy0xJyksIC9WYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8vKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci5hbW91bnQoJzEwMDAnKSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkVHdpY2Uoc3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgY29udHJvbGxlciBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3B5ID0gc2lub24uc3B5KGJ1aWxkZXIsICd2YWxpZGF0ZUFkZHJlc3MnKTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYnVpbGRlci5jb250cm9sbGVyKHsgYWRkcmVzczogJ2ludmFsaWQtYWRkcmVzcycgfSksIC9pcyBub3QgYSB3ZWxsLWZvcm1lZC8pO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiBjb250cm9sbGVyQWRkcmVzcyB9KSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkVHdpY2Uoc3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgdmFsaWRhdG9yIGFkZHJlc3NlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHNweSA9IHNpbm9uLnNweShidWlsZGVyLCAndmFsaWRhdGVBZGRyZXNzJyk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIudmFsaWRhdG9ycyhbJ2ludmFsaWQtYWRkcmVzcyddKSwgL2lzIG5vdCBhIHdlbGwtZm9ybWVkLyk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRUd2ljZShzcHkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQm9uZCBhbmQgTm9taW5hdGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBib25kIGFuZCBub21pbmF0ZSBhcmdzIHRvZ2V0aGVyJywgKCkgPT4ge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pO1xuXG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgYnVpbGRlci50ZXN0VmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgIH0pO1xuXG4gICAgICBidWlsZGVyID0gZmFjdG9yeS5nZXRCYXRjaEJ1aWxkZXIoKTtcblxuICAgICAgYnVpbGRlci5hbW91bnQodGVzdEFtb3VudCkuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pLnBheWVlKCdTdGFrZWQnKTtcblxuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudGVzdFZhbGlkYXRlRmllbGRzKCk7XG4gICAgICB9LCAvbXVzdCBpbmNsdWRlIGJvdGggYm9uZCBhbmQgbm9taW5hdGUgb3BlcmF0aW9ucy8pO1xuXG4gICAgICBidWlsZGVyID0gZmFjdG9yeS5nZXRCYXRjaEJ1aWxkZXIoKTtcblxuICAgICAgYnVpbGRlci52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzXSk7XG5cbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnRlc3RWYWxpZGF0ZUZpZWxkcygpO1xuICAgICAgfSwgL211c3QgaW5jbHVkZSBib3RoIGJvbmQgYW5kIG5vbWluYXRlIG9wZXJhdGlvbnMvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYSBiYXRjaCB0cmFuc2FjdGlvbiB3aXRoIGJvdGggYm9uZCBhbmQgbm9taW5hdGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiBjb250cm9sbGVyQWRkcmVzcyB9KVxuICAgICAgICAucGF5ZWUoJ1N0YWtlZCcpXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzXSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTAwIH0pO1xuXG4gICAgICBjb25zdCBtb2NrVHggPSBjcmVhdGVNb2NrVHJhbnNhY3Rpb24oc3Rha2luZ1R4LmJhdGNoLmJvbmRBbmROb21pbmF0ZS51bnNpZ25lZCk7XG4gICAgICBzaW5vbi5zdHViKGJ1aWxkZXIsICdidWlsZCcpLnJlc29sdmVzKG1vY2tUeCBhcyBUcmFuc2FjdGlvbik7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4KTtcblxuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIuZ2V0QW1vdW50KCksIHRlc3RBbW91bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIuZ2V0Q29udHJvbGxlcigpLCBjb250cm9sbGVyQWRkcmVzcyk7XG4gICAgICBzaG91bGQuZXF1YWwoYnVpbGRlci5nZXRQYXllZSgpLCAnU3Rha2VkJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKGJ1aWxkZXIuZ2V0VmFsaWRhdG9ycygpLCBbdmFsaWRhdG9yQWRkcmVzc10pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVHJhbnNhY3Rpb24gVmFsaWRhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkLCBkZWNvZGUsIGFuZCB2YWxpZGF0ZSBhIHJlYWwgYmF0Y2ggc3Rha2luZyB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICAgIC8vIEJ1aWxkIHRoZSB0cmFuc2FjdGlvbiB3aXRoIHJlYWwgcGFyYW1ldGVyc1xuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgLy8gU2V0IHVwIG1hdGVyaWFsIGZvciBkZWNvZGluZ1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBidWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIC8vIEJ1aWxkIHRoZSBhY3R1YWwgdW5zaWduZWQgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IHVuc2lnbmVkVHggPSBidWlsZGVyWydidWlsZFRyYW5zYWN0aW9uJ10oKTtcbiAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gYnVpbGRlclsnX3JlZ2lzdHJ5J107XG5cbiAgICAgIC8vIERlY29kZSB0aGUgYWN0dWFsIGJ1aWx0IHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCBkZWNvZGVkVHggPSBkZWNvZGUodW5zaWduZWRUeCwge1xuICAgICAgICBtZXRhZGF0YVJwYzogbWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgICAgIHJlZ2lzdHJ5OiByZWdpc3RyeSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBzdHJ1Y3R1cmVcbiAgICAgIHNob3VsZC5lcXVhbChkZWNvZGVkVHgubWV0aG9kLm5hbWUsICdiYXRjaEFsbCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGRlY29kZWRUeC5tZXRob2QucGFsbGV0LCAndXRpbGl0eScpO1xuXG4gICAgICBjb25zdCBiYXRjaEFyZ3MgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgdW5rbm93biBhcyBCYXRjaEFyZ3M7XG4gICAgICBzaG91bGQuZXhpc3QoYmF0Y2hBcmdzLmNhbGxzKTtcbiAgICAgIHNob3VsZC5lcXVhbChiYXRjaEFyZ3MuY2FsbHMubGVuZ3RoLCAyKTtcblxuICAgICAgLy8gVmFsaWRhdGUgZmlyc3QgY2FsbCBpcyBib25kXG4gICAgICBjb25zdCBmaXJzdENhbGwgPSBiYXRjaEFyZ3MuY2FsbHNbMF07XG4gICAgICBjb25zdCBmaXJzdENhbGxNZXRob2QgPSB1dGlscy5kZWNvZGVNZXRob2ROYW1lKGZpcnN0Q2FsbCwgcmVnaXN0cnkpO1xuICAgICAgc2hvdWxkLmVxdWFsKGZpcnN0Q2FsbE1ldGhvZCwgJ2JvbmQnKTtcblxuICAgICAgY29uc3QgYm9uZEFyZ3MgPSBmaXJzdENhbGwuYXJncyBhcyB1bmtub3duIGFzIEJvbmRBcmdzO1xuICAgICAgc2hvdWxkLmVxdWFsKGJvbmRBcmdzLnZhbHVlLCB0ZXN0QW1vdW50KTtcbiAgICAgIC8vIENvbnRyb2xsZXIgY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvYmplY3Qgd2l0aCBpZCBwcm9wZXJ0eVxuICAgICAgY29uc3QgY29udHJvbGxlclZhbHVlID1cbiAgICAgICAgdHlwZW9mIGJvbmRBcmdzLmNvbnRyb2xsZXIgPT09ICdzdHJpbmcnID8gYm9uZEFyZ3MuY29udHJvbGxlciA6IChib25kQXJncy5jb250cm9sbGVyIGFzIHsgaWQ6IHN0cmluZyB9KS5pZDtcbiAgICAgIHNob3VsZC5lcXVhbChjb250cm9sbGVyVmFsdWUsIGNvbnRyb2xsZXJBZGRyZXNzKTtcbiAgICAgIC8vIFBheWVlIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb2JqZWN0IHdpdGggc3Rha2VkIHByb3BlcnR5XG4gICAgICBjb25zdCBwYXllZVZhbHVlID1cbiAgICAgICAgdHlwZW9mIGJvbmRBcmdzLnBheWVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gYm9uZEFyZ3MucGF5ZWVcbiAgICAgICAgICA6IChib25kQXJncy5wYXllZSBhcyB7IHN0YWtlZD86IG51bGwgfSkuc3Rha2VkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/ICdTdGFrZWQnXG4gICAgICAgICAgOiBib25kQXJncy5wYXllZTtcbiAgICAgIHNob3VsZC5lcXVhbChwYXllZVZhbHVlLCAnU3Rha2VkJyk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIHNlY29uZCBjYWxsIGlzIG5vbWluYXRlXG4gICAgICBjb25zdCBzZWNvbmRDYWxsID0gYmF0Y2hBcmdzLmNhbGxzWzFdO1xuICAgICAgY29uc3Qgc2Vjb25kQ2FsbE1ldGhvZCA9IHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoc2Vjb25kQ2FsbCwgcmVnaXN0cnkpO1xuICAgICAgc2hvdWxkLmVxdWFsKHNlY29uZENhbGxNZXRob2QsICdub21pbmF0ZScpO1xuXG4gICAgICBjb25zdCBub21pbmF0ZUFyZ3MgPSBzZWNvbmRDYWxsLmFyZ3MgYXMgdW5rbm93biBhcyBOb21pbmF0ZUFyZ3M7XG4gICAgICAvLyBUYXJnZXRzIGNhbiBiZSBlaXRoZXIgc3RyaW5ncyBvciBvYmplY3RzIHdpdGggaWQgcHJvcGVydHlcbiAgICAgIGNvbnN0IHRhcmdldFZhbHVlcyA9IG5vbWluYXRlQXJncy50YXJnZXRzLm1hcCgodGFyZ2V0KSA9PlxuICAgICAgICB0eXBlb2YgdGFyZ2V0ID09PSAnc3RyaW5nJyA/IHRhcmdldCA6ICh0YXJnZXQgYXMgeyBpZDogc3RyaW5nIH0pLmlkXG4gICAgICApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0YXJnZXRWYWx1ZXMsIFt2YWxpZGF0b3JBZGRyZXNzXSk7XG5cbiAgICAgIC8vIE5vdyB2YWxpZGF0ZSB1c2luZyB0aGUgYnVpbGRlcidzIHZhbGlkYXRpb24gbWV0aG9kXG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgYnVpbGRlci52YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihkZWNvZGVkVHgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBpbnZhbGlkIGJhdGNoIHRyYW5zYWN0aW9uIHdoZW4gYnVpbHQnLCAoKSA9PiB7XG4gICAgICAvLyBUcnkgdG8gYnVpbGQgYSBiYXRjaCB3aXRoIG9ubHkgYm9uZCAobWlzc2luZyBub21pbmF0ZSlcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTAwIH0pO1xuXG4gICAgICAvLyBTZXQgdXAgbWF0ZXJpYWxcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgYnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIC8vIFNob3VsZCB0aHJvdyB3aGVuIHRyeWluZyB0byBidWlsZCB3aXRob3V0IHZhbGlkYXRvcnNcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4ge1xuICAgICAgICBidWlsZGVyWydidWlsZFRyYW5zYWN0aW9uJ10oKTtcbiAgICAgIH0sIC9tdXN0IGluY2x1ZGUgYm90aCBib25kIGFuZCBub21pbmF0ZSBvcGVyYXRpb25zLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCB2YWxpZGF0aW9uIG9mIG5vbi1iYXRjaCBtZXRob2QgbmFtZScsICgpID0+IHtcbiAgICAgIC8vIENyZWF0ZSBhIG1vY2sgZGVjb2RlZCB0cmFuc2FjdGlvbiB3aXRoIHdyb25nIG1ldGhvZCBuYW1lXG4gICAgICBjb25zdCBtb2NrRGVjb2RlZFR4OiBEZWNvZGVkU2lnbmluZ1BheWxvYWQgPSB7XG4gICAgICAgIG1ldGhvZDoge1xuICAgICAgICAgIG5hbWU6ICdib25kJyxcbiAgICAgICAgICBwYWxsZXQ6ICdzdGFraW5nJyxcbiAgICAgICAgICBhcmdzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgdW5rbm93biBhcyBEZWNvZGVkU2lnbmluZ1BheWxvYWQ7XG5cbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKG1vY2tEZWNvZGVkVHgpO1xuICAgICAgfSwgL0ludmFsaWQgdHJhbnNhY3Rpb24gdHlwZS8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRnJvbSBSYXcgVHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZWJ1aWxkIGZyb20gcmVhbCBiYXRjaCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIEZpcnN0IGJ1aWxkIGEgdHJhbnNhY3Rpb24gdG8gZ2V0IGEgcmVhbCByYXcgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IG9yaWdpbmFsQnVpbGRlciA9IGZhY3RvcnkuZ2V0QmF0Y2hCdWlsZGVyKCk7XG4gICAgICBvcmlnaW5hbEJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxMDAgfSk7XG5cbiAgICAgIC8vIFNldCB1cCBtYXRlcmlhbFxuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBvcmlnaW5hbEJ1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuXG4gICAgICAvLyBCdWlsZCB0aGUgdHJhbnNhY3Rpb24gYW5kIGdldCB0aGUgc2VyaWFsaXplZCBoZXhcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgb3JpZ2luYWxCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCByYXdUeEhleCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBidWlsZGVyIGFuZCByZWNvbnN0cnVjdCBmcm9tIHRoZSB0cmFuc2FjdGlvbiBoZXhcbiAgICAgIGNvbnN0IG5ld0J1aWxkZXIgPSBmYWN0b3J5LmdldEJhdGNoQnVpbGRlcigpO1xuICAgICAgbmV3QnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgICBuZXdCdWlsZGVyLmZyb20ocmF3VHhIZXgpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIHJlY29uc3RydWN0ZWQgYnVpbGRlciBoYXMgdGhlIHNhbWUgcGFyYW1ldGVyc1xuICAgICAgc2hvdWxkLmVxdWFsKG5ld0J1aWxkZXIuZ2V0QW1vdW50KCksIHRlc3RBbW91bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKG5ld0J1aWxkZXIuZ2V0Q29udHJvbGxlcigpLCBjb250cm9sbGVyQWRkcmVzcyk7XG4gICAgICBzaG91bGQuZXF1YWwobmV3QnVpbGRlci5nZXRQYXllZSgpLCAnU3Rha2VkJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKG5ld0J1aWxkZXIuZ2V0VmFsaWRhdG9ycygpLCBbdmFsaWRhdG9yQWRkcmVzc10pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIGNyZWF0ZSBwcm9wZXJseSBjb25maWd1cmVkIHRyYW5zYWN0aW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnYSBiYXRjaCB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxMDAgfSk7XG5cbiAgICAgIGNvbnN0IG1vY2tUeCA9IGNyZWF0ZU1vY2tUcmFuc2FjdGlvbihzdGFraW5nVHguYmF0Y2guYm9uZEFuZE5vbWluYXRlLnVuc2lnbmVkKTtcbiAgICAgIHNpbm9uLnN0dWIoYnVpbGRlciwgJ2J1aWxkJykucmVzb2x2ZXMobW9ja1R4IGFzIFRyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgYmF0Y2ggdHJhbnNhY3Rpb24gd2l0aCBjdXN0b20gcmVwbGF5IHByb3RlY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiBjb250cm9sbGVyQWRkcmVzcyB9KVxuICAgICAgICAucGF5ZWUoJ1N0YWtlZCcpXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzXSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogNDAwMCwgbWF4RHVyYXRpb246IDEwMCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MjQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZScpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDIwMCB9KTtcblxuICAgICAgY29uc3QgbW9ja1R4ID0gY3JlYXRlTW9ja1RyYW5zYWN0aW9uKCdjdXN0b20tdHgtZm9ybWF0Jyk7XG4gICAgICBzaW5vbi5zdHViKGJ1aWxkZXIsICdidWlsZCcpLnJlc29sdmVzKG1vY2tUeCBhcyBUcmFuc2FjdGlvbik7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batchUnstakingBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/batchUnstakingBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,159 @@
|
|
|
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
|
+
const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
|
|
7
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
8
|
+
const should_1 = __importDefault(require("should"));
|
|
9
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
10
|
+
const lib_1 = require("../../../src/lib");
|
|
11
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
12
|
+
const utils_1 = __importDefault(require("../../../src/lib/utils"));
|
|
13
|
+
const resources_1 = require("../../resources");
|
|
14
|
+
function createMockTransaction(txData) {
|
|
15
|
+
return {
|
|
16
|
+
id: '123',
|
|
17
|
+
type: sdk_core_1.TransactionType.Batch,
|
|
18
|
+
toBroadcastFormat: () => txData,
|
|
19
|
+
inputs: [],
|
|
20
|
+
outputs: [],
|
|
21
|
+
signature: ['mock-signature'],
|
|
22
|
+
toJson: () => ({
|
|
23
|
+
id: '123',
|
|
24
|
+
type: 'Batch',
|
|
25
|
+
sender: resources_1.accounts.account1.address,
|
|
26
|
+
referenceBlock: '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d',
|
|
27
|
+
blockNumber: 100,
|
|
28
|
+
genesisHash: '0x',
|
|
29
|
+
nonce: 1,
|
|
30
|
+
tip: 0,
|
|
31
|
+
specVersion: 1,
|
|
32
|
+
transactionVersion: 1,
|
|
33
|
+
chainName: 'Polymesh',
|
|
34
|
+
inputs: [],
|
|
35
|
+
outputs: [],
|
|
36
|
+
}),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
describe('Polyx BatchUnstaking Builder', function () {
|
|
40
|
+
let builder;
|
|
41
|
+
const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tpolyx'));
|
|
42
|
+
const senderAddress = resources_1.accounts.account1.address;
|
|
43
|
+
const testAmount = '10000';
|
|
44
|
+
beforeEach(() => {
|
|
45
|
+
builder = factory.getBatchUnstakingBuilder();
|
|
46
|
+
});
|
|
47
|
+
describe('setter validation', () => {
|
|
48
|
+
it('should validate unstaking amount', () => {
|
|
49
|
+
const spy = sinon_1.default.spy(builder, 'validateValue');
|
|
50
|
+
should_1.default.throws(() => builder.amount('-1'), /Value cannot be less than zero/);
|
|
51
|
+
should_1.default.doesNotThrow(() => builder.amount('1000'));
|
|
52
|
+
sinon_1.default.assert.calledTwice(spy);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
describe('Build and Sign', function () {
|
|
56
|
+
it('should build a batch unstaking transaction', async () => {
|
|
57
|
+
builder
|
|
58
|
+
.amount(testAmount)
|
|
59
|
+
.sender({ address: senderAddress })
|
|
60
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
61
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
62
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
|
|
63
|
+
const mockTx = createMockTransaction(resources_1.rawTx.unstake.unsigned);
|
|
64
|
+
sinon_1.default.stub(builder, 'build').resolves(mockTx);
|
|
65
|
+
const tx = await builder.build();
|
|
66
|
+
should_1.default.exist(tx);
|
|
67
|
+
should_1.default.equal(builder.getAmount(), testAmount);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe('Transaction Validation', function () {
|
|
71
|
+
it('should build, decode, and validate a real batch unstaking transaction', () => {
|
|
72
|
+
// Build the transaction with real parameters
|
|
73
|
+
builder
|
|
74
|
+
.amount(testAmount)
|
|
75
|
+
.sender({ address: senderAddress })
|
|
76
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
77
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
78
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
|
|
79
|
+
// Set up material for decoding
|
|
80
|
+
const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
|
|
81
|
+
builder.material(material);
|
|
82
|
+
// Build the actual unsigned transaction
|
|
83
|
+
const unsignedTx = builder['buildTransaction']();
|
|
84
|
+
const registry = builder['_registry'];
|
|
85
|
+
// Decode the actual built transaction
|
|
86
|
+
const decodedTx = (0, txwrapper_polkadot_1.decode)(unsignedTx, {
|
|
87
|
+
metadataRpc: material.metadata,
|
|
88
|
+
registry: registry,
|
|
89
|
+
});
|
|
90
|
+
// Validate the decoded transaction structure
|
|
91
|
+
should_1.default.equal(decodedTx.method.name, 'batchAll');
|
|
92
|
+
should_1.default.equal(decodedTx.method.pallet, 'utility');
|
|
93
|
+
const batchArgs = decodedTx.method.args;
|
|
94
|
+
should_1.default.exist(batchArgs.calls);
|
|
95
|
+
should_1.default.equal(batchArgs.calls.length, 2);
|
|
96
|
+
// Validate first call is chill
|
|
97
|
+
const firstCall = batchArgs.calls[0];
|
|
98
|
+
const firstCallMethod = utils_1.default.decodeMethodName(firstCall, registry);
|
|
99
|
+
should_1.default.equal(firstCallMethod, 'chill');
|
|
100
|
+
// Validate second call is unbond
|
|
101
|
+
const secondCall = batchArgs.calls[1];
|
|
102
|
+
const secondCallMethod = utils_1.default.decodeMethodName(secondCall, registry);
|
|
103
|
+
should_1.default.equal(secondCallMethod, 'unbond');
|
|
104
|
+
const unbondArgs = secondCall.args;
|
|
105
|
+
should_1.default.equal(unbondArgs.value, testAmount);
|
|
106
|
+
// Now validate using the builder's validation method
|
|
107
|
+
should_1.default.doesNotThrow(() => {
|
|
108
|
+
builder.validateDecodedTransaction(decodedTx);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
it('should reject invalid transaction types', () => {
|
|
112
|
+
const mockDecodedTx = {
|
|
113
|
+
method: {
|
|
114
|
+
name: 'transfer',
|
|
115
|
+
pallet: 'balances',
|
|
116
|
+
args: {},
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
should_1.default.throws(() => {
|
|
120
|
+
builder.validateDecodedTransaction(mockDecodedTx);
|
|
121
|
+
}, /Invalid transaction type/);
|
|
122
|
+
});
|
|
123
|
+
it('should validate amount is positive', () => {
|
|
124
|
+
builder.amount(testAmount);
|
|
125
|
+
should_1.default.doesNotThrow(() => {
|
|
126
|
+
builder.testValidateFields();
|
|
127
|
+
});
|
|
128
|
+
should_1.default.throws(() => {
|
|
129
|
+
builder.amount('-10');
|
|
130
|
+
builder.testValidateFields();
|
|
131
|
+
}, /Value cannot be less than zero/);
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
describe('From Raw Transaction', function () {
|
|
135
|
+
it('should rebuild from real batch unstaking transaction', async () => {
|
|
136
|
+
// First build a transaction to get a real raw transaction
|
|
137
|
+
const originalBuilder = factory.getBatchUnstakingBuilder();
|
|
138
|
+
originalBuilder
|
|
139
|
+
.amount(testAmount)
|
|
140
|
+
.sender({ address: senderAddress })
|
|
141
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
142
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
143
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
|
|
144
|
+
// Set up material
|
|
145
|
+
const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
|
|
146
|
+
originalBuilder.material(material);
|
|
147
|
+
// Build the transaction and get the serialized hex
|
|
148
|
+
const tx = await originalBuilder.build();
|
|
149
|
+
const rawTxHex = tx.toBroadcastFormat();
|
|
150
|
+
// Create a new builder and reconstruct from the transaction hex
|
|
151
|
+
const newBuilder = factory.getBatchUnstakingBuilder();
|
|
152
|
+
newBuilder.material(material);
|
|
153
|
+
newBuilder.from(rawTxHex);
|
|
154
|
+
// Verify the reconstructed builder has the same parameters
|
|
155
|
+
should_1.default.equal(newBuilder.getAmount(), testAmount);
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hVbnN0YWtpbmdCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9iYXRjaFVuc3Rha2luZ0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxzRUFBdUQ7QUFDdkQsaURBQTRDO0FBQzVDLG9EQUE0QjtBQUM1QixrREFBMEI7QUFDMUIsMENBQWlHO0FBQ2pHLG1EQUF1RDtBQUV2RCxtRUFBMkM7QUFFM0MsK0NBQWtEO0FBRWxELFNBQVMscUJBQXFCLENBQUMsTUFBYztJQUMzQyxPQUFPO1FBQ0wsRUFBRSxFQUFFLEtBQUs7UUFDVCxJQUFJLEVBQUUsMEJBQWUsQ0FBQyxLQUFLO1FBQzNCLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU07UUFDL0IsTUFBTSxFQUFFLEVBQUU7UUFDVixPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQzdCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ2IsRUFBRSxFQUFFLEtBQUs7WUFDVCxJQUFJLEVBQUUsT0FBTztZQUNiLE1BQU0sRUFBRSxvQkFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPO1lBQ2pDLGNBQWMsRUFBRSxvRUFBb0U7WUFDcEYsV0FBVyxFQUFFLEdBQUc7WUFDaEIsV0FBVyxFQUFFLElBQUk7WUFDakIsS0FBSyxFQUFFLENBQUM7WUFDUixHQUFHLEVBQUUsQ0FBQztZQUNOLFdBQVcsRUFBRSxDQUFDO1lBQ2Qsa0JBQWtCLEVBQUUsQ0FBQztZQUNyQixTQUFTLEVBQUUsVUFBVTtZQUNyQixNQUFNLEVBQUUsRUFBRTtZQUNWLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztLQUNILENBQUM7QUFDSixDQUFDO0FBRUQsUUFBUSxDQUFDLDhCQUE4QixFQUFFO0lBQ3ZDLElBQUksT0FBOEIsQ0FBQztJQUNuQyxNQUFNLE9BQU8sR0FB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QTJEO1lBQzNELGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNvZGVkU2lnbmluZ1BheWxvYWQgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlJztcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgQmF0Y2hVbnN0YWtpbmdCdWlsZGVyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmF0Y2hBcmdzIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi91dGlscyc7XG5cbmltcG9ydCB7IGFjY291bnRzLCByYXdUeCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5cbmZ1bmN0aW9uIGNyZWF0ZU1vY2tUcmFuc2FjdGlvbih0eERhdGE6IHN0cmluZyk6IFBhcnRpYWw8VHJhbnNhY3Rpb24+IHtcbiAgcmV0dXJuIHtcbiAgICBpZDogJzEyMycsXG4gICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlLkJhdGNoLFxuICAgIHRvQnJvYWRjYXN0Rm9ybWF0OiAoKSA9PiB0eERhdGEsXG4gICAgaW5wdXRzOiBbXSxcbiAgICBvdXRwdXRzOiBbXSxcbiAgICBzaWduYXR1cmU6IFsnbW9jay1zaWduYXR1cmUnXSxcbiAgICB0b0pzb246ICgpID0+ICh7XG4gICAgICBpZDogJzEyMycsXG4gICAgICB0eXBlOiAnQmF0Y2gnLFxuICAgICAgc2VuZGVyOiBhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLFxuICAgICAgcmVmZXJlbmNlQmxvY2s6ICcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnLFxuICAgICAgYmxvY2tOdW1iZXI6IDEwMCxcbiAgICAgIGdlbmVzaXNIYXNoOiAnMHgnLFxuICAgICAgbm9uY2U6IDEsXG4gICAgICB0aXA6IDAsXG4gICAgICBzcGVjVmVyc2lvbjogMSxcbiAgICAgIHRyYW5zYWN0aW9uVmVyc2lvbjogMSxcbiAgICAgIGNoYWluTmFtZTogJ1BvbHltZXNoJyxcbiAgICAgIGlucHV0czogW10sXG4gICAgICBvdXRwdXRzOiBbXSxcbiAgICB9KSxcbiAgfTtcbn1cblxuZGVzY3JpYmUoJ1BvbHl4IEJhdGNoVW5zdGFraW5nIEJ1aWxkZXInLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBidWlsZGVyOiBCYXRjaFVuc3Rha2luZ0J1aWxkZXI7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3Rwb2x5eCcpKTtcblxuICBjb25zdCBzZW5kZXJBZGRyZXNzID0gYWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcztcbiAgY29uc3QgdGVzdEFtb3VudCA9ICcxMDAwMCc7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgYnVpbGRlciA9IGZhY3RvcnkuZ2V0QmF0Y2hVbnN0YWtpbmdCdWlsZGVyKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZXR0ZXIgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHVuc3Rha2luZyBhbW91bnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzcHkgPSBzaW5vbi5zcHkoYnVpbGRlciwgJ3ZhbGlkYXRlVmFsdWUnKTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYnVpbGRlci5hbW91bnQoJy0xJyksIC9WYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8vKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci5hbW91bnQoJzEwMDAnKSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkVHdpY2Uoc3B5KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0J1aWxkIGFuZCBTaWduJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgYnVpbGQgYSBiYXRjaCB1bnN0YWtpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTAwIH0pO1xuXG4gICAgICBjb25zdCBtb2NrVHggPSBjcmVhdGVNb2NrVHJhbnNhY3Rpb24ocmF3VHgudW5zdGFrZS51bnNpZ25lZCk7XG4gICAgICBzaW5vbi5zdHViKGJ1aWxkZXIsICdidWlsZCcpLnJlc29sdmVzKG1vY2tUeCBhcyBUcmFuc2FjdGlvbik7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4KTtcblxuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIuZ2V0QW1vdW50KCksIHRlc3RBbW91bnQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVHJhbnNhY3Rpb24gVmFsaWRhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkLCBkZWNvZGUsIGFuZCB2YWxpZGF0ZSBhIHJlYWwgYmF0Y2ggdW5zdGFraW5nIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgLy8gQnVpbGQgdGhlIHRyYW5zYWN0aW9uIHdpdGggcmVhbCBwYXJhbWV0ZXJzXG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTAwIH0pO1xuXG4gICAgICAvLyBTZXQgdXAgbWF0ZXJpYWwgZm9yIGRlY29kaW5nXG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGJ1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuXG4gICAgICAvLyBCdWlsZCB0aGUgYWN0dWFsIHVuc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCB1bnNpZ25lZFR4ID0gYnVpbGRlclsnYnVpbGRUcmFuc2FjdGlvbiddKCk7XG4gICAgICBjb25zdCByZWdpc3RyeSA9IGJ1aWxkZXJbJ19yZWdpc3RyeSddO1xuXG4gICAgICAvLyBEZWNvZGUgdGhlIGFjdHVhbCBidWlsdCB0cmFuc2FjdGlvblxuICAgICAgY29uc3QgZGVjb2RlZFR4ID0gZGVjb2RlKHVuc2lnbmVkVHgsIHtcbiAgICAgICAgbWV0YWRhdGFScGM6IG1hdGVyaWFsLm1ldGFkYXRhLFxuICAgICAgICByZWdpc3RyeTogcmVnaXN0cnksXG4gICAgICB9KTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gc3RydWN0dXJlXG4gICAgICBzaG91bGQuZXF1YWwoZGVjb2RlZFR4Lm1ldGhvZC5uYW1lLCAnYmF0Y2hBbGwnKTtcbiAgICAgIHNob3VsZC5lcXVhbChkZWNvZGVkVHgubWV0aG9kLnBhbGxldCwgJ3V0aWxpdHknKTtcblxuICAgICAgY29uc3QgYmF0Y2hBcmdzID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIHVua25vd24gYXMgQmF0Y2hBcmdzO1xuICAgICAgc2hvdWxkLmV4aXN0KGJhdGNoQXJncy5jYWxscyk7XG4gICAgICBzaG91bGQuZXF1YWwoYmF0Y2hBcmdzLmNhbGxzLmxlbmd0aCwgMik7XG5cbiAgICAgIC8vIFZhbGlkYXRlIGZpcnN0IGNhbGwgaXMgY2hpbGxcbiAgICAgIGNvbnN0IGZpcnN0Q2FsbCA9IGJhdGNoQXJncy5jYWxsc1swXTtcbiAgICAgIGNvbnN0IGZpcnN0Q2FsbE1ldGhvZCA9IHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoZmlyc3RDYWxsLCByZWdpc3RyeSk7XG4gICAgICBzaG91bGQuZXF1YWwoZmlyc3RDYWxsTWV0aG9kLCAnY2hpbGwnKTtcblxuICAgICAgLy8gVmFsaWRhdGUgc2Vjb25kIGNhbGwgaXMgdW5ib25kXG4gICAgICBjb25zdCBzZWNvbmRDYWxsID0gYmF0Y2hBcmdzLmNhbGxzWzFdO1xuICAgICAgY29uc3Qgc2Vjb25kQ2FsbE1ldGhvZCA9IHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoc2Vjb25kQ2FsbCwgcmVnaXN0cnkpO1xuICAgICAgc2hvdWxkLmVxdWFsKHNlY29uZENhbGxNZXRob2QsICd1bmJvbmQnKTtcblxuICAgICAgY29uc3QgdW5ib25kQXJncyA9IHNlY29uZENhbGwuYXJncyBhcyB7IHZhbHVlOiBzdHJpbmcgfTtcbiAgICAgIHNob3VsZC5lcXVhbCh1bmJvbmRBcmdzLnZhbHVlLCB0ZXN0QW1vdW50KTtcblxuICAgICAgLy8gTm93IHZhbGlkYXRlIHVzaW5nIHRoZSBidWlsZGVyJ3MgdmFsaWRhdGlvbiBtZXRob2RcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IGludmFsaWQgdHJhbnNhY3Rpb24gdHlwZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtb2NrRGVjb2RlZFR4OiBEZWNvZGVkU2lnbmluZ1BheWxvYWQgPSB7XG4gICAgICAgIG1ldGhvZDoge1xuICAgICAgICAgIG5hbWU6ICd0cmFuc2ZlcicsXG4gICAgICAgICAgcGFsbGV0OiAnYmFsYW5jZXMnLFxuICAgICAgICAgIGFyZ3M6IHt9LFxuICAgICAgICB9LFxuICAgICAgfSBhcyB1bmtub3duIGFzIERlY29kZWRTaWduaW5nUGF5bG9hZDtcblxuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24obW9ja0RlY29kZWRUeCk7XG4gICAgICB9LCAvSW52YWxpZCB0cmFuc2FjdGlvbiB0eXBlLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGFtb3VudCBpcyBwb3NpdGl2ZScsICgpID0+IHtcbiAgICAgIGJ1aWxkZXIuYW1vdW50KHRlc3RBbW91bnQpO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudGVzdFZhbGlkYXRlRmllbGRzKCk7XG4gICAgICB9KTtcblxuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIuYW1vdW50KCctMTAnKTtcbiAgICAgICAgYnVpbGRlci50ZXN0VmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgIH0sIC9WYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8vKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0Zyb20gUmF3IFRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmVidWlsZCBmcm9tIHJlYWwgYmF0Y2ggdW5zdGFraW5nIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gRmlyc3QgYnVpbGQgYSB0cmFuc2FjdGlvbiB0byBnZXQgYSByZWFsIHJhdyB0cmFuc2FjdGlvblxuICAgICAgY29uc3Qgb3JpZ2luYWxCdWlsZGVyID0gZmFjdG9yeS5nZXRCYXRjaFVuc3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgIG9yaWdpbmFsQnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgLy8gU2V0IHVwIG1hdGVyaWFsXG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIG9yaWdpbmFsQnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIC8vIEJ1aWxkIHRoZSB0cmFuc2FjdGlvbiBhbmQgZ2V0IHRoZSBzZXJpYWxpemVkIGhleFxuICAgICAgY29uc3QgdHggPSBhd2FpdCBvcmlnaW5hbEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd1R4SGV4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1aWxkZXIgYW5kIHJlY29uc3RydWN0IGZyb20gdGhlIHRyYW5zYWN0aW9uIGhleFxuICAgICAgY29uc3QgbmV3QnVpbGRlciA9IGZhY3RvcnkuZ2V0QmF0Y2hVbnN0YWtpbmdCdWlsZGVyKCk7XG4gICAgICBuZXdCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIG5ld0J1aWxkZXIuZnJvbShyYXdUeEhleCk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgcmVjb25zdHJ1Y3RlZCBidWlsZGVyIGhhcyB0aGUgc2FtZSBwYXJhbWV0ZXJzXG4gICAgICBzaG91bGQuZXF1YWwobmV3QnVpbGRlci5nZXRBbW91bnQoKSwgdGVzdEFtb3VudCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bondExtraBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/bondExtraBuilder.ts"],"names":[],"mappings":""}
|