@bitgo/sdk-coin-atom 1.1.1 → 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 CHANGED
@@ -3,6 +3,14 @@
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
+
6
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)
7
15
 
8
16
  **Note:** Version bump only for package @bitgo/sdk-coin-atom
@@ -1,4 +1,5 @@
1
- export * from './lib';
2
1
  export * from './atom';
3
2
  export * from './tatom';
3
+ export * from './lib';
4
+ export * from './register';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQXNCO0FBQ3RCLHlDQUF1QjtBQUN2QiwwQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYic7XG5leHBvcnQgKiBmcm9tICcuL2F0b20nO1xuZXhwb3J0ICogZnJvbSAnLi90YXRvbSc7XG4iXX0=
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSx1QkFBdUIsR0FBRyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgREVGQVVMVF9TRUVEX1NJWkVfQllURVMgPSAxNjtcbiJdfQ==
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=
@@ -1,3 +1,9 @@
1
- export * from './constants';
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,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
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"}
@@ -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 __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
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
- __exportStar(require("./constants"), exports);
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBNEI7QUFDNUIscUNBQW9DO0FBQTNCLGtHQUFBLE9BQU8sT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzJztcbmV4cG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuIl19
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.1.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": "^5.2.0",
44
- "@bitgo/statics": "^14.1.0",
45
- "@bitgo/utxo-lib": "^7.5.0",
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/encoding": "^0.29.5"
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.7",
51
- "@bitgo/sdk-test": "^1.2.12"
55
+ "@bitgo/sdk-api": "^1.9.8",
56
+ "@bitgo/sdk-test": "^1.2.13"
52
57
  },
53
- "gitHead": "79a7ef6259ef8e2e989240cf61c45b7f24f4ab40"
58
+ "gitHead": "a9abe802593794596f2a53e4119416dafe1cd5e5"
54
59
  }