@bitgo/sdk-coin-polyx 1.17.2 → 1.19.0
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/lib/batchStakingBuilder.d.ts.map +1 -1
- package/dist/src/lib/batchStakingBuilder.js +4 -1
- package/dist/src/lib/batchUnstakingBuilder.d.ts.map +1 -1
- package/dist/src/lib/batchUnstakingBuilder.js +3 -1
- package/dist/src/lib/bondExtraBuilder.d.ts.map +1 -1
- package/dist/src/lib/bondExtraBuilder.js +3 -1
- package/dist/src/lib/hexTokenTransferBuilder.d.ts +3 -0
- package/dist/src/lib/hexTokenTransferBuilder.d.ts.map +1 -1
- package/dist/src/lib/hexTokenTransferBuilder.js +4 -1
- package/dist/src/lib/hexTransferBuilder.d.ts +2 -0
- package/dist/src/lib/hexTransferBuilder.d.ts.map +1 -1
- package/dist/src/lib/hexTransferBuilder.js +3 -1
- package/dist/src/lib/iface.d.ts +113 -2
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +12 -1
- package/dist/src/lib/index.d.ts +14 -1
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +28 -2
- package/dist/src/lib/nominateBuilder.d.ts.map +1 -1
- package/dist/src/lib/nominateBuilder.js +3 -1
- package/dist/src/lib/preApproveAssetBuilder.d.ts.map +1 -1
- package/dist/src/lib/preApproveAssetBuilder.js +2 -2
- package/dist/src/lib/registerDidWithCDDBuilder.d.ts.map +1 -1
- package/dist/src/lib/registerDidWithCDDBuilder.js +4 -1
- package/dist/src/lib/tokenTransferBuilder.d.ts +7 -1
- package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -1
- package/dist/src/lib/tokenTransferBuilder.js +16 -7
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +24 -6
- package/dist/src/lib/transactionBuilderFactory.d.ts +32 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +121 -5
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +3 -1
- package/dist/src/lib/txnSchema.d.ts +20 -0
- package/dist/src/lib/txnSchema.d.ts.map +1 -1
- package/dist/src/lib/txnSchema.js +81 -2
- package/dist/src/lib/unbondBuilder.d.ts.map +1 -1
- package/dist/src/lib/unbondBuilder.js +3 -1
- package/dist/src/lib/utils.d.ts +1 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +6 -1
- package/dist/src/lib/v8BatchStakingBuilder.d.ts +85 -0
- package/dist/src/lib/v8BatchStakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8BatchStakingBuilder.js +266 -0
- package/dist/src/lib/v8BatchUnstakingBuilder.d.ts +11 -0
- package/dist/src/lib/v8BatchUnstakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8BatchUnstakingBuilder.js +21 -0
- package/dist/src/lib/v8BondExtraBuilder.d.ts +11 -0
- package/dist/src/lib/v8BondExtraBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8BondExtraBuilder.js +21 -0
- package/dist/src/lib/v8HexTokenTransferBuilder.d.ts +20 -0
- package/dist/src/lib/v8HexTokenTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8HexTokenTransferBuilder.js +42 -0
- package/dist/src/lib/v8HexTransferBuilder.d.ts +11 -0
- package/dist/src/lib/v8HexTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8HexTransferBuilder.js +21 -0
- package/dist/src/lib/v8NominateBuilder.d.ts +11 -0
- package/dist/src/lib/v8NominateBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8NominateBuilder.js +21 -0
- package/dist/src/lib/v8PreApproveAssetBuilder.d.ts +11 -0
- package/dist/src/lib/v8PreApproveAssetBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8PreApproveAssetBuilder.js +21 -0
- package/dist/src/lib/v8RegisterDidBuilder.d.ts +47 -0
- package/dist/src/lib/v8RegisterDidBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8RegisterDidBuilder.js +96 -0
- package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts +11 -0
- package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8RegisterDidWithCDDBuilder.js +21 -0
- package/dist/src/lib/v8TokenTransferBuilder.d.ts +24 -0
- package/dist/src/lib/v8TokenTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8TokenTransferBuilder.js +101 -0
- package/dist/src/lib/v8TransferBuilder.d.ts +11 -0
- package/dist/src/lib/v8TransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8TransferBuilder.js +21 -0
- package/dist/src/lib/v8UnbondBuilder.d.ts +11 -0
- package/dist/src/lib/v8UnbondBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8UnbondBuilder.js +21 -0
- package/dist/src/lib/v8WithdrawUnbondedBuilder.d.ts +11 -0
- package/dist/src/lib/v8WithdrawUnbondedBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8WithdrawUnbondedBuilder.js +21 -0
- package/dist/src/lib/withdrawUnbondedBuilder.d.ts.map +1 -1
- package/dist/src/lib/withdrawUnbondedBuilder.js +3 -1
- 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 +3 -1
- package/dist/src/resources/mainnetV8.d.ts +13 -0
- package/dist/src/resources/mainnetV8.d.ts.map +1 -0
- package/dist/src/resources/mainnetV8.js +19 -0
- package/dist/src/resources/testnetV8.d.ts +13 -0
- package/dist/src/resources/testnetV8.d.ts.map +1 -0
- package/dist/src/resources/testnetV8.js +16 -0
- package/dist/test/resources/index.d.ts +28 -1
- package/dist/test/resources/index.d.ts.map +1 -1
- package/dist/test/resources/index.js +31 -2
- package/dist/test/unit/transactionBuilder/batchStakingBuilder.js +30 -1
- package/dist/test/unit/transactionBuilder/nominateBuilder.js +58 -1
- package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.js +201 -0
- package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.js +90 -0
- package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.js +62 -0
- package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.js +45 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.js +87 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.js +45 -0
- package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.js +114 -0
- package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8TransferBuilder.js +107 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,87 @@
|
|
|
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 should_1 = __importDefault(require("should"));
|
|
7
|
+
const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
|
|
8
|
+
const lib_1 = require("../../../src/lib");
|
|
9
|
+
const resources_1 = require("../../resources");
|
|
10
|
+
const resources_2 = require("../../../src/resources");
|
|
11
|
+
const base_1 = require("./base");
|
|
12
|
+
describe('V8RegisterDidBuilder', () => {
|
|
13
|
+
describe('v8 material', () => {
|
|
14
|
+
it('carries v8 specVersion and txVersion', () => {
|
|
15
|
+
const builder = new lib_1.V8RegisterDidBuilder((0, base_1.buildTestConfig)());
|
|
16
|
+
const material = builder._material;
|
|
17
|
+
should_1.default.equal(material.specVersion, resources_2.testnetV8Material.specVersion);
|
|
18
|
+
should_1.default.equal(material.txVersion, resources_2.testnetV8Material.txVersion);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
describe('factory method', () => {
|
|
22
|
+
it('getV8RegisterDidBuilder returns a V8RegisterDidBuilder', () => {
|
|
23
|
+
const factory = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
|
|
24
|
+
should_1.default.ok(factory.getV8RegisterDidBuilder() instanceof lib_1.V8RegisterDidBuilder);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('build transaction', () => {
|
|
28
|
+
const sender = resources_1.accounts.cddProvider;
|
|
29
|
+
const target = resources_1.accounts.account1;
|
|
30
|
+
it('should build a v8 DID registration transaction with v8 specVersion in output', async () => {
|
|
31
|
+
const builder = new lib_1.V8RegisterDidBuilder((0, base_1.buildTestConfig)())
|
|
32
|
+
.to({ address: target.address })
|
|
33
|
+
.sender({ address: sender.address })
|
|
34
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
35
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
36
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
|
|
37
|
+
.fee({ amount: 0, type: 'tip' });
|
|
38
|
+
builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
|
|
39
|
+
const tx = await builder.build();
|
|
40
|
+
const txJson = tx.toJson();
|
|
41
|
+
should_1.default.deepEqual(txJson.specVersion, resources_2.testnetV8Material.specVersion);
|
|
42
|
+
should_1.default.deepEqual(txJson.transactionVersion, resources_2.testnetV8Material.txVersion);
|
|
43
|
+
});
|
|
44
|
+
it('encodes identity.registerDid (0x0718), not the v7 cddRegisterDidWithCdd (0x0714)', async () => {
|
|
45
|
+
const builder = new lib_1.V8RegisterDidBuilder((0, base_1.buildTestConfig)())
|
|
46
|
+
.to({ address: target.address })
|
|
47
|
+
.sender({ address: sender.address })
|
|
48
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
49
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
50
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
|
|
51
|
+
.fee({ amount: 0, type: 'tip' });
|
|
52
|
+
builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
|
|
53
|
+
const tx = await builder.build();
|
|
54
|
+
const methodHex = tx._substrateTransaction.method;
|
|
55
|
+
should_1.default.equal(methodHex.slice(2, 6), '0718');
|
|
56
|
+
const v8Material = lib_1.utils.getV8Material((0, base_1.buildTestConfig)().network.type);
|
|
57
|
+
const registry = lib_1.SingletonRegistry.getInstance(v8Material);
|
|
58
|
+
const decoded = (0, txwrapper_polkadot_1.decode)(tx.toBroadcastFormat(), {
|
|
59
|
+
metadataRpc: v8Material.metadata,
|
|
60
|
+
registry,
|
|
61
|
+
});
|
|
62
|
+
should_1.default.equal(decoded.method.name, 'registerDid');
|
|
63
|
+
});
|
|
64
|
+
it('should build from raw signed v8 tx and decode back to the target address', async () => {
|
|
65
|
+
const builder = new lib_1.V8RegisterDidBuilder((0, base_1.buildTestConfig)())
|
|
66
|
+
.to({ address: target.address })
|
|
67
|
+
.sender({ address: sender.address })
|
|
68
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
69
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
70
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
|
|
71
|
+
.fee({ amount: 0, type: 'tip' });
|
|
72
|
+
builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
|
|
73
|
+
const built = await builder.build();
|
|
74
|
+
const rawSigned = built.toBroadcastFormat();
|
|
75
|
+
const roundTrip = new lib_1.V8RegisterDidBuilder((0, base_1.buildTestConfig)());
|
|
76
|
+
roundTrip.from(rawSigned);
|
|
77
|
+
roundTrip
|
|
78
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
79
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
|
|
80
|
+
const tx = await roundTrip.build();
|
|
81
|
+
const txJson = tx.toJson();
|
|
82
|
+
should_1.default.deepEqual(txJson.to, target.address);
|
|
83
|
+
should_1.default.deepEqual(txJson.amount, '0');
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhSZWdpc3RlckRpZEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3Y4UmVnaXN0ZXJEaWRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLHNFQUF1RDtBQUN2RCwwQ0FBNkc7QUFDN0csK0NBQTZEO0FBQzdELHNEQUEyRDtBQUMzRCxpQ0FBeUM7QUFFekMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNwQyxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUMzQixFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1lBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksMEJBQW9CLENBQUMsSUFBQSxzQkFBZSxHQUFFLENBQUMsQ0FBQztZQUM1RCxNQUFNLFFBQVEsR0FBSSxPQUFlLENBQUMsU0FBUyxDQUFDO1lBQzVDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsNkJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSw2QkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtRQUM5QixFQUFFLENBQUMsd0RBQXdELEVBQUUsR0FBRyxFQUFFO1lBQ2hFLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsSUFBQSxzQkFBZSxHQUFFLENBQUMsQ0FBQztZQUNqRSxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsWUFBWSwwQkFBb0IsQ0FBQyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENB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QUFDLENBQUM7WUFDdEYsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFNUMsTUFBTSxTQUFTLEdBQUcsSUFBSSwwQkFBb0IsQ0FBQyxJQUFBLHNCQUFlLEdBQUUsQ0FBQyxDQUFDO1lBQzlELFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUIsU0FBUztpQkFDTixRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDLENBQUM7WUFDeEYsTUFBTSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRTNCLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVDLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgVjhSZWdpc3RlckRpZEJ1aWxkZXIsIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIFNpbmdsZXRvblJlZ2lzdHJ5LCB1dGlscyB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgYWNjb3VudHMsIG1vY2tUc3NTaWduYXR1cmUgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgdGVzdG5ldFY4TWF0ZXJpYWwgfSBmcm9tICcuLi8uLi8uLi9zcmMvcmVzb3VyY2VzJztcbmltcG9ydCB7IGJ1aWxkVGVzdENvbmZpZyB9IGZyb20gJy4vYmFzZSc7XG5cbmRlc2NyaWJlKCdWOFJlZ2lzdGVyRGlkQnVpbGRlcicsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3Y4IG1hdGVyaWFsJywgKCkgPT4ge1xuICAgIGl0KCdjYXJyaWVzIHY4IHNwZWNWZXJzaW9uIGFuZCB0eFZlcnNpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFY4UmVnaXN0ZXJEaWRCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gKGJ1aWxkZXIgYXMgYW55KS5fbWF0ZXJpYWw7XG4gICAgICBzaG91bGQuZXF1YWwobWF0ZXJpYWwuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5lcXVhbChtYXRlcmlhbC50eFZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnR4VmVyc2lvbik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmYWN0b3J5IG1ldGhvZCcsICgpID0+IHtcbiAgICBpdCgnZ2V0VjhSZWdpc3RlckRpZEJ1aWxkZXIgcmV0dXJucyBhIFY4UmVnaXN0ZXJEaWRCdWlsZGVyJywgKCkgPT4ge1xuICAgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIHNob3VsZC5vayhmYWN0b3J5LmdldFY4UmVnaXN0ZXJEaWRCdWlsZGVyKCkgaW5zdGFuY2VvZiBWOFJlZ2lzdGVyRGlkQnVpbGRlcik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdidWlsZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBjb25zdCBzZW5kZXIgPSBhY2NvdW50cy5jZGRQcm92aWRlcjtcbiAgICBjb25zdCB0YXJnZXQgPSBhY2NvdW50cy5hY2NvdW50MTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYSB2OCBESUQgcmVnaXN0cmF0aW9uIHRyYW5zYWN0aW9uIHdpdGggdjggc3BlY1ZlcnNpb24gaW4gb3V0cHV0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOFJlZ2lzdGVyRGlkQnVpbGRlcihidWlsZFRlc3RDb25maWcoKSlcbiAgICAgICAgLnRvKHsgYWRkcmVzczogdGFyZ2V0LmFkZHJlc3MgfSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1Yjogc2VuZGVyLnB1YmxpY0tleSB9LCBCdWZmZXIuZnJvbShtb2NrVHNzU2lnbmF0dXJlLCAnaGV4JykpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRyYW5zYWN0aW9uVmVyc2lvbiwgdGVzdG5ldFY4TWF0ZXJpYWwudHhWZXJzaW9uKTtcbiAgICB9KTtcblxuICAgIGl0KCdlbmNvZGVzIGlkZW50aXR5LnJlZ2lzdGVyRGlkICgweDA3MTgpLCBub3QgdGhlIHY3IGNkZFJlZ2lzdGVyRGlkV2l0aENkZCAoMHgwNzE0KScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVjhSZWdpc3RlckRpZEJ1aWxkZXIoYnVpbGRUZXN0Q29uZmlnKCkpXG4gICAgICAgIC50byh7IGFkZHJlc3M6IHRhcmdldC5hZGRyZXNzIH0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IHNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCBtZXRob2RIZXggPSAodHggYXMgYW55KS5fc3Vic3RyYXRlVHJhbnNhY3Rpb24ubWV0aG9kIGFzIHN0cmluZztcbiAgICAgIHNob3VsZC5lcXVhbChtZXRob2RIZXguc2xpY2UoMiwgNiksICcwNzE4Jyk7XG5cbiAgICAgIGNvbnN0IHY4TWF0ZXJpYWwgPSB1dGlscy5nZXRWOE1hdGVyaWFsKGJ1aWxkVGVzdENvbmZpZygpLm5ldHdvcmsudHlwZSk7XG4gICAgICBjb25zdCByZWdpc3RyeSA9IFNpbmdsZXRvblJlZ2lzdHJ5LmdldEluc3RhbmNlKHY4TWF0ZXJpYWwpO1xuICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiB2OE1hdGVyaWFsLm1ldGFkYXRhLFxuICAgICAgICByZWdpc3RyeSxcbiAgICAgIH0pO1xuICAgICAgc2hvdWxkLmVxdWFsKGRlY29kZWQubWV0aG9kLm5hbWUsICdyZWdpc3RlckRpZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBmcm9tIHJhdyBzaWduZWQgdjggdHggYW5kIGRlY29kZSBiYWNrIHRvIHRoZSB0YXJnZXQgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVjhSZWdpc3RlckRpZEJ1aWxkZXIoYnVpbGRUZXN0Q29uZmlnKCkpXG4gICAgICAgIC50byh7IGFkZHJlc3M6IHRhcmdldC5hZGRyZXNzIH0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IHNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcbiAgICAgIGNvbnN0IGJ1aWx0ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgcmF3U2lnbmVkID0gYnVpbHQudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgY29uc3Qgcm91bmRUcmlwID0gbmV3IFY4UmVnaXN0ZXJEaWRCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIHJvdW5kVHJpcC5mcm9tKHJhd1NpZ25lZCk7XG4gICAgICByb3VuZFRyaXBcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHJvdW5kVHJpcC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRvLCB0YXJnZXQuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5hbW91bnQsICcwJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v8RegisterDidWithCDDBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
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 should_1 = __importDefault(require("should"));
|
|
7
|
+
const lib_1 = require("../../../src/lib");
|
|
8
|
+
const resources_1 = require("../../resources");
|
|
9
|
+
const resources_2 = require("../../../src/resources");
|
|
10
|
+
const base_1 = require("./base");
|
|
11
|
+
describe('V8RegisterDidWithCDDBuilder', () => {
|
|
12
|
+
describe('v8 material', () => {
|
|
13
|
+
it('carries v8 specVersion and txVersion', () => {
|
|
14
|
+
const builder = new lib_1.V8RegisterDidWithCDDBuilder((0, base_1.buildTestConfig)());
|
|
15
|
+
const material = builder._material;
|
|
16
|
+
should_1.default.equal(material.specVersion, resources_2.testnetV8Material.specVersion);
|
|
17
|
+
should_1.default.equal(material.txVersion, resources_2.testnetV8Material.txVersion);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
describe('factory method', () => {
|
|
21
|
+
it('getV8RegisterDidWithCDDBuilder returns a V8RegisterDidWithCDDBuilder', () => {
|
|
22
|
+
const factory = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
|
|
23
|
+
should_1.default.ok(factory.getV8RegisterDidWithCDDBuilder() instanceof lib_1.V8RegisterDidWithCDDBuilder);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('build transaction', () => {
|
|
27
|
+
const sender = resources_1.accounts.cddProvider;
|
|
28
|
+
const target = resources_1.accounts.account1;
|
|
29
|
+
it('should build a v8 DID registration transaction with v8 specVersion in output', async () => {
|
|
30
|
+
const builder = new lib_1.V8RegisterDidWithCDDBuilder((0, base_1.buildTestConfig)())
|
|
31
|
+
.to({ address: target.address })
|
|
32
|
+
.sender({ address: sender.address })
|
|
33
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
34
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
35
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
|
|
36
|
+
.fee({ amount: 0, type: 'tip' });
|
|
37
|
+
builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
|
|
38
|
+
const tx = await builder.build();
|
|
39
|
+
const txJson = tx.toJson();
|
|
40
|
+
should_1.default.deepEqual(txJson.specVersion, resources_2.testnetV8Material.specVersion);
|
|
41
|
+
should_1.default.deepEqual(txJson.transactionVersion, resources_2.testnetV8Material.txVersion);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhSZWdpc3RlckRpZFdpdGhDRERCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci92OFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsMENBQTBGO0FBQzFGLCtDQUE2RDtBQUM3RCxzREFBMkQ7QUFDM0QsaUNBQXlDO0FBRXpDLFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUU7SUFDM0MsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDM0IsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtZQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLGlDQUEyQixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDLENBQUM7WUFDbkUsTUFBTSxRQUFRLEdBQUksT0FBZSxDQUFDLFNBQVMsQ0FBQztZQUM1QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLDZCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xFLGdCQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsNkJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDOUIsRUFBRSxDQUFDLHNFQUFzRSxFQUFFLEdBQUcsRUFBRTtZQUM5RSxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDLENBQUM7WUFDakUsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLDhCQUE4QixFQUFFLFlBQVksaUNBQTJCLENBQUMsQ0FBQztRQUM3RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtRQUNqQyxNQUFNLE1BQU0sR0FBRyxvQkFBUSxDQUFDLFdBQVcsQ0FBQztRQUNwQyxNQUFNLE1BQU0sR0FBRyxvQkFBUSxDQUFDLFFBQVEsQ0FBQztRQUVqQyxFQUFFLENBQUMsOEVBQThFLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDNUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxpQ0FBMkIsQ0FBQyxJQUFBLHNCQUFlLEdBQUUsQ0FBQztpQkFDL0QsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDL0IsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDbkMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztpQkFDekQsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNuQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEYsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFakMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsNkJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEUsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLDZCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFY4UmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlciwgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgYWNjb3VudHMsIG1vY2tUc3NTaWduYXR1cmUgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgdGVzdG5ldFY4TWF0ZXJpYWwgfSBmcm9tICcuLi8uLi8uLi9zcmMvcmVzb3VyY2VzJztcbmltcG9ydCB7IGJ1aWxkVGVzdENvbmZpZyB9IGZyb20gJy4vYmFzZSc7XG5cbmRlc2NyaWJlKCdWOFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXInLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCd2OCBtYXRlcmlhbCcsICgpID0+IHtcbiAgICBpdCgnY2FycmllcyB2OCBzcGVjVmVyc2lvbiBhbmQgdHhWZXJzaW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIoYnVpbGRUZXN0Q29uZmlnKCkpO1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSAoYnVpbGRlciBhcyBhbnkpLl9tYXRlcmlhbDtcbiAgICAgIHNob3VsZC5lcXVhbChtYXRlcmlhbC5zcGVjVmVyc2lvbiwgdGVzdG5ldFY4TWF0ZXJpYWwuc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmVxdWFsKG1hdGVyaWFsLnR4VmVyc2lvbiwgdGVzdG5ldFY4TWF0ZXJpYWwudHhWZXJzaW9uKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ZhY3RvcnkgbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdnZXRWOFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIgcmV0dXJucyBhIFY4UmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBzaG91bGQub2soZmFjdG9yeS5nZXRWOFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIoKSBpbnN0YW5jZW9mIFY4UmVnaXN0ZXJEaWRXaXRoQ0REQnVpbGRlcik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdidWlsZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBjb25zdCBzZW5kZXIgPSBhY2NvdW50cy5jZGRQcm92aWRlcjtcbiAgICBjb25zdCB0YXJnZXQgPSBhY2NvdW50cy5hY2NvdW50MTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYSB2OCBESUQgcmVnaXN0cmF0aW9uIHRyYW5zYWN0aW9uIHdpdGggdjggc3BlY1ZlcnNpb24gaW4gb3V0cHV0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOFJlZ2lzdGVyRGlkV2l0aENEREJ1aWxkZXIoYnVpbGRUZXN0Q29uZmlnKCkpXG4gICAgICAgIC50byh7IGFkZHJlc3M6IHRhcmdldC5hZGRyZXNzIH0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IHNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnR4VmVyc2lvbik7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v8TokenTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/v8TokenTransferBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,114 @@
|
|
|
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 should_1 = __importDefault(require("should"));
|
|
7
|
+
const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
|
|
8
|
+
const lib_1 = require("../../../src/lib");
|
|
9
|
+
const resources_1 = require("../../resources");
|
|
10
|
+
const resources_2 = require("../../../src/resources");
|
|
11
|
+
const base_1 = require("./base");
|
|
12
|
+
const FROM_DID = '0x1208d7851e6698249aea40742701ee1ef6cdcced260a7c49c1cca1a9db836342';
|
|
13
|
+
const TO_DID = '0xbc6f7ec808f361c1353ab9dc88c3cc54b98d9eb60fed9c063e67a40925b8ef61';
|
|
14
|
+
const ASSET_ID = '0x780602887b358cf48989d0d9aa6c8d28';
|
|
15
|
+
describe('V8TokenTransferBuilder', () => {
|
|
16
|
+
describe('v8 material', () => {
|
|
17
|
+
it('carries v8 specVersion and txVersion', () => {
|
|
18
|
+
const builder = new lib_1.V8TokenTransferBuilder((0, base_1.buildTestConfig)());
|
|
19
|
+
const material = builder._material;
|
|
20
|
+
should_1.default.equal(material.specVersion, resources_2.testnetV8Material.specVersion);
|
|
21
|
+
should_1.default.equal(material.txVersion, resources_2.testnetV8Material.txVersion);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe('factory method', () => {
|
|
25
|
+
it('getV8TokenTransferBuilder returns a V8TokenTransferBuilder', () => {
|
|
26
|
+
const factory = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
|
|
27
|
+
should_1.default.ok(factory.getV8TokenTransferBuilder() instanceof lib_1.V8TokenTransferBuilder);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe('build transaction', () => {
|
|
31
|
+
const sender = resources_1.accounts.account1;
|
|
32
|
+
it('should build a v8 token transfer transaction with v8 specVersion in output', async () => {
|
|
33
|
+
const builder = new lib_1.V8TokenTransferBuilder((0, base_1.buildTestConfig)())
|
|
34
|
+
.assetId(ASSET_ID)
|
|
35
|
+
.amount('1000000')
|
|
36
|
+
.fromDID(FROM_DID)
|
|
37
|
+
.toDID(TO_DID)
|
|
38
|
+
.memo('0')
|
|
39
|
+
.sender({ address: sender.address })
|
|
40
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
41
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
42
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
|
|
43
|
+
.fee({ amount: 0, type: 'tip' });
|
|
44
|
+
builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
|
|
45
|
+
const tx = await builder.build();
|
|
46
|
+
const txJson = tx.toJson();
|
|
47
|
+
should_1.default.deepEqual(txJson.specVersion, resources_2.testnetV8Material.specVersion);
|
|
48
|
+
should_1.default.deepEqual(txJson.transactionVersion, resources_2.testnetV8Material.txVersion);
|
|
49
|
+
});
|
|
50
|
+
it('encodes legs/holderSet using the v8 AssetHolder wrapper, not the v7 bare PortfolioId shape', async () => {
|
|
51
|
+
const builder = new lib_1.V8TokenTransferBuilder((0, base_1.buildTestConfig)())
|
|
52
|
+
.assetId(ASSET_ID)
|
|
53
|
+
.amount('1000000')
|
|
54
|
+
.fromDID(FROM_DID)
|
|
55
|
+
.toDID(TO_DID)
|
|
56
|
+
.memo('0')
|
|
57
|
+
.sender({ address: sender.address })
|
|
58
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
59
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
60
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
|
|
61
|
+
.fee({ amount: 0, type: 'tip' });
|
|
62
|
+
builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
|
|
63
|
+
const tx = await builder.build();
|
|
64
|
+
// Call index is unchanged from v7 (0x2514) — confirmed on Polymesh Testnet v8 (block 24801173).
|
|
65
|
+
const methodHex = tx._substrateTransaction.method;
|
|
66
|
+
should_1.default.equal(methodHex.slice(2, 6), '2514');
|
|
67
|
+
// Decoding against real v8 metadata must resolve `holderSet` + AssetHolder-wrapped legs
|
|
68
|
+
// (lowercase `portfolio` key — see DecodedAssetHolder). A v7-shaped `portfolios` field
|
|
69
|
+
// would fail this decode (defineMethod itself throws "expects argument holderSet" if the
|
|
70
|
+
// v7 shape is passed to v8 metadata — this test proves the v8 shape round-trips cleanly).
|
|
71
|
+
const v8Material = lib_1.utils.getV8Material((0, base_1.buildTestConfig)().network.type);
|
|
72
|
+
const registry = lib_1.SingletonRegistry.getInstance(v8Material);
|
|
73
|
+
const decoded = (0, txwrapper_polkadot_1.decode)(tx.toBroadcastFormat(), {
|
|
74
|
+
metadataRpc: v8Material.metadata,
|
|
75
|
+
registry,
|
|
76
|
+
});
|
|
77
|
+
const args = decoded.method.args;
|
|
78
|
+
should_1.default.not.exist(args.portfolios);
|
|
79
|
+
should_1.default.exist(args.holderSet);
|
|
80
|
+
should_1.default.equal(args.holderSet[0].portfolio.did, FROM_DID);
|
|
81
|
+
should_1.default.equal(args.legs[0].fungible.sender.portfolio.did, FROM_DID);
|
|
82
|
+
should_1.default.equal(args.legs[0].fungible.receiver.portfolio.did, TO_DID);
|
|
83
|
+
should_1.default.equal(args.legs[0].fungible.assetId, ASSET_ID);
|
|
84
|
+
});
|
|
85
|
+
it('should build from raw signed v8 tx and decode the AssetHolder-wrapped legs back into DIDs', async () => {
|
|
86
|
+
const builder = new lib_1.V8TokenTransferBuilder((0, base_1.buildTestConfig)())
|
|
87
|
+
.assetId(ASSET_ID)
|
|
88
|
+
.amount('1000000')
|
|
89
|
+
.fromDID(FROM_DID)
|
|
90
|
+
.toDID(TO_DID)
|
|
91
|
+
.memo('0')
|
|
92
|
+
.sender({ address: sender.address })
|
|
93
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
94
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
95
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
|
|
96
|
+
.fee({ amount: 0, type: 'tip' });
|
|
97
|
+
builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
|
|
98
|
+
const built = await builder.build();
|
|
99
|
+
const rawSigned = built.toBroadcastFormat();
|
|
100
|
+
const roundTrip = new lib_1.V8TokenTransferBuilder((0, base_1.buildTestConfig)());
|
|
101
|
+
roundTrip.from(rawSigned);
|
|
102
|
+
roundTrip
|
|
103
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
104
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
|
|
105
|
+
const tx = await roundTrip.build();
|
|
106
|
+
const txJson = tx.toJson();
|
|
107
|
+
should_1.default.deepEqual(txJson.amount, '1000000');
|
|
108
|
+
should_1.default.deepEqual(txJson.assetId, ASSET_ID);
|
|
109
|
+
should_1.default.deepEqual(txJson.fromDID, FROM_DID);
|
|
110
|
+
should_1.default.deepEqual(txJson.toDID, TO_DID);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhUb2tlblRyYW5zZmVyQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvdjhUb2tlblRyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1QixzRUFBdUQ7QUFDdkQsMENBQStHO0FBQy9HLCtDQUE2RDtBQUM3RCxzREFBMkQ7QUFDM0QsaUNBQXlDO0FBRXpDLE1BQU0sUUFBUSxHQUFHLG9FQUFvRSxDQUFDO0FBQ3RGLE1BQU0sTUFBTSxHQUFHLG9FQUFvRSxDQUFDO0FBQ3BGLE1BQU0sUUFBUSxHQUFHLG9DQUFvQyxDQUFDO0FBRXRELFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7SUFDdEMsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDM0IsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtZQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLDRCQUFzQixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDLENBQUM7WUFDOUQsTUFBTSxRQUFRLEdBQUksT0FBZSxDQUFDLFNBQVMsQ0FBQztZQUM1QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLDZCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xFLGdCQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsNkJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDOUIsRUFBRSxDQUFDLDREQUE0RCxFQUFFLEdBQUcsRUFBRTtZQUNwRSxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDLENBQUM7WUFDakUs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R0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUU1QyxNQUFNLFNBQVMsR0FBRyxJQUFJLDRCQUFzQixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDLENBQUM7WUFDaEUsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMxQixTQUFTO2lCQUNOLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMvQyxjQUFjLENBQUMsb0VBQW9FLENBQUMsQ0FBQztZQUN4RixNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFM0IsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMzQyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDM0MsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1wb2xrYWRvdCc7XG5pbXBvcnQgeyBWOFRva2VuVHJhbnNmZXJCdWlsZGVyLCBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBTaW5nbGV0b25SZWdpc3RyeSwgdXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IGFjY291bnRzLCBtb2NrVHNzU2lnbmF0dXJlIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IHRlc3RuZXRWOE1hdGVyaWFsIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBidWlsZFRlc3RDb25maWcgfSBmcm9tICcuL2Jhc2UnO1xuXG5jb25zdCBGUk9NX0RJRCA9ICcweDEyMDhkNzg1MWU2Njk4MjQ5YWVhNDA3NDI3MDFlZTFlZjZjZGNjZWQyNjBhN2M0OWMxY2NhMWE5ZGI4MzYzNDInO1xuY29uc3QgVE9fRElEID0gJzB4YmM2ZjdlYzgwOGYzNjFjMTM1M2FiOWRjODhjM2NjNTRiOThkOWViNjBmZWQ5YzA2M2U2N2E0MDkyNWI4ZWY2MSc7XG5jb25zdCBBU1NFVF9JRCA9ICcweDc4MDYwMjg4N2IzNThjZjQ4OTg5ZDBkOWFhNmM4ZDI4JztcblxuZGVzY3JpYmUoJ1Y4VG9rZW5UcmFuc2ZlckJ1aWxkZXInLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCd2OCBtYXRlcmlhbCcsICgpID0+IHtcbiAgICBpdCgnY2FycmllcyB2OCBzcGVjVmVyc2lvbiBhbmQgdHhWZXJzaW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOFRva2VuVHJhbnNmZXJCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gKGJ1aWxkZXIgYXMgYW55KS5fbWF0ZXJpYWw7XG4gICAgICBzaG91bGQuZXF1YWwobWF0ZXJpYWwuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5lcXVhbChtYXRlcmlhbC50eFZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnR4VmVyc2lvbik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmYWN0b3J5IG1ldGhvZCcsICgpID0+IHtcbiAgICBpdCgnZ2V0VjhUb2tlblRyYW5zZmVyQnVpbGRlciByZXR1cm5zIGEgVjhUb2tlblRyYW5zZmVyQnVpbGRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBzaG91bGQub2soZmFjdG9yeS5nZXRWOFRva2VuVHJhbnNmZXJCdWlsZGVyKCkgaW5zdGFuY2VvZiBWOFRva2VuVHJhbnNmZXJCdWlsZGVyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IHNlbmRlciA9IGFjY291bnRzLmFjY291bnQxO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIHY4IHRva2VuIHRyYW5zZmVyIHRyYW5zYWN0aW9uIHdpdGggdjggc3BlY1ZlcnNpb24gaW4gb3V0cHV0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOFRva2VuVHJhbnNmZXJCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKVxuICAgICAgICAuYXNzZXRJZChBU1NFVF9JRClcbiAgICAgICAgLmFtb3VudCgnMTAwMDAwMCcpXG4gICAgICAgIC5mcm9tRElEKEZST01fRElEKVxuICAgICAgICAudG9ESUQoVE9fRElEKVxuICAgICAgICAubWVtbygnMCcpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IHNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnR4VmVyc2lvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnZW5jb2RlcyBsZWdzL2hvbGRlclNldCB1c2luZyB0aGUgdjggQXNzZXRIb2xkZXIgd3JhcHBlciwgbm90IHRoZSB2NyBiYXJlIFBvcnRmb2xpb0lkIHNoYXBlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOFRva2VuVHJhbnNmZXJCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKVxuICAgICAgICAuYXNzZXRJZChBU1NFVF9JRClcbiAgICAgICAgLmFtb3VudCgnMTAwMDAwMCcpXG4gICAgICAgIC5mcm9tRElEKEZST01fRElEKVxuICAgICAgICAudG9ESUQoVE9fRElEKVxuICAgICAgICAubWVtbygnMCcpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IHNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXG4gICAgICAvLyBDYWxsIGluZGV4IGlzIHVuY2hhbmdlZCBmcm9tIHY3ICgweDI1MTQpIOKAlCBjb25maXJtZWQgb24gUG9seW1lc2ggVGVzdG5ldCB2OCAoYmxvY2sgMjQ4MDExNzMpLlxuICAgICAgY29uc3QgbWV0aG9kSGV4ID0gKHR4IGFzIGFueSkuX3N1YnN0cmF0ZVRyYW5zYWN0aW9uLm1ldGhvZCBhcyBzdHJpbmc7XG4gICAgICBzaG91bGQuZXF1YWwobWV0aG9kSGV4LnNsaWNlKDIsIDYpLCAnMjUxNCcpO1xuXG4gICAgICAvLyBEZWNvZGluZyBhZ2FpbnN0IHJlYWwgdjggbWV0YWRhdGEgbXVzdCByZXNvbHZlIGBob2xkZXJTZXRgICsgQXNzZXRIb2xkZXItd3JhcHBlZCBsZWdzXG4gICAgICAvLyAobG93ZXJjYXNlIGBwb3J0Zm9saW9gIGtleSDigJQgc2VlIERlY29kZWRBc3NldEhvbGRlcikuIEEgdjctc2hhcGVkIGBwb3J0Zm9saW9zYCBmaWVsZFxuICAgICAgLy8gd291bGQgZmFpbCB0aGlzIGRlY29kZSAoZGVmaW5lTWV0aG9kIGl0c2VsZiB0aHJvd3MgXCJleHBlY3RzIGFyZ3VtZW50IGhvbGRlclNldFwiIGlmIHRoZVxuICAgICAgLy8gdjcgc2hhcGUgaXMgcGFzc2VkIHRvIHY4IG1ldGFkYXRhIOKAlCB0aGlzIHRlc3QgcHJvdmVzIHRoZSB2OCBzaGFwZSByb3VuZC10cmlwcyBjbGVhbmx5KS5cbiAgICAgIGNvbnN0IHY4TWF0ZXJpYWwgPSB1dGlscy5nZXRWOE1hdGVyaWFsKGJ1aWxkVGVzdENvbmZpZygpLm5ldHdvcmsudHlwZSk7XG4gICAgICBjb25zdCByZWdpc3RyeSA9IFNpbmdsZXRvblJlZ2lzdHJ5LmdldEluc3RhbmNlKHY4TWF0ZXJpYWwpO1xuICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiB2OE1hdGVyaWFsLm1ldGFkYXRhLFxuICAgICAgICByZWdpc3RyeSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgYXJncyA9IGRlY29kZWQubWV0aG9kLmFyZ3MgYXMgYW55O1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChhcmdzLnBvcnRmb2xpb3MpO1xuICAgICAgc2hvdWxkLmV4aXN0KGFyZ3MuaG9sZGVyU2V0KTtcbiAgICAgIHNob3VsZC5lcXVhbChhcmdzLmhvbGRlclNldFswXS5wb3J0Zm9saW8uZGlkLCBGUk9NX0RJRCk7XG4gICAgICBzaG91bGQuZXF1YWwoYXJncy5sZWdzWzBdLmZ1bmdpYmxlLnNlbmRlci5wb3J0Zm9saW8uZGlkLCBGUk9NX0RJRCk7XG4gICAgICBzaG91bGQuZXF1YWwoYXJncy5sZWdzWzBdLmZ1bmdpYmxlLnJlY2VpdmVyLnBvcnRmb2xpby5kaWQsIFRPX0RJRCk7XG4gICAgICBzaG91bGQuZXF1YWwoYXJncy5sZWdzWzBdLmZ1bmdpYmxlLmFzc2V0SWQsIEFTU0VUX0lEKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgZnJvbSByYXcgc2lnbmVkIHY4IHR4IGFuZCBkZWNvZGUgdGhlIEFzc2V0SG9sZGVyLXdyYXBwZWQgbGVncyBiYWNrIGludG8gRElEcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVjhUb2tlblRyYW5zZmVyQnVpbGRlcihidWlsZFRlc3RDb25maWcoKSlcbiAgICAgICAgLmFzc2V0SWQoQVNTRVRfSUQpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAnKVxuICAgICAgICAuZnJvbURJRChGUk9NX0RJRClcbiAgICAgICAgLnRvRElEKFRPX0RJRClcbiAgICAgICAgLm1lbW8oJzAnKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KTtcbiAgICAgIGJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiBzZW5kZXIucHVibGljS2V5IH0sIEJ1ZmZlci5mcm9tKG1vY2tUc3NTaWduYXR1cmUsICdoZXgnKSk7XG4gICAgICBjb25zdCBidWlsdCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd1NpZ25lZCA9IGJ1aWx0LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGNvbnN0IHJvdW5kVHJpcCA9IG5ldyBWOFRva2VuVHJhbnNmZXJCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIHJvdW5kVHJpcC5mcm9tKHJhd1NpZ25lZCk7XG4gICAgICByb3VuZFRyaXBcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHJvdW5kVHJpcC5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFtb3VudCwgJzEwMDAwMDAnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFzc2V0SWQsIEFTU0VUX0lEKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmZyb21ESUQsIEZST01fRElEKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRvRElELCBUT19ESUQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v8TransferBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/v8TransferBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,107 @@
|
|
|
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 should_1 = __importDefault(require("should"));
|
|
7
|
+
const lib_1 = require("../../../src/lib");
|
|
8
|
+
const src_1 = require("../../../src");
|
|
9
|
+
const resources_1 = require("../../resources");
|
|
10
|
+
const resources_2 = require("../../../src/resources");
|
|
11
|
+
const base_1 = require("./base");
|
|
12
|
+
describe('V8TransferBuilder', () => {
|
|
13
|
+
describe('v8 material', () => {
|
|
14
|
+
it('testnet builder uses v8 specVersion and txVersion', () => {
|
|
15
|
+
const config = (0, base_1.buildTestConfig)();
|
|
16
|
+
const builder = new lib_1.V8TransferBuilder(config);
|
|
17
|
+
const material = builder._material;
|
|
18
|
+
should_1.default.equal(material.specVersion, resources_2.testnetV8Material.specVersion);
|
|
19
|
+
should_1.default.equal(material.txVersion, resources_2.testnetV8Material.txVersion);
|
|
20
|
+
should_1.default.equal(material.chainName, resources_2.testnetV8Material.chainName);
|
|
21
|
+
});
|
|
22
|
+
it('mainnet builder uses v8 specVersion and txVersion', () => {
|
|
23
|
+
const config = (0, base_1.buildMainnetConfig)();
|
|
24
|
+
const builder = new lib_1.V8TransferBuilder(config);
|
|
25
|
+
const material = builder._material;
|
|
26
|
+
should_1.default.equal(material.specVersion, resources_2.mainnetV8Material.specVersion);
|
|
27
|
+
should_1.default.equal(material.txVersion, resources_2.mainnetV8Material.txVersion);
|
|
28
|
+
});
|
|
29
|
+
it('v8 specVersion is greater than v7 specVersion', () => {
|
|
30
|
+
const config = (0, base_1.buildTestConfig)();
|
|
31
|
+
const v7Material = src_1.utils.getMaterial(config.network.type);
|
|
32
|
+
const v8Material = src_1.utils.getV8Material(config.network.type);
|
|
33
|
+
should_1.default.ok(v8Material.specVersion > v7Material.specVersion, `expected v8 (${v8Material.specVersion}) > v7 (${v7Material.specVersion})`);
|
|
34
|
+
});
|
|
35
|
+
it('testnet v8 metadata bytes differ from v7 (real chain metadata, not placeholder)', () => {
|
|
36
|
+
should_1.default.notEqual(resources_2.testnetV8Material.metadata, resources_2.testnetMaterial.metadata);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe('factory method', () => {
|
|
40
|
+
it('getV8TransferBuilder returns a V8TransferBuilder', () => {
|
|
41
|
+
const factory = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
|
|
42
|
+
should_1.default.ok(factory.getV8TransferBuilder() instanceof lib_1.V8TransferBuilder);
|
|
43
|
+
});
|
|
44
|
+
it('factory v8 builder carries v8 material', () => {
|
|
45
|
+
const factory = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
|
|
46
|
+
const builder = factory.getV8TransferBuilder();
|
|
47
|
+
should_1.default.equal(builder._material.specVersion, resources_2.testnetV8Material.specVersion);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe('build transaction', () => {
|
|
51
|
+
const sender = resources_1.accounts.account1;
|
|
52
|
+
const receiver = resources_1.accounts.account2;
|
|
53
|
+
it('should build a signed v8 transfer transaction with v8 specVersion in output', async () => {
|
|
54
|
+
const config = (0, base_1.buildTestConfig)();
|
|
55
|
+
const builder = new lib_1.V8TransferBuilder(config)
|
|
56
|
+
.amount('90034235235322')
|
|
57
|
+
.to({ address: receiver.address })
|
|
58
|
+
.sender({ address: sender.address })
|
|
59
|
+
.memo('0')
|
|
60
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
61
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
62
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
|
|
63
|
+
.fee({ amount: 0, type: 'tip' });
|
|
64
|
+
builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
|
|
65
|
+
const tx = await builder.build();
|
|
66
|
+
const txJson = tx.toJson();
|
|
67
|
+
should_1.default.deepEqual(txJson.amount, '90034235235322');
|
|
68
|
+
should_1.default.deepEqual(txJson.to, receiver.address);
|
|
69
|
+
should_1.default.deepEqual(txJson.sender, sender.address);
|
|
70
|
+
should_1.default.deepEqual(txJson.specVersion, resources_2.testnetV8Material.specVersion);
|
|
71
|
+
should_1.default.deepEqual(txJson.transactionVersion, resources_2.testnetV8Material.txVersion);
|
|
72
|
+
});
|
|
73
|
+
it('should build an unsigned v8 transfer transaction', async () => {
|
|
74
|
+
const config = (0, base_1.buildTestConfig)();
|
|
75
|
+
const tx = await new lib_1.V8TransferBuilder(config)
|
|
76
|
+
.amount('1000000')
|
|
77
|
+
.to({ address: receiver.address })
|
|
78
|
+
.sender({ address: sender.address })
|
|
79
|
+
.memo('0')
|
|
80
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
81
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
82
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
|
|
83
|
+
.fee({ amount: 0, type: 'tip' })
|
|
84
|
+
.build();
|
|
85
|
+
const txJson = tx.toJson();
|
|
86
|
+
should_1.default.deepEqual(txJson.specVersion, resources_2.testnetV8Material.specVersion);
|
|
87
|
+
should_1.default.deepEqual(txJson.transactionVersion, resources_2.testnetV8Material.txVersion);
|
|
88
|
+
});
|
|
89
|
+
it('encodes transferWithMemo at v8 call index 0x0528 (HSM method ID 1320)', async () => {
|
|
90
|
+
const config = (0, base_1.buildTestConfig)();
|
|
91
|
+
const tx = await new lib_1.V8TransferBuilder(config)
|
|
92
|
+
.amount('1000000')
|
|
93
|
+
.to({ address: receiver.address })
|
|
94
|
+
.sender({ address: sender.address })
|
|
95
|
+
.memo('0')
|
|
96
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
97
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
98
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
|
|
99
|
+
.fee({ amount: 0, type: 'tip' })
|
|
100
|
+
.build();
|
|
101
|
+
const methodHex = tx._substrateTransaction.method;
|
|
102
|
+
// pallet 5 (balances) + call 0x28 (transferWithMemo) → hex bytes 05 28
|
|
103
|
+
should_1.default.equal(methodHex.slice(2, 6), '0528');
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhUcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3Y4VHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDBDQUFnRjtBQUNoRixzQ0FBcUM7QUFDckMsK0NBQTZEO0FBQzdELHNEQUErRjtBQUMvRixpQ0FBNkQ7QUFFN0QsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtJQUNqQyxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUMzQixFQUFFLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFO1lBQzNELE1BQU0sTUFBTSxHQUFHLElBQUEsc0JBQWUsR0FBRSxDQUFDO1lBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksdUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUMsTUFBTSxRQUFRLEdBQUksT0FBZSxDQUFDLFNBQVMsQ0FBQztZQUM1QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLDZCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xFLGdCQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsNkJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSw2QkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxHQUFHLEVBQUU7WUFDM0QsTUFBTSxNQUFNLEdBQUcsSUFBQSx5QkFBa0IsR0FBRSxDQUFDO1lBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksdUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUMsTUFBTSxRQUFRLEdBQUksT0FBZSxDQUFDLFNBQVMs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QUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2lCQUN6RCxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztpQkFDL0IsS0FBSyxFQUFFLENBQUM7WUFFWCxNQUFNLFNBQVMsR0FBSSxFQUFVLENBQUMscUJBQXFCLENBQUMsTUFBZ0IsQ0FBQztZQUNyRSx1RUFBdUU7WUFDdkUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgVjhUcmFuc2ZlckJ1aWxkZXIsIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IGFjY291bnRzLCBtb2NrVHNzU2lnbmF0dXJlIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IHRlc3RuZXRNYXRlcmlhbCwgdGVzdG5ldFY4TWF0ZXJpYWwsIG1haW5uZXRWOE1hdGVyaWFsIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBidWlsZFRlc3RDb25maWcsIGJ1aWxkTWFpbm5ldENvbmZpZyB9IGZyb20gJy4vYmFzZSc7XG5cbmRlc2NyaWJlKCdWOFRyYW5zZmVyQnVpbGRlcicsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3Y4IG1hdGVyaWFsJywgKCkgPT4ge1xuICAgIGl0KCd0ZXN0bmV0IGJ1aWxkZXIgdXNlcyB2OCBzcGVjVmVyc2lvbiBhbmQgdHhWZXJzaW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gYnVpbGRUZXN0Q29uZmlnKCk7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFY4VHJhbnNmZXJCdWlsZGVyKGNvbmZpZyk7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IChidWlsZGVyIGFzIGFueSkuX21hdGVyaWFsO1xuICAgICAgc2hvdWxkLmVxdWFsKG1hdGVyaWFsLnNwZWNWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZXF1YWwobWF0ZXJpYWwudHhWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC50eFZlcnNpb24pO1xuICAgICAgc2hvdWxkLmVxdWFsKG1hdGVyaWFsLmNoYWluTmFtZSwgdGVzdG5ldFY4TWF0ZXJpYWwuY2hhaW5OYW1lKTtcbiAgICB9KTtcblxuICAgIGl0KCdtYWlubmV0IGJ1aWxkZXIgdXNlcyB2OCBzcGVjVmVyc2lvbiBhbmQgdHhWZXJzaW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gYnVpbGRNYWlubmV0Q29uZmlnKCk7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFY4VHJhbnNmZXJCdWlsZGVyKGNvbmZpZyk7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IChidWlsZGVyIGFzIGFueSkuX21hdGVyaWFsO1xuICAgICAgc2hvdWxkLmVxdWFsKG1hdGVyaWFsLnNwZWNWZXJzaW9uLCBtYWlubmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZXF1YWwobWF0ZXJpYWwudHhWZXJzaW9uLCBtYWlubmV0VjhNYXRlcmlhbC50eFZlcnNpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Y4IHNwZWNWZXJzaW9uIGlzIGdyZWF0ZXIgdGhhbiB2NyBzcGVjVmVyc2lvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGJ1aWxkVGVzdENvbmZpZygpO1xuICAgICAgY29uc3QgdjdNYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgICAgY29uc3QgdjhNYXRlcmlhbCA9IHV0aWxzLmdldFY4TWF0ZXJpYWwoY29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgICBzaG91bGQub2soXG4gICAgICAgIHY4TWF0ZXJpYWwuc3BlY1ZlcnNpb24gPiB2N01hdGVyaWFsLnNwZWNWZXJzaW9uLFxuICAgICAgICBgZXhwZWN0ZWQgdjggKCR7djhNYXRlcmlhbC5zcGVjVmVyc2lvbn0pID4gdjcgKCR7djdNYXRlcmlhbC5zcGVjVmVyc2lvbn0pYFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCd0ZXN0bmV0IHY4IG1ldGFkYXRhIGJ5dGVzIGRpZmZlciBmcm9tIHY3IChyZWFsIGNoYWluIG1ldGFkYXRhLCBub3QgcGxhY2Vob2xkZXIpJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLm5vdEVxdWFsKHRlc3RuZXRWOE1hdGVyaWFsLm1ldGFkYXRhLCB0ZXN0bmV0TWF0ZXJpYWwubWV0YWRhdGEpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZmFjdG9yeSBtZXRob2QnLCAoKSA9PiB7XG4gICAgaXQoJ2dldFY4VHJhbnNmZXJCdWlsZGVyIHJldHVybnMgYSBWOFRyYW5zZmVyQnVpbGRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBzaG91bGQub2soZmFjdG9yeS5nZXRWOFRyYW5zZmVyQnVpbGRlcigpIGluc3RhbmNlb2YgVjhUcmFuc2ZlckJ1aWxkZXIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ZhY3RvcnkgdjggYnVpbGRlciBjYXJyaWVzIHY4IG1hdGVyaWFsJywgKCkgPT4ge1xuICAgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICBzaG91bGQuZXF1YWwoKGJ1aWxkZXIgYXMgYW55KS5fbWF0ZXJpYWwuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IHNlbmRlciA9IGFjY291bnRzLmFjY291bnQxO1xuICAgIGNvbnN0IHJlY2VpdmVyID0gYWNjb3VudHMuYWNjb3VudDI7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgc2lnbmVkIHY4IHRyYW5zZmVyIHRyYW5zYWN0aW9uIHdpdGggdjggc3BlY1ZlcnNpb24gaW4gb3V0cHV0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gYnVpbGRUZXN0Q29uZmlnKCk7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFY4VHJhbnNmZXJCdWlsZGVyKGNvbmZpZylcbiAgICAgICAgLmFtb3VudCgnOTAwMzQyMzUyMzUzMjInKVxuICAgICAgICAudG8oeyBhZGRyZXNzOiByZWNlaXZlci5hZGRyZXNzIH0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAubWVtbygnMCcpXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDIwMCB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KTtcbiAgICAgIGJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiBzZW5kZXIucHVibGljS2V5IH0sIEJ1ZmZlci5mcm9tKG1vY2tUc3NTaWduYXR1cmUsICdoZXgnKSk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFtb3VudCwgJzkwMDM0MjM1MjM1MzIyJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50bywgcmVjZWl2ZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zZW5kZXIsIHNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnR4VmVyc2lvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGFuIHVuc2lnbmVkIHY4IHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gYnVpbGRUZXN0Q29uZmlnKCk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IG5ldyBWOFRyYW5zZmVyQnVpbGRlcihjb25maWcpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAnKVxuICAgICAgICAudG8oeyBhZGRyZXNzOiByZWNlaXZlci5hZGRyZXNzIH0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAubWVtbygnMCcpXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRyYW5zYWN0aW9uVmVyc2lvbiwgdGVzdG5ldFY4TWF0ZXJpYWwudHhWZXJzaW9uKTtcbiAgICB9KTtcblxuICAgIGl0KCdlbmNvZGVzIHRyYW5zZmVyV2l0aE1lbW8gYXQgdjggY2FsbCBpbmRleCAweDA1MjggKEhTTSBtZXRob2QgSUQgMTMyMCknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjb25maWcgPSBidWlsZFRlc3RDb25maWcoKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgbmV3IFY4VHJhbnNmZXJCdWlsZGVyKGNvbmZpZylcbiAgICAgICAgLmFtb3VudCgnMTAwMDAwMCcpXG4gICAgICAgIC50byh7IGFkZHJlc3M6IHJlY2VpdmVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC5tZW1vKCcwJylcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgICAgY29uc3QgbWV0aG9kSGV4ID0gKHR4IGFzIGFueSkuX3N1YnN0cmF0ZVRyYW5zYWN0aW9uLm1ldGhvZCBhcyBzdHJpbmc7XG4gICAgICAvLyBwYWxsZXQgNSAoYmFsYW5jZXMpICsgY2FsbCAweDI4ICh0cmFuc2ZlcldpdGhNZW1vKSDihpIgaGV4IGJ5dGVzIDA1IDI4XG4gICAgICBzaG91bGQuZXF1YWwobWV0aG9kSGV4LnNsaWNlKDIsIDYpLCAnMDUyOCcpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|