@bitgo/sdk-coin-polyx 1.10.2 → 1.10.4

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 (64) hide show
  1. package/dist/test/integration/index.d.ts +1 -0
  2. package/dist/test/integration/index.d.ts.map +1 -0
  3. package/dist/test/integration/index.js +1 -0
  4. package/dist/test/resources/index.d.ts +102 -0
  5. package/dist/test/resources/index.d.ts.map +1 -0
  6. package/dist/test/resources/index.js +108 -0
  7. package/dist/test/resources/mainnet.d.ts +2 -0
  8. package/dist/test/resources/mainnet.d.ts.map +1 -0
  9. package/dist/test/resources/mainnet.js +5 -0
  10. package/dist/test/resources/materialData.json +8 -0
  11. package/dist/test/resources/materialDataModified.json +8 -0
  12. package/dist/test/resources/testnet.d.ts +2 -0
  13. package/dist/test/resources/testnet.d.ts.map +1 -0
  14. package/dist/test/resources/testnet.js +5 -0
  15. package/dist/test/resources/wrwUsers.d.ts +19 -0
  16. package/dist/test/resources/wrwUsers.d.ts.map +1 -0
  17. package/dist/test/resources/wrwUsers.js +60 -0
  18. package/dist/test/unit/polyx.d.ts +2 -0
  19. package/dist/test/unit/polyx.d.ts.map +1 -0
  20. package/dist/test/unit/polyx.js +209 -0
  21. package/dist/test/unit/transactionBuilder/base.d.ts +4 -0
  22. package/dist/test/unit/transactionBuilder/base.d.ts.map +1 -0
  23. package/dist/test/unit/transactionBuilder/base.js +245 -0
  24. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts +2 -0
  25. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts.map +1 -0
  26. package/dist/test/unit/transactionBuilder/batchStakingBuilder.js +263 -0
  27. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts +2 -0
  28. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts.map +1 -0
  29. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.js +159 -0
  30. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts +2 -0
  31. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts.map +1 -0
  32. package/dist/test/unit/transactionBuilder/bondExtraBuilder.js +158 -0
  33. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts +2 -0
  34. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts.map +1 -0
  35. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.js +115 -0
  36. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts +2 -0
  37. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts.map +1 -0
  38. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.js +302 -0
  39. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts +2 -0
  40. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts.map +1 -0
  41. package/dist/test/unit/transactionBuilder/singletonRegistry.js +59 -0
  42. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  43. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  44. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +140 -0
  45. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
  46. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
  47. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +74 -0
  48. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  49. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  50. package/dist/test/unit/transactionBuilder/transferBuilder.js +326 -0
  51. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts +2 -0
  52. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts.map +1 -0
  53. package/dist/test/unit/transactionBuilder/unbondBuilder.js +144 -0
  54. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts +2 -0
  55. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts.map +1 -0
  56. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.js +138 -0
  57. package/dist/test/unit/utils.d.ts +2 -0
  58. package/dist/test/unit/utils.d.ts.map +1 -0
  59. package/dist/test/unit/utils.js +143 -0
  60. package/dist/tsconfig.tsbuildinfo +1 -0
  61. package/package.json +12 -9
  62. package/.eslintignore +0 -4
  63. package/.mocharc.yml +0 -8
  64. package/CHANGELOG.md +0 -174
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
7
+ const statics_1 = require("@bitgo/statics");
8
+ const should_1 = __importDefault(require("should"));
9
+ const sinon_1 = __importDefault(require("sinon"));
10
+ const lib_1 = require("../../../src/lib");
11
+ const sdk_core_1 = require("@bitgo/sdk-core");
12
+ const utils_1 = __importDefault(require("../../../src/lib/utils"));
13
+ const resources_1 = require("../../resources");
14
+ function createMockTransaction(txData) {
15
+ return {
16
+ id: '123',
17
+ type: sdk_core_1.TransactionType.StakingWithdraw,
18
+ toBroadcastFormat: () => txData,
19
+ inputs: [],
20
+ outputs: [],
21
+ signature: ['mock-signature'],
22
+ toJson: () => ({
23
+ id: '123',
24
+ type: 'StakingWithdraw',
25
+ sender: resources_1.accounts.account1.address,
26
+ referenceBlock: '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d',
27
+ blockNumber: 100,
28
+ genesisHash: '0x',
29
+ nonce: 1,
30
+ tip: 0,
31
+ specVersion: 1,
32
+ transactionVersion: 1,
33
+ chainName: 'Polymesh',
34
+ inputs: [],
35
+ outputs: [],
36
+ }),
37
+ };
38
+ }
39
+ describe('Polyx WithdrawUnbonded Builder', function () {
40
+ let builder;
41
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tpolyx'));
42
+ const senderAddress = resources_1.accounts.account1.address;
43
+ const testSlashingSpans = 0;
44
+ beforeEach(() => {
45
+ builder = factory.getWithdrawUnbondedBuilder();
46
+ });
47
+ describe('setter validation', () => {
48
+ it('should validate slashing spans', () => {
49
+ const spy = sinon_1.default.spy(builder, 'validateValue');
50
+ should_1.default.throws(() => builder.slashingSpans(-1), /Value cannot be less than zero/);
51
+ should_1.default.doesNotThrow(() => builder.slashingSpans(0));
52
+ sinon_1.default.assert.calledTwice(spy);
53
+ });
54
+ });
55
+ describe('Build and Sign', function () {
56
+ it('should build a withdraw unbonded transaction', async () => {
57
+ builder
58
+ .slashingSpans(testSlashingSpans)
59
+ .sender({ address: senderAddress })
60
+ .validity({ firstValid: 3933, maxDuration: 64 })
61
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
62
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
63
+ const mockTx = createMockTransaction(resources_1.rawTx.withdrawUnbonded.unsigned);
64
+ sinon_1.default.stub(builder, 'build').resolves(mockTx);
65
+ const tx = await builder.build();
66
+ should_1.default.exist(tx);
67
+ should_1.default.equal(builder.getSlashingSpans(), testSlashingSpans);
68
+ });
69
+ });
70
+ describe('Transaction Validation', function () {
71
+ it('should build, decode, and validate a real withdrawUnbonded transaction', () => {
72
+ // Build the transaction with real parameters
73
+ builder
74
+ .slashingSpans(testSlashingSpans)
75
+ .sender({ address: senderAddress })
76
+ .validity({ firstValid: 3933, maxDuration: 64 })
77
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
78
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
79
+ // Set up material for decoding
80
+ const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
81
+ builder.material(material);
82
+ // Build the actual unsigned transaction
83
+ const unsignedTx = builder['buildTransaction']();
84
+ const registry = builder['_registry'];
85
+ // Decode the actual built transaction
86
+ const decodedTx = (0, txwrapper_polkadot_1.decode)(unsignedTx, {
87
+ metadataRpc: material.metadata,
88
+ registry: registry,
89
+ });
90
+ // Validate the decoded transaction structure
91
+ should_1.default.equal(decodedTx.method.name, 'withdrawUnbonded');
92
+ should_1.default.equal(decodedTx.method.pallet, 'staking');
93
+ const withdrawArgs = decodedTx.method.args;
94
+ should_1.default.equal(withdrawArgs.numSlashingSpans, testSlashingSpans);
95
+ // Now validate using the builder's validation method
96
+ should_1.default.doesNotThrow(() => {
97
+ builder.validateDecodedTransaction(decodedTx);
98
+ });
99
+ });
100
+ it('should reject invalid transaction types', () => {
101
+ const mockDecodedTx = {
102
+ method: {
103
+ name: 'transfer',
104
+ pallet: 'balances',
105
+ args: {},
106
+ },
107
+ };
108
+ should_1.default.throws(() => {
109
+ builder.validateDecodedTransaction(mockDecodedTx);
110
+ }, /Invalid transaction type/);
111
+ });
112
+ });
113
+ describe('From Raw Transaction', function () {
114
+ it('should rebuild from real withdrawUnbonded transaction', async () => {
115
+ // First build a transaction to get a real raw transaction
116
+ const originalBuilder = factory.getWithdrawUnbondedBuilder();
117
+ originalBuilder
118
+ .slashingSpans(testSlashingSpans)
119
+ .sender({ address: senderAddress })
120
+ .validity({ firstValid: 3933, maxDuration: 64 })
121
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
122
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
123
+ // Set up material
124
+ const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
125
+ originalBuilder.material(material);
126
+ // Build the transaction and get the serialized hex
127
+ const tx = await originalBuilder.build();
128
+ const rawTxHex = tx.toBroadcastFormat();
129
+ // Create a new builder and reconstruct from the transaction hex
130
+ const newBuilder = factory.getWithdrawUnbondedBuilder();
131
+ newBuilder.material(material);
132
+ newBuilder.from(rawTxHex);
133
+ // Verify the reconstructed builder has the same parameters
134
+ should_1.default.equal(newBuilder.getSlashingSpans(), testSlashingSpans);
135
+ });
136
+ });
137
+ });
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3dpdGhkcmF3VW5ib25kZWRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esc0VBQXVEO0FBQ3ZELDRDQUF1QztBQUN2QyxvREFBNEI7QUFDNUIsa0RBQTBCO0FBQzFCLDBDQUFtRztBQUNuRyw4Q0FBa0Q7QUFDbEQsbUVBQTJDO0FBRTNDLCtDQUFrRDtBQUVsRCxTQUFTLHFCQUFxQixDQUFDLE1BQWM7SUFDM0MsT0FBTztRQUNMLEVBQUUsRUFBRSxLQUFLO1FBQ1QsSUFBSSxFQUFFLDBCQUFlLENBQUMsZUFBZTtRQUNyQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNO1FBQy9CLE1BQU0sRUFBRSxFQUFFO1FBQ1YsT0FBTyxFQUFFLEVBQUU7UUFDWCxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUM3QixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNiLEVBQUUsRUFBRSxLQUFLO1lBQ1QsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixNQUFNLEVBQUUsb0JBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTztZQUNqQyxjQUFjLEVBQUUsb0VBQW9FO1lBQ3BGLFdBQVcsRUFBRSxHQUFHO1lBQ2hCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLEtBQUssRUFBRSxDQUFDO1lBQ1IsR0FBRyxFQUFFLENBQUM7WUFDTixXQUFXLEVBQUUsQ0FBQztZQUNkLGtCQUFrQixFQUFFLENBQUM7WUFDckIsU0FBUyxFQUFFLFVBQVU7WUFDckIsTUFBTSxFQUFFLEVBQUU7WUFDVixPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7S0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVELFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRTtJQUN6QyxJQUFJLE9BQWdDLENBQUM7SUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFbkUsTUFBTSxhQUFhLEdBQUcsb0JBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQ2hELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBRTVCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDakQsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQ2pDLEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUU7WUFDeEMsTUFBTSxHQUFHLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDaEQsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGdDQUFnQyxDQUFDLENBQUM7WUFDakYsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BELGVBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsZ0JBQWdCLEVBQUU7UUFDekIsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVELE9BQU87aUJBQ0osYUFBYSxDQUFDLGlCQUFpQixDQUFDO2lCQUNoQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7aUJBQ2xDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMvQyxjQUFjLENBQUMsb0VBQW9FLENBQUM7aUJBQ3BGLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUUvRCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxpQkFBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RFLGVBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFxQixDQUFDLENBQUM7WUFFN0QsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFakIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHdCQUF3QixFQUFFO1FBQ2pDLEVBQUUsQ0FBQyx3RUFBd0UsRUFBRSxHQUFHLEVBQUU7WUFDaEYsNkNBQTZDO1lBQzdDLE9BQU87aUJBQ0osYUFBYSxDQUFDLGlCQUFpQixDQUFDO2lCQUNoQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7aUJBQ2xDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMvQyxjQUFjLENBQUMsb0VBQW9FLENBQUM7aUJBQ3BGLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUUvRCwrQkFBK0I7WUFDL0IsTUFBTSxRQUFRLEdBQUcsZUFBSyxDQUFDLFdBQVcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTNCLHdDQUF3QztZQUN4QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1lBQ2pELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUV0QyxzQ0FBc0M7WUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBQSwyQkFBTSxFQUFDLFVBQVUsRUFBRTtnQkFDbkMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUM5QixRQUFRLEVBQUUsUUFBUTthQUNuQixDQUFDLENBQUM7WUFFSCw2Q0FBNkM7WUFDN0MsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUN4RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUVqRCxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQW9DLENBQUM7WUFDM0UsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFFL0QscURBQXFEO1lBQ3JELGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtnQkFDdkIsT0FBTyxDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFO1lBQ2pELE1BQU0sYUFBYSxHQUEwQjtnQkFDM0MsTUFBTSxFQUFFO29CQUNOLElBQUksRUFBRSxVQUFVO29CQUNoQixNQUFNLEVBQUUsVUFBVTtvQkFDbEIsSUFBSSxFQUFFLEVBQUU7aUJBQ1Q7YUFDa0MsQ0FBQztZQUV0QyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNwRCxDQUFDLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHNCQUFzQixFQUFFO1FBQy9CLEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNyRSwwREFBMEQ7WUFDMUQsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDN0QsZUFBZTtpQkFDWixhQUFhLENBQUMsaUJBQWlCLENBQUM7aUJBQ2hDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDbEMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBRS9ELGtCQUFrQjtZQUNsQixNQUFNLFFBQVEsR0FBRyxlQUFLLENBQUMsV0FBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JFLGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFbkMsbURBQW1EO1lBQ25ELE1BQU0sRUFBRSxHQUFHLE1BQU0sZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBRXhDLGdFQUFnRTtZQUNoRSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUN4RCxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlCLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFMUIsMkRBQTJEO1lBQzNELGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVjb2RlZFNpZ25pbmdQYXlsb2FkIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZSc7XG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1wb2xrYWRvdCc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBXaXRoZHJhd1VuYm9uZGVkQnVpbGRlciwgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi91dGlscyc7XG5cbmltcG9ydCB7IGFjY291bnRzLCByYXdUeCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5cbmZ1bmN0aW9uIGNyZWF0ZU1vY2tUcmFuc2FjdGlvbih0eERhdGE6IHN0cmluZyk6IFBhcnRpYWw8VHJhbnNhY3Rpb24+IHtcbiAgcmV0dXJuIHtcbiAgICBpZDogJzEyMycsXG4gICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdyxcbiAgICB0b0Jyb2FkY2FzdEZvcm1hdDogKCkgPT4gdHhEYXRhLFxuICAgIGlucHV0czogW10sXG4gICAgb3V0cHV0czogW10sXG4gICAgc2lnbmF0dXJlOiBbJ21vY2stc2lnbmF0dXJlJ10sXG4gICAgdG9Kc29uOiAoKSA9PiAoe1xuICAgICAgaWQ6ICcxMjMnLFxuICAgICAgdHlwZTogJ1N0YWtpbmdXaXRoZHJhdycsXG4gICAgICBzZW5kZXI6IGFjY291bnRzLmFjY291bnQxLmFkZHJlc3MsXG4gICAgICByZWZlcmVuY2VCbG9jazogJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcsXG4gICAgICBibG9ja051bWJlcjogMTAwLFxuICAgICAgZ2VuZXNpc0hhc2g6ICcweCcsXG4gICAgICBub25jZTogMSxcbiAgICAgIHRpcDogMCxcbiAgICAgIHNwZWNWZXJzaW9uOiAxLFxuICAgICAgdHJhbnNhY3Rpb25WZXJzaW9uOiAxLFxuICAgICAgY2hhaW5OYW1lOiAnUG9seW1lc2gnLFxuICAgICAgaW5wdXRzOiBbXSxcbiAgICAgIG91dHB1dHM6IFtdLFxuICAgIH0pLFxuICB9O1xufVxuXG5kZXNjcmliZSgnUG9seXggV2l0aGRyYXdVbmJvbmRlZCBCdWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBsZXQgYnVpbGRlcjogV2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXI7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3Rwb2x5eCcpKTtcblxuICBjb25zdCBzZW5kZXJBZGRyZXNzID0gYWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcztcbiAgY29uc3QgdGVzdFNsYXNoaW5nU3BhbnMgPSAwO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZXR0ZXIgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHNsYXNoaW5nIHNwYW5zJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3B5ID0gc2lub24uc3B5KGJ1aWxkZXIsICd2YWxpZGF0ZVZhbHVlJyk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIuc2xhc2hpbmdTcGFucygtMSksIC9WYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8vKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci5zbGFzaGluZ1NwYW5zKDApKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRUd2ljZShzcHkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQnVpbGQgYW5kIFNpZ24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIHdpdGhkcmF3IHVuYm9uZGVkIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuc2xhc2hpbmdTcGFucyh0ZXN0U2xhc2hpbmdTcGFucylcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTAwIH0pO1xuXG4gICAgICBjb25zdCBtb2NrVHggPSBjcmVhdGVNb2NrVHJhbnNhY3Rpb24ocmF3VHgud2l0aGRyYXdVbmJvbmRlZC51bnNpZ25lZCk7XG4gICAgICBzaW5vbi5zdHViKGJ1aWxkZXIsICdidWlsZCcpLnJlc29sdmVzKG1vY2tUeCBhcyBUcmFuc2FjdGlvbik7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4KTtcblxuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIuZ2V0U2xhc2hpbmdTcGFucygpLCB0ZXN0U2xhc2hpbmdTcGFucyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUcmFuc2FjdGlvbiBWYWxpZGF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgYnVpbGQsIGRlY29kZSwgYW5kIHZhbGlkYXRlIGEgcmVhbCB3aXRoZHJhd1VuYm9uZGVkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgLy8gQnVpbGQgdGhlIHRyYW5zYWN0aW9uIHdpdGggcmVhbCBwYXJhbWV0ZXJzXG4gICAgICBidWlsZGVyXG4gICAgICAgIC5zbGFzaGluZ1NwYW5zKHRlc3RTbGFzaGluZ1NwYW5zKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxMDAgfSk7XG5cbiAgICAgIC8vIFNldCB1cCBtYXRlcmlhbCBmb3IgZGVjb2RpbmdcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgYnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIC8vIEJ1aWxkIHRoZSBhY3R1YWwgdW5zaWduZWQgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IHVuc2lnbmVkVHggPSBidWlsZGVyWydidWlsZFRyYW5zYWN0aW9uJ10oKTtcbiAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gYnVpbGRlclsnX3JlZ2lzdHJ5J107XG5cbiAgICAgIC8vIERlY29kZSB0aGUgYWN0dWFsIGJ1aWx0IHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCBkZWNvZGVkVHggPSBkZWNvZGUodW5zaWduZWRUeCwge1xuICAgICAgICBtZXRhZGF0YVJwYzogbWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgICAgIHJlZ2lzdHJ5OiByZWdpc3RyeSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBzdHJ1Y3R1cmVcbiAgICAgIHNob3VsZC5lcXVhbChkZWNvZGVkVHgubWV0aG9kLm5hbWUsICd3aXRoZHJhd1VuYm9uZGVkJyk7XG4gICAgICBzaG91bGQuZXF1YWwoZGVjb2RlZFR4Lm1ldGhvZC5wYWxsZXQsICdzdGFraW5nJyk7XG5cbiAgICAgIGNvbnN0IHdpdGhkcmF3QXJncyA9IGRlY29kZWRUeC5tZXRob2QuYXJncyBhcyB7IG51bVNsYXNoaW5nU3BhbnM6IG51bWJlciB9O1xuICAgICAgc2hvdWxkLmVxdWFsKHdpdGhkcmF3QXJncy5udW1TbGFzaGluZ1NwYW5zLCB0ZXN0U2xhc2hpbmdTcGFucyk7XG5cbiAgICAgIC8vIE5vdyB2YWxpZGF0ZSB1c2luZyB0aGUgYnVpbGRlcidzIHZhbGlkYXRpb24gbWV0aG9kXG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgYnVpbGRlci52YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihkZWNvZGVkVHgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBpbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbW9ja0RlY29kZWRUeDogRGVjb2RlZFNpZ25pbmdQYXlsb2FkID0ge1xuICAgICAgICBtZXRob2Q6IHtcbiAgICAgICAgICBuYW1lOiAndHJhbnNmZXInLFxuICAgICAgICAgIHBhbGxldDogJ2JhbGFuY2VzJyxcbiAgICAgICAgICBhcmdzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgdW5rbm93biBhcyBEZWNvZGVkU2lnbmluZ1BheWxvYWQ7XG5cbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKG1vY2tEZWNvZGVkVHgpO1xuICAgICAgfSwgL0ludmFsaWQgdHJhbnNhY3Rpb24gdHlwZS8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRnJvbSBSYXcgVHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZWJ1aWxkIGZyb20gcmVhbCB3aXRoZHJhd1VuYm9uZGVkIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gRmlyc3QgYnVpbGQgYSB0cmFuc2FjdGlvbiB0byBnZXQgYSByZWFsIHJhdyB0cmFuc2FjdGlvblxuICAgICAgY29uc3Qgb3JpZ2luYWxCdWlsZGVyID0gZmFjdG9yeS5nZXRXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcigpO1xuICAgICAgb3JpZ2luYWxCdWlsZGVyXG4gICAgICAgIC5zbGFzaGluZ1NwYW5zKHRlc3RTbGFzaGluZ1NwYW5zKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxMDAgfSk7XG5cbiAgICAgIC8vIFNldCB1cCBtYXRlcmlhbFxuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBvcmlnaW5hbEJ1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuXG4gICAgICAvLyBCdWlsZCB0aGUgdHJhbnNhY3Rpb24gYW5kIGdldCB0aGUgc2VyaWFsaXplZCBoZXhcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgb3JpZ2luYWxCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCByYXdUeEhleCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBidWlsZGVyIGFuZCByZWNvbnN0cnVjdCBmcm9tIHRoZSB0cmFuc2FjdGlvbiBoZXhcbiAgICAgIGNvbnN0IG5ld0J1aWxkZXIgPSBmYWN0b3J5LmdldFdpdGhkcmF3VW5ib25kZWRCdWlsZGVyKCk7XG4gICAgICBuZXdCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIG5ld0J1aWxkZXIuZnJvbShyYXdUeEhleCk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgcmVjb25zdHJ1Y3RlZCBidWlsZGVyIGhhcyB0aGUgc2FtZSBwYXJhbWV0ZXJzXG4gICAgICBzaG91bGQuZXF1YWwobmV3QnVpbGRlci5nZXRTbGFzaGluZ1NwYW5zKCksIHRlc3RTbGFzaGluZ1NwYW5zKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -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,143 @@
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 src_1 = require("../../src");
8
+ const resources_1 = require("../resources");
9
+ const resources_2 = require("../../src/resources");
10
+ describe('Polyx Utils', () => {
11
+ // Create a proper Material object from testnetMaterial
12
+ const material = {
13
+ genesisHash: resources_2.testnetMaterial.genesisHash,
14
+ chainName: resources_2.testnetMaterial.chainName,
15
+ specName: resources_2.testnetMaterial.specName,
16
+ specVersion: resources_2.testnetMaterial.specVersion,
17
+ txVersion: resources_2.testnetMaterial.txVersion,
18
+ metadata: resources_2.testnetMaterial.metadata,
19
+ };
20
+ describe('decodeTransaction', () => {
21
+ it('should decode a signed transfer transaction and identify method name', () => {
22
+ const decoded = src_1.utils.decodeTransaction(resources_1.rawTx.transfer.signed, material);
23
+ should_1.default.exist(decoded);
24
+ decoded.should.have.property('method');
25
+ decoded.method.should.have.property('pallet');
26
+ decoded.method.should.have.property('name');
27
+ // Check that it's a balances transfer
28
+ decoded.method.pallet.should.equal('balances');
29
+ decoded.method.name.should.equal('transferWithMemo');
30
+ });
31
+ it('should decode an unsigned transfer transaction and identify method name', () => {
32
+ const decoded = src_1.utils.decodeTransaction(resources_1.rawTx.transfer.unsigned, material);
33
+ should_1.default.exist(decoded);
34
+ decoded.should.have.property('method');
35
+ decoded.method.should.have.property('pallet');
36
+ decoded.method.should.have.property('name');
37
+ // Check that it's a balances transfer
38
+ decoded.method.pallet.should.equal('balances');
39
+ decoded.method.name.should.equal('transferWithMemo');
40
+ });
41
+ it('should decode a CDD registration transaction and identify method name', () => {
42
+ const decoded = src_1.utils.decodeTransaction(resources_1.rawTx.cddTransaction.signed, material);
43
+ should_1.default.exist(decoded);
44
+ decoded.should.have.property('method');
45
+ decoded.method.should.have.property('pallet');
46
+ decoded.method.should.have.property('name');
47
+ // Check that it's a CDD transaction
48
+ decoded.method.pallet.should.equal('identity');
49
+ decoded.method.name.should.equal('cddRegisterDidWithCdd');
50
+ });
51
+ it('should decode a staking bond transaction and identify method name', () => {
52
+ const decoded = src_1.utils.decodeTransaction(resources_1.stakingTx.bond.signed, material);
53
+ should_1.default.exist(decoded);
54
+ decoded.should.have.property('method');
55
+ decoded.method.should.have.property('pallet');
56
+ decoded.method.should.have.property('name');
57
+ // Check that it's a staking bond
58
+ decoded.method.pallet.should.equal('staking');
59
+ decoded.method.name.should.equal('bond');
60
+ });
61
+ it('should decode a staking unbond transaction and identify method name', () => {
62
+ const decoded = src_1.utils.decodeTransaction(resources_1.stakingTx.unbond.signed, material);
63
+ should_1.default.exist(decoded);
64
+ decoded.should.have.property('method');
65
+ decoded.method.should.have.property('pallet');
66
+ decoded.method.should.have.property('name');
67
+ // Check that it's a staking unbond
68
+ decoded.method.pallet.should.equal('staking');
69
+ decoded.method.name.should.equal('unbond');
70
+ });
71
+ it('should decode a batch transaction and identify method name', () => {
72
+ const decoded = src_1.utils.decodeTransaction(resources_1.stakingTx.batch.bondAndNominate.signed, material);
73
+ should_1.default.exist(decoded);
74
+ decoded.should.have.property('method');
75
+ decoded.method.should.have.property('pallet');
76
+ decoded.method.should.have.property('name');
77
+ // Check that it's a batch transaction
78
+ decoded.method.pallet.should.equal('utility');
79
+ decoded.method.name.should.equal('batchAll');
80
+ // Check the batch calls (handle potential null/undefined)
81
+ decoded.method.should.have.property('args');
82
+ decoded.method.args.should.have.property('calls');
83
+ if (Array.isArray(decoded.method.args.calls)) {
84
+ decoded.method.args.calls.should.be.an.Array();
85
+ decoded.method.args.calls.length.should.equal(2);
86
+ // First call should be bond
87
+ if (decoded.method.args.calls[0]) {
88
+ decoded.method.args.calls[0].should.have.property('callIndex');
89
+ }
90
+ // Second call should be nominate
91
+ if (decoded.method.args.calls[1]) {
92
+ decoded.method.args.calls[1].should.have.property('callIndex');
93
+ }
94
+ }
95
+ });
96
+ it('should decode a preApprove asset transaction and identify method name', () => {
97
+ const decoded = src_1.utils.decodeTransaction(resources_1.rawTx.preApproveAsset.signed, material);
98
+ should_1.default.exist(decoded);
99
+ decoded.should.have.property('method');
100
+ decoded.method.should.have.property('pallet');
101
+ decoded.method.should.have.property('name');
102
+ // Check that it's an asset preApprove
103
+ decoded.method.pallet.should.equal('asset');
104
+ decoded.method.name.should.equal('preApproveAsset');
105
+ });
106
+ it('should decode a token transfer transaction and identify method name', () => {
107
+ const decoded = src_1.utils.decodeTransaction(resources_1.rawTx.tokenTransfer.signed, material);
108
+ should_1.default.exist(decoded);
109
+ decoded.should.have.property('method');
110
+ decoded.method.should.have.property('pallet');
111
+ decoded.method.should.have.property('name');
112
+ // Check that it's a settlement transaction
113
+ decoded.method.pallet.should.equal('settlement');
114
+ decoded.method.name.should.equal('addAndAffirmWithMediators');
115
+ });
116
+ it('should decode unstake transaction and identify method name', () => {
117
+ const decoded = src_1.utils.decodeTransaction(resources_1.rawTx.unstake.signed, material);
118
+ should_1.default.exist(decoded);
119
+ decoded.should.have.property('method');
120
+ decoded.method.should.have.property('pallet');
121
+ decoded.method.should.have.property('name');
122
+ // Check that it's a batch unstaking transaction
123
+ decoded.method.pallet.should.equal('utility');
124
+ decoded.method.name.should.equal('batchAll');
125
+ });
126
+ it('should decode withdraw unbonded transaction and identify method name', () => {
127
+ const decoded = src_1.utils.decodeTransaction(resources_1.rawTx.withdrawUnbonded.signed, material);
128
+ should_1.default.exist(decoded);
129
+ decoded.should.have.property('method');
130
+ decoded.method.should.have.property('pallet');
131
+ decoded.method.should.have.property('name');
132
+ // Check that it's a staking withdraw unbonded
133
+ decoded.method.pallet.should.equal('staking');
134
+ decoded.method.name.should.equal('withdrawUnbonded');
135
+ });
136
+ it('should throw error for invalid transaction hex', () => {
137
+ should_1.default.throws(() => {
138
+ src_1.utils.decodeTransaction('0xinvalid', material);
139
+ }, /Failed to decode transaction/);
140
+ });
141
+ });
142
+ });
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsbUNBQWtDO0FBQ2xDLDRDQUFnRDtBQUNoRCxtREFBc0Q7QUFLdEQsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7SUFDM0IsdURBQXVEO0lBQ3ZELE1BQU0sUUFBUSxHQUFhO1FBQ3pCLFdBQVcsRUFBRSwyQkFBZSxDQUFDLFdBQVc7UUFDeEMsU0FBUyxFQUFFLDJCQUFlLENBQUMsU0FBUztRQUNwQyxRQUFRLEVBQUUsMkJBQWUsQ0FBQyxRQUFRO1FBQ2xDLFdBQVcsRUFBRSwyQkFBZSxDQUFDLFdBQVc7UUFDeEMsU0FBUyxFQUFFLDJCQUFlLENBQUMsU0FBUztRQUNwQyxRQUFRLEVBQUUsMkJBQWUsQ0FBQyxRQUF5QjtLQUNwRCxDQUFDO0lBRUYsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtRQUNqQyxFQUFFLENBQUMsc0VBQXNFLEVBQUUsR0FBRyxFQUFFO1lBQzlFLE1BQU0sT0FBTyxHQUFHLFdBQUssQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFekUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1QyxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMseUVBQXlFLEVBQUUsR0FBRyxFQUFFO1lBQ2pGLE1BQU0sT0FBTyxHQUFHLFdBQUssQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFM0UsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1QyxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUVBQXVFLEVBQUUsR0FBRyxFQUFFO1lBQy9FLE1BQU0sT0FBTyxHQUFHLFdBQUssQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFL0UsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1QyxvQ0FBb0M7WUFDcEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsbUVBQW1FLEVBQUUsR0FBRyxFQUFFO1lBQzNFLE1BQU0sT0FBTyxHQUFHLFdBQUssQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFekUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1QyxpQ0FBaUM7WUFDakMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHFFQUFxRSxFQUFFLEdBQUcsRUFBRTtZQUM3RSxNQUFNLE9BQU8sR0FBRyxXQUFLLENBQUMsaUJBQWlCLENBQUMscUJBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRTNFLGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2QyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFNUMsbUNBQW1DO1lBQ25DLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0REFBNEQsRUFBRSxHQUFHLEVBQUU7WUFDcEUsTUFBTSxPQUFPLEdBQUcsV0FBSyxDQUFDLGlCQUFpQixDQUFDLHFCQUFTLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFMUYsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1QyxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTdDLDBEQUEwRDtZQUMxRCxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQy9DLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFakQsNEJBQTRCO2dCQUM1QixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNqQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2pFLENBQUM7Z0JBQ0QsaUNBQWlDO2dCQUNqQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNqQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2pFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUVBQXVFLEVBQUUsR0FBRyxFQUFFO1lBQy9FLE1BQU0sT0FBTyxHQUFHLFdBQUssQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFaEYsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1QyxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscUVBQXFFLEVBQUUsR0FBRyxFQUFFO1lBQzdFLE1BQU0sT0FBTyxHQUFHLFdBQUssQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFOUUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1QywyQ0FBMkM7WUFDM0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNqRCxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNERBQTRELEVBQUUsR0FBRyxFQUFFO1lBQ3BFLE1BQU0sT0FBTyxHQUFHLFdBQUssQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFeEUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1QyxnREFBZ0Q7WUFDaEQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHNFQUFzRSxFQUFFLEdBQUcsRUFBRTtZQUM5RSxNQUFNLE9BQU8sR0FBRyxXQUFLLENBQUMsaUJBQWlCLENBQUMsaUJBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFakYsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1Qyw4Q0FBOEM7WUFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxFQUFFO1lBQ3hELGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDakIsV0FBSyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqRCxDQUFDLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyB1dGlscyB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgeyByYXdUeCwgc3Rha2luZ1R4IH0gZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IHRlc3RuZXRNYXRlcmlhbCB9IGZyb20gJy4uLy4uL3NyYy9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvL2Fic3RyYWN0LXN1YnN0cmF0ZSc7XG5cbnR5cGUgTWF0ZXJpYWwgPSBJbnRlcmZhY2UuTWF0ZXJpYWw7XG5cbmRlc2NyaWJlKCdQb2x5eCBVdGlscycsICgpID0+IHtcbiAgLy8gQ3JlYXRlIGEgcHJvcGVyIE1hdGVyaWFsIG9iamVjdCBmcm9tIHRlc3RuZXRNYXRlcmlhbFxuICBjb25zdCBtYXRlcmlhbDogTWF0ZXJpYWwgPSB7XG4gICAgZ2VuZXNpc0hhc2g6IHRlc3RuZXRNYXRlcmlhbC5nZW5lc2lzSGFzaCxcbiAgICBjaGFpbk5hbWU6IHRlc3RuZXRNYXRlcmlhbC5jaGFpbk5hbWUsXG4gICAgc3BlY05hbWU6IHRlc3RuZXRNYXRlcmlhbC5zcGVjTmFtZSxcbiAgICBzcGVjVmVyc2lvbjogdGVzdG5ldE1hdGVyaWFsLnNwZWNWZXJzaW9uLFxuICAgIHR4VmVyc2lvbjogdGVzdG5ldE1hdGVyaWFsLnR4VmVyc2lvbixcbiAgICBtZXRhZGF0YTogdGVzdG5ldE1hdGVyaWFsLm1ldGFkYXRhIGFzIGAweCR7c3RyaW5nfWAsXG4gIH07XG5cbiAgZGVzY3JpYmUoJ2RlY29kZVRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZGVjb2RlIGEgc2lnbmVkIHRyYW5zZmVyIHRyYW5zYWN0aW9uIGFuZCBpZGVudGlmeSBtZXRob2QgbmFtZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSB1dGlscy5kZWNvZGVUcmFuc2FjdGlvbihyYXdUeC50cmFuc2Zlci5zaWduZWQsIG1hdGVyaWFsKTtcblxuICAgICAgc2hvdWxkLmV4aXN0KGRlY29kZWQpO1xuICAgICAgZGVjb2RlZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWV0aG9kJyk7XG4gICAgICBkZWNvZGVkLm1ldGhvZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncGFsbGV0Jyk7XG4gICAgICBkZWNvZGVkLm1ldGhvZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbmFtZScpO1xuXG4gICAgICAvLyBDaGVjayB0aGF0IGl0J3MgYSBiYWxhbmNlcyB0cmFuc2ZlclxuICAgICAgZGVjb2RlZC5tZXRob2QucGFsbGV0LnNob3VsZC5lcXVhbCgnYmFsYW5jZXMnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLm5hbWUuc2hvdWxkLmVxdWFsKCd0cmFuc2ZlcldpdGhNZW1vJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlY29kZSBhbiB1bnNpZ25lZCB0cmFuc2ZlciB0cmFuc2FjdGlvbiBhbmQgaWRlbnRpZnkgbWV0aG9kIG5hbWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkZWNvZGVkID0gdXRpbHMuZGVjb2RlVHJhbnNhY3Rpb24ocmF3VHgudHJhbnNmZXIudW5zaWduZWQsIG1hdGVyaWFsKTtcblxuICAgICAgc2hvdWxkLmV4aXN0KGRlY29kZWQpO1xuICAgICAgZGVjb2RlZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWV0aG9kJyk7XG4gICAgICBkZWNvZGVkLm1ldGhvZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncGFsbGV0Jyk7XG4gICAgICBkZWNvZGVkLm1ldGhvZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbmFtZScpO1xuXG4gICAgICAvLyBDaGVjayB0aGF0IGl0J3MgYSBiYWxhbmNlcyB0cmFuc2ZlclxuICAgICAgZGVjb2RlZC5tZXRob2QucGFsbGV0LnNob3VsZC5lcXVhbCgnYmFsYW5jZXMnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLm5hbWUuc2hvdWxkLmVxdWFsKCd0cmFuc2ZlcldpdGhNZW1vJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlY29kZSBhIENERCByZWdpc3RyYXRpb24gdHJhbnNhY3Rpb24gYW5kIGlkZW50aWZ5IG1ldGhvZCBuYW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGVjb2RlZCA9IHV0aWxzLmRlY29kZVRyYW5zYWN0aW9uKHJhd1R4LmNkZFRyYW5zYWN0aW9uLnNpZ25lZCwgbWF0ZXJpYWwpO1xuXG4gICAgICBzaG91bGQuZXhpc3QoZGVjb2RlZCk7XG4gICAgICBkZWNvZGVkLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtZXRob2QnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLnNob3VsZC5oYXZlLnByb3BlcnR5KCdwYWxsZXQnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLnNob3VsZC5oYXZlLnByb3BlcnR5KCduYW1lJyk7XG5cbiAgICAgIC8vIENoZWNrIHRoYXQgaXQncyBhIENERCB0cmFuc2FjdGlvblxuICAgICAgZGVjb2RlZC5tZXRob2QucGFsbGV0LnNob3VsZC5lcXVhbCgnaWRlbnRpdHknKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLm5hbWUuc2hvdWxkLmVxdWFsKCdjZGRSZWdpc3RlckRpZFdpdGhDZGQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGVjb2RlIGEgc3Rha2luZyBib25kIHRyYW5zYWN0aW9uIGFuZCBpZGVudGlmeSBtZXRob2QgbmFtZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSB1dGlscy5kZWNvZGVUcmFuc2FjdGlvbihzdGFraW5nVHguYm9uZC5zaWduZWQsIG1hdGVyaWFsKTtcblxuICAgICAgc2hvdWxkLmV4aXN0KGRlY29kZWQpO1xuICAgICAgZGVjb2RlZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWV0aG9kJyk7XG4gICAgICBkZWNvZGVkLm1ldGhvZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncGFsbGV0Jyk7XG4gICAgICBkZWNvZGVkLm1ldGhvZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbmFtZScpO1xuXG4gICAgICAvLyBDaGVjayB0aGF0IGl0J3MgYSBzdGFraW5nIGJvbmRcbiAgICAgIGRlY29kZWQubWV0aG9kLnBhbGxldC5zaG91bGQuZXF1YWwoJ3N0YWtpbmcnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLm5hbWUuc2hvdWxkLmVxdWFsKCdib25kJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlY29kZSBhIHN0YWtpbmcgdW5ib25kIHRyYW5zYWN0aW9uIGFuZCBpZGVudGlmeSBtZXRob2QgbmFtZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSB1dGlscy5kZWNvZGVUcmFuc2FjdGlvbihzdGFraW5nVHgudW5ib25kLnNpZ25lZCwgbWF0ZXJpYWwpO1xuXG4gICAgICBzaG91bGQuZXhpc3QoZGVjb2RlZCk7XG4gICAgICBkZWNvZGVkLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtZXRob2QnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLnNob3VsZC5oYXZlLnByb3BlcnR5KCdwYWxsZXQnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLnNob3VsZC5oYXZlLnByb3BlcnR5KCduYW1lJyk7XG5cbiAgICAgIC8vIENoZWNrIHRoYXQgaXQncyBhIHN0YWtpbmcgdW5ib25kXG4gICAgICBkZWNvZGVkLm1ldGhvZC5wYWxsZXQuc2hvdWxkLmVxdWFsKCdzdGFraW5nJyk7XG4gICAgICBkZWNvZGVkLm1ldGhvZC5uYW1lLnNob3VsZC5lcXVhbCgndW5ib25kJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlY29kZSBhIGJhdGNoIHRyYW5zYWN0aW9uIGFuZCBpZGVudGlmeSBtZXRob2QgbmFtZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSB1dGlscy5kZWNvZGVUcmFuc2FjdGlvbihzdGFraW5nVHguYmF0Y2guYm9uZEFuZE5vbWluYXRlLnNpZ25lZCwgbWF0ZXJpYWwpO1xuXG4gICAgICBzaG91bGQuZXhpc3QoZGVjb2RlZCk7XG4gICAgICBkZWNvZGVkLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtZXRob2QnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLnNob3VsZC5oYXZlLnByb3BlcnR5KCdwYWxsZXQnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLnNob3VsZC5oYXZlLnByb3BlcnR5KCduYW1lJyk7XG5cbiAgICAgIC8vIENoZWNrIHRoYXQgaXQncyBhIGJhdGNoIHRyYW5zYWN0aW9uXG4gICAgICBkZWNvZGVkLm1ldGhvZC5wYWxsZXQuc2hvdWxkLmVxdWFsKCd1dGlsaXR5Jyk7XG4gICAgICBkZWNvZGVkLm1ldGhvZC5uYW1lLnNob3VsZC5lcXVhbCgnYmF0Y2hBbGwnKTtcblxuICAgICAgLy8gQ2hlY2sgdGhlIGJhdGNoIGNhbGxzIChoYW5kbGUgcG90ZW50aWFsIG51bGwvdW5kZWZpbmVkKVxuICAgICAgZGVjb2RlZC5tZXRob2Quc2hvdWxkLmhhdmUucHJvcGVydHkoJ2FyZ3MnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLmFyZ3Muc2hvdWxkLmhhdmUucHJvcGVydHkoJ2NhbGxzJyk7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkZWNvZGVkLm1ldGhvZC5hcmdzLmNhbGxzKSkge1xuICAgICAgICBkZWNvZGVkLm1ldGhvZC5hcmdzLmNhbGxzLnNob3VsZC5iZS5hbi5BcnJheSgpO1xuICAgICAgICBkZWNvZGVkLm1ldGhvZC5hcmdzLmNhbGxzLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG5cbiAgICAgICAgLy8gRmlyc3QgY2FsbCBzaG91bGQgYmUgYm9uZFxuICAgICAgICBpZiAoZGVjb2RlZC5tZXRob2QuYXJncy5jYWxsc1swXSkge1xuICAgICAgICAgIGRlY29kZWQubWV0aG9kLmFyZ3MuY2FsbHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2NhbGxJbmRleCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNlY29uZCBjYWxsIHNob3VsZCBiZSBub21pbmF0ZVxuICAgICAgICBpZiAoZGVjb2RlZC5tZXRob2QuYXJncy5jYWxsc1sxXSkge1xuICAgICAgICAgIGRlY29kZWQubWV0aG9kLmFyZ3MuY2FsbHNbMV0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2NhbGxJbmRleCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlY29kZSBhIHByZUFwcHJvdmUgYXNzZXQgdHJhbnNhY3Rpb24gYW5kIGlkZW50aWZ5IG1ldGhvZCBuYW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGVjb2RlZCA9IHV0aWxzLmRlY29kZVRyYW5zYWN0aW9uKHJhd1R4LnByZUFwcHJvdmVBc3NldC5zaWduZWQsIG1hdGVyaWFsKTtcblxuICAgICAgc2hvdWxkLmV4aXN0KGRlY29kZWQpO1xuICAgICAgZGVjb2RlZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWV0aG9kJyk7XG4gICAgICBkZWNvZGVkLm1ldGhvZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncGFsbGV0Jyk7XG4gICAgICBkZWNvZGVkLm1ldGhvZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbmFtZScpO1xuXG4gICAgICAvLyBDaGVjayB0aGF0IGl0J3MgYW4gYXNzZXQgcHJlQXBwcm92ZVxuICAgICAgZGVjb2RlZC5tZXRob2QucGFsbGV0LnNob3VsZC5lcXVhbCgnYXNzZXQnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLm5hbWUuc2hvdWxkLmVxdWFsKCdwcmVBcHByb3ZlQXNzZXQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGVjb2RlIGEgdG9rZW4gdHJhbnNmZXIgdHJhbnNhY3Rpb24gYW5kIGlkZW50aWZ5IG1ldGhvZCBuYW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGVjb2RlZCA9IHV0aWxzLmRlY29kZVRyYW5zYWN0aW9uKHJhd1R4LnRva2VuVHJhbnNmZXIuc2lnbmVkLCBtYXRlcmlhbCk7XG5cbiAgICAgIHNob3VsZC5leGlzdChkZWNvZGVkKTtcbiAgICAgIGRlY29kZWQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21ldGhvZCcpO1xuICAgICAgZGVjb2RlZC5tZXRob2Quc2hvdWxkLmhhdmUucHJvcGVydHkoJ3BhbGxldCcpO1xuICAgICAgZGVjb2RlZC5tZXRob2Quc2hvdWxkLmhhdmUucHJvcGVydHkoJ25hbWUnKTtcblxuICAgICAgLy8gQ2hlY2sgdGhhdCBpdCdzIGEgc2V0dGxlbWVudCB0cmFuc2FjdGlvblxuICAgICAgZGVjb2RlZC5tZXRob2QucGFsbGV0LnNob3VsZC5lcXVhbCgnc2V0dGxlbWVudCcpO1xuICAgICAgZGVjb2RlZC5tZXRob2QubmFtZS5zaG91bGQuZXF1YWwoJ2FkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGVjb2RlIHVuc3Rha2UgdHJhbnNhY3Rpb24gYW5kIGlkZW50aWZ5IG1ldGhvZCBuYW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGVjb2RlZCA9IHV0aWxzLmRlY29kZVRyYW5zYWN0aW9uKHJhd1R4LnVuc3Rha2Uuc2lnbmVkLCBtYXRlcmlhbCk7XG5cbiAgICAgIHNob3VsZC5leGlzdChkZWNvZGVkKTtcbiAgICAgIGRlY29kZWQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21ldGhvZCcpO1xuICAgICAgZGVjb2RlZC5tZXRob2Quc2hvdWxkLmhhdmUucHJvcGVydHkoJ3BhbGxldCcpO1xuICAgICAgZGVjb2RlZC5tZXRob2Quc2hvdWxkLmhhdmUucHJvcGVydHkoJ25hbWUnKTtcblxuICAgICAgLy8gQ2hlY2sgdGhhdCBpdCdzIGEgYmF0Y2ggdW5zdGFraW5nIHRyYW5zYWN0aW9uXG4gICAgICBkZWNvZGVkLm1ldGhvZC5wYWxsZXQuc2hvdWxkLmVxdWFsKCd1dGlsaXR5Jyk7XG4gICAgICBkZWNvZGVkLm1ldGhvZC5uYW1lLnNob3VsZC5lcXVhbCgnYmF0Y2hBbGwnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGVjb2RlIHdpdGhkcmF3IHVuYm9uZGVkIHRyYW5zYWN0aW9uIGFuZCBpZGVudGlmeSBtZXRob2QgbmFtZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSB1dGlscy5kZWNvZGVUcmFuc2FjdGlvbihyYXdUeC53aXRoZHJhd1VuYm9uZGVkLnNpZ25lZCwgbWF0ZXJpYWwpO1xuXG4gICAgICBzaG91bGQuZXhpc3QoZGVjb2RlZCk7XG4gICAgICBkZWNvZGVkLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtZXRob2QnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLnNob3VsZC5oYXZlLnByb3BlcnR5KCdwYWxsZXQnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLnNob3VsZC5oYXZlLnByb3BlcnR5KCduYW1lJyk7XG5cbiAgICAgIC8vIENoZWNrIHRoYXQgaXQncyBhIHN0YWtpbmcgd2l0aGRyYXcgdW5ib25kZWRcbiAgICAgIGRlY29kZWQubWV0aG9kLnBhbGxldC5zaG91bGQuZXF1YWwoJ3N0YWtpbmcnKTtcbiAgICAgIGRlY29kZWQubWV0aG9kLm5hbWUuc2hvdWxkLmVxdWFsKCd3aXRoZHJhd1VuYm9uZGVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBpbnZhbGlkIHRyYW5zYWN0aW9uIGhleCcsICgpID0+IHtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4ge1xuICAgICAgICB1dGlscy5kZWNvZGVUcmFuc2FjdGlvbignMHhpbnZhbGlkJywgbWF0ZXJpYWwpO1xuICAgICAgfSwgL0ZhaWxlZCB0byBkZWNvZGUgdHJhbnNhY3Rpb24vKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==