@bitgo/sdk-coin-atom 1.1.0 → 1.2.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 +12 -0
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -2
- package/dist/src/lib/constants.d.ts +5 -0
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +8 -2
- package/dist/src/lib/iface.d.ts +31 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +3 -0
- package/dist/src/lib/index.d.ts +7 -1
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +25 -5
- package/dist/src/lib/transaction.d.ts +46 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +162 -0
- package/dist/src/lib/transactionBuilder.d.ts +76 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +212 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +29 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +59 -0
- package/dist/src/lib/transferBuilder.d.ts +8 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +15 -0
- package/dist/src/lib/utils.d.ts +86 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +197 -0
- package/package.json +13 -8
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [1.2.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-atom@1.1.0...@bitgo/sdk-coin-atom@1.2.0) (2023-02-08)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **sdk-coin-atom:** add Atom transaction builder skeleton ([94bf5c7](https://github.com/BitGo/BitGoJS/commit/94bf5c7bd1bbd10619fc99a21498746e04f2e5cd))
|
|
11
|
+
- **sdk-coin-atom:** implement basic util methods for atom ([ebd6a54](https://github.com/BitGo/BitGoJS/commit/ebd6a5400a976f6d2a0cd810c590147047be8680))
|
|
12
|
+
- **sdk-coin-atom:** skeleton for transaction class ATOM ([69f7c7e](https://github.com/BitGo/BitGoJS/commit/69f7c7e08e4f15fb16de545b1a816054fdaf8992))
|
|
13
|
+
|
|
14
|
+
## [1.1.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-atom@1.1.0...@bitgo/sdk-coin-atom@1.1.1) (2023-01-30)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @bitgo/sdk-coin-atom
|
|
17
|
+
|
|
6
18
|
# 1.1.0 (2023-01-25)
|
|
7
19
|
|
|
8
20
|
### Features
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -10,7 +10,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./lib"), exports);
|
|
14
13
|
__exportStar(require("./atom"), exports);
|
|
15
14
|
__exportStar(require("./tatom"), exports);
|
|
16
|
-
|
|
15
|
+
__exportStar(require("./lib"), exports);
|
|
16
|
+
__exportStar(require("./register"), exports);
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXVCO0FBQ3ZCLDBDQUF3QjtBQUN4Qix3Q0FBc0I7QUFDdEIsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdG9tJztcbmV4cG9ydCAqIGZyb20gJy4vdGF0b20nO1xuZXhwb3J0ICogZnJvbSAnLi9saWInO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlcic7XG4iXX0=
|
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
export declare const DEFAULT_SEED_SIZE_BYTES = 16;
|
|
2
|
+
export declare enum AtomTransactionType {
|
|
3
|
+
Pay = "Pay"
|
|
4
|
+
}
|
|
5
|
+
export declare const sendMsgType = "/cosmos.bank.v1beta1.MsgSend";
|
|
6
|
+
export declare const thetaTestnetChainId = "theta-testnet-001";
|
|
2
7
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,oBAAY,mBAAmB;IAC7B,GAAG,QAAQ;CACZ;AACD,eAAO,MAAM,WAAW,iCAAiC,CAAC;AAC1D,eAAO,MAAM,mBAAmB,sBAAsB,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_SEED_SIZE_BYTES = void 0;
|
|
3
|
+
exports.thetaTestnetChainId = exports.sendMsgType = exports.AtomTransactionType = exports.DEFAULT_SEED_SIZE_BYTES = void 0;
|
|
4
4
|
exports.DEFAULT_SEED_SIZE_BYTES = 16;
|
|
5
|
-
|
|
5
|
+
var AtomTransactionType;
|
|
6
|
+
(function (AtomTransactionType) {
|
|
7
|
+
AtomTransactionType["Pay"] = "Pay";
|
|
8
|
+
})(AtomTransactionType = exports.AtomTransactionType || (exports.AtomTransactionType = {}));
|
|
9
|
+
exports.sendMsgType = '/cosmos.bank.v1beta1.MsgSend';
|
|
10
|
+
exports.thetaTestnetChainId = 'theta-testnet-001';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFDMUMsSUFBWSxtQkFFWDtBQUZELFdBQVksbUJBQW1CO0lBQzdCLGtDQUFXLENBQUE7QUFDYixDQUFDLEVBRlcsbUJBQW1CLEdBQW5CLDJCQUFtQixLQUFuQiwyQkFBbUIsUUFFOUI7QUFDWSxRQUFBLFdBQVcsR0FBRyw4QkFBOEIsQ0FBQztBQUM3QyxRQUFBLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IERFRkFVTFRfU0VFRF9TSVpFX0JZVEVTID0gMTY7XG5leHBvcnQgZW51bSBBdG9tVHJhbnNhY3Rpb25UeXBlIHtcbiAgUGF5ID0gJ1BheScsXG59XG5leHBvcnQgY29uc3Qgc2VuZE1zZ1R5cGUgPSAnL2Nvc21vcy5iYW5rLnYxYmV0YTEuTXNnU2VuZCc7XG5leHBvcnQgY29uc3QgdGhldGFUZXN0bmV0Q2hhaW5JZCA9ICd0aGV0YS10ZXN0bmV0LTAwMSc7XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { TransactionExplanation as BaseTransactionExplanation, TransactionType } from '@bitgo/sdk-core';
|
|
2
|
+
import { Coin, SignerData } from '@cosmjs/stargate';
|
|
3
|
+
export interface TransactionExplanation extends BaseTransactionExplanation {
|
|
4
|
+
type: TransactionType;
|
|
5
|
+
}
|
|
6
|
+
export interface MessageData {
|
|
7
|
+
typeUrl: string;
|
|
8
|
+
value: {
|
|
9
|
+
fromAddress: string;
|
|
10
|
+
toAddress: string;
|
|
11
|
+
amount: Coin[];
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export interface GasFeeLimitData {
|
|
15
|
+
amount: Coin[];
|
|
16
|
+
gas: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The transaction data returned from the toJson() function of a transaction
|
|
20
|
+
*/
|
|
21
|
+
export interface TxData extends AtomTransaction {
|
|
22
|
+
id?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface AtomTransaction {
|
|
25
|
+
type: string;
|
|
26
|
+
signerAddress: string;
|
|
27
|
+
explicitSignerData: SignerData;
|
|
28
|
+
sendMessages: MessageData[];
|
|
29
|
+
gasBudget: GasFeeLimitData;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=iface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,IAAI,0BAA0B,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACxG,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,IAAI,EAAE,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,IAAI,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,MAAO,SAAQ,eAAe;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,UAAU,CAAC;IAC/B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,eAAe,CAAC;CAC5B"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQ29pbiwgU2lnbmVyRGF0YSB9IGZyb20gJ0Bjb3NtanMvc3RhcmdhdGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gIHR5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlRGF0YSB7XG4gIHR5cGVVcmw6IHN0cmluZztcbiAgdmFsdWU6IHtcbiAgICBmcm9tQWRkcmVzczogc3RyaW5nO1xuICAgIHRvQWRkcmVzczogc3RyaW5nO1xuICAgIGFtb3VudDogQ29pbltdO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdhc0ZlZUxpbWl0RGF0YSB7XG4gIGFtb3VudDogQ29pbltdO1xuICBnYXM6IG51bWJlcjsgLy8gZ2FzIGxpbWl0XG59XG5cbi8qKlxuICogVGhlIHRyYW5zYWN0aW9uIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgdG9Kc29uKCkgZnVuY3Rpb24gb2YgYSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSBleHRlbmRzIEF0b21UcmFuc2FjdGlvbiB7XG4gIGlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0b21UcmFuc2FjdGlvbiB7XG4gIHR5cGU6IHN0cmluZztcbiAgc2lnbmVyQWRkcmVzczogc3RyaW5nO1xuICBleHBsaWNpdFNpZ25lckRhdGE6IFNpZ25lckRhdGE7XG4gIHNlbmRNZXNzYWdlczogTWVzc2FnZURhdGFbXTtcbiAgZ2FzQnVkZ2V0OiBHYXNGZWVMaW1pdERhdGE7XG59XG4iXX0=
|
package/dist/src/lib/index.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import * as Utils from './utils';
|
|
2
|
+
import * as Interface from './iface';
|
|
2
3
|
export { KeyPair } from './keyPair';
|
|
4
|
+
export { Transaction } from './transaction';
|
|
5
|
+
export { TransactionBuilder } from './transactionBuilder';
|
|
6
|
+
export { TransferBuilder } from './transferBuilder';
|
|
7
|
+
export { TransactionBuilderFactory } from './transactionBuilderFactory';
|
|
8
|
+
export { Interface, Utils };
|
|
3
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC"}
|
package/dist/src/lib/index.js
CHANGED
|
@@ -6,12 +6,32 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
6
6
|
if (k2 === undefined) k2 = k;
|
|
7
7
|
o[k2] = m[k];
|
|
8
8
|
}));
|
|
9
|
-
var
|
|
10
|
-
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
11
20
|
};
|
|
12
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.KeyPair = void 0;
|
|
14
|
-
|
|
22
|
+
exports.Utils = exports.Interface = exports.TransactionBuilderFactory = exports.TransferBuilder = exports.TransactionBuilder = exports.Transaction = exports.KeyPair = void 0;
|
|
23
|
+
const Utils = __importStar(require("./utils"));
|
|
24
|
+
exports.Utils = Utils;
|
|
25
|
+
const Interface = __importStar(require("./iface"));
|
|
26
|
+
exports.Interface = Interface;
|
|
15
27
|
var keyPair_1 = require("./keyPair");
|
|
16
28
|
Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
|
|
17
|
-
|
|
29
|
+
var transaction_1 = require("./transaction");
|
|
30
|
+
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
|
|
31
|
+
var transactionBuilder_1 = require("./transactionBuilder");
|
|
32
|
+
Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
|
|
33
|
+
var transferBuilder_1 = require("./transferBuilder");
|
|
34
|
+
Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
|
|
35
|
+
var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
|
|
36
|
+
Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFRYixzQkFBSztBQVB6QixtREFBcUM7QUFPNUIsOEJBQVM7QUFMbEIscUNBQW9DO0FBQTNCLGtHQUFBLE9BQU8sT0FBQTtBQUNoQiw2Q0FBNEM7QUFBbkMsMEdBQUEsV0FBVyxPQUFBO0FBQ3BCLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQixxREFBb0Q7QUFBM0Msa0hBQUEsZUFBZSxPQUFBO0FBQ3hCLHlFQUF3RTtBQUEvRCxzSUFBQSx5QkFBeUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICogYXMgSW50ZXJmYWNlIGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5JztcbmV4cG9ydCB7IEludGVyZmFjZSwgVXRpbHMgfTtcbiJdfQ==
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { BaseKey, BaseTransaction, PublicKey as BasePublicKey, Signature, TransactionType } from '@bitgo/sdk-core';
|
|
3
|
+
import { AtomTransaction, TransactionExplanation, TxData } from './iface';
|
|
4
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
5
|
+
export declare class Transaction extends BaseTransaction {
|
|
6
|
+
private _atomTransaction;
|
|
7
|
+
private _signature;
|
|
8
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
9
|
+
get atomTransaction(): AtomTransaction;
|
|
10
|
+
setAtomTransaction(tx: AtomTransaction): void;
|
|
11
|
+
/** @inheritDoc **/
|
|
12
|
+
get id(): string;
|
|
13
|
+
addSignature(publicKey: BasePublicKey, signature: Buffer): void;
|
|
14
|
+
get atomSignature(): Signature;
|
|
15
|
+
/** @inheritdoc */
|
|
16
|
+
canSign(key: BaseKey): boolean;
|
|
17
|
+
/** @inheritdoc */
|
|
18
|
+
toBroadcastFormat(): string;
|
|
19
|
+
/** @inheritdoc */
|
|
20
|
+
toJson(): TxData;
|
|
21
|
+
/** @inheritDoc */
|
|
22
|
+
explainTransaction(): TransactionExplanation;
|
|
23
|
+
/**
|
|
24
|
+
* Set the transaction type.
|
|
25
|
+
*
|
|
26
|
+
* @param {TransactionType} transactionType The transaction type to be set.
|
|
27
|
+
*/
|
|
28
|
+
transactionType(transactionType: TransactionType): void;
|
|
29
|
+
/**
|
|
30
|
+
* Sets this transaction payload
|
|
31
|
+
*
|
|
32
|
+
* @param rawTransaction
|
|
33
|
+
*/
|
|
34
|
+
fromRawTransaction(rawTransaction: string): void;
|
|
35
|
+
serialize(): string;
|
|
36
|
+
static deserializeAtomTransaction(rawTx: string): AtomTransaction;
|
|
37
|
+
/**
|
|
38
|
+
* Returns a complete explanation for a transfer transaction
|
|
39
|
+
* Currently only supports one message per transfer.
|
|
40
|
+
* @param {TxData} json The transaction data in json format
|
|
41
|
+
* @param {TransactionExplanation} explanationResult The transaction explanation to be completed
|
|
42
|
+
* @returns {TransactionExplanation}
|
|
43
|
+
*/
|
|
44
|
+
explainTransferTransaction(json: TxData, explanationResult: TransactionExplanation): TransactionExplanation;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EACP,eAAe,EAGf,SAAS,IAAI,aAAa,EAC1B,SAAS,EAET,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAOxD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,UAAU,CAAY;gBAElB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,kBAAkB,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI;IAI7C,mBAAmB;IACnB,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D,IAAI,aAAa,IAAI,SAAS,CAE7B;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAehB,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;IAwB5C;;;;OAIG;IACH,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAIvD;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAShD,SAAS,IAAI,MAAM;IAgBnB,MAAM,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;IAqBjE;;;;;;OAMG;IACH,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,GAAG,sBAAsB;CAc5G"}
|
|
@@ -0,0 +1,162 @@
|
|
|
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.Transaction = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
8
|
+
const buffer_1 = require("buffer");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
11
|
+
const proto_signing_1 = require("@cosmjs/proto-signing");
|
|
12
|
+
const amino_1 = require("@cosmjs/amino");
|
|
13
|
+
class Transaction extends sdk_core_1.BaseTransaction {
|
|
14
|
+
constructor(_coinConfig) {
|
|
15
|
+
super(_coinConfig);
|
|
16
|
+
}
|
|
17
|
+
get atomTransaction() {
|
|
18
|
+
return this._atomTransaction;
|
|
19
|
+
}
|
|
20
|
+
setAtomTransaction(tx) {
|
|
21
|
+
this._atomTransaction = tx;
|
|
22
|
+
}
|
|
23
|
+
/** @inheritDoc **/
|
|
24
|
+
get id() {
|
|
25
|
+
return this._id || 'UNAVAILABLE_TEXT';
|
|
26
|
+
}
|
|
27
|
+
addSignature(publicKey, signature) {
|
|
28
|
+
this._signatures.push(signature.toString('hex'));
|
|
29
|
+
this._signature = { publicKey, signature };
|
|
30
|
+
this.serialize();
|
|
31
|
+
}
|
|
32
|
+
get atomSignature() {
|
|
33
|
+
return this._signature;
|
|
34
|
+
}
|
|
35
|
+
/** @inheritdoc */
|
|
36
|
+
canSign(key) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
/** @inheritdoc */
|
|
40
|
+
toBroadcastFormat() {
|
|
41
|
+
if (!this._atomTransaction) {
|
|
42
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction');
|
|
43
|
+
}
|
|
44
|
+
return this.serialize();
|
|
45
|
+
}
|
|
46
|
+
/** @inheritdoc */
|
|
47
|
+
toJson() {
|
|
48
|
+
if (!this._atomTransaction) {
|
|
49
|
+
throw new sdk_core_1.ParseTransactionError('Empty transaction');
|
|
50
|
+
}
|
|
51
|
+
const tx = this._atomTransaction;
|
|
52
|
+
return {
|
|
53
|
+
id: this._id,
|
|
54
|
+
type: tx.type,
|
|
55
|
+
signerAddress: tx.signerAddress,
|
|
56
|
+
explicitSignerData: tx.explicitSignerData,
|
|
57
|
+
sendMessages: tx.sendMessages,
|
|
58
|
+
gasBudget: tx.gasBudget,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/** @inheritDoc */
|
|
62
|
+
explainTransaction() {
|
|
63
|
+
const result = this.toJson();
|
|
64
|
+
const displayOrder = ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'type'];
|
|
65
|
+
const outputs = [];
|
|
66
|
+
const explanationResult = {
|
|
67
|
+
displayOrder,
|
|
68
|
+
id: this.id,
|
|
69
|
+
outputs,
|
|
70
|
+
outputAmount: '0',
|
|
71
|
+
changeOutputs: [],
|
|
72
|
+
changeAmount: '0',
|
|
73
|
+
fee: { fee: this.atomTransaction.gasBudget.gas.toString() },
|
|
74
|
+
type: this.type,
|
|
75
|
+
};
|
|
76
|
+
switch (this.type) {
|
|
77
|
+
case sdk_core_1.TransactionType.Send:
|
|
78
|
+
return this.explainTransferTransaction(result, explanationResult);
|
|
79
|
+
default:
|
|
80
|
+
throw new sdk_core_1.InvalidTransactionError('Transaction type not supported');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Set the transaction type.
|
|
85
|
+
*
|
|
86
|
+
* @param {TransactionType} transactionType The transaction type to be set.
|
|
87
|
+
*/
|
|
88
|
+
transactionType(transactionType) {
|
|
89
|
+
this._type = transactionType;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Sets this transaction payload
|
|
93
|
+
*
|
|
94
|
+
* @param rawTransaction
|
|
95
|
+
*/
|
|
96
|
+
fromRawTransaction(rawTransaction) {
|
|
97
|
+
try {
|
|
98
|
+
this._atomTransaction = Transaction.deserializeAtomTransaction(rawTransaction);
|
|
99
|
+
this._type = sdk_core_1.TransactionType.Send;
|
|
100
|
+
}
|
|
101
|
+
catch (e) {
|
|
102
|
+
throw e;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
serialize() {
|
|
106
|
+
const pubkey = proto_signing_1.encodePubkey(amino_1.encodeSecp256k1Pubkey(buffer_1.Buffer.from(this._atomTransaction.sendMessages[0].value.fromAddress, 'hex')));
|
|
107
|
+
const signDoc = utils_1.default.createSignDocFromAtomTransaction(pubkey, this.atomTransaction);
|
|
108
|
+
if (!this._signature) {
|
|
109
|
+
// no signature yet, get the signable bytes
|
|
110
|
+
const signableBytes = proto_signing_1.makeSignBytes(signDoc);
|
|
111
|
+
const signableBytesBuffer = buffer_1.Buffer.from(signableBytes);
|
|
112
|
+
return signableBytesBuffer.toString('base64');
|
|
113
|
+
}
|
|
114
|
+
// If we do have signatures, add them and return the base64 serialized signed tx data
|
|
115
|
+
const signedRawTx = utils_1.default.createSignedTxRaw(pubkey, signDoc, this.signature[0]);
|
|
116
|
+
return utils_1.default.createBase64SignedTxBytesFromSignedTxRaw(signedRawTx);
|
|
117
|
+
}
|
|
118
|
+
static deserializeAtomTransaction(rawTx) {
|
|
119
|
+
const decodedTx = utils_1.default.getDecodedTxFromRawBase64(rawTx);
|
|
120
|
+
let type;
|
|
121
|
+
const typeUrl = utils_1.default.getTypeUrlFromDecodedTx(decodedTx);
|
|
122
|
+
if (typeUrl === constants_1.sendMsgType) {
|
|
123
|
+
type = constants_1.AtomTransactionType.Pay;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
throw new Error('Transaction type not supported: ' + typeUrl);
|
|
127
|
+
}
|
|
128
|
+
const sendMessageData = utils_1.default.getMessageDataFromDecodedTx(decodedTx);
|
|
129
|
+
const explicitSignerData = utils_1.default.getExplicitSignerDataFromDecodedTx(decodedTx);
|
|
130
|
+
const gasBudget = utils_1.default.getGasBudgetFromDecodedTx(decodedTx);
|
|
131
|
+
return {
|
|
132
|
+
type,
|
|
133
|
+
sendMessages: sendMessageData,
|
|
134
|
+
signerAddress: sendMessageData[0].value.fromAddress,
|
|
135
|
+
gasBudget,
|
|
136
|
+
explicitSignerData,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Returns a complete explanation for a transfer transaction
|
|
141
|
+
* Currently only supports one message per transfer.
|
|
142
|
+
* @param {TxData} json The transaction data in json format
|
|
143
|
+
* @param {TransactionExplanation} explanationResult The transaction explanation to be completed
|
|
144
|
+
* @returns {TransactionExplanation}
|
|
145
|
+
*/
|
|
146
|
+
explainTransferTransaction(json, explanationResult) {
|
|
147
|
+
const outputAmount = this._atomTransaction.sendMessages[0].value.amount[0].amount;
|
|
148
|
+
const outputs = [
|
|
149
|
+
{
|
|
150
|
+
address: this._atomTransaction.sendMessages[0].value.toAddress,
|
|
151
|
+
amount: outputAmount,
|
|
152
|
+
},
|
|
153
|
+
];
|
|
154
|
+
return {
|
|
155
|
+
...explanationResult,
|
|
156
|
+
outputAmount,
|
|
157
|
+
outputs,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
exports.Transaction = Transaction;
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhDQVN5QjtBQUd6QixtQ0FBZ0M7QUFDaEMsMkNBQStEO0FBQy9ELG9EQUE0QjtBQUM1Qix5REFBb0U7QUFDcEUseUNBQXNEO0FBRXRELE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBSTlDLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQW1CO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixJQUFJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLElBQUksa0JBQWtCLENBQUM7SUFDeEMsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUF3QixFQUFFLFNBQWlCO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsTUFB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QVksRUFBRSxpQkFBeUM7UUFDaEYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNsRixNQUFNLE9BQU8sR0FBMkI7WUFDdEM7Z0JBQ0UsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVM7Z0JBQzlELE1BQU0sRUFBRSxZQUFZO2FBQ3JCO1NBQ0YsQ0FBQztRQUNGLE9BQU87WUFDTCxHQUFHLGlCQUFpQjtZQUNwQixZQUFZO1lBQ1osT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF0S0Qsa0NBc0tDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgU2lnbmF0dXJlLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQXRvbVRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUeERhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHsgQXRvbVRyYW5zYWN0aW9uVHlwZSwgc2VuZE1zZ1R5cGUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBlbmNvZGVQdWJrZXksIG1ha2VTaWduQnl0ZXMgfSBmcm9tICdAY29zbWpzL3Byb3RvLXNpZ25pbmcnO1xuaW1wb3J0IHsgZW5jb2RlU2VjcDI1NmsxUHVia2V5IH0gZnJvbSAnQGNvc21qcy9hbWlubyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX2F0b21UcmFuc2FjdGlvbjogQXRvbVRyYW5zYWN0aW9uO1xuICBwcml2YXRlIF9zaWduYXR1cmU6IFNpZ25hdHVyZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXQgYXRvbVRyYW5zYWN0aW9uKCk6IEF0b21UcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX2F0b21UcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldEF0b21UcmFuc2FjdGlvbih0eDogQXRvbVRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fYXRvbVRyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZCB8fCAnVU5BVkFJTEFCTEVfVEVYVCc7XG4gIH1cblxuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBCYXNlUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB0aGlzLl9zaWduYXR1cmUgPSB7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH07XG4gICAgdGhpcy5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBhdG9tU2lnbmF0dXJlKCk6IFNpZ25hdHVyZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9hdG9tVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9hdG9tVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHR4ID0gdGhpcy5fYXRvbVRyYW5zYWN0aW9uO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5faWQsXG4gICAgICB0eXBlOiB0eC50eXBlLFxuICAgICAgc2lnbmVyQWRkcmVzczogdHguc2lnbmVyQWRkcmVzcyxcbiAgICAgIGV4cGxpY2l0U2lnbmVyRGF0YTogdHguZXhwbGljaXRTaWduZXJEYXRhLFxuICAgICAgc2VuZE1lc3NhZ2VzOiB0eC5zZW5kTWVzc2FnZXMsXG4gICAgICBnYXNCdWRnZXQ6IHR4Lmdhc0J1ZGdldCxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGV4cGxhaW5UcmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3R5cGUnXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG5cbiAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6IHRoaXMuYXRvbVRyYW5zYWN0aW9uLmdhc0J1ZGdldC5nYXMudG9TdHJpbmcoKSB9LCAvLyBUT0RPIC0gZXhwbG9yZSB0aGUgZmVlIGV4cGxhbmF0aW9uIG1vcmUsIGRvIHdlIG5lZWQgdG8gc2hvdyBsaW1pdCBvciBiYXNlIGFtb3VudFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG5cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwbGFpblRyYW5zZmVyVHJhbnNhY3Rpb24ocmVzdWx0LCBleHBsYW5hdGlvblJlc3VsdCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0LlxuICAgKi9cbiAgdHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gcGF5bG9hZFxuICAgKlxuICAgKiBAcGFyYW0gcmF3VHJhbnNhY3Rpb25cbiAgICovXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX2F0b21UcmFuc2FjdGlvbiA9IFRyYW5zYWN0aW9uLmRlc2VyaWFsaXplQXRvbVRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHB1YmtleSA9IGVuY29kZVB1YmtleShcbiAgICAgIGVuY29kZVNlY3AyNTZrMVB1YmtleShCdWZmZXIuZnJvbSh0aGlzLl9hdG9tVHJhbnNhY3Rpb24uc2VuZE1lc3NhZ2VzWzBdLnZhbHVlLmZyb21BZGRyZXNzLCAnaGV4JykpXG4gICAgKSBhcyB1bmtub3duIGFzIHN0cmluZztcbiAgICBjb25zdCBzaWduRG9jID0gdXRpbHMuY3JlYXRlU2lnbkRvY0Zyb21BdG9tVHJhbnNhY3Rpb24ocHVia2V5LCB0aGlzLmF0b21UcmFuc2FjdGlvbik7XG4gICAgaWYgKCF0aGlzLl9zaWduYXR1cmUpIHtcbiAgICAgIC8vIG5vIHNpZ25hdHVyZSB5ZXQsIGdldCB0aGUgc2lnbmFibGUgYnl0ZXNcbiAgICAgIGNvbnN0IHNpZ25hYmxlQnl0ZXMgPSBtYWtlU2lnbkJ5dGVzKHNpZ25Eb2MpO1xuICAgICAgY29uc3Qgc2lnbmFibGVCeXRlc0J1ZmZlciA9IEJ1ZmZlci5mcm9tKHNpZ25hYmxlQnl0ZXMpO1xuICAgICAgcmV0dXJuIHNpZ25hYmxlQnl0ZXNCdWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIH1cbiAgICAvLyBJZiB3ZSBkbyBoYXZlIHNpZ25hdHVyZXMsIGFkZCB0aGVtIGFuZCByZXR1cm4gdGhlIGJhc2U2NCBzZXJpYWxpemVkIHNpZ25lZCB0eCBkYXRhXG4gICAgY29uc3Qgc2lnbmVkUmF3VHggPSB1dGlscy5jcmVhdGVTaWduZWRUeFJhdyhwdWJrZXksIHNpZ25Eb2MsIHRoaXMuc2lnbmF0dXJlWzBdKTtcbiAgICByZXR1cm4gdXRpbHMuY3JlYXRlQmFzZTY0U2lnbmVkVHhCeXRlc0Zyb21TaWduZWRUeFJhdyhzaWduZWRSYXdUeCk7XG4gIH1cblxuICBzdGF0aWMgZGVzZXJpYWxpemVBdG9tVHJhbnNhY3Rpb24ocmF3VHg6IHN0cmluZyk6IEF0b21UcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgZGVjb2RlZFR4ID0gdXRpbHMuZ2V0RGVjb2RlZFR4RnJvbVJhd0Jhc2U2NChyYXdUeCk7XG4gICAgbGV0IHR5cGU6IEF0b21UcmFuc2FjdGlvblR5cGU7XG4gICAgY29uc3QgdHlwZVVybCA9IHV0aWxzLmdldFR5cGVVcmxGcm9tRGVjb2RlZFR4KGRlY29kZWRUeCk7XG4gICAgaWYgKHR5cGVVcmwgPT09IHNlbmRNc2dUeXBlKSB7XG4gICAgICB0eXBlID0gQXRvbVRyYW5zYWN0aW9uVHlwZS5QYXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkOiAnICsgdHlwZVVybCk7XG4gICAgfVxuICAgIGNvbnN0IHNlbmRNZXNzYWdlRGF0YSA9IHV0aWxzLmdldE1lc3NhZ2VEYXRhRnJvbURlY29kZWRUeChkZWNvZGVkVHgpO1xuICAgIGNvbnN0IGV4cGxpY2l0U2lnbmVyRGF0YSA9IHV0aWxzLmdldEV4cGxpY2l0U2lnbmVyRGF0YUZyb21EZWNvZGVkVHgoZGVjb2RlZFR4KTtcbiAgICBjb25zdCBnYXNCdWRnZXQgPSB1dGlscy5nZXRHYXNCdWRnZXRGcm9tRGVjb2RlZFR4KGRlY29kZWRUeCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGUsXG4gICAgICBzZW5kTWVzc2FnZXM6IHNlbmRNZXNzYWdlRGF0YSxcbiAgICAgIHNpZ25lckFkZHJlc3M6IHNlbmRNZXNzYWdlRGF0YVswXS52YWx1ZS5mcm9tQWRkcmVzcyxcbiAgICAgIGdhc0J1ZGdldCxcbiAgICAgIGV4cGxpY2l0U2lnbmVyRGF0YSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjb21wbGV0ZSBleHBsYW5hdGlvbiBmb3IgYSB0cmFuc2ZlciB0cmFuc2FjdGlvblxuICAgKiBDdXJyZW50bHkgb25seSBzdXBwb3J0cyBvbmUgbWVzc2FnZSBwZXIgdHJhbnNmZXIuXG4gICAqIEBwYXJhbSB7VHhEYXRhfSBqc29uIFRoZSB0cmFuc2FjdGlvbiBkYXRhIGluIGpzb24gZm9ybWF0XG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn0gZXhwbGFuYXRpb25SZXN1bHQgVGhlIHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uIHRvIGJlIGNvbXBsZXRlZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn1cbiAgICovXG4gIGV4cGxhaW5UcmFuc2ZlclRyYW5zYWN0aW9uKGpzb246IFR4RGF0YSwgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSB0aGlzLl9hdG9tVHJhbnNhY3Rpb24uc2VuZE1lc3NhZ2VzWzBdLnZhbHVlLmFtb3VudFswXS5hbW91bnQ7XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogdGhpcy5fYXRvbVRyYW5zYWN0aW9uLnNlbmRNZXNzYWdlc1swXS52YWx1ZS50b0FkZHJlc3MsXG4gICAgICAgIGFtb3VudDogb3V0cHV0QW1vdW50LFxuICAgICAgfSxcbiAgICBdO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dEFtb3VudCxcbiAgICAgIG91dHB1dHMsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { BaseAddress, BaseKey, BaseTransactionBuilder, PublicKey as BasePublicKey, TransactionType } from '@bitgo/sdk-core';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
import BigNumber from 'bignumber.js';
|
|
5
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
6
|
+
import { AtomTransaction, GasFeeLimitData, MessageData } from './iface';
|
|
7
|
+
import { SignerData } from '@cosmjs/stargate';
|
|
8
|
+
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
9
|
+
protected _transaction: Transaction;
|
|
10
|
+
private _signatures;
|
|
11
|
+
protected _type: string;
|
|
12
|
+
protected _signerAddress: string;
|
|
13
|
+
protected _explicitSignerData: SignerData;
|
|
14
|
+
protected _sendMessages: MessageData[];
|
|
15
|
+
protected _gasBudget: GasFeeLimitData;
|
|
16
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
17
|
+
/**
|
|
18
|
+
* The transaction type.
|
|
19
|
+
*/
|
|
20
|
+
protected abstract get transactionType(): TransactionType;
|
|
21
|
+
/** @inheritdoc */
|
|
22
|
+
protected get transaction(): Transaction;
|
|
23
|
+
/** @inheritdoc */
|
|
24
|
+
protected set transaction(transaction: Transaction);
|
|
25
|
+
/** @inheritdoc */
|
|
26
|
+
protected signImplementation(key: BaseKey): Transaction;
|
|
27
|
+
/** @inheritDoc */
|
|
28
|
+
addSignature(publicKey: BasePublicKey, signature: Buffer): void;
|
|
29
|
+
type(type: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* Sets the signerAddress of this transaction.
|
|
32
|
+
* This account will be responsible for paying transaction fees.
|
|
33
|
+
*
|
|
34
|
+
* @param {string} signerAddress the account that is sending this transaction
|
|
35
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
36
|
+
*/
|
|
37
|
+
signerAddress(signerAddress: string): this;
|
|
38
|
+
gasBudget(gasBudget: GasFeeLimitData): this;
|
|
39
|
+
/**
|
|
40
|
+
*
|
|
41
|
+
* @param {SignerData} expliticSignerData signer data: {accountNumber, sequence, chainId}
|
|
42
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
43
|
+
*/
|
|
44
|
+
expliticSignerData(explicitSignerData: SignerData): this;
|
|
45
|
+
sendMessages(sendMessages: MessageData[]): this;
|
|
46
|
+
/**
|
|
47
|
+
* Initialize the transaction builder fields using the decoded transaction data
|
|
48
|
+
*
|
|
49
|
+
* @param {Transaction} tx the transaction data
|
|
50
|
+
*/
|
|
51
|
+
initBuilder(tx: Transaction): void;
|
|
52
|
+
/** @inheritdoc */
|
|
53
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
54
|
+
/** @inheritdoc */
|
|
55
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
56
|
+
protected buildAtomTransaction(): AtomTransaction;
|
|
57
|
+
validateAddress(address: BaseAddress, addressFormat?: string): void;
|
|
58
|
+
private validateAmountData;
|
|
59
|
+
validateGasBudget(gasBudget: GasFeeLimitData): void;
|
|
60
|
+
private validateMessageDataArray;
|
|
61
|
+
validateMessageData(messageData: MessageData): void;
|
|
62
|
+
/** @inheritdoc */
|
|
63
|
+
validateKey(key: BaseKey): void;
|
|
64
|
+
/** @inheritdoc */
|
|
65
|
+
validateRawTransaction(rawTransaction: string): void;
|
|
66
|
+
/** @inheritdoc */
|
|
67
|
+
validateTransaction(transaction: Transaction): void;
|
|
68
|
+
/**
|
|
69
|
+
* Validates all fields are defined
|
|
70
|
+
*/
|
|
71
|
+
private validateTransactionFields;
|
|
72
|
+
/** @inheritdoc */
|
|
73
|
+
validateValue(value: BigNumber): void;
|
|
74
|
+
private validateSignerData;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAGtB,SAAS,IAAI,aAAa,EAE1B,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAQ,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEpD,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,OAAO,CAAC,WAAW,CAAmB;IAEtC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,mBAAmB,EAAE,UAAU,CAAC;IAC1C,SAAS,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;IACvC,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC;gBAE1B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C;;OAEG;IACH,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,eAAe,CAAC;IAE1D,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;IAED,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAIvD,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAI/D,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB;;;;;;OAMG;IACH,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAQ1C,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAM3C;;;;OAIG;IACH,kBAAkB,CAAC,kBAAkB,EAAE,UAAU,GAAG,IAAI;IAMxD,YAAY,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI;IAM/C;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAUlC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAQjE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAM3D,SAAS,CAAC,oBAAoB,IAAI,eAAe;IAgBjD,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAInE,OAAO,CAAC,kBAAkB;IAa1B,iBAAiB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAOnD,OAAO,CAAC,wBAAwB;IAMhC,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAgBnD,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAI/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASpD,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAOnD;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAkBjC,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMrC,OAAO,CAAC,kBAAkB;CAW3B"}
|
|
@@ -0,0 +1,212 @@
|
|
|
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.TransactionBuilder = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
8
|
+
const transaction_1 = require("./transaction");
|
|
9
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
10
|
+
const assert_1 = __importDefault(require("assert"));
|
|
11
|
+
class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
12
|
+
constructor(_coinConfig) {
|
|
13
|
+
super(_coinConfig);
|
|
14
|
+
this._signatures = [];
|
|
15
|
+
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
16
|
+
}
|
|
17
|
+
/** @inheritdoc */
|
|
18
|
+
get transaction() {
|
|
19
|
+
return this._transaction;
|
|
20
|
+
}
|
|
21
|
+
/** @inheritdoc */
|
|
22
|
+
set transaction(transaction) {
|
|
23
|
+
this._transaction = transaction;
|
|
24
|
+
}
|
|
25
|
+
/** @inheritdoc */
|
|
26
|
+
signImplementation(key) {
|
|
27
|
+
throw new Error('Method not implemented.');
|
|
28
|
+
}
|
|
29
|
+
/** @inheritDoc */
|
|
30
|
+
addSignature(publicKey, signature) {
|
|
31
|
+
this._signatures.push({ publicKey, signature });
|
|
32
|
+
}
|
|
33
|
+
type(type) {
|
|
34
|
+
this._type = type;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Sets the signerAddress of this transaction.
|
|
38
|
+
* This account will be responsible for paying transaction fees.
|
|
39
|
+
*
|
|
40
|
+
* @param {string} signerAddress the account that is sending this transaction
|
|
41
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
42
|
+
*/
|
|
43
|
+
signerAddress(signerAddress) {
|
|
44
|
+
if (!utils_1.default.isValidAddress(signerAddress)) {
|
|
45
|
+
throw new Error('transactionBuilder: sender isValidAddress check failed');
|
|
46
|
+
}
|
|
47
|
+
this._signerAddress = signerAddress;
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
gasBudget(gasBudget) {
|
|
51
|
+
this.validateGasBudget(gasBudget);
|
|
52
|
+
this._gasBudget = gasBudget;
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
*
|
|
57
|
+
* @param {SignerData} expliticSignerData signer data: {accountNumber, sequence, chainId}
|
|
58
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
59
|
+
*/
|
|
60
|
+
expliticSignerData(explicitSignerData) {
|
|
61
|
+
this.validateSignerData(explicitSignerData);
|
|
62
|
+
this._explicitSignerData = explicitSignerData;
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
sendMessages(sendMessages) {
|
|
66
|
+
this.validateMessageDataArray(sendMessages);
|
|
67
|
+
this._sendMessages = sendMessages;
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Initialize the transaction builder fields using the decoded transaction data
|
|
72
|
+
*
|
|
73
|
+
* @param {Transaction} tx the transaction data
|
|
74
|
+
*/
|
|
75
|
+
initBuilder(tx) {
|
|
76
|
+
this._transaction = tx;
|
|
77
|
+
const txData = tx.toJson();
|
|
78
|
+
this.type(txData.type);
|
|
79
|
+
this.gasBudget(txData.gasBudget);
|
|
80
|
+
this.signerAddress(txData.signerAddress);
|
|
81
|
+
this.sendMessages(txData.sendMessages);
|
|
82
|
+
this.gasBudget(txData.gasBudget);
|
|
83
|
+
}
|
|
84
|
+
/** @inheritdoc */
|
|
85
|
+
fromImplementation(rawTransaction) {
|
|
86
|
+
const tx = new transaction_1.Transaction(this._coinConfig);
|
|
87
|
+
this.validateRawTransaction(rawTransaction);
|
|
88
|
+
tx.fromRawTransaction(rawTransaction);
|
|
89
|
+
this.initBuilder(tx);
|
|
90
|
+
return this.transaction;
|
|
91
|
+
}
|
|
92
|
+
/** @inheritdoc */
|
|
93
|
+
async buildImplementation() {
|
|
94
|
+
this.transaction.setAtomTransaction(this.buildAtomTransaction());
|
|
95
|
+
this.transaction.transactionType(this.transactionType);
|
|
96
|
+
return this.transaction;
|
|
97
|
+
}
|
|
98
|
+
buildAtomTransaction() {
|
|
99
|
+
assert_1.default(this._type, new sdk_core_1.BuildTransactionError('type is required before building'));
|
|
100
|
+
assert_1.default(this._signerAddress, new sdk_core_1.BuildTransactionError('signerAddress is required before building'));
|
|
101
|
+
assert_1.default(this._explicitSignerData, new sdk_core_1.BuildTransactionError('explicitSignerData is required before building'));
|
|
102
|
+
assert_1.default(this._sendMessages, new sdk_core_1.BuildTransactionError('sendMessages are required before building'));
|
|
103
|
+
assert_1.default(this._gasBudget, new sdk_core_1.BuildTransactionError('gasPrice is required before building'));
|
|
104
|
+
return {
|
|
105
|
+
type: this._type,
|
|
106
|
+
signerAddress: this._signerAddress,
|
|
107
|
+
explicitSignerData: this._explicitSignerData,
|
|
108
|
+
sendMessages: this._sendMessages,
|
|
109
|
+
gasBudget: this._gasBudget,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
validateAddress(address, addressFormat) {
|
|
113
|
+
throw new sdk_core_1.BuildTransactionError('validateAddress method not yet implemented');
|
|
114
|
+
}
|
|
115
|
+
validateAmountData(amountArray) {
|
|
116
|
+
// TODO - make the error messages more descriptive of which amount data is failing
|
|
117
|
+
// Do amount checking by casting to numbers/bignumber and comparing as well
|
|
118
|
+
for (const amount of amountArray) {
|
|
119
|
+
if (!amount.amount) {
|
|
120
|
+
throw new sdk_core_1.BuildTransactionError('Invalid amount: undefined');
|
|
121
|
+
}
|
|
122
|
+
if (!amount.denom) {
|
|
123
|
+
throw new sdk_core_1.BuildTransactionError('Invalid denom: undefined');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
validateGasBudget(gasBudget) {
|
|
128
|
+
if (gasBudget.gas <= 0) {
|
|
129
|
+
throw new sdk_core_1.BuildTransactionError('Invalid gas limit ' + gasBudget.gas);
|
|
130
|
+
}
|
|
131
|
+
this.validateAmountData(gasBudget.amount);
|
|
132
|
+
}
|
|
133
|
+
validateMessageDataArray(sendMessages) {
|
|
134
|
+
for (const msg of sendMessages) {
|
|
135
|
+
this.validateMessageData(msg);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
validateMessageData(messageData) {
|
|
139
|
+
if (!messageData) {
|
|
140
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid MessageData: undefined`);
|
|
141
|
+
}
|
|
142
|
+
if (!messageData.typeUrl) {
|
|
143
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid MessageData typeurl: ` + messageData.typeUrl);
|
|
144
|
+
}
|
|
145
|
+
if (!messageData.value.toAddress) {
|
|
146
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid MessageData value.toAddress: ` + messageData.value.toAddress);
|
|
147
|
+
}
|
|
148
|
+
if (!messageData.value.fromAddress) {
|
|
149
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid MessageData value.fromAddress: ` + messageData.value.fromAddress);
|
|
150
|
+
}
|
|
151
|
+
this.validateAmountData(messageData.value.amount);
|
|
152
|
+
}
|
|
153
|
+
/** @inheritdoc */
|
|
154
|
+
validateKey(key) {
|
|
155
|
+
throw new Error('Method not implemented.');
|
|
156
|
+
}
|
|
157
|
+
/** @inheritdoc */
|
|
158
|
+
validateRawTransaction(rawTransaction) {
|
|
159
|
+
if (!rawTransaction) {
|
|
160
|
+
throw new sdk_core_1.ParseTransactionError('Invalid raw transaction: Undefined');
|
|
161
|
+
}
|
|
162
|
+
if (!utils_1.default.isValidRawTransaction(rawTransaction)) {
|
|
163
|
+
throw new sdk_core_1.ParseTransactionError('Invalid raw transaction');
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/** @inheritdoc */
|
|
167
|
+
validateTransaction(transaction) {
|
|
168
|
+
if (!transaction.atomTransaction) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
this.validateTransactionFields();
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Validates all fields are defined
|
|
175
|
+
*/
|
|
176
|
+
validateTransactionFields() {
|
|
177
|
+
if (this._type === undefined) {
|
|
178
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing type');
|
|
179
|
+
}
|
|
180
|
+
if (this._signerAddress === undefined) {
|
|
181
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing signerAddress');
|
|
182
|
+
}
|
|
183
|
+
if (this._explicitSignerData === undefined) {
|
|
184
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing explicitSignerData');
|
|
185
|
+
}
|
|
186
|
+
if (this._sendMessages === undefined) {
|
|
187
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing sendMessages');
|
|
188
|
+
}
|
|
189
|
+
if (this._gasBudget === undefined) {
|
|
190
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing gas budget data');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/** @inheritdoc */
|
|
194
|
+
validateValue(value) {
|
|
195
|
+
if (value.isLessThan(0)) {
|
|
196
|
+
throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
validateSignerData(explicitSignerData) {
|
|
200
|
+
if (!explicitSignerData.chainId) {
|
|
201
|
+
throw new sdk_core_1.BuildTransactionError('Invalid explicitSignerData: missing chainId');
|
|
202
|
+
}
|
|
203
|
+
if (!explicitSignerData.accountNumber) {
|
|
204
|
+
throw new sdk_core_1.BuildTransactionError('Invalid explicitSignerData: missing accountNumber');
|
|
205
|
+
}
|
|
206
|
+
if (!explicitSignerData.sequence) {
|
|
207
|
+
throw new sdk_core_1.BuildTransactionError('Invalid explicitSignerData: missing sequence');
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
exports.TransactionBuilder = TransactionBuilder;
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBU3lCO0FBQ3pCLCtDQUE0QztBQUM1QyxvREFBNEI7QUFHNUIsb0RBQTRCO0FBSTVCLE1BQXNCLGtCQUFtQixTQUFRLGlDQUFzQjtJQVVyRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQVRiLGdCQUFXLEdBQWdCLEVBQUUsQ0FBQztRQVVwQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBUUQsa0JBQWtCO0lBQ2xCLElBQWMsV0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFjLFdBQVcsQ0FBQyxXQUF3QjtRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsR0FBWTtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZLENBQUMsU0FBd0IsRUFBRSxTQUFpQjtRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLENBQUMsSUFBWTtRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxhQUFhLENBQUMsYUFBcUI7UUFDakMsSUFBSSxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDeEMsTUFB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Q0FBcUIsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1NBQ2pGO0lBQ0gsQ0FBQztDQUNGO0FBOU9ELGdEQThPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VBZGRyZXNzLFxuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgUHVibGljS2V5IGFzIEJhc2VQdWJsaWNLZXksXG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBBdG9tVHJhbnNhY3Rpb24sIEdhc0ZlZUxpbWl0RGF0YSwgTWVzc2FnZURhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IENvaW4sIFNpZ25lckRhdGEgfSBmcm9tICdAY29zbWpzL3N0YXJnYXRlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgcHJpdmF0ZSBfc2lnbmF0dXJlczogU2lnbmF0dXJlW10gPSBbXTtcblxuICBwcm90ZWN0ZWQgX3R5cGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9zaWduZXJBZGRyZXNzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfZXhwbGljaXRTaWduZXJEYXRhOiBTaWduZXJEYXRhO1xuICBwcm90ZWN0ZWQgX3NlbmRNZXNzYWdlczogTWVzc2FnZURhdGFbXTtcbiAgcHJvdGVjdGVkIF9nYXNCdWRnZXQ6IEdhc0ZlZUxpbWl0RGF0YTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLy8gZ2V0IGFuZCBzZXQgcmVnaW9uXG4gIC8qKlxuICAgKiBUaGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZTtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goeyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9KTtcbiAgfVxuXG4gIHR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2lnbmVyQWRkcmVzcyBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKiBUaGlzIGFjY291bnQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgcGF5aW5nIHRyYW5zYWN0aW9uIGZlZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduZXJBZGRyZXNzIHRoZSBhY2NvdW50IHRoYXQgaXMgc2VuZGluZyB0aGlzIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2lnbmVyQWRkcmVzcyhzaWduZXJBZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKHNpZ25lckFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uQnVpbGRlcjogc2VuZGVyIGlzVmFsaWRBZGRyZXNzIGNoZWNrIGZhaWxlZCcpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduZXJBZGRyZXNzID0gc2lnbmVyQWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdhc0J1ZGdldChnYXNCdWRnZXQ6IEdhc0ZlZUxpbWl0RGF0YSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVHYXNCdWRnZXQoZ2FzQnVkZ2V0KTtcbiAgICB0aGlzLl9nYXNCdWRnZXQgPSBnYXNCdWRnZXQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtTaWduZXJEYXRhfSBleHBsaXRpY1NpZ25lckRhdGEgc2lnbmVyIGRhdGE6IHthY2NvdW50TnVtYmVyLCBzZXF1ZW5jZSwgY2hhaW5JZH1cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBleHBsaXRpY1NpZ25lckRhdGEoZXhwbGljaXRTaWduZXJEYXRhOiBTaWduZXJEYXRhKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVNpZ25lckRhdGEoZXhwbGljaXRTaWduZXJEYXRhKTtcbiAgICB0aGlzLl9leHBsaWNpdFNpZ25lckRhdGEgPSBleHBsaWNpdFNpZ25lckRhdGE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZW5kTWVzc2FnZXMoc2VuZE1lc3NhZ2VzOiBNZXNzYWdlRGF0YVtdKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZU1lc3NhZ2VEYXRhQXJyYXkoc2VuZE1lc3NhZ2VzKTtcbiAgICB0aGlzLl9zZW5kTWVzc2FnZXMgPSBzZW5kTWVzc2FnZXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCB0aGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0eDtcbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICB0aGlzLnR5cGUodHhEYXRhLnR5cGUpO1xuICAgIHRoaXMuZ2FzQnVkZ2V0KHR4RGF0YS5nYXNCdWRnZXQpO1xuICAgIHRoaXMuc2lnbmVyQWRkcmVzcyh0eERhdGEuc2lnbmVyQWRkcmVzcyk7XG4gICAgdGhpcy5zZW5kTWVzc2FnZXModHhEYXRhLnNlbmRNZXNzYWdlcyk7XG4gICAgdGhpcy5nYXNCdWRnZXQodHhEYXRhLmdhc0J1ZGdldCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgIHRoaXMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0aGlzLmluaXRCdWlsZGVyKHR4KTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRBdG9tVHJhbnNhY3Rpb24odGhpcy5idWlsZEF0b21UcmFuc2FjdGlvbigpKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZSh0aGlzLnRyYW5zYWN0aW9uVHlwZSk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRBdG9tVHJhbnNhY3Rpb24oKTogQXRvbVRyYW5zYWN0aW9uIHtcbiAgICBhc3NlcnQodGhpcy5fdHlwZSwgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcigndHlwZSBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgYXNzZXJ0KHRoaXMuX3NpZ25lckFkZHJlc3MsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3NpZ25lckFkZHJlc3MgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9leHBsaWNpdFNpZ25lckRhdGEsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ2V4cGxpY2l0U2lnbmVyRGF0YSBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgYXNzZXJ0KHRoaXMuX3NlbmRNZXNzYWdlcywgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignc2VuZE1lc3NhZ2VzIGFyZSByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgYXNzZXJ0KHRoaXMuX2dhc0J1ZGdldCwgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignZ2FzUHJpY2UgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMuX3R5cGUsXG4gICAgICBzaWduZXJBZGRyZXNzOiB0aGlzLl9zaWduZXJBZGRyZXNzLFxuICAgICAgZXhwbGljaXRTaWduZXJEYXRhOiB0aGlzLl9leHBsaWNpdFNpZ25lckRhdGEsXG4gICAgICBzZW5kTWVzc2FnZXM6IHRoaXMuX3NlbmRNZXNzYWdlcyxcbiAgICAgIGdhc0J1ZGdldDogdGhpcy5fZ2FzQnVkZ2V0LFxuICAgIH07XG4gIH1cblxuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCd2YWxpZGF0ZUFkZHJlc3MgbWV0aG9kIG5vdCB5ZXQgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVBbW91bnREYXRhKGFtb3VudEFycmF5OiBDb2luW10pOiB2b2lkIHtcbiAgICAvLyBUT0RPIC0gbWFrZSB0aGUgZXJyb3IgbWVzc2FnZXMgbW9yZSBkZXNjcmlwdGl2ZSBvZiB3aGljaCBhbW91bnQgZGF0YSBpcyBmYWlsaW5nXG4gICAgLy8gRG8gYW1vdW50IGNoZWNraW5nIGJ5IGNhc3RpbmcgdG8gbnVtYmVycy9iaWdudW1iZXIgYW5kIGNvbXBhcmluZyBhcyB3ZWxsXG4gICAgZm9yIChjb25zdCBhbW91bnQgb2YgYW1vdW50QXJyYXkpIHtcbiAgICAgIGlmICghYW1vdW50LmFtb3VudCkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFtb3VudDogdW5kZWZpbmVkJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWFtb3VudC5kZW5vbSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGRlbm9tOiB1bmRlZmluZWQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUdhc0J1ZGdldChnYXNCdWRnZXQ6IEdhc0ZlZUxpbWl0RGF0YSk6IHZvaWQge1xuICAgIGlmIChnYXNCdWRnZXQuZ2FzIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgZ2FzIGxpbWl0ICcgKyBnYXNCdWRnZXQuZ2FzKTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZUFtb3VudERhdGEoZ2FzQnVkZ2V0LmFtb3VudCk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlTWVzc2FnZURhdGFBcnJheShzZW5kTWVzc2FnZXM6IE1lc3NhZ2VEYXRhW10pIHtcbiAgICBmb3IgKGNvbnN0IG1zZyBvZiBzZW5kTWVzc2FnZXMpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVNZXNzYWdlRGF0YShtc2cpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlTWVzc2FnZURhdGEobWVzc2FnZURhdGE6IE1lc3NhZ2VEYXRhKTogdm9pZCB7XG4gICAgaWYgKCFtZXNzYWdlRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBNZXNzYWdlRGF0YTogdW5kZWZpbmVkYCk7XG4gICAgfVxuICAgIGlmICghbWVzc2FnZURhdGEudHlwZVVybCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBNZXNzYWdlRGF0YSB0eXBldXJsOiBgICsgbWVzc2FnZURhdGEudHlwZVVybCk7XG4gICAgfVxuICAgIGlmICghbWVzc2FnZURhdGEudmFsdWUudG9BZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIE1lc3NhZ2VEYXRhIHZhbHVlLnRvQWRkcmVzczogYCArIG1lc3NhZ2VEYXRhLnZhbHVlLnRvQWRkcmVzcyk7XG4gICAgfVxuICAgIGlmICghbWVzc2FnZURhdGEudmFsdWUuZnJvbUFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgTWVzc2FnZURhdGEgdmFsdWUuZnJvbUFkZHJlc3M6IGAgKyBtZXNzYWdlRGF0YS52YWx1ZS5mcm9tQWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVBbW91bnREYXRhKG1lc3NhZ2VEYXRhLnZhbHVlLmFtb3VudCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghcmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uOiBVbmRlZmluZWQnKTtcbiAgICB9XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdHJhbnNhY3Rpb24uYXRvbVRyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVUcmFuc2FjdGlvbkZpZWxkcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbGwgZmllbGRzIGFyZSBkZWZpbmVkXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVHJhbnNhY3Rpb25GaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyB0eXBlJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaWduZXJBZGRyZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgc2lnbmVyQWRkcmVzcycpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZXhwbGljaXRTaWduZXJEYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgZXhwbGljaXRTaWduZXJEYXRhJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zZW5kTWVzc2FnZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBzZW5kTWVzc2FnZXMnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2dhc0J1ZGdldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGdhcyBidWRnZXQgZGF0YScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNpZ25lckRhdGEoZXhwbGljaXRTaWduZXJEYXRhOiBTaWduZXJEYXRhKSB7XG4gICAgaWYgKCFleHBsaWNpdFNpZ25lckRhdGEuY2hhaW5JZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBleHBsaWNpdFNpZ25lckRhdGE6IG1pc3NpbmcgY2hhaW5JZCcpO1xuICAgIH1cbiAgICBpZiAoIWV4cGxpY2l0U2lnbmVyRGF0YS5hY2NvdW50TnVtYmVyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGV4cGxpY2l0U2lnbmVyRGF0YTogbWlzc2luZyBhY2NvdW50TnVtYmVyJyk7XG4gICAgfVxuICAgIGlmICghZXhwbGljaXRTaWduZXJEYXRhLnNlcXVlbmNlKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGV4cGxpY2l0U2lnbmVyRGF0YTogbWlzc2luZyBzZXF1ZW5jZScpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { BaseTransactionBuilderFactory } from '@bitgo/sdk-core';
|
|
2
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
3
|
+
import { TransferBuilder } from './transferBuilder';
|
|
4
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
5
|
+
import { Transaction } from './transaction';
|
|
6
|
+
export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
|
|
7
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
8
|
+
/** @inheritdoc */
|
|
9
|
+
from(raw: string): TransactionBuilder;
|
|
10
|
+
/** @inheritdoc */
|
|
11
|
+
getTransferBuilder(tx?: Transaction): TransferBuilder;
|
|
12
|
+
/** @inheritdoc */
|
|
13
|
+
getWalletInitializationBuilder(): void;
|
|
14
|
+
/**
|
|
15
|
+
* Initialize the builder with the given transaction
|
|
16
|
+
*
|
|
17
|
+
* @param {Transaction | undefined} tx - the transaction used to initialize the builder
|
|
18
|
+
* @param {TransactionBuilder} builder - the builder to be initialized
|
|
19
|
+
* @returns {TransactionBuilder} the builder initialized
|
|
20
|
+
*/
|
|
21
|
+
private initializeBuilder;
|
|
22
|
+
/** Parse the transaction from a raw transaction
|
|
23
|
+
*
|
|
24
|
+
* @param {string} rawTransaction - the raw tx
|
|
25
|
+
* @returns {Transaction} parsedtransaction
|
|
26
|
+
*/
|
|
27
|
+
private parseTransaction;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=transactionBuilderFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAA4C,MAAM,iBAAiB,CAAC;AAC1G,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAcrC,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;IAItC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAKzB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransactionBuilderFactory = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
5
|
+
const transferBuilder_1 = require("./transferBuilder");
|
|
6
|
+
const transaction_1 = require("./transaction");
|
|
7
|
+
class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
|
|
8
|
+
constructor(_coinConfig) {
|
|
9
|
+
super(_coinConfig);
|
|
10
|
+
}
|
|
11
|
+
/** @inheritdoc */
|
|
12
|
+
from(raw) {
|
|
13
|
+
const tx = this.parseTransaction(raw);
|
|
14
|
+
try {
|
|
15
|
+
switch (tx.type) {
|
|
16
|
+
case sdk_core_1.TransactionType.Send:
|
|
17
|
+
return this.getTransferBuilder(tx);
|
|
18
|
+
default:
|
|
19
|
+
throw new sdk_core_1.InvalidTransactionError('Invalid transaction');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
throw e;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/** @inheritdoc */
|
|
27
|
+
getTransferBuilder(tx) {
|
|
28
|
+
return this.initializeBuilder(tx, new transferBuilder_1.TransferBuilder(this._coinConfig));
|
|
29
|
+
}
|
|
30
|
+
/** @inheritdoc */
|
|
31
|
+
getWalletInitializationBuilder() {
|
|
32
|
+
throw new Error('Method not implemented.');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Initialize the builder with the given transaction
|
|
36
|
+
*
|
|
37
|
+
* @param {Transaction | undefined} tx - the transaction used to initialize the builder
|
|
38
|
+
* @param {TransactionBuilder} builder - the builder to be initialized
|
|
39
|
+
* @returns {TransactionBuilder} the builder initialized
|
|
40
|
+
*/
|
|
41
|
+
initializeBuilder(tx, builder) {
|
|
42
|
+
if (tx) {
|
|
43
|
+
builder.initBuilder(tx);
|
|
44
|
+
}
|
|
45
|
+
return builder;
|
|
46
|
+
}
|
|
47
|
+
/** Parse the transaction from a raw transaction
|
|
48
|
+
*
|
|
49
|
+
* @param {string} rawTransaction - the raw tx
|
|
50
|
+
* @returns {Transaction} parsedtransaction
|
|
51
|
+
*/
|
|
52
|
+
parseTransaction(rawTransaction) {
|
|
53
|
+
const tx = new transaction_1.Transaction(this._coinConfig);
|
|
54
|
+
tx.fromRawTransaction(rawTransaction);
|
|
55
|
+
return tx;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.TransactionBuilderFactory = TransactionBuilderFactory;
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4Q0FBMEc7QUFFMUcsdURBQW9EO0FBRXBELCtDQUE0QztBQUU1QyxNQUFhLHlCQUEwQixTQUFRLHdDQUE2QjtJQUMxRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFXO1FBQ2QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUk7WUFDRixRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2YsS0FBSywwQkFBZSxDQUFDLElBQUk7b0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQztvQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUM1RDtTQUNGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLENBQUMsQ0FBQztTQUNUO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0IsQ0FBQyxFQUFnQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsOEJBQThCO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssaUJBQWlCLENBQStCLEVBQTJCLEVBQUUsT0FBVTtRQUM3RixJQUFJLEVBQUUsRUFBRTtZQUNOLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDekI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQixDQUFDLGNBQXNCO1FBQzdDLE1BQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGO0FBdERELDhEQXNEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGZyb20ocmF3OiBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGNvbnN0IHR4ID0gdGhpcy5wYXJzZVRyYW5zYWN0aW9uKHJhdyk7XG4gICAgdHJ5IHtcbiAgICAgIHN3aXRjaCAodHgudHlwZSkge1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcih0eCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25CdWlsZGVyfSBidWlsZGVyIC0gdGhlIGJ1aWxkZXIgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gdGhlIGJ1aWxkZXIgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkLCBidWlsZGVyOiBUKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICAvKiogUGFyc2UgdGhlIHRyYW5zYWN0aW9uIGZyb20gYSByYXcgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIC0gdGhlIHJhdyB0eFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb259IHBhcnNlZHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHBhcnNlVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHJldHVybiB0eDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
3
|
+
import { TransactionType } from '@bitgo/sdk-core';
|
|
4
|
+
export declare class TransferBuilder extends TransactionBuilder {
|
|
5
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
6
|
+
protected get transactionType(): TransactionType;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=transferBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransferBuilder = void 0;
|
|
4
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
5
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
6
|
+
class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
7
|
+
constructor(_coinConfig) {
|
|
8
|
+
super(_coinConfig);
|
|
9
|
+
}
|
|
10
|
+
get transactionType() {
|
|
11
|
+
return sdk_core_1.TransactionType.Send;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.TransferBuilder = TransferBuilder;
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQTBEO0FBRTFELDhDQUFrRDtBQUVsRCxNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBQ3JELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUFSRCwwQ0FRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { BaseUtils } from '@bitgo/sdk-core';
|
|
2
|
+
import { DecodedTxRaw } from '@cosmjs/proto-signing';
|
|
3
|
+
import { AtomTransaction, GasFeeLimitData, MessageData } from './iface';
|
|
4
|
+
import { SignerData } from '@cosmjs/stargate';
|
|
5
|
+
import { TxRaw, SignDoc } from 'cosmjs-types/cosmos/tx/v1beta1/tx';
|
|
6
|
+
export declare class Utils implements BaseUtils {
|
|
7
|
+
/** @inheritdoc */
|
|
8
|
+
isValidBlockId(hash: string): boolean;
|
|
9
|
+
/** @inheritdoc */
|
|
10
|
+
isValidPrivateKey(key: string): boolean;
|
|
11
|
+
/** @inheritdoc */
|
|
12
|
+
isValidPublicKey(key: string): boolean;
|
|
13
|
+
/** @inheritdoc */
|
|
14
|
+
isValidSignature(signature: string): boolean;
|
|
15
|
+
/** @inheritdoc */
|
|
16
|
+
isValidTransactionId(txId: string): boolean;
|
|
17
|
+
validateBlake2b(hash: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Checks if raw transaction can be deserialized
|
|
20
|
+
*
|
|
21
|
+
* @param {string} rawTransaction - transaction in base64 string format
|
|
22
|
+
* @returns {boolean} - the validation result
|
|
23
|
+
*/
|
|
24
|
+
isValidRawTransaction(rawTransaction: string): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Check the raw transaction has a valid format in the blockchain context, throw otherwise.
|
|
27
|
+
*
|
|
28
|
+
* @param {string} rawTransaction - Transaction in base64 string format
|
|
29
|
+
*/
|
|
30
|
+
validateRawTransaction(rawTransaction: string): void;
|
|
31
|
+
isValidAddress(address: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Returns whether or not the string is a valid amount
|
|
34
|
+
*
|
|
35
|
+
* @param {number[]} amounts - the amounts to validate
|
|
36
|
+
* @returns {boolean} - the validation result
|
|
37
|
+
*/
|
|
38
|
+
isValidAmounts(amounts: number[]): boolean;
|
|
39
|
+
isValidAmount(amount: number): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Decodes raw tx data into messages, signing info, and fee data
|
|
42
|
+
* @param txHex - raw base64 tx
|
|
43
|
+
*/
|
|
44
|
+
getDecodedTxFromRawBase64(txRaw: string): DecodedTxRaw;
|
|
45
|
+
/**
|
|
46
|
+
* Returns the array of messages in the body of the decoded transaction
|
|
47
|
+
* @param decodedTx
|
|
48
|
+
*/
|
|
49
|
+
private getEncodedMessagesFromDecodedTx;
|
|
50
|
+
/**
|
|
51
|
+
* Arranges a decoded message into our MessageData value interface
|
|
52
|
+
* @param decodedMessage
|
|
53
|
+
* @private
|
|
54
|
+
*/
|
|
55
|
+
private getMessageValueDataFromDecodedMessage;
|
|
56
|
+
/**
|
|
57
|
+
* Returns an array of MessageData[] from an encoded messages array
|
|
58
|
+
* @param encodedMessages
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
61
|
+
private getMessageDataFromEncodedMessages;
|
|
62
|
+
/**
|
|
63
|
+
* Pulls the sequence number from a DecodedTxRaw AuthInfo property
|
|
64
|
+
* @param decodedTx
|
|
65
|
+
* @private
|
|
66
|
+
*/
|
|
67
|
+
private getSequenceFromDecodedTx;
|
|
68
|
+
/**
|
|
69
|
+
* Pulls the typeUrl from the encoded message of a DecodedTxRaw
|
|
70
|
+
* @param decodedTx
|
|
71
|
+
*/
|
|
72
|
+
getTypeUrlFromDecodedTx(decodedTx: DecodedTxRaw): string;
|
|
73
|
+
getGasBudgetFromDecodedTx(decodedTx: DecodedTxRaw): GasFeeLimitData;
|
|
74
|
+
getExplicitSignerDataFromDecodedTx(decodedTx: DecodedTxRaw): SignerData;
|
|
75
|
+
/**
|
|
76
|
+
* Returns the array of MessageData[] from the decoded transaction
|
|
77
|
+
* @param decodedTx
|
|
78
|
+
*/
|
|
79
|
+
getMessageDataFromDecodedTx(decodedTx: DecodedTxRaw): MessageData[];
|
|
80
|
+
createSignDocFromAtomTransaction(pubkey: any, atomTransaction: AtomTransaction): import("cosmjs-types/cosmos/tx/v1beta1/tx").SignDoc;
|
|
81
|
+
createSignedTxRaw(pubkey: string, signDoc: SignDoc, signature: any): TxRaw;
|
|
82
|
+
createBase64SignedTxBytesFromSignedTxRaw(signedTxRaw: TxRaw): string;
|
|
83
|
+
}
|
|
84
|
+
declare const utils: Utils;
|
|
85
|
+
export default utils;
|
|
86
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAC;AAInE,OAAO,EACL,YAAY,EAMb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAA8B,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG1E,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAEnE,qBAAa,KAAM,YAAW,SAAS;IACrC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAMtC;;;;;OAKG;IACH,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAItD;;;;OAIG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASpD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOxC;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO;IAS1C,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAQtC;;;OAGG;IACH,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY;IAItD;;;OAGG;IACH,OAAO,CAAC,+BAA+B;IAIvC;;;;OAIG;IACH,OAAO,CAAC,qCAAqC;IAQ7C;;;;OAIG;IACH,OAAO,CAAC,iCAAiC;IAYzC;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAIhC;;;OAGG;IACH,uBAAuB,CAAC,SAAS,EAAE,YAAY,GAAG,MAAM;IAKxD,yBAAyB,CAAC,SAAS,EAAE,YAAY,GAAG,eAAe;IAOnE,kCAAkC,CAAC,SAAS,EAAE,YAAY,GAAG,UAAU;IASvE;;;OAGG;IACH,2BAA2B,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,EAAE;IAKnE,gCAAgC,CAAC,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,eAAe;IAoB9E,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,GAAG,KAAK;IAU1E,wCAAwC,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM;CAIrE;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
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.Utils = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
8
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
const encoding_1 = require("@cosmjs/encoding");
|
|
11
|
+
const proto_signing_1 = require("@cosmjs/proto-signing");
|
|
12
|
+
const stargate_1 = require("@cosmjs/stargate");
|
|
13
|
+
const amino_1 = require("@cosmjs/amino");
|
|
14
|
+
const crypto_1 = require("@cosmjs/crypto");
|
|
15
|
+
const tx_1 = require("cosmjs-types/cosmos/tx/v1beta1/tx");
|
|
16
|
+
class Utils {
|
|
17
|
+
/** @inheritdoc */
|
|
18
|
+
isValidBlockId(hash) {
|
|
19
|
+
return this.validateBlake2b(hash);
|
|
20
|
+
}
|
|
21
|
+
/** @inheritdoc */
|
|
22
|
+
isValidPrivateKey(key) {
|
|
23
|
+
throw new Error('Method not implemented.');
|
|
24
|
+
}
|
|
25
|
+
/** @inheritdoc */
|
|
26
|
+
isValidPublicKey(key) {
|
|
27
|
+
throw new Error('Method not implemented.');
|
|
28
|
+
}
|
|
29
|
+
/** @inheritdoc */
|
|
30
|
+
isValidSignature(signature) {
|
|
31
|
+
throw new Error('Method not implemented.');
|
|
32
|
+
}
|
|
33
|
+
/** @inheritdoc */
|
|
34
|
+
isValidTransactionId(txId) {
|
|
35
|
+
return this.validateBlake2b(txId);
|
|
36
|
+
}
|
|
37
|
+
validateBlake2b(hash) {
|
|
38
|
+
if ((hash === null || hash === void 0 ? void 0 : hash.length) !== 64) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return hash.match(/^[a-zA-Z0-9]+$/) !== null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Checks if raw transaction can be deserialized
|
|
45
|
+
*
|
|
46
|
+
* @param {string} rawTransaction - transaction in base64 string format
|
|
47
|
+
* @returns {boolean} - the validation result
|
|
48
|
+
*/
|
|
49
|
+
isValidRawTransaction(rawTransaction) {
|
|
50
|
+
throw new Error('Method not implemented.');
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Check the raw transaction has a valid format in the blockchain context, throw otherwise.
|
|
54
|
+
*
|
|
55
|
+
* @param {string} rawTransaction - Transaction in base64 string format
|
|
56
|
+
*/
|
|
57
|
+
validateRawTransaction(rawTransaction) {
|
|
58
|
+
if (!rawTransaction) {
|
|
59
|
+
throw new sdk_core_1.ParseTransactionError('Invalid raw transaction: Undefined');
|
|
60
|
+
}
|
|
61
|
+
if (!this.isValidRawTransaction(rawTransaction)) {
|
|
62
|
+
throw new sdk_core_1.ParseTransactionError('Invalid raw transaction');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
isValidAddress(address) {
|
|
66
|
+
const allowed_chars = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';
|
|
67
|
+
const atomRegex = '^(cosmos)1([' + allowed_chars + ']+)$';
|
|
68
|
+
const re = new RegExp(atomRegex);
|
|
69
|
+
return re.test(address);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Returns whether or not the string is a valid amount
|
|
73
|
+
*
|
|
74
|
+
* @param {number[]} amounts - the amounts to validate
|
|
75
|
+
* @returns {boolean} - the validation result
|
|
76
|
+
*/
|
|
77
|
+
isValidAmounts(amounts) {
|
|
78
|
+
for (const amount of amounts) {
|
|
79
|
+
if (!this.isValidAmount(amount)) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
isValidAmount(amount) {
|
|
86
|
+
const bigNumberAmount = new bignumber_js_1.default(amount);
|
|
87
|
+
if (!bigNumberAmount.isInteger() || bigNumberAmount.isLessThanOrEqualTo(0)) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Decodes raw tx data into messages, signing info, and fee data
|
|
94
|
+
* @param txHex - raw base64 tx
|
|
95
|
+
*/
|
|
96
|
+
getDecodedTxFromRawBase64(txRaw) {
|
|
97
|
+
return proto_signing_1.decodeTxRaw(encoding_1.fromBase64(txRaw));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Returns the array of messages in the body of the decoded transaction
|
|
101
|
+
* @param decodedTx
|
|
102
|
+
*/
|
|
103
|
+
getEncodedMessagesFromDecodedTx(decodedTx) {
|
|
104
|
+
return decodedTx.body.messages;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Arranges a decoded message into our MessageData value interface
|
|
108
|
+
* @param decodedMessage
|
|
109
|
+
* @private
|
|
110
|
+
*/
|
|
111
|
+
getMessageValueDataFromDecodedMessage(decodedMessage) {
|
|
112
|
+
return {
|
|
113
|
+
fromAddress: decodedMessage.fromAddress,
|
|
114
|
+
toAddress: decodedMessage.toAddress,
|
|
115
|
+
amount: decodedMessage.amount,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Returns an array of MessageData[] from an encoded messages array
|
|
120
|
+
* @param encodedMessages
|
|
121
|
+
* @private
|
|
122
|
+
*/
|
|
123
|
+
getMessageDataFromEncodedMessages(encodedMessages) {
|
|
124
|
+
const registry = new proto_signing_1.Registry(stargate_1.defaultRegistryTypes);
|
|
125
|
+
const messageData = [];
|
|
126
|
+
for (const message of encodedMessages) {
|
|
127
|
+
messageData.push({
|
|
128
|
+
value: this.getMessageValueDataFromDecodedMessage(registry.decode(message)),
|
|
129
|
+
typeUrl: message.typeUrl,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
return messageData;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Pulls the sequence number from a DecodedTxRaw AuthInfo property
|
|
136
|
+
* @param decodedTx
|
|
137
|
+
* @private
|
|
138
|
+
*/
|
|
139
|
+
getSequenceFromDecodedTx(decodedTx) {
|
|
140
|
+
return Number(decodedTx.authInfo.signerInfos[0].sequence);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Pulls the typeUrl from the encoded message of a DecodedTxRaw
|
|
144
|
+
* @param decodedTx
|
|
145
|
+
*/
|
|
146
|
+
getTypeUrlFromDecodedTx(decodedTx) {
|
|
147
|
+
const encodedMessage = this.getEncodedMessagesFromDecodedTx(decodedTx)[0];
|
|
148
|
+
return encodedMessage.typeUrl;
|
|
149
|
+
}
|
|
150
|
+
getGasBudgetFromDecodedTx(decodedTx) {
|
|
151
|
+
var _a, _b;
|
|
152
|
+
return {
|
|
153
|
+
amount: (_a = decodedTx.authInfo.fee) === null || _a === void 0 ? void 0 : _a.amount,
|
|
154
|
+
gas: Number((_b = decodedTx.authInfo.fee) === null || _b === void 0 ? void 0 : _b.gasLimit),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
getExplicitSignerDataFromDecodedTx(decodedTx) {
|
|
158
|
+
const sequence = this.getSequenceFromDecodedTx(decodedTx);
|
|
159
|
+
return {
|
|
160
|
+
accountNumber: 100,
|
|
161
|
+
sequence,
|
|
162
|
+
chainId: constants_1.thetaTestnetChainId, // TODO BG-67576 - if possible, get this information from txData
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Returns the array of MessageData[] from the decoded transaction
|
|
167
|
+
* @param decodedTx
|
|
168
|
+
*/
|
|
169
|
+
getMessageDataFromDecodedTx(decodedTx) {
|
|
170
|
+
const encodedMessages = this.getEncodedMessagesFromDecodedTx(decodedTx);
|
|
171
|
+
return this.getMessageDataFromEncodedMessages(encodedMessages);
|
|
172
|
+
}
|
|
173
|
+
createSignDocFromAtomTransaction(pubkey, atomTransaction) {
|
|
174
|
+
const register = new proto_signing_1.Registry(stargate_1.defaultRegistryTypes);
|
|
175
|
+
const txBodyBytes = register.encodeTxBody(atomTransaction.sendMessages);
|
|
176
|
+
const sequence = atomTransaction.explicitSignerData.sequence;
|
|
177
|
+
const authInfoBytes = proto_signing_1.makeAuthInfoBytes([{ pubkey, sequence }], atomTransaction.gasBudget.amount, atomTransaction.gasBudget.gas, undefined, undefined, undefined);
|
|
178
|
+
return proto_signing_1.makeSignDoc(txBodyBytes, authInfoBytes, atomTransaction.explicitSignerData.chainId, atomTransaction.explicitSignerData.accountNumber);
|
|
179
|
+
}
|
|
180
|
+
createSignedTxRaw(pubkey, signDoc, signature) {
|
|
181
|
+
const signatureBytes = new crypto_1.Secp256k1Signature(encoding_1.fromHex(signature.r), encoding_1.fromHex(signature.s)).toFixedLength();
|
|
182
|
+
const stdSignature = amino_1.encodeSecp256k1Signature(encoding_1.fromHex(pubkey), signatureBytes);
|
|
183
|
+
return tx_1.TxRaw.fromPartial({
|
|
184
|
+
bodyBytes: signDoc.bodyBytes,
|
|
185
|
+
authInfoBytes: signDoc.authInfoBytes,
|
|
186
|
+
signatures: [encoding_1.fromBase64(stdSignature.signature)],
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
createBase64SignedTxBytesFromSignedTxRaw(signedTxRaw) {
|
|
190
|
+
const signedTxBytes = tx_1.TxRaw.encode(signedTxRaw).finish();
|
|
191
|
+
return encoding_1.toBase64(signedTxBytes);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
exports.Utils = Utils;
|
|
195
|
+
const utils = new Utils();
|
|
196
|
+
exports.default = utils;
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhDQUFtRTtBQUNuRSxnRUFBcUM7QUFDckMsMkNBQWtEO0FBQ2xELCtDQUFpRTtBQUNqRSx5REFPK0I7QUFFL0IsK0NBQTBFO0FBQzFFLHlDQUF5RDtBQUN6RCwyQ0FBb0Q7QUFDcEQsMERBQW1FO0FBRW5FLE1BQWEsS0FBSztJQUNoQixrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLElBQVk7UUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsaUJBQWlCLENBQUMsR0FBVztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQkFBZ0IsQ0FBQyxHQUFXO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGdCQUFnQixDQUFDLFNBQWlCO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG9CQUFvQixDQUFDLElBQVk7UUFDL0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBWTtRQUMxQixJQUFJLENBQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLE1BQU0sTUFBSyxFQUFFLEVBQUU7WUFDdkIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUMvQyxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxx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LFNBQVMsQ0FBQyxHQUFHLEVBQzdCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxDQUNWLENBQUM7UUFDRixPQUFPLDJCQUFXLENBQ2hCLFdBQVcsRUFDWCxhQUFhLEVBQ2IsZUFBZSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFDMUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FDakQsQ0FBQztJQUNKLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFjLEVBQUUsT0FBZ0IsRUFBRSxTQUFjO1FBQ2hFLE1BQU0sY0FBYyxHQUFHLElBQUksMkJBQWtCLENBQUMsa0JBQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxRyxNQUFNLFlBQVksR0FBRyxnQ0FBd0IsQ0FBQyxrQkFBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sVUFBSyxDQUFDLFdBQVcsQ0FBQztZQUN2QixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDNUIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLFVBQVUsRUFBRSxDQUFDLHFCQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2pELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx3Q0FBd0MsQ0FBQyxXQUFrQjtRQUN6RCxNQUFNLGFBQWEsR0FBRyxVQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pELE9BQU8sbUJBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFqTkQsc0JBaU5DO0FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUUxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVXRpbHMsIFBhcnNlVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyB0aGV0YVRlc3RuZXRDaGFpbklkIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZnJvbUJhc2U2NCwgZnJvbUhleCwgdG9CYXNlNjQgfSBmcm9tICdAY29zbWpzL2VuY29kaW5nJztcbmltcG9ydCB7XG4gIERlY29kZWRUeFJhdyxcbiAgZGVjb2RlVHhSYXcsXG4gIEVuY29kZU9iamVjdCxcbiAgbWFrZUF1dGhJbmZvQnl0ZXMsXG4gIG1ha2VTaWduRG9jLFxuICBSZWdpc3RyeSxcbn0gZnJvbSAnQGNvc21qcy9wcm90by1zaWduaW5nJztcbmltcG9ydCB7IEF0b21UcmFuc2FjdGlvbiwgR2FzRmVlTGltaXREYXRhLCBNZXNzYWdlRGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgQ29pbiwgZGVmYXVsdFJlZ2lzdHJ5VHlwZXMsIFNpZ25lckRhdGEgfSBmcm9tICdAY29zbWpzL3N0YXJnYXRlJztcbmltcG9ydCB7IGVuY29kZVNlY3AyNTZrMVNpZ25hdHVyZSB9IGZyb20gJ0Bjb3NtanMvYW1pbm8nO1xuaW1wb3J0IHsgU2VjcDI1NmsxU2lnbmF0dXJlIH0gZnJvbSAnQGNvc21qcy9jcnlwdG8nO1xuaW1wb3J0IHsgVHhSYXcsIFNpZ25Eb2MgfSBmcm9tICdjb3NtanMtdHlwZXMvY29zbW9zL3R4L3YxYmV0YTEvdHgnO1xuXG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVCbGFrZTJiKGhhc2gpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUJsYWtlMmIodHhJZCk7XG4gIH1cblxuICB2YWxpZGF0ZUJsYWtlMmIoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGhhc2g/Lmxlbmd0aCAhPT0gNjQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc2gubWF0Y2goL15bYS16QS1aMC05XSskLykgIT09IG51bGw7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrcyBpZiByYXcgdHJhbnNhY3Rpb24gY2FuIGJlIGRlc2VyaWFsaXplZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3VHJhbnNhY3Rpb24gLSB0cmFuc2FjdGlvbiBpbiBiYXNlNjQgc3RyaW5nIGZvcm1hdFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIGlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSByYXcgdHJhbnNhY3Rpb24gaGFzIGEgdmFsaWQgZm9ybWF0IGluIHRoZSBibG9ja2NoYWluIGNvbnRleHQsIHRocm93IG90aGVyd2lzZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIC0gVHJhbnNhY3Rpb24gaW4gYmFzZTY0IHN0cmluZyAgZm9ybWF0XG4gICAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbjogVW5kZWZpbmVkJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFsbG93ZWRfY2hhcnMgPSAncXB6cnk5eDhnZjJ0dmR3MHMzam41NGtoY2U2bXVhN2wnO1xuICAgIGNvbnN0IGF0b21SZWdleCA9ICdeKGNvc21vcykxKFsnICsgYWxsb3dlZF9jaGFycyArICddKykkJztcbiAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoYXRvbVJlZ2V4KTtcbiAgICByZXR1cm4gcmUudGVzdChhZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBhbW91bnRcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJbXX0gYW1vdW50cyAtIHRoZSBhbW91bnRzIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICAgKi9cbiAgaXNWYWxpZEFtb3VudHMoYW1vdW50czogbnVtYmVyW10pOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGFtb3VudCBvZiBhbW91bnRzKSB7XG4gICAgICBpZiAoIXRoaXMuaXNWYWxpZEFtb3VudChhbW91bnQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpc1ZhbGlkQW1vdW50KGFtb3VudDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYmlnTnVtYmVyQW1vdW50ID0gbmV3IEJpZ051bWJlcihhbW91bnQpO1xuICAgIGlmICghYmlnTnVtYmVyQW1vdW50LmlzSW50ZWdlcigpIHx8IGJpZ051bWJlckFtb3VudC5pc0xlc3NUaGFuT3JFcXVhbFRvKDApKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgcmF3IHR4IGRhdGEgaW50byBtZXNzYWdlcywgc2lnbmluZyBpbmZvLCBhbmQgZmVlIGRhdGFcbiAgICogQHBhcmFtIHR4SGV4IC0gcmF3IGJhc2U2NCB0eFxuICAgKi9cbiAgZ2V0RGVjb2RlZFR4RnJvbVJhd0Jhc2U2NCh0eFJhdzogc3RyaW5nKTogRGVjb2RlZFR4UmF3IHtcbiAgICByZXR1cm4gZGVjb2RlVHhSYXcoZnJvbUJhc2U2NCh0eFJhdykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFycmF5IG9mIG1lc3NhZ2VzIGluIHRoZSBib2R5IG9mIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBkZWNvZGVkVHhcbiAgICovXG4gIHByaXZhdGUgZ2V0RW5jb2RlZE1lc3NhZ2VzRnJvbURlY29kZWRUeChkZWNvZGVkVHg6IERlY29kZWRUeFJhdyk6IEVuY29kZU9iamVjdFtdIHtcbiAgICByZXR1cm4gZGVjb2RlZFR4LmJvZHkubWVzc2FnZXM7XG4gIH1cblxuICAvKipcbiAgICogQXJyYW5nZXMgYSBkZWNvZGVkIG1lc3NhZ2UgaW50byBvdXIgTWVzc2FnZURhdGEgdmFsdWUgaW50ZXJmYWNlXG4gICAqIEBwYXJhbSBkZWNvZGVkTWVzc2FnZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRNZXNzYWdlVmFsdWVEYXRhRnJvbURlY29kZWRNZXNzYWdlKGRlY29kZWRNZXNzYWdlOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBmcm9tQWRkcmVzczogZGVjb2RlZE1lc3NhZ2UuZnJvbUFkZHJlc3MsXG4gICAgICB0b0FkZHJlc3M6IGRlY29kZWRNZXNzYWdlLnRvQWRkcmVzcyxcbiAgICAgIGFtb3VudDogZGVjb2RlZE1lc3NhZ2UuYW1vdW50LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBNZXNzYWdlRGF0YVtdIGZyb20gYW4gZW5jb2RlZCBtZXNzYWdlcyBhcnJheVxuICAgKiBAcGFyYW0gZW5jb2RlZE1lc3NhZ2VzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGdldE1lc3NhZ2VEYXRhRnJvbUVuY29kZWRNZXNzYWdlcyhlbmNvZGVkTWVzc2FnZXM6IEVuY29kZU9iamVjdFtdKTogTWVzc2FnZURhdGFbXSB7XG4gICAgY29uc3QgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoZGVmYXVsdFJlZ2lzdHJ5VHlwZXMpO1xuICAgIGNvbnN0IG1lc3NhZ2VEYXRhOiBNZXNzYWdlRGF0YVtdID0gW107XG4gICAgZm9yIChjb25zdCBtZXNzYWdlIG9mIGVuY29kZWRNZXNzYWdlcykge1xuICAgICAgbWVzc2FnZURhdGEucHVzaCh7XG4gICAgICAgIHZhbHVlOiB0aGlzLmdldE1lc3NhZ2VWYWx1ZURhdGFGcm9tRGVjb2RlZE1lc3NhZ2UocmVnaXN0cnkuZGVjb2RlKG1lc3NhZ2UpKSxcbiAgICAgICAgdHlwZVVybDogbWVzc2FnZS50eXBlVXJsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWxscyB0aGUgc2VxdWVuY2UgbnVtYmVyIGZyb20gYSBEZWNvZGVkVHhSYXcgQXV0aEluZm8gcHJvcGVydHlcbiAgICogQHBhcmFtIGRlY29kZWRUeFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTZXF1ZW5jZUZyb21EZWNvZGVkVHgoZGVjb2RlZFR4OiBEZWNvZGVkVHhSYXcpOiBudW1iZXIge1xuICAgIHJldHVybiBOdW1iZXIoZGVjb2RlZFR4LmF1dGhJbmZvLnNpZ25lckluZm9zWzBdLnNlcXVlbmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWxscyB0aGUgdHlwZVVybCBmcm9tIHRoZSBlbmNvZGVkIG1lc3NhZ2Ugb2YgYSBEZWNvZGVkVHhSYXdcbiAgICogQHBhcmFtIGRlY29kZWRUeFxuICAgKi9cbiAgZ2V0VHlwZVVybEZyb21EZWNvZGVkVHgoZGVjb2RlZFR4OiBEZWNvZGVkVHhSYXcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVuY29kZWRNZXNzYWdlID0gdGhpcy5nZXRFbmNvZGVkTWVzc2FnZXNGcm9tRGVjb2RlZFR4KGRlY29kZWRUeClbMF07XG4gICAgcmV0dXJuIGVuY29kZWRNZXNzYWdlLnR5cGVVcmw7XG4gIH1cblxuICBnZXRHYXNCdWRnZXRGcm9tRGVjb2RlZFR4KGRlY29kZWRUeDogRGVjb2RlZFR4UmF3KTogR2FzRmVlTGltaXREYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgYW1vdW50OiBkZWNvZGVkVHguYXV0aEluZm8uZmVlPy5hbW91bnQgYXMgQ29pbltdLFxuICAgICAgZ2FzOiBOdW1iZXIoZGVjb2RlZFR4LmF1dGhJbmZvLmZlZT8uZ2FzTGltaXQpLFxuICAgIH07XG4gIH1cblxuICBnZXRFeHBsaWNpdFNpZ25lckRhdGFGcm9tRGVjb2RlZFR4KGRlY29kZWRUeDogRGVjb2RlZFR4UmF3KTogU2lnbmVyRGF0YSB7XG4gICAgY29uc3Qgc2VxdWVuY2UgPSB0aGlzLmdldFNlcXVlbmNlRnJvbURlY29kZWRUeChkZWNvZGVkVHgpO1xuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50TnVtYmVyOiAxMDAsIC8vIFRPRE8gQkctNjc1NzUgLSBpZiBwb3NzaWJsZSwgZ2V0IHRoaXMgaW5mb3JtYXRpb24gZnJvbSB0eERhdGFcbiAgICAgIHNlcXVlbmNlLFxuICAgICAgY2hhaW5JZDogdGhldGFUZXN0bmV0Q2hhaW5JZCwgLy8gVE9ETyBCRy02NzU3NiAtIGlmIHBvc3NpYmxlLCBnZXQgdGhpcyBpbmZvcm1hdGlvbiBmcm9tIHR4RGF0YVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXJyYXkgb2YgTWVzc2FnZURhdGFbXSBmcm9tIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBkZWNvZGVkVHhcbiAgICovXG4gIGdldE1lc3NhZ2VEYXRhRnJvbURlY29kZWRUeChkZWNvZGVkVHg6IERlY29kZWRUeFJhdyk6IE1lc3NhZ2VEYXRhW10ge1xuICAgIGNvbnN0IGVuY29kZWRNZXNzYWdlcyA9IHRoaXMuZ2V0RW5jb2RlZE1lc3NhZ2VzRnJvbURlY29kZWRUeChkZWNvZGVkVHgpO1xuICAgIHJldHVybiB0aGlzLmdldE1lc3NhZ2VEYXRhRnJvbUVuY29kZWRNZXNzYWdlcyhlbmNvZGVkTWVzc2FnZXMpO1xuICB9XG5cbiAgY3JlYXRlU2lnbkRvY0Zyb21BdG9tVHJhbnNhY3Rpb24ocHVia2V5OiBhbnksIGF0b21UcmFuc2FjdGlvbjogQXRvbVRyYW5zYWN0aW9uKSB7XG4gICAgY29uc3QgcmVnaXN0ZXIgPSBuZXcgUmVnaXN0cnkoZGVmYXVsdFJlZ2lzdHJ5VHlwZXMpO1xuICAgIGNvbnN0IHR4Qm9keUJ5dGVzID0gcmVnaXN0ZXIuZW5jb2RlVHhCb2R5KGF0b21UcmFuc2FjdGlvbi5zZW5kTWVzc2FnZXMgYXMgYW55KTtcbiAgICBjb25zdCBzZXF1ZW5jZSA9IGF0b21UcmFuc2FjdGlvbi5leHBsaWNpdFNpZ25lckRhdGEuc2VxdWVuY2U7XG4gICAgY29uc3QgYXV0aEluZm9CeXRlcyA9IG1ha2VBdXRoSW5mb0J5dGVzKFxuICAgICAgW3sgcHVia2V5LCBzZXF1ZW5jZSB9XSxcbiAgICAgIGF0b21UcmFuc2FjdGlvbi5nYXNCdWRnZXQuYW1vdW50LFxuICAgICAgYXRvbVRyYW5zYWN0aW9uLmdhc0J1ZGdldC5nYXMsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWRcbiAgICApO1xuICAgIHJldHVybiBtYWtlU2lnbkRvYyhcbiAgICAgIHR4Qm9keUJ5dGVzLFxuICAgICAgYXV0aEluZm9CeXRlcyxcbiAgICAgIGF0b21UcmFuc2FjdGlvbi5leHBsaWNpdFNpZ25lckRhdGEuY2hhaW5JZCxcbiAgICAgIGF0b21UcmFuc2FjdGlvbi5leHBsaWNpdFNpZ25lckRhdGEuYWNjb3VudE51bWJlclxuICAgICk7XG4gIH1cblxuICBjcmVhdGVTaWduZWRUeFJhdyhwdWJrZXk6IHN0cmluZywgc2lnbkRvYzogU2lnbkRvYywgc2lnbmF0dXJlOiBhbnkpOiBUeFJhdyB7XG4gICAgY29uc3Qgc2lnbmF0dXJlQnl0ZXMgPSBuZXcgU2VjcDI1NmsxU2lnbmF0dXJlKGZyb21IZXgoc2lnbmF0dXJlLnIpLCBmcm9tSGV4KHNpZ25hdHVyZS5zKSkudG9GaXhlZExlbmd0aCgpO1xuICAgIGNvbnN0IHN0ZFNpZ25hdHVyZSA9IGVuY29kZVNlY3AyNTZrMVNpZ25hdHVyZShmcm9tSGV4KHB1YmtleSksIHNpZ25hdHVyZUJ5dGVzKTtcbiAgICByZXR1cm4gVHhSYXcuZnJvbVBhcnRpYWwoe1xuICAgICAgYm9keUJ5dGVzOiBzaWduRG9jLmJvZHlCeXRlcyxcbiAgICAgIGF1dGhJbmZvQnl0ZXM6IHNpZ25Eb2MuYXV0aEluZm9CeXRlcyxcbiAgICAgIHNpZ25hdHVyZXM6IFtmcm9tQmFzZTY0KHN0ZFNpZ25hdHVyZS5zaWduYXR1cmUpXSxcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUJhc2U2NFNpZ25lZFR4Qnl0ZXNGcm9tU2lnbmVkVHhSYXcoc2lnbmVkVHhSYXc6IFR4UmF3KTogc3RyaW5nIHtcbiAgICBjb25zdCBzaWduZWRUeEJ5dGVzID0gVHhSYXcuZW5jb2RlKHNpZ25lZFR4UmF3KS5maW5pc2goKTtcbiAgICByZXR1cm4gdG9CYXNlNjQoc2lnbmVkVHhCeXRlcyk7XG4gIH1cbn1cblxuY29uc3QgdXRpbHMgPSBuZXcgVXRpbHMoKTtcblxuZXhwb3J0IGRlZmF1bHQgdXRpbHM7XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo/sdk-coin-atom",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "BitGo SDK coin library for Cosmos",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -40,15 +40,20 @@
|
|
|
40
40
|
]
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@bitgo/sdk-core": "^
|
|
44
|
-
"@bitgo/statics": "^14.
|
|
45
|
-
"@bitgo/utxo-lib": "^7.
|
|
43
|
+
"@bitgo/sdk-core": "^6.0.0",
|
|
44
|
+
"@bitgo/statics": "^14.2.0",
|
|
45
|
+
"@bitgo/utxo-lib": "^7.6.0",
|
|
46
46
|
"@cosmjs/amino": "^0.29.5",
|
|
47
|
-
"@cosmjs/
|
|
47
|
+
"@cosmjs/crypto": "^0.29.5",
|
|
48
|
+
"@cosmjs/encoding": "^0.29.5",
|
|
49
|
+
"@cosmjs/proto-signing": "^0.29.5",
|
|
50
|
+
"@cosmjs/stargate": "^0.29.5",
|
|
51
|
+
"bignumber.js": "^9.1.1",
|
|
52
|
+
"cosmjs-types": "^0.6.1"
|
|
48
53
|
},
|
|
49
54
|
"devDependencies": {
|
|
50
|
-
"@bitgo/sdk-api": "^1.9.
|
|
51
|
-
"@bitgo/sdk-test": "^1.2.
|
|
55
|
+
"@bitgo/sdk-api": "^1.9.8",
|
|
56
|
+
"@bitgo/sdk-test": "^1.2.13"
|
|
52
57
|
},
|
|
53
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "a9abe802593794596f2a53e4119416dafe1cd5e5"
|
|
54
59
|
}
|