@bitgo-beta/sdk-coin-trx 1.2.3-alpha.43 → 1.2.3-alpha.430
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/resources/protobuf/Contract.proto +32 -0
- package/dist/resources/protobuf/tron.d.ts +1478 -214
- package/dist/resources/protobuf/tron.js +6312 -2600
- package/dist/resources/protobuf/tron.proto +6 -0
- package/dist/src/index.js +6 -2
- package/dist/src/lib/constants.d.ts +3 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +6 -0
- package/dist/src/lib/contractCallBuilder.d.ts +1 -35
- package/dist/src/lib/contractCallBuilder.d.ts.map +1 -1
- package/dist/src/lib/contractCallBuilder.js +12 -75
- package/dist/src/lib/delegateResourceTxBuilder.d.ts +27 -0
- package/dist/src/lib/delegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/delegateResourceTxBuilder.js +98 -0
- package/dist/src/lib/enum.d.ts +36 -1
- package/dist/src/lib/enum.d.ts.map +1 -1
- package/dist/src/lib/enum.js +40 -4
- package/dist/src/lib/freezeBalanceTxBuilder.d.ts +71 -0
- package/dist/src/lib/freezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/freezeBalanceTxBuilder.js +211 -0
- package/dist/src/lib/iface.d.ts +220 -2
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.js +23 -9
- package/dist/src/lib/keyPair.d.ts +0 -1
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +31 -18
- package/dist/src/lib/resourceManagementTxBuilder.d.ts +72 -0
- package/dist/src/lib/resourceManagementTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/resourceManagementTxBuilder.js +150 -0
- package/dist/src/lib/tokenTransferBuilder.d.ts +1 -1
- package/dist/src/lib/tokenTransferBuilder.js +3 -3
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +92 -6
- package/dist/src/lib/transactionBuilder.d.ts +50 -5
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +110 -21
- package/dist/src/lib/undelegateResourceTxBuilder.d.ts +27 -0
- package/dist/src/lib/undelegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/undelegateResourceTxBuilder.js +98 -0
- package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts +65 -0
- package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/unfreezeBalanceTxBuilder.js +204 -0
- package/dist/src/lib/utils.d.ts +85 -4
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +445 -47
- package/dist/src/lib/voteWitnessTxBuilder.d.ts +62 -0
- package/dist/src/lib/voteWitnessTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/voteWitnessTxBuilder.js +219 -0
- package/dist/src/lib/withdrawBuilder.d.ts +49 -0
- package/dist/src/lib/withdrawBuilder.d.ts.map +1 -0
- package/dist/src/lib/withdrawBuilder.js +167 -0
- package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts +49 -0
- package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.js +167 -0
- package/dist/src/lib/wrappedBuilder.d.ts +56 -0
- package/dist/src/lib/wrappedBuilder.d.ts.map +1 -1
- package/dist/src/lib/wrappedBuilder.js +86 -2
- package/dist/src/trx.d.ts +78 -4
- package/dist/src/trx.d.ts.map +1 -1
- package/dist/src/trx.js +436 -147
- package/dist/src/trxToken.d.ts +2 -2
- package/dist/src/trxToken.d.ts.map +1 -1
- package/dist/src/trxToken.js +5 -5
- package/dist/test/fixtures.d.ts +40 -0
- package/dist/test/fixtures.d.ts.map +1 -0
- package/dist/test/fixtures.js +46 -0
- package/dist/test/resources.d.ts +586 -0
- package/dist/test/resources.d.ts.map +1 -0
- package/dist/test/resources.js +746 -0
- package/dist/test/unit/index.d.ts +2 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +19 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +163 -0
- package/dist/test/unit/transaction.d.ts +2 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +38 -0
- package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/contractCallBuilder.js +315 -0
- package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.js +255 -0
- package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.js +285 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +42 -0
- package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.js +255 -0
- package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.js +256 -0
- package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.js +277 -0
- package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.js +213 -0
- package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.js +213 -0
- package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/wrappedBuilder.js +50 -0
- package/dist/test/unit/transactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder.js +178 -0
- package/dist/test/unit/trx.d.ts +2 -0
- package/dist/test/unit/trx.d.ts.map +1 -0
- package/dist/test/unit/trx.js +639 -0
- package/dist/test/unit/util.d.ts +2 -0
- package/dist/test/unit/util.d.ts.map +1 -0
- package/dist/test/unit/util.js +141 -0
- package/dist/test/unit/verifyTransaction.d.ts +2 -0
- package/dist/test/unit/verifyTransaction.d.ts.map +1 -0
- package/dist/test/unit/verifyTransaction.js +378 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +20 -15
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -118
- package/resources/README.md +0 -31
- package/resources/protobuf/Contract.proto +0 -256
- package/resources/protobuf/Discover.proto +0 -44
- package/resources/protobuf/tron.d.ts +0 -11205
- package/resources/protobuf/tron.js +0 -33480
- package/resources/protobuf/tron.proto +0 -677
|
@@ -0,0 +1,255 @@
|
|
|
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 UnDelegateResource builder', function () {
|
|
12
|
+
const initTxBuilder = () => {
|
|
13
|
+
const builder = (0, builder_1.getBuilder)('ttrx').getUnDelegateResourceTxBuilder();
|
|
14
|
+
builder.source({ address: resources_1.PARTICIPANTS.from.address });
|
|
15
|
+
builder.setReceiverAddress({ address: resources_1.PARTICIPANTS.to.address });
|
|
16
|
+
builder.setBalance(resources_1.UNDELEGATION_BALANCE);
|
|
17
|
+
builder.setResource(resources_1.RESOURCE_ENERGY);
|
|
18
|
+
builder.block({ number: resources_1.BLOCK_NUMBER, hash: resources_1.BLOCK_HASH });
|
|
19
|
+
return builder;
|
|
20
|
+
};
|
|
21
|
+
(0, node_test_1.describe)('should build successfully', () => {
|
|
22
|
+
(0, node_test_1.it)('a transaction with all correct inputs', async () => {
|
|
23
|
+
const timestamp = Date.now();
|
|
24
|
+
const txBuilder = initTxBuilder();
|
|
25
|
+
txBuilder.timestamp(timestamp);
|
|
26
|
+
txBuilder.expiration(timestamp + 40000);
|
|
27
|
+
const tx = (await txBuilder.build());
|
|
28
|
+
const txJson = tx.toJson();
|
|
29
|
+
assert_1.default.equal(tx.type, sdk_core_1.TransactionType.UnDelegateResource);
|
|
30
|
+
assert_1.default.equal(tx.inputs.length, 1);
|
|
31
|
+
assert_1.default.equal(tx.inputs[0].address, resources_1.PARTICIPANTS.from.address);
|
|
32
|
+
assert_1.default.equal(tx.outputs[0].address, resources_1.PARTICIPANTS.to.address);
|
|
33
|
+
assert_1.default.equal(tx.inputs[0].value, '1000000');
|
|
34
|
+
assert_1.default.equal(tx.outputs[0].value, '1000000');
|
|
35
|
+
assert_1.default.deepStrictEqual(txJson.raw_data.contract, resources_1.UNDELEGATE_RESOURCE_CONTRACT);
|
|
36
|
+
});
|
|
37
|
+
(0, node_test_1.it)('an unsigned transaction from a string and from a JSON', async () => {
|
|
38
|
+
const timestamp = Date.now();
|
|
39
|
+
const txBuilder = initTxBuilder();
|
|
40
|
+
txBuilder.timestamp(timestamp);
|
|
41
|
+
txBuilder.expiration(timestamp + 40000);
|
|
42
|
+
const tx = await txBuilder.build();
|
|
43
|
+
const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toBroadcastFormat());
|
|
44
|
+
txBuilder2.sign({ key: resources_1.PARTICIPANTS.from.pk });
|
|
45
|
+
const tx2 = await txBuilder2.build();
|
|
46
|
+
const txBuilder3 = (0, builder_1.getBuilder)('ttrx').from(tx.toJson());
|
|
47
|
+
txBuilder3.sign({ key: resources_1.PARTICIPANTS.from.pk });
|
|
48
|
+
const tx3 = await txBuilder3.build();
|
|
49
|
+
assert_1.default.deepStrictEqual(tx2, tx3);
|
|
50
|
+
});
|
|
51
|
+
(0, node_test_1.it)('an unsigned transaction with extended duration', async () => {
|
|
52
|
+
const timestamp = Date.now();
|
|
53
|
+
const expiration = timestamp + resources_1.EXPIRATION;
|
|
54
|
+
const extension = 60000;
|
|
55
|
+
const txBuilder = initTxBuilder();
|
|
56
|
+
txBuilder.timestamp(timestamp);
|
|
57
|
+
txBuilder.expiration(expiration);
|
|
58
|
+
const tx = await txBuilder.build();
|
|
59
|
+
const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toBroadcastFormat());
|
|
60
|
+
txBuilder2.extendValidTo(extension);
|
|
61
|
+
txBuilder2.sign({ key: resources_1.PARTICIPANTS.from.pk });
|
|
62
|
+
const tx2 = await txBuilder2.build();
|
|
63
|
+
assert_1.default.equal(tx2.inputs.length, 1);
|
|
64
|
+
assert_1.default.equal(tx2.inputs[0].address, resources_1.PARTICIPANTS.from.address);
|
|
65
|
+
assert_1.default.equal(tx2.inputs[0].value, '1000000');
|
|
66
|
+
assert_1.default.equal(tx2.outputs[0].value, '1000000');
|
|
67
|
+
assert_1.default.equal(tx2.outputs[0].address, resources_1.PARTICIPANTS.to.address);
|
|
68
|
+
const txJson = tx2.toJson();
|
|
69
|
+
assert_1.default.equal(txJson.raw_data.expiration, expiration + extension);
|
|
70
|
+
});
|
|
71
|
+
(0, node_test_1.it)('a transaction signed multiple times', async () => {
|
|
72
|
+
const timestamp = Date.now();
|
|
73
|
+
const txBuilder = initTxBuilder();
|
|
74
|
+
txBuilder.timestamp(timestamp);
|
|
75
|
+
txBuilder.expiration(timestamp + resources_1.EXPIRATION);
|
|
76
|
+
const tx = await txBuilder.build();
|
|
77
|
+
let txJson = tx.toJson();
|
|
78
|
+
let rawData = txJson.raw_data;
|
|
79
|
+
assert_1.default.deepStrictEqual(rawData.contract, resources_1.UNDELEGATE_RESOURCE_CONTRACT);
|
|
80
|
+
assert_1.default.equal(txJson.signature.length, 0);
|
|
81
|
+
const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toJson());
|
|
82
|
+
txBuilder2.sign({ key: resources_1.PARTICIPANTS.custodian.pk });
|
|
83
|
+
const tx2 = await txBuilder2.build();
|
|
84
|
+
txJson = tx2.toJson();
|
|
85
|
+
rawData = txJson.raw_data;
|
|
86
|
+
assert_1.default.deepStrictEqual(rawData.contract, resources_1.UNDELEGATE_RESOURCE_CONTRACT);
|
|
87
|
+
assert_1.default.equal(txJson.signature.length, 1);
|
|
88
|
+
const txBuilder3 = (0, builder_1.getBuilder)('ttrx').from(tx2.toJson());
|
|
89
|
+
txBuilder3.sign({ key: resources_1.PARTICIPANTS.from.pk });
|
|
90
|
+
const tx3 = await txBuilder3.build();
|
|
91
|
+
txJson = tx3.toJson();
|
|
92
|
+
rawData = txJson.raw_data;
|
|
93
|
+
assert_1.default.deepStrictEqual(rawData.contract, resources_1.UNDELEGATE_RESOURCE_CONTRACT);
|
|
94
|
+
assert_1.default.equal(rawData.expiration, timestamp + resources_1.EXPIRATION);
|
|
95
|
+
assert_1.default.equal(rawData.timestamp, timestamp);
|
|
96
|
+
assert_1.default.equal(txJson.signature.length, 2);
|
|
97
|
+
assert_1.default.equal(tx3.inputs.length, 1);
|
|
98
|
+
assert_1.default.equal(tx3.inputs[0].address, resources_1.PARTICIPANTS.from.address);
|
|
99
|
+
assert_1.default.equal(tx3.inputs[0].value, '1000000');
|
|
100
|
+
assert_1.default.equal(tx3.outputs[0].value, '1000000');
|
|
101
|
+
assert_1.default.equal(tx3.outputs[0].address, resources_1.PARTICIPANTS.to.address);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
(0, node_test_1.describe)('should validate', () => {
|
|
105
|
+
(0, node_test_1.it)('a valid expiration', async () => {
|
|
106
|
+
const now = Date.now();
|
|
107
|
+
const expiration = now + resources_1.EXPIRATION;
|
|
108
|
+
const txBuilder = initTxBuilder();
|
|
109
|
+
txBuilder.timestamp(now);
|
|
110
|
+
txBuilder.expiration(expiration + 1000);
|
|
111
|
+
txBuilder.expiration(expiration);
|
|
112
|
+
const tx = await txBuilder.build();
|
|
113
|
+
const txJson = tx.toJson();
|
|
114
|
+
assert_1.default.equal(txJson.raw_data.expiration, expiration);
|
|
115
|
+
});
|
|
116
|
+
(0, node_test_1.it)('an expiration greater than one year', async () => {
|
|
117
|
+
const now = Date.now();
|
|
118
|
+
const txBuilder = initTxBuilder();
|
|
119
|
+
txBuilder.timestamp(now);
|
|
120
|
+
assert_1.default.throws(() => {
|
|
121
|
+
txBuilder.expiration(now + 31536000001);
|
|
122
|
+
}, (e) => e.message === 'Expiration must not be greater than one day');
|
|
123
|
+
});
|
|
124
|
+
(0, node_test_1.it)('an expiration less than the current date', async () => {
|
|
125
|
+
const now = Date.now();
|
|
126
|
+
const txBuilder = initTxBuilder();
|
|
127
|
+
txBuilder.timestamp(now - 2000);
|
|
128
|
+
assert_1.default.throws(() => {
|
|
129
|
+
txBuilder.expiration(now - 1000);
|
|
130
|
+
}, (e) => e.message === 'Expiration must be greater than current time');
|
|
131
|
+
});
|
|
132
|
+
(0, node_test_1.it)('an expiration less than the timestamp', async () => {
|
|
133
|
+
const now = Date.now();
|
|
134
|
+
const txBuilder = initTxBuilder();
|
|
135
|
+
txBuilder.timestamp(now + 2000);
|
|
136
|
+
assert_1.default.throws(() => {
|
|
137
|
+
txBuilder.expiration(now + 1000);
|
|
138
|
+
}, (e) => e.message === 'Expiration must be greater than timestamp');
|
|
139
|
+
});
|
|
140
|
+
(0, node_test_1.it)('an expiration set after build', async () => {
|
|
141
|
+
const now = Date.now();
|
|
142
|
+
const expiration = now + resources_1.EXPIRATION;
|
|
143
|
+
const txBuilder = initTxBuilder();
|
|
144
|
+
await txBuilder.build();
|
|
145
|
+
assert_1.default.throws(() => {
|
|
146
|
+
txBuilder.expiration(expiration);
|
|
147
|
+
}, (e) => e.message === 'Expiration is already set, it can only be extended');
|
|
148
|
+
});
|
|
149
|
+
(0, node_test_1.it)('an expiration set after deserializing', async () => {
|
|
150
|
+
const now = Date.now();
|
|
151
|
+
const expiration = now + resources_1.EXPIRATION;
|
|
152
|
+
const txBuilder = initTxBuilder();
|
|
153
|
+
const tx = await txBuilder.build();
|
|
154
|
+
const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toBroadcastFormat());
|
|
155
|
+
assert_1.default.throws(() => {
|
|
156
|
+
txBuilder2.expiration(expiration);
|
|
157
|
+
}, (e) => e.message === 'Expiration is already set, it can only be extended');
|
|
158
|
+
});
|
|
159
|
+
(0, node_test_1.it)('an extension without a set expiration', async () => {
|
|
160
|
+
const txBuilder = initTxBuilder();
|
|
161
|
+
assert_1.default.throws(() => {
|
|
162
|
+
txBuilder.extendValidTo(20000);
|
|
163
|
+
}, (e) => e.message === 'There is not expiration to extend');
|
|
164
|
+
});
|
|
165
|
+
(0, node_test_1.it)('a zero millisecond extension', async () => {
|
|
166
|
+
const txBuilder = initTxBuilder();
|
|
167
|
+
const expiration = Date.now() + resources_1.EXPIRATION;
|
|
168
|
+
txBuilder.expiration(expiration);
|
|
169
|
+
const tx = await txBuilder.build();
|
|
170
|
+
const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toBroadcastFormat());
|
|
171
|
+
assert_1.default.throws(() => {
|
|
172
|
+
txBuilder2.extendValidTo(0);
|
|
173
|
+
}, (e) => e.message === 'Value cannot be below zero');
|
|
174
|
+
});
|
|
175
|
+
(0, node_test_1.it)('an extension greater than one year', async () => {
|
|
176
|
+
const txBuilder = initTxBuilder();
|
|
177
|
+
const expiration = Date.now() + resources_1.EXPIRATION;
|
|
178
|
+
txBuilder.expiration(expiration);
|
|
179
|
+
const tx = await txBuilder.build();
|
|
180
|
+
const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toBroadcastFormat());
|
|
181
|
+
assert_1.default.throws(() => {
|
|
182
|
+
txBuilder2.extendValidTo(31536000001);
|
|
183
|
+
}, (e) => e.message === 'The expiration cannot be extended more than one year');
|
|
184
|
+
});
|
|
185
|
+
(0, node_test_1.it)('an extension after signing', async () => {
|
|
186
|
+
const txBuilder = initTxBuilder();
|
|
187
|
+
txBuilder.sign({ key: resources_1.PARTICIPANTS.from.pk });
|
|
188
|
+
const tx = await txBuilder.build();
|
|
189
|
+
const txBuilder2 = (0, builder_1.getBuilder)('ttrx').from(tx.toBroadcastFormat());
|
|
190
|
+
assert_1.default.throws(() => {
|
|
191
|
+
txBuilder2.extendValidTo(20000);
|
|
192
|
+
}, (e) => e.message === 'Cannot extend a signed transaction');
|
|
193
|
+
});
|
|
194
|
+
(0, node_test_1.it)('valid resource: ENERGY', async () => {
|
|
195
|
+
const builder = (0, builder_1.getBuilder)('ttrx').getUnDelegateResourceTxBuilder();
|
|
196
|
+
builder
|
|
197
|
+
.source({ address: resources_1.PARTICIPANTS.from.address })
|
|
198
|
+
.block({ number: resources_1.BLOCK_NUMBER, hash: resources_1.BLOCK_HASH })
|
|
199
|
+
.setBalance(resources_1.UNDELEGATION_BALANCE)
|
|
200
|
+
.setReceiverAddress({ address: resources_1.PARTICIPANTS.to.address });
|
|
201
|
+
builder.setResource('ENERGY');
|
|
202
|
+
assert_1.default.doesNotReject(() => {
|
|
203
|
+
return builder.build();
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
(0, node_test_1.it)('valid resource: BANDWIDTH', async () => {
|
|
207
|
+
const builder = (0, builder_1.getBuilder)('ttrx').getUnDelegateResourceTxBuilder();
|
|
208
|
+
builder
|
|
209
|
+
.source({ address: resources_1.PARTICIPANTS.from.address })
|
|
210
|
+
.block({ number: resources_1.BLOCK_NUMBER, hash: resources_1.BLOCK_HASH })
|
|
211
|
+
.setBalance(resources_1.UNDELEGATION_BALANCE)
|
|
212
|
+
.setReceiverAddress({ address: resources_1.PARTICIPANTS.to.address });
|
|
213
|
+
builder.setResource('BANDWIDTH');
|
|
214
|
+
assert_1.default.doesNotReject(() => {
|
|
215
|
+
return builder.build();
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
(0, node_test_1.it)('invalid resource', async () => {
|
|
219
|
+
const builder = (0, builder_1.getBuilder)('ttrx').getUnDelegateResourceTxBuilder();
|
|
220
|
+
const invalidResource = 'INVALID';
|
|
221
|
+
builder
|
|
222
|
+
.source({ address: resources_1.PARTICIPANTS.custodian.address })
|
|
223
|
+
.block({ number: resources_1.BLOCK_NUMBER, hash: resources_1.BLOCK_HASH })
|
|
224
|
+
.setBalance(resources_1.UNDELEGATION_BALANCE);
|
|
225
|
+
assert_1.default.throws(() => builder.setResource(invalidResource), `${invalidResource} is a not valid resource type.`);
|
|
226
|
+
});
|
|
227
|
+
(0, node_test_1.it)('transaction mandatory fields', async () => {
|
|
228
|
+
const txBuilder = (0, builder_1.getBuilder)('ttrx').getUnDelegateResourceTxBuilder();
|
|
229
|
+
await assert_1.default.rejects(txBuilder.build(), {
|
|
230
|
+
message: 'Missing parameter: balance',
|
|
231
|
+
});
|
|
232
|
+
txBuilder.setBalance('1000000');
|
|
233
|
+
await assert_1.default.rejects(txBuilder.build(), {
|
|
234
|
+
message: 'Missing parameter: source',
|
|
235
|
+
});
|
|
236
|
+
txBuilder.source({ address: resources_1.PARTICIPANTS.from.address });
|
|
237
|
+
await assert_1.default.rejects(txBuilder.build(), {
|
|
238
|
+
message: 'Missing parameter: resource',
|
|
239
|
+
});
|
|
240
|
+
txBuilder.setResource('ENERGY');
|
|
241
|
+
await assert_1.default.rejects(txBuilder.build(), {
|
|
242
|
+
message: 'Missing parameter: receiver address',
|
|
243
|
+
});
|
|
244
|
+
txBuilder.setReceiverAddress({ address: resources_1.PARTICIPANTS.to.address });
|
|
245
|
+
await assert_1.default.rejects(txBuilder.build(), {
|
|
246
|
+
message: 'Missing block reference information',
|
|
247
|
+
});
|
|
248
|
+
txBuilder.block({ number: resources_1.BLOCK_NUMBER, hash: resources_1.BLOCK_HASH });
|
|
249
|
+
assert_1.default.doesNotReject(() => {
|
|
250
|
+
return txBuilder.build();
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kZWxlZ2F0ZVJlc291cmNlVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci91bmRlbGVnYXRlUmVzb3VyY2VUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsbURBQXVEO0FBQ3ZELHlDQUF5QztBQUV6QywrQ0FReUI7QUFDekIsc0RBQXNEO0FBR3RELElBQUEsb0JBQVEsRUFBQyxpQ0FBaUMsRUFBRTtJQUMxQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7UUFDekIsTUFBTSxPQUFPLEdBQUksSUFBQSxvQkFBVSxFQUFDLE1BQU0sQ0FBb0IsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ3hGLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsd0JBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2RCxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRSxPQUFPLEVBQUUsd0JBQVksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNqRSxPQUFPLENBQUMsVUFBVSxDQUFDLGdDQUFvQixDQUFDLENBQUM7UUFDekMsT0FBTyxDQUFDLFdBQVcsQ0FBQywyQkFBZSxDQUFDLENBQUM7UUFDckMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSx3QkFBWSxFQUFFLElBQUksRUFBRSxzQkFBVSxFQUFFLENBQUMsQ0FBQztRQUUxRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixJQUFBLG9CQUFRLEVBQUMsMkJBQTJCLEVBQUUsR0FBRyxFQUFFO1FBQ3pDLElBQUEsY0FBRSxFQUFDLHVDQUF1QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3JELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM3QixNQUFN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QUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGRlc2NyaWJlLCBpdCB9IGZyb20gJ25vZGU6dGVzdCc7XG5cbmltcG9ydCB7XG4gIFBBUlRJQ0lQQU5UUyxcbiAgQkxPQ0tfSEFTSCxcbiAgQkxPQ0tfTlVNQkVSLFxuICBFWFBJUkFUSU9OLFxuICBSRVNPVVJDRV9FTkVSR1ksXG4gIFVOREVMRUdBVElPTl9CQUxBTkNFLFxuICBVTkRFTEVHQVRFX1JFU09VUkNFX0NPTlRSQUNULFxufSBmcm9tICcuLi8uLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgZ2V0QnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvYnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiwgV3JhcHBlZEJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnVHJvbiBVbkRlbGVnYXRlUmVzb3VyY2UgYnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgaW5pdFR4QnVpbGRlciA9ICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gKGdldEJ1aWxkZXIoJ3R0cngnKSBhcyBXcmFwcGVkQnVpbGRlcikuZ2V0VW5EZWxlZ2F0ZVJlc291cmNlVHhCdWlsZGVyKCk7XG4gICAgYnVpbGRlci5zb3VyY2UoeyBhZGRyZXNzOiBQQVJUSUNJUEFOVFMuZnJvbS5hZGRyZXNzIH0pO1xuICAgIGJ1aWxkZXIuc2V0UmVjZWl2ZXJBZGRyZXNzKHsgYWRkcmVzczogUEFSVElDSVBBTlRTLnRvLmFkZHJlc3MgfSk7XG4gICAgYnVpbGRlci5zZXRCYWxhbmNlKFVOREVMRUdBVElPTl9CQUxBTkNFKTtcbiAgICBidWlsZGVyLnNldFJlc291cmNlKFJFU09VUkNFX0VORVJHWSk7XG4gICAgYnVpbGRlci5ibG9jayh7IG51bWJlcjogQkxPQ0tfTlVNQkVSLCBoYXNoOiBCTE9DS19IQVNIIH0pO1xuXG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBidWlsZCBzdWNjZXNzZnVsbHknLCAoKSA9PiB7XG4gICAgaXQoJ2EgdHJhbnNhY3Rpb24gd2l0aCBhbGwgY29ycmVjdCBpbnB1dHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnRpbWVzdGFtcCh0aW1lc3RhbXApO1xuXG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbih0aW1lc3RhbXAgKyA0MDAwMCk7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcblxuICAgICAgYXNzZXJ0LmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5VbkRlbGVnYXRlUmVzb3VyY2UpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0c1swXS5hZGRyZXNzLCBQQVJUSUNJUEFOVFMuZnJvbS5hZGRyZXNzKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eC5vdXRwdXRzWzBdLmFkZHJlc3MsIFBBUlRJQ0lQQU5UUy50by5hZGRyZXNzKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eC5pbnB1dHNbMF0udmFsdWUsICcxMDAwMDAwJyk7XG4gICAgICBhc3NlcnQuZXF1YWwodHgub3V0cHV0c1swXS52YWx1ZSwgJzEwMDAwMDAnKTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodHhKc29uLnJhd19kYXRhLmNvbnRyYWN0LCBVTkRFTEVHQVRFX1JFU09VUkNFX0NPTlRSQUNUKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiB1bnNpZ25lZCB0cmFuc2FjdGlvbiBmcm9tIGEgc3RyaW5nIGFuZCBmcm9tIGEgSlNPTicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbih0aW1lc3RhbXAgKyA0MDAwMCk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gZ2V0QnVpbGRlcigndHRyeCcpLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICB0eEJ1aWxkZXIyLnNpZ24oeyBrZXk6IFBBUlRJQ0lQQU5UUy5mcm9tLnBrIH0pO1xuICAgICAgY29uc3QgdHgyID0gYXdhaXQgdHhCdWlsZGVyMi5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIzID0gZ2V0QnVpbGRlcigndHRyeCcpLmZyb20odHgudG9Kc29uKCkpO1xuICAgICAgdHhCdWlsZGVyMy5zaWduKHsga2V5OiBQQVJUSUNJUEFOVFMuZnJvbS5wayB9KTtcbiAgICAgIGNvbnN0IHR4MyA9IGF3YWl0IHR4QnVpbGRlcjMuYnVpbGQoKTtcblxuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0eDIsIHR4Myk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gdW5zaWduZWQgdHJhbnNhY3Rpb24gd2l0aCBleHRlbmRlZCBkdXJhdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCBleHBpcmF0aW9uID0gdGltZXN0YW1wICsgRVhQSVJBVElPTjtcbiAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IDYwMDAwO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnRpbWVzdGFtcCh0aW1lc3RhbXApO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oZXhwaXJhdGlvbik7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gZ2V0QnVpbGRlcigndHRyeCcpLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICB0eEJ1aWxkZXIyLmV4dGVuZFZhbGlkVG8oZXh0ZW5zaW9uKTtcbiAgICAgIHR4QnVpbGRlcjIuc2lnbih7IGtleTogUEFSVElDSVBBTlRTLmZyb20ucGsgfSk7XG4gICAgICBjb25zdCB0eDIgPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG5cbiAgICAgIGFzc2VydC5lcXVhbCh0eDIuaW5wdXRzLmxlbmd0aCwgMSk7XG4gICAgICBhc3NlcnQuZXF1YWwodHgyLmlucHV0c1swXS5hZGRyZXNzLCBQQVJUSUNJUEFOVFMuZnJvbS5hZGRyZXNzKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eDIuaW5wdXRzWzBdLnZhbHVlLCAnMTAwMDAwMCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4Mi5vdXRwdXRzWzBdLnZhbHVlLCAnMTAwMDAwMCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4Mi5vdXRwdXRzWzBdLmFkZHJlc3MsIFBBUlRJQ0lQQU5UUy50by5hZGRyZXNzKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4Mi50b0pzb24oKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eEpzb24ucmF3X2RhdGEuZXhwaXJhdGlvbiwgZXhwaXJhdGlvbiArIGV4dGVuc2lvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnYSB0cmFuc2FjdGlvbiBzaWduZWQgbXVsdGlwbGUgdGltZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnRpbWVzdGFtcCh0aW1lc3RhbXApO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24odGltZXN0YW1wICsgRVhQSVJBVElPTik7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgbGV0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgbGV0IHJhd0RhdGEgPSB0eEpzb24ucmF3X2RhdGE7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHJhd0RhdGEuY29udHJhY3QsIFVOREVMRUdBVEVfUkVTT1VSQ0VfQ09OVFJBQ1QpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4SnNvbi5zaWduYXR1cmUubGVuZ3RoLCAwKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eC50b0pzb24oKSk7XG4gICAgICB0eEJ1aWxkZXIyLnNpZ24oeyBrZXk6IFBBUlRJQ0lQQU5UUy5jdXN0b2RpYW4ucGsgfSk7XG4gICAgICBjb25zdCB0eDIgPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgICB0eEpzb24gPSB0eDIudG9Kc29uKCk7XG4gICAgICByYXdEYXRhID0gdHhKc29uLnJhd19kYXRhO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChyYXdEYXRhLmNvbnRyYWN0LCBVTkRFTEVHQVRFX1JFU09VUkNFX0NPTlRSQUNUKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eEpzb24uc2lnbmF0dXJlLmxlbmd0aCwgMSk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjMgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eDIudG9Kc29uKCkpO1xuICAgICAgdHhCdWlsZGVyMy5zaWduKHsga2V5OiBQQVJUSUNJUEFOVFMuZnJvbS5wayB9KTtcbiAgICAgIGNvbnN0IHR4MyA9IGF3YWl0IHR4QnVpbGRlcjMuYnVpbGQoKTtcblxuICAgICAgdHhKc29uID0gdHgzLnRvSnNvbigpO1xuICAgICAgcmF3RGF0YSA9IHR4SnNvbi5yYXdfZGF0YTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocmF3RGF0YS5jb250cmFjdCwgVU5ERUxFR0FURV9SRVNPVVJDRV9DT05UUkFDVCk7XG4gICAgICBhc3NlcnQuZXF1YWwocmF3RGF0YS5leHBpcmF0aW9uLCB0aW1lc3RhbXAgKyBFWFBJUkFUSU9OKTtcbiAgICAgIGFzc2VydC5lcXVhbChyYXdEYXRhLnRpbWVzdGFtcCwgdGltZXN0YW1wKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eEpzb24uc2lnbmF0dXJlLmxlbmd0aCwgMik7XG5cbiAgICAgIGFzc2VydC5lcXVhbCh0eDMuaW5wdXRzLmxlbmd0aCwgMSk7XG4gICAgICBhc3NlcnQuZXF1YWwodHgzLmlucHV0c1swXS5hZGRyZXNzLCBQQVJUSUNJUEFOVFMuZnJvbS5hZGRyZXNzKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eDMuaW5wdXRzWzBdLnZhbHVlLCAnMTAwMDAwMCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4My5vdXRwdXRzWzBdLnZhbHVlLCAnMTAwMDAwMCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4My5vdXRwdXRzWzBdLmFkZHJlc3MsIFBBUlRJQ0lQQU5UUy50by5hZGRyZXNzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCB2YWxpZGF0ZScsICgpID0+IHtcbiAgICBpdCgnYSB2YWxpZCBleHBpcmF0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IGV4cGlyYXRpb24gPSBub3cgKyBFWFBJUkFUSU9OO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnRpbWVzdGFtcChub3cpO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oZXhwaXJhdGlvbiArIDEwMDApO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oZXhwaXJhdGlvbik7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBhc3NlcnQuZXF1YWwodHhKc29uLnJhd19kYXRhLmV4cGlyYXRpb24sIGV4cGlyYXRpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGV4cGlyYXRpb24gZ3JlYXRlciB0aGFuIG9uZSB5ZWFyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci50aW1lc3RhbXAobm93KTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihub3cgKyAzMTUzNjAwMDAwMSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ0V4cGlyYXRpb24gbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIG9uZSBkYXknXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGV4cGlyYXRpb24gbGVzcyB0aGFuIHRoZSBjdXJyZW50IGRhdGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnRpbWVzdGFtcChub3cgLSAyMDAwKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihub3cgLSAxMDAwKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnRXhwaXJhdGlvbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBjdXJyZW50IHRpbWUnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGV4cGlyYXRpb24gbGVzcyB0aGFuIHRoZSB0aW1lc3RhbXAnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnRpbWVzdGFtcChub3cgKyAyMDAwKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihub3cgKyAxMDAwKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnRXhwaXJhdGlvbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aW1lc3RhbXAnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGV4cGlyYXRpb24gc2V0IGFmdGVyIGJ1aWxkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IGV4cGlyYXRpb24gPSBub3cgKyBFWFBJUkFUSU9OO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oZXhwaXJhdGlvbik7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ0V4cGlyYXRpb24gaXMgYWxyZWFkeSBzZXQsIGl0IGNhbiBvbmx5IGJlIGV4dGVuZGVkJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiBleHBpcmF0aW9uIHNldCBhZnRlciBkZXNlcmlhbGl6aW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IGV4cGlyYXRpb24gPSBub3cgKyBFWFBJUkFUSU9OO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIyLmV4cGlyYXRpb24oZXhwaXJhdGlvbik7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ0V4cGlyYXRpb24gaXMgYWxyZWFkeSBzZXQsIGl0IGNhbiBvbmx5IGJlIGV4dGVuZGVkJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiBleHRlbnNpb24gd2l0aG91dCBhIHNldCBleHBpcmF0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5leHRlbmRWYWxpZFRvKDIwMDAwKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnVGhlcmUgaXMgbm90IGV4cGlyYXRpb24gdG8gZXh0ZW5kJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHplcm8gbWlsbGlzZWNvbmQgZXh0ZW5zaW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgY29uc3QgZXhwaXJhdGlvbiA9IERhdGUubm93KCkgKyBFWFBJUkFUSU9OO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oZXhwaXJhdGlvbik7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gZ2V0QnVpbGRlcigndHRyeCcpLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHhCdWlsZGVyMi5leHRlbmRWYWxpZFRvKDApO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdWYWx1ZSBjYW5ub3QgYmUgYmVsb3cgemVybydcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gZXh0ZW5zaW9uIGdyZWF0ZXIgdGhhbiBvbmUgeWVhcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIGNvbnN0IGV4cGlyYXRpb24gPSBEYXRlLm5vdygpICsgRVhQSVJBVElPTjtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKGV4cGlyYXRpb24pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyMiA9IGdldEJ1aWxkZXIoJ3R0cngnKS5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlcjIuZXh0ZW5kVmFsaWRUbygzMTUzNjAwMDAwMSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ1RoZSBleHBpcmF0aW9uIGNhbm5vdCBiZSBleHRlbmRlZCBtb3JlIHRoYW4gb25lIHllYXInXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGV4dGVuc2lvbiBhZnRlciBzaWduaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IFBBUlRJQ0lQQU5UUy5mcm9tLnBrIH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyMiA9IGdldEJ1aWxkZXIoJ3R0cngnKS5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlcjIuZXh0ZW5kVmFsaWRUbygyMDAwMCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ0Nhbm5vdCBleHRlbmQgYSBzaWduZWQgdHJhbnNhY3Rpb24nXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ZhbGlkIHJlc291cmNlOiBFTkVSR1knLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gKGdldEJ1aWxkZXIoJ3R0cngnKSBhcyBXcmFwcGVkQnVpbGRlcikuZ2V0VW5EZWxlZ2F0ZVJlc291cmNlVHhCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5zb3VyY2UoeyBhZGRyZXNzOiBQQVJUSUNJUEFOVFMuZnJvbS5hZGRyZXNzIH0pXG4gICAgICAgIC5ibG9jayh7IG51bWJlcjogQkxPQ0tfTlVNQkVSLCBoYXNoOiBCTE9DS19IQVNIIH0pXG4gICAgICAgIC5zZXRCYWxhbmNlKFVOREVMRUdBVElPTl9CQUxBTkNFKVxuICAgICAgICAuc2V0UmVjZWl2ZXJBZGRyZXNzKHsgYWRkcmVzczogUEFSVElDSVBBTlRTLnRvLmFkZHJlc3MgfSk7XG4gICAgICBidWlsZGVyLnNldFJlc291cmNlKCdFTkVSR1knKTtcbiAgICAgIGFzc2VydC5kb2VzTm90UmVqZWN0KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ZhbGlkIHJlc291cmNlOiBCQU5EV0lEVEgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gKGdldEJ1aWxkZXIoJ3R0cngnKSBhcyBXcmFwcGVkQnVpbGRlcikuZ2V0VW5EZWxlZ2F0ZVJlc291cmNlVHhCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5zb3VyY2UoeyBhZGRyZXNzOiBQQVJUSUNJUEFOVFMuZnJvbS5hZGRyZXNzIH0pXG4gICAgICAgIC5ibG9jayh7IG51bWJlcjogQkxPQ0tfTlVNQkVSLCBoYXNoOiBCTE9DS19IQVNIIH0pXG4gICAgICAgIC5zZXRCYWxhbmNlKFVOREVMRUdBVElPTl9CQUxBTkNFKVxuICAgICAgICAuc2V0UmVjZWl2ZXJBZGRyZXNzKHsgYWRkcmVzczogUEFSVElDSVBBTlRTLnRvLmFkZHJlc3MgfSk7XG4gICAgICBidWlsZGVyLnNldFJlc291cmNlKCdCQU5EV0lEVEgnKTtcbiAgICAgIGFzc2VydC5kb2VzTm90UmVqZWN0KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ludmFsaWQgcmVzb3VyY2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gKGdldEJ1aWxkZXIoJ3R0cngnKSBhcyBXcmFwcGVkQnVpbGRlcikuZ2V0VW5EZWxlZ2F0ZVJlc291cmNlVHhCdWlsZGVyKCk7XG4gICAgICBjb25zdCBpbnZhbGlkUmVzb3VyY2UgPSAnSU5WQUxJRCc7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5zb3VyY2UoeyBhZGRyZXNzOiBQQVJUSUNJUEFOVFMuY3VzdG9kaWFuLmFkZHJlc3MgfSlcbiAgICAgICAgLmJsb2NrKHsgbnVtYmVyOiBCTE9DS19OVU1CRVIsIGhhc2g6IEJMT0NLX0hBU0ggfSlcbiAgICAgICAgLnNldEJhbGFuY2UoVU5ERUxFR0FUSU9OX0JBTEFOQ0UpO1xuXG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIuc2V0UmVzb3VyY2UoaW52YWxpZFJlc291cmNlKSwgYCR7aW52YWxpZFJlc291cmNlfSBpcyBhIG5vdCB2YWxpZCByZXNvdXJjZSB0eXBlLmApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3RyYW5zYWN0aW9uIG1hbmRhdG9yeSBmaWVsZHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSAoZ2V0QnVpbGRlcigndHRyeCcpIGFzIFdyYXBwZWRCdWlsZGVyKS5nZXRVbkRlbGVnYXRlUmVzb3VyY2VUeEJ1aWxkZXIoKTtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHModHhCdWlsZGVyLmJ1aWxkKCksIHtcbiAgICAgICAgbWVzc2FnZTogJ01pc3NpbmcgcGFyYW1ldGVyOiBiYWxhbmNlJyxcbiAgICAgIH0pO1xuXG4gICAgICB0eEJ1aWxkZXIuc2V0QmFsYW5jZSgnMTAwMDAwMCcpO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHModHhCdWlsZGVyLmJ1aWxkKCksIHtcbiAgICAgICAgbWVzc2FnZTogJ01pc3NpbmcgcGFyYW1ldGVyOiBzb3VyY2UnLFxuICAgICAgfSk7XG5cbiAgICAgIHR4QnVpbGRlci5zb3VyY2UoeyBhZGRyZXNzOiBQQVJUSUNJUEFOVFMuZnJvbS5hZGRyZXNzIH0pO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHModHhCdWlsZGVyLmJ1aWxkKCksIHtcbiAgICAgICAgbWVzc2FnZTogJ01pc3NpbmcgcGFyYW1ldGVyOiByZXNvdXJjZScsXG4gICAgICB9KTtcblxuICAgICAgdHhCdWlsZGVyLnNldFJlc291cmNlKCdFTkVSR1knKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKHR4QnVpbGRlci5idWlsZCgpLCB7XG4gICAgICAgIG1lc3NhZ2U6ICdNaXNzaW5nIHBhcmFtZXRlcjogcmVjZWl2ZXIgYWRkcmVzcycsXG4gICAgICB9KTtcblxuICAgICAgdHhCdWlsZGVyLnNldFJlY2VpdmVyQWRkcmVzcyh7IGFkZHJlc3M6IFBBUlRJQ0lQQU5UUy50by5hZGRyZXNzIH0pO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHModHhCdWlsZGVyLmJ1aWxkKCksIHtcbiAgICAgICAgbWVzc2FnZTogJ01pc3NpbmcgYmxvY2sgcmVmZXJlbmNlIGluZm9ybWF0aW9uJyxcbiAgICAgIH0pO1xuXG4gICAgICB0eEJ1aWxkZXIuYmxvY2soeyBudW1iZXI6IEJMT0NLX05VTUJFUiwgaGFzaDogQkxPQ0tfSEFTSCB9KTtcbiAgICAgIGFzc2VydC5kb2VzTm90UmVqZWN0KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unfreezeBalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/unfreezeBalanceTxBuilder.ts"],"names":[],"mappings":""}
|