@bitgo-beta/sdk-coin-dot 2.2.8-beta.132 → 2.2.8-beta.1321
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/dot.d.ts +8 -12
- package/dist/src/dot.d.ts.map +1 -1
- package/dist/src/dot.js +55 -41
- package/dist/src/index.js +6 -2
- package/dist/src/lib/addressInitializationBuilder.js +8 -10
- package/dist/src/lib/batchTransactionBuilder.d.ts +1 -0
- package/dist/src/lib/batchTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/batchTransactionBuilder.js +21 -12
- package/dist/src/lib/claimBuilder.js +4 -6
- package/dist/src/lib/iface.d.ts +16 -13
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +5 -5
- package/dist/src/lib/iface_utils.js +8 -9
- package/dist/src/lib/index.js +23 -9
- package/dist/src/lib/keyPair.d.ts +7 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +51 -4
- package/dist/src/lib/nativeTransferBuilder.js +10 -12
- package/dist/src/lib/proxyBuilder.js +6 -8
- package/dist/src/lib/singletonRegistry.js +2 -2
- package/dist/src/lib/stakingBuilder.js +6 -8
- package/dist/src/lib/transaction.d.ts +0 -1
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +72 -52
- package/dist/src/lib/transactionBuilder.d.ts +0 -1
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +30 -16
- package/dist/src/lib/transactionBuilderFactory.js +3 -4
- package/dist/src/lib/txnSchema.js +3 -3
- package/dist/src/lib/unnominateBuilder.js +4 -6
- package/dist/src/lib/unstakeBuilder.js +4 -6
- package/dist/src/lib/utils.d.ts +10 -2
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +67 -34
- package/dist/src/lib/withdrawUnstakedBuilder.js +4 -6
- package/dist/src/resources/index.d.ts +2 -0
- package/dist/src/resources/index.d.ts.map +1 -1
- package/dist/src/resources/index.js +8 -2
- package/dist/src/resources/polkadotAssetHub.d.ts +2 -0
- package/dist/src/resources/polkadotAssetHub.d.ts.map +1 -0
- package/dist/src/resources/polkadotAssetHub.js +5 -0
- package/dist/src/resources/westendAssetHub.d.ts +2 -0
- package/dist/src/resources/westendAssetHub.d.ts.map +1 -0
- package/dist/src/resources/westendAssetHub.js +5 -0
- package/dist/src/tdot.js +1 -1
- package/dist/test/fixtures.d.ts +283 -0
- package/dist/test/fixtures.d.ts.map +1 -0
- package/dist/test/fixtures.js +439 -0
- package/dist/test/resources/index.d.ts +141 -0
- package/dist/test/resources/index.d.ts.map +1 -0
- package/dist/test/resources/index.js +157 -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/unit/address.d.ts +2 -0
- package/dist/test/unit/address.d.ts.map +1 -0
- package/dist/test/unit/address.js +45 -0
- package/dist/test/unit/dot.d.ts +2 -0
- package/dist/test/unit/dot.d.ts.map +1 -0
- package/dist/test/unit/dot.js +690 -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 +111 -0
- package/dist/test/unit/transaction.d.ts +2 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +269 -0
- package/dist/test/unit/transactionBuilder/addressInitializationBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/addressInitializationBuilder.js +265 -0
- package/dist/test/unit/transactionBuilder/base.d.ts +8 -0
- package/dist/test/unit/transactionBuilder/base.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/base.js +233 -0
- package/dist/test/unit/transactionBuilder/batchTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/batchTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/batchTransactionBuilder.js +521 -0
- package/dist/test/unit/transactionBuilder/claimBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/claimBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/claimBuilder.js +129 -0
- package/dist/test/unit/transactionBuilder/proxyBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/proxyBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/proxyBuilder.js +88 -0
- package/dist/test/unit/transactionBuilder/singeltonRegistry.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/singeltonRegistry.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/singeltonRegistry.js +59 -0
- package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingBuilder.js +235 -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 +107 -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 +437 -0
- package/dist/test/unit/transactionBuilder/unnominateBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/unnominateBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/unnominateBuilder.js +97 -0
- package/dist/test/unit/transactionBuilder/unstakeBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/unstakeBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/unstakeBuilder.js +116 -0
- package/dist/test/unit/transactionBuilder/withdrawUnstakedBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/withdrawUnstakedBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/withdrawUnstakedBuilder.js +115 -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 +117 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +20 -16
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -400
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildTestConfig = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
9
|
+
const assert_1 = __importDefault(require("assert"));
|
|
10
|
+
const should_1 = __importDefault(require("should"));
|
|
11
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
12
|
+
const lib_1 = require("../../../src/lib");
|
|
13
|
+
const utils_1 = __importDefault(require("../../../src/lib/utils"));
|
|
14
|
+
const resources_1 = require("../../resources");
|
|
15
|
+
const buildTestConfig = () => {
|
|
16
|
+
return statics_1.coins.get('tdot');
|
|
17
|
+
};
|
|
18
|
+
exports.buildTestConfig = buildTestConfig;
|
|
19
|
+
class StubTransactionBuilder extends lib_1.TransactionBuilder {
|
|
20
|
+
validateDecodedTransaction(decodedTxn) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
buildTransaction() {
|
|
24
|
+
throw new Error('Method not implemented.');
|
|
25
|
+
}
|
|
26
|
+
getSender() {
|
|
27
|
+
return this._sender;
|
|
28
|
+
}
|
|
29
|
+
getReferenceBlock() {
|
|
30
|
+
return this._referenceBlock;
|
|
31
|
+
}
|
|
32
|
+
getNonce() {
|
|
33
|
+
return this._nonce;
|
|
34
|
+
}
|
|
35
|
+
getTip() {
|
|
36
|
+
return this._tip;
|
|
37
|
+
}
|
|
38
|
+
getEraPeriod() {
|
|
39
|
+
return this._eraPeriod;
|
|
40
|
+
}
|
|
41
|
+
buildImplementation() {
|
|
42
|
+
return super.buildImplementation();
|
|
43
|
+
}
|
|
44
|
+
fromImplementation(rawTransaction) {
|
|
45
|
+
return super.fromImplementation(rawTransaction);
|
|
46
|
+
}
|
|
47
|
+
signImplementation(key) {
|
|
48
|
+
return super.signImplementation(key);
|
|
49
|
+
}
|
|
50
|
+
get transactionType() {
|
|
51
|
+
throw new Error('Method not implemented.');
|
|
52
|
+
}
|
|
53
|
+
getTransaction() {
|
|
54
|
+
return this._transaction;
|
|
55
|
+
}
|
|
56
|
+
getMaterial() {
|
|
57
|
+
return this._material;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
describe('Dot Transfer Builder Base', () => {
|
|
61
|
+
let builder;
|
|
62
|
+
const sender = resources_1.accounts.account1;
|
|
63
|
+
const receiver = resources_1.accounts.account2;
|
|
64
|
+
beforeEach(() => {
|
|
65
|
+
builder = new StubTransactionBuilder((0, exports.buildTestConfig)());
|
|
66
|
+
});
|
|
67
|
+
describe('setter validation', () => {
|
|
68
|
+
it('should validate sender address', () => {
|
|
69
|
+
const spy = sinon_1.default.spy(builder, 'validateAddress');
|
|
70
|
+
assert_1.default.throws(() => builder.sender({ address: 'asd' }), (e) => e.message === `The address 'asd' is not a well-formed dot address`);
|
|
71
|
+
should_1.default.doesNotThrow(() => builder.sender({ address: sender.address }));
|
|
72
|
+
sinon_1.default.assert.calledTwice(spy);
|
|
73
|
+
});
|
|
74
|
+
it('should validate eraPeriod', () => {
|
|
75
|
+
const spy = sinon_1.default.spy(builder, 'validateValue');
|
|
76
|
+
assert_1.default.throws(() => builder.validity({ maxDuration: -1 }), (e) => e.message === 'Value cannot be less than zero');
|
|
77
|
+
should_1.default.doesNotThrow(() => builder.validity({ maxDuration: 64 }));
|
|
78
|
+
sinon_1.default.assert.calledTwice(spy);
|
|
79
|
+
});
|
|
80
|
+
it('should validate nonce', () => {
|
|
81
|
+
const spy = sinon_1.default.spy(builder, 'validateValue');
|
|
82
|
+
assert_1.default.throws(() => builder.sequenceId({ name: 'Nonce', keyword: 'nonce', value: -1 }), (e) => e.message === 'Value cannot be less than zero');
|
|
83
|
+
should_1.default.doesNotThrow(() => builder.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 10 }));
|
|
84
|
+
sinon_1.default.assert.calledTwice(spy);
|
|
85
|
+
});
|
|
86
|
+
it('should validate tip', () => {
|
|
87
|
+
const spy = sinon_1.default.spy(builder, 'validateValue');
|
|
88
|
+
assert_1.default.throws(() => builder.fee({ amount: -1, type: 'tip' }), (e) => e.message === 'Value cannot be less than zero');
|
|
89
|
+
should_1.default.doesNotThrow(() => builder.fee({ amount: 10, type: 'tip' }));
|
|
90
|
+
sinon_1.default.assert.calledTwice(spy);
|
|
91
|
+
});
|
|
92
|
+
it('should validate blockNumber', () => {
|
|
93
|
+
const spy = sinon_1.default.spy(builder, 'validateValue');
|
|
94
|
+
assert_1.default.throws(() => builder.validity({ firstValid: -1 }), (e) => e.message === 'Value cannot be less than zero');
|
|
95
|
+
should_1.default.doesNotThrow(() => builder.validity({ firstValid: 10 }));
|
|
96
|
+
sinon_1.default.assert.calledTwice(spy);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
describe('build base transaction', () => {
|
|
100
|
+
it('should build validate base fields', async () => {
|
|
101
|
+
builder
|
|
102
|
+
.material(utils_1.default.getMaterial((0, exports.buildTestConfig)()))
|
|
103
|
+
.sender({ address: sender.address })
|
|
104
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
105
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
106
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
|
|
107
|
+
.fee({ amount: 0, type: 'tip' });
|
|
108
|
+
should_1.default.doesNotThrow(() => builder.validateTransaction(builder.getTransaction()));
|
|
109
|
+
});
|
|
110
|
+
it('should build a base transaction on testnet', async () => {
|
|
111
|
+
const material = builder.getMaterial();
|
|
112
|
+
should_1.default.deepEqual(material.specName, resources_1.specName);
|
|
113
|
+
should_1.default.deepEqual(material.genesisHash, resources_1.genesisHash);
|
|
114
|
+
should_1.default.deepEqual(material.specVersion, resources_1.specVersion);
|
|
115
|
+
should_1.default.deepEqual(material.chainName, resources_1.chainName);
|
|
116
|
+
});
|
|
117
|
+
it('should build from raw signed tx', async () => {
|
|
118
|
+
builder.from(resources_1.rawTx.transfer.signed);
|
|
119
|
+
should_1.default.deepEqual(builder.getSender(), sender.address);
|
|
120
|
+
should_1.default.deepEqual(builder.getNonce(), 200);
|
|
121
|
+
should_1.default.deepEqual(builder.getEraPeriod(), 64);
|
|
122
|
+
should_1.default.deepEqual(builder.getTip(), undefined);
|
|
123
|
+
});
|
|
124
|
+
it('should build from raw unsigned tx', async () => {
|
|
125
|
+
builder.from(resources_1.rawTx.transfer.unsigned);
|
|
126
|
+
should_1.default.deepEqual(builder.getReferenceBlock(), '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
|
|
127
|
+
should_1.default.deepEqual(builder.getNonce(), 200);
|
|
128
|
+
should_1.default.deepEqual(builder.getEraPeriod(), 64);
|
|
129
|
+
should_1.default.deepEqual(builder.getTip(), undefined);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
describe('add TSS signature', function () {
|
|
133
|
+
let MPC;
|
|
134
|
+
before('initialize mpc module', async () => {
|
|
135
|
+
MPC = await sdk_core_1.Eddsa.initialize();
|
|
136
|
+
});
|
|
137
|
+
it('should add TSS signature', async () => {
|
|
138
|
+
const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tdot'));
|
|
139
|
+
const A = MPC.keyShare(1, 2, 3);
|
|
140
|
+
const B = MPC.keyShare(2, 2, 3);
|
|
141
|
+
const C = MPC.keyShare(3, 2, 3);
|
|
142
|
+
const A_combine = MPC.keyCombine(A.uShare, [B.yShares[1], C.yShares[1]]);
|
|
143
|
+
const B_combine = MPC.keyCombine(B.uShare, [A.yShares[2], C.yShares[2]]);
|
|
144
|
+
const C_combine = MPC.keyCombine(C.uShare, [A.yShares[3], B.yShares[3]]);
|
|
145
|
+
const commonPub = A_combine.pShare.y;
|
|
146
|
+
const dotKeyPair = new lib_1.KeyPair({ pub: commonPub });
|
|
147
|
+
const sender = dotKeyPair.getAddress(sdk_core_1.DotAddressFormat.substrate);
|
|
148
|
+
let transferBuilder = factory
|
|
149
|
+
.getTransferBuilder()
|
|
150
|
+
.amount('90034235235322')
|
|
151
|
+
.to({ address: '5Ffp1wJCPu4hzVDTo7XaMLqZSvSadyUQmxWPDw74CBjECSoq' })
|
|
152
|
+
.sender({ address: sender })
|
|
153
|
+
.to({ address: receiver.address })
|
|
154
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
155
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
156
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
|
|
157
|
+
.fee({ amount: 0, type: 'tip' });
|
|
158
|
+
const unsignedTransaction = await transferBuilder.build();
|
|
159
|
+
const signablePayload = unsignedTransaction.signablePayload;
|
|
160
|
+
// signing with A and B
|
|
161
|
+
let A_sign_share = MPC.signShare(signablePayload, A_combine.pShare, [A_combine.jShares[2]]);
|
|
162
|
+
let B_sign_share = MPC.signShare(signablePayload, B_combine.pShare, [B_combine.jShares[1]]);
|
|
163
|
+
let A_sign = MPC.sign(signablePayload, A_sign_share.xShare, [B_sign_share.rShares[1]], [C.yShares[1]]);
|
|
164
|
+
let B_sign = MPC.sign(signablePayload, B_sign_share.xShare, [A_sign_share.rShares[2]], [C.yShares[2]]);
|
|
165
|
+
// sign the message_buffer (unsigned txHex)
|
|
166
|
+
let signature = MPC.signCombine([A_sign, B_sign]);
|
|
167
|
+
let rawSignature = Buffer.concat([Buffer.from(signature.R, 'hex'), Buffer.from(signature.sigma, 'hex')]);
|
|
168
|
+
transferBuilder = factory
|
|
169
|
+
.getTransferBuilder()
|
|
170
|
+
.amount('90034235235322')
|
|
171
|
+
.to({ address: '5Ffp1wJCPu4hzVDTo7XaMLqZSvSadyUQmxWPDw74CBjECSoq' })
|
|
172
|
+
.sender({ address: sender })
|
|
173
|
+
.to({ address: receiver.address })
|
|
174
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
175
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
176
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
|
|
177
|
+
.fee({ amount: 0, type: 'tip' });
|
|
178
|
+
transferBuilder.addSignature({ pub: dotKeyPair.getKeys().pub }, rawSignature);
|
|
179
|
+
let signedTransaction = await transferBuilder.build();
|
|
180
|
+
signedTransaction.signature.length.should.equal(1);
|
|
181
|
+
signedTransaction.signature[0].should.equal(rawSignature.toString('hex'));
|
|
182
|
+
// signing with A and C
|
|
183
|
+
A_sign_share = MPC.signShare(signablePayload, A_combine.pShare, [A_combine.jShares[3]]);
|
|
184
|
+
let C_sign_share = MPC.signShare(signablePayload, C_combine.pShare, [C_combine.jShares[1]]);
|
|
185
|
+
A_sign = MPC.sign(signablePayload, A_sign_share.xShare, [C_sign_share.rShares[1]], [B.yShares[1]]);
|
|
186
|
+
let C_sign = MPC.sign(signablePayload, C_sign_share.xShare, [A_sign_share.rShares[3]], [B.yShares[3]]);
|
|
187
|
+
signature = MPC.signCombine([A_sign, C_sign]);
|
|
188
|
+
rawSignature = Buffer.concat([Buffer.from(signature.R, 'hex'), Buffer.from(signature.sigma, 'hex')]);
|
|
189
|
+
transferBuilder = factory
|
|
190
|
+
.getTransferBuilder()
|
|
191
|
+
.amount('90034235235322')
|
|
192
|
+
.to({ address: '5Ffp1wJCPu4hzVDTo7XaMLqZSvSadyUQmxWPDw74CBjECSoq' })
|
|
193
|
+
.sender({ address: sender })
|
|
194
|
+
.to({ address: receiver.address })
|
|
195
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
196
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
197
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
|
|
198
|
+
.fee({ amount: 0, type: 'tip' });
|
|
199
|
+
transferBuilder.addSignature({ pub: dotKeyPair.getKeys().pub }, rawSignature);
|
|
200
|
+
signedTransaction = await transferBuilder.build();
|
|
201
|
+
signedTransaction.signature.length.should.equal(1);
|
|
202
|
+
signedTransaction.signature[0].should.equal(rawSignature.toString('hex'));
|
|
203
|
+
// signing with B and C
|
|
204
|
+
B_sign_share = MPC.signShare(signablePayload, B_combine.pShare, [B_combine.jShares[3]]);
|
|
205
|
+
C_sign_share = MPC.signShare(signablePayload, C_combine.pShare, [C_combine.jShares[2]]);
|
|
206
|
+
B_sign = MPC.sign(signablePayload, B_sign_share.xShare, [C_sign_share.rShares[2]], [A.yShares[2]]);
|
|
207
|
+
C_sign = MPC.sign(signablePayload, C_sign_share.xShare, [B_sign_share.rShares[3]], [A.yShares[3]]);
|
|
208
|
+
signature = MPC.signCombine([B_sign, C_sign]);
|
|
209
|
+
rawSignature = Buffer.concat([Buffer.from(signature.R, 'hex'), Buffer.from(signature.sigma, 'hex')]);
|
|
210
|
+
transferBuilder = factory
|
|
211
|
+
.getTransferBuilder()
|
|
212
|
+
.amount('90034235235322')
|
|
213
|
+
.to({ address: '5Ffp1wJCPu4hzVDTo7XaMLqZSvSadyUQmxWPDw74CBjECSoq' })
|
|
214
|
+
.sender({ address: sender })
|
|
215
|
+
.to({ address: receiver.address })
|
|
216
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
217
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
218
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
|
|
219
|
+
.fee({ amount: 0, type: 'tip' });
|
|
220
|
+
transferBuilder.addSignature({ pub: dotKeyPair.getKeys().pub }, rawSignature);
|
|
221
|
+
signedTransaction = await transferBuilder.build();
|
|
222
|
+
signedTransaction.signature.length.should.equal(1);
|
|
223
|
+
signedTransaction.signature[0].should.equal(rawSignature.toString('hex'));
|
|
224
|
+
const rebuiltTransaction = await factory
|
|
225
|
+
.from(signedTransaction.toBroadcastFormat())
|
|
226
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
227
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
228
|
+
.build();
|
|
229
|
+
rebuiltTransaction.signature[0].should.equal(rawSignature.toString('hex'));
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBeUY7QUFDekYsaURBQWdGO0FBRWhGLG9EQUE0QjtBQUM1QixvREFBNEI7QUFDNUIsa0RBQTBCO0FBQzFCLDBDQUF1RztBQUV2RyxtRUFBMkM7QUFDM0MsK0NBQWlHO0FBUTFGLE1BQU0sZUFBZSxHQUFHLEdBQXlCLEVBQUU7SUFDeEQsT0FBTyxlQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQztBQUZXLFFBQUEsZUFBZSxtQkFFMUI7QUFFRixNQUFNLHNCQUF1QixTQUFRLHdCQUFrQjtJQUMzQywwQkFBMEIsQ0FBQyxVQUFtRDtRQUN0RixPQUFPO0lBQ1QsQ0FBQztJQUNTLGdCQUFnQjtRQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE9BQU8sS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELGtCQUFrQixDQUFDLGNBQXNCO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFF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RUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7aUJBQzNELEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbkMsZUFBZSxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDOUUsaUJBQWlCLEdBQUcsTUFBTSxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEQsaUJBQWlCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25ELGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUUxRSxNQUFNLGtCQUFrQixHQUFHLE1BQU0sT0FBTztpQkFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLENBQUM7aUJBQzNDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMvQyxjQUFjLENBQUMsb0VBQW9FLENBQUM7aUJBQ3BGLEtBQUssRUFBRSxDQUFDO1lBRVgsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzdFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VLZXksIERvdEFkZHJlc3NGb3JtYXQsIEVkZHNhLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnLCBjb2lucywgRG90TmV0d29yayB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgRGVjb2RlZFNpZ25lZFR4LCBEZWNvZGVkU2lnbmluZ1BheWxvYWQsIFVuc2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBLZXlQYWlyLCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25CdWlsZGVyLCBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyBNYXRlcmlhbCB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uLy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0IHsgYWNjb3VudHMsIGNoYWluTmFtZSwgZ2VuZXNpc0hhc2gsIHJhd1R4LCBzcGVjTmFtZSwgc3BlY1ZlcnNpb24gfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3REb3ROZXR3b3JrIGV4dGVuZHMgRG90TmV0d29yayB7XG4gIGdlbmVzaXNIYXNoOiBzdHJpbmc7XG4gIHNwZWNWZXJzaW9uOiBudW1iZXI7XG4gIG1ldGFkYXRhUnBjOiBgMHgke3N0cmluZ31gO1xufVxuXG5leHBvcnQgY29uc3QgYnVpbGRUZXN0Q29uZmlnID0gKCk6IFJlYWRvbmx5PENvaW5Db25maWc+ID0+IHtcbiAgcmV0dXJuIGNvaW5zLmdldCgndGRvdCcpO1xufTtcblxuY2xhc3MgU3R1YlRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCB2YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihkZWNvZGVkVHhuOiBEZWNvZGVkU2lnbmluZ1BheWxvYWQgfCBEZWNvZGVkU2lnbmVkVHgpOiB2b2lkIHtcbiAgICByZXR1cm47XG4gIH1cbiAgcHJvdGVjdGVkIGJ1aWxkVHJhbnNhY3Rpb24oKTogVW5zaWduZWRUcmFuc2FjdGlvbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgZ2V0U2VuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRlcjtcbiAgfVxuXG4gIGdldFJlZmVyZW5jZUJsb2NrKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZmVyZW5jZUJsb2NrO1xuICB9XG5cbiAgZ2V0Tm9uY2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbm9uY2U7XG4gIH1cblxuICBnZXRUaXAoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdGlwO1xuICB9XG5cbiAgZ2V0RXJhUGVyaW9kKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2VyYVBlcmlvZDtcbiAgfVxuXG4gIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cblxuICBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gc3VwZXIuZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHN1cGVyLnNpZ25JbXBsZW1lbnRhdGlvbihrZXkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBnZXRUcmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgZ2V0TWF0ZXJpYWwoKTogTWF0ZXJpYWwge1xuICAgIHJldHVybiB0aGlzLl9tYXRlcmlhbDtcbiAgfVxufVxuXG5kZXNjcmliZSgnRG90IFRyYW5zZmVyIEJ1aWxkZXIgQmFzZScsICgpID0+IHtcbiAgbGV0IGJ1aWxkZXI6IFN0dWJUcmFuc2FjdGlvbkJ1aWxkZXI7XG5cbiAgY29uc3Qgc2VuZGVyID0gYWNjb3VudHMuYWNjb3VudDE7XG4gIGNvbnN0IHJlY2VpdmVyID0gYWNjb3VudHMuYWNjb3VudDI7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgYnVpbGRlciA9IG5ldyBTdHViVHJhbnNhY3Rpb25CdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NldHRlciB2YWxpZGF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgc2VuZGVyIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzcHkgPSBzaW5vbi5zcHkoYnVpbGRlciwgJ3ZhbGlkYXRlQWRkcmVzcycpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gYnVpbGRlci5zZW5kZXIoeyBhZGRyZXNzOiAnYXNkJyB9KSxcbiAgICAgICAgKGU6IEVycm9yKSA9PiBlLm1lc3NhZ2UgPT09IGBUaGUgYWRkcmVzcyAnYXNkJyBpcyBub3QgYSB3ZWxsLWZvcm1lZCBkb3QgYWRkcmVzc2BcbiAgICAgICk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSkpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFR3aWNlKHNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGVyYVBlcmlvZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHNweSA9IHNpbm9uLnNweShidWlsZGVyLCAndmFsaWRhdGVWYWx1ZScpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gYnVpbGRlci52YWxpZGl0eSh7IG1heER1cmF0aW9uOiAtMSB9KSxcbiAgICAgICAgKGU6IEVycm9yKSA9PiBlLm1lc3NhZ2UgPT09ICdWYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8nXG4gICAgICApO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkaXR5KHsgbWF4RHVyYXRpb246IDY0IH0pKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRUd2ljZShzcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBub25jZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHNweSA9IHNpbm9uLnNweShidWlsZGVyLCAndmFsaWRhdGVWYWx1ZScpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gYnVpbGRlci5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IC0xIH0pLFxuICAgICAgICAoZTogRXJyb3IpID0+IGUubWVzc2FnZSA9PT0gJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybydcbiAgICAgICk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxMCB9KSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkVHdpY2Uoc3B5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgdGlwJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3B5ID0gc2lub24uc3B5KGJ1aWxkZXIsICd2YWxpZGF0ZVZhbHVlJyk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiBidWlsZGVyLmZlZSh7IGFtb3VudDogLTEsIHR5cGU6ICd0aXAnIH0pLFxuICAgICAgICAoZTogRXJyb3IpID0+IGUubWVzc2FnZSA9PT0gJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybydcbiAgICAgICk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIuZmVlKHsgYW1vdW50OiAxMCwgdHlwZTogJ3RpcCcgfSkpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFR3aWNlKHNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGJsb2NrTnVtYmVyJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3B5ID0gc2lub24uc3B5KGJ1aWxkZXIsICd2YWxpZGF0ZVZhbHVlJyk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiBidWlsZGVyLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogLTEgfSksXG4gICAgICAgIChlOiBFcnJvcikgPT4gZS5tZXNzYWdlID09PSAnVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJ1xuICAgICAgKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDEwIH0pKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRUd2ljZShzcHkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgYmFzZSB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHZhbGlkYXRlIGJhc2UgZmllbGRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlclxuICAgICAgICAubWF0ZXJpYWwodXRpbHMuZ2V0TWF0ZXJpYWwoYnVpbGRUZXN0Q29uZmlnKCkpKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMjAwIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24oYnVpbGRlci5nZXRUcmFuc2FjdGlvbigpKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgYmFzZSB0cmFuc2FjdGlvbiBvbiB0ZXN0bmV0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSBidWlsZGVyLmdldE1hdGVyaWFsKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKG1hdGVyaWFsLnNwZWNOYW1lLCBzcGVjTmFtZSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKG1hdGVyaWFsLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKG1hdGVyaWFsLnNwZWNWZXJzaW9uLCBzcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKG1hdGVyaWFsLmNoYWluTmFtZSwgY2hhaW5OYW1lKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgZnJvbSByYXcgc2lnbmVkIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlci5mcm9tKHJhd1R4LnRyYW5zZmVyLnNpZ25lZCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKGJ1aWxkZXIuZ2V0U2VuZGVyKCksIHNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwoYnVpbGRlci5nZXROb25jZSgpLCAyMDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChidWlsZGVyLmdldEVyYVBlcmlvZCgpLCA2NCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKGJ1aWxkZXIuZ2V0VGlwKCksIHVuZGVmaW5lZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGZyb20gcmF3IHVuc2lnbmVkIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlci5mcm9tKHJhd1R4LnRyYW5zZmVyLnVuc2lnbmVkKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwoXG4gICAgICAgIGJ1aWxkZXIuZ2V0UmVmZXJlbmNlQmxvY2soKSxcbiAgICAgICAgJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCdcbiAgICAgICk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKGJ1aWxkZXIuZ2V0Tm9uY2UoKSwgMjAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwoYnVpbGRlci5nZXRFcmFQZXJpb2QoKSwgNjQpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChidWlsZGVyLmdldFRpcCgpLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWRkIFRTUyBzaWduYXR1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IE1QQzogRWRkc2E7XG4gICAgYmVmb3JlKCdpbml0aWFsaXplIG1wYyBtb2R1bGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBNUEMgPSBhd2FpdCBFZGRzYS5pbml0aWFsaXplKCk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBhZGQgVFNTIHNpZ25hdHVyZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3Rkb3QnKSk7XG5cbiAgICAgIGNvbnN0IEEgPSBNUEMua2V5U2hhcmUoMSwgMiwgMyk7XG4gICAgICBjb25zdCBCID0gTVBDLmtleVNoYXJlKDIsIDIsIDMpO1xuICAgICAgY29uc3QgQyA9IE1QQy5rZXlTaGFyZSgzLCAyLCAzKTtcblxuICAgICAgY29uc3QgQV9jb21iaW5lID0gTVBDLmtleUNvbWJpbmUoQS51U2hhcmUsIFtCLnlTaGFyZXNbMV0sIEMueVNoYXJlc1sxXV0pO1xuICAgICAgY29uc3QgQl9jb21iaW5lID0gTVBDLmtleUNvbWJpbmUoQi51U2hhcmUsIFtBLnlTaGFyZXNbMl0sIEMueVNoYXJlc1syXV0pO1xuICAgICAgY29uc3QgQ19jb21iaW5lID0gTVBDLmtleUNvbWJpbmUoQy51U2hhcmUsIFtBLnlTaGFyZXNbM10sIEIueVNoYXJlc1szXV0pO1xuXG4gICAgICBjb25zdCBjb21tb25QdWIgPSBBX2NvbWJpbmUucFNoYXJlLnk7XG4gICAgICBjb25zdCBkb3RLZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwdWI6IGNvbW1vblB1YiB9KTtcbiAgICAgIGNvbnN0IHNlbmRlciA9IGRvdEtleVBhaXIuZ2V0QWRkcmVzcyhEb3RBZGRyZXNzRm9ybWF0LnN1YnN0cmF0ZSk7XG5cbiAgICAgIGxldCB0cmFuc2ZlckJ1aWxkZXIgPSBmYWN0b3J5XG4gICAgICAgIC5nZXRUcmFuc2ZlckJ1aWxkZXIoKVxuICAgICAgICAuYW1vdW50KCc5MDAzNDIzNTIzNTMyMicpXG4gICAgICAgIC50byh7IGFkZHJlc3M6ICc1RmZwMXdKQ1B1NGh6VkRUbzdYYU1McVpTdlNhZHlVUW14V1BEdzc0Q0JqRUNTb3EnIH0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIgfSlcbiAgICAgICAgLnRvKHsgYWRkcmVzczogcmVjZWl2ZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAyMDAgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgICBjb25zdCB1bnNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgdHJhbnNmZXJCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBzaWduYWJsZVBheWxvYWQgPSB1bnNpZ25lZFRyYW5zYWN0aW9uLnNpZ25hYmxlUGF5bG9hZDtcblxuICAgICAgLy8gc2lnbmluZyB3aXRoIEEgYW5kIEJcbiAgICAgIGxldCBBX3NpZ25fc2hhcmUgPSBNUEMuc2lnblNoYXJlKHNpZ25hYmxlUGF5bG9hZCwgQV9jb21iaW5lLnBTaGFyZSwgW0FfY29tYmluZS5qU2hhcmVzWzJdXSk7XG4gICAgICBsZXQgQl9zaWduX3NoYXJlID0gTVBDLnNpZ25TaGFyZShzaWduYWJsZVBheWxvYWQsIEJfY29tYmluZS5wU2hhcmUsIFtCX2NvbWJpbmUualNoYXJlc1sxXV0pO1xuICAgICAgbGV0IEFfc2lnbiA9IE1QQy5zaWduKHNpZ25hYmxlUGF5bG9hZCwgQV9zaWduX3NoYXJlLnhTaGFyZSwgW0Jfc2lnbl9zaGFyZS5yU2hhcmVzWzFdXSwgW0MueVNoYXJlc1sxXV0pO1xuICAgICAgbGV0IEJfc2lnbiA9IE1QQy5zaWduKHNpZ25hYmxlUGF5bG9hZCwgQl9zaWduX3NoYXJlLnhTaGFyZSwgW0Ffc2lnbl9zaGFyZS5yU2hhcmVzWzJdXSwgW0MueVNoYXJlc1syXV0pO1xuICAgICAgLy8gc2lnbiB0aGUgbWVzc2FnZV9idWZmZXIgKHVuc2lnbmVkIHR4SGV4KVxuICAgICAgbGV0IHNpZ25hdHVyZSA9IE1QQy5zaWduQ29tYmluZShbQV9zaWduLCBCX3NpZ25dKTtcbiAgICAgIGxldCByYXdTaWduYXR1cmUgPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbShzaWduYXR1cmUuUiwgJ2hleCcpLCBCdWZmZXIuZnJvbShzaWduYXR1cmUuc2lnbWEsICdoZXgnKV0pO1xuICAgICAgdHJhbnNmZXJCdWlsZGVyID0gZmFjdG9yeVxuICAgICAgICAuZ2V0VHJhbnNmZXJCdWlsZGVyKClcbiAgICAgICAgLmFtb3VudCgnOTAwMzQyMzUyMzUzMjInKVxuICAgICAgICAudG8oeyBhZGRyZXNzOiAnNUZmcDF3SkNQdTRoelZEVG83WGFNTHFaU3ZTYWR5VVFteFdQRHc3NENCakVDU29xJyB9KVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAgIC50byh7IGFkZHJlc3M6IHJlY2VpdmVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMjAwIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgdHJhbnNmZXJCdWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1YjogZG90S2V5UGFpci5nZXRLZXlzKCkucHViIH0sIHJhd1NpZ25hdHVyZSk7XG4gICAgICBsZXQgc2lnbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCB0cmFuc2ZlckJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNpZ25lZFRyYW5zYWN0aW9uLnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgc2lnbmVkVHJhbnNhY3Rpb24uc2lnbmF0dXJlWzBdLnNob3VsZC5lcXVhbChyYXdTaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpKTtcblxuICAgICAgLy8gc2lnbmluZyB3aXRoIEEgYW5kIENcbiAgICAgIEFfc2lnbl9zaGFyZSA9IE1QQy5zaWduU2hhcmUoc2lnbmFibGVQYXlsb2FkLCBBX2NvbWJpbmUucFNoYXJlLCBbQV9jb21iaW5lLmpTaGFyZXNbM11dKTtcbiAgICAgIGxldCBDX3NpZ25fc2hhcmUgPSBNUEMuc2lnblNoYXJlKHNpZ25hYmxlUGF5bG9hZCwgQ19jb21iaW5lLnBTaGFyZSwgW0NfY29tYmluZS5qU2hhcmVzWzFdXSk7XG4gICAgICBBX3NpZ24gPSBNUEMuc2lnbihzaWduYWJsZVBheWxvYWQsIEFfc2lnbl9zaGFyZS54U2hhcmUsIFtDX3NpZ25fc2hhcmUuclNoYXJlc1sxXV0sIFtCLnlTaGFyZXNbMV1dKTtcbiAgICAgIGxldCBDX3NpZ24gPSBNUEMuc2lnbihzaWduYWJsZVBheWxvYWQsIENfc2lnbl9zaGFyZS54U2hhcmUsIFtBX3NpZ25fc2hhcmUuclNoYXJlc1szXV0sIFtCLnlTaGFyZXNbM11dKTtcbiAgICAgIHNpZ25hdHVyZSA9IE1QQy5zaWduQ29tYmluZShbQV9zaWduLCBDX3NpZ25dKTtcbiAgICAgIHJhd1NpZ25hdHVyZSA9IEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5mcm9tKHNpZ25hdHVyZS5SLCAnaGV4JyksIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZS5zaWdtYSwgJ2hleCcpXSk7XG4gICAgICB0cmFuc2ZlckJ1aWxkZXIgPSBmYWN0b3J5XG4gICAgICAgIC5nZXRUcmFuc2ZlckJ1aWxkZXIoKVxuICAgICAgICAuYW1vdW50KCc5MDAzNDIzNTIzNTMyMicpXG4gICAgICAgIC50byh7IGFkZHJlc3M6ICc1RmZwMXdKQ1B1NGh6VkRUbzdYYU1McVpTdlNhZHlVUW14V1BEdzc0Q0JqRUNTb3EnIH0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIgfSlcbiAgICAgICAgLnRvKHsgYWRkcmVzczogcmVjZWl2ZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAyMDAgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgICB0cmFuc2ZlckJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiBkb3RLZXlQYWlyLmdldEtleXMoKS5wdWIgfSwgcmF3U2lnbmF0dXJlKTtcbiAgICAgIHNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgdHJhbnNmZXJCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaWduZWRUcmFuc2FjdGlvbi5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHNpZ25lZFRyYW5zYWN0aW9uLnNpZ25hdHVyZVswXS5zaG91bGQuZXF1YWwocmF3U2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKSk7XG5cbiAgICAgIC8vIHNpZ25pbmcgd2l0aCBCIGFuZCBDXG4gICAgICBCX3NpZ25fc2hhcmUgPSBNUEMuc2lnblNoYXJlKHNpZ25hYmxlUGF5bG9hZCwgQl9jb21iaW5lLnBTaGFyZSwgW0JfY29tYmluZS5qU2hhcmVzWzNdXSk7XG4gICAgICBDX3NpZ25fc2hhcmUgPSBNUEMuc2lnblNoYXJlKHNpZ25hYmxlUGF5bG9hZCwgQ19jb21iaW5lLnBTaGFyZSwgW0NfY29tYmluZS5qU2hhcmVzWzJdXSk7XG4gICAgICBCX3NpZ24gPSBNUEMuc2lnbihzaWduYWJsZVBheWxvYWQsIEJfc2lnbl9zaGFyZS54U2hhcmUsIFtDX3NpZ25fc2hhcmUuclNoYXJlc1syXV0sIFtBLnlTaGFyZXNbMl1dKTtcbiAgICAgIENfc2lnbiA9IE1QQy5zaWduKHNpZ25hYmxlUGF5bG9hZCwgQ19zaWduX3NoYXJlLnhTaGFyZSwgW0Jfc2lnbl9zaGFyZS5yU2hhcmVzWzNdXSwgW0EueVNoYXJlc1szXV0pO1xuICAgICAgc2lnbmF0dXJlID0gTVBDLnNpZ25Db21iaW5lKFtCX3NpZ24sIENfc2lnbl0pO1xuICAgICAgcmF3U2lnbmF0dXJlID0gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oc2lnbmF0dXJlLlIsICdoZXgnKSwgQnVmZmVyLmZyb20oc2lnbmF0dXJlLnNpZ21hLCAnaGV4JyldKTtcbiAgICAgIHRyYW5zZmVyQnVpbGRlciA9IGZhY3RvcnlcbiAgICAgICAgLmdldFRyYW5zZmVyQnVpbGRlcigpXG4gICAgICAgIC5hbW91bnQoJzkwMDM0MjM1MjM1MzIyJylcbiAgICAgICAgLnRvKHsgYWRkcmVzczogJzVGZnAxd0pDUHU0aHpWRFRvN1hhTUxxWlN2U2FkeVVRbXhXUER3NzRDQmpFQ1NvcScgfSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlciB9KVxuICAgICAgICAudG8oeyBhZGRyZXNzOiByZWNlaXZlci5hZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDIwMCB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KTtcbiAgICAgIHRyYW5zZmVyQnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IGRvdEtleVBhaXIuZ2V0S2V5cygpLnB1YiB9LCByYXdTaWduYXR1cmUpO1xuICAgICAgc2lnbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCB0cmFuc2ZlckJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNpZ25lZFRyYW5zYWN0aW9uLnNpZ25hdHVyZS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgc2lnbmVkVHJhbnNhY3Rpb24uc2lnbmF0dXJlWzBdLnNob3VsZC5lcXVhbChyYXdTaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpKTtcblxuICAgICAgY29uc3QgcmVidWlsdFRyYW5zYWN0aW9uID0gYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZnJvbShzaWduZWRUcmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpKVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgICAgcmVidWlsdFRyYW5zYWN0aW9uLnNpZ25hdHVyZVswXS5zaG91bGQuZXF1YWwocmF3U2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batchTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/batchTransactionBuilder.ts"],"names":[],"mappings":""}
|