@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.
Files changed (112) hide show
  1. package/dist/src/dot.d.ts +8 -12
  2. package/dist/src/dot.d.ts.map +1 -1
  3. package/dist/src/dot.js +55 -41
  4. package/dist/src/index.js +6 -2
  5. package/dist/src/lib/addressInitializationBuilder.js +8 -10
  6. package/dist/src/lib/batchTransactionBuilder.d.ts +1 -0
  7. package/dist/src/lib/batchTransactionBuilder.d.ts.map +1 -1
  8. package/dist/src/lib/batchTransactionBuilder.js +21 -12
  9. package/dist/src/lib/claimBuilder.js +4 -6
  10. package/dist/src/lib/iface.d.ts +16 -13
  11. package/dist/src/lib/iface.d.ts.map +1 -1
  12. package/dist/src/lib/iface.js +5 -5
  13. package/dist/src/lib/iface_utils.js +8 -9
  14. package/dist/src/lib/index.js +23 -9
  15. package/dist/src/lib/keyPair.d.ts +7 -0
  16. package/dist/src/lib/keyPair.d.ts.map +1 -1
  17. package/dist/src/lib/keyPair.js +51 -4
  18. package/dist/src/lib/nativeTransferBuilder.js +10 -12
  19. package/dist/src/lib/proxyBuilder.js +6 -8
  20. package/dist/src/lib/singletonRegistry.js +2 -2
  21. package/dist/src/lib/stakingBuilder.js +6 -8
  22. package/dist/src/lib/transaction.d.ts +0 -1
  23. package/dist/src/lib/transaction.d.ts.map +1 -1
  24. package/dist/src/lib/transaction.js +72 -52
  25. package/dist/src/lib/transactionBuilder.d.ts +0 -1
  26. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  27. package/dist/src/lib/transactionBuilder.js +30 -16
  28. package/dist/src/lib/transactionBuilderFactory.js +3 -4
  29. package/dist/src/lib/txnSchema.js +3 -3
  30. package/dist/src/lib/unnominateBuilder.js +4 -6
  31. package/dist/src/lib/unstakeBuilder.js +4 -6
  32. package/dist/src/lib/utils.d.ts +10 -2
  33. package/dist/src/lib/utils.d.ts.map +1 -1
  34. package/dist/src/lib/utils.js +67 -34
  35. package/dist/src/lib/withdrawUnstakedBuilder.js +4 -6
  36. package/dist/src/resources/index.d.ts +2 -0
  37. package/dist/src/resources/index.d.ts.map +1 -1
  38. package/dist/src/resources/index.js +8 -2
  39. package/dist/src/resources/polkadotAssetHub.d.ts +2 -0
  40. package/dist/src/resources/polkadotAssetHub.d.ts.map +1 -0
  41. package/dist/src/resources/polkadotAssetHub.js +5 -0
  42. package/dist/src/resources/westendAssetHub.d.ts +2 -0
  43. package/dist/src/resources/westendAssetHub.d.ts.map +1 -0
  44. package/dist/src/resources/westendAssetHub.js +5 -0
  45. package/dist/src/tdot.js +1 -1
  46. package/dist/test/fixtures.d.ts +283 -0
  47. package/dist/test/fixtures.d.ts.map +1 -0
  48. package/dist/test/fixtures.js +439 -0
  49. package/dist/test/resources/index.d.ts +141 -0
  50. package/dist/test/resources/index.d.ts.map +1 -0
  51. package/dist/test/resources/index.js +157 -0
  52. package/dist/test/resources/materialData.json +8 -0
  53. package/dist/test/resources/materialDataModified.json +8 -0
  54. package/dist/test/resources/testnet.d.ts +2 -0
  55. package/dist/test/resources/testnet.d.ts.map +1 -0
  56. package/dist/test/resources/testnet.js +5 -0
  57. package/dist/test/unit/address.d.ts +2 -0
  58. package/dist/test/unit/address.d.ts.map +1 -0
  59. package/dist/test/unit/address.js +45 -0
  60. package/dist/test/unit/dot.d.ts +2 -0
  61. package/dist/test/unit/dot.d.ts.map +1 -0
  62. package/dist/test/unit/dot.js +690 -0
  63. package/dist/test/unit/keypair.d.ts +2 -0
  64. package/dist/test/unit/keypair.d.ts.map +1 -0
  65. package/dist/test/unit/keypair.js +111 -0
  66. package/dist/test/unit/transaction.d.ts +2 -0
  67. package/dist/test/unit/transaction.d.ts.map +1 -0
  68. package/dist/test/unit/transaction.js +269 -0
  69. package/dist/test/unit/transactionBuilder/addressInitializationBuilder.d.ts +2 -0
  70. package/dist/test/unit/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
  71. package/dist/test/unit/transactionBuilder/addressInitializationBuilder.js +265 -0
  72. package/dist/test/unit/transactionBuilder/base.d.ts +8 -0
  73. package/dist/test/unit/transactionBuilder/base.d.ts.map +1 -0
  74. package/dist/test/unit/transactionBuilder/base.js +233 -0
  75. package/dist/test/unit/transactionBuilder/batchTransactionBuilder.d.ts +2 -0
  76. package/dist/test/unit/transactionBuilder/batchTransactionBuilder.d.ts.map +1 -0
  77. package/dist/test/unit/transactionBuilder/batchTransactionBuilder.js +521 -0
  78. package/dist/test/unit/transactionBuilder/claimBuilder.d.ts +2 -0
  79. package/dist/test/unit/transactionBuilder/claimBuilder.d.ts.map +1 -0
  80. package/dist/test/unit/transactionBuilder/claimBuilder.js +129 -0
  81. package/dist/test/unit/transactionBuilder/proxyBuilder.d.ts +2 -0
  82. package/dist/test/unit/transactionBuilder/proxyBuilder.d.ts.map +1 -0
  83. package/dist/test/unit/transactionBuilder/proxyBuilder.js +88 -0
  84. package/dist/test/unit/transactionBuilder/singeltonRegistry.d.ts +2 -0
  85. package/dist/test/unit/transactionBuilder/singeltonRegistry.d.ts.map +1 -0
  86. package/dist/test/unit/transactionBuilder/singeltonRegistry.js +59 -0
  87. package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts +2 -0
  88. package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts.map +1 -0
  89. package/dist/test/unit/transactionBuilder/stakingBuilder.js +235 -0
  90. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
  91. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
  92. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +107 -0
  93. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  94. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  95. package/dist/test/unit/transactionBuilder/transferBuilder.js +437 -0
  96. package/dist/test/unit/transactionBuilder/unnominateBuilder.d.ts +2 -0
  97. package/dist/test/unit/transactionBuilder/unnominateBuilder.d.ts.map +1 -0
  98. package/dist/test/unit/transactionBuilder/unnominateBuilder.js +97 -0
  99. package/dist/test/unit/transactionBuilder/unstakeBuilder.d.ts +2 -0
  100. package/dist/test/unit/transactionBuilder/unstakeBuilder.d.ts.map +1 -0
  101. package/dist/test/unit/transactionBuilder/unstakeBuilder.js +116 -0
  102. package/dist/test/unit/transactionBuilder/withdrawUnstakedBuilder.d.ts +2 -0
  103. package/dist/test/unit/transactionBuilder/withdrawUnstakedBuilder.d.ts.map +1 -0
  104. package/dist/test/unit/transactionBuilder/withdrawUnstakedBuilder.js +115 -0
  105. package/dist/test/unit/utils.d.ts +2 -0
  106. package/dist/test/unit/utils.d.ts.map +1 -0
  107. package/dist/test/unit/utils.js +117 -0
  108. package/dist/tsconfig.tsbuildinfo +1 -0
  109. package/package.json +20 -16
  110. package/.eslintignore +0 -5
  111. package/.mocharc.yml +0 -8
  112. package/CHANGELOG.md +0 -400
@@ -0,0 +1,97 @@
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 base_1 = require("./base");
10
+ describe('Dot Unnominate Builder', () => {
11
+ let builder;
12
+ const sender = resources_1.accounts.account1;
13
+ const refBlock = '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d';
14
+ beforeEach(() => {
15
+ builder = new lib_1.UnnominateBuilder((0, base_1.buildTestConfig)());
16
+ });
17
+ describe('build unnominate transaction', () => {
18
+ it('should build a unnominate transaction', async () => {
19
+ builder
20
+ .sender({ address: sender.address })
21
+ .validity({ firstValid: 3933, maxDuration: 64 })
22
+ .referenceBlock(refBlock)
23
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
24
+ .fee({ amount: 0, type: 'tip' });
25
+ builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
26
+ const tx = await builder.build();
27
+ const txJson = tx.toJson();
28
+ should_1.default.deepEqual(txJson.sender, sender.address);
29
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
30
+ should_1.default.deepEqual(txJson.referenceBlock, refBlock);
31
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
32
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
33
+ should_1.default.deepEqual(txJson.nonce, 200);
34
+ should_1.default.deepEqual(txJson.tip, 0);
35
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
36
+ should_1.default.deepEqual(txJson.chainName, 'Westend Asset Hub');
37
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
38
+ });
39
+ it('should build an unsigned unnominate transaction', async () => {
40
+ builder
41
+ .sender({ address: sender.address })
42
+ .validity({ firstValid: 3933, maxDuration: 64 })
43
+ .referenceBlock(refBlock)
44
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
45
+ .fee({ amount: 0, type: 'tip' });
46
+ const tx = await builder.build();
47
+ const txJson = tx.toJson();
48
+ should_1.default.deepEqual(txJson.sender, sender.address);
49
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
50
+ should_1.default.deepEqual(txJson.referenceBlock, refBlock);
51
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
52
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
53
+ should_1.default.deepEqual(txJson.nonce, 200);
54
+ should_1.default.deepEqual(txJson.tip, 0);
55
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
56
+ should_1.default.deepEqual(txJson.chainName, 'Westend Asset Hub');
57
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
58
+ });
59
+ it('should build from raw signed tx', async () => {
60
+ builder.from(resources_1.rawTx.unnominate.signed);
61
+ builder.validity({ firstValid: 3933 }).referenceBlock(refBlock);
62
+ const tx = await builder.build();
63
+ const txJson = tx.toJson();
64
+ should_1.default.deepEqual(txJson.sender, sender.address);
65
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
66
+ should_1.default.deepEqual(txJson.referenceBlock, refBlock);
67
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
68
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
69
+ should_1.default.deepEqual(txJson.nonce, 200);
70
+ should_1.default.deepEqual(txJson.tip, 0);
71
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
72
+ should_1.default.deepEqual(txJson.chainName, 'Westend Asset Hub');
73
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
74
+ });
75
+ it('should build from raw unsigned tx', async () => {
76
+ builder.from(resources_1.rawTx.unnominate.unsigned);
77
+ builder
78
+ .validity({ firstValid: 3933 })
79
+ .referenceBlock(refBlock)
80
+ .sender({ address: sender.address })
81
+ .addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
82
+ const tx = await builder.build();
83
+ const txJson = tx.toJson();
84
+ should_1.default.deepEqual(txJson.sender, sender.address);
85
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
86
+ should_1.default.deepEqual(txJson.referenceBlock, refBlock);
87
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
88
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
89
+ should_1.default.deepEqual(txJson.nonce, 200);
90
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
91
+ should_1.default.deepEqual(txJson.tip, 0);
92
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
93
+ should_1.default.deepEqual(txJson.chainName, 'Westend Asset Hub');
94
+ });
95
+ });
96
+ });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5ub21pbmF0ZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3Vubm9taW5hdGVCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDBDQUFxRDtBQUNyRCwrQ0FBeUc7QUFDekcsaUNBQXlDO0FBRXpDLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7SUFDdEMsSUFBSSxPQUEwQixDQUFDO0lBQy9CLE1BQU0sTUFBTSxHQUFHLG9CQUFRLENBQUMsUUFBUSxDQUFDO0lBQ2pDLE1BQU0sUUFBUSxHQUFHLG9FQUFvRSxDQUFDO0lBRXRGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLEdBQUcsSUFBSSx1QkFBaUIsQ0FBQyxJQUFBLHNCQUFlLEdBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtRQUM1QyxFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDckQsT0FBTztpQkFDSixNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUNuQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLFFBQVEsQ0FBQztpQkFDeEIsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztpQkFDM0QsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNuQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0s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QUNsRCxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLHVCQUFXLENBQUMsQ0FBQztZQUNsRCxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoQyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUscUJBQVMsQ0FBQyxDQUFDO1lBQ3ZELGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBVbm5vbWluYXRlQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgYWNjb3VudHMsIHJhd1R4LCBnZW5lc2lzSGFzaCwgc3BlY1ZlcnNpb24sIHR4VmVyc2lvbiwgbW9ja1Rzc1NpZ25hdHVyZSB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBidWlsZFRlc3RDb25maWcgfSBmcm9tICcuL2Jhc2UnO1xuXG5kZXNjcmliZSgnRG90IFVubm9taW5hdGUgQnVpbGRlcicsICgpID0+IHtcbiAgbGV0IGJ1aWxkZXI6IFVubm9taW5hdGVCdWlsZGVyO1xuICBjb25zdCBzZW5kZXIgPSBhY2NvdW50cy5hY2NvdW50MTtcbiAgY29uc3QgcmVmQmxvY2sgPSAnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBidWlsZGVyID0gbmV3IFVubm9taW5hdGVCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkIHVubm9taW5hdGUgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIHVubm9taW5hdGUgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZkJsb2NrKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAyMDAgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1Yjogc2VuZGVyLnB1YmxpY0tleSB9LCBCdWZmZXIuZnJvbShtb2NrVHNzU2lnbmF0dXJlLCAnaGV4JykpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNlbmRlciwgc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYmxvY2tOdW1iZXIsIDM5MzMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucmVmZXJlbmNlQmxvY2ssIHJlZkJsb2NrKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIDIwMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0eFZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uY2hhaW5OYW1lLCAnV2VzdGVuZCBBc3NldCBIdWInKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmVyYVBlcmlvZCwgNjQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhbiB1bnNpZ25lZCB1bm5vbWluYXRlIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jayhyZWZCbG9jaylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMjAwIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNlbmRlciwgc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYmxvY2tOdW1iZXIsIDM5MzMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucmVmZXJlbmNlQmxvY2ssIHJlZkJsb2NrKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIDIwMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0eFZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uY2hhaW5OYW1lLCAnV2VzdGVuZCBBc3NldCBIdWInKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmVyYVBlcmlvZCwgNjQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBmcm9tIHJhdyBzaWduZWQgdHgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBidWlsZGVyLmZyb20ocmF3VHgudW5ub21pbmF0ZS5zaWduZWQpO1xuICAgICAgYnVpbGRlci52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMgfSkucmVmZXJlbmNlQmxvY2socmVmQmxvY2spO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNlbmRlciwgc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYmxvY2tOdW1iZXIsIDM5MzMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucmVmZXJlbmNlQmxvY2ssIHJlZkJsb2NrKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIDIwMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0eFZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uY2hhaW5OYW1lLCAnV2VzdGVuZCBBc3NldCBIdWInKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmVyYVBlcmlvZCwgNjQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBmcm9tIHJhdyB1bnNpZ25lZCB0eCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXIuZnJvbShyYXdUeC51bm5vbWluYXRlLnVuc2lnbmVkKTtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMyB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2socmVmQmxvY2spXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAuYWRkU2lnbmF0dXJlKHsgcHViOiBzZW5kZXIucHVibGljS2V5IH0sIEJ1ZmZlci5mcm9tKG1vY2tUc3NTaWduYXR1cmUsICdoZXgnKSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc2VuZGVyLCBzZW5kZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ibG9ja051bWJlciwgMzkzMyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5yZWZlcmVuY2VCbG9jaywgcmVmQmxvY2spO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZ2VuZXNpc0hhc2gsIGdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBzcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMjAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmVyYVBlcmlvZCwgNjQpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udGlwLCAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRyYW5zYWN0aW9uVmVyc2lvbiwgdHhWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmNoYWluTmFtZSwgJ1dlc3RlbmQgQXNzZXQgSHViJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=unstakeBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unstakeBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/unstakeBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,116 @@
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 assert_1 = __importDefault(require("assert"));
7
+ const should_1 = __importDefault(require("should"));
8
+ const sinon_1 = require("sinon");
9
+ const lib_1 = require("../../../src/lib");
10
+ const utils_1 = __importDefault(require("../../../src/lib/utils"));
11
+ const resources_1 = require("../../resources");
12
+ const base_1 = require("./base");
13
+ describe('Dot Unstake Builder', () => {
14
+ let builder;
15
+ const sender = resources_1.accounts.account1;
16
+ beforeEach(() => {
17
+ const config = (0, base_1.buildTestConfig)();
18
+ builder = new lib_1.UnstakeBuilder(config).material(utils_1.default.getMaterial(config));
19
+ });
20
+ describe('setter validation', () => {
21
+ it('should validate unstake amount', () => {
22
+ const spyValidateValue = (0, sinon_1.spy)(builder, 'validateValue');
23
+ assert_1.default.throws(() => builder.amount('-1'), (e) => e.message === 'Value cannot be less than zero');
24
+ should_1.default.doesNotThrow(() => builder.amount('1000'));
25
+ sinon_1.assert.calledTwice(spyValidateValue);
26
+ });
27
+ });
28
+ describe('build unstake transaction', () => {
29
+ it('should build a unstake transaction', async () => {
30
+ builder
31
+ .amount('50000000000000')
32
+ .sender({ address: sender.address })
33
+ .validity({ firstValid: 3933, maxDuration: 64 })
34
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
35
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
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.amount, '50000000000000');
41
+ should_1.default.deepEqual(txJson.sender, sender.address);
42
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
43
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
44
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
45
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
46
+ should_1.default.deepEqual(txJson.nonce, 200);
47
+ should_1.default.deepEqual(txJson.tip, 0);
48
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
49
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
50
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
51
+ });
52
+ it('should build an unsigned unstake transaction', async () => {
53
+ builder
54
+ .amount('50000000000000')
55
+ .sender({ address: sender.address })
56
+ .validity({ firstValid: 3933, maxDuration: 64 })
57
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
58
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
59
+ .fee({ amount: 0, type: 'tip' });
60
+ const tx = await builder.build();
61
+ const txJson = tx.toJson();
62
+ should_1.default.deepEqual(txJson.amount, '50000000000000');
63
+ should_1.default.deepEqual(txJson.sender, sender.address);
64
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
65
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
66
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
67
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
68
+ should_1.default.deepEqual(txJson.nonce, 200);
69
+ should_1.default.deepEqual(txJson.tip, 0);
70
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
71
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
72
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
73
+ });
74
+ it('should build from raw signed tx', async () => {
75
+ builder.from(resources_1.rawTx.unstake.signed);
76
+ builder
77
+ .validity({ firstValid: 3933 })
78
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
79
+ const tx = await builder.build();
80
+ const txJson = tx.toJson();
81
+ should_1.default.deepEqual(txJson.amount, '50000000000000');
82
+ should_1.default.deepEqual(txJson.sender, sender.address);
83
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
84
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
85
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
86
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
87
+ should_1.default.deepEqual(txJson.nonce, 200);
88
+ should_1.default.deepEqual(txJson.tip, 0);
89
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
90
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
91
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
92
+ });
93
+ it('should build from raw unsigned tx', async () => {
94
+ builder.from(resources_1.rawTx.unstake.unsigned);
95
+ builder
96
+ .validity({ firstValid: 3933 })
97
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
98
+ .sender({ address: sender.address })
99
+ .addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
100
+ const tx = await builder.build();
101
+ const txJson = tx.toJson();
102
+ should_1.default.deepEqual(txJson.amount, '50000000000000');
103
+ should_1.default.deepEqual(txJson.sender, sender.address);
104
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
105
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
106
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
107
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
108
+ should_1.default.deepEqual(txJson.nonce, 200);
109
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
110
+ should_1.default.deepEqual(txJson.tip, 0);
111
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
112
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
113
+ });
114
+ });
115
+ });
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zdGFrZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3Vuc3Rha2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUM1QixpQ0FBbUQ7QUFDbkQsMENBQWtEO0FBQ2xELG1FQUEyQztBQUMzQywrQ0FBb0g7QUFDcEgsaUNBQXlDO0FBRXpDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7SUFDbkMsSUFBSSxPQUF1QixDQUFDO0lBRTVCLE1BQU0sTUFBTSxHQUFHLG9CQUFRLENBQUMsUUFBUSxDQUFDO0lBRWpDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxNQUFNLE1BQU0sR0FBRyxJQUFBLHNCQUFlLEdBQUUsQ0FBQztRQUNqQyxPQUFPLEdBQUcsSUFBSSxvQkFBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQ2pDLEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUU7WUFDeEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLFdBQUcsRUFBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDdkQsZ0JBQU0sQ0FBQyxNQUFNLENBQ1gsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFDMUIsQ0FBQyxDQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssZ0NBQWdDLENBQzdELENBQUM7WUFDRixnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbEQs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dUJBQVcsQ0FBQyxDQUFDO1lBQ2xELGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDcEMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxxQkFBUyxDQUFDLENBQUM7WUFDdkQsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxxQkFBUyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgc3B5LCBhc3NlcnQgYXMgU2lub25Bc3NlcnQgfSBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBVbnN0YWtlQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uLy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0IHsgcmF3VHgsIGFjY291bnRzLCBzcGVjVmVyc2lvbiwgdHhWZXJzaW9uLCBjaGFpbk5hbWUsIGdlbmVzaXNIYXNoLCBtb2NrVHNzU2lnbmF0dXJlIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IGJ1aWxkVGVzdENvbmZpZyB9IGZyb20gJy4vYmFzZSc7XG5cbmRlc2NyaWJlKCdEb3QgVW5zdGFrZSBCdWlsZGVyJywgKCkgPT4ge1xuICBsZXQgYnVpbGRlcjogVW5zdGFrZUJ1aWxkZXI7XG5cbiAgY29uc3Qgc2VuZGVyID0gYWNjb3VudHMuYWNjb3VudDE7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gYnVpbGRUZXN0Q29uZmlnKCk7XG4gICAgYnVpbGRlciA9IG5ldyBVbnN0YWtlQnVpbGRlcihjb25maWcpLm1hdGVyaWFsKHV0aWxzLmdldE1hdGVyaWFsKGNvbmZpZykpO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2V0dGVyIHZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB1bnN0YWtlIGFtb3VudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHNweVZhbGlkYXRlVmFsdWUgPSBzcHkoYnVpbGRlciwgJ3ZhbGlkYXRlVmFsdWUnKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IGJ1aWxkZXIuYW1vdW50KCctMScpLFxuICAgICAgICAoZTogRXJyb3IpID0+IGUubWVzc2FnZSA9PT0gJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybydcbiAgICAgICk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIuYW1vdW50KCcxMDAwJykpO1xuICAgICAgU2lub25Bc3NlcnQuY2FsbGVkVHdpY2Uoc3B5VmFsaWRhdGVWYWx1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdidWlsZCB1bnN0YWtlIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYnVpbGQgYSB1bnN0YWtlIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KCc1MDAwMDAwMDAwMDAwMCcpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAyMDAgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1Yjogc2VuZGVyLnB1YmxpY0tleSB9LCBCdWZmZXIuZnJvbShtb2NrVHNzU2lnbmF0dXJlLCAnaGV4JykpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFtb3VudCwgJzUwMDAwMDAwMDAwMDAwJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zZW5kZXIsIHNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmJsb2NrTnVtYmVyLCAzOTMzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnJlZmVyZW5jZUJsb2NrLCAnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5nZW5lc2lzSGFzaCwgZ2VuZXNpc0hhc2gpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc3BlY1ZlcnNpb24sIHNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLm5vbmNlLCAyMDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udGlwLCAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRyYW5zYWN0aW9uVmVyc2lvbiwgdHhWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmNoYWluTmFtZSwgY2hhaW5OYW1lKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmVyYVBlcmlvZCwgNjQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhbiB1bnNpZ25lZCB1bnN0YWtlIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KCc1MDAwMDAwMDAwMDAwMCcpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAyMDAgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYW1vdW50LCAnNTAwMDAwMDAwMDAwMDAnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNlbmRlciwgc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYmxvY2tOdW1iZXIsIDM5MzMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucmVmZXJlbmNlQmxvY2ssICcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIDIwMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0eFZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uY2hhaW5OYW1lLCBjaGFpbk5hbWUpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCA2NCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGZyb20gcmF3IHNpZ25lZCB0eCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXIuZnJvbShyYXdUeC51bnN0YWtlLnNpZ25lZCk7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5hbW91bnQsICc1MDAwMDAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc2VuZGVyLCBzZW5kZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ibG9ja051bWJlciwgMzkzMyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5yZWZlcmVuY2VCbG9jaywgJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZ2VuZXNpc0hhc2gsIGdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBzcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMjAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRpcCwgMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIHR4VmVyc2lvbik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5jaGFpbk5hbWUsIGNoYWluTmFtZSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5lcmFQZXJpb2QsIDY0KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgZnJvbSByYXcgdW5zaWduZWQgdHgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBidWlsZGVyLmZyb20ocmF3VHgudW5zdGFrZS51bnNpZ25lZCk7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLmFkZFNpZ25hdHVyZSh7IHB1Yjogc2VuZGVyLnB1YmxpY0tleSB9LCBCdWZmZXIuZnJvbShtb2NrVHNzU2lnbmF0dXJlLCAnaGV4JykpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFtb3VudCwgJzUwMDAwMDAwMDAwMDAwJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zZW5kZXIsIHNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmJsb2NrTnVtYmVyLCAzOTMzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnJlZmVyZW5jZUJsb2NrLCAnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5nZW5lc2lzSGFzaCwgZ2VuZXNpc0hhc2gpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc3BlY1ZlcnNpb24sIHNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLm5vbmNlLCAyMDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCA2NCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0eFZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uY2hhaW5OYW1lLCBjaGFpbk5hbWUpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=withdrawUnstakedBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withdrawUnstakedBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/withdrawUnstakedBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,115 @@
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 assert_1 = __importDefault(require("assert"));
7
+ const should_1 = __importDefault(require("should"));
8
+ const sinon_1 = require("sinon");
9
+ const lib_1 = require("../../../src/lib");
10
+ const utils_1 = __importDefault(require("../../../src/lib/utils"));
11
+ const resources_1 = require("../../resources");
12
+ const base_1 = require("./base");
13
+ describe('Dot WithdrawUnstaked Builder', () => {
14
+ let builder;
15
+ const sender = resources_1.accounts.account1;
16
+ const refBlock = '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d';
17
+ beforeEach(() => {
18
+ const config = (0, base_1.buildTestConfig)();
19
+ builder = new lib_1.WithdrawUnstakedBuilder(config).material(utils_1.default.getMaterial(config));
20
+ });
21
+ describe('setter validation', () => {
22
+ it('should validate slashing spans', () => {
23
+ const spyValidateValue = (0, sinon_1.spy)(builder, 'validateValue');
24
+ assert_1.default.throws(() => builder.slashingSpans(-1), (e) => e.message === 'Value cannot be less than zero');
25
+ should_1.default.doesNotThrow(() => builder.slashingSpans(10));
26
+ sinon_1.assert.calledTwice(spyValidateValue);
27
+ });
28
+ });
29
+ describe('build withdrawUnstaked transaction', () => {
30
+ it('should build a withdrawUnstaked transaction', async () => {
31
+ builder
32
+ .slashingSpans(0)
33
+ .sender({ address: sender.address })
34
+ .validity({ firstValid: 3933, maxDuration: 64 })
35
+ .referenceBlock(refBlock)
36
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
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.numSlashingSpans, '0');
42
+ should_1.default.deepEqual(txJson.sender, sender.address);
43
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
44
+ should_1.default.deepEqual(txJson.referenceBlock, refBlock);
45
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
46
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
47
+ should_1.default.deepEqual(txJson.nonce, 200);
48
+ should_1.default.deepEqual(txJson.tip, 0);
49
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
50
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
51
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
52
+ });
53
+ it('should build an unsigned withdrawUnstaked transaction', async () => {
54
+ builder
55
+ .slashingSpans(0)
56
+ .sender({ address: sender.address })
57
+ .validity({ firstValid: 3933, maxDuration: 64 })
58
+ .referenceBlock(refBlock)
59
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
60
+ .fee({ amount: 0, type: 'tip' });
61
+ const tx = await builder.build();
62
+ const txJson = tx.toJson();
63
+ should_1.default.deepEqual(txJson.numSlashingSpans, '0');
64
+ should_1.default.deepEqual(txJson.sender, sender.address);
65
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
66
+ should_1.default.deepEqual(txJson.referenceBlock, refBlock);
67
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
68
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
69
+ should_1.default.deepEqual(txJson.nonce, 200);
70
+ should_1.default.deepEqual(txJson.tip, 0);
71
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
72
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
73
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
74
+ });
75
+ it('should build from raw signed tx', async () => {
76
+ builder.from(resources_1.rawTx.withdrawUnbonded.signed);
77
+ builder.validity({ firstValid: 3933 }).referenceBlock(refBlock);
78
+ const tx = await builder.build();
79
+ const txJson = tx.toJson();
80
+ should_1.default.deepEqual(txJson.numSlashingSpans, '0');
81
+ should_1.default.deepEqual(txJson.sender, sender.address);
82
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
83
+ should_1.default.deepEqual(txJson.referenceBlock, refBlock);
84
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
85
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
86
+ should_1.default.deepEqual(txJson.nonce, 200);
87
+ should_1.default.deepEqual(txJson.tip, 0);
88
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
89
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
90
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
91
+ });
92
+ it('should build from raw unsigned tx', async () => {
93
+ builder.from(resources_1.rawTx.withdrawUnbonded.unsigned);
94
+ builder
95
+ .validity({ firstValid: 3933 })
96
+ .referenceBlock(refBlock)
97
+ .sender({ address: sender.address })
98
+ .addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
99
+ const tx = await builder.build();
100
+ const txJson = tx.toJson();
101
+ should_1.default.deepEqual(txJson.numSlashingSpans, '0');
102
+ should_1.default.deepEqual(txJson.sender, sender.address);
103
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
104
+ should_1.default.deepEqual(txJson.referenceBlock, refBlock);
105
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
106
+ should_1.default.deepEqual(txJson.specVersion, resources_1.specVersion);
107
+ should_1.default.deepEqual(txJson.nonce, 200);
108
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
109
+ should_1.default.deepEqual(txJson.tip, 0);
110
+ should_1.default.deepEqual(txJson.transactionVersion, resources_1.txVersion);
111
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
112
+ });
113
+ });
114
+ });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aGRyYXdVbnN0YWtlZEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3dpdGhkcmF3VW5zdGFrZWRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUM1QixpQ0FBbUQ7QUFDbkQsMENBQTJEO0FBQzNELG1FQUEyQztBQUMzQywrQ0FBb0g7QUFDcEgsaUNBQXlDO0FBRXpDLFFBQVEsQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLEVBQUU7SUFDNUMsSUFBSSxPQUFnQyxDQUFDO0lBRXJDLE1BQU0sTUFBTSxHQUFHLG9CQUFRLENBQUMsUUFBUSxDQUFDO0lBQ2pDLE1BQU0sUUFBUSxHQUFHLG9FQUFvRSxDQUFDO0lBRXRGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxNQUFNLE1BQU0sR0FBRyxJQUFBLHNCQUFlLEdBQUUsQ0FBQztRQUNqQyxPQUFPLEdBQUcsSUFBSSw2QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtRQUNqQyxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFO1lBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSxXQUFHLEVBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3ZELGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDL0IsQ0FBQyxDQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssZ0NBQWdDLENBQzdELENBQUM7WUFDRixnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFH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QU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSx1QkFBVyxDQUFDLENBQUM7WUFDbEQsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNwQyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLHFCQUFTLENBQUMsQ0FBQztZQUN2RCxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLHFCQUFTLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBhc3NlcnQgYXMgU2lub25Bc3NlcnQsIHNweSB9IGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IFdpdGhkcmF3VW5zdGFrZWRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi91dGlscyc7XG5pbXBvcnQgeyBhY2NvdW50cywgcmF3VHgsIHNwZWNWZXJzaW9uLCB0eFZlcnNpb24sIGNoYWluTmFtZSwgZ2VuZXNpc0hhc2gsIG1vY2tUc3NTaWduYXR1cmUgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgYnVpbGRUZXN0Q29uZmlnIH0gZnJvbSAnLi9iYXNlJztcblxuZGVzY3JpYmUoJ0RvdCBXaXRoZHJhd1Vuc3Rha2VkIEJ1aWxkZXInLCAoKSA9PiB7XG4gIGxldCBidWlsZGVyOiBXaXRoZHJhd1Vuc3Rha2VkQnVpbGRlcjtcblxuICBjb25zdCBzZW5kZXIgPSBhY2NvdW50cy5hY2NvdW50MTtcbiAgY29uc3QgcmVmQmxvY2sgPSAnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBidWlsZFRlc3RDb25maWcoKTtcbiAgICBidWlsZGVyID0gbmV3IFdpdGhkcmF3VW5zdGFrZWRCdWlsZGVyKGNvbmZpZykubWF0ZXJpYWwodXRpbHMuZ2V0TWF0ZXJpYWwoY29uZmlnKSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZXR0ZXIgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHNsYXNoaW5nIHNwYW5zJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3B5VmFsaWRhdGVWYWx1ZSA9IHNweShidWlsZGVyLCAndmFsaWRhdGVWYWx1ZScpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gYnVpbGRlci5zbGFzaGluZ1NwYW5zKC0xKSxcbiAgICAgICAgKGU6IEVycm9yKSA9PiBlLm1lc3NhZ2UgPT09ICdWYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8nXG4gICAgICApO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnNsYXNoaW5nU3BhbnMoMTApKTtcbiAgICAgIFNpbm9uQXNzZXJ0LmNhbGxlZFR3aWNlKHNweVZhbGlkYXRlVmFsdWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgd2l0aGRyYXdVbnN0YWtlZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgd2l0aGRyYXdVbnN0YWtlZCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLnNsYXNoaW5nU3BhbnMoMClcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2socmVmQmxvY2spXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDIwMCB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KTtcbiAgICAgIGJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiBzZW5kZXIucHVibGljS2V5IH0sIEJ1ZmZlci5mcm9tKG1vY2tUc3NTaWduYXR1cmUsICdoZXgnKSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubnVtU2xhc2hpbmdTcGFucywgJzAnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNlbmRlciwgc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYmxvY2tOdW1iZXIsIDM5MzMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucmVmZXJlbmNlQmxvY2ssIHJlZkJsb2NrKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIDIwMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0eFZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uY2hhaW5OYW1lLCBjaGFpbk5hbWUpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCA2NCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGFuIHVuc2lnbmVkIHdpdGhkcmF3VW5zdGFrZWQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5zbGFzaGluZ1NwYW5zKDApXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZkJsb2NrKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAyMDAgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubnVtU2xhc2hpbmdTcGFucywgJzAnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNlbmRlciwgc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYmxvY2tOdW1iZXIsIDM5MzMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucmVmZXJlbmNlQmxvY2ssIHJlZkJsb2NrKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIDIwMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0eFZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uY2hhaW5OYW1lLCBjaGFpbk5hbWUpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCA2NCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGZyb20gcmF3IHNpZ25lZCB0eCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXIuZnJvbShyYXdUeC53aXRoZHJhd1VuYm9uZGVkLnNpZ25lZCk7XG4gICAgICBidWlsZGVyLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMyB9KS5yZWZlcmVuY2VCbG9jayhyZWZCbG9jayk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubnVtU2xhc2hpbmdTcGFucywgJzAnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNlbmRlciwgc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYmxvY2tOdW1iZXIsIDM5MzMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucmVmZXJlbmNlQmxvY2ssIHJlZkJsb2NrKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIDIwMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0eFZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uY2hhaW5OYW1lLCBjaGFpbk5hbWUpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCA2NCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGZyb20gcmF3IHVuc2lnbmVkIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlci5mcm9tKHJhd1R4LndpdGhkcmF3VW5ib25kZWQudW5zaWduZWQpO1xuICAgICAgYnVpbGRlclxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzIH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jayhyZWZCbG9jaylcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC5hZGRTaWduYXR1cmUoeyBwdWI6IHNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5udW1TbGFzaGluZ1NwYW5zLCAnMCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc2VuZGVyLCBzZW5kZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ibG9ja051bWJlciwgMzkzMyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5yZWZlcmVuY2VCbG9jaywgcmVmQmxvY2spO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZ2VuZXNpc0hhc2gsIGdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBzcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMjAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmVyYVBlcmlvZCwgNjQpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udGlwLCAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRyYW5zYWN0aW9uVmVyc2lvbiwgdHhWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmNoYWluTmFtZSwgY2hhaW5OYW1lKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/unit/utils.ts"],"names":[],"mappings":""}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
40
+ const should_1 = __importDefault(require("should"));
41
+ const src_1 = require("../../src");
42
+ const utils_1 = __importDefault(require("../../src/lib/utils"));
43
+ const resources_1 = require("../resources");
44
+ const material = __importStar(require("../resources/materialData.json"));
45
+ describe('utils', () => {
46
+ const registry = src_1.SingletonRegistry.getInstance(material);
47
+ it('should validate addresses correctly', () => {
48
+ should_1.default.equal(utils_1.default.isValidAddress(resources_1.accounts.account1.address), true);
49
+ should_1.default.equal(utils_1.default.isValidAddress(resources_1.accounts.account2.address), true);
50
+ should_1.default.equal(utils_1.default.isValidAddress(resources_1.accounts.account3.address), true);
51
+ should_1.default.equal(utils_1.default.isValidAddress(resources_1.accounts.account4.address), true);
52
+ });
53
+ it('should validate block hash correctly', () => {
54
+ should_1.default.equal(utils_1.default.isValidBlockId(resources_1.blockHash.block1), true);
55
+ should_1.default.equal(utils_1.default.isValidBlockId(resources_1.blockHash.block2), true);
56
+ });
57
+ it('should validate invalid block hash correctly', () => {
58
+ should_1.default.equal(utils_1.default.isValidBlockId(''), false);
59
+ should_1.default.equal(utils_1.default.isValidBlockId('0x00'), false);
60
+ should_1.default.equal(utils_1.default.isValidBlockId(resources_1.blockHash.block1.slice(2)), false);
61
+ should_1.default.equal(utils_1.default.isValidBlockId(resources_1.blockHash.block2 + 'ff'), false);
62
+ });
63
+ it('should validate public key correctly', () => {
64
+ should_1.default.equal(utils_1.default.isValidPublicKey(resources_1.accounts.account1.publicKey), true);
65
+ should_1.default.equal(utils_1.default.isValidPublicKey(resources_1.accounts.account2.publicKey), true);
66
+ should_1.default.equal(utils_1.default.isValidPublicKey(resources_1.accounts.account3.publicKey), true);
67
+ should_1.default.equal(utils_1.default.isValidPublicKey(resources_1.accounts.account4.publicKey), true);
68
+ });
69
+ it('should validate base58 key correctly', () => {
70
+ should_1.default.equal(utils_1.default.isValidPublicKey(resources_1.accounts.bs58Account.publicKey), true);
71
+ });
72
+ it('should validate private key correctly', () => {
73
+ should_1.default.equal(utils_1.default.isValidPrivateKey(resources_1.accounts.account1.secretKey), true);
74
+ should_1.default.equal(utils_1.default.isValidPrivateKey(resources_1.accounts.account2.secretKey), true);
75
+ should_1.default.equal(utils_1.default.isValidPrivateKey(resources_1.accounts.account3.secretKey), true);
76
+ should_1.default.equal(utils_1.default.isValidPrivateKey(resources_1.accounts.account4.secretKey), true);
77
+ });
78
+ it('should validate signature correctly', () => {
79
+ should_1.default.equal(utils_1.default.isValidSignature(resources_1.signatures.signature1), true);
80
+ should_1.default.equal(utils_1.default.isValidSignature(resources_1.signatures.signature2), true);
81
+ should_1.default.equal(utils_1.default.isValidSignature(resources_1.signatures.signature3), true);
82
+ });
83
+ it('should validate invalid signature correctly', () => {
84
+ should_1.default.equal(utils_1.default.isValidSignature(''), false);
85
+ should_1.default.equal(utils_1.default.isValidSignature('0x00'), false);
86
+ should_1.default.equal(utils_1.default.isValidSignature(resources_1.signatures.signature1.slice(2)), false);
87
+ should_1.default.equal(utils_1.default.isValidSignature(resources_1.signatures.signature3 + 'ff'), false);
88
+ });
89
+ it('should validate transaction id correctly', () => {
90
+ should_1.default.equal(utils_1.default.isValidTransactionId(resources_1.txIds.id1), true);
91
+ should_1.default.equal(utils_1.default.isValidTransactionId(resources_1.txIds.id2), true);
92
+ });
93
+ it('should validate invalid transaction id correctly', () => {
94
+ should_1.default.equal(utils_1.default.isValidTransactionId(''), false);
95
+ should_1.default.equal(utils_1.default.isValidTransactionId('0x00'), false);
96
+ should_1.default.equal(utils_1.default.isValidTransactionId(resources_1.txIds.id1.slice(2)), false);
97
+ should_1.default.equal(utils_1.default.isValidTransactionId(resources_1.txIds.id1 + 'ff'), false);
98
+ });
99
+ it('should capitalize first letter correctly', () => {
100
+ should_1.default.equal(utils_1.default.capitalizeFirstLetter('polkadot'), 'Polkadot');
101
+ });
102
+ it('should decode DOT address correctly', () => {
103
+ should_1.default.equal(utils_1.default.decodeDotAddress(resources_1.accounts.account1.address, sdk_core_1.DotAddressFormat.substrate), '5EGoFA95omzemRssELLDjVenNZ68aXyUeqtKQScXSEBvVJkr');
104
+ });
105
+ it('should encode DOT address correctly', () => {
106
+ should_1.default.equal(utils_1.default.encodeDotAddress(resources_1.accounts.account1.address, sdk_core_1.DotAddressFormat.substrate), '5EGoFA95omzemRssELLDjVenNZ68aXyUeqtKQScXSEBvVJkr');
107
+ });
108
+ it('should recover signature from raw tx correctly', () => {
109
+ should_1.default.equal(utils_1.default.recoverSignatureFromRawTx(resources_1.rawTx.transfer.signed, { registry: registry }), 'aadae7fa1f53e7a5c900b330ff71bee6782cf3c29a2c6f9599162381cd021ad581c74ded89f49ec79adefed64af8ff16649553523dda9cb4f017cbf15681e50e');
110
+ });
111
+ it('should serialize signed transaction successfully', () => {
112
+ const signature = utils_1.default.recoverSignatureFromRawTx(resources_1.rawTx.transfer.signed, { registry: registry });
113
+ const txHex = utils_1.default.serializeSignedTransaction(resources_1.rawTx.transfer.unsigned, signature.replace(/^/, '0x00'), material.metadata, registry);
114
+ should_1.default.equal(txHex, '0xb5018400000000000000000000000000000000000000000000000000000000000000000000aadae7fa1f53e7a5c900b330ff71bee6782cf3c29a2c6f9599162381cd021ad581c74ded89f49ec79adefed64af8ff16649553523dda9cb4f017cbf15681e50ed5012103000000000000');
115
+ });
116
+ });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBd0Q7QUFFeEQsb0RBQTRCO0FBQzVCLG1DQUE4QztBQUM5QyxnRUFBd0M7QUFDeEMsNENBQTZFO0FBQzdFLHlFQUEyRDtBQUUzRCxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtJQUNyQixNQUFNLFFBQVEsR0FBaUIsdUJBQWlCLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7UUFDN0MsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxvQkFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLG9CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BFLGdCQUFNLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsb0JBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxvQkFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7UUFDOUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxxQkFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FB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QUFLLENBQUMseUJBQXlCLENBQUMsaUJBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQzlFLGtJQUFrSSxDQUNuSSxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0RBQWtELEVBQUUsR0FBRyxFQUFFO1FBQzFELE1BQU0sU0FBUyxHQUFHLGVBQUssQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNqRyxNQUFNLEtBQUssR0FBRyxlQUFLLENBQUMsMEJBQTBCLENBQzVDLGlCQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFDdkIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEVBQzlCLFFBQVEsQ0FBQyxRQUF5QixFQUNsQyxRQUFRLENBQ1QsQ0FBQztRQUNGLGdCQUFNLENBQUMsS0FBSyxDQUNWLEtBQUssRUFDTCxrT0FBa08sQ0FDbk8sQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEb3RBZGRyZXNzRm9ybWF0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHlwZVJlZ2lzdHJ5IH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZS9saWIvdHlwZXMnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgU2luZ2xldG9uUmVnaXN0cnkgfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0IHsgYWNjb3VudHMsIGJsb2NrSGFzaCwgc2lnbmF0dXJlcywgdHhJZHMsIHJhd1R4IH0gZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCAqIGFzIG1hdGVyaWFsIGZyb20gJy4uL3Jlc291cmNlcy9tYXRlcmlhbERhdGEuanNvbic7XG5cbmRlc2NyaWJlKCd1dGlscycsICgpID0+IHtcbiAgY29uc3QgcmVnaXN0cnk6IFR5cGVSZWdpc3RyeSA9IFNpbmdsZXRvblJlZ2lzdHJ5LmdldEluc3RhbmNlKG1hdGVyaWFsKTtcbiAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhZGRyZXNzZXMgY29ycmVjdGx5JywgKCkgPT4ge1xuICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQWRkcmVzcyhhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzKSwgdHJ1ZSk7XG4gICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRBZGRyZXNzKGFjY291bnRzLmFjY291bnQyLmFkZHJlc3MpLCB0cnVlKTtcbiAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZEFkZHJlc3MoYWNjb3VudHMuYWNjb3VudDMuYWRkcmVzcyksIHRydWUpO1xuICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQWRkcmVzcyhhY2NvdW50cy5hY2NvdW50NC5hZGRyZXNzKSwgdHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgYmxvY2sgaGFzaCBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRCbG9ja0lkKGJsb2NrSGFzaC5ibG9jazEpLCB0cnVlKTtcbiAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZEJsb2NrSWQoYmxvY2tIYXNoLmJsb2NrMiksIHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHZhbGlkYXRlIGludmFsaWQgYmxvY2sgaGFzaCBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRCbG9ja0lkKCcnKSwgZmFsc2UpO1xuICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQmxvY2tJZCgnMHgwMCcpLCBmYWxzZSk7XG5cbiAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZEJsb2NrSWQoYmxvY2tIYXNoLmJsb2NrMS5zbGljZSgyKSksIGZhbHNlKTtcbiAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZEJsb2NrSWQoYmxvY2tIYXNoLmJsb2NrMiArICdmZicpLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgcHVibGljIGtleSBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkoYWNjb3VudHMuYWNjb3VudDEucHVibGljS2V5KSwgdHJ1ZSk7XG4gICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkoYWNjb3VudHMuYWNjb3VudDIucHVibGljS2V5KSwgdHJ1ZSk7XG4gICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkoYWNjb3VudHMuYWNjb3VudDMucHVibGljS2V5KSwgdHJ1ZSk7XG4gICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkoYWNjb3VudHMuYWNjb3VudDQucHVibGljS2V5KSwgdHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgYmFzZTU4IGtleSBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkoYWNjb3VudHMuYnM1OEFjY291bnQucHVibGljS2V5KSwgdHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgcHJpdmF0ZSBrZXkgY29ycmVjdGx5JywgKCkgPT4ge1xuICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkUHJpdmF0ZUtleShhY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkpLCB0cnVlKTtcbiAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZFByaXZhdGVLZXkoYWNjb3VudHMuYWNjb3VudDIuc2VjcmV0S2V5KSwgdHJ1ZSk7XG4gICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRQcml2YXRlS2V5KGFjY291bnRzLmFjY291bnQzLnNlY3JldEtleSksIHRydWUpO1xuICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkUHJpdmF0ZUtleShhY2NvdW50cy5hY2NvdW50NC5zZWNyZXRLZXkpLCB0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBzaWduYXR1cmUgY29ycmVjdGx5JywgKCkgPT4ge1xuICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZXMuc2lnbmF0dXJlMSksIHRydWUpO1xuICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZXMuc2lnbmF0dXJlMiksIHRydWUpO1xuICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZXMuc2lnbmF0dXJlMyksIHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHZhbGlkYXRlIGludmFsaWQgc2lnbmF0dXJlIGNvcnJlY3RseScsICgpID0+IHtcbiAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZFNpZ25hdHVyZSgnJyksIGZhbHNlKTtcbiAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZFNpZ25hdHVyZSgnMHgwMCcpLCBmYWxzZSk7XG5cbiAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmVzLnNpZ25hdHVyZTEuc2xpY2UoMikpLCBmYWxzZSk7XG4gICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlcy5zaWduYXR1cmUzICsgJ2ZmJyksIGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB0cmFuc2FjdGlvbiBpZCBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWRzLmlkMSksIHRydWUpO1xuICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkcy5pZDIpLCB0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBpbnZhbGlkIHRyYW5zYWN0aW9uIGlkIGNvcnJlY3RseScsICgpID0+IHtcbiAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZFRyYW5zYWN0aW9uSWQoJycpLCBmYWxzZSk7XG4gICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRUcmFuc2FjdGlvbklkKCcweDAwJyksIGZhbHNlKTtcblxuICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkcy5pZDEuc2xpY2UoMikpLCBmYWxzZSk7XG4gICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWRzLmlkMSArICdmZicpLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2FwaXRhbGl6ZSBmaXJzdCBsZXR0ZXIgY29ycmVjdGx5JywgKCkgPT4ge1xuICAgIHNob3VsZC5lcXVhbCh1dGlscy5jYXBpdGFsaXplRmlyc3RMZXR0ZXIoJ3BvbGthZG90JyksICdQb2xrYWRvdCcpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGRlY29kZSBET1QgYWRkcmVzcyBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgc2hvdWxkLmVxdWFsKFxuICAgICAgdXRpbHMuZGVjb2RlRG90QWRkcmVzcyhhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLCBEb3RBZGRyZXNzRm9ybWF0LnN1YnN0cmF0ZSksXG4gICAgICAnNUVHb0ZBOTVvbXplbVJzc0VMTERqVmVuTlo2OGFYeVVlcXRLUVNjWFNFQnZWSmtyJ1xuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZW5jb2RlIERPVCBhZGRyZXNzIGNvcnJlY3RseScsICgpID0+IHtcbiAgICBzaG91bGQuZXF1YWwoXG4gICAgICB1dGlscy5lbmNvZGVEb3RBZGRyZXNzKGFjY291bnRzLmFjY291bnQxLmFkZHJlc3MsIERvdEFkZHJlc3NGb3JtYXQuc3Vic3RyYXRlKSxcbiAgICAgICc1RUdvRkE5NW9temVtUnNzRUxMRGpWZW5OWjY4YVh5VWVxdEtRU2NYU0VCdlZKa3InXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWNvdmVyIHNpZ25hdHVyZSBmcm9tIHJhdyB0eCBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgc2hvdWxkLmVxdWFsKFxuICAgICAgdXRpbHMucmVjb3ZlclNpZ25hdHVyZUZyb21SYXdUeChyYXdUeC50cmFuc2Zlci5zaWduZWQsIHsgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pLFxuICAgICAgJ2FhZGFlN2ZhMWY1M2U3YTVjOTAwYjMzMGZmNzFiZWU2NzgyY2YzYzI5YTJjNmY5NTk5MTYyMzgxY2QwMjFhZDU4MWM3NGRlZDg5ZjQ5ZWM3OWFkZWZlZDY0YWY4ZmYxNjY0OTU1MzUyM2RkYTljYjRmMDE3Y2JmMTU2ODFlNTBlJ1xuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc2VyaWFsaXplIHNpZ25lZCB0cmFuc2FjdGlvbiBzdWNjZXNzZnVsbHknLCAoKSA9PiB7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdXRpbHMucmVjb3ZlclNpZ25hdHVyZUZyb21SYXdUeChyYXdUeC50cmFuc2Zlci5zaWduZWQsIHsgcmVnaXN0cnk6IHJlZ2lzdHJ5IH0pO1xuICAgIGNvbnN0IHR4SGV4ID0gdXRpbHMuc2VyaWFsaXplU2lnbmVkVHJhbnNhY3Rpb24oXG4gICAgICByYXdUeC50cmFuc2Zlci51bnNpZ25lZCxcbiAgICAgIHNpZ25hdHVyZS5yZXBsYWNlKC9eLywgJzB4MDAnKSxcbiAgICAgIG1hdGVyaWFsLm1ldGFkYXRhIGFzIGAweCR7c3RyaW5nfWAsXG4gICAgICByZWdpc3RyeVxuICAgICk7XG4gICAgc2hvdWxkLmVxdWFsKFxuICAgICAgdHhIZXgsXG4gICAgICAnMHhiNTAxODQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGFhZGFlN2ZhMWY1M2U3YTVjOTAwYjMzMGZmNzFiZWU2NzgyY2YzYzI5YTJjNmY5NTk5MTYyMzgxY2QwMjFhZDU4MWM3NGRlZDg5ZjQ5ZWM3OWFkZWZlZDY0YWY4ZmYxNjY0OTU1MzUyM2RkYTljYjRmMDE3Y2JmMTU2ODFlNTBlZDUwMTIxMDMwMDAwMDAwMDAwMDAnXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==