@bitgo-beta/sdk-coin-eth 4.4.1-beta.182 → 4.4.1-beta.1821
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/erc20Token.d.ts +1 -1
- package/dist/src/erc20Token.d.ts.map +1 -1
- package/dist/src/erc20Token.js +49 -28
- package/dist/src/erc721Token.d.ts +60 -0
- package/dist/src/erc721Token.d.ts.map +1 -0
- package/dist/src/erc721Token.js +334 -0
- package/dist/src/erc7984Token.d.ts +94 -0
- package/dist/src/erc7984Token.d.ts.map +1 -0
- package/dist/src/erc7984Token.js +328 -0
- package/dist/src/eth.d.ts +10 -8
- package/dist/src/eth.d.ts.map +1 -1
- package/dist/src/eth.js +49 -35
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -2
- package/dist/src/lib/index.d.ts +1 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +7 -2
- package/dist/src/lib/messages/index.d.ts +3 -0
- package/dist/src/lib/messages/index.d.ts.map +1 -0
- package/dist/src/lib/messages/index.js +6 -0
- package/dist/src/lib/transactionBuilder.d.ts +10 -5
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +17 -7
- package/dist/src/lib/transferBuilders/index.d.ts +2 -2
- package/dist/src/lib/transferBuilders/index.d.ts.map +1 -1
- package/dist/src/lib/transferBuilders/index.js +3 -2
- package/dist/src/register.d.ts +2 -0
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +36 -2
- package/dist/test/fixtures/eth.d.ts +39 -0
- package/dist/test/fixtures/eth.d.ts.map +1 -0
- package/dist/test/fixtures/eth.js +262 -0
- package/dist/test/resources/erc1155Abi.d.ts +40 -0
- package/dist/test/resources/erc1155Abi.d.ts.map +1 -0
- package/dist/test/resources/erc1155Abi.js +329 -0
- package/dist/test/resources/erc721Abi.d.ts +12 -0
- package/dist/test/resources/erc721Abi.d.ts.map +1 -0
- package/dist/test/resources/erc721Abi.js +34 -0
- package/dist/test/resources/eth.d.ts +51 -0
- package/dist/test/resources/eth.d.ts.map +1 -0
- package/dist/test/resources/eth.js +72 -0
- package/dist/test/resources/nftEncodings.d.ts +4 -0
- package/dist/test/resources/nftEncodings.d.ts.map +1 -0
- package/dist/test/resources/nftEncodings.js +7 -0
- package/dist/test/resources/walletSimpleAbi.d.ts +12 -0
- package/dist/test/resources/walletSimpleAbi.d.ts.map +1 -0
- package/dist/test/resources/walletSimpleAbi.js +44 -0
- package/dist/test/unit/erc7984Token.d.ts +2 -0
- package/dist/test/unit/erc7984Token.d.ts.map +1 -0
- package/dist/test/unit/erc7984Token.js +743 -0
- package/dist/test/unit/eth.d.ts +2 -0
- package/dist/test/unit/eth.d.ts.map +1 -0
- package/dist/test/unit/eth.js +2442 -0
- package/dist/test/unit/ethWallet.d.ts +2 -0
- package/dist/test/unit/ethWallet.d.ts.map +1 -0
- package/dist/test/unit/ethWallet.js +472 -0
- package/dist/test/unit/fixtures/ethMultiSigBackupKey.d.ts +4 -0
- package/dist/test/unit/fixtures/ethMultiSigBackupKey.d.ts.map +1 -0
- package/dist/test/unit/fixtures/ethMultiSigBackupKey.js +10 -0
- package/dist/test/unit/fixtures/ethTssBackupKey.d.ts +5 -0
- package/dist/test/unit/fixtures/ethTssBackupKey.d.ts.map +1 -0
- package/dist/test/unit/fixtures/ethTssBackupKey.js +25 -0
- package/dist/test/unit/getBuilder.d.ts +3 -0
- package/dist/test/unit/getBuilder.d.ts.map +1 -0
- package/dist/test/unit/getBuilder.js +10 -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 +175 -0
- package/dist/test/unit/register.d.ts +2 -0
- package/dist/test/unit/register.d.ts.map +1 -0
- package/dist/test/unit/register.js +73 -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 +117 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.js +101 -0
- package/dist/test/unit/transactionBuilder/contractCall.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/contractCall.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/contractCall.js +101 -0
- package/dist/test/unit/transactionBuilder/decryptionDelegation.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/decryptionDelegation.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/decryptionDelegation.js +59 -0
- package/dist/test/unit/transactionBuilder/decryptionDelegationTxBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/decryptionDelegationTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/decryptionDelegationTxBuilder.js +136 -0
- package/dist/test/unit/transactionBuilder/flushCoins.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/flushCoins.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/flushCoins.js +133 -0
- package/dist/test/unit/transactionBuilder/flushTokens.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/flushTokens.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/flushTokens.js +281 -0
- package/dist/test/unit/transactionBuilder/send.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/send.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/send.js +331 -0
- package/dist/test/unit/transactionBuilder/sendERC7984Token.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/sendERC7984Token.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/sendERC7984Token.js +361 -0
- package/dist/test/unit/transactionBuilder/sendNFT.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/sendNFT.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/sendNFT.js +295 -0
- package/dist/test/unit/transactionBuilder/singleSigSend.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/singleSigSend.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/singleSigSend.js +196 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.js +436 -0
- package/dist/test/unit/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transferBuilder.js +124 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +74 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +17 -13
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -609
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const should_1 = __importDefault(require("should"));
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const src_1 = require("../../../src");
|
|
9
|
+
const getBuilder_1 = require("../getBuilder");
|
|
10
|
+
// eslint-disable-next-line import/no-internal-modules
|
|
11
|
+
const transactionBuilder_1 = require("@bitgo-beta/abstract-eth/test/unit/transactionBuilder");
|
|
12
|
+
// Run the shared flush NFT tests from abstract-eth
|
|
13
|
+
describe('ETH Flush NFT Tests (from abstract-eth)', () => {
|
|
14
|
+
(0, transactionBuilder_1.runFlushNftTests)('eth', getBuilder_1.getBuilder);
|
|
15
|
+
});
|
|
16
|
+
describe('Eth Transaction builder flush tokens (ETH-specific)', function () {
|
|
17
|
+
const defaultKeyPair = new src_1.KeyPair({
|
|
18
|
+
prv: 'FAC4D04AA0025ECF200D74BC9B5E4616E4B8338B69B61362AAAD49F76E68EF28',
|
|
19
|
+
});
|
|
20
|
+
const buildTransaction = async function (details) {
|
|
21
|
+
const txBuilder = (0, getBuilder_1.getBuilder)('teth');
|
|
22
|
+
txBuilder.type(sdk_core_1.TransactionType.FlushTokens);
|
|
23
|
+
if (details.forwarderAddress !== undefined) {
|
|
24
|
+
txBuilder.forwarderAddress(details.forwarderAddress);
|
|
25
|
+
}
|
|
26
|
+
if (details.tokenAddress !== undefined) {
|
|
27
|
+
txBuilder.tokenAddress(details.tokenAddress);
|
|
28
|
+
}
|
|
29
|
+
if (details.fee !== undefined) {
|
|
30
|
+
txBuilder.fee(details.fee);
|
|
31
|
+
}
|
|
32
|
+
if (details.contractAddress !== undefined) {
|
|
33
|
+
txBuilder.contract(details.contractAddress);
|
|
34
|
+
}
|
|
35
|
+
if (details.counter !== undefined) {
|
|
36
|
+
txBuilder.counter(details.counter);
|
|
37
|
+
}
|
|
38
|
+
if (details.key !== undefined) {
|
|
39
|
+
txBuilder.sign({ key: details.key.getKeys().prv });
|
|
40
|
+
}
|
|
41
|
+
if (details.forwarderVersion !== undefined) {
|
|
42
|
+
txBuilder.forwarderVersion(details.forwarderVersion);
|
|
43
|
+
}
|
|
44
|
+
return await txBuilder.build();
|
|
45
|
+
};
|
|
46
|
+
describe('should build', () => {
|
|
47
|
+
it('a wallet flush forwarder transaction', async () => {
|
|
48
|
+
const tx = await buildTransaction({
|
|
49
|
+
fee: {
|
|
50
|
+
fee: '10',
|
|
51
|
+
gasLimit: '1000',
|
|
52
|
+
},
|
|
53
|
+
counter: 1,
|
|
54
|
+
forwarderAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
55
|
+
tokenAddress: '0xbcf935d206ca32929e1b887a07ed240f0d8ccd22',
|
|
56
|
+
contractAddress: '0x8f977e912ef500548a0c3be6ddde9899f1199b81',
|
|
57
|
+
});
|
|
58
|
+
tx.type.should.equal(sdk_core_1.TransactionType.FlushTokens);
|
|
59
|
+
const txJson = tx.toJson();
|
|
60
|
+
txJson.gasLimit.should.equal('1000');
|
|
61
|
+
txJson._type.should.equals(src_1.ETHTransactionType.LEGACY);
|
|
62
|
+
txJson.gasPrice.should.equal('10');
|
|
63
|
+
should_1.default.equal(txJson.nonce, 1);
|
|
64
|
+
txJson.data.should.startWith(src_1.flushForwarderTokensMethodId);
|
|
65
|
+
});
|
|
66
|
+
it('a wallet flush forwarder transaction with eip1559 fee model', async () => {
|
|
67
|
+
const tx = await buildTransaction({
|
|
68
|
+
fee: {
|
|
69
|
+
fee: '30',
|
|
70
|
+
eip1559: {
|
|
71
|
+
maxPriorityFeePerGas: '5',
|
|
72
|
+
maxFeePerGas: '30',
|
|
73
|
+
},
|
|
74
|
+
gasLimit: '1000',
|
|
75
|
+
},
|
|
76
|
+
counter: 1,
|
|
77
|
+
forwarderAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
78
|
+
tokenAddress: '0xbcf935d206ca32929e1b887a07ed240f0d8ccd22',
|
|
79
|
+
contractAddress: '0x8f977e912ef500548a0c3be6ddde9899f1199b81',
|
|
80
|
+
});
|
|
81
|
+
tx.type.should.equal(sdk_core_1.TransactionType.FlushTokens);
|
|
82
|
+
const txJson = tx.toJson();
|
|
83
|
+
txJson.gasLimit.should.equal('1000');
|
|
84
|
+
txJson._type.should.equals(src_1.ETHTransactionType.EIP1559);
|
|
85
|
+
txJson.maxFeePerGas.should.equal('30');
|
|
86
|
+
txJson.maxPriorityFeePerGas.should.equal('5');
|
|
87
|
+
should_1.default.equal(txJson.nonce, 1);
|
|
88
|
+
txJson.data.should.startWith(src_1.flushForwarderTokensMethodId);
|
|
89
|
+
});
|
|
90
|
+
it('a wallet flush forwarder transaction with nonce 0', async () => {
|
|
91
|
+
const tx = await buildTransaction({
|
|
92
|
+
fee: {
|
|
93
|
+
fee: '10',
|
|
94
|
+
gasLimit: '1000',
|
|
95
|
+
},
|
|
96
|
+
counter: 0,
|
|
97
|
+
forwarderAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
98
|
+
tokenAddress: '0xbcf935d206ca32929e1b887a07ed240f0d8ccd22',
|
|
99
|
+
contractAddress: '0x8f977e912ef500548a0c3be6ddde9899f1199b81',
|
|
100
|
+
});
|
|
101
|
+
tx.type.should.equal(sdk_core_1.TransactionType.FlushTokens);
|
|
102
|
+
const txJson = tx.toJson();
|
|
103
|
+
txJson.gasLimit.should.equal('1000');
|
|
104
|
+
txJson._type.should.equals(src_1.ETHTransactionType.LEGACY);
|
|
105
|
+
txJson.gasPrice.should.equal('10');
|
|
106
|
+
should_1.default.equal(txJson.nonce, 0);
|
|
107
|
+
txJson.data.should.startWith(src_1.flushForwarderTokensMethodId);
|
|
108
|
+
});
|
|
109
|
+
it('a wallet flush forwarder transaction with forwarder Version 4', async () => {
|
|
110
|
+
const tx = await buildTransaction({
|
|
111
|
+
fee: {
|
|
112
|
+
fee: '10',
|
|
113
|
+
gasLimit: '1000',
|
|
114
|
+
},
|
|
115
|
+
counter: 0,
|
|
116
|
+
forwarderAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
117
|
+
tokenAddress: '0xbcf935d206ca32929e1b887a07ed240f0d8ccd22',
|
|
118
|
+
contractAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
119
|
+
forwarderVersion: 4,
|
|
120
|
+
});
|
|
121
|
+
tx.type.should.equal(sdk_core_1.TransactionType.FlushTokens);
|
|
122
|
+
const txJson = tx.toJson();
|
|
123
|
+
txJson.gasLimit.should.equal('1000');
|
|
124
|
+
txJson._type.should.equals(src_1.ETHTransactionType.LEGACY);
|
|
125
|
+
should_1.default.equal(txJson.nonce, 0);
|
|
126
|
+
txJson.data.should.startWith(src_1.flushForwarderTokensMethodIdV4);
|
|
127
|
+
});
|
|
128
|
+
it('decode wallet flush forwarder transaction with forwarder Version 4', async () => {
|
|
129
|
+
const tx = await buildTransaction({
|
|
130
|
+
fee: {
|
|
131
|
+
fee: '10',
|
|
132
|
+
gasLimit: '1000',
|
|
133
|
+
},
|
|
134
|
+
counter: 0,
|
|
135
|
+
forwarderAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
136
|
+
tokenAddress: '0xbcf935d206ca32929e1b887a07ed240f0d8ccd22',
|
|
137
|
+
contractAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
138
|
+
forwarderVersion: 4,
|
|
139
|
+
});
|
|
140
|
+
const txBuiderFromRaw = (0, getBuilder_1.getBuilder)('teth');
|
|
141
|
+
txBuiderFromRaw.from(tx.toBroadcastFormat());
|
|
142
|
+
const result = await txBuiderFromRaw.build();
|
|
143
|
+
const txJson = result.toJson();
|
|
144
|
+
txJson.to.should.equal('0x53b8e91bb3b8f618b5f01004ef108f134f219573');
|
|
145
|
+
txJson.data.should.containEql('bcf935d206ca32929e1b887a07ed240f0d8ccd22');
|
|
146
|
+
});
|
|
147
|
+
it('decode wallet flush forwarder transaction with forwarder Version < 4', async () => {
|
|
148
|
+
const tx = await buildTransaction({
|
|
149
|
+
fee: {
|
|
150
|
+
fee: '10',
|
|
151
|
+
gasLimit: '1000',
|
|
152
|
+
},
|
|
153
|
+
counter: 0,
|
|
154
|
+
forwarderAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
155
|
+
tokenAddress: '0xbcf935d206ca32929e1b887a07ed240f0d8ccd22',
|
|
156
|
+
contractAddress: '0x8f977e912ef500548a0c3be6ddde9899f1199b81',
|
|
157
|
+
forwarderVersion: 2,
|
|
158
|
+
});
|
|
159
|
+
const txBuiderFromRaw = (0, getBuilder_1.getBuilder)('teth');
|
|
160
|
+
txBuiderFromRaw.from(tx.toBroadcastFormat());
|
|
161
|
+
const result = await txBuiderFromRaw.build();
|
|
162
|
+
const txJson = result.toJson();
|
|
163
|
+
txJson.to.should.equal('0x8f977e912ef500548a0c3be6ddde9899f1199b81');
|
|
164
|
+
txJson.data.should.containEql('bcf935d206ca32929e1b887a07ed240f0d8ccd22');
|
|
165
|
+
txJson.data.should.containEql('53b8e91bb3b8f618b5f01004ef108f134f219573');
|
|
166
|
+
});
|
|
167
|
+
it('an unsigned flush transaction from serialized', async () => {
|
|
168
|
+
const tx = await buildTransaction({
|
|
169
|
+
fee: {
|
|
170
|
+
fee: '10',
|
|
171
|
+
gasLimit: '1000',
|
|
172
|
+
},
|
|
173
|
+
counter: 0,
|
|
174
|
+
forwarderAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
175
|
+
tokenAddress: '0xbcf935d206ca32929e1b887a07ed240f0d8ccd22',
|
|
176
|
+
contractAddress: '0x8f977e912ef500548a0c3be6ddde9899f1199b81',
|
|
177
|
+
});
|
|
178
|
+
const serialized = tx.toBroadcastFormat();
|
|
179
|
+
// now rebuild from the signed serialized tx and make sure it stays the same
|
|
180
|
+
const newTxBuilder = (0, getBuilder_1.getBuilder)('teth');
|
|
181
|
+
newTxBuilder.from(serialized);
|
|
182
|
+
const newTx = await newTxBuilder.build();
|
|
183
|
+
should_1.default.equal(newTx.toBroadcastFormat(), serialized);
|
|
184
|
+
newTx.toJson().data.should.startWith(src_1.flushForwarderTokensMethodId);
|
|
185
|
+
should_1.default.equal(newTx.toJson().v, '0x77');
|
|
186
|
+
});
|
|
187
|
+
it('a signed flush transaction from serialized', async () => {
|
|
188
|
+
const tx = await buildTransaction({
|
|
189
|
+
fee: {
|
|
190
|
+
fee: '10',
|
|
191
|
+
gasLimit: '1000',
|
|
192
|
+
},
|
|
193
|
+
counter: 0,
|
|
194
|
+
forwarderAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
195
|
+
tokenAddress: '0xbcf935d206ca32929e1b887a07ed240f0d8ccd22',
|
|
196
|
+
contractAddress: '0x8f977e912ef500548a0c3be6ddde9899f1199b81',
|
|
197
|
+
key: defaultKeyPair,
|
|
198
|
+
});
|
|
199
|
+
const serialized = tx.toBroadcastFormat();
|
|
200
|
+
// now rebuild from the signed serialized tx and make sure it stays the same
|
|
201
|
+
const newTxBuilder = (0, getBuilder_1.getBuilder)('teth');
|
|
202
|
+
newTxBuilder.from(serialized);
|
|
203
|
+
const newTx = await newTxBuilder.build();
|
|
204
|
+
should_1.default.equal(newTx.toBroadcastFormat(), serialized);
|
|
205
|
+
should_1.default.equal(newTx.id, '0x5bfd4c6b9ae9dfbc9e062247c0debe4e1c6870a76c420ce7f6e335390420dcd6');
|
|
206
|
+
const txJson = newTx.toJson();
|
|
207
|
+
should_1.default.exist(txJson.v);
|
|
208
|
+
should_1.default.exist(txJson.r);
|
|
209
|
+
should_1.default.exist(txJson.s);
|
|
210
|
+
should_1.default.exist(txJson.from);
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
describe('should fail to build', () => {
|
|
214
|
+
it('a transaction without fee', async () => {
|
|
215
|
+
await buildTransaction({
|
|
216
|
+
counter: 0,
|
|
217
|
+
forwarderAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
218
|
+
tokenAddress: '0xbcf935d206ca32929e1b887a07ed240f0d8ccd22',
|
|
219
|
+
contractAddress: '0x8f977e912ef500548a0c3be6ddde9899f1199b81',
|
|
220
|
+
}).should.be.rejectedWith('Invalid transaction: missing fee');
|
|
221
|
+
});
|
|
222
|
+
it('a transaction without contractAddress', async () => {
|
|
223
|
+
await buildTransaction({
|
|
224
|
+
fee: {
|
|
225
|
+
fee: '10',
|
|
226
|
+
gasLimit: '10',
|
|
227
|
+
},
|
|
228
|
+
counter: 0,
|
|
229
|
+
forwarderAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
230
|
+
tokenAddress: '0xbcf935d206ca32929e1b887a07ed240f0d8ccd22',
|
|
231
|
+
}).should.be.rejectedWith('Invalid transaction: missing contract address');
|
|
232
|
+
});
|
|
233
|
+
it('a wallet flush forwarder V4 transaction with different contract address', async () => {
|
|
234
|
+
await buildTransaction({
|
|
235
|
+
fee: {
|
|
236
|
+
fee: '10',
|
|
237
|
+
gasLimit: '1000',
|
|
238
|
+
},
|
|
239
|
+
counter: 0,
|
|
240
|
+
forwarderAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
241
|
+
tokenAddress: '0xbcf935d206ca32929e1b887a07ed240f0d8ccd22',
|
|
242
|
+
contractAddress: '0x8f977e912ef500548a0c3be6ddde9899f1199b81',
|
|
243
|
+
forwarderVersion: 4,
|
|
244
|
+
}).should.be.rejectedWith('Invalid contract address: 0x8f977e912ef500548a0c3be6ddde9899f1199b81');
|
|
245
|
+
});
|
|
246
|
+
it('a transaction without tokenAddress', async () => {
|
|
247
|
+
await buildTransaction({
|
|
248
|
+
fee: {
|
|
249
|
+
fee: '10',
|
|
250
|
+
gasLimit: '10',
|
|
251
|
+
},
|
|
252
|
+
counter: 0,
|
|
253
|
+
forwarderAddress: '0x53b8e91bb3b8f618b5f01004ef108f134f219573',
|
|
254
|
+
contractAddress: '0x8f977e912ef500548a0c3be6ddde9899f1199b81',
|
|
255
|
+
}).should.be.rejectedWith('Invalid transaction: missing token address');
|
|
256
|
+
});
|
|
257
|
+
it('a transaction without forwarderAddress', async () => {
|
|
258
|
+
await buildTransaction({
|
|
259
|
+
fee: {
|
|
260
|
+
fee: '10',
|
|
261
|
+
gasLimit: '10',
|
|
262
|
+
},
|
|
263
|
+
counter: 0,
|
|
264
|
+
tokenAddress: '0xbcf935d206ca32929e1b887a07ed240f0d8ccd22',
|
|
265
|
+
contractAddress: '0x8f977e912ef500548a0c3be6ddde9899f1199b81',
|
|
266
|
+
}).should.be.rejectedWith('Invalid transaction: missing forwarder address');
|
|
267
|
+
});
|
|
268
|
+
it('a transaction with invalid counter', async () => {
|
|
269
|
+
await buildTransaction({
|
|
270
|
+
fee: {
|
|
271
|
+
fee: '10',
|
|
272
|
+
gasLimit: '10',
|
|
273
|
+
},
|
|
274
|
+
counter: -1,
|
|
275
|
+
tokenAddress: '0xbcf935d206ca32929e1b887a07ed240f0d8ccd22',
|
|
276
|
+
contractAddress: '0x8f977e912ef500548a0c3be6ddde9899f1199b81',
|
|
277
|
+
}).should.be.rejectedWith('Invalid counter: -1');
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx1c2hUb2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL2ZsdXNoVG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1EQUF1RDtBQUN2RCxzQ0FPc0I7QUFDdEIsOENBQTJDO0FBQzNDLHNEQUFzRDtBQUN0RCw4RkFBeUY7QUFFekYsbURBQW1EO0FBQ25ELFFBQVEsQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLEVBQUU7SUFDdkQsSUFBQSxxQ0FBZ0IsRUFBQyxLQUFLLEVBQUUsdUJBQVUsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLHFEQUFxRCxFQUFFO0lBQzlELE1BQU0sY0FBYyxHQUFHLElBQUksYUFBTyxDQUFDO1FBQ2pDLEdBQUcsRUFBRSxrRUFBa0U7S0FDeEUsQ0FBQyxDQUFDO0lBWUgsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLFdBQVcsT0FBMkI7UUFDbEUsTUFBTSxTQUFTLEdBQVEsSUFBQSx1QkFBVSxFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsMEJBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU1QyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN2QyxTQUFTLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcs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QyxDQUFDO2dCQUNYLFlBQVksRUFBRSw0Q0FBNEM7Z0JBQzFELGVBQWUsRUFBRSw0Q0FBNEM7YUFDOUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgRVRIVHJhbnNhY3Rpb25UeXBlLFxuICBGZWUsXG4gIGZsdXNoRm9yd2FyZGVyVG9rZW5zTWV0aG9kSWQsXG4gIGZsdXNoRm9yd2FyZGVyVG9rZW5zTWV0aG9kSWRWNCxcbiAgS2V5UGFpcixcbiAgVHJhbnNhY3Rpb24sXG59IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBnZXRCdWlsZGVyIH0gZnJvbSAnLi4vZ2V0QnVpbGRlcic7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWludGVybmFsLW1vZHVsZXNcbmltcG9ydCB7IHJ1bkZsdXNoTmZ0VGVzdHMgfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1ldGgvdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlcic7XG5cbi8vIFJ1biB0aGUgc2hhcmVkIGZsdXNoIE5GVCB0ZXN0cyBmcm9tIGFic3RyYWN0LWV0aFxuZGVzY3JpYmUoJ0VUSCBGbHVzaCBORlQgVGVzdHMgKGZyb20gYWJzdHJhY3QtZXRoKScsICgpID0+IHtcbiAgcnVuRmx1c2hOZnRUZXN0cygnZXRoJywgZ2V0QnVpbGRlcik7XG59KTtcblxuZGVzY3JpYmUoJ0V0aCBUcmFuc2FjdGlvbiBidWlsZGVyIGZsdXNoIHRva2VucyAoRVRILXNwZWNpZmljKScsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZGVmYXVsdEtleVBhaXIgPSBuZXcgS2V5UGFpcih7XG4gICAgcHJ2OiAnRkFDNEQwNEFBMDAyNUVDRjIwMEQ3NEJDOUI1RTQ2MTZFNEI4MzM4QjY5QjYxMzYyQUFBRDQ5Rjc2RTY4RUYyOCcsXG4gIH0pO1xuXG4gIGludGVyZmFjZSBGbHVzaFRva2Vuc0RldGFpbHMge1xuICAgIGZvcndhcmRlckFkZHJlc3M/OiBzdHJpbmc7XG4gICAgdG9rZW5BZGRyZXNzPzogc3RyaW5nO1xuICAgIGNvbnRyYWN0QWRkcmVzcz86IHN0cmluZztcbiAgICBjb3VudGVyPzogbnVtYmVyO1xuICAgIGZlZT86IEZlZTtcbiAgICBrZXk/OiBLZXlQYWlyO1xuICAgIGZvcndhcmRlclZlcnNpb24/OiBudW1iZXI7XG4gIH1cblxuICBjb25zdCBidWlsZFRyYW5zYWN0aW9uID0gYXN5bmMgZnVuY3Rpb24gKGRldGFpbHM6IEZsdXNoVG9rZW5zRGV0YWlscyk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXI6IGFueSA9IGdldEJ1aWxkZXIoJ3RldGgnKTtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuRmx1c2hUb2tlbnMpO1xuXG4gICAgaWYgKGRldGFpbHMuZm9yd2FyZGVyQWRkcmVzcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0eEJ1aWxkZXIuZm9yd2FyZGVyQWRkcmVzcyhkZXRhaWxzLmZvcndhcmRlckFkZHJlc3MpO1xuICAgIH1cblxuICAgIGlmIChkZXRhaWxzLnRva2VuQWRkcmVzcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0eEJ1aWxkZXIudG9rZW5BZGRyZXNzKGRldGFpbHMudG9rZW5BZGRyZXNzKTtcbiAgICB9XG5cbiAgICBpZiAoZGV0YWlscy5mZWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdHhCdWlsZGVyLmZlZShkZXRhaWxzLmZlZSk7XG4gICAgfVxuXG4gICAgaWYgKGRldGFpbHMuY29udHJhY3RBZGRyZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHR4QnVpbGRlci5jb250cmFjdChkZXRhaWxzLmNvbnRyYWN0QWRkcmVzcyk7XG4gICAgfVxuXG4gICAgaWYgKGRldGFpbHMuY291bnRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0eEJ1aWxkZXIuY291bnRlcihkZXRhaWxzLmNvdW50ZXIpO1xuICAgIH1cblxuICAgIGlmIChkZXRhaWxzLmtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogZGV0YWlscy5rZXkuZ2V0S2V5cygpLnBydiB9KTtcbiAgICB9XG5cbiAgICBpZiAoZGV0YWlscy5mb3J3YXJkZXJWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHR4QnVpbGRlci5mb3J3YXJkZXJWZXJzaW9uKGRldGFpbHMuZm9yd2FyZGVyVmVyc2lvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgYnVpbGQnLCAoKSA9PiB7XG4gICAgaXQoJ2Egd2FsbGV0IGZsdXNoIGZvcndhcmRlciB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRUcmFuc2FjdGlvbih7XG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzEwJyxcbiAgICAgICAgICBnYXNMaW1pdDogJzEwMDAnLFxuICAgICAgICB9LFxuICAgICAgICBjb3VudGVyOiAxLFxuICAgICAgICBmb3J3YXJkZXJBZGRyZXNzOiAnMHg1M2I4ZTkxYmIzYjhmNjE4YjVmMDEwMDRlZjEwOGYxMzRmMjE5NTczJyxcbiAgICAgICAgdG9rZW5BZGRyZXNzOiAnMHhiY2Y5MzVkMjA2Y2EzMjkyOWUxYjg4N2EwN2VkMjQwZjBkOGNjZDIyJyxcbiAgICAgICAgY29udHJhY3RBZGRyZXNzOiAnMHg4Zjk3N2U5MTJlZjUwMDU0OGEwYzNiZTZkZGRlOTg5OWYxMTk5YjgxJyxcbiAgICAgIH0pO1xuXG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuRmx1c2hUb2tlbnMpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICB0eEpzb24uZ2FzTGltaXQuc2hvdWxkLmVxdWFsKCcxMDAwJyk7XG4gICAgICB0eEpzb24uX3R5cGUuc2hvdWxkLmVxdWFscyhFVEhUcmFuc2FjdGlvblR5cGUuTEVHQUNZKTtcbiAgICAgIHR4SnNvbi5nYXNQcmljZSEuc2hvdWxkLmVxdWFsKCcxMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5ub25jZSwgMSk7XG4gICAgICB0eEpzb24uZGF0YS5zaG91bGQuc3RhcnRXaXRoKGZsdXNoRm9yd2FyZGVyVG9rZW5zTWV0aG9kSWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Egd2FsbGV0IGZsdXNoIGZvcndhcmRlciB0cmFuc2FjdGlvbiB3aXRoIGVpcDE1NTkgZmVlIG1vZGVsJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZFRyYW5zYWN0aW9uKHtcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnMzAnLFxuICAgICAgICAgIGVpcDE1NTk6IHtcbiAgICAgICAgICAgIG1heFByaW9yaXR5RmVlUGVyR2FzOiAnNScsXG4gICAgICAgICAgICBtYXhGZWVQZXJHYXM6ICczMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnYXNMaW1pdDogJzEwMDAnLFxuICAgICAgICB9LFxuICAgICAgICBjb3VudGVyOiAxLFxuICAgICAgICBmb3J3YXJkZXJBZGRyZXNzOiAnMHg1M2I4ZTkxYmIzYjhmNjE4YjVmMDEwMDRlZjEwOGYxMzRmMjE5NTczJyxcbiAgICAgICAgdG9rZW5BZGRyZXNzOiAnMHhiY2Y5MzVkMjA2Y2EzMjkyOWUxYjg4N2EwN2VkMjQwZjBkOGNjZDIyJyxcbiAgICAgICAgY29udHJhY3RBZGRyZXNzOiAnMHg4Zjk3N2U5MTJlZjUwMDU0OGEwYzNiZTZkZGRlOTg5OWYxMTk5YjgxJyxcbiAgICAgIH0pO1xuXG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuRmx1c2hUb2tlbnMpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICB0eEpzb24uZ2FzTGltaXQuc2hvdWxkLmVxdWFsKCcxMDAwJyk7XG4gICAgICB0eEpzb24uX3R5cGUuc2hvdWxkLmVxdWFscyhFVEhUcmFuc2FjdGlvblR5cGUuRUlQMTU1OSk7XG4gICAgICB0eEpzb24ubWF4RmVlUGVyR2FzIS5zaG91bGQuZXF1YWwoJzMwJyk7XG4gICAgICB0eEpzb24ubWF4UHJpb3JpdHlGZWVQZXJHYXMhLnNob3VsZC5lcXVhbCgnNScpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5ub25jZSwgMSk7XG4gICAgICB0eEpzb24uZGF0YS5zaG91bGQuc3RhcnRXaXRoKGZsdXNoRm9yd2FyZGVyVG9rZW5zTWV0aG9kSWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Egd2FsbGV0IGZsdXNoIGZvcndhcmRlciB0cmFuc2FjdGlvbiB3aXRoIG5vbmNlIDAnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkVHJhbnNhY3Rpb24oe1xuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcxMCcsXG4gICAgICAgICAgZ2FzTGltaXQ6ICcxMDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgY291bnRlcjogMCxcbiAgICAgICAgZm9yd2FyZGVyQWRkcmVzczogJzB4NTNiOGU5MWJiM2I4ZjYxOGI1ZjAxMDA0ZWYxMDhmMTM0ZjIxOTU3MycsXG4gICAgICAgIHRva2VuQWRkcmVzczogJzB4YmNmOTM1ZDIwNmNhMzI5MjllMWI4ODdhMDdlZDI0MGYwZDhjY2QyMicsXG4gICAgICAgIGNvbnRyYWN0QWRkcmVzczogJzB4OGY5NzdlOTEyZWY1MDA1NDhhMGMzYmU2ZGRkZTk4OTlmMTE5OWI4MScsXG4gICAgICB9KTtcblxuICAgICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkZsdXNoVG9rZW5zKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgdHhKc29uLmdhc0xpbWl0LnNob3VsZC5lcXVhbCgnMTAwMCcpO1xuICAgICAgdHhKc29uLl90eXBlLnNob3VsZC5lcXVhbHMoRVRIVHJhbnNhY3Rpb25UeXBlLkxFR0FDWSk7XG4gICAgICB0eEpzb24uZ2FzUHJpY2UhLnNob3VsZC5lcXVhbCgnMTAnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24ubm9uY2UsIDApO1xuICAgICAgdHhKc29uLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aChmbHVzaEZvcndhcmRlclRva2Vuc01ldGhvZElkKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHdhbGxldCBmbHVzaCBmb3J3YXJkZXIgdHJhbnNhY3Rpb24gd2l0aCBmb3J3YXJkZXIgVmVyc2lvbiA0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZFRyYW5zYWN0aW9uKHtcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnMTAnLFxuICAgICAgICAgIGdhc0xpbWl0OiAnMTAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNvdW50ZXI6IDAsXG4gICAgICAgIGZvcndhcmRlckFkZHJlc3M6ICcweDUzYjhlOTFiYjNiOGY2MThiNWYwMTAwNGVmMTA4ZjEzNGYyMTk1NzMnLFxuICAgICAgICB0b2tlbkFkZHJlc3M6ICcweGJjZjkzNWQyMDZjYTMyOTI5ZTFiODg3YTA3ZWQyNDBmMGQ4Y2NkMjInLFxuICAgICAgICBjb250cmFjdEFkZHJlc3M6ICcweDUzYjhlOTFiYjNiOGY2MThiNWYwMTAwNGVmMTA4ZjEzNGYyMTk1NzMnLFxuICAgICAgICBmb3J3YXJkZXJWZXJzaW9uOiA0LFxuICAgICAgfSk7XG5cbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5GbHVzaFRva2Vucyk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHR4SnNvbi5nYXNMaW1pdC5zaG91bGQuZXF1YWwoJzEwMDAnKTtcbiAgICAgIHR4SnNvbi5fdHlwZS5zaG91bGQuZXF1YWxzKEVUSFRyYW5zYWN0aW9uVHlwZS5MRUdBQ1kpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5ub25jZSwgMCk7XG4gICAgICB0eEpzb24uZGF0YS5zaG91bGQuc3RhcnRXaXRoKGZsdXNoRm9yd2FyZGVyVG9rZW5zTWV0aG9kSWRWNCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGVjb2RlIHdhbGxldCBmbHVzaCBmb3J3YXJkZXIgdHJhbnNhY3Rpb24gd2l0aCBmb3J3YXJkZXIgVmVyc2lvbiA0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZFRyYW5zYWN0aW9uKHtcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnMTAnLFxuICAgICAgICAgIGdhc0xpbWl0OiAnMTAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNvdW50ZXI6IDAsXG4gICAgICAgIGZvcndhcmRlckFkZHJlc3M6ICcweDUzYjhlOTFiYjNiOGY2MThiNWYwMTAwNGVmMTA4ZjEzNGYyMTk1NzMnLFxuICAgICAgICB0b2tlbkFkZHJlc3M6ICcweGJjZjkzNWQyMDZjYTMyOTI5ZTFiODg3YTA3ZWQyNDBmMGQ4Y2NkMjInLFxuICAgICAgICBjb250cmFjdEFkZHJlc3M6ICcweDUzYjhlOTFiYjNiOGY2MThiNWYwMTAwNGVmMTA4ZjEzNGYyMTk1NzMnLFxuICAgICAgICBmb3J3YXJkZXJWZXJzaW9uOiA0LFxuICAgICAgfSk7XG4gICAgICBjb25zdCB0eEJ1aWRlckZyb21SYXc6IGFueSA9IGdldEJ1aWxkZXIoJ3RldGgnKTtcbiAgICAgIHR4QnVpZGVyRnJvbVJhdy5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdHhCdWlkZXJGcm9tUmF3LmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSByZXN1bHQudG9Kc29uKCk7XG4gICAgICB0eEpzb24udG8uc2hvdWxkLmVxdWFsKCcweDUzYjhlOTFiYjNiOGY2MThiNWYwMTAwNGVmMTA4ZjEzNGYyMTk1NzMnKTtcbiAgICAgIHR4SnNvbi5kYXRhLnNob3VsZC5jb250YWluRXFsKCdiY2Y5MzVkMjA2Y2EzMjkyOWUxYjg4N2EwN2VkMjQwZjBkOGNjZDIyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGVjb2RlIHdhbGxldCBmbHVzaCBmb3J3YXJkZXIgdHJhbnNhY3Rpb24gd2l0aCBmb3J3YXJkZXIgVmVyc2lvbiA8IDQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkVHJhbnNhY3Rpb24oe1xuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcxMCcsXG4gICAgICAgICAgZ2FzTGltaXQ6ICcxMDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgY291bnRlcjogMCxcbiAgICAgICAgZm9yd2FyZGVyQWRkcmVzczogJzB4NTNiOGU5MWJiM2I4ZjYxOGI1ZjAxMDA0ZWYxMDhmMTM0ZjIxOTU3MycsXG4gICAgICAgIHRva2VuQWRkcmVzczogJzB4YmNmOTM1ZDIwNmNhMzI5MjllMWI4ODdhMDdlZDI0MGYwZDhjY2QyMicsXG4gICAgICAgIGNvbnRyYWN0QWRkcmVzczogJzB4OGY5NzdlOTEyZWY1MDA1NDhhMGMzYmU2ZGRkZTk4OTlmMTE5OWI4MScsXG4gICAgICAgIGZvcndhcmRlclZlcnNpb246IDIsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4QnVpZGVyRnJvbVJhdzogYW55ID0gZ2V0QnVpbGRlcigndGV0aCcpO1xuICAgICAgdHhCdWlkZXJGcm9tUmF3LmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0eEJ1aWRlckZyb21SYXcuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHJlc3VsdC50b0pzb24oKTtcbiAgICAgIHR4SnNvbi50by5zaG91bGQuZXF1YWwoJzB4OGY5NzdlOTEyZWY1MDA1NDhhMGMzYmU2ZGRkZTk4OTlmMTE5OWI4MScpO1xuICAgICAgdHhKc29uLmRhdGEuc2hvdWxkLmNvbnRhaW5FcWwoJ2JjZjkzNWQyMDZjYTMyOTI5ZTFiODg3YTA3ZWQyNDBmMGQ4Y2NkMjInKTtcbiAgICAgIHR4SnNvbi5kYXRhLnNob3VsZC5jb250YWluRXFsKCc1M2I4ZTkxYmIzYjhmNjE4YjVmMDEwMDRlZjEwOGYxMzRmMjE5NTczJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gdW5zaWduZWQgZmx1c2ggdHJhbnNhY3Rpb24gZnJvbSBzZXJpYWxpemVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZFRyYW5zYWN0aW9uKHtcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnMTAnLFxuICAgICAgICAgIGdhc0xpbWl0OiAnMTAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNvdW50ZXI6IDAsXG4gICAgICAgIGZvcndhcmRlckFkZHJlc3M6ICcweDUzYjhlOTFiYjNiOGY2MThiNWYwMTAwNGVmMTA4ZjEzNGYyMTk1NzMnLFxuICAgICAgICB0b2tlbkFkZHJlc3M6ICcweGJjZjkzNWQyMDZjYTMyOTI5ZTFiODg3YTA3ZWQyNDBmMGQ4Y2NkMjInLFxuICAgICAgICBjb250cmFjdEFkZHJlc3M6ICcweDhmOTc3ZTkxMmVmNTAwNTQ4YTBjM2JlNmRkZGU5ODk5ZjExOTliODEnLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBzZXJpYWxpemVkID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgLy8gbm93IHJlYnVpbGQgZnJvbSB0aGUgc2lnbmVkIHNlcmlhbGl6ZWQgdHggYW5kIG1ha2Ugc3VyZSBpdCBzdGF5cyB0aGUgc2FtZVxuICAgICAgY29uc3QgbmV3VHhCdWlsZGVyOiBhbnkgPSBnZXRCdWlsZGVyKCd0ZXRoJyk7XG4gICAgICBuZXdUeEJ1aWxkZXIuZnJvbShzZXJpYWxpemVkKTtcbiAgICAgIGNvbnN0IG5ld1R4ID0gYXdhaXQgbmV3VHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXF1YWwobmV3VHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgc2VyaWFsaXplZCk7XG4gICAgICBuZXdUeC50b0pzb24oKS5kYXRhLnNob3VsZC5zdGFydFdpdGgoZmx1c2hGb3J3YXJkZXJUb2tlbnNNZXRob2RJZCk7XG4gICAgICBzaG91bGQuZXF1YWwobmV3VHgudG9Kc29uKCkudiwgJzB4NzcnKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHNpZ25lZCBmbHVzaCB0cmFuc2FjdGlvbiBmcm9tIHNlcmlhbGl6ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkVHJhbnNhY3Rpb24oe1xuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcxMCcsXG4gICAgICAgICAgZ2FzTGltaXQ6ICcxMDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgY291bnRlcjogMCxcbiAgICAgICAgZm9yd2FyZGVyQWRkcmVzczogJzB4NTNiOGU5MWJiM2I4ZjYxOGI1ZjAxMDA0ZWYxMDhmMTM0ZjIxOTU3MycsXG4gICAgICAgIHRva2VuQWRkcmVzczogJzB4YmNmOTM1ZDIwNmNhMzI5MjllMWI4ODdhMDdlZDI0MGYwZDhjY2QyMicsXG4gICAgICAgIGNvbnRyYWN0QWRkcmVzczogJzB4OGY5NzdlOTEyZWY1MDA1NDhhMGMzYmU2ZGRkZTk4OTlmMTE5OWI4MScsXG4gICAgICAgIGtleTogZGVmYXVsdEtleVBhaXIsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICAvLyBub3cgcmVidWlsZCBmcm9tIHRoZSBzaWduZWQgc2VyaWFsaXplZCB0eCBhbmQgbWFrZSBzdXJlIGl0IHN0YXlzIHRoZSBzYW1lXG4gICAgICBjb25zdCBuZXdUeEJ1aWxkZXI6IGFueSA9IGdldEJ1aWxkZXIoJ3RldGgnKTtcbiAgICAgIG5ld1R4QnVpbGRlci5mcm9tKHNlcmlhbGl6ZWQpO1xuICAgICAgY29uc3QgbmV3VHggPSBhd2FpdCBuZXdUeEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5lcXVhbChuZXdUeC50b0Jyb2FkY2FzdEZvcm1hdCgpLCBzZXJpYWxpemVkKTtcbiAgICAgIHNob3VsZC5lcXVhbChuZXdUeC5pZCwgJzB4NWJmZDRjNmI5YWU5ZGZiYzllMDYyMjQ3YzBkZWJlNGUxYzY4NzBhNzZjNDIwY2U3ZjZlMzM1MzkwNDIwZGNkNicpO1xuICAgICAgY29uc3QgdHhKc29uID0gbmV3VHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHhKc29uLnYpO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4SnNvbi5yKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eEpzb24ucyk7XG4gICAgICBzaG91bGQuZXhpc3QodHhKc29uLmZyb20pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIGZhaWwgdG8gYnVpbGQnLCAoKSA9PiB7XG4gICAgaXQoJ2EgdHJhbnNhY3Rpb24gd2l0aG91dCBmZWUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBidWlsZFRyYW5zYWN0aW9uKHtcbiAgICAgICAgY291bnRlcjogMCxcbiAgICAgICAgZm9yd2FyZGVyQWRkcmVzczogJzB4NTNiOGU5MWJiM2I4ZjYxOGI1ZjAxMDA0ZWYxMDhmMTM0ZjIxOTU3MycsXG4gICAgICAgIHRva2VuQWRkcmVzczogJzB4YmNmOTM1ZDIwNmNhMzI5MjllMWI4ODdhMDdlZDI0MGYwZDhjY2QyMicsXG4gICAgICAgIGNvbnRyYWN0QWRkcmVzczogJzB4OGY5NzdlOTEyZWY1MDA1NDhhMGMzYmU2ZGRkZTk4OTlmMTE5OWI4MScsXG4gICAgICB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGZlZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgdHJhbnNhY3Rpb24gd2l0aG91dCBjb250cmFjdEFkZHJlc3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBidWlsZFRyYW5zYWN0aW9uKHtcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnMTAnLFxuICAgICAgICAgIGdhc0xpbWl0OiAnMTAnLFxuICAgICAgICB9LFxuICAgICAgICBjb3VudGVyOiAwLFxuICAgICAgICBmb3J3YXJkZXJBZGRyZXNzOiAnMHg1M2I4ZTkxYmIzYjhmNjE4YjVmMDEwMDRlZjEwOGYxMzRmMjE5NTczJyxcbiAgICAgICAgdG9rZW5BZGRyZXNzOiAnMHhiY2Y5MzVkMjA2Y2EzMjkyOWUxYjg4N2EwN2VkMjQwZjBkOGNjZDIyJyxcbiAgICAgIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgY29udHJhY3QgYWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Egd2FsbGV0IGZsdXNoIGZvcndhcmRlciBWNCB0cmFuc2FjdGlvbiB3aXRoIGRpZmZlcmVudCBjb250cmFjdCBhZGRyZXNzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgYnVpbGRUcmFuc2FjdGlvbih7XG4gICAgICAgIGZlZToge1xuICAgICAgICAgIGZlZTogJzEwJyxcbiAgICAgICAgICBnYXNMaW1pdDogJzEwMDAnLFxuICAgICAgICB9LFxuICAgICAgICBjb3VudGVyOiAwLFxuICAgICAgICBmb3J3YXJkZXJBZGRyZXNzOiAnMHg1M2I4ZTkxYmIzYjhmNjE4YjVmMDEwMDRlZjEwOGYxMzRmMjE5NTczJyxcbiAgICAgICAgdG9rZW5BZGRyZXNzOiAnMHhiY2Y5MzVkMjA2Y2EzMjkyOWUxYjg4N2EwN2VkMjQwZjBkOGNjZDIyJyxcbiAgICAgICAgY29udHJhY3RBZGRyZXNzOiAnMHg4Zjk3N2U5MTJlZjUwMDU0OGEwYzNiZTZkZGRlOTg5OWYxMTk5YjgxJyxcbiAgICAgICAgZm9yd2FyZGVyVmVyc2lvbjogNCxcbiAgICAgIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQgY29udHJhY3QgYWRkcmVzczogMHg4Zjk3N2U5MTJlZjUwMDU0OGEwYzNiZTZkZGRlOTg5OWYxMTk5YjgxJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSB0cmFuc2FjdGlvbiB3aXRob3V0IHRva2VuQWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGJ1aWxkVHJhbnNhY3Rpb24oe1xuICAgICAgICBmZWU6IHtcbiAgICAgICAgICBmZWU6ICcxMCcsXG4gICAgICAgICAgZ2FzTGltaXQ6ICcxMCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNvdW50ZXI6IDAsXG4gICAgICAgIGZvcndhcmRlckFkZHJlc3M6ICcweDUzYjhlOTFiYjNiOGY2MThiNWYwMTAwNGVmMTA4ZjEzNGYyMTk1NzMnLFxuICAgICAgICBjb250cmFjdEFkZHJlc3M6ICcweDhmOTc3ZTkxMmVmNTAwNTQ4YTBjM2JlNmRkZGU5ODk5ZjExOTliODEnLFxuICAgICAgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyB0b2tlbiBhZGRyZXNzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSB0cmFuc2FjdGlvbiB3aXRob3V0IGZvcndhcmRlckFkZHJlc3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBidWlsZFRyYW5zYWN0aW9uKHtcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnMTAnLFxuICAgICAgICAgIGdhc0xpbWl0OiAnMTAnLFxuICAgICAgICB9LFxuICAgICAgICBjb3VudGVyOiAwLFxuICAgICAgICB0b2tlbkFkZHJlc3M6ICcweGJjZjkzNWQyMDZjYTMyOTI5ZTFiODg3YTA3ZWQyNDBmMGQ4Y2NkMjInLFxuICAgICAgICBjb250cmFjdEFkZHJlc3M6ICcweDhmOTc3ZTkxMmVmNTAwNTQ4YTBjM2JlNmRkZGU5ODk5ZjExOTliODEnLFxuICAgICAgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBmb3J3YXJkZXIgYWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgdHJhbnNhY3Rpb24gd2l0aCBpbnZhbGlkIGNvdW50ZXInLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBidWlsZFRyYW5zYWN0aW9uKHtcbiAgICAgICAgZmVlOiB7XG4gICAgICAgICAgZmVlOiAnMTAnLFxuICAgICAgICAgIGdhc0xpbWl0OiAnMTAnLFxuICAgICAgICB9LFxuICAgICAgICBjb3VudGVyOiAtMSxcbiAgICAgICAgdG9rZW5BZGRyZXNzOiAnMHhiY2Y5MzVkMjA2Y2EzMjkyOWUxYjg4N2EwN2VkMjQwZjBkOGNjZDIyJyxcbiAgICAgICAgY29udHJhY3RBZGRyZXNzOiAnMHg4Zjk3N2U5MTJlZjUwMDU0OGEwYzNiZTZkZGRlOTg5OWYxMTk5YjgxJyxcbiAgICAgIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQgY291bnRlcjogLTEnKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/send.ts"],"names":[],"mappings":""}
|