@bitgo-beta/sdk-coin-eth 4.4.1-beta.202 → 4.4.1-beta.2021
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 +187 -0
- package/dist/src/erc7984Token.d.ts.map +1 -0
- package/dist/src/erc7984Token.js +946 -0
- package/dist/src/eth.d.ts +10 -8
- package/dist/src/eth.d.ts.map +1 -1
- package/dist/src/eth.js +54 -39
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -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 +39 -2
- package/dist/src/sepeth.d.ts +8 -0
- package/dist/src/sepeth.d.ts.map +1 -0
- package/dist/src/sepeth.js +14 -0
- 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 +1589 -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 +2701 -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 +552 -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 +75 -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 +298 -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 -771
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const should_1 = __importDefault(require("should"));
|
|
40
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
41
|
+
const testData = __importStar(require("../../resources/eth"));
|
|
42
|
+
const getBuilder_1 = require("../getBuilder");
|
|
43
|
+
describe('Eth address initialization', () => {
|
|
44
|
+
it('should fail if there is no contract address', async () => {
|
|
45
|
+
const txBuilder = (0, getBuilder_1.getBuilder)('teth');
|
|
46
|
+
txBuilder.type(sdk_core_1.TransactionType.AddressInitialization);
|
|
47
|
+
txBuilder.fee({
|
|
48
|
+
fee: '10',
|
|
49
|
+
gasLimit: '1000',
|
|
50
|
+
});
|
|
51
|
+
txBuilder.counter(1);
|
|
52
|
+
await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing contract address');
|
|
53
|
+
});
|
|
54
|
+
it('should not fail if there is no contract counter', async () => {
|
|
55
|
+
const txBuilder = (0, getBuilder_1.getBuilder)('teth');
|
|
56
|
+
txBuilder.type(sdk_core_1.TransactionType.AddressInitialization);
|
|
57
|
+
txBuilder.fee({
|
|
58
|
+
fee: '10',
|
|
59
|
+
gasLimit: '1000',
|
|
60
|
+
});
|
|
61
|
+
txBuilder.counter(1);
|
|
62
|
+
txBuilder.contract(testData.CONTRACT_ADDRESS);
|
|
63
|
+
const tx = await txBuilder.build();
|
|
64
|
+
const txJson = tx.toJson();
|
|
65
|
+
should_1.default.equal(txJson.to, testData.CONTRACT_ADDRESS);
|
|
66
|
+
});
|
|
67
|
+
it('should build properly from serialized', async () => {
|
|
68
|
+
const txBuilder = (0, getBuilder_1.getBuilder)('eth');
|
|
69
|
+
txBuilder.type(sdk_core_1.TransactionType.AddressInitialization);
|
|
70
|
+
txBuilder.from(testData.UNSIGNED_ADDRESS_INIT);
|
|
71
|
+
const tx = await txBuilder.build();
|
|
72
|
+
const txJson = tx.toJson();
|
|
73
|
+
should_1.default.equal(txJson.to, testData.CONTRACT_ADDRESS);
|
|
74
|
+
});
|
|
75
|
+
it('should build properly from signed serialized', async () => {
|
|
76
|
+
const txBuilder = (0, getBuilder_1.getBuilder)('eth');
|
|
77
|
+
txBuilder.type(sdk_core_1.TransactionType.AddressInitialization);
|
|
78
|
+
txBuilder.from(testData.SIGNED_ADDRESS_INIT);
|
|
79
|
+
const tx = await txBuilder.build();
|
|
80
|
+
const txJson = tx.toJson();
|
|
81
|
+
should_1.default.equal(txJson.to, '0x1522900b6dafac587d499a862861c0869be6e428');
|
|
82
|
+
should_1.default.equal(txJson.from, '0x00bdb5699745f5b860228c8f939abf1b9ae374ed');
|
|
83
|
+
});
|
|
84
|
+
it('should build properly and return a correct address', async () => {
|
|
85
|
+
const txBuilder = (0, getBuilder_1.getBuilder)('teth');
|
|
86
|
+
txBuilder.type(sdk_core_1.TransactionType.AddressInitialization);
|
|
87
|
+
txBuilder.fee({
|
|
88
|
+
fee: '10',
|
|
89
|
+
gasLimit: '1000',
|
|
90
|
+
});
|
|
91
|
+
txBuilder.counter(1);
|
|
92
|
+
txBuilder.contract(testData.CONTRACT_ADDRESS);
|
|
93
|
+
txBuilder.contractCounter(2);
|
|
94
|
+
txBuilder.sign({ key: testData.KEYPAIR_PRV.getKeys().prv });
|
|
95
|
+
const tx = await txBuilder.build();
|
|
96
|
+
const txJson = tx.toJson();
|
|
97
|
+
should_1.default.equal(txJson.deployedAddress, '0x858c7a9c3bda553f4d0f15e5e33231dd863cb9d4');
|
|
98
|
+
should_1.default.equal(txJson.to, testData.CONTRACT_ADDRESS);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc0luaXRpYWxpemF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9hZGRyZXNzSW5pdGlhbGl6YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsbURBQXVEO0FBRXZELDhEQUFnRDtBQUNoRCw4Q0FBMkM7QUFFM0MsUUFBUSxDQUFDLDRCQUE0QixFQUFFLEdBQUcsRUFBRTtJQUMxQyxFQUFFLENBQUMsNkNBQTZDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDM0QsTUFBTSxTQUFTLEdBQUcsSUFBQSx1QkFBVSxFQUFDLE1BQU0sQ0FBdUIsQ0FBQztRQUMzRCxTQUFTLENBQUMsSUFBSSxDQUFDLDBCQUFlLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RCxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ1osR0FBRyxFQUFFLElBQUk7WUFDVCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLCtDQUErQyxDQUFDLENBQUM7SUFDbEcsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaURBQWlELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0QsTUFBTSxTQUFTLEdBQUcsSUFBQSx1QkFBVSxFQUFDLE1BQU0sQ0FBdUIsQ0FBQztRQUMzRCxTQUFTLENBQUMsSUFBSSxDQUFDLDBCQUFlLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RCxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ1osR0FBRyxFQUFFLElBQUk7WUFDVCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7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LENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uLy4uL3Jlc291cmNlcy9ldGgnO1xuaW1wb3J0IHsgZ2V0QnVpbGRlciB9IGZyb20gJy4uL2dldEJ1aWxkZXInO1xuXG5kZXNjcmliZSgnRXRoIGFkZHJlc3MgaW5pdGlhbGl6YXRpb24nLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgZmFpbCBpZiB0aGVyZSBpcyBubyBjb250cmFjdCBhZGRyZXNzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGdldEJ1aWxkZXIoJ3RldGgnKSBhcyBUcmFuc2FjdGlvbkJ1aWxkZXI7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkFkZHJlc3NJbml0aWFsaXphdGlvbik7XG4gICAgdHhCdWlsZGVyLmZlZSh7XG4gICAgICBmZWU6ICcxMCcsXG4gICAgICBnYXNMaW1pdDogJzEwMDAnLFxuICAgIH0pO1xuICAgIHR4QnVpbGRlci5jb3VudGVyKDEpO1xuICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgY29udHJhY3QgYWRkcmVzcycpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBmYWlsIGlmIHRoZXJlIGlzIG5vIGNvbnRyYWN0IGNvdW50ZXInLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZ2V0QnVpbGRlcigndGV0aCcpIGFzIFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uKTtcbiAgICB0eEJ1aWxkZXIuZmVlKHtcbiAgICAgIGZlZTogJzEwJyxcbiAgICAgIGdhc0xpbWl0OiAnMTAwMCcsXG4gICAgfSk7XG4gICAgdHhCdWlsZGVyLmNvdW50ZXIoMSk7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0KHRlc3REYXRhLkNPTlRSQUNUX0FERFJFU1MpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi50bywgdGVzdERhdGEuQ09OVFJBQ1RfQUREUkVTUyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgcHJvcGVybHkgZnJvbSBzZXJpYWxpemVkJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGdldEJ1aWxkZXIoJ2V0aCcpIGFzIFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uKTtcbiAgICB0eEJ1aWxkZXIuZnJvbSh0ZXN0RGF0YS5VTlNJR05FRF9BRERSRVNTX0lOSVQpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi50bywgdGVzdERhdGEuQ09OVFJBQ1RfQUREUkVTUyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgcHJvcGVybHkgZnJvbSBzaWduZWQgc2VyaWFsaXplZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBnZXRCdWlsZGVyKCdldGgnKSBhcyBUcmFuc2FjdGlvbkJ1aWxkZXI7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkFkZHJlc3NJbml0aWFsaXphdGlvbik7XG4gICAgdHhCdWlsZGVyLmZyb20odGVzdERhdGEuU0lHTkVEX0FERFJFU1NfSU5JVCk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICBzaG91bGQuZXF1YWwodHhKc29uLnRvLCAnMHgxNTIyOTAwYjZkYWZhYzU4N2Q0OTlhODYyODYxYzA4NjliZTZlNDI4Jyk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5mcm9tLCAnMHgwMGJkYjU2OTk3NDVmNWI4NjAyMjhjOGY5MzlhYmYxYjlhZTM3NGVkJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgcHJvcGVybHkgYW5kIHJldHVybiBhIGNvcnJlY3QgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBnZXRCdWlsZGVyKCd0ZXRoJykgYXMgVHJhbnNhY3Rpb25CdWlsZGVyO1xuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb24pO1xuICAgIHR4QnVpbGRlci5mZWUoe1xuICAgICAgZmVlOiAnMTAnLFxuICAgICAgZ2FzTGltaXQ6ICcxMDAwJyxcbiAgICB9KTtcbiAgICB0eEJ1aWxkZXIuY291bnRlcigxKTtcbiAgICB0eEJ1aWxkZXIuY29udHJhY3QodGVzdERhdGEuQ09OVFJBQ1RfQUREUkVTUyk7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0Q291bnRlcigyKTtcbiAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuS0VZUEFJUl9QUlYuZ2V0S2V5cygpLnBydiB9KTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgIHNob3VsZC5lcXVhbCh0eEpzb24uZGVwbG95ZWRBZGRyZXNzLCAnMHg4NThjN2E5YzNiZGE1NTNmNGQwZjE1ZTVlMzMyMzFkZDg2M2NiOWQ0Jyk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi50bywgdGVzdERhdGEuQ09OVFJBQ1RfQUREUkVTUyk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contractCall.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/contractCall.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const should_1 = __importDefault(require("should"));
|
|
40
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
41
|
+
const testData = __importStar(require("../../resources/eth"));
|
|
42
|
+
const getBuilder_1 = require("../getBuilder");
|
|
43
|
+
describe('Eth contract call transaction builder', () => {
|
|
44
|
+
let txBuilder;
|
|
45
|
+
let contractAddress;
|
|
46
|
+
const rawTx = '0xf889398506fc23ac0083be8c72947fc37878dca69c9ac48397500279305f798b157280a42bf90baacecf367fdc11132a0ccfeb91692cb31ff126083c353459e0572a0b34c48e952377a0206c902a536c5327ea2861965538963b6180f7d13e36ffd4abb7aa9628f72eb9a05ee209b7b02a2ea3fbf6033701d6e959dfc1e78452235245cf2b8d3f9110c6af';
|
|
47
|
+
beforeEach(() => {
|
|
48
|
+
contractAddress = '0x8f977e912ef500548a0c3be6ddde9899f1199b81';
|
|
49
|
+
// testData.KEYPAIR_PRV.getKeys().prv as string;
|
|
50
|
+
txBuilder = (0, getBuilder_1.getBuilder)('teth');
|
|
51
|
+
txBuilder.type(sdk_core_1.TransactionType.ContractCall);
|
|
52
|
+
txBuilder.fee({
|
|
53
|
+
fee: '30000000000',
|
|
54
|
+
gasLimit: '12487794',
|
|
55
|
+
});
|
|
56
|
+
txBuilder.counter(57);
|
|
57
|
+
});
|
|
58
|
+
it('should build a contract call type transaction', async () => {
|
|
59
|
+
txBuilder.contract('0x7Fc37878DCa69C9AC48397500279305F798b1572');
|
|
60
|
+
txBuilder.data('0x2bf90baacecf367fdc11132a0ccfeb91692cb31ff126083c353459e0572a0b34c48e9523');
|
|
61
|
+
txBuilder.sign({ key: '064A3BF8B08A3426E8A719AE5E4115228A75E7A1449CB1B734E51C7DC8A867BE' });
|
|
62
|
+
const tx = await txBuilder.build();
|
|
63
|
+
should_1.default.exist(tx);
|
|
64
|
+
should_1.default.equal(tx.toBroadcastFormat(), rawTx);
|
|
65
|
+
});
|
|
66
|
+
it('should deserialize an serialize raw transaction', async () => {
|
|
67
|
+
txBuilder.from(rawTx);
|
|
68
|
+
const tx = await txBuilder.build();
|
|
69
|
+
should_1.default.equal(tx.toBroadcastFormat(), rawTx);
|
|
70
|
+
});
|
|
71
|
+
it('should build a contract call type transaction, deserialize it, sign it and serialize it again', async () => {
|
|
72
|
+
txBuilder.contract('0x7Fc37878DCa69C9AC48397500279305F798b1572');
|
|
73
|
+
txBuilder.data('0x2bf90baacecf367fdc11132a0ccfeb91692cb31ff126083c353459e0572a0b34c48e9523');
|
|
74
|
+
const txUnsigned = await txBuilder.build();
|
|
75
|
+
const builderFrom = (0, getBuilder_1.getBuilder)('teth');
|
|
76
|
+
builderFrom.from(txUnsigned.toBroadcastFormat());
|
|
77
|
+
builderFrom.sign({ key: '064A3BF8B08A3426E8A719AE5E4115228A75E7A1449CB1B734E51C7DC8A867BE' });
|
|
78
|
+
const tx = await builderFrom.build();
|
|
79
|
+
should_1.default.equal(tx.toBroadcastFormat(), rawTx);
|
|
80
|
+
should_1.default.equal(txUnsigned.toJson().v, '0x77');
|
|
81
|
+
});
|
|
82
|
+
it('should thrown if contract or data is missing', async () => {
|
|
83
|
+
await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing contract address');
|
|
84
|
+
txBuilder.contract(contractAddress);
|
|
85
|
+
await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing contract call data field');
|
|
86
|
+
});
|
|
87
|
+
it('should properly build tx for eth2 staking staking deposit', async () => {
|
|
88
|
+
txBuilder.contract(testData.ETH2_STAKING_CONTRACT_ADDRESS);
|
|
89
|
+
txBuilder.data(testData.ETH2_STAKING_CONTRACT_DATA);
|
|
90
|
+
txBuilder.sign({ key: '064A3BF8B08A3426E8A719AE5E4115228A75E7A1449CB1B734E51C7DC8A867BE' });
|
|
91
|
+
const tx = await txBuilder.build();
|
|
92
|
+
should_1.default.exist(tx);
|
|
93
|
+
const txData = tx.toJson();
|
|
94
|
+
should_1.default.equal(txData.to, testData.ETH2_STAKING_CONTRACT_ADDRESS);
|
|
95
|
+
should_1.default.equal(txData.from, '0x14fc903e3025a3aad66fad7a7862b1ec232f8df2');
|
|
96
|
+
should_1.default.equal(txData.data, testData.ETH2_STAKING_CONTRACT_DATA);
|
|
97
|
+
should_1.default.equal(txData.nonce, 57);
|
|
98
|
+
should_1.default.equal(txData.chainId, '0x2a');
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RDYWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9jb250cmFjdENhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsbURBQXVEO0FBQ3ZELDhEQUFnRDtBQUNoRCw4Q0FBMkM7QUFFM0MsUUFBUSxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsRUFBRTtJQUNyRCxJQUFJLFNBQVMsQ0FBQztJQUNkLElBQUksZUFBZSxDQUFDO0lBQ3BCLE1BQU0sS0FBSyxHQUNULDBSQUEwUixDQUFDO0lBRTdSLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxlQUFlLEdBQUcsNENBQTRDLENBQUM7UUFDL0QsZ0RBQWdEO1FBQ2hELFNBQVMsR0FBRyxJQUFBLHVCQUFVLEVBQUMsTUFBTSxDQUF1QixDQUFDO1FBQ3JELFNBQVMsQ0FBQyxJQUFJLENBQUMsMEJBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3QyxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ1osR0FBRyxFQUFFLGFBQWE7WUFDbEIsUUFBUSxFQUFFLFVBQVU7U0FDckIsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM3RCxTQUFTLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDakUsU0FBUyxDQUFDLElBQUksQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO1FBQzdGLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsa0VBQWtFLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFD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SyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXRoJztcbmltcG9ydCB7IGdldEJ1aWxkZXIgfSBmcm9tICcuLi9nZXRCdWlsZGVyJztcblxuZGVzY3JpYmUoJ0V0aCBjb250cmFjdCBjYWxsIHRyYW5zYWN0aW9uIGJ1aWxkZXInLCAoKSA9PiB7XG4gIGxldCB0eEJ1aWxkZXI7XG4gIGxldCBjb250cmFjdEFkZHJlc3M7XG4gIGNvbnN0IHJhd1R4ID1cbiAgICAnMHhmODg5Mzk4NTA2ZmMyM2FjMDA4M2JlOGM3Mjk0N2ZjMzc4NzhkY2E2OWM5YWM0ODM5NzUwMDI3OTMwNWY3OThiMTU3MjgwYTQyYmY5MGJhYWNlY2YzNjdmZGMxMTEzMmEwY2NmZWI5MTY5MmNiMzFmZjEyNjA4M2MzNTM0NTllMDU3MmEwYjM0YzQ4ZTk1MjM3N2EwMjA2YzkwMmE1MzZjNTMyN2VhMjg2MTk2NTUzODk2M2I2MTgwZjdkMTNlMzZmZmQ0YWJiN2FhOTYyOGY3MmViOWEwNWVlMjA5YjdiMDJhMmVhM2ZiZjYwMzM3MDFkNmU5NTlkZmMxZTc4NDUyMjM1MjQ1Y2YyYjhkM2Y5MTEwYzZhZic7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgY29udHJhY3RBZGRyZXNzID0gJzB4OGY5NzdlOTEyZWY1MDA1NDhhMGMzYmU2ZGRkZTk4OTlmMTE5OWI4MSc7XG4gICAgLy8gdGVzdERhdGEuS0VZUEFJUl9QUlYuZ2V0S2V5cygpLnBydiBhcyBzdHJpbmc7XG4gICAgdHhCdWlsZGVyID0gZ2V0QnVpbGRlcigndGV0aCcpIGFzIFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsKTtcbiAgICB0eEJ1aWxkZXIuZmVlKHtcbiAgICAgIGZlZTogJzMwMDAwMDAwMDAwJyxcbiAgICAgIGdhc0xpbWl0OiAnMTI0ODc3OTQnLFxuICAgIH0pO1xuICAgIHR4QnVpbGRlci5jb3VudGVyKDU3KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBhIGNvbnRyYWN0IGNhbGwgdHlwZSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICB0eEJ1aWxkZXIuY29udHJhY3QoJzB4N0ZjMzc4NzhEQ2E2OUM5QUM0ODM5NzUwMDI3OTMwNUY3OThiMTU3MicpO1xuICAgIHR4QnVpbGRlci5kYXRhKCcweDJiZjkwYmFhY2VjZjM2N2ZkYzExMTMyYTBjY2ZlYjkxNjkyY2IzMWZmMTI2MDgzYzM1MzQ1OWUwNTcyYTBiMzRjNDhlOTUyMycpO1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiAnMDY0QTNCRjhCMDhBMzQyNkU4QTcxOUFFNUU0MTE1MjI4QTc1RTdBMTQ0OUNCMUI3MzRFNTFDN0RDOEE4NjdCRScgfSk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBzaG91bGQuZXhpc3QodHgpO1xuICAgIHNob3VsZC5lcXVhbCh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCByYXdUeCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVzZXJpYWxpemUgYW4gc2VyaWFsaXplIHJhdyB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICB0eEJ1aWxkZXIuZnJvbShyYXdUeCk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgcmF3VHgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIGEgY29udHJhY3QgY2FsbCB0eXBlIHRyYW5zYWN0aW9uLCBkZXNlcmlhbGl6ZSBpdCwgc2lnbiBpdCBhbmQgc2VyaWFsaXplIGl0IGFnYWluJywgYXN5bmMgKCkgPT4ge1xuICAgIHR4QnVpbGRlci5jb250cmFjdCgnMHg3RmMzNzg3OERDYTY5QzlBQzQ4Mzk3NTAwMjc5MzA1Rjc5OGIxNTcyJyk7XG4gICAgdHhCdWlsZGVyLmRhdGEoJzB4MmJmOTBiYWFjZWNmMzY3ZmRjMTExMzJhMGNjZmViOTE2OTJjYjMxZmYxMjYwODNjMzUzNDU5ZTA1NzJhMGIzNGM0OGU5NTIzJyk7XG4gICAgY29uc3QgdHhVbnNpZ25lZCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgY29uc3QgYnVpbGRlckZyb20gPSBnZXRCdWlsZGVyKCd0ZXRoJykgYXMgVHJhbnNhY3Rpb25CdWlsZGVyO1xuICAgIGJ1aWxkZXJGcm9tLmZyb20odHhVbnNpZ25lZC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICBidWlsZGVyRnJvbS5zaWduKHsga2V5OiAnMDY0QTNCRjhCMDhBMzQyNkU4QTcxOUFFNUU0MTE1MjI4QTc1RTdBMTQ0OUNCMUI3MzRFNTFDN0RDOEE4NjdCRScgfSk7XG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyRnJvbS5idWlsZCgpO1xuXG4gICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHJhd1R4KTtcbiAgICBzaG91bGQuZXF1YWwodHhVbnNpZ25lZC50b0pzb24oKS52LCAnMHg3NycpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93biBpZiBjb250cmFjdCBvciBkYXRhIGlzIG1pc3NpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBjb250cmFjdCBhZGRyZXNzJyk7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0KGNvbnRyYWN0QWRkcmVzcyk7XG4gICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBjb250cmFjdCBjYWxsIGRhdGEgZmllbGQnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwcm9wZXJseSBidWlsZCB0eCBmb3IgZXRoMiBzdGFraW5nIHN0YWtpbmcgZGVwb3NpdCcsIGFzeW5jICgpID0+IHtcbiAgICB0eEJ1aWxkZXIuY29udHJhY3QodGVzdERhdGEuRVRIMl9TVEFLSU5HX0NPTlRSQUNUX0FERFJFU1MpO1xuICAgIHR4QnVpbGRlci5kYXRhKHRlc3REYXRhLkVUSDJfU1RBS0lOR19DT05UUkFDVF9EQVRBKTtcbiAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogJzA2NEEzQkY4QjA4QTM0MjZFOEE3MTlBRTVFNDExNTIyOEE3NUU3QTE0NDlDQjFCNzM0RTUxQzdEQzhBODY3QkUnIH0pO1xuXG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBzaG91bGQuZXhpc3QodHgpO1xuXG4gICAgY29uc3QgdHhEYXRhID0gdHgudG9Kc29uKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4RGF0YS50bywgdGVzdERhdGEuRVRIMl9TVEFLSU5HX0NPTlRSQUNUX0FERFJFU1MpO1xuICAgIHNob3VsZC5lcXVhbCh0eERhdGEuZnJvbSwgJzB4MTRmYzkwM2UzMDI1YTNhYWQ2NmZhZDdhNzg2MmIxZWMyMzJmOGRmMicpO1xuICAgIHNob3VsZC5lcXVhbCh0eERhdGEuZGF0YSwgdGVzdERhdGEuRVRIMl9TVEFLSU5HX0NPTlRSQUNUX0RBVEEpO1xuICAgIHNob3VsZC5lcXVhbCh0eERhdGEubm9uY2UsIDU3KTtcbiAgICBzaG91bGQuZXF1YWwodHhEYXRhLmNoYWluSWQsICcweDJhJyk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decryptionDelegation.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/decryptionDelegation.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
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
|
+
/**
|
|
7
|
+
* Standalone calldata tests for Zama ERC-7984 decryption delegation.
|
|
8
|
+
*
|
|
9
|
+
* Zama helpers are imported from the @bitgo-beta/abstract-eth public package entry (re-exports
|
|
10
|
+
* ./lib including zamaUtils). TransactionType is imported from the sdk-core enum dist path
|
|
11
|
+
* to avoid loading the full @bitgo-beta/sdk-core barrel (pre-existing io-ts issue in the TSS graph).
|
|
12
|
+
*
|
|
13
|
+
* TransactionBuilder build/rebuild tests live in decryptionDelegationTxBuilder.ts.
|
|
14
|
+
*/
|
|
15
|
+
const should_1 = __importDefault(require("should"));
|
|
16
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
17
|
+
const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
|
|
18
|
+
const DELEGATE_ADDRESS = '0x1111111111111111111111111111111111111111';
|
|
19
|
+
const TOKEN_ADDRESS = '0x94167129172A35ab093B44b8b96213DDbc3cD387';
|
|
20
|
+
const TOKEN_ADDRESS_2 = '0x4E7B06D78965594eB5EF5414c357ca21E1554491';
|
|
21
|
+
const ACL_ADDRESS = '0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D';
|
|
22
|
+
const EXPIRY = Math.floor(Date.now() / 1000) + 365 * 86400;
|
|
23
|
+
describe('DecryptionDelegation TransactionType (standalone)', () => {
|
|
24
|
+
it('should be a valid numeric type distinct from ContractCall/Send/FlushTokens', () => {
|
|
25
|
+
should_1.default.exist(sdk_core_1.TransactionType.DecryptionDelegation);
|
|
26
|
+
(typeof sdk_core_1.TransactionType.DecryptionDelegation).should.equal('number');
|
|
27
|
+
sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.ContractCall);
|
|
28
|
+
sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.Send);
|
|
29
|
+
sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.FlushTokens);
|
|
30
|
+
sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.FlushERC721);
|
|
31
|
+
sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.FlushERC1155);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe('DecryptionDelegation calldata selectors (standalone)', () => {
|
|
35
|
+
it('single-token calldata uses multicall selector 0xac9650d8', () => {
|
|
36
|
+
const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
|
|
37
|
+
calldata.slice(0, 10).should.equal(abstract_eth_1.aclMulticallMethodId);
|
|
38
|
+
calldata.slice(0, 10).should.equal('0xac9650d8');
|
|
39
|
+
});
|
|
40
|
+
it('multi-token calldata uses multicall selector 0xac9650d8', () => {
|
|
41
|
+
const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS, TOKEN_ADDRESS_2], EXPIRY);
|
|
42
|
+
calldata.slice(0, 10).should.equal(abstract_eth_1.aclMulticallMethodId);
|
|
43
|
+
});
|
|
44
|
+
it('forwarder-wrapped calldata uses callFromParent selector 0x77e60b35', () => {
|
|
45
|
+
const inner = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
|
|
46
|
+
const wrapped = (0, abstract_eth_1.wrapInCallFromParent)(ACL_ADDRESS, inner);
|
|
47
|
+
wrapped.slice(0, 10).should.equal(abstract_eth_1.callFromParentMethodId);
|
|
48
|
+
wrapped.slice(0, 10).should.equal('0x77e60b35');
|
|
49
|
+
});
|
|
50
|
+
it('delegate address is ABI-encoded in calldata', () => {
|
|
51
|
+
const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
|
|
52
|
+
calldata.should.containEql(DELEGATE_ADDRESS.slice(2).toLowerCase().padStart(64, '0'));
|
|
53
|
+
});
|
|
54
|
+
it('token address is ABI-encoded in calldata', () => {
|
|
55
|
+
const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
|
|
56
|
+
calldata.should.containEql(TOKEN_ADDRESS.slice(2).toLowerCase().padStart(64, '0'));
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdGlvbkRlbGVnYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL2RlY3J5cHRpb25EZWxlZ2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7O0dBUUc7QUFDSCxvREFBNEI7QUFDNUIsbURBQXVEO0FBQ3ZELDJEQUtrQztBQUVsQyxNQUFNLGdCQUFnQixHQUFHLDRDQUE0QyxDQUFDO0FBQ3RFLE1BQU0sYUFBYSxHQUFHLDRDQUE0QyxDQUFDO0FBQ25FLE1BQU0sZUFBZSxHQUFHLDRDQUE0QyxDQUFDO0FBQ3JFLE1BQU0sV0FBVyxHQUFHLDRDQUE0QyxDQUFDO0FBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFFM0QsUUFBUSxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtJQUNqRSxFQUFFLENBQUMsNEVBQTRFLEVBQUUsR0FBRyxFQUFFO1FBQ3BGLGdCQUFNLENBQUMsS0FBSyxDQUFDLDBCQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNuRCxDQUFDLE9BQU8sMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckUsMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQywwQkFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BGLDBCQUFlLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsMEJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RSwwQkFBZSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLDBC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dGFuZGFsb25lIGNhbGxkYXRhIHRlc3RzIGZvciBaYW1hIEVSQy03OTg0IGRlY3J5cHRpb24gZGVsZWdhdGlvbi5cbiAqXG4gKiBaYW1hIGhlbHBlcnMgYXJlIGltcG9ydGVkIGZyb20gdGhlIEBiaXRnby1iZXRhL2Fic3RyYWN0LWV0aCBwdWJsaWMgcGFja2FnZSBlbnRyeSAocmUtZXhwb3J0c1xuICogLi9saWIgaW5jbHVkaW5nIHphbWFVdGlscykuIFRyYW5zYWN0aW9uVHlwZSBpcyBpbXBvcnRlZCBmcm9tIHRoZSBzZGstY29yZSBlbnVtIGRpc3QgcGF0aFxuICogdG8gYXZvaWQgbG9hZGluZyB0aGUgZnVsbCBAYml0Z28tYmV0YS9zZGstY29yZSBiYXJyZWwgKHByZS1leGlzdGluZyBpby10cyBpc3N1ZSBpbiB0aGUgVFNTIGdyYXBoKS5cbiAqXG4gKiBUcmFuc2FjdGlvbkJ1aWxkZXIgYnVpbGQvcmVidWlsZCB0ZXN0cyBsaXZlIGluIGRlY3J5cHRpb25EZWxlZ2F0aW9uVHhCdWlsZGVyLnRzLlxuICovXG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQge1xuICBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YSxcbiAgY2FsbEZyb21QYXJlbnRNZXRob2RJZCxcbiAgYWNsTXVsdGljYWxsTWV0aG9kSWQsXG4gIHdyYXBJbkNhbGxGcm9tUGFyZW50LFxufSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1ldGgnO1xuXG5jb25zdCBERUxFR0FURV9BRERSRVNTID0gJzB4MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc7XG5jb25zdCBUT0tFTl9BRERSRVNTID0gJzB4OTQxNjcxMjkxNzJBMzVhYjA5M0I0NGI4Yjk2MjEzRERiYzNjRDM4Nyc7XG5jb25zdCBUT0tFTl9BRERSRVNTXzIgPSAnMHg0RTdCMDZENzg5NjU1OTRlQjVFRjU0MTRjMzU3Y2EyMUUxNTU0NDkxJztcbmNvbnN0IEFDTF9BRERSRVNTID0gJzB4ZjBGZmRjOTNiN0UxODZiQzJmOENCM2RBQTc1RDg2ZDE5MzBBNDMzRCc7XG5jb25zdCBFWFBJUlkgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSArIDM2NSAqIDg2NDAwO1xuXG5kZXNjcmliZSgnRGVjcnlwdGlvbkRlbGVnYXRpb24gVHJhbnNhY3Rpb25UeXBlIChzdGFuZGFsb25lKScsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCBiZSBhIHZhbGlkIG51bWVyaWMgdHlwZSBkaXN0aW5jdCBmcm9tIENvbnRyYWN0Q2FsbC9TZW5kL0ZsdXNoVG9rZW5zJywgKCkgPT4ge1xuICAgIHNob3VsZC5leGlzdChUcmFuc2FjdGlvblR5cGUuRGVjcnlwdGlvbkRlbGVnYXRpb24pO1xuICAgICh0eXBlb2YgVHJhbnNhY3Rpb25UeXBlLkRlY3J5cHRpb25EZWxlZ2F0aW9uKS5zaG91bGQuZXF1YWwoJ251bWJlcicpO1xuICAgIFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbi5zaG91bGQubm90LmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgIFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbi5zaG91bGQubm90LmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICBUcmFuc2FjdGlvblR5cGUuRGVjcnlwdGlvbkRlbGVnYXRpb24uc2hvdWxkLm5vdC5lcXVhbChUcmFuc2FjdGlvblR5cGUuRmx1c2hUb2tlbnMpO1xuICAgIFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbi5zaG91bGQubm90LmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5GbHVzaEVSQzcyMSk7XG4gICAgVHJhbnNhY3Rpb25UeXBlLkRlY3J5cHRpb25EZWxlZ2F0aW9uLnNob3VsZC5ub3QuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkZsdXNoRVJDMTE1NSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdEZWNyeXB0aW9uRGVsZWdhdGlvbiBjYWxsZGF0YSBzZWxlY3RvcnMgKHN0YW5kYWxvbmUpJywgKCkgPT4ge1xuICBpdCgnc2luZ2xlLXRva2VuIGNhbGxkYXRhIHVzZXMgbXVsdGljYWxsIHNlbGVjdG9yIDB4YWM5NjUwZDgnLCAoKSA9PiB7XG4gICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTU10sIEVYUElSWSk7XG4gICAgY2FsbGRhdGEuc2xpY2UoMCwgMTApLnNob3VsZC5lcXVhbChhY2xNdWx0aWNhbGxNZXRob2RJZCk7XG4gICAgY2FsbGRhdGEuc2xpY2UoMCwgMTApLnNob3VsZC5lcXVhbCgnMHhhYzk2NTBkOCcpO1xuICB9KTtcblxuICBpdCgnbXVsdGktdG9rZW4gY2FsbGRhdGEgdXNlcyBtdWx0aWNhbGwgc2VsZWN0b3IgMHhhYzk2NTBkOCcsICgpID0+IHtcbiAgICBjb25zdCBjYWxsZGF0YSA9IGJ1aWxkTXVsdGljYWxsRGVsZWdhdGlvbkNhbGxkYXRhKERFTEVHQVRFX0FERFJFU1MsIFtUT0tFTl9BRERSRVNTLCBUT0tFTl9BRERSRVNTXzJdLCBFWFBJUlkpO1xuICAgIGNhbGxkYXRhLnNsaWNlKDAsIDEwKS5zaG91bGQuZXF1YWwoYWNsTXVsdGljYWxsTWV0aG9kSWQpO1xuICB9KTtcblxuICBpdCgnZm9yd2FyZGVyLXdyYXBwZWQgY2FsbGRhdGEgdXNlcyBjYWxsRnJvbVBhcmVudCBzZWxlY3RvciAweDc3ZTYwYjM1JywgKCkgPT4ge1xuICAgIGNvbnN0IGlubmVyID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIGNvbnN0IHdyYXBwZWQgPSB3cmFwSW5DYWxsRnJvbVBhcmVudChBQ0xfQUREUkVTUywgaW5uZXIpO1xuICAgIHdyYXBwZWQuc2xpY2UoMCwgMTApLnNob3VsZC5lcXVhbChjYWxsRnJvbVBhcmVudE1ldGhvZElkKTtcbiAgICB3cmFwcGVkLnNsaWNlKDAsIDEwKS5zaG91bGQuZXF1YWwoJzB4NzdlNjBiMzUnKTtcbiAgfSk7XG5cbiAgaXQoJ2RlbGVnYXRlIGFkZHJlc3MgaXMgQUJJLWVuY29kZWQgaW4gY2FsbGRhdGEnLCAoKSA9PiB7XG4gICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTU10sIEVYUElSWSk7XG4gICAgY2FsbGRhdGEuc2hvdWxkLmNvbnRhaW5FcWwoREVMRUdBVEVfQUREUkVTUy5zbGljZSgyKS50b0xvd2VyQ2FzZSgpLnBhZFN0YXJ0KDY0LCAnMCcpKTtcbiAgfSk7XG5cbiAgaXQoJ3Rva2VuIGFkZHJlc3MgaXMgQUJJLWVuY29kZWQgaW4gY2FsbGRhdGEnLCAoKSA9PiB7XG4gICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTU10sIEVYUElSWSk7XG4gICAgY2FsbGRhdGEuc2hvdWxkLmNvbnRhaW5FcWwoVE9LRU5fQUREUkVTUy5zbGljZSgyKS50b0xvd2VyQ2FzZSgpLnBhZFN0YXJ0KDY0LCAnMCcpKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decryptionDelegationTxBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/decryptionDelegationTxBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,136 @@
|
|
|
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
|
+
/**
|
|
7
|
+
* TransactionBuilder build and rebuild tests for Zama ERC-7984 decryption delegation.
|
|
8
|
+
*
|
|
9
|
+
* Pattern mirrors contractCall.ts: imports TransactionType from @bitgo-beta/sdk-core and
|
|
10
|
+
* TransactionBuilder from '../../../src'. These are subject to the same pre-existing
|
|
11
|
+
* io-ts crash (sdk-core/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2) that affects ALL
|
|
12
|
+
* TransactionBuilder tests in this monorepo. They run in the full CI test suite.
|
|
13
|
+
*
|
|
14
|
+
* Three flows verified:
|
|
15
|
+
* Flow 1 — root wallet: ContractCall + multicall data → build → from(hex) → rebuild
|
|
16
|
+
* Flow 2 — explicit DecryptionDelegation type → build → from(hex) → rebuild
|
|
17
|
+
* Flow 3 — forwarder: ContractCall + callFromParent data → build → from(hex) → rebuild
|
|
18
|
+
*/
|
|
19
|
+
const should_1 = __importDefault(require("should"));
|
|
20
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
21
|
+
const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
|
|
22
|
+
const getBuilder_1 = require("../getBuilder");
|
|
23
|
+
const ACL_ADDRESS = '0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D';
|
|
24
|
+
const DELEGATE_ADDRESS = '0x1111111111111111111111111111111111111111';
|
|
25
|
+
const TOKEN_ADDRESS = '0x94167129172A35ab093B44b8b96213DDbc3cD387';
|
|
26
|
+
const TOKEN_ADDRESS_2 = '0x4E7B06D78965594eB5EF5414c357ca21E1554491';
|
|
27
|
+
const FORWARDER_ADDRESS = '0xDeADbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF';
|
|
28
|
+
const EXPIRY = Math.floor(Date.now() / 1000) + 365 * 86400;
|
|
29
|
+
describe('DecryptionDelegation TransactionBuilder', () => {
|
|
30
|
+
let txBuilder;
|
|
31
|
+
beforeEach(() => {
|
|
32
|
+
txBuilder = (0, getBuilder_1.getBuilder)('hteth');
|
|
33
|
+
txBuilder.fee({ fee: '1000000000', gasLimit: '200000' });
|
|
34
|
+
txBuilder.counter(1);
|
|
35
|
+
});
|
|
36
|
+
// ---- Flow 1: root wallet, ContractCall type --------------------------------
|
|
37
|
+
it('Flow 1: should build a ContractCall tx with multicall delegation data', async () => {
|
|
38
|
+
const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS, TOKEN_ADDRESS_2], EXPIRY);
|
|
39
|
+
txBuilder.type(sdk_core_1.TransactionType.ContractCall);
|
|
40
|
+
txBuilder.contract(ACL_ADDRESS);
|
|
41
|
+
txBuilder.data(calldata);
|
|
42
|
+
const tx = await txBuilder.build();
|
|
43
|
+
const json = tx.toJson();
|
|
44
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.ContractCall);
|
|
45
|
+
json.to.should.equal(ACL_ADDRESS.toLowerCase());
|
|
46
|
+
json.data.should.startWith(abstract_eth_1.aclMulticallMethodId);
|
|
47
|
+
json.value.should.equal('0');
|
|
48
|
+
});
|
|
49
|
+
it('Flow 1: should rebuild from hex — multicall delegation round-trip', async () => {
|
|
50
|
+
const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS, TOKEN_ADDRESS_2], EXPIRY);
|
|
51
|
+
txBuilder.type(sdk_core_1.TransactionType.ContractCall);
|
|
52
|
+
txBuilder.contract(ACL_ADDRESS);
|
|
53
|
+
txBuilder.data(calldata);
|
|
54
|
+
const originalTx = await txBuilder.build();
|
|
55
|
+
const rawHex = originalTx.toBroadcastFormat();
|
|
56
|
+
const rebuiltBuilder = (0, getBuilder_1.getBuilder)('hteth');
|
|
57
|
+
rebuiltBuilder.from(rawHex);
|
|
58
|
+
const rebuiltTx = await rebuiltBuilder.build();
|
|
59
|
+
should_1.default.equal(rebuiltTx.toBroadcastFormat(), rawHex);
|
|
60
|
+
rebuiltTx.toJson().to.should.equal(ACL_ADDRESS.toLowerCase());
|
|
61
|
+
rebuiltTx.toJson().data.should.startWith(abstract_eth_1.aclMulticallMethodId);
|
|
62
|
+
});
|
|
63
|
+
// ---- Flow 2: explicit DecryptionDelegation type ---------------------------
|
|
64
|
+
it('Flow 2: should build with explicit DecryptionDelegation type', async () => {
|
|
65
|
+
const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
|
|
66
|
+
txBuilder.type(sdk_core_1.TransactionType.DecryptionDelegation);
|
|
67
|
+
txBuilder.contract(ACL_ADDRESS);
|
|
68
|
+
txBuilder.data(calldata);
|
|
69
|
+
const tx = await txBuilder.build();
|
|
70
|
+
const json = tx.toJson();
|
|
71
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.ContractCall);
|
|
72
|
+
json.to.should.equal(ACL_ADDRESS.toLowerCase());
|
|
73
|
+
json.data.should.startWith(abstract_eth_1.aclMulticallMethodId);
|
|
74
|
+
json.value.should.equal('0');
|
|
75
|
+
});
|
|
76
|
+
it('Flow 2: should rebuild from hex — DecryptionDelegation type round-trip', async () => {
|
|
77
|
+
const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
|
|
78
|
+
txBuilder.type(sdk_core_1.TransactionType.DecryptionDelegation);
|
|
79
|
+
txBuilder.contract(ACL_ADDRESS);
|
|
80
|
+
txBuilder.data(calldata);
|
|
81
|
+
const originalTx = await txBuilder.build();
|
|
82
|
+
const rawHex = originalTx.toBroadcastFormat();
|
|
83
|
+
// classifyTransaction sees 0xac9650d8 → ContractCall (multicall not mapped)
|
|
84
|
+
// ContractCall rebuild path handles it identically to DecryptionDelegation
|
|
85
|
+
const rebuiltBuilder = (0, getBuilder_1.getBuilder)('hteth');
|
|
86
|
+
rebuiltBuilder.from(rawHex);
|
|
87
|
+
const rebuiltTx = await rebuiltBuilder.build();
|
|
88
|
+
should_1.default.equal(rebuiltTx.toBroadcastFormat(), rawHex);
|
|
89
|
+
});
|
|
90
|
+
// ---- Flow 3: forwarder callFromParent path --------------------------------
|
|
91
|
+
it('Flow 3: should build a forwarder delegation tx targeting the forwarder', async () => {
|
|
92
|
+
const innerCalldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
|
|
93
|
+
const outerCalldata = (0, abstract_eth_1.wrapInCallFromParent)(ACL_ADDRESS, innerCalldata);
|
|
94
|
+
txBuilder.type(sdk_core_1.TransactionType.ContractCall);
|
|
95
|
+
txBuilder.contract(FORWARDER_ADDRESS);
|
|
96
|
+
txBuilder.data(outerCalldata);
|
|
97
|
+
const tx = await txBuilder.build();
|
|
98
|
+
const json = tx.toJson();
|
|
99
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.ContractCall);
|
|
100
|
+
json.to.should.equal(FORWARDER_ADDRESS.toLowerCase());
|
|
101
|
+
json.data.should.startWith(abstract_eth_1.callFromParentMethodId);
|
|
102
|
+
json.value.should.equal('0');
|
|
103
|
+
});
|
|
104
|
+
it('Flow 3: should rebuild from hex — forwarder delegation round-trip', async () => {
|
|
105
|
+
const innerCalldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
|
|
106
|
+
const outerCalldata = (0, abstract_eth_1.wrapInCallFromParent)(ACL_ADDRESS, innerCalldata);
|
|
107
|
+
txBuilder.type(sdk_core_1.TransactionType.ContractCall);
|
|
108
|
+
txBuilder.contract(FORWARDER_ADDRESS);
|
|
109
|
+
txBuilder.data(outerCalldata);
|
|
110
|
+
const originalTx = await txBuilder.build();
|
|
111
|
+
const rawHex = originalTx.toBroadcastFormat();
|
|
112
|
+
const rebuiltBuilder = (0, getBuilder_1.getBuilder)('hteth');
|
|
113
|
+
rebuiltBuilder.from(rawHex);
|
|
114
|
+
const rebuiltTx = await rebuiltBuilder.build();
|
|
115
|
+
should_1.default.equal(rebuiltTx.toBroadcastFormat(), rawHex);
|
|
116
|
+
rebuiltTx.toJson().to.should.equal(FORWARDER_ADDRESS.toLowerCase());
|
|
117
|
+
rebuiltTx.toJson().data.should.startWith(abstract_eth_1.callFromParentMethodId);
|
|
118
|
+
});
|
|
119
|
+
// ---- Validation -----------------------------------------------------------
|
|
120
|
+
it('should throw for DecryptionDelegation when contract address is missing', async () => {
|
|
121
|
+
const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
|
|
122
|
+
txBuilder.type(sdk_core_1.TransactionType.DecryptionDelegation);
|
|
123
|
+
txBuilder.data(calldata);
|
|
124
|
+
await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing contract address');
|
|
125
|
+
});
|
|
126
|
+
it('should throw for DecryptionDelegation when data field is missing', async () => {
|
|
127
|
+
txBuilder.type(sdk_core_1.TransactionType.DecryptionDelegation);
|
|
128
|
+
txBuilder.contract(ACL_ADDRESS);
|
|
129
|
+
await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing contract call data field');
|
|
130
|
+
});
|
|
131
|
+
it('should throw when data() is called before type is set to a contract call type', () => {
|
|
132
|
+
const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
|
|
133
|
+
should_1.default.throws(() => txBuilder.data(calldata), /data can only be set for contract call transaction types/);
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdGlvbkRlbGVnYXRpb25UeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL2RlY3J5cHRpb25EZWxlZ2F0aW9uVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsb0RBQTRCO0FBQzVCLG1EQUF1RDtBQUV2RCwyREFLa0M7QUFDbEMsOENBQTJDO0FBRTNDLE1BQU0sV0FBVyxHQUFHLDRDQUE0QyxDQUFDO0FBQ2pFLE1BQU0sZ0JBQWdCLEdBQUcsNENBQTRDLENBQUM7QUFDdEUsTUFBTSxhQUFhLEdBQUcsNENBQTRDLENBQUM7QUFDbkUsTUFBTSxlQUFlLEdBQUcsNENBQTRDLENBQUM7QUFDckUsTUFBTSxpQkFBaUIsR0FBRyw0Q0FBNEMsQ0FBQztBQUN2RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBRTNELFFBQVEsQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLEVBQUU7SUFDdkQsSUFBSSxTQUE2QixDQUFDO0lBRWxDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxTQUFTLEdBQUcsSUFBQSx1QkFBVSxFQUFDLE9BQU8sQ0FBdUIsQ0FBQztRQUN0RCxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBRUgsK0VBQStFO0lBRS9FLEVBQUUsQ0FBQyx1RUFBdUUsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNyRixNQUFNLFFBQVEsR0FBRyxJQUFBLCtDQUFnQyxFQUFDLGdC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QVksQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ2xHLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2hGLFNBQVMsQ0FBQyxJQUFJLENBQUMsMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JELFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUMxRyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrRUFBK0UsRUFBRSxHQUFHLEVBQUU7UUFDdkYsTUFBTSxRQUFRLEdBQUcsSUFBQSwrQ0FBZ0MsRUFBQyxnQkFBZ0IsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsMERBQTBELENBQUMsQ0FBQztJQUM1RyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmFuc2FjdGlvbkJ1aWxkZXIgYnVpbGQgYW5kIHJlYnVpbGQgdGVzdHMgZm9yIFphbWEgRVJDLTc5ODQgZGVjcnlwdGlvbiBkZWxlZ2F0aW9uLlxuICpcbiAqIFBhdHRlcm4gbWlycm9ycyBjb250cmFjdENhbGwudHM6IGltcG9ydHMgVHJhbnNhY3Rpb25UeXBlIGZyb20gQGJpdGdvLWJldGEvc2RrLWNvcmUgYW5kXG4gKiBUcmFuc2FjdGlvbkJ1aWxkZXIgZnJvbSAnLi4vLi4vLi4vc3JjJy4gVGhlc2UgYXJlIHN1YmplY3QgdG8gdGhlIHNhbWUgcHJlLWV4aXN0aW5nXG4gKiBpby10cyBjcmFzaCAoc2RrLWNvcmUvc3JjL2JpdGdvL3V0aWxzL3Rzcy9lZGRzYS90eXBlc0VkZHNhTVBDdjIpIHRoYXQgYWZmZWN0cyBBTExcbiAqIFRyYW5zYWN0aW9uQnVpbGRlciB0ZXN0cyBpbiB0aGlzIG1vbm9yZXBvLiBUaGV5IHJ1biBpbiB0aGUgZnVsbCBDSSB0ZXN0IHN1aXRlLlxuICpcbiAqIFRocmVlIGZsb3dzIHZlcmlmaWVkOlxuICogICBGbG93IDEg4oCUIHJvb3Qgd2FsbGV0OiBDb250cmFjdENhbGwgKyBtdWx0aWNhbGwgZGF0YSDihpIgYnVpbGQg4oaSIGZyb20oaGV4KSDihpIgcmVidWlsZFxuICogICBGbG93IDIg4oCUIGV4cGxpY2l0IERlY3J5cHRpb25EZWxlZ2F0aW9uIHR5cGUg4oaSIGJ1aWxkIOKGkiBmcm9tKGhleCkg4oaSIHJlYnVpbGRcbiAqICAgRmxvdyAzIOKAlCBmb3J3YXJkZXI6IENvbnRyYWN0Q2FsbCArIGNhbGxGcm9tUGFyZW50IGRhdGEg4oaSIGJ1aWxkIOKGkiBmcm9tKGhleCkg4oaSIHJlYnVpbGRcbiAqL1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7XG4gIGJ1aWxkTXVsdGljYWxsRGVsZWdhdGlvbkNhbGxkYXRhLFxuICB3cmFwSW5DYWxsRnJvbVBhcmVudCxcbiAgYWNsTXVsdGljYWxsTWV0aG9kSWQsXG4gIGNhbGxGcm9tUGFyZW50TWV0aG9kSWQsXG59IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWV0aCc7XG5pbXBvcnQgeyBnZXRCdWlsZGVyIH0gZnJvbSAnLi4vZ2V0QnVpbGRlcic7XG5cbmNvbnN0IEFDTF9BRERSRVNTID0gJzB4ZjBGZmRjOTNiN0UxODZiQzJmOENCM2RBQTc1RDg2ZDE5MzBBNDMzRCc7XG5jb25zdCBERUxFR0FURV9BRERSRVNTID0gJzB4MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc7XG5jb25zdCBUT0tFTl9BRERSRVNTID0gJzB4OTQxNjcxMjkxNzJBMzVhYjA5M0I0NGI4Yjk2MjEzRERiYzNjRDM4Nyc7XG5jb25zdCBUT0tFTl9BRERSRVNTXzIgPSAnMHg0RTdCMDZENzg5NjU1OTRlQjVFRjU0MTRjMzU3Y2EyMUUxNTU0NDkxJztcbmNvbnN0IEZPUldBUkRFUl9BRERSRVNTID0gJzB4RGVBRGJlZWZkRUFkYmVlZmRFYWRiRUVGZGVhZGJlRUZkRWFEYmVlRic7XG5jb25zdCBFWFBJUlkgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSArIDM2NSAqIDg2NDAwO1xuXG5kZXNjcmliZSgnRGVjcnlwdGlvbkRlbGVnYXRpb24gVHJhbnNhY3Rpb25CdWlsZGVyJywgKCkgPT4ge1xuICBsZXQgdHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXI7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdHhCdWlsZGVyID0gZ2V0QnVpbGRlcignaHRldGgnKSBhcyBUcmFuc2FjdGlvbkJ1aWxkZXI7XG4gICAgdHhCdWlsZGVyLmZlZSh7IGZlZTogJzEwMDAwMDAwMDAnLCBnYXNMaW1pdDogJzIwMDAwMCcgfSk7XG4gICAgdHhCdWlsZGVyLmNvdW50ZXIoMSk7XG4gIH0pO1xuXG4gIC8vIC0tLS0gRmxvdyAxOiByb290IHdhbGxldCwgQ29udHJhY3RDYWxsIHR5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBpdCgnRmxvdyAxOiBzaG91bGQgYnVpbGQgYSBDb250cmFjdENhbGwgdHggd2l0aCBtdWx0aWNhbGwgZGVsZWdhdGlvbiBkYXRhJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1MsIFRPS0VOX0FERFJFU1NfMl0sIEVYUElSWSk7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCk7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0KEFDTF9BRERSRVNTKTtcbiAgICB0eEJ1aWxkZXIuZGF0YShjYWxsZGF0YSk7XG5cbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IGpzb24gPSB0eC50b0pzb24oKTtcblxuICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsKTtcbiAgICBqc29uLnRvLnNob3VsZC5lcXVhbChBQ0xfQUREUkVTUy50b0xvd2VyQ2FzZSgpKTtcbiAgICBqc29uLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aChhY2xNdWx0aWNhbGxNZXRob2RJZCk7XG4gICAganNvbi52YWx1ZS5zaG91bGQuZXF1YWwoJzAnKTtcbiAgfSk7XG5cbiAgaXQoJ0Zsb3cgMTogc2hvdWxkIHJlYnVpbGQgZnJvbSBoZXgg4oCUIG11bHRpY2FsbCBkZWxlZ2F0aW9uIHJvdW5kLXRyaXAnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTUywgVE9LRU5fQUREUkVTU18yXSwgRVhQSVJZKTtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsKTtcbiAgICB0eEJ1aWxkZXIuY29udHJhY3QoQUNMX0FERFJFU1MpO1xuICAgIHR4QnVpbGRlci5kYXRhKGNhbGxkYXRhKTtcblxuICAgIGNvbnN0IG9yaWdpbmFsVHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCByYXdIZXggPSBvcmlnaW5hbFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICBjb25zdCByZWJ1aWx0QnVpbGRlciA9IGdldEJ1aWxkZXIoJ2h0ZXRoJykgYXMgVHJhbnNhY3Rpb25CdWlsZGVyO1xuICAgIHJlYnVpbHRCdWlsZGVyLmZyb20ocmF3SGV4KTtcbiAgICBjb25zdCByZWJ1aWx0VHggPSBhd2FpdCByZWJ1aWx0QnVpbGRlci5idWlsZCgpO1xuXG4gICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpLCByYXdIZXgpO1xuICAgIHJlYnVpbHRUeC50b0pzb24oKS50by5zaG91bGQuZXF1YWwoQUNMX0FERFJFU1MudG9Mb3dlckNhc2UoKSk7XG4gICAgcmVidWlsdFR4LnRvSnNvbigpLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aChhY2xNdWx0aWNhbGxNZXRob2RJZCk7XG4gIH0pO1xuXG4gIC8vIC0tLS0gRmxvdyAyOiBleHBsaWNpdCBEZWNyeXB0aW9uRGVsZWdhdGlvbiB0eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGl0KCdGbG93IDI6IHNob3VsZCBidWlsZCB3aXRoIGV4cGxpY2l0IERlY3J5cHRpb25EZWxlZ2F0aW9uIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTU10sIEVYUElSWSk7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkRlY3J5cHRpb25EZWxlZ2F0aW9uKTtcbiAgICB0eEJ1aWxkZXIuY29udHJhY3QoQUNMX0FERFJFU1MpO1xuICAgIHR4QnVpbGRlci5kYXRhKGNhbGxkYXRhKTtcblxuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgIGpzb24udG8uc2hvdWxkLmVxdWFsKEFDTF9BRERSRVNTLnRvTG93ZXJDYXNlKCkpO1xuICAgIGpzb24uZGF0YS5zaG91bGQuc3RhcnRXaXRoKGFjbE11bHRpY2FsbE1ldGhvZElkKTtcbiAgICBqc29uLnZhbHVlLnNob3VsZC5lcXVhbCgnMCcpO1xuICB9KTtcblxuICBpdCgnRmxvdyAyOiBzaG91bGQgcmVidWlsZCBmcm9tIGhleCDigJQgRGVjcnlwdGlvbkRlbGVnYXRpb24gdHlwZSByb3VuZC10cmlwJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbik7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0KEFDTF9BRERSRVNTKTtcbiAgICB0eEJ1aWxkZXIuZGF0YShjYWxsZGF0YSk7XG5cbiAgICBjb25zdCBvcmlnaW5hbFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgcmF3SGV4ID0gb3JpZ2luYWxUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgLy8gY2xhc3NpZnlUcmFuc2FjdGlvbiBzZWVzIDB4YWM5NjUwZDgg4oaSIENvbnRyYWN0Q2FsbCAobXVsdGljYWxsIG5vdCBtYXBwZWQpXG4gICAgLy8gQ29udHJhY3RDYWxsIHJlYnVpbGQgcGF0aCBoYW5kbGVzIGl0IGlkZW50aWNhbGx5IHRvIERlY3J5cHRpb25EZWxlZ2F0aW9uXG4gICAgY29uc3QgcmVidWlsdEJ1aWxkZXIgPSBnZXRCdWlsZGVyKCdodGV0aCcpIGFzIFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICByZWJ1aWx0QnVpbGRlci5mcm9tKHJhd0hleCk7XG4gICAgY29uc3QgcmVidWlsdFR4ID0gYXdhaXQgcmVidWlsdEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgcmF3SGV4KTtcbiAgfSk7XG5cbiAgLy8gLS0tLSBGbG93IDM6IGZvcndhcmRlciBjYWxsRnJvbVBhcmVudCBwYXRoIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgaXQoJ0Zsb3cgMzogc2hvdWxkIGJ1aWxkIGEgZm9yd2FyZGVyIGRlbGVnYXRpb24gdHggdGFyZ2V0aW5nIHRoZSBmb3J3YXJkZXInLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgaW5uZXJDYWxsZGF0YSA9IGJ1aWxkTXVsdGljYWxsRGVsZWdhdGlvbkNhbGxkYXRhKERFTEVHQVRFX0FERFJFU1MsIFtUT0tFTl9BRERSRVNTXSwgRVhQSVJZKTtcbiAgICBjb25zdCBvdXRlckNhbGxkYXRhID0gd3JhcEluQ2FsbEZyb21QYXJlbnQoQUNMX0FERFJFU1MsIGlubmVyQ2FsbGRhdGEpO1xuXG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCk7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0KEZPUldBUkRFUl9BRERSRVNTKTtcbiAgICB0eEJ1aWxkZXIuZGF0YShvdXRlckNhbGxkYXRhKTtcblxuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgIGpzb24udG8uc2hvdWxkLmVxdWFsKEZPUldBUkRFUl9BRERSRVNTLnRvTG93ZXJDYXNlKCkpO1xuICAgIGpzb24uZGF0YS5zaG91bGQuc3RhcnRXaXRoKGNhbGxGcm9tUGFyZW50TWV0aG9kSWQpO1xuICAgIGpzb24udmFsdWUuc2hvdWxkLmVxdWFsKCcwJyk7XG4gIH0pO1xuXG4gIGl0KCdGbG93IDM6IHNob3VsZCByZWJ1aWxkIGZyb20gaGV4IOKAlCBmb3J3YXJkZXIgZGVsZWdhdGlvbiByb3VuZC10cmlwJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGlubmVyQ2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTU10sIEVYUElSWSk7XG4gICAgY29uc3Qgb3V0ZXJDYWxsZGF0YSA9IHdyYXBJbkNhbGxGcm9tUGFyZW50KEFDTF9BRERSRVNTLCBpbm5lckNhbGxkYXRhKTtcblxuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgIHR4QnVpbGRlci5jb250cmFjdChGT1JXQVJERVJfQUREUkVTUyk7XG4gICAgdHhCdWlsZGVyLmRhdGEob3V0ZXJDYWxsZGF0YSk7XG5cbiAgICBjb25zdCBvcmlnaW5hbFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgcmF3SGV4ID0gb3JpZ2luYWxUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgY29uc3QgcmVidWlsdEJ1aWxkZXIgPSBnZXRCdWlsZGVyKCdodGV0aCcpIGFzIFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICByZWJ1aWx0QnVpbGRlci5mcm9tKHJhd0hleCk7XG4gICAgY29uc3QgcmVidWlsdFR4ID0gYXdhaXQgcmVidWlsdEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgcmF3SGV4KTtcbiAgICByZWJ1aWx0VHgudG9Kc29uKCkudG8uc2hvdWxkLmVxdWFsKEZPUldBUkRFUl9BRERSRVNTLnRvTG93ZXJDYXNlKCkpO1xuICAgIHJlYnVpbHRUeC50b0pzb24oKS5kYXRhLnNob3VsZC5zdGFydFdpdGgoY2FsbEZyb21QYXJlbnRNZXRob2RJZCk7XG4gIH0pO1xuXG4gIC8vIC0tLS0gVmFsaWRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGl0KCdzaG91bGQgdGhyb3cgZm9yIERlY3J5cHRpb25EZWxlZ2F0aW9uIHdoZW4gY29udHJhY3QgYWRkcmVzcyBpcyBtaXNzaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbik7XG4gICAgdHhCdWlsZGVyLmRhdGEoY2FsbGRhdGEpO1xuICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgY29udHJhY3QgYWRkcmVzcycpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGZvciBEZWNyeXB0aW9uRGVsZWdhdGlvbiB3aGVuIGRhdGEgZmllbGQgaXMgbWlzc2luZycsIGFzeW5jICgpID0+IHtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuRGVjcnlwdGlvbkRlbGVnYXRpb24pO1xuICAgIHR4QnVpbGRlci5jb250cmFjdChBQ0xfQUREUkVTUyk7XG4gICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBjb250cmFjdCBjYWxsIGRhdGEgZmllbGQnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGRhdGEoKSBpcyBjYWxsZWQgYmVmb3JlIHR5cGUgaXMgc2V0IHRvIGEgY29udHJhY3QgY2FsbCB0eXBlJywgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIHNob3VsZC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmRhdGEoY2FsbGRhdGEpLCAvZGF0YSBjYW4gb25seSBiZSBzZXQgZm9yIGNvbnRyYWN0IGNhbGwgdHJhbnNhY3Rpb24gdHlwZXMvKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flushCoins.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/flushCoins.ts"],"names":[],"mappings":""}
|