@bitgo/sdk-coin-opeth 18.7.2 → 18.7.3
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/test/fixtures/opeth.d.ts +54 -0
- package/dist/test/fixtures/opeth.d.ts.map +1 -0
- package/dist/test/fixtures/opeth.js +66 -0
- package/dist/test/getBuilder.d.ts +3 -0
- package/dist/test/getBuilder.d.ts.map +1 -0
- package/dist/test/getBuilder.js +9 -0
- package/dist/test/resources.d.ts +31 -0
- package/dist/test/resources.d.ts.map +1 -0
- package/dist/test/resources.js +45 -0
- package/dist/test/unit/opeth.d.ts +2 -0
- package/dist/test/unit/opeth.d.ts.map +1 -0
- package/dist/test/unit/opeth.js +902 -0
- package/dist/test/unit/opethToken.d.ts +2 -0
- package/dist/test/unit/opethToken.d.ts.map +1 -0
- package/dist/test/unit/opethToken.js +46 -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 +92 -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 +105 -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 +173 -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 +135 -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 +137 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +10 -7
- package/.eslintignore +0 -4
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -1016
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opethToken.d.ts","sourceRoot":"","sources":["../../../test/unit/opethToken.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
require("should");
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const sdk_test_1 = require("@bitgo/sdk-test");
|
|
9
|
+
const sdk_api_1 = require("@bitgo/sdk-api");
|
|
10
|
+
const abstract_eth_1 = require("@bitgo/abstract-eth");
|
|
11
|
+
const src_1 = require("../../src");
|
|
12
|
+
describe('Opeth Token:', function () {
|
|
13
|
+
let bitgo;
|
|
14
|
+
let opethTokenCoin;
|
|
15
|
+
let opTokenCoin;
|
|
16
|
+
const tokenName = 'topeth:terc18dp';
|
|
17
|
+
const opToken = 'opeth:op';
|
|
18
|
+
before(function () {
|
|
19
|
+
bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
|
|
20
|
+
(0, src_1.register)(bitgo);
|
|
21
|
+
bitgo.initializeTestVars();
|
|
22
|
+
opethTokenCoin = bitgo.coin(tokenName);
|
|
23
|
+
opTokenCoin = bitgo.coin(opToken);
|
|
24
|
+
});
|
|
25
|
+
it('should return constants', function () {
|
|
26
|
+
opethTokenCoin.getChain().should.equal('topeth:terc18dp');
|
|
27
|
+
opethTokenCoin.getBaseChain().should.equal('topeth');
|
|
28
|
+
opethTokenCoin.getFullName().should.equal('Opeth Token');
|
|
29
|
+
opethTokenCoin.getBaseFactor().should.equal(1e18);
|
|
30
|
+
opethTokenCoin.type.should.equal(tokenName);
|
|
31
|
+
opethTokenCoin.name.should.equal('Optimism Test ERC Token 18 Decimals');
|
|
32
|
+
opethTokenCoin.coin.should.equal('topeth');
|
|
33
|
+
opethTokenCoin.network.should.equal('Testnet');
|
|
34
|
+
opethTokenCoin.decimalPlaces.should.equal(18);
|
|
35
|
+
});
|
|
36
|
+
it('should return same token by contract address', function () {
|
|
37
|
+
const tokencoinBycontractAddress = bitgo.coin(opethTokenCoin.tokenContractAddress);
|
|
38
|
+
opethTokenCoin.should.deepEqual(tokencoinBycontractAddress);
|
|
39
|
+
});
|
|
40
|
+
it('should return only one token for optimism token contract address', function () {
|
|
41
|
+
const token = (0, abstract_eth_1.getToken)('0x4200000000000000000000000000000000000042', opTokenCoin.getNetwork(), opTokenCoin.getFamily());
|
|
42
|
+
(0, assert_1.default)(token);
|
|
43
|
+
token.name.should.equal('opeth:op');
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BldGhUb2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9vcGV0aFRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0JBQWdCO0FBQ2hCLG9EQUE0QjtBQUM1Qiw4Q0FBMEQ7QUFDMUQsNENBQTBDO0FBQzFDLHNEQUErQztBQUUvQyxtQ0FBcUM7QUFFckMsUUFBUSxDQUFDLGNBQWMsRUFBRTtJQUN2QixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxjQUFjLENBQUM7SUFDbkIsSUFBSSxXQUFXLENBQUM7SUFDaEIsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUM7SUFDcEMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDO0lBRTNCLE1BQU0sQ0FBQztRQUNMLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBQSxjQUFRLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEIsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMseUJBQXlCLEVBQUU7UUFDNUIsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxRCxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RCxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDeEUsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxjQUFjLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOENBQThDLEVBQUU7UUFDakQsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25GLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0VBQWtFLEVBQUU7UUFDckUsTUFBTSxLQUFLLEdBQUcsSUFBQSx1QkFBUSxFQUNwQiw0Q0FBNEMsRUFDNUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxFQUN4QixXQUFXLENBQUMsU0FBUyxFQUFFLENBQ3hCLENBQUM7UUFDRixJQUFBLGdCQUFNLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDZCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnc2hvdWxkJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuaW1wb3J0IHsgZ2V0VG9rZW4gfSBmcm9tICdAYml0Z28vYWJzdHJhY3QtZXRoJztcblxuaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tICcuLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnT3BldGggVG9rZW46JywgZnVuY3Rpb24gKCkge1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgbGV0IG9wZXRoVG9rZW5Db2luO1xuICBsZXQgb3BUb2tlbkNvaW47XG4gIGNvbnN0IHRva2VuTmFtZSA9ICd0b3BldGg6dGVyYzE4ZHAnO1xuICBjb25zdCBvcFRva2VuID0gJ29wZXRoOm9wJztcblxuICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgIGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuICAgIHJlZ2lzdGVyKGJpdGdvKTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBvcGV0aFRva2VuQ29pbiA9IGJpdGdvLmNvaW4odG9rZW5OYW1lKTtcbiAgICBvcFRva2VuQ29pbiA9IGJpdGdvLmNvaW4ob3BUb2tlbik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGNvbnN0YW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICBvcGV0aFRva2VuQ29pbi5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCgndG9wZXRoOnRlcmMxOGRwJyk7XG4gICAgb3BldGhUb2tlbkNvaW4uZ2V0QmFzZUNoYWluKCkuc2hvdWxkLmVxdWFsKCd0b3BldGgnKTtcbiAgICBvcGV0aFRva2VuQ29pbi5nZXRGdWxsTmFtZSgpLnNob3VsZC5lcXVhbCgnT3BldGggVG9rZW4nKTtcbiAgICBvcGV0aFRva2VuQ29pbi5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlMTgpO1xuICAgIG9wZXRoVG9rZW5Db2luLnR5cGUuc2hvdWxkLmVxdWFsKHRva2VuTmFtZSk7XG4gICAgb3BldGhUb2tlbkNvaW4ubmFtZS5zaG91bGQuZXF1YWwoJ09wdGltaXNtIFRlc3QgRVJDIFRva2VuIDE4IERlY2ltYWxzJyk7XG4gICAgb3BldGhUb2tlbkNvaW4uY29pbi5zaG91bGQuZXF1YWwoJ3RvcGV0aCcpO1xuICAgIG9wZXRoVG9rZW5Db2luLm5ldHdvcmsuc2hvdWxkLmVxdWFsKCdUZXN0bmV0Jyk7XG4gICAgb3BldGhUb2tlbkNvaW4uZGVjaW1hbFBsYWNlcy5zaG91bGQuZXF1YWwoMTgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiBzYW1lIHRva2VuIGJ5IGNvbnRyYWN0IGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdG9rZW5jb2luQnljb250cmFjdEFkZHJlc3MgPSBiaXRnby5jb2luKG9wZXRoVG9rZW5Db2luLnRva2VuQ29udHJhY3RBZGRyZXNzKTtcbiAgICBvcGV0aFRva2VuQ29pbi5zaG91bGQuZGVlcEVxdWFsKHRva2VuY29pbkJ5Y29udHJhY3RBZGRyZXNzKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gb25seSBvbmUgdG9rZW4gZm9yIG9wdGltaXNtIHRva2VuIGNvbnRyYWN0IGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdG9rZW4gPSBnZXRUb2tlbihcbiAgICAgICcweDQyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDInLFxuICAgICAgb3BUb2tlbkNvaW4uZ2V0TmV0d29yaygpLFxuICAgICAgb3BUb2tlbkNvaW4uZ2V0RmFtaWx5KClcbiAgICApO1xuICAgIGFzc2VydCh0b2tlbik7XG4gICAgdG9rZW4ubmFtZS5zaG91bGQuZXF1YWwoJ29wZXRoOm9wJyk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../test/unit/transaction.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,92 @@
|
|
|
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 statics_1 = require("@bitgo/statics");
|
|
41
|
+
const src_1 = require("../../src");
|
|
42
|
+
const utils_1 = require("../../src/lib/utils");
|
|
43
|
+
const testData = __importStar(require("../resources"));
|
|
44
|
+
describe('Opeth Transaction', () => {
|
|
45
|
+
const coinConfig = statics_1.coins.get('topeth');
|
|
46
|
+
const common = (0, utils_1.getCommon)(coinConfig.network.type);
|
|
47
|
+
/**
|
|
48
|
+
* return a new transaction object
|
|
49
|
+
*/
|
|
50
|
+
function getTransaction() {
|
|
51
|
+
return new src_1.Transaction(coinConfig, common);
|
|
52
|
+
}
|
|
53
|
+
describe('should throw ', () => {
|
|
54
|
+
it('an empty transaction', () => {
|
|
55
|
+
const tx = getTransaction();
|
|
56
|
+
should_1.default.throws(() => {
|
|
57
|
+
tx.toJson();
|
|
58
|
+
});
|
|
59
|
+
should_1.default.throws(() => {
|
|
60
|
+
tx.toBroadcastFormat();
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
describe('should return', () => {
|
|
65
|
+
it('a valid transaction', () => {
|
|
66
|
+
const tx = getTransaction();
|
|
67
|
+
tx.setTransactionData(testData.TXDATA);
|
|
68
|
+
should_1.default.deepEqual(tx.toJson(), testData.TXDATA);
|
|
69
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.UNSIGNED_TX);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('should sign', () => {
|
|
73
|
+
it('invalid', () => {
|
|
74
|
+
const tx = getTransaction();
|
|
75
|
+
return tx.sign(testData.KEYPAIR_PRV).should.be.rejected();
|
|
76
|
+
});
|
|
77
|
+
it('valid', () => {
|
|
78
|
+
const tx = getTransaction();
|
|
79
|
+
tx.setTransactionData(testData.TXDATA);
|
|
80
|
+
return tx.sign(testData.KEYPAIR_PRV).should.be.fulfilled();
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
describe('should return encoded tx', () => {
|
|
84
|
+
it('valid sign', async function () {
|
|
85
|
+
const tx = getTransaction();
|
|
86
|
+
tx.setTransactionData(testData.TXDATA);
|
|
87
|
+
await tx.sign(testData.KEYPAIR_PRV);
|
|
88
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.ENCODED_TRANSACTION);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsNENBQXVDO0FBQ3ZDLG1DQUF3QztBQUN4QywrQ0FBZ0Q7QUFDaEQsdURBQXlDO0FBRXpDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7SUFDakMsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxNQUFNLE1BQU0sR0FBRyxJQUFBLGlCQUFTLEVBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsRDs7T0FFRztJQUNILFNBQVMsY0FBYztRQUNyQixPQUFPLElBQUksaUJBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO1FBQzdCLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7WUFDOUIsTUFBTSxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7WUFDNUIsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNqQixFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztZQUNILGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDakIsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7UUFDN0IsRUFBRSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtZQUM3QixNQUFNLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQztZQUM1QixFQUFFLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLGdCQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0MsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUMzQixFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNqQixNQUFNLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQztZQUM1QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUNmLE1BQU0sRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQzVCLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO1FBQ3hDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsS0FBSztZQUNwQixNQUFNLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQztZQUM1QixFQUFFLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBnZXRDb21tb24gfSBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uL3Jlc291cmNlcyc7XG5cbmRlc2NyaWJlKCdPcGV0aCBUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCgndG9wZXRoJyk7XG4gIGNvbnN0IGNvbW1vbiA9IGdldENvbW1vbihjb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG5cbiAgLyoqXG4gICAqIHJldHVybiBhIG5ldyB0cmFuc2FjdGlvbiBvYmplY3RcbiAgICovXG4gIGZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uKGNvaW5Db25maWcsIGNvbW1vbik7XG4gIH1cblxuICBkZXNjcmliZSgnc2hvdWxkIHRocm93ICcsICgpID0+IHtcbiAgICBpdCgnYW4gZW1wdHkgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IGdldFRyYW5zYWN0aW9uKCk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgdHgudG9Kc29uKCk7XG4gICAgICB9KTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4ge1xuICAgICAgICB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgcmV0dXJuJywgKCkgPT4ge1xuICAgIGl0KCdhIHZhbGlkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBnZXRUcmFuc2FjdGlvbigpO1xuICAgICAgdHguc2V0VHJhbnNhY3Rpb25EYXRhKHRlc3REYXRhLlRYREFUQSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4LnRvSnNvbigpLCB0ZXN0RGF0YS5UWERBVEEpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLlVOU0lHTkVEX1RYKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBzaWduJywgKCkgPT4ge1xuICAgIGl0KCdpbnZhbGlkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBnZXRUcmFuc2FjdGlvbigpO1xuICAgICAgcmV0dXJuIHR4LnNpZ24odGVzdERhdGEuS0VZUEFJUl9QUlYpLnNob3VsZC5iZS5yZWplY3RlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ZhbGlkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBnZXRUcmFuc2FjdGlvbigpO1xuICAgICAgdHguc2V0VHJhbnNhY3Rpb25EYXRhKHRlc3REYXRhLlRYREFUQSk7XG4gICAgICByZXR1cm4gdHguc2lnbih0ZXN0RGF0YS5LRVlQQUlSX1BSVikuc2hvdWxkLmJlLmZ1bGZpbGxlZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIHJldHVybiBlbmNvZGVkIHR4JywgKCkgPT4ge1xuICAgIGl0KCd2YWxpZCBzaWduJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSBnZXRUcmFuc2FjdGlvbigpO1xuICAgICAgdHguc2V0VHJhbnNhY3Rpb25EYXRhKHRlc3REYXRhLlRYREFUQSk7XG4gICAgICBhd2FpdCB0eC5zaWduKHRlc3REYXRhLktFWVBBSVJfUFJWKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB0ZXN0RGF0YS5FTkNPREVEX1RSQU5TQUNUSU9OKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addressInitialization.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/addressInitialization.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,105 @@
|
|
|
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/sdk-core");
|
|
41
|
+
const testData = __importStar(require("../../resources"));
|
|
42
|
+
const getBuilder_1 = require("../../getBuilder");
|
|
43
|
+
describe('Opeth address initialization', () => {
|
|
44
|
+
it('should fail if there is no contract address', async () => {
|
|
45
|
+
const txBuilder = (0, getBuilder_1.getBuilder)('topeth');
|
|
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 build properly and return a correct address', async () => {
|
|
55
|
+
const txBuilder = (0, getBuilder_1.getBuilder)('topeth');
|
|
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.FORWARDER_FACTORY_ADDRESS);
|
|
63
|
+
txBuilder.baseAddress(testData.BASE_ADDRESS);
|
|
64
|
+
txBuilder.feeAddress(testData.FEE_ADDRESS);
|
|
65
|
+
txBuilder.forwarderVersion(4);
|
|
66
|
+
txBuilder.salt('0x1');
|
|
67
|
+
txBuilder.initCode(testData.FORWARDER_IMPLEMENTATION_ADDRESS);
|
|
68
|
+
txBuilder.sign({ key: testData.KEYPAIR_PRV.getKeys().prv });
|
|
69
|
+
const tx = await txBuilder.build();
|
|
70
|
+
const txJson = tx.toJson();
|
|
71
|
+
should_1.default.equal(txJson.deployedAddress, '0xd9d189aa6907a4fafd3c66e8cc178011b1f443f5');
|
|
72
|
+
should_1.default.equal(txJson.to, testData.FORWARDER_FACTORY_ADDRESS);
|
|
73
|
+
});
|
|
74
|
+
it('should build properly from serialized', async () => {
|
|
75
|
+
const txBuilder = (0, getBuilder_1.getBuilder)('topeth');
|
|
76
|
+
txBuilder.type(sdk_core_1.TransactionType.AddressInitialization);
|
|
77
|
+
txBuilder.from(testData.UNSIGNED_ADDRESS_INIT);
|
|
78
|
+
const tx = await txBuilder.build();
|
|
79
|
+
const txJson = tx.toJson();
|
|
80
|
+
should_1.default.equal(txJson.to, testData.FORWARDER_FACTORY_ADDRESS);
|
|
81
|
+
});
|
|
82
|
+
it('should build properly from signed serialized', async () => {
|
|
83
|
+
const txBuilder = (0, getBuilder_1.getBuilder)('topeth');
|
|
84
|
+
txBuilder.type(sdk_core_1.TransactionType.AddressInitialization);
|
|
85
|
+
txBuilder.from(testData.SIGNED_ADDRESS_INIT);
|
|
86
|
+
const tx = await txBuilder.build();
|
|
87
|
+
const txJson = tx.toJson();
|
|
88
|
+
should_1.default.equal(txJson.to, testData.FORWARDER_FACTORY_ADDRESS);
|
|
89
|
+
should_1.default.equal(txJson.from, '0xe6c43626f11312de29b0011fa9da71ea3bba0e9f');
|
|
90
|
+
});
|
|
91
|
+
it('should build properly createForwarder call for recovery', async () => {
|
|
92
|
+
const txBuilder = (0, getBuilder_1.getBuilder)('topeth');
|
|
93
|
+
txBuilder.type(sdk_core_1.TransactionType.ContractCall);
|
|
94
|
+
txBuilder.contract(testData.BASE_ADDRESS);
|
|
95
|
+
txBuilder.data(testData.CREATE_FORWARDER_METHOD);
|
|
96
|
+
txBuilder.fee({
|
|
97
|
+
fee: '10',
|
|
98
|
+
gasLimit: '1000',
|
|
99
|
+
});
|
|
100
|
+
const tx = await txBuilder.build();
|
|
101
|
+
const txJson = tx.toJson();
|
|
102
|
+
should_1.default.equal(txJson.to, testData.BASE_ADDRESS);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc0luaXRpYWxpemF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9hZGRyZXNzSW5pdGlhbGl6YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsOENBQWtEO0FBRWxELDBEQUE0QztBQUM1QyxpREFBOEM7QUFFOUMsUUFBUSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtJQUM1QyxFQUFFLENBQUMsNkNBQTZDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDM0QsTUFBTSxTQUFTLEdBQUcsSUFBQSx1QkFBVSxFQUFDLFFBQVEsQ0FBdUIsQ0FBQztRQUM3RCxTQUFTLENBQUMsSUFBSSxDQUFDLDBCQUFlLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RCxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ1osR0FBRyxFQUFFLElBQUk7WUFDVCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLCtDQUErQyxDQUFDLENBQUM7SUFDbEcsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0RBQW9ELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDbEUsTUFBTSxTQUFTLEdBQUcsSUFBQSx1QkFBVSxFQUFDLFFBQVEsQ0FBdUIsQ0FBQztRQUM3RCxTQUFTLENBQUMsSUFBSSxDQUFDLDBCQUFlLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RCxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ1osR0FBRyxFQUFFLElBQUk7WUFDVCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7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QUMsR0FBRyxDQUFDO1lBQ1osR0FBRyxFQUFFLElBQUk7WUFDVCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7UUFDSCxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IGdldEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9nZXRCdWlsZGVyJztcblxuZGVzY3JpYmUoJ09wZXRoIGFkZHJlc3MgaW5pdGlhbGl6YXRpb24nLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgZmFpbCBpZiB0aGVyZSBpcyBubyBjb250cmFjdCBhZGRyZXNzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGdldEJ1aWxkZXIoJ3RvcGV0aCcpIGFzIFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uKTtcbiAgICB0eEJ1aWxkZXIuZmVlKHtcbiAgICAgIGZlZTogJzEwJyxcbiAgICAgIGdhc0xpbWl0OiAnMTAwMCcsXG4gICAgfSk7XG4gICAgdHhCdWlsZGVyLmNvdW50ZXIoMSk7XG4gICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBjb250cmFjdCBhZGRyZXNzJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgcHJvcGVybHkgYW5kIHJldHVybiBhIGNvcnJlY3QgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBnZXRCdWlsZGVyKCd0b3BldGgnKSBhcyBUcmFuc2FjdGlvbkJ1aWxkZXI7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkFkZHJlc3NJbml0aWFsaXphdGlvbik7XG4gICAgdHhCdWlsZGVyLmZlZSh7XG4gICAgICBmZWU6ICcxMCcsXG4gICAgICBnYXNMaW1pdDogJzEwMDAnLFxuICAgIH0pO1xuICAgIHR4QnVpbGRlci5jb3VudGVyKDEpO1xuICAgIHR4QnVpbGRlci5jb250cmFjdCh0ZXN0RGF0YS5GT1JXQVJERVJfRkFDVE9SWV9BRERSRVNTKTtcbiAgICB0eEJ1aWxkZXIuYmFzZUFkZHJlc3ModGVzdERhdGEuQkFTRV9BRERSRVNTKTtcbiAgICB0eEJ1aWxkZXIuZmVlQWRkcmVzcyh0ZXN0RGF0YS5GRUVfQUREUkVTUyk7XG4gICAgdHhCdWlsZGVyLmZvcndhcmRlclZlcnNpb24oNCk7XG4gICAgdHhCdWlsZGVyLnNhbHQoJzB4MScpO1xuICAgIHR4QnVpbGRlci5pbml0Q29kZSh0ZXN0RGF0YS5GT1JXQVJERVJfSU1QTEVNRU5UQVRJT05fQUREUkVTUyk7XG4gICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLktFWVBBSVJfUFJWLmdldEtleXMoKS5wcnYgfSk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgIHNob3VsZC5lcXVhbCh0eEpzb24uZGVwbG95ZWRBZGRyZXNzLCAnMHhkOWQxODlhYTY5MDdhNGZhZmQzYzY2ZThjYzE3ODAxMWIxZjQ0M2Y1Jyk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi50bywgdGVzdERhdGEuRk9SV0FSREVSX0ZBQ1RPUllfQUREUkVTUyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgcHJvcGVybHkgZnJvbSBzZXJpYWxpemVkJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGdldEJ1aWxkZXIoJ3RvcGV0aCcpIGFzIFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uKTtcbiAgICB0eEJ1aWxkZXIuZnJvbSh0ZXN0RGF0YS5VTlNJR05FRF9BRERSRVNTX0lOSVQpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi50bywgdGVzdERhdGEuRk9SV0FSREVSX0ZBQ1RPUllfQUREUkVTUyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgcHJvcGVybHkgZnJvbSBzaWduZWQgc2VyaWFsaXplZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBnZXRCdWlsZGVyKCd0b3BldGgnKSBhcyBUcmFuc2FjdGlvbkJ1aWxkZXI7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkFkZHJlc3NJbml0aWFsaXphdGlvbik7XG4gICAgdHhCdWlsZGVyLmZyb20odGVzdERhdGEuU0lHTkVEX0FERFJFU1NfSU5JVCk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICBzaG91bGQuZXF1YWwodHhKc29uLnRvLCB0ZXN0RGF0YS5GT1JXQVJERVJfRkFDVE9SWV9BRERSRVNTKTtcbiAgICBzaG91bGQuZXF1YWwodHhKc29uLmZyb20sICcweGU2YzQzNjI2ZjExMzEyZGUyOWIwMDExZmE5ZGE3MWVhM2JiYTBlOWYnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBwcm9wZXJseSBjcmVhdGVGb3J3YXJkZXIgY2FsbCBmb3IgcmVjb3ZlcnknLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZ2V0QnVpbGRlcigndG9wZXRoJykgYXMgVHJhbnNhY3Rpb25CdWlsZGVyO1xuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgIHR4QnVpbGRlci5jb250cmFjdCh0ZXN0RGF0YS5CQVNFX0FERFJFU1MpO1xuICAgIHR4QnVpbGRlci5kYXRhKHRlc3REYXRhLkNSRUFURV9GT1JXQVJERVJfTUVUSE9EKTtcbiAgICB0eEJ1aWxkZXIuZmVlKHtcbiAgICAgIGZlZTogJzEwJyxcbiAgICAgIGdhc0xpbWl0OiAnMTAwMCcsXG4gICAgfSk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICBzaG91bGQuZXF1YWwodHhKc29uLnRvLCB0ZXN0RGF0YS5CQVNFX0FERFJFU1MpO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/send.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,173 @@
|
|
|
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 sdk_core_1 = require("@bitgo/sdk-core");
|
|
40
|
+
const statics_1 = require("@bitgo/statics");
|
|
41
|
+
const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
|
|
42
|
+
const should_1 = __importDefault(require("should"));
|
|
43
|
+
const ethUtil = __importStar(require("ethereumjs-util"));
|
|
44
|
+
const abstract_eth_1 = require("@bitgo/abstract-eth");
|
|
45
|
+
const testData = __importStar(require("../../resources"));
|
|
46
|
+
const getBuilder_1 = require("../../getBuilder");
|
|
47
|
+
const src_1 = require("../../../src");
|
|
48
|
+
describe('Opeth transaction builder send', () => {
|
|
49
|
+
describe('should sign and build', () => {
|
|
50
|
+
let txBuilder;
|
|
51
|
+
let key;
|
|
52
|
+
let contractAddress;
|
|
53
|
+
const getOperationHash = function (tx) {
|
|
54
|
+
const { data } = tx.toJson();
|
|
55
|
+
const { tokenContractAddress, expireTime, sequenceId, amount, to } = (0, abstract_eth_1.decodeTransferData)(data);
|
|
56
|
+
const operationParams = [
|
|
57
|
+
['string', 'address', 'uint', 'address', 'uint', 'uint'],
|
|
58
|
+
[
|
|
59
|
+
'11155420-ERC20',
|
|
60
|
+
new ethUtil.BN(ethUtil.stripHexPrefix(to), 16),
|
|
61
|
+
amount,
|
|
62
|
+
new ethUtil.BN(ethUtil.stripHexPrefix(tokenContractAddress || ''), 16),
|
|
63
|
+
expireTime,
|
|
64
|
+
sequenceId,
|
|
65
|
+
],
|
|
66
|
+
];
|
|
67
|
+
return ethereumjs_abi_1.default.soliditySHA3(...operationParams);
|
|
68
|
+
};
|
|
69
|
+
beforeEach(() => {
|
|
70
|
+
contractAddress = '0x8f977e912ef500548a0c3be6ddde9899f1199b81';
|
|
71
|
+
txBuilder = (0, getBuilder_1.getBuilder)('topeth');
|
|
72
|
+
key = testData.KEYPAIR_PRV.getKeys().prv;
|
|
73
|
+
txBuilder.fee({
|
|
74
|
+
fee: '1000000000',
|
|
75
|
+
gasLimit: '12100000',
|
|
76
|
+
});
|
|
77
|
+
txBuilder.counter(2);
|
|
78
|
+
txBuilder.type(sdk_core_1.TransactionType.Send);
|
|
79
|
+
txBuilder.contract(contractAddress);
|
|
80
|
+
});
|
|
81
|
+
it('a send funds transaction', async () => {
|
|
82
|
+
const recipient = '0x19645032c7f1533395d44a629462e751084d3e4c';
|
|
83
|
+
const amount = '1000000000';
|
|
84
|
+
const expireTime = 1590066728;
|
|
85
|
+
const sequenceId = 5;
|
|
86
|
+
txBuilder
|
|
87
|
+
.transfer()
|
|
88
|
+
.amount(amount)
|
|
89
|
+
.to(recipient)
|
|
90
|
+
.expirationTime(expireTime)
|
|
91
|
+
.contractSequenceId(sequenceId)
|
|
92
|
+
.key(key);
|
|
93
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
94
|
+
const tx = await txBuilder.build();
|
|
95
|
+
should_1.default.equal(tx.toJson().chainId, 11155420);
|
|
96
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TX_BROADCAST_LEGACY);
|
|
97
|
+
should_1.default.equal(tx.signature.length, 2);
|
|
98
|
+
should_1.default.equal(tx.inputs.length, 1);
|
|
99
|
+
should_1.default.equal(tx.inputs[0].address, contractAddress);
|
|
100
|
+
should_1.default.equal(tx.inputs[0].value, amount);
|
|
101
|
+
should_1.default.equal(tx.outputs.length, 1);
|
|
102
|
+
should_1.default.equal(tx.outputs[0].address, recipient);
|
|
103
|
+
should_1.default.equal(tx.outputs[0].value, amount);
|
|
104
|
+
const data = tx.toJson().data;
|
|
105
|
+
const { to, amount: parsedAmount, expireTime: parsedExpireTime, sequenceId: parsedSequenceId, } = (0, abstract_eth_1.decodeTransferData)(data);
|
|
106
|
+
should_1.default.equal(to, recipient);
|
|
107
|
+
should_1.default.equal(parsedAmount, amount);
|
|
108
|
+
should_1.default.equal(parsedExpireTime, expireTime);
|
|
109
|
+
should_1.default.equal(parsedSequenceId, sequenceId);
|
|
110
|
+
});
|
|
111
|
+
it('a send funds with amount 0 transaction', async () => {
|
|
112
|
+
txBuilder
|
|
113
|
+
.transfer()
|
|
114
|
+
.amount('0')
|
|
115
|
+
.to('0x19645032c7f1533395d44a629462e751084d3e4c')
|
|
116
|
+
.expirationTime(1590066728)
|
|
117
|
+
.contractSequenceId(5)
|
|
118
|
+
.key(key);
|
|
119
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
120
|
+
const tx = await txBuilder.build();
|
|
121
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TX_AMOUNT_ZERO_BROADCAST);
|
|
122
|
+
});
|
|
123
|
+
it('a send token transaction', async () => {
|
|
124
|
+
const recipient = '0x72c2c8e08bf91d755cd7d26b49a2ee3dc99de1b9';
|
|
125
|
+
const contractAddress = '0xdf7decb1baa8f529f0c8982cbb4be50357195299';
|
|
126
|
+
const amount = '100';
|
|
127
|
+
txBuilder.contract(contractAddress);
|
|
128
|
+
txBuilder
|
|
129
|
+
.transfer()
|
|
130
|
+
.coin('topeth:terc18dp')
|
|
131
|
+
.amount(amount)
|
|
132
|
+
.to(recipient)
|
|
133
|
+
.expirationTime(1590066728)
|
|
134
|
+
.contractSequenceId(5)
|
|
135
|
+
.key(key);
|
|
136
|
+
txBuilder.sign({
|
|
137
|
+
key: testData.PRIVATE_KEY_1,
|
|
138
|
+
});
|
|
139
|
+
const tx = await txBuilder.build();
|
|
140
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TOKEN_TX_BROADCAST);
|
|
141
|
+
should_1.default.equal(tx.signature.length, 2);
|
|
142
|
+
should_1.default.equal(tx.inputs.length, 1);
|
|
143
|
+
should_1.default.equal(tx.inputs[0].address, contractAddress);
|
|
144
|
+
should_1.default.equal(tx.inputs[0].value, amount);
|
|
145
|
+
should_1.default.equal(tx.inputs[0].coin, 'topeth:terc18dp');
|
|
146
|
+
should_1.default.equal(tx.outputs.length, 1);
|
|
147
|
+
should_1.default.equal(tx.outputs[0].address, recipient);
|
|
148
|
+
should_1.default.equal(tx.outputs[0].value, amount);
|
|
149
|
+
should_1.default.equal(tx.outputs[0].coin, 'topeth:terc18dp');
|
|
150
|
+
const { signature } = (0, abstract_eth_1.decodeTransferData)(tx.toJson().data);
|
|
151
|
+
const operationHash = getOperationHash(tx);
|
|
152
|
+
const { v, r, s } = ethUtil.fromRpcSig(signature);
|
|
153
|
+
const senderPubKey = ethUtil.ecrecover(Buffer.from(operationHash, 'hex'), v, r, s);
|
|
154
|
+
const senderAddress = ethUtil.pubToAddress(senderPubKey);
|
|
155
|
+
const senderKey = new abstract_eth_1.KeyPair({ prv: testData.PRIVATE_KEY_1 });
|
|
156
|
+
ethUtil.bufferToHex(senderAddress).should.equal(senderKey.getAddress());
|
|
157
|
+
});
|
|
158
|
+
it('a send token transactions from serialized', async () => {
|
|
159
|
+
const txBuilder = new src_1.TransactionBuilder(statics_1.coins.get('topeth'));
|
|
160
|
+
txBuilder.from(testData.SEND_TOKEN_TX_BROADCAST);
|
|
161
|
+
const tx = await txBuilder.build();
|
|
162
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TOKEN_TX_BROADCAST);
|
|
163
|
+
const { signature } = (0, abstract_eth_1.decodeTransferData)(tx.toJson().data);
|
|
164
|
+
const operationHash = getOperationHash(tx);
|
|
165
|
+
const { v, r, s } = ethUtil.fromRpcSig(signature);
|
|
166
|
+
const senderPubKey = ethUtil.ecrecover(Buffer.from(operationHash || ''), v, r, s);
|
|
167
|
+
const senderAddress = ethUtil.pubToAddress(senderPubKey);
|
|
168
|
+
const senderKey = new abstract_eth_1.KeyPair({ prv: testData.PRIVATE_KEY_1 });
|
|
169
|
+
ethUtil.bufferToHex(senderAddress).should.equal(senderKey.getAddress());
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvc2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUFtRTtBQUNuRSw0Q0FBdUM7QUFDdkMsb0VBQXlDO0FBQ3pDLG9EQUE0QjtBQUM1Qix5REFBMkM7QUFFM0Msc0RBQWtFO0FBQ2xFLDBEQUE0QztBQUM1QyxpREFBOEM7QUFDOUMsc0NBQWtEO0FBRWxELFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUU7SUFDOUMsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtRQUNyQyxJQUFJLFNBQVMsQ0FBQztRQUNkLElBQUksR0FBRyxDQUFDO1FBQ1IsSUFBSSxlQUFlLENBQUM7UUFFcEIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLEVBQW1CO1lBQ3BELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsTUFBTSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUEsaUNBQWtCLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUYsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7Z0JBQ3hEO29CQUNFLGdCQUFnQjtvQkFDaEIsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUM5QyxNQUFNO29CQUNOLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQyxFQUFFLEVB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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlLCBCYXNlVHJhbnNhY3Rpb24gfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0ICogYXMgZXRoVXRpbCBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuXG5pbXBvcnQgeyBkZWNvZGVUcmFuc2ZlckRhdGEsIEtleVBhaXIgfSBmcm9tICdAYml0Z28vYWJzdHJhY3QtZXRoJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBnZXRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vZ2V0QnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnT3BldGggdHJhbnNhY3Rpb24gYnVpbGRlciBzZW5kJywgKCkgPT4ge1xuICBkZXNjcmliZSgnc2hvdWxkIHNpZ24gYW5kIGJ1aWxkJywgKCkgPT4ge1xuICAgIGxldCB0eEJ1aWxkZXI7XG4gICAgbGV0IGtleTtcbiAgICBsZXQgY29udHJhY3RBZGRyZXNzO1xuXG4gICAgY29uc3QgZ2V0T3BlcmF0aW9uSGFzaCA9IGZ1bmN0aW9uICh0eDogQmFzZVRyYW5zYWN0aW9uKTogc3RyaW5nIHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gdHgudG9Kc29uKCk7XG4gICAgICBjb25zdCB7IHRva2VuQ29udHJhY3RBZGRyZXNzLCBleHBpcmVUaW1lLCBzZXF1ZW5jZUlkLCBhbW91bnQsIHRvIH0gPSBkZWNvZGVUcmFuc2ZlckRhdGEoZGF0YSk7XG4gICAgICBjb25zdCBvcGVyYXRpb25QYXJhbXMgPSBbXG4gICAgICAgIFsnc3RyaW5nJywgJ2FkZHJlc3MnLCAndWludCcsICdhZGRyZXNzJywgJ3VpbnQnLCAndWludCddLFxuICAgICAgICBbXG4gICAgICAgICAgJzExMTU1NDIwLUVSQzIwJyxcbiAgICAgICAgICBuZXcgZXRoVXRpbC5CTihldGhVdGlsLnN0cmlwSGV4UHJlZml4KHRvKSwgMTYpLFxuICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICBuZXcgZXRoVXRpbC5CTihldGhVdGlsLnN0cmlwSGV4UHJlZml4KHRva2VuQ29udHJhY3RBZGRyZXNzIHx8ICcnKSwgMTYpLFxuICAgICAgICAgIGV4cGlyZVRpbWUsXG4gICAgICAgICAgc2VxdWVuY2VJZCxcbiAgICAgICAgXSxcbiAgICAgIF07XG4gICAgICByZXR1cm4gRXRoZXJldW1BYmkuc29saWRpdHlTSEEzKC4uLm9wZXJhdGlvblBhcmFtcyk7XG4gICAgfTtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgY29udHJhY3RBZGRyZXNzID0gJzB4OGY5NzdlOTEyZWY1MDA1NDhhMGMzYmU2ZGRkZTk4OTlmMTE5OWI4MSc7XG4gICAgICB0eEJ1aWxkZXIgPSBnZXRCdWlsZGVyKCd0b3BldGgnKSBhcyBUcmFuc2FjdGlvbkJ1aWxkZXI7XG4gICAgICBrZXkgPSB0ZXN0RGF0YS5LRVlQQUlSX1BSVi5nZXRLZXlzKCkucHJ2IGFzIHN0cmluZztcbiAgICAgIHR4QnVpbGRlci5mZWUoe1xuICAgICAgICBmZWU6ICcxMDAwMDAwMDAwJyxcbiAgICAgICAgZ2FzTGltaXQ6ICcxMjEwMDAwMCcsXG4gICAgICB9KTtcbiAgICAgIHR4QnVpbGRlci5jb3VudGVyKDIpO1xuICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KGNvbnRyYWN0QWRkcmVzcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBzZW5kIGZ1bmRzIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVjaXBpZW50ID0gJzB4MTk2NDUwMzJjN2YxNTMzMzk1ZDQ0YTYyOTQ2MmU3NTEwODRkM2U0Yyc7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMTAwMDAwMDAwMCc7XG4gICAgICBjb25zdCBleHBpcmVUaW1lID0gMTU5MDA2NjcyODtcbiAgICAgIGNvbnN0IHNlcXVlbmNlSWQgPSA1O1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC50cmFuc2ZlcigpXG4gICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAudG8ocmVjaXBpZW50KVxuICAgICAgICAuZXhwaXJhdGlvblRpbWUoZXhwaXJlVGltZSlcbiAgICAgICAgLmNvbnRyYWN0U2VxdWVuY2VJZChzZXF1ZW5jZUlkKVxuICAgICAgICAua2V5KGtleSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuUFJJVkFURV9LRVlfMSB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC50b0pzb24oKS5jaGFpbklkLCAxMTE1NTQyMCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuU0VORF9UWF9CUk9BRENBU1RfTEVHQUNZKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5zaWduYXR1cmUubGVuZ3RoLCAyKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0uYWRkcmVzcywgY29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0udmFsdWUsIGFtb3VudCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICBzaG91bGQuZXF1YWwodHgub3V0cHV0c1swXS5hZGRyZXNzLCByZWNpcGllbnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHNbMF0udmFsdWUsIGFtb3VudCk7XG5cbiAgICAgIGNvbnN0IGRhdGEgPSB0eC50b0pzb24oKS5kYXRhO1xuICAgICAgY29uc3Qge1xuICAgICAgICB0byxcbiAgICAgICAgYW1vdW50OiBwYXJzZWRBbW91bnQsXG4gICAgICAgIGV4cGlyZVRpbWU6IHBhcnNlZEV4cGlyZVRpbWUsXG4gICAgICAgIHNlcXVlbmNlSWQ6IHBhcnNlZFNlcXVlbmNlSWQsXG4gICAgICB9ID0gZGVjb2RlVHJhbnNmZXJEYXRhKGRhdGEpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvLCByZWNpcGllbnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHBhcnNlZEFtb3VudCwgYW1vdW50KTtcbiAgICAgIHNob3VsZC5lcXVhbChwYXJzZWRFeHBpcmVUaW1lLCBleHBpcmVUaW1lKTtcbiAgICAgIHNob3VsZC5lcXVhbChwYXJzZWRTZXF1ZW5jZUlkLCBzZXF1ZW5jZUlkKTtcbiAgICB9KTtcblxuICAgIGl0KCdhIHNlbmQgZnVuZHMgd2l0aCBhbW91bnQgMCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIHR4QnVpbGRlclxuICAgICAgICAudHJhbnNmZXIoKVxuICAgICAgICAuYW1vdW50KCcwJylcbiAgICAgICAgLnRvKCcweDE5NjQ1MDMyYzdmMTUzMzM5NWQ0NGE2Mjk0NjJlNzUxMDg0ZDNlNGMnKVxuICAgICAgICAuZXhwaXJhdGlvblRpbWUoMTU5MDA2NjcyOClcbiAgICAgICAgLmNvbnRyYWN0U2VxdWVuY2VJZCg1KVxuICAgICAgICAua2V5KGtleSk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuUFJJVkFURV9LRVlfMSB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuU0VORF9UWF9BTU9VTlRfWkVST19CUk9BRENBU1QpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Egc2VuZCB0b2tlbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlY2lwaWVudCA9ICcweDcyYzJjOGUwOGJmOTFkNzU1Y2Q3ZDI2YjQ5YTJlZTNkYzk5ZGUxYjknO1xuICAgICAgY29uc3QgY29udHJhY3RBZGRyZXNzID0gJzB4ZGY3ZGVjYjFiYWE4ZjUyOWYwYzg5ODJjYmI0YmU1MDM1NzE5NTI5OSc7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMTAwJztcbiAgICAgIHR4QnVpbGRlci5jb250cmFjdChjb250cmFjdEFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyXG4gICAgICAgIC50cmFuc2ZlcigpXG4gICAgICAgIC5jb2luKCd0b3BldGg6dGVyYzE4ZHAnKVxuICAgICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgICAgLnRvKHJlY2lwaWVudClcbiAgICAgICAgLmV4cGlyYXRpb25UaW1lKDE1OTAwNjY3MjgpXG4gICAgICAgIC5jb250cmFjdFNlcXVlbmNlSWQoNSlcbiAgICAgICAgLmtleShrZXkpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oe1xuICAgICAgICBrZXk6IHRlc3REYXRhLlBSSVZBVEVfS0VZXzEsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB0ZXN0RGF0YS5TRU5EX1RPS0VOX1RYX0JST0FEQ0FTVCk7XG4gICAgICBzaG91bGQuZXF1YWwodHguc2lnbmF0dXJlLmxlbmd0aCwgMik7XG4gICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzLmxlbmd0aCwgMSk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLmFkZHJlc3MsIGNvbnRyYWN0QWRkcmVzcyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLnZhbHVlLCBhbW91bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0c1swXS5jb2luLCAndG9wZXRoOnRlcmMxOGRwJyk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICBzaG91bGQuZXF1YWwodHgub3V0cHV0c1swXS5hZGRyZXNzLCByZWNpcGllbnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHNbMF0udmFsdWUsIGFtb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgub3V0cHV0c1swXS5jb2luLCAndG9wZXRoOnRlcmMxOGRwJyk7XG5cbiAgICAgIGNvbnN0IHsgc2lnbmF0dXJlIH0gPSBkZWNvZGVUcmFuc2ZlckRhdGEodHgudG9Kc29uKCkuZGF0YSk7XG4gICAgICBjb25zdCBvcGVyYXRpb25IYXNoID0gZ2V0T3BlcmF0aW9uSGFzaCh0eCk7XG5cbiAgICAgIGNvbnN0IHsgdiwgciwgcyB9ID0gZXRoVXRpbC5mcm9tUnBjU2lnKHNpZ25hdHVyZSk7XG4gICAgICBjb25zdCBzZW5kZXJQdWJLZXkgPSBldGhVdGlsLmVjcmVjb3ZlcihCdWZmZXIuZnJvbShvcGVyYXRpb25IYXNoLCAnaGV4JyksIHYsIHIsIHMpO1xuICAgICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IGV0aFV0aWwucHViVG9BZGRyZXNzKHNlbmRlclB1YktleSk7XG4gICAgICBjb25zdCBzZW5kZXJLZXkgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEuUFJJVkFURV9LRVlfMSB9KTtcbiAgICAgIGV0aFV0aWwuYnVmZmVyVG9IZXgoc2VuZGVyQWRkcmVzcykuc2hvdWxkLmVxdWFsKHNlbmRlcktleS5nZXRBZGRyZXNzKCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Egc2VuZCB0b2tlbiB0cmFuc2FjdGlvbnMgZnJvbSBzZXJpYWxpemVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQoJ3RvcGV0aCcpKTtcbiAgICAgIHR4QnVpbGRlci5mcm9tKHRlc3REYXRhLlNFTkRfVE9LRU5fVFhfQlJPQURDQVNUKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuU0VORF9UT0tFTl9UWF9CUk9BRENBU1QpO1xuXG4gICAgICBjb25zdCB7IHNpZ25hdHVyZSB9ID0gZGVjb2RlVHJhbnNmZXJEYXRhKHR4LnRvSnNvbigpLmRhdGEpO1xuICAgICAgY29uc3Qgb3BlcmF0aW9uSGFzaCA9IGdldE9wZXJhdGlvbkhhc2godHgpO1xuXG4gICAgICBjb25zdCB7IHYsIHIsIHMgfSA9IGV0aFV0aWwuZnJvbVJwY1NpZyhzaWduYXR1cmUpO1xuICAgICAgY29uc3Qgc2VuZGVyUHViS2V5ID0gZXRoVXRpbC5lY3JlY292ZXIoQnVmZmVyLmZyb20ob3BlcmF0aW9uSGFzaCB8fCAnJyksIHYsIHIsIHMpO1xuICAgICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IGV0aFV0aWwucHViVG9BZGRyZXNzKHNlbmRlclB1YktleSk7XG4gICAgICBjb25zdCBzZW5kZXJLZXkgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEuUFJJVkFURV9LRVlfMSB9KTtcbiAgICAgIGV0aFV0aWwuYnVmZmVyVG9IZXgoc2VuZGVyQWRkcmVzcykuc2hvdWxkLmVxdWFsKHNlbmRlcktleS5nZXRBZGRyZXNzKCkpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletInitialization.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/walletInitialization.ts"],"names":[],"mappings":""}
|