@bitgo-beta/sdk-coin-trx 1.2.3-alpha.403 → 1.2.3-alpha.405

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 (65) hide show
  1. package/.eslintignore +5 -0
  2. package/.mocharc.yml +8 -0
  3. package/CHANGELOG.md +1088 -0
  4. package/package.json +7 -10
  5. package/resources/README.md +31 -0
  6. package/resources/protobuf/Contract.proto +288 -0
  7. package/resources/protobuf/Discover.proto +44 -0
  8. package/resources/protobuf/tron.d.ts +12469 -0
  9. package/resources/protobuf/tron.js +37192 -0
  10. package/resources/protobuf/tron.proto +683 -0
  11. package/dist/test/fixtures.d.ts +0 -40
  12. package/dist/test/fixtures.d.ts.map +0 -1
  13. package/dist/test/fixtures.js +0 -46
  14. package/dist/test/resources.d.ts +0 -586
  15. package/dist/test/resources.d.ts.map +0 -1
  16. package/dist/test/resources.js +0 -746
  17. package/dist/test/unit/index.d.ts +0 -2
  18. package/dist/test/unit/index.d.ts.map +0 -1
  19. package/dist/test/unit/index.js +0 -19
  20. package/dist/test/unit/keyPair.d.ts +0 -2
  21. package/dist/test/unit/keyPair.d.ts.map +0 -1
  22. package/dist/test/unit/keyPair.js +0 -163
  23. package/dist/test/unit/transaction.d.ts +0 -2
  24. package/dist/test/unit/transaction.d.ts.map +0 -1
  25. package/dist/test/unit/transaction.js +0 -38
  26. package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts +0 -2
  27. package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts.map +0 -1
  28. package/dist/test/unit/transactionBuilder/contractCallBuilder.js +0 -315
  29. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts +0 -2
  30. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts.map +0 -1
  31. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.js +0 -255
  32. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts +0 -2
  33. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts.map +0 -1
  34. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.js +0 -256
  35. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -2
  36. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  37. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -42
  38. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts +0 -2
  39. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts.map +0 -1
  40. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.js +0 -255
  41. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts +0 -2
  42. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts.map +0 -1
  43. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.js +0 -256
  44. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts +0 -2
  45. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts.map +0 -1
  46. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.js +0 -277
  47. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts +0 -2
  48. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts.map +0 -1
  49. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.js +0 -213
  50. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts +0 -2
  51. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts.map +0 -1
  52. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.js +0 -213
  53. package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts +0 -2
  54. package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts.map +0 -1
  55. package/dist/test/unit/transactionBuilder/wrappedBuilder.js +0 -50
  56. package/dist/test/unit/transactionBuilder.d.ts +0 -2
  57. package/dist/test/unit/transactionBuilder.d.ts.map +0 -1
  58. package/dist/test/unit/transactionBuilder.js +0 -178
  59. package/dist/test/unit/trx.d.ts +0 -2
  60. package/dist/test/unit/trx.d.ts.map +0 -1
  61. package/dist/test/unit/trx.js +0 -532
  62. package/dist/test/unit/util.d.ts +0 -2
  63. package/dist/test/unit/util.d.ts.map +0 -1
  64. package/dist/test/unit/util.js +0 -141
  65. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,213 +0,0 @@
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 sdk_core_1 = require("@bitgo-beta/sdk-core");
8
- const node_test_1 = require("node:test");
9
- const resources_1 = require("../../resources");
10
- const builder_1 = require("../../../src/lib/builder");
11
- (0, node_test_1.describe)('Tron WithdrawExpireUnfreeze builder', function () {
12
- const initTxBuilder = () => {
13
- const builder = (0, builder_1.getBuilder)('ttrx').getWithdrawExpireUnfreezeTxBuilder();
14
- builder.source({ address: resources_1.PARTICIPANTS.custodian.address }).block({ number: resources_1.BLOCK_NUMBER, hash: resources_1.BLOCK_HASH });
15
- return builder;
16
- };
17
- (0, node_test_1.describe)('should build successfully', () => {
18
- (0, node_test_1.it)('a transaction with correct inputs', async () => {
19
- const timestamp = Date.now();
20
- const txBuilder = initTxBuilder();
21
- txBuilder.timestamp(timestamp);
22
- txBuilder.expiration(timestamp + 40000);
23
- const tx = (await txBuilder.build());
24
- const txJson = tx.toJson();
25
- assert_1.default.equal(tx.type, sdk_core_1.TransactionType.StakingWithdraw);
26
- assert_1.default.equal(tx.inputs.length, 1);
27
- assert_1.default.equal(tx.inputs[0].address, resources_1.PARTICIPANTS.custodian.address);
28
- assert_1.default.equal(tx.inputs[0].value, '0');
29
- assert_1.default.equal(tx.outputs[0].value, '0');
30
- assert_1.default.equal(tx.outputs[0].address, resources_1.PARTICIPANTS.custodian.address);
31
- assert_1.default.deepStrictEqual(txJson.raw_data.contract, resources_1.WITHDRAW_EXPIRE_UNFREEZE_CONTRACT);
32
- });
33
- (0, node_test_1.it)('an unsigned transaction from a string and from a JSON', async () => {
34
- const timestamp = Date.now();
35
- const txBuilder = initTxBuilder();
36
- txBuilder.timestamp(timestamp);
37
- txBuilder.expiration(timestamp + 40000);
38
- const tx = await txBuilder.build();
39
- const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toBroadcastFormat());
40
- txBuilder2.sign({ key: resources_1.PARTICIPANTS.custodian.pk });
41
- const tx2 = await txBuilder2.build();
42
- const txBuilder3 = (0, builder_1.getBuilder)('ttrx').from(tx.toJson());
43
- txBuilder3.sign({ key: resources_1.PARTICIPANTS.custodian.pk });
44
- const tx3 = await txBuilder3.build();
45
- assert_1.default.deepStrictEqual(tx2, tx3);
46
- });
47
- (0, node_test_1.it)('an unsigned transaction with extended duration', async () => {
48
- const timestamp = Date.now();
49
- const expiration = timestamp + resources_1.EXPIRATION;
50
- const extension = 60000;
51
- const txBuilder = initTxBuilder();
52
- txBuilder.timestamp(timestamp);
53
- txBuilder.expiration(expiration);
54
- const tx = await txBuilder.build();
55
- const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toBroadcastFormat());
56
- txBuilder2.extendValidTo(extension);
57
- txBuilder2.sign({ key: resources_1.PARTICIPANTS.custodian.pk });
58
- const tx2 = await txBuilder2.build();
59
- assert_1.default.equal(tx2.inputs.length, 1);
60
- assert_1.default.equal(tx2.inputs[0].address, resources_1.PARTICIPANTS.custodian.address);
61
- assert_1.default.equal(tx2.inputs[0].value, '0');
62
- assert_1.default.equal(tx2.outputs[0].value, '0');
63
- assert_1.default.equal(tx2.outputs[0].address, resources_1.PARTICIPANTS.custodian.address);
64
- const txJson = tx2.toJson();
65
- assert_1.default.equal(txJson.raw_data.expiration, expiration + extension);
66
- });
67
- (0, node_test_1.it)('a transaction signed multiple times', async () => {
68
- const timestamp = Date.now();
69
- const txBuilder = initTxBuilder();
70
- txBuilder.timestamp(timestamp);
71
- txBuilder.expiration(timestamp + resources_1.EXPIRATION);
72
- const tx = await txBuilder.build();
73
- let txJson = tx.toJson();
74
- let rawData = txJson.raw_data;
75
- assert_1.default.deepStrictEqual(rawData.contract, resources_1.WITHDRAW_EXPIRE_UNFREEZE_CONTRACT);
76
- assert_1.default.equal(txJson.signature.length, 0);
77
- const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toJson());
78
- txBuilder2.sign({ key: resources_1.PARTICIPANTS.custodian.pk });
79
- const tx2 = await txBuilder2.build();
80
- txJson = tx2.toJson();
81
- rawData = txJson.raw_data;
82
- assert_1.default.deepStrictEqual(rawData.contract, resources_1.WITHDRAW_EXPIRE_UNFREEZE_CONTRACT);
83
- assert_1.default.equal(txJson.signature.length, 1);
84
- const txBuilder3 = (0, builder_1.getBuilder)('ttrx').from(tx2.toJson());
85
- txBuilder3.sign({ key: resources_1.PARTICIPANTS.from.pk });
86
- const tx3 = await txBuilder3.build();
87
- txJson = tx3.toJson();
88
- rawData = txJson.raw_data;
89
- assert_1.default.deepStrictEqual(rawData.contract, resources_1.WITHDRAW_EXPIRE_UNFREEZE_CONTRACT);
90
- assert_1.default.equal(txJson.signature.length, 2);
91
- const txBuilder4 = (0, builder_1.getBuilder)('ttrx').from(tx3.toJson());
92
- txBuilder4.sign({ key: resources_1.PARTICIPANTS.multisig.pk });
93
- const tx4 = await txBuilder4.build();
94
- assert_1.default.equal(tx4.inputs.length, 1);
95
- assert_1.default.equal(tx4.inputs[0].address, resources_1.PARTICIPANTS.custodian.address);
96
- assert_1.default.equal(tx4.inputs[0].value, '0');
97
- assert_1.default.equal(tx4.outputs[0].value, '0');
98
- assert_1.default.equal(tx4.outputs[0].address, resources_1.PARTICIPANTS.custodian.address);
99
- txJson = tx4.toJson();
100
- rawData = txJson.raw_data;
101
- assert_1.default.deepStrictEqual(rawData.contract, resources_1.WITHDRAW_EXPIRE_UNFREEZE_CONTRACT);
102
- assert_1.default.equal(txJson.signature.length, 3);
103
- assert_1.default.equal(rawData.expiration, timestamp + resources_1.EXPIRATION);
104
- assert_1.default.equal(rawData.timestamp, timestamp);
105
- });
106
- });
107
- (0, node_test_1.describe)('should validate', () => {
108
- (0, node_test_1.it)('a valid expiration', async () => {
109
- const now = Date.now();
110
- const expiration = now + resources_1.EXPIRATION;
111
- const txBuilder = initTxBuilder();
112
- txBuilder.timestamp(now);
113
- txBuilder.expiration(expiration + 1000);
114
- txBuilder.expiration(expiration);
115
- const tx = await txBuilder.build();
116
- const txJson = tx.toJson();
117
- assert_1.default.equal(txJson.raw_data.expiration, expiration);
118
- });
119
- (0, node_test_1.it)('an expiration greater than one year', async () => {
120
- const now = Date.now();
121
- const txBuilder = initTxBuilder();
122
- txBuilder.timestamp(now);
123
- assert_1.default.throws(() => {
124
- txBuilder.expiration(now + 31536000001);
125
- }, (e) => e.message === 'Expiration must not be greater than one day');
126
- });
127
- (0, node_test_1.it)('an expiration less than the current date', async () => {
128
- const now = Date.now();
129
- const txBuilder = initTxBuilder();
130
- txBuilder.timestamp(now - 2000);
131
- assert_1.default.throws(() => {
132
- txBuilder.expiration(now - 1000);
133
- }, (e) => e.message === 'Expiration must be greater than current time');
134
- });
135
- (0, node_test_1.it)('an expiration less than the timestamp', async () => {
136
- const now = Date.now();
137
- const txBuilder = initTxBuilder();
138
- txBuilder.timestamp(now + 2000);
139
- assert_1.default.throws(() => {
140
- txBuilder.expiration(now + 1000);
141
- }, (e) => e.message === 'Expiration must be greater than timestamp');
142
- });
143
- (0, node_test_1.it)('an expiration set after build', async () => {
144
- const now = Date.now();
145
- const expiration = now + resources_1.EXPIRATION;
146
- const txBuilder = initTxBuilder();
147
- await txBuilder.build();
148
- assert_1.default.throws(() => {
149
- txBuilder.expiration(expiration);
150
- }, (e) => e.message === 'Expiration is already set, it can only be extended');
151
- });
152
- (0, node_test_1.it)('an expiration set after deserializing', async () => {
153
- const now = Date.now();
154
- const expiration = now + resources_1.EXPIRATION;
155
- const txBuilder = initTxBuilder();
156
- const tx = await txBuilder.build();
157
- const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toBroadcastFormat());
158
- assert_1.default.throws(() => {
159
- txBuilder2.expiration(expiration);
160
- }, (e) => e.message === 'Expiration is already set, it can only be extended');
161
- });
162
- (0, node_test_1.it)('an extension without a set expiration', async () => {
163
- const txBuilder = initTxBuilder();
164
- assert_1.default.throws(() => {
165
- txBuilder.extendValidTo(20000);
166
- }, (e) => e.message === 'There is not expiration to extend');
167
- });
168
- (0, node_test_1.it)('a zero millisecond extension', async () => {
169
- const txBuilder = initTxBuilder();
170
- const expiration = Date.now() + resources_1.EXPIRATION;
171
- txBuilder.expiration(expiration);
172
- const tx = await txBuilder.build();
173
- const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toBroadcastFormat());
174
- assert_1.default.throws(() => {
175
- txBuilder2.extendValidTo(0);
176
- }, (e) => e.message === 'Value cannot be below zero');
177
- });
178
- (0, node_test_1.it)('an extension grater than one year', async () => {
179
- const txBuilder = initTxBuilder();
180
- const expiration = Date.now() + resources_1.EXPIRATION;
181
- txBuilder.expiration(expiration);
182
- const tx = await txBuilder.build();
183
- const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toBroadcastFormat());
184
- assert_1.default.throws(() => {
185
- txBuilder2.extendValidTo(31536000001);
186
- }, (e) => e.message === 'The expiration cannot be extended more than one year');
187
- });
188
- (0, node_test_1.it)('an extension after signing', async () => {
189
- const txBuilder = initTxBuilder();
190
- txBuilder.sign({ key: resources_1.PARTICIPANTS.custodian.pk });
191
- const tx = await txBuilder.build();
192
- const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toBroadcastFormat());
193
- assert_1.default.throws(() => {
194
- txBuilder2.extendValidTo(20000);
195
- }, (e) => e.message === 'Cannot extend a signed transaction');
196
- });
197
- (0, node_test_1.it)('transaction mandatory fields', async () => {
198
- const txBuilder = (0, builder_1.getBuilder)('ttrx').getWithdrawExpireUnfreezeTxBuilder();
199
- await assert_1.default.rejects(txBuilder.build(), {
200
- message: 'Missing parameter: source',
201
- });
202
- txBuilder.source({ address: resources_1.PARTICIPANTS.custodian.address });
203
- await assert_1.default.rejects(txBuilder.build(), {
204
- message: 'Missing block reference information',
205
- });
206
- txBuilder.block({ number: resources_1.BLOCK_NUMBER, hash: resources_1.BLOCK_HASH });
207
- assert_1.default.doesNotReject(() => {
208
- return txBuilder.build();
209
- });
210
- });
211
- });
212
- });
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aGRyYXdFeHBpcmVVbmZyZWV6ZVR4QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvd2l0aGRyYXdFeHBpcmVVbmZyZWV6ZVR4QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1QixtREFBdUQ7QUFDdkQseUNBQXlDO0FBQ3pDLCtDQUF3SDtBQUN4SCxzREFBc0Q7QUFHdEQsSUFBQSxvQkFBUSxFQUFDLHFDQUFxQyxFQUFFO0lBQzlDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtRQUN6QixNQUFNLE9BQU8sR0FBSSxJQUFBLG9CQUFVLEVBQUMsTUFBTSxDQUFvQixDQUFDLGtDQUFrQyxFQUFFLENBQUM7UUFDNUYsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSx3QkFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSx3QkFBWSxFQUFFLElBQUksRUFBRSxzQkFBVSxFQUFFLENBQUMsQ0FBQztRQUU5RyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixJQUFBLG9CQUFRLEVBQUMsMkJBQTJCLEVBQUUsR0FBRyxFQUFFO1FBQ3pDLElBQUEsY0FBRSxFQUFDLG1DQUFtQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM3QixNQUFNLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9CLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQWdCLENB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QUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFekMsTUFBTSxVQUFVLEdBQUcsSUFBQSxvQkFBVSxFQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUN6RCxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLHdCQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUMxQixnQkFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLDZDQUFpQyxDQUFDLENBQUM7WUFDNUUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFekMsTUFBTSxVQUFVLEdBQUcsSUFBQSxvQkFBVSxFQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUN6RCxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLHdCQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkQsTUFBTSxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsd0JBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxD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QUcsRUFBRTtnQkFDeEIsT0FBTyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBkZXNjcmliZSwgaXQgfSBmcm9tICdub2RlOnRlc3QnO1xuaW1wb3J0IHsgUEFSVElDSVBBTlRTLCBCTE9DS19IQVNILCBCTE9DS19OVU1CRVIsIEVYUElSQVRJT04sIFdJVEhEUkFXX0VYUElSRV9VTkZSRUVaRV9DT05UUkFDVCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBnZXRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9idWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uLCBXcmFwcGVkQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdUcm9uIFdpdGhkcmF3RXhwaXJlVW5mcmVlemUgYnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgaW5pdFR4QnVpbGRlciA9ICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gKGdldEJ1aWxkZXIoJ3R0cngnKSBhcyBXcmFwcGVkQnVpbGRlcikuZ2V0V2l0aGRyYXdFeHBpcmVVbmZyZWV6ZVR4QnVpbGRlcigpO1xuICAgIGJ1aWxkZXIuc291cmNlKHsgYWRkcmVzczogUEFSVElDSVBBTlRTLmN1c3RvZGlhbi5hZGRyZXNzIH0pLmJsb2NrKHsgbnVtYmVyOiBCTE9DS19OVU1CRVIsIGhhc2g6IEJMT0NLX0hBU0ggfSk7XG5cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfTtcblxuICBkZXNjcmliZSgnc2hvdWxkIGJ1aWxkIHN1Y2Nlc3NmdWxseScsICgpID0+IHtcbiAgICBpdCgnYSB0cmFuc2FjdGlvbiB3aXRoIGNvcnJlY3QgaW5wdXRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci50aW1lc3RhbXAodGltZXN0YW1wKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKHRpbWVzdGFtcCArIDQwMDAwKTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0c1swXS5hZGRyZXNzLCBQQVJUSUNJUEFOVFMuY3VzdG9kaWFuLmFkZHJlc3MpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0c1swXS52YWx1ZSwgJzAnKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eC5vdXRwdXRzWzBdLnZhbHVlLCAnMCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4Lm91dHB1dHNbMF0uYWRkcmVzcywgUEFSVElDSVBBTlRTLmN1c3RvZGlhbi5hZGRyZXNzKTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodHhKc29uLnJhd19kYXRhLmNvbnRyYWN0LCBXSVRIRFJBV19FWFBJUkVfVU5GUkVFWkVfQ09OVFJBQ1QpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIHVuc2lnbmVkIHRyYW5zYWN0aW9uIGZyb20gYSBzdHJpbmcgYW5kIGZyb20gYSBKU09OJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci50aW1lc3RhbXAodGltZXN0YW1wKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKHRpbWVzdGFtcCArIDQwMDAwKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICAgIHR4QnVpbGRlcjIuc2lnbih7IGtleTogUEFSVElDSVBBTlRTLmN1c3RvZGlhbi5wayB9KTtcbiAgICAgIGNvbnN0IHR4MiA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyMyA9IGdldEJ1aWxkZXIoJ3R0cngnKS5mcm9tKHR4LnRvSnNvbigpKTtcbiAgICAgIHR4QnVpbGRlcjMuc2lnbih7IGtleTogUEFSVElDSVBBTlRTLmN1c3RvZGlhbi5wayB9KTtcbiAgICAgIGNvbnN0IHR4MyA9IGF3YWl0IHR4QnVpbGRlcjMuYnVpbGQoKTtcblxuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0eDIsIHR4Myk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gdW5zaWduZWQgdHJhbnNhY3Rpb24gd2l0aCBleHRlbmRlZCBkdXJhdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCBleHBpcmF0aW9uID0gdGltZXN0YW1wICsgRVhQSVJBVElPTjtcbiAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IDYwMDAwO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnRpbWVzdGFtcCh0aW1lc3RhbXApO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oZXhwaXJhdGlvbik7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gZ2V0QnVpbGRlcigndHRyeCcpLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICB0eEJ1aWxkZXIyLmV4dGVuZFZhbGlkVG8oZXh0ZW5zaW9uKTtcbiAgICAgIHR4QnVpbGRlcjIuc2lnbih7IGtleTogUEFSVElDSVBBTlRTLmN1c3RvZGlhbi5wayB9KTtcbiAgICAgIGNvbnN0IHR4MiA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcblxuICAgICAgYXNzZXJ0LmVxdWFsKHR4Mi5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eDIuaW5wdXRzWzBdLmFkZHJlc3MsIFBBUlRJQ0lQQU5UUy5jdXN0b2RpYW4uYWRkcmVzcyk7XG4gICAgICBhc3NlcnQuZXF1YWwodHgyLmlucHV0c1swXS52YWx1ZSwgJzAnKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eDIub3V0cHV0c1swXS52YWx1ZSwgJzAnKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eDIub3V0cHV0c1swXS5hZGRyZXNzLCBQQVJUSUNJUEFOVFMuY3VzdG9kaWFuLmFkZHJlc3MpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgyLnRvSnNvbigpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4SnNvbi5yYXdfZGF0YS5leHBpcmF0aW9uLCBleHBpcmF0aW9uICsgZXh0ZW5zaW9uKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHRyYW5zYWN0aW9uIHNpZ25lZCBtdWx0aXBsZSB0aW1lcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbih0aW1lc3RhbXAgKyBFWFBJUkFUSU9OKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBsZXQgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBsZXQgcmF3RGF0YSA9IHR4SnNvbi5yYXdfZGF0YTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocmF3RGF0YS5jb250cmFjdCwgV0lUSERSQVdfRVhQSVJFX1VORlJFRVpFX0NPTlRSQUNUKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eEpzb24uc2lnbmF0dXJlLmxlbmd0aCwgMCk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eC50b0pzb24oKSk7XG4gICAgICB0eEJ1aWxkZXIyLnNpZ24oeyBrZXk6IFBBUlRJQ0lQQU5UUy5jdXN0b2RpYW4ucGsgfSk7XG4gICAgICBjb25zdCB0eDIgPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgICB0eEpzb24gPSB0eDIudG9Kc29uKCk7XG4gICAgICByYXdEYXRhID0gdHhKc29uLnJhd19kYXRhO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChyYXdEYXRhLmNvbnRyYWN0LCBXSVRIRFJBV19FWFBJUkVfVU5GUkVFWkVfQ09OVFJBQ1QpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4SnNvbi5zaWduYXR1cmUubGVuZ3RoLCAxKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyMyA9IGdldEJ1aWxkZXIoJ3R0cngnKS5mcm9tKHR4Mi50b0pzb24oKSk7XG4gICAgICB0eEJ1aWxkZXIzLnNpZ24oeyBrZXk6IFBBUlRJQ0lQQU5UUy5mcm9tLnBrIH0pO1xuICAgICAgY29uc3QgdHgzID0gYXdhaXQgdHhCdWlsZGVyMy5idWlsZCgpO1xuICAgICAgdHhKc29uID0gdHgzLnRvSnNvbigpO1xuICAgICAgcmF3RGF0YSA9IHR4SnNvbi5yYXdfZGF0YTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocmF3RGF0YS5jb250cmFjdCwgV0lUSERSQVdfRVhQSVJFX1VORlJFRVpFX0NPTlRSQUNUKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eEpzb24uc2lnbmF0dXJlLmxlbmd0aCwgMik7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjQgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eDMudG9Kc29uKCkpO1xuICAgICAgdHhCdWlsZGVyNC5zaWduKHsga2V5OiBQQVJUSUNJUEFOVFMubXVsdGlzaWcucGsgfSk7XG4gICAgICBjb25zdCB0eDQgPSBhd2FpdCB0eEJ1aWxkZXI0LmJ1aWxkKCk7XG4gICAgICBhc3NlcnQuZXF1YWwodHg0LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4NC5pbnB1dHNbMF0uYWRkcmVzcywgUEFSVElDSVBBTlRTLmN1c3RvZGlhbi5hZGRyZXNzKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eDQuaW5wdXRzWzBdLnZhbHVlLCAnMCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4NC5vdXRwdXRzWzBdLnZhbHVlLCAnMCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4NC5vdXRwdXRzWzBdLmFkZHJlc3MsIFBBUlRJQ0lQQU5UUy5jdXN0b2RpYW4uYWRkcmVzcyk7XG4gICAgICB0eEpzb24gPSB0eDQudG9Kc29uKCk7XG4gICAgICByYXdEYXRhID0gdHhKc29uLnJhd19kYXRhO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChyYXdEYXRhLmNvbnRyYWN0LCBXSVRIRFJBV19FWFBJUkVfVU5GUkVFWkVfQ09OVFJBQ1QpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4SnNvbi5zaWduYXR1cmUubGVuZ3RoLCAzKTtcbiAgICAgIGFzc2VydC5lcXVhbChyYXdEYXRhLmV4cGlyYXRpb24sIHRpbWVzdGFtcCArIEVYUElSQVRJT04pO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJhd0RhdGEudGltZXN0YW1wLCB0aW1lc3RhbXApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIHZhbGlkYXRlJywgKCkgPT4ge1xuICAgIGl0KCdhIHZhbGlkIGV4cGlyYXRpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgZXhwaXJhdGlvbiA9IG5vdyArIEVYUElSQVRJT047XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudGltZXN0YW1wKG5vdyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihleHBpcmF0aW9uICsgMTAwMCk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihleHBpcmF0aW9uKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eEpzb24ucmF3X2RhdGEuZXhwaXJhdGlvbiwgZXhwaXJhdGlvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gZXhwaXJhdGlvbiBncmVhdGVyIHRoYW4gb25lIHllYXInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnRpbWVzdGFtcChub3cpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKG5vdyArIDMxNTM2MDAwMDAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnRXhwaXJhdGlvbiBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gb25lIGRheSdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gZXhwaXJhdGlvbiBsZXNzIHRoYW4gdGhlIGN1cnJlbnQgZGF0ZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudGltZXN0YW1wKG5vdyAtIDIwMDApO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKG5vdyAtIDEwMDApO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdFeHBpcmF0aW9uIG11c3QgYmUgZ3JlYXRlciB0aGFuIGN1cnJlbnQgdGltZSdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gZXhwaXJhdGlvbiBsZXNzIHRoYW4gdGhlIHRpbWVzdGFtcCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudGltZXN0YW1wKG5vdyArIDIwMDApO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKG5vdyArIDEwMDApO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdFeHBpcmF0aW9uIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRpbWVzdGFtcCdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gZXhwaXJhdGlvbiBzZXQgYWZ0ZXIgYnVpbGQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgZXhwaXJhdGlvbiA9IG5vdyArIEVYUElSQVRJT047XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihleHBpcmF0aW9uKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnRXhwaXJhdGlvbiBpcyBhbHJlYWR5IHNldCwgaXQgY2FuIG9ubHkgYmUgZXh0ZW5kZWQnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGV4cGlyYXRpb24gc2V0IGFmdGVyIGRlc2VyaWFsaXppbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgZXhwaXJhdGlvbiA9IG5vdyArIEVYUElSQVRJT047XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyMiA9IGdldEJ1aWxkZXIoJ3R0cngnKS5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlcjIuZXhwaXJhdGlvbihleHBpcmF0aW9uKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnRXhwaXJhdGlvbiBpcyBhbHJlYWR5IHNldCwgaXQgY2FuIG9ubHkgYmUgZXh0ZW5kZWQnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGV4dGVuc2lvbiB3aXRob3V0IGEgc2V0IGV4cGlyYXRpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHhCdWlsZGVyLmV4dGVuZFZhbGlkVG8oMjAwMDApO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdUaGVyZSBpcyBub3QgZXhwaXJhdGlvbiB0byBleHRlbmQnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgemVybyBtaWxsaXNlY29uZCBleHRlbnNpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICBjb25zdCBleHBpcmF0aW9uID0gRGF0ZS5ub3coKSArIEVYUElSQVRJT047XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihleHBpcmF0aW9uKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIyLmV4dGVuZFZhbGlkVG8oMCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ1ZhbHVlIGNhbm5vdCBiZSBiZWxvdyB6ZXJvJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiBleHRlbnNpb24gZ3JhdGVyIHRoYW4gb25lIHllYXInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICBjb25zdCBleHBpcmF0aW9uID0gRGF0ZS5ub3coKSArIEVYUElSQVRJT047XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihleHBpcmF0aW9uKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIyLmV4dGVuZFZhbGlkVG8oMzE1MzYwMDAwMDEpO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdUaGUgZXhwaXJhdGlvbiBjYW5ub3QgYmUgZXh0ZW5kZWQgbW9yZSB0aGFuIG9uZSB5ZWFyJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiBleHRlbnNpb24gYWZ0ZXIgc2lnbmluZycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBQQVJUSUNJUEFOVFMuY3VzdG9kaWFuLnBrIH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyMiA9IGdldEJ1aWxkZXIoJ3R0cngnKS5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlcjIuZXh0ZW5kVmFsaWRUbygyMDAwMCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ0Nhbm5vdCBleHRlbmQgYSBzaWduZWQgdHJhbnNhY3Rpb24nXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3RyYW5zYWN0aW9uIG1hbmRhdG9yeSBmaWVsZHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSAoZ2V0QnVpbGRlcigndHRyeCcpIGFzIFdyYXBwZWRCdWlsZGVyKS5nZXRXaXRoZHJhd0V4cGlyZVVuZnJlZXplVHhCdWlsZGVyKCk7XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKHR4QnVpbGRlci5idWlsZCgpLCB7XG4gICAgICAgIG1lc3NhZ2U6ICdNaXNzaW5nIHBhcmFtZXRlcjogc291cmNlJyxcbiAgICAgIH0pO1xuXG4gICAgICB0eEJ1aWxkZXIuc291cmNlKHsgYWRkcmVzczogUEFSVElDSVBBTlRTLmN1c3RvZGlhbi5hZGRyZXNzIH0pO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHModHhCdWlsZGVyLmJ1aWxkKCksIHtcbiAgICAgICAgbWVzc2FnZTogJ01pc3NpbmcgYmxvY2sgcmVmZXJlbmNlIGluZm9ybWF0aW9uJyxcbiAgICAgIH0pO1xuXG4gICAgICB0eEJ1aWxkZXIuYmxvY2soeyBudW1iZXI6IEJMT0NLX05VTUJFUiwgaGFzaDogQkxPQ0tfSEFTSCB9KTtcbiAgICAgIGFzc2VydC5kb2VzTm90UmVqZWN0KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=wrappedBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrappedBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/wrappedBuilder.ts"],"names":[],"mappings":""}
@@ -1,50 +0,0 @@
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 node_test_1 = require("node:test");
7
- const assert_1 = __importDefault(require("assert"));
8
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
- const builder_1 = require("../../../src/lib/builder");
10
- const resources_1 = require("../../resources");
11
- (0, node_test_1.describe)('Trx Contract call Builder', () => {
12
- const builder = (0, builder_1.getBuilder)('ttrx');
13
- (0, node_test_1.describe)('Should validate ', () => {
14
- (0, node_test_1.it)('a valid address', () => {
15
- assert_1.default.doesNotThrow(() => builder.validateAddress({ address: resources_1.PARTICIPANTS.custodian.address }));
16
- });
17
- (0, node_test_1.it)('an empty address', () => {
18
- assert_1.default.throws(() => {
19
- builder.validateAddress({ address: '' });
20
- }, (e) => e.message === ' is not a valid base58 address.');
21
- });
22
- (0, node_test_1.it)('a hex address', () => {
23
- assert_1.default.throws(() => {
24
- builder.validateAddress({ address: '4173a5993cd182ae152adad8203163f780c65a8aa5' });
25
- }, (e) => e.message === '4173a5993cd182ae152adad8203163f780c65a8aa5 is not a valid base58 address.');
26
- });
27
- (0, node_test_1.it)('a hex address', () => {
28
- assert_1.default.throws(() => {
29
- builder.validateAddress({ address: '4173a5993cd182ae152adad8203163f780c65a8aa5' });
30
- }, (e) => e.message === '4173a5993cd182ae152adad8203163f780c65a8aa5 is not a valid base58 address.');
31
- });
32
- (0, node_test_1.it)('a valid value', () => {
33
- const value = new bignumber_js_1.default('13456');
34
- assert_1.default.doesNotThrow(() => builder.validateValue(value));
35
- });
36
- (0, node_test_1.it)('a negative value', () => {
37
- const value = new bignumber_js_1.default('-13456');
38
- assert_1.default.throws(() => {
39
- builder.validateValue(value);
40
- }, (e) => e.message === 'Value cannot be below zero.');
41
- });
42
- (0, node_test_1.it)('a value too big', () => {
43
- const value = new bignumber_js_1.default('9223372036854775808');
44
- assert_1.default.throws(() => {
45
- builder.validateValue(value);
46
- }, (e) => e.message === 'Value cannot be greater than handled by the javatron node.');
47
- });
48
- });
49
- });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlZEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3dyYXBwZWRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUNBQXlDO0FBQ3pDLG9EQUE0QjtBQUM1QixnRUFBcUM7QUFFckMsc0RBQXNEO0FBQ3RELCtDQUErQztBQUUvQyxJQUFBLG9CQUFRLEVBQUMsMkJBQTJCLEVBQUUsR0FBRyxFQUFFO0lBQ3pDLE1BQU0sT0FBTyxHQUFHLElBQUEsb0JBQVUsRUFBQyxNQUFNLENBQW1CLENBQUM7SUFFckQsSUFBQSxvQkFBUSxFQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtRQUNoQyxJQUFBLGNBQUUsRUFBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUU7WUFDekIsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSx3QkFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEcsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFBLGNBQUUsRUFBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7WUFDMUIsZ0JBQU0sQ0FBQyxNQUFNLENBQ1gsR0FBRyxFQUFFO2dCQUNILE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQyxDQUFDLEVBQ0QsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssaUNBQWlDLENBQzVELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILElBQUEsY0FBRSxFQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7WUFDdkIsZ0JBQU0sQ0FBQyxNQUFNLENBQ1gsR0FBRyxFQUFFO2dCQUNILE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsNENBQTRDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JGLENBQUMsRUFDRCxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSywyRUFBMkUsQ0FDdEcsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBQSxjQUFFLEVBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtZQUN2QixnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSw0Q0FBNEMsRUFBRSxDQUFDLENBQUM7WUFDckYsQ0FBQyxFQUNELENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLDJFQUEyRSxDQUN0RyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFBLGNBQUUsRUFBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksc0JBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQyxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFBLGNBQUUsRUFBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7WUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxzQkFBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDLGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRTtnQkFDSCxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLENBQUMsRUFDRCxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyw2QkFBNkIsQ0FDeEQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBQSxjQUFFLEVBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksc0JBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ25ELGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRTtnQkFDSCxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLENBQUMsRUFDRCxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyw0REFBNEQsQ0FDdkYsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBpdCB9IGZyb20gJ25vZGU6dGVzdCc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBXcmFwcGVkQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBnZXRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9idWlsZGVyJztcbmltcG9ydCB7IFBBUlRJQ0lQQU5UUyB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5cbmRlc2NyaWJlKCdUcnggQ29udHJhY3QgY2FsbCBCdWlsZGVyJywgKCkgPT4ge1xuICBjb25zdCBidWlsZGVyID0gZ2V0QnVpbGRlcigndHRyeCcpIGFzIFdyYXBwZWRCdWlsZGVyO1xuXG4gIGRlc2NyaWJlKCdTaG91bGQgdmFsaWRhdGUgJywgKCkgPT4ge1xuICAgIGl0KCdhIHZhbGlkIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzczogUEFSVElDSVBBTlRTLmN1c3RvZGlhbi5hZGRyZXNzIH0pKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiBlbXB0eSBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGJ1aWxkZXIudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzczogJycgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJyBpcyBub3QgYSB2YWxpZCBiYXNlNTggYWRkcmVzcy4nXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgaGV4IGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgYnVpbGRlci52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiAnNDE3M2E1OTkzY2QxODJhZTE1MmFkYWQ4MjAzMTYzZjc4MGM2NWE4YWE1JyB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnNDE3M2E1OTkzY2QxODJhZTE1MmFkYWQ4MjAzMTYzZjc4MGM2NWE4YWE1IGlzIG5vdCBhIHZhbGlkIGJhc2U1OCBhZGRyZXNzLidcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBoZXggYWRkcmVzcycsICgpID0+IHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBidWlsZGVyLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6ICc0MTczYTU5OTNjZDE4MmFlMTUyYWRhZDgyMDMxNjNmNzgwYzY1YThhYTUnIH0pO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICc0MTczYTU5OTNjZDE4MmFlMTUyYWRhZDgyMDMxNjNmNzgwYzY1YThhYTUgaXMgbm90IGEgdmFsaWQgYmFzZTU4IGFkZHJlc3MuJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHZhbGlkIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBuZXcgQmlnTnVtYmVyKCcxMzQ1NicpO1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRlVmFsdWUodmFsdWUpKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIG5lZ2F0aXZlIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBuZXcgQmlnTnVtYmVyKCctMTM0NTYnKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBidWlsZGVyLnZhbGlkYXRlVmFsdWUodmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdWYWx1ZSBjYW5ub3QgYmUgYmVsb3cgemVyby4nXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgdmFsdWUgdG9vIGJpZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gbmV3IEJpZ051bWJlcignOTIyMzM3MjAzNjg1NDc3NTgwOCcpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGJ1aWxkZXIudmFsaWRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ1ZhbHVlIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gaGFuZGxlZCBieSB0aGUgamF2YXRyb24gbm9kZS4nXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../test/unit/transactionBuilder.ts"],"names":[],"mappings":""}
@@ -1,178 +0,0 @@
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 node_test_1 = require("node:test");
7
- const assert_1 = __importDefault(require("assert"));
8
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
- const resources_1 = require("../resources");
10
- const builder_1 = require("../../src/lib/builder");
11
- (0, node_test_1.describe)('Tron TransactionBuilder', function () {
12
- let txBuilder;
13
- (0, node_test_1.beforeEach)(() => {
14
- txBuilder = (0, builder_1.getBuilder)('ttrx');
15
- });
16
- (0, node_test_1.describe)('Transaction builder from method', () => {
17
- (0, node_test_1.describe)('should succeed to parse', () => {
18
- (0, node_test_1.it)('a transfer contract for an unsigned tx', () => {
19
- const txJson = JSON.stringify(resources_1.UnsignedBuildTransaction);
20
- txBuilder.from(txJson);
21
- });
22
- (0, node_test_1.it)('a transfer contract for a half-signed tx', () => {
23
- const txJson = JSON.stringify(resources_1.FirstSigOnBuildTransaction);
24
- txBuilder.from(txJson);
25
- });
26
- (0, node_test_1.it)('a transfer contract for a fully signed tx', () => {
27
- const txJson = JSON.stringify(resources_1.SecondSigOnBuildTransaction);
28
- txBuilder.from(txJson);
29
- });
30
- });
31
- });
32
- (0, node_test_1.describe)('Transaction builder sign method', () => {
33
- (0, node_test_1.describe)('should succeed to sign', () => {
34
- (0, node_test_1.it)('an unsigned transaction', () => {
35
- const txJson = JSON.stringify(resources_1.UnsignedBuildTransaction);
36
- txBuilder.from(txJson);
37
- txBuilder.sign({ key: resources_1.FirstPrivateKey });
38
- });
39
- (0, node_test_1.it)('a transaction signed with a different key', () => {
40
- const txJson = JSON.stringify(resources_1.FirstSigOnBuildTransaction);
41
- txBuilder.from(txJson);
42
- txBuilder.sign({ key: resources_1.SecondPrivateKey });
43
- });
44
- (0, node_test_1.it)('a signed transaction with an xprv', async () => {
45
- txBuilder.from(resources_1.FirstSigOnBuildTransaction);
46
- const SecondPrivateKeyXprv = (0, sdk_core_1.rawPrvToExtendedKeys)(resources_1.SecondPrivateKey);
47
- txBuilder.sign({ key: SecondPrivateKeyXprv.xprv });
48
- const tx = await txBuilder.build();
49
- assert_1.default.equal(tx.toJson().signature[0], 'bd08e6cd876bb573dd00a32870b58b70ea8b7908f5131686502589941bfa4fdda76b8c81bbbcfc549be6d4988657cea122df7da46c72041def2683d6ecb04a7401');
50
- assert_1.default.equal(tx.toJson().signature[1], 'f3cabe2f4aed13e2342c78c7bf4626ea36cd6509a44418c24866814d3426703686be9ef21bd993324c520565beee820201f2a50a9ac971732410d3eb69cdb2a600');
51
- assert_1.default.equal(tx.id, '80b8b9eaed51c8bba3b49f7f0e7cc5f21ac99a6f3e2893c663b544bf2c695b1d');
52
- assert_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
53
- assert_1.default.equal(tx.inputs.length, 1);
54
- assert_1.default.equal(tx.inputs[0].address, 'TTsGwnTLQ4eryFJpDvJSfuGQxPXRCjXvZz');
55
- assert_1.default.equal(tx.inputs[0].value, '1718');
56
- assert_1.default.equal(tx.outputs.length, 1);
57
- assert_1.default.equal(tx.outputs[0].address, 'TNYssiPgaf9XYz3urBUqr861Tfqxvko47B');
58
- assert_1.default.equal(tx.outputs[0].value, '1718');
59
- assert_1.default.equal(tx.validFrom, 1571811410819);
60
- assert_1.default.equal(tx.validTo, 1571811468000);
61
- });
62
- });
63
- (0, node_test_1.describe)('should fail to sign', () => {
64
- (0, node_test_1.it)('a transaction with the same key', () => {
65
- const txJson = JSON.stringify(resources_1.FirstSigOnBuildTransaction);
66
- txBuilder.from(txJson);
67
- assert_1.default.throws(() => txBuilder.sign({ key: resources_1.FirstPrivateKey }));
68
- });
69
- });
70
- });
71
- (0, node_test_1.describe)('Transaction builder', () => {
72
- (0, node_test_1.it)('should build an update account tx', async () => {
73
- const txJson = JSON.stringify(resources_1.UnsignedAccountPermissionUpdateContractTx);
74
- txBuilder.from(txJson);
75
- txBuilder.sign({ key: resources_1.AccountPermissionUpdateContractPriv });
76
- const tx = await txBuilder.build();
77
- const signedTxJson = tx.toJson();
78
- assert_1.default.equal(signedTxJson.txID, resources_1.UnsignedAccountPermissionUpdateContractTx.txID);
79
- assert_1.default.equal(signedTxJson.raw_data_hex, resources_1.UnsignedAccountPermissionUpdateContractTx.raw_data_hex);
80
- assert_1.default.equal(JSON.stringify(signedTxJson.raw_data), JSON.stringify(resources_1.UnsignedAccountPermissionUpdateContractTx.raw_data));
81
- assert_1.default.equal(signedTxJson.signature.length, 1);
82
- assert_1.default.equal(signedTxJson.signature[0], '2bc5030727d42ed642c2806a3c1a5a0393408b159541f2163df4ba692c5c1240e2dde5a2aae4ecad465414e60b5aeca8522d0a2b6606f88a326658809161334f00');
83
- });
84
- (0, node_test_1.it)('should build an half signed tx', async () => {
85
- const txJson = JSON.stringify(resources_1.UnsignedBuildTransaction);
86
- txBuilder.from(txJson);
87
- txBuilder.sign({ key: resources_1.FirstPrivateKey });
88
- const tx = await txBuilder.build();
89
- assert_1.default.equal(tx.id, '80b8b9eaed51c8bba3b49f7f0e7cc5f21ac99a6f3e2893c663b544bf2c695b1d');
90
- assert_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
91
- assert_1.default.equal(tx.inputs.length, 1);
92
- assert_1.default.equal(tx.inputs[0].address, 'TTsGwnTLQ4eryFJpDvJSfuGQxPXRCjXvZz');
93
- assert_1.default.equal(tx.inputs[0].value, '1718');
94
- assert_1.default.equal(tx.outputs.length, 1);
95
- assert_1.default.equal(tx.outputs[0].address, 'TNYssiPgaf9XYz3urBUqr861Tfqxvko47B');
96
- assert_1.default.equal(tx.outputs[0].value, '1718');
97
- });
98
- (0, node_test_1.it)('should build the right JSON after is half signed tx', async () => {
99
- const txJson = JSON.stringify(resources_1.UnsignedBuildTransaction);
100
- txBuilder.from(txJson);
101
- txBuilder.sign({ key: resources_1.FirstPrivateKey });
102
- const tx = await txBuilder.build();
103
- const signedTxJson = tx.toJson();
104
- assert_1.default.equal(signedTxJson.txID, resources_1.UnsignedBuildTransaction.txID);
105
- assert_1.default.equal(signedTxJson.raw_data_hex, resources_1.UnsignedBuildTransaction.raw_data_hex);
106
- assert_1.default.equal(JSON.stringify(signedTxJson.raw_data), JSON.stringify(resources_1.UnsignedBuildTransaction.raw_data));
107
- assert_1.default.equal(signedTxJson.signature.length, 1);
108
- assert_1.default.equal(signedTxJson.signature[0], 'bd08e6cd876bb573dd00a32870b58b70ea8b7908f5131686502589941bfa4fdda76b8c81bbbcfc549be6d4988657cea122df7da46c72041def2683d6ecb04a7401');
109
- });
110
- (0, node_test_1.it)('should not extend a half signed tx', () => {
111
- const txJson = JSON.stringify(resources_1.UnsignedBuildTransaction);
112
- txBuilder.from(txJson);
113
- txBuilder.sign({ key: resources_1.FirstPrivateKey });
114
- assert_1.default.throws(() => txBuilder.extendValidTo(10000));
115
- });
116
- (0, node_test_1.it)('should extend an unsigned tx', async () => {
117
- const extendMs = 10000;
118
- txBuilder.from(JSON.parse(JSON.stringify(resources_1.UnsignedBuildTransaction)));
119
- txBuilder.extendValidTo(extendMs);
120
- const tx = await txBuilder.build();
121
- assert_1.default.notEqual(tx.id, resources_1.UnsignedBuildTransaction.txID);
122
- assert_1.default.equal(tx.id, '764aa8a72c2c720a6556def77d6092f729b6e14209d8130f1692d5aff13f2503');
123
- const oldExpiration = resources_1.UnsignedBuildTransaction.raw_data.expiration;
124
- assert_1.default.equal(tx.validTo, oldExpiration + extendMs);
125
- assert_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
126
- assert_1.default.equal(tx.inputs.length, 1);
127
- assert_1.default.equal(tx.inputs[0].address, 'TTsGwnTLQ4eryFJpDvJSfuGQxPXRCjXvZz');
128
- assert_1.default.equal(tx.inputs[0].value, '1718');
129
- assert_1.default.equal(tx.outputs.length, 1);
130
- assert_1.default.equal(tx.outputs[0].address, 'TNYssiPgaf9XYz3urBUqr861Tfqxvko47B');
131
- assert_1.default.equal(tx.outputs[0].value, '1718');
132
- assert_1.default.equal(tx.validFrom, 1571811410819);
133
- });
134
- (0, node_test_1.it)('should catch an invalid id', async () => {
135
- const txJson = JSON.stringify(resources_1.InvalidIDTransaction);
136
- assert_1.default.throws(() => txBuilder.from(txJson));
137
- });
138
- (0, node_test_1.it)('should throw exception of wrong id', () => {
139
- const txJson = JSON.stringify(resources_1.UnsignedBuildInvalidIDTransaction);
140
- assert_1.default.throws(() => txBuilder.from(txJson));
141
- });
142
- (0, node_test_1.it)('should throw exception of empty id', () => {
143
- const txJson = JSON.stringify(resources_1.UnsignedBuildEmptyIDTransaction);
144
- assert_1.default.throws(() => txBuilder.from(txJson));
145
- });
146
- (0, node_test_1.it)('should throw exception of invalid time stamp', () => {
147
- const txJson = JSON.stringify(resources_1.UnsignedInvalidTimeStampBuildTransaction);
148
- assert_1.default.throws(() => txBuilder.from(txJson));
149
- });
150
- (0, node_test_1.it)('should throw exception of invalid expiration time', () => {
151
- const txJson = JSON.stringify(resources_1.UnsignedInvalidExpirationBuildTransaction);
152
- assert_1.default.throws(() => txBuilder.from(txJson));
153
- });
154
- (0, node_test_1.it)('should throw exception of non-existence of contract', () => {
155
- const txJson = JSON.stringify(resources_1.UnsignedInvalidContractBuildTransaction);
156
- assert_1.default.throws(() => txBuilder.from(txJson));
157
- });
158
- (0, node_test_1.it)('should validate JSON transaction', () => {
159
- const txJson = resources_1.UnsignedAccountPermissionUpdateContractTx;
160
- assert_1.default.doesNotThrow(() => txBuilder.from(txJson));
161
- });
162
- (0, node_test_1.it)('should validate stringified JSON transaction', () => {
163
- const txJsonString = JSON.stringify(resources_1.UnsignedBuildTransaction);
164
- assert_1.default.doesNotThrow(() => txBuilder.from(txJsonString));
165
- });
166
- });
167
- (0, node_test_1.describe)('#validateKey', () => {
168
- (0, node_test_1.it)('should not throw an error when the key is valid', () => {
169
- const key = '2DBEAC1C22849F47514445A56AEF2EF164528A502DE4BD289E23EA1E2D4C4B06';
170
- assert_1.default.doesNotThrow(() => txBuilder.validateKey({ key }));
171
- });
172
- (0, node_test_1.it)('should throw an error when the key is invalid', () => {
173
- const key = 'jiraiya';
174
- assert_1.default.throws(() => txBuilder.validateKey({ key }), /The provided key is not valid/);
175
- });
176
- });
177
- });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlDQUFxRDtBQUNyRCxvREFBNEI7QUFDNUIsbURBQTZFO0FBQzdFLDRDQWNzQjtBQUN0QixtREFBbUQ7QUFFbkQsSUFBQSxvQkFBUSxFQUFDLHlCQUF5QixFQUFFO0lBQ2xDLElBQUksU0FBUyxDQUFDO0lBRWQsSUFBQSxzQkFBVSxFQUFDLEdBQUcsRUFBRTtRQUNkLFNBQVMsR0FBRyxJQUFBLG9CQUFVLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFBLG9CQUFRLEVBQUMsaUNBQWlDLEVBQUUsR0FBRyxFQUFFO1FBQy9DLElBQUEsb0JBQVEsRUFBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7WUFDdkMsSUFBQSxjQUFFLEVBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO2dCQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLG9DQUF3QixDQUFDLENBQUM7Z0JBQ3hELFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFBLGNBQUUsRUFBQywwQ0FBMEMsRUFBRSxHQUFHLEVBQUU7Z0JBQ2xELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsc0NBQTBCLENBQUMsQ0FBQztnQkFDMUQsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztZQUVILElBQUEsY0FBRSxFQUFDLDJDQUEyQyxFQUFFLEdBQUcsRUFBRTtnQkFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1Q0FBMkIsQ0FBQyxDQUFDO2dCQUMzRCxTQUFTLENBQUMsSUFBSSxD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R0FBRyxHQUFHLFNBQVMsQ0FBQztZQUN0QixnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJlZm9yZUVhY2gsIGRlc2NyaWJlLCBpdCB9IGZyb20gJ25vZGU6dGVzdCc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyByYXdQcnZUb0V4dGVuZGVkS2V5cywgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgVW5zaWduZWRCdWlsZFRyYW5zYWN0aW9uLFxuICBGaXJzdFNpZ09uQnVpbGRUcmFuc2FjdGlvbixcbiAgRmlyc3RQcml2YXRlS2V5LFxuICBTZWNvbmRTaWdPbkJ1aWxkVHJhbnNhY3Rpb24sXG4gIFNlY29uZFByaXZhdGVLZXksXG4gIFVuc2lnbmVkQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdFR4LFxuICBBY2NvdW50UGVybWlzc2lvblVwZGF0ZUNvbnRyYWN0UHJpdixcbiAgSW52YWxpZElEVHJhbnNhY3Rpb24sXG4gIFVuc2lnbmVkQnVpbGRJbnZhbGlkSURUcmFuc2FjdGlvbixcbiAgVW5zaWduZWRJbnZhbGlkRXhwaXJhdGlvbkJ1aWxkVHJhbnNhY3Rpb24sXG4gIFVuc2lnbmVkSW52YWxpZENvbnRyYWN0QnVpbGRUcmFuc2FjdGlvbixcbiAgVW5zaWduZWRCdWlsZEVtcHR5SURUcmFuc2FjdGlvbixcbiAgVW5zaWduZWRJbnZhbGlkVGltZVN0YW1wQnVpbGRUcmFuc2FjdGlvbixcbn0gZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IGdldEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zcmMvbGliL2J1aWxkZXInO1xuXG5kZXNjcmliZSgnVHJvbiBUcmFuc2FjdGlvbkJ1aWxkZXInLCBmdW5jdGlvbiAoKSB7XG4gIGxldCB0eEJ1aWxkZXI7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdHhCdWlsZGVyID0gZ2V0QnVpbGRlcigndHRyeCcpO1xuICB9KTtcblxuICBkZXNjcmliZSgnVHJhbnNhY3Rpb24gYnVpbGRlciBmcm9tIG1ldGhvZCcsICgpID0+IHtcbiAgICBkZXNjcmliZSgnc2hvdWxkIHN1Y2NlZWQgdG8gcGFyc2UnLCAoKSA9PiB7XG4gICAgICBpdCgnYSB0cmFuc2ZlciBjb250cmFjdCBmb3IgYW4gdW5zaWduZWQgdHgnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4SnNvbiA9IEpTT04uc3RyaW5naWZ5KFVuc2lnbmVkQnVpbGRUcmFuc2FjdGlvbik7XG4gICAgICAgIHR4QnVpbGRlci5mcm9tKHR4SnNvbik7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2EgdHJhbnNmZXIgY29udHJhY3QgZm9yIGEgaGFsZi1zaWduZWQgdHgnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4SnNvbiA9IEpTT04uc3RyaW5naWZ5KEZpcnN0U2lnT25CdWlsZFRyYW5zYWN0aW9uKTtcbiAgICAgICAgdHhCdWlsZGVyLmZyb20odHhKc29uKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYSB0cmFuc2ZlciBjb250cmFjdCBmb3IgYSBmdWxseSBzaWduZWQgdHgnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4SnNvbiA9IEpTT04uc3RyaW5naWZ5KFNlY29uZFNpZ09uQnVpbGRUcmFuc2FjdGlvbik7XG4gICAgICAgIHR4QnVpbGRlci5mcm9tKHR4SnNvbik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1RyYW5zYWN0aW9uIGJ1aWxkZXIgc2lnbiBtZXRob2QnLCAoKSA9PiB7XG4gICAgZGVzY3JpYmUoJ3Nob3VsZCBzdWNjZWVkIHRvIHNpZ24nLCAoKSA9PiB7XG4gICAgICBpdCgnYW4gdW5zaWduZWQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4SnNvbiA9IEpTT04uc3RyaW5naWZ5KFVuc2lnbmVkQnVpbGRUcmFuc2FjdGlvbik7XG4gICAgICAgIHR4QnVpbGRlci5mcm9tKHR4SnNvbik7XG4gICAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBGaXJzdFByaXZhdGVLZXkgfSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2EgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggYSBkaWZmZXJlbnQga2V5JywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEpzb24gPSBKU09OLnN0cmluZ2lmeShGaXJzdFNpZ09uQnVpbGRUcmFuc2FjdGlvbik7XG4gICAgICAgIHR4QnVpbGRlci5mcm9tKHR4SnNvbik7XG4gICAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBTZWNvbmRQcml2YXRlS2V5IH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdhIHNpZ25lZCB0cmFuc2FjdGlvbiB3aXRoIGFuIHhwcnYnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci5mcm9tKEZpcnN0U2lnT25CdWlsZFRyYW5zYWN0aW9uKTtcbiAgICAgICAgY29uc3QgU2Vjb25kUHJpdmF0ZUtleVhwcnYgPSByYXdQcnZUb0V4dGVuZGVkS2V5cyhTZWNvbmRQcml2YXRlS2V5KTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IFNlY29uZFByaXZhdGVLZXlYcHJ2LnhwcnYgfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgICAgIHR4LnRvSnNvbigpLnNpZ25hdHVyZVswXSxcbiAgICAgICAgICAnYmQwOGU2Y2Q4NzZiYjU3M2RkMDBhMzI4NzBiNThiNzBlYThiNzkwOGY1MTMxNjg2NTAyNTg5OTQxYmZhNGZkZGE3NmI4YzgxYmJiY2ZjNTQ5YmU2ZDQ5ODg2NTdjZWExMjJkZjdkYTQ2YzcyMDQxZGVmMjY4M2Q2ZWNiMDRhNzQwMSdcbiAgICAgICAgKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgICAgIHR4LnRvSnNvbigpLnNpZ25hdHVyZVsxXSxcbiAgICAgICAgICAnZjNjYWJlMmY0YWVkMTNlMjM0MmM3OGM3YmY0NjI2ZWEzNmNkNjUwOWE0NDQxOGMyNDg2NjgxNGQzNDI2NzAzNjg2YmU5ZWYyMWJkOTkzMzI0YzUyMDU2NWJlZWU4MjAyMDFmMmE1MGE5YWM5NzE3MzI0MTBkM2ViNjljZGIyYTYwMCdcbiAgICAgICAgKTtcblxuICAgICAgICBhc3NlcnQuZXF1YWwodHguaWQsICc4MGI4YjllYWVkNTFjOGJiYTNiNDlmN2YwZTdjYzVmMjFhYzk5YTZmM2UyODkzYzY2M2I1NDRiZjJjNjk1YjFkJyk7XG4gICAgICAgIGFzc2VydC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICAgIGFzc2VydC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0c1swXS5hZGRyZXNzLCAnVFRzR3duVExRNGVyeUZKcER2SlNmdUdReFBYUkNqWHZaeicpO1xuICAgICAgICBhc3NlcnQuZXF1YWwodHguaW5wdXRzWzBdLnZhbHVlLCAnMTcxOCcpO1xuICAgICAgICBhc3NlcnQuZXF1YWwodHgub3V0cHV0cy5sZW5ndGgsIDEpO1xuICAgICAgICBhc3NlcnQuZXF1YWwodHgub3V0cHV0c1swXS5hZGRyZXNzLCAnVE5Zc3NpUGdhZjlYWXozdXJCVXFyODYxVGZxeHZrbzQ3QicpO1xuICAgICAgICBhc3NlcnQuZXF1YWwodHgub3V0cHV0c1swXS52YWx1ZSwgJzE3MTgnKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKHR4LnZhbGlkRnJvbSwgMTU3MTgxMTQxMDgxOSk7XG4gICAgICAgIGFzc2VydC5lcXVhbCh0eC52YWxpZFRvLCAxNTcxODExNDY4MDAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3Nob3VsZCBmYWlsIHRvIHNpZ24nLCAoKSA9PiB7XG4gICAgICBpdCgnYSB0cmFuc2FjdGlvbiB3aXRoIHRoZSBzYW1lIGtleScsICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhKc29uID0gSlNPTi5zdHJpbmdpZnkoRmlyc3RTaWdPbkJ1aWxkVHJhbnNhY3Rpb24pO1xuICAgICAgICB0eEJ1aWxkZXIuZnJvbSh0eEpzb24pO1xuICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5zaWduKHsga2V5OiBGaXJzdFByaXZhdGVLZXkgfSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUcmFuc2FjdGlvbiBidWlsZGVyJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYnVpbGQgYW4gdXBkYXRlIGFjY291bnQgdHgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEpzb24gPSBKU09OLnN0cmluZ2lmeShVbnNpZ25lZEFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3RUeCk7XG4gICAgICB0eEJ1aWxkZXIuZnJvbSh0eEpzb24pO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IEFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3RQcml2IH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHNpZ25lZFR4SnNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgICBhc3NlcnQuZXF1YWwoc2lnbmVkVHhKc29uLnR4SUQsIFVuc2lnbmVkQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdFR4LnR4SUQpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHNpZ25lZFR4SnNvbi5yYXdfZGF0YV9oZXgsIFVuc2lnbmVkQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdFR4LnJhd19kYXRhX2hleCk7XG4gICAgICBhc3NlcnQuZXF1YWwoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHNpZ25lZFR4SnNvbi5yYXdfZGF0YSksXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KFVuc2lnbmVkQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdFR4LnJhd19kYXRhKVxuICAgICAgKTtcbiAgICAgIGFzc2VydC5lcXVhbChzaWduZWRUeEpzb24uc2lnbmF0dXJlLmxlbmd0aCwgMSk7XG4gICAgICBhc3NlcnQuZXF1YWwoXG4gICAgICAgIHNpZ25lZFR4SnNvbi5zaWduYXR1cmVbMF0sXG4gICAgICAgICcyYmM1MDMwNzI3ZDQyZWQ2NDJjMjgwNmEzYzFhNWEwMzkzNDA4YjE1OTU0MWYyMTYzZGY0YmE2OTJjNWMxMjQwZTJkZGU1YTJhYWU0ZWNhZDQ2NTQxNGU2MGI1YWVjYTg1MjJkMGEyYjY2MDZmODhhMzI2NjU4ODA5MTYxMzM0ZjAwJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYW4gaGFsZiBzaWduZWQgdHgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEpzb24gPSBKU09OLnN0cmluZ2lmeShVbnNpZ25lZEJ1aWxkVHJhbnNhY3Rpb24pO1xuICAgICAgdHhCdWlsZGVyLmZyb20odHhKc29uKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBGaXJzdFByaXZhdGVLZXkgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBhc3NlcnQuZXF1YWwodHguaWQsICc4MGI4YjllYWVkNTFjOGJiYTNiNDlmN2YwZTdjYzVmMjFhYzk5YTZmM2UyODkzYzY2M2I1NDRiZjJjNjk1YjFkJyk7XG4gICAgICBhc3NlcnQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0c1swXS5hZGRyZXNzLCAnVFRzR3duVExRNGVyeUZKcER2SlNmdUdReFBYUkNqWHZaeicpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0c1swXS52YWx1ZSwgJzE3MTgnKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICBhc3NlcnQuZXF1YWwodHgub3V0cHV0c1swXS5hZGRyZXNzLCAnVE5Zc3NpUGdhZjlYWXozdXJCVXFyODYxVGZxeHZrbzQ3QicpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4Lm91dHB1dHNbMF0udmFsdWUsICcxNzE4Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHRoZSByaWdodCBKU09OIGFmdGVyIGlzIGhhbGYgc2lnbmVkIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhKc29uID0gSlNPTi5zdHJpbmdpZnkoVW5zaWduZWRCdWlsZFRyYW5zYWN0aW9uKTtcbiAgICAgIHR4QnVpbGRlci5mcm9tKHR4SnNvbik7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogRmlyc3RQcml2YXRlS2V5IH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHNpZ25lZFR4SnNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgICBhc3NlcnQuZXF1YWwoc2lnbmVkVHhKc29uLnR4SUQsIFVuc2lnbmVkQnVpbGRUcmFuc2FjdGlvbi50eElEKTtcbiAgICAgIGFzc2VydC5lcXVhbChzaWduZWRUeEpzb24ucmF3X2RhdGFfaGV4LCBVbnNpZ25lZEJ1aWxkVHJhbnNhY3Rpb24ucmF3X2RhdGFfaGV4KTtcbiAgICAgIGFzc2VydC5lcXVhbChKU09OLnN0cmluZ2lmeShzaWduZWRUeEpzb24ucmF3X2RhdGEpLCBKU09OLnN0cmluZ2lmeShVbnNpZ25lZEJ1aWxkVHJhbnNhY3Rpb24ucmF3X2RhdGEpKTtcbiAgICAgIGFzc2VydC5lcXVhbChzaWduZWRUeEpzb24uc2lnbmF0dXJlLmxlbmd0aCwgMSk7XG4gICAgICBhc3NlcnQuZXF1YWwoXG4gICAgICAgIHNpZ25lZFR4SnNvbi5zaWduYXR1cmVbMF0sXG4gICAgICAgICdiZDA4ZTZjZDg3NmJiNTczZGQwMGEzMjg3MGI1OGI3MGVhOGI3OTA4ZjUxMzE2ODY1MDI1ODk5NDFiZmE0ZmRkYTc2YjhjODFiYmJjZmM1NDliZTZkNDk4ODY1N2NlYTEyMmRmN2RhNDZjNzIwNDFkZWYyNjgzZDZlY2IwNGE3NDAxJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IGV4dGVuZCBhIGhhbGYgc2lnbmVkIHR4JywgKCkgPT4ge1xuICAgICAgY29uc3QgdHhKc29uID0gSlNPTi5zdHJpbmdpZnkoVW5zaWduZWRCdWlsZFRyYW5zYWN0aW9uKTtcbiAgICAgIHR4QnVpbGRlci5mcm9tKHR4SnNvbik7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogRmlyc3RQcml2YXRlS2V5IH0pO1xuXG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5leHRlbmRWYWxpZFRvKDEwMDAwKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4dGVuZCBhbiB1bnNpZ25lZCB0eCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGV4dGVuZE1zID0gMTAwMDA7XG4gICAgICB0eEJ1aWxkZXIuZnJvbShKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KFVuc2lnbmVkQnVpbGRUcmFuc2FjdGlvbikpKTtcbiAgICAgIHR4QnVpbGRlci5leHRlbmRWYWxpZFRvKGV4dGVuZE1zKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGFzc2VydC5ub3RFcXVhbCh0eC5pZCwgVW5zaWduZWRCdWlsZFRyYW5zYWN0aW9uLnR4SUQpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlkLCAnNzY0YWE4YTcyYzJjNzIwYTY1NTZkZWY3N2Q2MDkyZjcyOWI2ZTE0MjA5ZDgxMzBmMTY5MmQ1YWZmMTNmMjUwMycpO1xuICAgICAgY29uc3Qgb2xkRXhwaXJhdGlvbiA9IFVuc2lnbmVkQnVpbGRUcmFuc2FjdGlvbi5yYXdfZGF0YS5leHBpcmF0aW9uO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LnZhbGlkVG8sIG9sZEV4cGlyYXRpb24gKyBleHRlbmRNcyk7XG4gICAgICBhc3NlcnQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0c1swXS5hZGRyZXNzLCAnVFRzR3duVExRNGVyeUZKcER2SlNmdUdReFBYUkNqWHZaeicpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0c1swXS52YWx1ZSwgJzE3MTgnKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICBhc3NlcnQuZXF1YWwodHgub3V0cHV0c1swXS5hZGRyZXNzLCAnVE5Zc3NpUGdhZjlYWXozdXJCVXFyODYxVGZxeHZrbzQ3QicpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4Lm91dHB1dHNbMF0udmFsdWUsICcxNzE4Jyk7XG4gICAgICBhc3NlcnQuZXF1YWwodHgudmFsaWRGcm9tLCAxNTcxODExNDEwODE5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY2F0Y2ggYW4gaW52YWxpZCBpZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IEpTT04uc3RyaW5naWZ5KEludmFsaWRJRFRyYW5zYWN0aW9uKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmZyb20odHhKc29uKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBvZiB3cm9uZyBpZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IEpTT04uc3RyaW5naWZ5KFVuc2lnbmVkQnVpbGRJbnZhbGlkSURUcmFuc2FjdGlvbik7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5mcm9tKHR4SnNvbikpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBleGNlcHRpb24gb2YgZW1wdHkgaWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEpzb24gPSBKU09OLnN0cmluZ2lmeShVbnNpZ25lZEJ1aWxkRW1wdHlJRFRyYW5zYWN0aW9uKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmZyb20odHhKc29uKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBvZiBpbnZhbGlkIHRpbWUgc3RhbXAnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEpzb24gPSBKU09OLnN0cmluZ2lmeShVbnNpZ25lZEludmFsaWRUaW1lU3RhbXBCdWlsZFRyYW5zYWN0aW9uKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmZyb20odHhKc29uKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBvZiBpbnZhbGlkIGV4cGlyYXRpb24gdGltZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IEpTT04uc3RyaW5naWZ5KFVuc2lnbmVkSW52YWxpZEV4cGlyYXRpb25CdWlsZFRyYW5zYWN0aW9uKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmZyb20odHhKc29uKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBvZiBub24tZXhpc3RlbmNlIG9mIGNvbnRyYWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgdHhKc29uID0gSlNPTi5zdHJpbmdpZnkoVW5zaWduZWRJbnZhbGlkQ29udHJhY3RCdWlsZFRyYW5zYWN0aW9uKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmZyb20odHhKc29uKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIEpTT04gdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEpzb24gPSBVbnNpZ25lZEFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3RUeDtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gdHhCdWlsZGVyLmZyb20odHhKc29uKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHN0cmluZ2lmaWVkIEpTT04gdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeShVbnNpZ25lZEJ1aWxkVHJhbnNhY3Rpb24pO1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB0eEJ1aWxkZXIuZnJvbSh0eEpzb25TdHJpbmcpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJyN2YWxpZGF0ZUtleScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIG5vdCB0aHJvdyBhbiBlcnJvciB3aGVuIHRoZSBrZXkgaXMgdmFsaWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSAnMkRCRUFDMUMyMjg0OUY0NzUxNDQ0NUE1NkFFRjJFRjE2NDUyOEE1MDJERTRCRDI4OUUyM0VBMUUyRDRDNEIwNic7XG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHR4QnVpbGRlci52YWxpZGF0ZUtleSh7IGtleSB9KSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIHdoZW4gdGhlIGtleSBpcyBpbnZhbGlkJywgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gJ2ppcmFpeWEnO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudmFsaWRhdGVLZXkoeyBrZXkgfSksIC9UaGUgcHJvdmlkZWQga2V5IGlzIG5vdCB2YWxpZC8pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=trx.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trx.d.ts","sourceRoot":"","sources":["../../../test/unit/trx.ts"],"names":[],"mappings":""}