@bitgo/abstract-eth 21.8.0 → 22.0.0
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/CHANGELOG.md +20 -0
- package/dist/src/abstractEthLikeNewCoins.d.ts +11 -4
- package/dist/src/abstractEthLikeNewCoins.d.ts.map +1 -1
- package/dist/src/abstractEthLikeNewCoins.js +7 -7
- package/dist/src/lib/utils.d.ts +5 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +10 -2
- package/dist/test/index.d.ts +2 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +18 -0
- package/dist/test/unit/coin.d.ts +8 -0
- package/dist/test/unit/coin.d.ts.map +1 -0
- package/dist/test/unit/coin.js +568 -0
- package/dist/test/unit/index.d.ts +5 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +21 -0
- package/dist/test/unit/token.d.ts +2 -0
- package/dist/test/unit/token.d.ts.map +1 -0
- package/dist/test/unit/token.js +38 -0
- package/dist/test/unit/transaction.d.ts +3 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +61 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.d.ts +8 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.js +96 -0
- package/dist/test/unit/transactionBuilder/index.d.ts +4 -0
- package/dist/test/unit/transactionBuilder/index.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/index.js +20 -0
- package/dist/test/unit/transactionBuilder/send.d.ts +3 -0
- package/dist/test/unit/transactionBuilder/send.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/send.js +188 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.d.ts +10 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.js +125 -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 +76 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/index.ts +2 -0
- package/package.json +10 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../test/unit/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./transactionBuilder"), exports);
|
|
18
|
+
__exportStar(require("./token"), exports);
|
|
19
|
+
__exportStar(require("./transaction"), exports);
|
|
20
|
+
__exportStar(require("./coin"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUFxQztBQUNyQywwQ0FBd0I7QUFDeEIsZ0RBQThCO0FBQzlCLHlDQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NvaW4nO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../test/unit/token.ts"],"names":[],"mappings":"AAGA,wBAAgB,0BAA0B,CACxC,gBAAgB,KAAA,EAChB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,GAAG,QAiCd"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runTokenTestInitialization = void 0;
|
|
4
|
+
const sdk_test_1 = require("@bitgo/sdk-test");
|
|
5
|
+
const sdk_api_1 = require("@bitgo/sdk-api");
|
|
6
|
+
function runTokenTestInitialization(currentCoinToken, coinName, tokenNetworkName, testData) {
|
|
7
|
+
describe(`${coinName} Token:`, () => {
|
|
8
|
+
let bitgo;
|
|
9
|
+
let tokenCoin;
|
|
10
|
+
const coin = testData.COIN;
|
|
11
|
+
const tokenName = testData.NETWORK_TOKEN_IDENTIFIER;
|
|
12
|
+
before(function () {
|
|
13
|
+
bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
|
|
14
|
+
currentCoinToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
|
|
15
|
+
bitgo.safeRegister(name, coinConstructor);
|
|
16
|
+
});
|
|
17
|
+
bitgo.initializeTestVars();
|
|
18
|
+
tokenCoin = bitgo.coin(tokenName);
|
|
19
|
+
});
|
|
20
|
+
it('should return constants', () => {
|
|
21
|
+
tokenCoin.getChain().should.equal(tokenName);
|
|
22
|
+
tokenCoin.getBaseChain().should.equal(coin);
|
|
23
|
+
tokenCoin.getFullName().should.equal(`${coinName} Token`);
|
|
24
|
+
tokenCoin.getBaseFactor().should.equal(1e18);
|
|
25
|
+
tokenCoin.type.should.equal(tokenName);
|
|
26
|
+
tokenCoin.name.should.equal(tokenNetworkName);
|
|
27
|
+
tokenCoin.coin.should.equal(coin);
|
|
28
|
+
tokenCoin.network.should.equal('Testnet');
|
|
29
|
+
tokenCoin.decimalPlaces.should.equal(18);
|
|
30
|
+
});
|
|
31
|
+
it('should return same token by contract address', () => {
|
|
32
|
+
const tokencoinBycontractAddress = bitgo.coin(tokenCoin.tokenContractAddress);
|
|
33
|
+
tokenCoin.should.deepEqual(tokencoinBycontractAddress);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
exports.runTokenTestInitialization = runTokenTestInitialization;
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsOENBQTBEO0FBQzFELDRDQUEwQztBQUUxQyxTQUFnQiwwQkFBMEIsQ0FDeEMsZ0JBQWdCLEVBQ2hCLFFBQWdCLEVBQ2hCLGdCQUF3QixFQUN4QixRQUFhO0lBRWIsUUFBUSxDQUFDLEdBQUcsUUFBUSxTQUFTLEVBQUUsR0FBRyxFQUFFO1FBQ2xDLElBQUksS0FBbUIsQ0FBQztRQUN4QixJQUFJLFNBQVMsQ0FBQztRQUNkLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDM0IsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLHdCQUF3QixDQUFDO1FBQ3BELE1BQU0sQ0FBQztZQUNMLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDdEQsZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFO2dCQUMvRSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQUMsQ0FBQztZQUNILEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNCLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtZQUNqQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3QyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsUUFBUSxDQUFDLENBQUM7WUFDMUQsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0MsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzlDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtZQUN0RCxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDOUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQXJDRCxnRUFxQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJ1blRva2VuVGVzdEluaXRpYWxpemF0aW9uKFxuICBjdXJyZW50Q29pblRva2VuLFxuICBjb2luTmFtZTogc3RyaW5nLFxuICB0b2tlbk5ldHdvcmtOYW1lOiBzdHJpbmcsXG4gIHRlc3REYXRhOiBhbnlcbikge1xuICBkZXNjcmliZShgJHtjb2luTmFtZX0gVG9rZW46YCwgKCkgPT4ge1xuICAgIGxldCBiaXRnbzogVGVzdEJpdEdvQVBJO1xuICAgIGxldCB0b2tlbkNvaW47XG4gICAgY29uc3QgY29pbiA9IHRlc3REYXRhLkNPSU47XG4gICAgY29uc3QgdG9rZW5OYW1lID0gdGVzdERhdGEuTkVUV09SS19UT0tFTl9JREVOVElGSUVSO1xuICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICAgIGN1cnJlbnRDb2luVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgICAgIGJpdGdvLnNhZmVSZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpO1xuICAgICAgfSk7XG4gICAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICAgIHRva2VuQ29pbiA9IGJpdGdvLmNvaW4odG9rZW5OYW1lKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvbnN0YW50cycsICgpID0+IHtcbiAgICAgIHRva2VuQ29pbi5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCh0b2tlbk5hbWUpO1xuICAgICAgdG9rZW5Db2luLmdldEJhc2VDaGFpbigpLnNob3VsZC5lcXVhbChjb2luKTtcbiAgICAgIHRva2VuQ29pbi5nZXRGdWxsTmFtZSgpLnNob3VsZC5lcXVhbChgJHtjb2luTmFtZX0gVG9rZW5gKTtcbiAgICAgIHRva2VuQ29pbi5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlMTgpO1xuICAgICAgdG9rZW5Db2luLnR5cGUuc2hvdWxkLmVxdWFsKHRva2VuTmFtZSk7XG4gICAgICB0b2tlbkNvaW4ubmFtZS5zaG91bGQuZXF1YWwodG9rZW5OZXR3b3JrTmFtZSk7XG4gICAgICB0b2tlbkNvaW4uY29pbi5zaG91bGQuZXF1YWwoY29pbik7XG4gICAgICB0b2tlbkNvaW4ubmV0d29yay5zaG91bGQuZXF1YWwoJ1Rlc3RuZXQnKTtcbiAgICAgIHRva2VuQ29pbi5kZWNpbWFsUGxhY2VzLnNob3VsZC5lcXVhbCgxOCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBzYW1lIHRva2VuIGJ5IGNvbnRyYWN0IGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0b2tlbmNvaW5CeWNvbnRyYWN0QWRkcmVzcyA9IGJpdGdvLmNvaW4odG9rZW5Db2luLnRva2VuQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHRva2VuQ29pbi5zaG91bGQuZGVlcEVxdWFsKHRva2VuY29pbkJ5Y29udHJhY3RBZGRyZXNzKTtcbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../test/unit/transaction.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,QAuDlF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
exports.runTransactionTests = void 0;
|
|
7
|
+
const should_1 = __importDefault(require("should"));
|
|
8
|
+
const statics_1 = require("@bitgo/statics");
|
|
9
|
+
const src_1 = require("../../src");
|
|
10
|
+
function runTransactionTests(coinName, testData, common) {
|
|
11
|
+
describe(`${coinName} Transaction`, () => {
|
|
12
|
+
const coin = testData.COIN;
|
|
13
|
+
const coinConfig = statics_1.coins.get(coin);
|
|
14
|
+
/**
|
|
15
|
+
* return a new transaction object
|
|
16
|
+
*/
|
|
17
|
+
function getTransaction() {
|
|
18
|
+
return new src_1.Transaction(coinConfig, common);
|
|
19
|
+
}
|
|
20
|
+
describe('should throw ', () => {
|
|
21
|
+
it('an empty transaction', () => {
|
|
22
|
+
const tx = getTransaction();
|
|
23
|
+
should_1.default.throws(() => {
|
|
24
|
+
tx.toJson();
|
|
25
|
+
});
|
|
26
|
+
should_1.default.throws(() => {
|
|
27
|
+
tx.toBroadcastFormat();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe('should return', () => {
|
|
32
|
+
it('a valid transaction', () => {
|
|
33
|
+
const tx = getTransaction();
|
|
34
|
+
tx.setTransactionData(testData.TXDATA);
|
|
35
|
+
should_1.default.deepEqual(tx.toJson(), testData.TXDATA);
|
|
36
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.UNSIGNED_TX);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe('should sign', () => {
|
|
40
|
+
it('invalid', () => {
|
|
41
|
+
const tx = getTransaction();
|
|
42
|
+
return tx.sign(testData.KEYPAIR_PRV).should.be.rejected();
|
|
43
|
+
});
|
|
44
|
+
it('valid', () => {
|
|
45
|
+
const tx = getTransaction();
|
|
46
|
+
tx.setTransactionData(testData.TXDATA);
|
|
47
|
+
return tx.sign(testData.KEYPAIR_PRV).should.be.fulfilled();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe('should return encoded tx', () => {
|
|
51
|
+
it('valid sign', async function () {
|
|
52
|
+
const tx = getTransaction();
|
|
53
|
+
tx.setTransactionData(testData.TXDATA);
|
|
54
|
+
await tx.sign(testData.KEYPAIR_PRV);
|
|
55
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.ENCODED_TRANSACTION);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
exports.runTransactionTests = runTransactionTests;
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDRDQUF1QztBQUN2QyxtQ0FBd0M7QUFHeEMsU0FBZ0IsbUJBQW1CLENBQUMsUUFBZ0IsRUFBRSxRQUFhLEVBQUUsTUFBYztJQUNqRixRQUFRLENBQUMsR0FBRyxRQUFRLGNBQWMsRUFBRSxHQUFHLEVBQUU7UUFDdkMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUMzQixNQUFNLFVBQVUsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DOztXQUVHO1FBQ0gsU0FBUyxjQUFjO1lBQ3JCLE9BQU8sSUFBSSxpQkFBVyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7WUFDN0IsRUFBRSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtnQkFDOUIsTUFBTSxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtvQkFDakIsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNkLENBQUMsQ0FBQyxDQUFDO2dCQUNILGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtvQkFDakIsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO1lBQzdCLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7Z0JBQzdCLE1BQU0sRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO2dCQUM1QixFQUFFLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN2QyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMvQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1lBQzNCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUNqQixNQUFNLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVELENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ2YsTUFBTSxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3RCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBUSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtZQUN4QyxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUs7Z0JBQ3BCLE1BQU0sRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO2dCQUM1QixFQUFFLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN2QyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNyRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdkRELGtEQXVEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0IENvbW1vbiBmcm9tICdAZXRoZXJldW1qcy9jb21tb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gcnVuVHJhbnNhY3Rpb25UZXN0cyhjb2luTmFtZTogc3RyaW5nLCB0ZXN0RGF0YTogYW55LCBjb21tb246IENvbW1vbikge1xuICBkZXNjcmliZShgJHtjb2luTmFtZX0gVHJhbnNhY3Rpb25gLCAoKSA9PiB7XG4gICAgY29uc3QgY29pbiA9IHRlc3REYXRhLkNPSU47XG4gICAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldChjb2luKTtcblxuICAgIC8qKlxuICAgICAqIHJldHVybiBhIG5ldyB0cmFuc2FjdGlvbiBvYmplY3RcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRUcmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uKGNvaW5Db25maWcsIGNvbW1vbik7XG4gICAgfVxuXG4gICAgZGVzY3JpYmUoJ3Nob3VsZCB0aHJvdyAnLCAoKSA9PiB7XG4gICAgICBpdCgnYW4gZW1wdHkgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4ID0gZ2V0VHJhbnNhY3Rpb24oKTtcbiAgICAgICAgc2hvdWxkLnRocm93cygoKSA9PiB7XG4gICAgICAgICAgdHgudG9Kc29uKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBzaG91bGQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgICB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3Nob3VsZCByZXR1cm4nLCAoKSA9PiB7XG4gICAgICBpdCgnYSB2YWxpZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICAgICAgY29uc3QgdHggPSBnZXRUcmFuc2FjdGlvbigpO1xuICAgICAgICB0eC5zZXRUcmFuc2FjdGlvbkRhdGEodGVzdERhdGEuVFhEQVRBKTtcbiAgICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eC50b0pzb24oKSwgdGVzdERhdGEuVFhEQVRBKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLlVOU0lHTkVEX1RYKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3Nob3VsZCBzaWduJywgKCkgPT4ge1xuICAgICAgaXQoJ2ludmFsaWQnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4ID0gZ2V0VHJhbnNhY3Rpb24oKTtcbiAgICAgICAgcmV0dXJuIHR4LnNpZ24odGVzdERhdGEuS0VZUEFJUl9QUlYpLnNob3VsZC5iZS5yZWplY3RlZCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCd2YWxpZCcsICgpID0+IHtcbiAgICAgICAgY29uc3QgdHggPSBnZXRUcmFuc2FjdGlvbigpO1xuICAgICAgICB0eC5zZXRUcmFuc2FjdGlvbkRhdGEodGVzdERhdGEuVFhEQVRBKTtcbiAgICAgICAgcmV0dXJuIHR4LnNpZ24odGVzdERhdGEuS0VZUEFJUl9QUlYpLnNob3VsZC5iZS5mdWxmaWxsZWQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3Nob3VsZCByZXR1cm4gZW5jb2RlZCB0eCcsICgpID0+IHtcbiAgICAgIGl0KCd2YWxpZCBzaWduJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eCA9IGdldFRyYW5zYWN0aW9uKCk7XG4gICAgICAgIHR4LnNldFRyYW5zYWN0aW9uRGF0YSh0ZXN0RGF0YS5UWERBVEEpO1xuICAgICAgICBhd2FpdCB0eC5zaWduKHRlc3REYXRhLktFWVBBSVJfUFJWKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLkVOQ09ERURfVFJBTlNBQ1RJT04pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TransactionBuilder } from '../../../src';
|
|
2
|
+
export declare function testAddressInitializationWithoutContractAddress(txBuilder: TransactionBuilder): Promise<void>;
|
|
3
|
+
export declare function testFailsWithInvalidForwarderVersion(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
4
|
+
export declare function testAddressInitializationBuildsCorrectlyAndReturnsAddress(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
5
|
+
export declare function testAddressInitializationBuildsFromSerializedData(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
6
|
+
export declare function testAddressInitializationBuildsFromSignedSerializedData(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
7
|
+
export declare function testContractCallForCreateForwarder(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=addressInitialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addressInitialization.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/addressInitialization.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,wBAAsB,+CAA+C,CAAC,SAAS,EAAE,kBAAkB,iBAUlG;AAED,wBAAsB,oCAAoC,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBActG;AAED,wBAAsB,yDAAyD,CAC7E,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE,GAAG,iBAsBd;AAED,wBAAsB,iDAAiD,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAQnH;AAED,wBAAsB,uDAAuD,CAC3E,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE,GAAG,iBAUd;AAED,wBAAsB,kCAAkC,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAapG"}
|
|
@@ -0,0 +1,96 @@
|
|
|
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
|
+
exports.testContractCallForCreateForwarder = exports.testAddressInitializationBuildsFromSignedSerializedData = exports.testAddressInitializationBuildsFromSerializedData = exports.testAddressInitializationBuildsCorrectlyAndReturnsAddress = exports.testFailsWithInvalidForwarderVersion = exports.testAddressInitializationWithoutContractAddress = void 0;
|
|
7
|
+
const should_1 = __importDefault(require("should"));
|
|
8
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
9
|
+
async function testAddressInitializationWithoutContractAddress(txBuilder) {
|
|
10
|
+
it('should fail if there is no contract address', async () => {
|
|
11
|
+
txBuilder.type(sdk_core_1.TransactionType.AddressInitialization);
|
|
12
|
+
txBuilder.fee({
|
|
13
|
+
fee: '10',
|
|
14
|
+
gasLimit: '1000',
|
|
15
|
+
});
|
|
16
|
+
txBuilder.counter(1);
|
|
17
|
+
await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing contract address');
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
exports.testAddressInitializationWithoutContractAddress = testAddressInitializationWithoutContractAddress;
|
|
21
|
+
async function testFailsWithInvalidForwarderVersion(txBuilder, testData) {
|
|
22
|
+
it('should fail if forwarder version is invalid', async () => {
|
|
23
|
+
try {
|
|
24
|
+
txBuilder.type(sdk_core_1.TransactionType.AddressInitialization);
|
|
25
|
+
txBuilder.fee({
|
|
26
|
+
fee: '10',
|
|
27
|
+
gasLimit: '1000',
|
|
28
|
+
});
|
|
29
|
+
txBuilder.contract(testData.FORWARDER_FACTORY_ADDRESS);
|
|
30
|
+
txBuilder.forwarderVersion(3);
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
should_1.default.equal(e.message, 'Invalid forwarder version: 3');
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
exports.testFailsWithInvalidForwarderVersion = testFailsWithInvalidForwarderVersion;
|
|
38
|
+
async function testAddressInitializationBuildsCorrectlyAndReturnsAddress(txBuilder, testData) {
|
|
39
|
+
it('should build properly and return a correct address', async () => {
|
|
40
|
+
txBuilder.type(sdk_core_1.TransactionType.AddressInitialization);
|
|
41
|
+
txBuilder.fee({
|
|
42
|
+
fee: '10',
|
|
43
|
+
gasLimit: '1000',
|
|
44
|
+
});
|
|
45
|
+
txBuilder.counter(1);
|
|
46
|
+
txBuilder.contract(testData.FORWARDER_FACTORY_ADDRESS);
|
|
47
|
+
txBuilder.baseAddress(testData.BASE_ADDRESS);
|
|
48
|
+
txBuilder.feeAddress(testData.FEE_ADDRESS);
|
|
49
|
+
txBuilder.forwarderVersion(4);
|
|
50
|
+
txBuilder.salt('0x1');
|
|
51
|
+
txBuilder.initCode(testData.FORWARDER_IMPLEMENTATION_ADDRESS);
|
|
52
|
+
txBuilder.sign({ key: testData.KEYPAIR_PRV.getKeys().prv });
|
|
53
|
+
const tx = await txBuilder.build();
|
|
54
|
+
const txJson = tx.toJson();
|
|
55
|
+
should_1.default.equal(txJson.deployedAddress, testData.DEPLOYED_ADDRESS);
|
|
56
|
+
should_1.default.equal(txJson.to, testData.FORWARDER_FACTORY_ADDRESS);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
exports.testAddressInitializationBuildsCorrectlyAndReturnsAddress = testAddressInitializationBuildsCorrectlyAndReturnsAddress;
|
|
60
|
+
async function testAddressInitializationBuildsFromSerializedData(txBuilder, testData) {
|
|
61
|
+
it('should build properly from serialized', async () => {
|
|
62
|
+
txBuilder.type(sdk_core_1.TransactionType.AddressInitialization);
|
|
63
|
+
txBuilder.from(testData.UNSIGNED_ADDRESS_INIT);
|
|
64
|
+
const tx = await txBuilder.build();
|
|
65
|
+
const txJson = tx.toJson();
|
|
66
|
+
should_1.default.equal(txJson.to, testData.FORWARDER_FACTORY_ADDRESS);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
exports.testAddressInitializationBuildsFromSerializedData = testAddressInitializationBuildsFromSerializedData;
|
|
70
|
+
async function testAddressInitializationBuildsFromSignedSerializedData(txBuilder, testData) {
|
|
71
|
+
it('should build properly from signed serialized', async () => {
|
|
72
|
+
txBuilder.type(sdk_core_1.TransactionType.AddressInitialization);
|
|
73
|
+
txBuilder.from(testData.SIGNED_ADDRESS_INIT);
|
|
74
|
+
const tx = await txBuilder.build();
|
|
75
|
+
const txJson = tx.toJson();
|
|
76
|
+
should_1.default.equal(txJson.to, testData.FORWARDER_FACTORY_ADDRESS);
|
|
77
|
+
should_1.default.equal(txJson.from, testData.ACCOUNT_1);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
exports.testAddressInitializationBuildsFromSignedSerializedData = testAddressInitializationBuildsFromSignedSerializedData;
|
|
81
|
+
async function testContractCallForCreateForwarder(txBuilder, testData) {
|
|
82
|
+
it('should build properly createForwarder call for recovery', async () => {
|
|
83
|
+
txBuilder.type(sdk_core_1.TransactionType.ContractCall);
|
|
84
|
+
txBuilder.contract(testData.BASE_ADDRESS);
|
|
85
|
+
txBuilder.data(testData.CREATE_FORWARDER_METHOD);
|
|
86
|
+
txBuilder.fee({
|
|
87
|
+
fee: '10',
|
|
88
|
+
gasLimit: '1000',
|
|
89
|
+
});
|
|
90
|
+
const tx = await txBuilder.build();
|
|
91
|
+
const txJson = tx.toJson();
|
|
92
|
+
should_1.default.equal(txJson.to, testData.BASE_ADDRESS);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
exports.testContractCallForCreateForwarder = testContractCallForCreateForwarder;
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc0luaXRpYWxpemF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9hZGRyZXNzSW5pdGlhbGl6YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDhDQUFrRDtBQUczQyxLQUFLLFVBQVUsK0NBQStDLENBQUMsU0FBNkI7SUFDakcsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzNELFNBQVMsQ0FBQyxJQUFJLENBQUMsMEJBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3RELFNBQVMsQ0FBQyxHQUFHLENBQUM7WUFDWixHQUFHLEVBQUUsSUFBSTtZQUNULFFBQVEsRUFBRSxNQUFNO1NBQ2pCLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUNsRyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFWRCwwR0FVQztBQUVNLEtBQUssVUFBVSxvQ0FBb0MsQ0FBQyxTQUE2QixFQUFFLFFBQWE7SUFDckcsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzNELElBQUk7WUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLDBCQUFlLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN0RCxTQUFTLENBQUMsR0FBRyxDQUFDO2dCQUNaLEdBQUcsRUFBRSxJQUFJO2dCQUNULFFBQVEsRUFBRSxNQUFNO2FBQ2pCLENBQUMsQ0FBQztZQUNILFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDdkQsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxD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QUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDNUQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBWkQsMEhBWUM7QUFFTSxLQUFLLFVBQVUsa0NBQWtDLENBQUMsU0FBNkIsRUFBRSxRQUFhO0lBQ25HLEVBQUUsQ0FBQyx5REFBeUQsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN2RSxTQUFTLENBQUMsSUFBSSxDQUFDLDBCQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0MsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNqRCxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ1osR0FBRyxFQUFFLElBQUk7WUFDVCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7UUFDSCxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBYkQsZ0ZBYUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RBZGRyZXNzSW5pdGlhbGl6YXRpb25XaXRob3V0Q29udHJhY3RBZGRyZXNzKHR4QnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyKSB7XG4gIGl0KCdzaG91bGQgZmFpbCBpZiB0aGVyZSBpcyBubyBjb250cmFjdCBhZGRyZXNzJywgYXN5bmMgKCkgPT4ge1xuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb24pO1xuICAgIHR4QnVpbGRlci5mZWUoe1xuICAgICAgZmVlOiAnMTAnLFxuICAgICAgZ2FzTGltaXQ6ICcxMDAwJyxcbiAgICB9KTtcbiAgICB0eEJ1aWxkZXIuY291bnRlcigxKTtcbiAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGNvbnRyYWN0IGFkZHJlc3MnKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0RmFpbHNXaXRoSW52YWxpZEZvcndhcmRlclZlcnNpb24odHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXIsIHRlc3REYXRhOiBhbnkpIHtcbiAgaXQoJ3Nob3VsZCBmYWlsIGlmIGZvcndhcmRlciB2ZXJzaW9uIGlzIGludmFsaWQnLCBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb24pO1xuICAgICAgdHhCdWlsZGVyLmZlZSh7XG4gICAgICAgIGZlZTogJzEwJyxcbiAgICAgICAgZ2FzTGltaXQ6ICcxMDAwJyxcbiAgICAgIH0pO1xuICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KHRlc3REYXRhLkZPUldBUkRFUl9GQUNUT1JZX0FERFJFU1MpO1xuICAgICAgdHhCdWlsZGVyLmZvcndhcmRlclZlcnNpb24oMyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc2hvdWxkLmVxdWFsKGUubWVzc2FnZSwgJ0ludmFsaWQgZm9yd2FyZGVyIHZlcnNpb246IDMnKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdEFkZHJlc3NJbml0aWFsaXphdGlvbkJ1aWxkc0NvcnJlY3RseUFuZFJldHVybnNBZGRyZXNzKFxuICB0eEJ1aWxkZXI6IFRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGVzdERhdGE6IGFueVxuKSB7XG4gIGl0KCdzaG91bGQgYnVpbGQgcHJvcGVybHkgYW5kIHJldHVybiBhIGNvcnJlY3QgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uKTtcbiAgICB0eEJ1aWxkZXIuZmVlKHtcbiAgICAgIGZlZTogJzEwJyxcbiAgICAgIGdhc0xpbWl0OiAnMTAwMCcsXG4gICAgfSk7XG4gICAgdHhCdWlsZGVyLmNvdW50ZXIoMSk7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0KHRlc3REYXRhLkZPUldBUkRFUl9GQUNUT1JZX0FERFJFU1MpO1xuICAgIHR4QnVpbGRlci5iYXNlQWRkcmVzcyh0ZXN0RGF0YS5CQVNFX0FERFJFU1MpO1xuICAgIHR4QnVpbGRlci5mZWVBZGRyZXNzKHRlc3REYXRhLkZFRV9BRERSRVNTKTtcbiAgICB0eEJ1aWxkZXIuZm9yd2FyZGVyVmVyc2lvbig0KTtcbiAgICB0eEJ1aWxkZXIuc2FsdCgnMHgxJyk7XG4gICAgdHhCdWlsZGVyLmluaXRDb2RlKHRlc3REYXRhLkZPUldBUkRFUl9JTVBMRU1FTlRBVElPTl9BRERSRVNTKTtcbiAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuS0VZUEFJUl9QUlYuZ2V0S2V5cygpLnBydiB9KTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5kZXBsb3llZEFkZHJlc3MsIHRlc3REYXRhLkRFUExPWUVEX0FERFJFU1MpO1xuICAgIHNob3VsZC5lcXVhbCh0eEpzb24udG8sIHRlc3REYXRhLkZPUldBUkRFUl9GQUNUT1JZX0FERFJFU1MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RBZGRyZXNzSW5pdGlhbGl6YXRpb25CdWlsZHNGcm9tU2VyaWFsaXplZERhdGEodHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXIsIHRlc3REYXRhOiBhbnkpIHtcbiAgaXQoJ3Nob3VsZCBidWlsZCBwcm9wZXJseSBmcm9tIHNlcmlhbGl6ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkFkZHJlc3NJbml0aWFsaXphdGlvbik7XG4gICAgdHhCdWlsZGVyLmZyb20odGVzdERhdGEuVU5TSUdORURfQUREUkVTU19JTklUKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgIHNob3VsZC5lcXVhbCh0eEpzb24udG8sIHRlc3REYXRhLkZPUldBUkRFUl9GQUNUT1JZX0FERFJFU1MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RBZGRyZXNzSW5pdGlhbGl6YXRpb25CdWlsZHNGcm9tU2lnbmVkU2VyaWFsaXplZERhdGEoXG4gIHR4QnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0ZXN0RGF0YTogYW55XG4pIHtcbiAgaXQoJ3Nob3VsZCBidWlsZCBwcm9wZXJseSBmcm9tIHNpZ25lZCBzZXJpYWxpemVkJywgYXN5bmMgKCkgPT4ge1xuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb24pO1xuICAgIHR4QnVpbGRlci5mcm9tKHRlc3REYXRhLlNJR05FRF9BRERSRVNTX0lOSVQpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi50bywgdGVzdERhdGEuRk9SV0FSREVSX0ZBQ1RPUllfQUREUkVTUyk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5mcm9tLCB0ZXN0RGF0YS5BQ0NPVU5UXzEpO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RDb250cmFjdENhbGxGb3JDcmVhdGVGb3J3YXJkZXIodHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXIsIHRlc3REYXRhOiBhbnkpIHtcbiAgaXQoJ3Nob3VsZCBidWlsZCBwcm9wZXJseSBjcmVhdGVGb3J3YXJkZXIgY2FsbCBmb3IgcmVjb3ZlcnknLCBhc3luYyAoKSA9PiB7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCk7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0KHRlc3REYXRhLkJBU0VfQUREUkVTUyk7XG4gICAgdHhCdWlsZGVyLmRhdGEodGVzdERhdGEuQ1JFQVRFX0ZPUldBUkRFUl9NRVRIT0QpO1xuICAgIHR4QnVpbGRlci5mZWUoe1xuICAgICAgZmVlOiAnMTAnLFxuICAgICAgZ2FzTGltaXQ6ICcxMDAwJyxcbiAgICB9KTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgIHNob3VsZC5lcXVhbCh0eEpzb24udG8sIHRlc3REYXRhLkJBU0VfQUREUkVTUyk7XG4gIH0pO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./addressInitialization"), exports);
|
|
18
|
+
__exportStar(require("./send"), exports);
|
|
19
|
+
__exportStar(require("./walletInitialization"), exports);
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwREFBd0M7QUFDeEMseUNBQXVCO0FBQ3ZCLHlEQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWRkcmVzc0luaXRpYWxpemF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc2VuZCc7XG5leHBvcnQgKiBmcm9tICcuL3dhbGxldEluaXRpYWxpemF0aW9uJztcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/send.ts"],"names":[],"mappings":"AAMA,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,KAAA,EAAE,UAAU,KAAA,EAAE,QAAQ,KAAA,QA+I7E;AAED,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,KAAA,EAAE,QAAQ,EAAE,GAAG,iBA+BrG"}
|
|
@@ -0,0 +1,188 @@
|
|
|
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.testSendFundsTransaction = exports.runSendTests = void 0;
|
|
30
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
31
|
+
const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
|
|
32
|
+
const should_1 = __importDefault(require("should"));
|
|
33
|
+
const ethUtil = __importStar(require("ethereumjs-util"));
|
|
34
|
+
const src_1 = require("../../../src");
|
|
35
|
+
function runSendTests(coinName, txBuilder, getBuilder, testData) {
|
|
36
|
+
describe(`${coinName} transaction builder send`, () => {
|
|
37
|
+
describe('should sign and build', () => {
|
|
38
|
+
let key;
|
|
39
|
+
let contractAddress;
|
|
40
|
+
const networkTokenIdentifier = testData.NETWORK_TOKEN_IDENTIFIER;
|
|
41
|
+
const coin = testData.COIN;
|
|
42
|
+
const getOperationHash = function (tx) {
|
|
43
|
+
const { data } = tx.toJson();
|
|
44
|
+
const { tokenContractAddress, expireTime, sequenceId, amount, to } = (0, src_1.decodeTransferData)(data);
|
|
45
|
+
const operationParams = [
|
|
46
|
+
['string', 'address', 'uint', 'address', 'uint', 'uint'],
|
|
47
|
+
[
|
|
48
|
+
`${testData.CHAIN_ID}-ERC20`,
|
|
49
|
+
new ethUtil.BN(ethUtil.stripHexPrefix(to), 16),
|
|
50
|
+
amount,
|
|
51
|
+
new ethUtil.BN(ethUtil.stripHexPrefix(tokenContractAddress || ''), 16),
|
|
52
|
+
expireTime,
|
|
53
|
+
sequenceId,
|
|
54
|
+
],
|
|
55
|
+
];
|
|
56
|
+
return ethereumjs_abi_1.default.soliditySHA3(...operationParams);
|
|
57
|
+
};
|
|
58
|
+
beforeEach(() => {
|
|
59
|
+
contractAddress = '0x8f977e912ef500548a0c3be6ddde9899f1199b81';
|
|
60
|
+
txBuilder = getBuilder(coin);
|
|
61
|
+
key = testData.KEYPAIR_PRV.getKeys().prv;
|
|
62
|
+
txBuilder.fee({
|
|
63
|
+
fee: '1000000000',
|
|
64
|
+
gasLimit: '12100000',
|
|
65
|
+
});
|
|
66
|
+
txBuilder.counter(2);
|
|
67
|
+
txBuilder.type(sdk_core_1.TransactionType.Send);
|
|
68
|
+
txBuilder.contract(contractAddress);
|
|
69
|
+
});
|
|
70
|
+
it('a send funds transaction', async () => {
|
|
71
|
+
const recipient = '0x19645032c7f1533395d44a629462e751084d3e4c';
|
|
72
|
+
const amount = '1000000000';
|
|
73
|
+
const expireTime = 1590066728;
|
|
74
|
+
const sequenceId = 5;
|
|
75
|
+
txBuilder
|
|
76
|
+
.transfer()
|
|
77
|
+
.amount(amount)
|
|
78
|
+
.to(recipient)
|
|
79
|
+
.expirationTime(expireTime)
|
|
80
|
+
.contractSequenceId(sequenceId)
|
|
81
|
+
.key(key);
|
|
82
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
83
|
+
const tx = await txBuilder.build();
|
|
84
|
+
should_1.default.equal(tx.toJson().chainId, testData.TXDATA.chainId);
|
|
85
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TX_BROADCAST_LEGACY);
|
|
86
|
+
should_1.default.equal(tx.signature.length, 2);
|
|
87
|
+
should_1.default.equal(tx.inputs.length, 1);
|
|
88
|
+
should_1.default.equal(tx.inputs[0].address, contractAddress);
|
|
89
|
+
should_1.default.equal(tx.inputs[0].value, amount);
|
|
90
|
+
should_1.default.equal(tx.outputs.length, 1);
|
|
91
|
+
should_1.default.equal(tx.outputs[0].address, recipient);
|
|
92
|
+
should_1.default.equal(tx.outputs[0].value, amount);
|
|
93
|
+
const data = tx.toJson().data;
|
|
94
|
+
const { to, amount: parsedAmount, expireTime: parsedExpireTime, sequenceId: parsedSequenceId, } = (0, src_1.decodeTransferData)(data);
|
|
95
|
+
should_1.default.equal(to, recipient);
|
|
96
|
+
should_1.default.equal(parsedAmount, amount);
|
|
97
|
+
should_1.default.equal(parsedExpireTime, expireTime);
|
|
98
|
+
should_1.default.equal(parsedSequenceId, sequenceId);
|
|
99
|
+
});
|
|
100
|
+
it('a send funds with amount 0 transaction', async () => {
|
|
101
|
+
txBuilder
|
|
102
|
+
.transfer()
|
|
103
|
+
.amount('0')
|
|
104
|
+
.to('0x19645032c7f1533395d44a629462e751084d3e4c')
|
|
105
|
+
.expirationTime(1590066728)
|
|
106
|
+
.contractSequenceId(5)
|
|
107
|
+
.key(key);
|
|
108
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
109
|
+
const tx = await txBuilder.build();
|
|
110
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TX_AMOUNT_ZERO_BROADCAST);
|
|
111
|
+
});
|
|
112
|
+
it('a send token transaction', async () => {
|
|
113
|
+
const recipient = '0x72c2c8e08bf91d755cd7d26b49a2ee3dc99de1b9';
|
|
114
|
+
const contractAddress = '0xdf7decb1baa8f529f0c8982cbb4be50357195299';
|
|
115
|
+
const amount = '100';
|
|
116
|
+
const key = testData.KEYPAIR_PRV.getKeys().prv;
|
|
117
|
+
txBuilder.contract(contractAddress);
|
|
118
|
+
txBuilder
|
|
119
|
+
.transfer()
|
|
120
|
+
.coin(networkTokenIdentifier)
|
|
121
|
+
.amount(amount)
|
|
122
|
+
.to(recipient)
|
|
123
|
+
.expirationTime(1590066728)
|
|
124
|
+
.contractSequenceId(5)
|
|
125
|
+
.key(key);
|
|
126
|
+
txBuilder.sign({
|
|
127
|
+
key: testData.PRIVATE_KEY_1,
|
|
128
|
+
});
|
|
129
|
+
const tx = await txBuilder.build();
|
|
130
|
+
const operationHash = getOperationHash(tx);
|
|
131
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TOKEN_TX_BROADCAST);
|
|
132
|
+
should_1.default.equal(tx.signature.length, 2);
|
|
133
|
+
should_1.default.equal(tx.inputs.length, 1);
|
|
134
|
+
should_1.default.equal(tx.inputs[0].address, contractAddress);
|
|
135
|
+
should_1.default.equal(tx.inputs[0].value, amount);
|
|
136
|
+
should_1.default.equal(tx.inputs[0].coin, networkTokenIdentifier);
|
|
137
|
+
should_1.default.equal(tx.outputs.length, 1);
|
|
138
|
+
should_1.default.equal(tx.outputs[0].address, recipient);
|
|
139
|
+
should_1.default.equal(tx.outputs[0].value, amount);
|
|
140
|
+
should_1.default.equal(tx.outputs[0].coin, networkTokenIdentifier);
|
|
141
|
+
const { signature } = (0, src_1.decodeTransferData)(tx.toJson().data);
|
|
142
|
+
const { v, r, s } = ethUtil.fromRpcSig(signature);
|
|
143
|
+
const senderPubKey = ethUtil.ecrecover(Buffer.from(operationHash, 'hex'), v, r, s);
|
|
144
|
+
const senderAddress = ethUtil.pubToAddress(senderPubKey);
|
|
145
|
+
const senderKey = new src_1.KeyPair({ prv: testData.PRIVATE_KEY_1 });
|
|
146
|
+
ethUtil.bufferToHex(senderAddress).should.equal(senderKey.getAddress());
|
|
147
|
+
});
|
|
148
|
+
it('a send token transactions from serialized', async () => {
|
|
149
|
+
txBuilder.from(testData.SEND_TOKEN_TX_BROADCAST);
|
|
150
|
+
const tx = await txBuilder.build();
|
|
151
|
+
const operationHash = getOperationHash(tx);
|
|
152
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TOKEN_TX_BROADCAST);
|
|
153
|
+
const { signature } = (0, src_1.decodeTransferData)(tx.toJson().data);
|
|
154
|
+
const { v, r, s } = ethUtil.fromRpcSig(signature);
|
|
155
|
+
const senderPubKey = ethUtil.ecrecover(Buffer.from(operationHash || ''), v, r, s);
|
|
156
|
+
const senderAddress = ethUtil.pubToAddress(senderPubKey);
|
|
157
|
+
const senderKey = new src_1.KeyPair({ prv: testData.PRIVATE_KEY_1 });
|
|
158
|
+
ethUtil.bufferToHex(senderAddress).should.equal(senderKey.getAddress());
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
exports.runSendTests = runSendTests;
|
|
164
|
+
async function testSendFundsTransaction(tx, operationHash, txParams, testData) {
|
|
165
|
+
const { recipient, amount, contractAddress, expireTime, sequenceId } = txParams;
|
|
166
|
+
should_1.default.equal(tx.toJson().chainId, testData.TXDATA.chainId);
|
|
167
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TX_BROADCAST_LEGACY);
|
|
168
|
+
should_1.default.equal(tx.signature.length, 2);
|
|
169
|
+
should_1.default.equal(tx.inputs.length, 1);
|
|
170
|
+
should_1.default.equal(tx.inputs[0].address, contractAddress);
|
|
171
|
+
should_1.default.equal(tx.inputs[0].value, amount);
|
|
172
|
+
should_1.default.equal(tx.outputs.length, 1);
|
|
173
|
+
should_1.default.equal(tx.outputs[0].address, recipient);
|
|
174
|
+
should_1.default.equal(tx.outputs[0].value, amount);
|
|
175
|
+
const data = tx.toJson().data;
|
|
176
|
+
const { to, amount: parsedAmount, expireTime: parsedExpireTime, sequenceId: parsedSequenceId, signature, } = (0, src_1.decodeTransferData)(data);
|
|
177
|
+
should_1.default.equal(to, recipient);
|
|
178
|
+
should_1.default.equal(parsedAmount, amount);
|
|
179
|
+
should_1.default.equal(parsedExpireTime, expireTime);
|
|
180
|
+
should_1.default.equal(parsedSequenceId, sequenceId);
|
|
181
|
+
const { v, r, s } = ethUtil.fromRpcSig(signature);
|
|
182
|
+
const senderPubKey = ethUtil.ecrecover(Buffer.from(ethUtil.stripHexPrefix(operationHash), 'hex'), v, r, s);
|
|
183
|
+
const senderAddress = ethUtil.pubToAddress(senderPubKey);
|
|
184
|
+
const senderKey = new src_1.KeyPair({ prv: testData.PRIVATE_KEY_1 });
|
|
185
|
+
ethUtil.bufferToHex(senderAddress).should.equal(senderKey.getAddress());
|
|
186
|
+
}
|
|
187
|
+
exports.testSendFundsTransaction = testSendFundsTransaction;
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvc2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUFtRTtBQUNuRSxvRUFBeUM7QUFDekMsb0RBQTRCO0FBQzVCLHlEQUEyQztBQUMzQyxzQ0FBK0U7QUFFL0UsU0FBZ0IsWUFBWSxDQUFDLFFBQWdCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRO0lBQzVFLFFBQVEsQ0FBQyxHQUFHLFFBQVEsMkJBQTJCLEVBQUUsR0FBRyxFQUFFO1FBQ3BELFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7WUFDckMsSUFBSSxHQUFHLENBQUM7WUFDUixJQUFJLGVBQWUsQ0FBQztZQUNwQixNQUFNLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQztZQUNqRSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQzNCLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxFQUFtQjtnQkFDcEQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUEsd0JBQWtCLEVBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlGLE1BQU0sZUFBZSxHQUFHO29CQUN0QixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO29CQUN4RDt3QkFDRSxHQUFHLFFBQVEsQ0FBQyxRQUFRLFFBQVE7d0JBQzVCLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FB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QyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUMvRCxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQS9CRCw0REErQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUsIEJhc2VUcmFuc2FjdGlvbiB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0ICogYXMgZXRoVXRpbCBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuaW1wb3J0IHsgZGVjb2RlVHJhbnNmZXJEYXRhLCBLZXlQYWlyLCBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcnVuU2VuZFRlc3RzKGNvaW5OYW1lOiBzdHJpbmcsIHR4QnVpbGRlciwgZ2V0QnVpbGRlciwgdGVzdERhdGEpIHtcbiAgZGVzY3JpYmUoYCR7Y29pbk5hbWV9IHRyYW5zYWN0aW9uIGJ1aWxkZXIgc2VuZGAsICgpID0+IHtcbiAgICBkZXNjcmliZSgnc2hvdWxkIHNpZ24gYW5kIGJ1aWxkJywgKCkgPT4ge1xuICAgICAgbGV0IGtleTtcbiAgICAgIGxldCBjb250cmFjdEFkZHJlc3M7XG4gICAgICBjb25zdCBuZXR3b3JrVG9rZW5JZGVudGlmaWVyID0gdGVzdERhdGEuTkVUV09SS19UT0tFTl9JREVOVElGSUVSO1xuICAgICAgY29uc3QgY29pbiA9IHRlc3REYXRhLkNPSU47XG4gICAgICBjb25zdCBnZXRPcGVyYXRpb25IYXNoID0gZnVuY3Rpb24gKHR4OiBCYXNlVHJhbnNhY3Rpb24pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IHR4LnRvSnNvbigpO1xuICAgICAgICBjb25zdCB7IHRva2VuQ29udHJhY3RBZGRyZXNzLCBleHBpcmVUaW1lLCBzZXF1ZW5jZUlkLCBhbW91bnQsIHRvIH0gPSBkZWNvZGVUcmFuc2ZlckRhdGEoZGF0YSk7XG4gICAgICAgIGNvbnN0IG9wZXJhdGlvblBhcmFtcyA9IFtcbiAgICAgICAgICBbJ3N0cmluZycsICdhZGRyZXNzJywgJ3VpbnQnLCAnYWRkcmVzcycsICd1aW50JywgJ3VpbnQnXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBgJHt0ZXN0RGF0YS5DSEFJTl9JRH0tRVJDMjBgLFxuICAgICAgICAgICAgbmV3IGV0aFV0aWwuQk4oZXRoVXRpbC5zdHJpcEhleFByZWZpeCh0byksIDE2KSxcbiAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgIG5ldyBldGhVdGlsLkJOKGV0aFV0aWwuc3RyaXBIZXhQcmVmaXgodG9rZW5Db250cmFjdEFkZHJlc3MgfHwgJycpLCAxNiksXG4gICAgICAgICAgICBleHBpcmVUaW1lLFxuICAgICAgICAgICAgc2VxdWVuY2VJZCxcbiAgICAgICAgICBdLFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gRXRoZXJldW1BYmkuc29saWRpdHlTSEEzKC4uLm9wZXJhdGlvblBhcmFtcyk7XG4gICAgICB9O1xuXG4gICAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgICAgY29udHJhY3RBZGRyZXNzID0gJzB4OGY5NzdlOTEyZWY1MDA1NDhhMGMzYmU2ZGRkZTk4OTlmMTE5OWI4MSc7XG4gICAgICAgIHR4QnVpbGRlciA9IGdldEJ1aWxkZXIoY29pbikgYXMgVHJhbnNhY3Rpb25CdWlsZGVyO1xuICAgICAgICBrZXkgPSB0ZXN0RGF0YS5LRVlQQUlSX1BSVi5nZXRLZXlzKCkucHJ2IGFzIHN0cmluZztcbiAgICAgICAgdHhCdWlsZGVyLmZlZSh7XG4gICAgICAgICAgZmVlOiAnMTAwMDAwMDAwMCcsXG4gICAgICAgICAgZ2FzTGltaXQ6ICcxMjEwMDAwMCcsXG4gICAgICAgIH0pO1xuICAgICAgICB0eEJ1aWxkZXIuY291bnRlcigyKTtcbiAgICAgICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgICB0eEJ1aWxkZXIuY29udHJhY3QoY29udHJhY3RBZGRyZXNzKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYSBzZW5kIGZ1bmRzIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCByZWNpcGllbnQgPSAnMHgxOTY0NTAzMmM3ZjE1MzMzOTVkNDRhNjI5NDYyZTc1MTA4NGQzZTRjJztcbiAgICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAwMDAwMDAnO1xuICAgICAgICBjb25zdCBleHBpcmVUaW1lID0gMTU5MDA2NjcyODtcbiAgICAgICAgY29uc3Qgc2VxdWVuY2VJZCA9IDU7XG4gICAgICAgIHR4QnVpbGRlclxuICAgICAgICAgIC50cmFuc2ZlcigpXG4gICAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgICAgLnRvKHJlY2lwaWVudClcbiAgICAgICAgICAuZXhwaXJhdGlvblRpbWUoZXhwaXJlVGltZSlcbiAgICAgICAgICAuY29udHJhY3RTZXF1ZW5jZUlkKHNlcXVlbmNlSWQpXG4gICAgICAgICAgLmtleShrZXkpO1xuICAgICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuUFJJVkFURV9LRVlfMSB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvSnNvbigpLmNoYWluSWQsIHRlc3REYXRhLlRYREFUQS5jaGFpbklkKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLlNFTkRfVFhfQlJPQURDQVNUX0xFR0FDWSk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5zaWduYXR1cmUubGVuZ3RoLCAyKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLmFkZHJlc3MsIGNvbnRyYWN0QWRkcmVzcyk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0udmFsdWUsIGFtb3VudCk7XG5cbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHMubGVuZ3RoLCAxKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHNbMF0uYWRkcmVzcywgcmVjaXBpZW50KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHNbMF0udmFsdWUsIGFtb3VudCk7XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IHR4LnRvSnNvbigpLmRhdGE7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICB0byxcbiAgICAgICAgICBhbW91bnQ6IHBhcnNlZEFtb3VudCxcbiAgICAgICAgICBleHBpcmVUaW1lOiBwYXJzZWRFeHBpcmVUaW1lLFxuICAgICAgICAgIHNlcXVlbmNlSWQ6IHBhcnNlZFNlcXVlbmNlSWQsXG4gICAgICAgIH0gPSBkZWNvZGVUcmFuc2ZlckRhdGEoZGF0YSk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0bywgcmVjaXBpZW50KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHBhcnNlZEFtb3VudCwgYW1vdW50KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHBhcnNlZEV4cGlyZVRpbWUsIGV4cGlyZVRpbWUpO1xuICAgICAgICBzaG91bGQuZXF1YWwocGFyc2VkU2VxdWVuY2VJZCwgc2VxdWVuY2VJZCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2Egc2VuZCBmdW5kcyB3aXRoIGFtb3VudCAwIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB0eEJ1aWxkZXJcbiAgICAgICAgICAudHJhbnNmZXIoKVxuICAgICAgICAgIC5hbW91bnQoJzAnKVxuICAgICAgICAgIC50bygnMHgxOTY0NTAzMmM3ZjE1MzMzOTVkNDRhNjI5NDYyZTc1MTA4NGQzZTRjJylcbiAgICAgICAgICAuZXhwaXJhdGlvblRpbWUoMTU5MDA2NjcyOClcbiAgICAgICAgICAuY29udHJhY3RTZXF1ZW5jZUlkKDUpXG4gICAgICAgICAgLmtleShrZXkpO1xuICAgICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEuUFJJVkFURV9LRVlfMSB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLlNFTkRfVFhfQU1PVU5UX1pFUk9fQlJPQURDQVNUKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYSBzZW5kIHRva2VuIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCByZWNpcGllbnQgPSAnMHg3MmMyYzhlMDhiZjkxZDc1NWNkN2QyNmI0OWEyZWUzZGM5OWRlMWI5JztcbiAgICAgICAgY29uc3QgY29udHJhY3RBZGRyZXNzID0gJzB4ZGY3ZGVjYjFiYWE4ZjUyOWYwYzg5ODJjYmI0YmU1MDM1NzE5NTI5OSc7XG4gICAgICAgIGNvbnN0IGFtb3VudCA9ICcxMDAnO1xuICAgICAgICBjb25zdCBrZXkgPSB0ZXN0RGF0YS5LRVlQQUlSX1BSVi5nZXRLZXlzKCkucHJ2IGFzIHN0cmluZztcbiAgICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KGNvbnRyYWN0QWRkcmVzcyk7XG4gICAgICAgIHR4QnVpbGRlclxuICAgICAgICAgIC50cmFuc2ZlcigpXG4gICAgICAgICAgLmNvaW4obmV0d29ya1Rva2VuSWRlbnRpZmllcilcbiAgICAgICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgICAgICAudG8ocmVjaXBpZW50KVxuICAgICAgICAgIC5leHBpcmF0aW9uVGltZSgxNTkwMDY2NzI4KVxuICAgICAgICAgIC5jb250cmFjdFNlcXVlbmNlSWQoNSlcbiAgICAgICAgICAua2V5KGtleSk7XG4gICAgICAgIHR4QnVpbGRlci5zaWduKHtcbiAgICAgICAgICBrZXk6IHRlc3REYXRhLlBSSVZBVEVfS0VZXzEsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCBvcGVyYXRpb25IYXNoID0gZ2V0T3BlcmF0aW9uSGFzaCh0eCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB0ZXN0RGF0YS5TRU5EX1RPS0VOX1RYX0JST0FEQ0FTVCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5zaWduYXR1cmUubGVuZ3RoLCAyKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLmFkZHJlc3MsIGNvbnRyYWN0QWRkcmVzcyk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0udmFsdWUsIGFtb3VudCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0uY29pbiwgbmV0d29ya1Rva2VuSWRlbnRpZmllcik7XG5cbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHMubGVuZ3RoLCAxKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHNbMF0uYWRkcmVzcywgcmVjaXBpZW50KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHNbMF0udmFsdWUsIGFtb3VudCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLmNvaW4sIG5ldHdvcmtUb2tlbklkZW50aWZpZXIpO1xuXG4gICAgICAgIGNvbnN0IHsgc2lnbmF0dXJlIH0gPSBkZWNvZGVUcmFuc2ZlckRhdGEodHgudG9Kc29uKCkuZGF0YSk7XG5cbiAgICAgICAgY29uc3QgeyB2LCByLCBzIH0gPSBldGhVdGlsLmZyb21ScGNTaWcoc2lnbmF0dXJlKTtcbiAgICAgICAgY29uc3Qgc2VuZGVyUHViS2V5ID0gZXRoVXRpbC5lY3JlY292ZXIoQnVmZmVyLmZyb20ob3BlcmF0aW9uSGFzaCwgJ2hleCcpLCB2LCByLCBzKTtcbiAgICAgICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IGV0aFV0aWwucHViVG9BZGRyZXNzKHNlbmRlclB1YktleSk7XG4gICAgICAgIGNvbnN0IHNlbmRlcktleSA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5QUklWQVRFX0tFWV8xIH0pO1xuICAgICAgICBldGhVdGlsLmJ1ZmZlclRvSGV4KHNlbmRlckFkZHJlc3MpLnNob3VsZC5lcXVhbChzZW5kZXJLZXkuZ2V0QWRkcmVzcygpKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYSBzZW5kIHRva2VuIHRyYW5zYWN0aW9ucyBmcm9tIHNlcmlhbGl6ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci5mcm9tKHRlc3REYXRhLlNFTkRfVE9LRU5fVFhfQlJPQURDQVNUKTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uSGFzaCA9IGdldE9wZXJhdGlvbkhhc2godHgpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuU0VORF9UT0tFTl9UWF9CUk9BRENBU1QpO1xuXG4gICAgICAgIGNvbnN0IHsgc2lnbmF0dXJlIH0gPSBkZWNvZGVUcmFuc2ZlckRhdGEodHgudG9Kc29uKCkuZGF0YSk7XG4gICAgICAgIGNvbnN0IHsgdiwgciwgcyB9ID0gZXRoVXRpbC5mcm9tUnBjU2lnKHNpZ25hdHVyZSk7XG4gICAgICAgIGNvbnN0IHNlbmRlclB1YktleSA9IGV0aFV0aWwuZWNyZWNvdmVyKEJ1ZmZlci5mcm9tKG9wZXJhdGlvbkhhc2ggfHwgJycpLCB2LCByLCBzKTtcbiAgICAgICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IGV0aFV0aWwucHViVG9BZGRyZXNzKHNlbmRlclB1YktleSk7XG4gICAgICAgIGNvbnN0IHNlbmRlcktleSA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5QUklWQVRFX0tFWV8xIH0pO1xuICAgICAgICBldGhVdGlsLmJ1ZmZlclRvSGV4KHNlbmRlckFkZHJlc3MpLnNob3VsZC5lcXVhbChzZW5kZXJLZXkuZ2V0QWRkcmVzcygpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RTZW5kRnVuZHNUcmFuc2FjdGlvbih0eDogYW55LCBvcGVyYXRpb25IYXNoOiBzdHJpbmcsIHR4UGFyYW1zLCB0ZXN0RGF0YTogYW55KSB7XG4gIGNvbnN0IHsgcmVjaXBpZW50LCBhbW91bnQsIGNvbnRyYWN0QWRkcmVzcywgZXhwaXJlVGltZSwgc2VxdWVuY2VJZCB9ID0gdHhQYXJhbXM7XG4gIHNob3VsZC5lcXVhbCh0eC50b0pzb24oKS5jaGFpbklkLCB0ZXN0RGF0YS5UWERBVEEuY2hhaW5JZCk7XG4gIHNob3VsZC5lcXVhbCh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB0ZXN0RGF0YS5TRU5EX1RYX0JST0FEQ0FTVF9MRUdBQ1kpO1xuICBzaG91bGQuZXF1YWwodHguc2lnbmF0dXJlLmxlbmd0aCwgMik7XG4gIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgc2hvdWxkLmVxdWFsKHR4LmlucHV0c1swXS5hZGRyZXNzLCBjb250cmFjdEFkZHJlc3MpO1xuICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLnZhbHVlLCBhbW91bnQpO1xuXG4gIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLmFkZHJlc3MsIHJlY2lwaWVudCk7XG4gIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLnZhbHVlLCBhbW91bnQpO1xuXG4gIGNvbnN0IGRhdGEgPSB0eC50b0pzb24oKS5kYXRhO1xuICBjb25zdCB7XG4gICAgdG8sXG4gICAgYW1vdW50OiBwYXJzZWRBbW91bnQsXG4gICAgZXhwaXJlVGltZTogcGFyc2VkRXhwaXJlVGltZSxcbiAgICBzZXF1ZW5jZUlkOiBwYXJzZWRTZXF1ZW5jZUlkLFxuICAgIHNpZ25hdHVyZSxcbiAgfSA9IGRlY29kZVRyYW5zZmVyRGF0YShkYXRhKTtcblxuICBzaG91bGQuZXF1YWwodG8sIHJlY2lwaWVudCk7XG4gIHNob3VsZC5lcXVhbChwYXJzZWRBbW91bnQsIGFtb3VudCk7XG4gIHNob3VsZC5lcXVhbChwYXJzZWRFeHBpcmVUaW1lLCBleHBpcmVUaW1lKTtcbiAgc2hvdWxkLmVxdWFsKHBhcnNlZFNlcXVlbmNlSWQsIHNlcXVlbmNlSWQpO1xuICBjb25zdCB7IHYsIHIsIHMgfSA9IGV0aFV0aWwuZnJvbVJwY1NpZyhzaWduYXR1cmUpO1xuICBjb25zdCBzZW5kZXJQdWJLZXkgPSBldGhVdGlsLmVjcmVjb3ZlcihCdWZmZXIuZnJvbShldGhVdGlsLnN0cmlwSGV4UHJlZml4KG9wZXJhdGlvbkhhc2gpLCAnaGV4JyksIHYsIHIsIHMpO1xuICBjb25zdCBzZW5kZXJBZGRyZXNzID0gZXRoVXRpbC5wdWJUb0FkZHJlc3Moc2VuZGVyUHViS2V5KTtcbiAgY29uc3Qgc2VuZGVyS2V5ID0gbmV3IEtleVBhaXIoeyBwcnY6IHRlc3REYXRhLlBSSVZBVEVfS0VZXzEgfSk7XG4gIGV0aFV0aWwuYnVmZmVyVG9IZXgoc2VuZGVyQWRkcmVzcykuc2hvdWxkLmVxdWFsKHNlbmRlcktleS5nZXRBZGRyZXNzKCkpO1xufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TransactionBuilder } from '../../../src';
|
|
2
|
+
export declare function testInitTransaction(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
3
|
+
export declare function testWalletInitTransaction(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
4
|
+
export declare function testSignedInitTransaction(newTxBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
5
|
+
export declare function testUnsignedInitTransaction(txBuilder: TransactionBuilder, newTxBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
6
|
+
export declare function testUnsignedInitTransactionFromSerialized(txBuilder: TransactionBuilder, newTxBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
7
|
+
export declare function testFinalVCheck(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
8
|
+
export declare function testRecoveryWalletDeployment(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
9
|
+
export declare function testRecoveryTransactionWithoutData(txBuilder: TransactionBuilder): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=walletInitialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletInitialization.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/walletInitialization.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAQlD,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAerF;AAED,wBAAsB,yBAAyB,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAc3F;AAED,wBAAsB,yBAAyB,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAY9F;AAED,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,kBAAkB,EAC7B,YAAY,EAAE,kBAAkB,EAChC,QAAQ,EAAE,GAAG,iBAUd;AAED,wBAAsB,yCAAyC,CAC7D,SAAS,EAAE,kBAAkB,EAC7B,YAAY,EAAE,kBAAkB,EAChC,QAAQ,EAAE,GAAG,iBAUd;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAMjF;AAED,wBAAsB,4BAA4B,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAmB9F;AAED,wBAAsB,kCAAkC,CAAC,SAAS,EAAE,kBAAkB,iBAcrF"}
|