@bitgo-beta/sdk-coin-atom 1.0.1-beta.8 → 1.0.1-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -2
- package/dist/src/lib/constants.d.ts +5 -0
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +8 -2
- package/dist/src/lib/iface.d.ts +31 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +3 -0
- package/dist/src/lib/index.d.ts +7 -1
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +25 -5
- package/dist/src/lib/transaction.d.ts +46 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +162 -0
- package/dist/src/lib/transactionBuilder.d.ts +76 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +212 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +29 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +59 -0
- package/dist/src/lib/transferBuilder.d.ts +8 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +15 -0
- package/dist/src/lib/utils.d.ts +85 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +191 -0
- package/package.json +12 -7
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -10,7 +10,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./lib"), exports);
|
|
14
13
|
__exportStar(require("./atom"), exports);
|
|
15
14
|
__exportStar(require("./tatom"), exports);
|
|
16
|
-
|
|
15
|
+
__exportStar(require("./lib"), exports);
|
|
16
|
+
__exportStar(require("./register"), exports);
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXVCO0FBQ3ZCLDBDQUF3QjtBQUN4Qix3Q0FBc0I7QUFDdEIsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdG9tJztcbmV4cG9ydCAqIGZyb20gJy4vdGF0b20nO1xuZXhwb3J0ICogZnJvbSAnLi9saWInO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlcic7XG4iXX0=
|
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
export declare const DEFAULT_SEED_SIZE_BYTES = 16;
|
|
2
|
+
export declare enum AtomTransactionType {
|
|
3
|
+
Pay = "Pay"
|
|
4
|
+
}
|
|
5
|
+
export declare const sendMsgType = "/cosmos.bank.v1beta1.MsgSend";
|
|
6
|
+
export declare const thetaTestnetChainId = "theta-testnet-001";
|
|
2
7
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,oBAAY,mBAAmB;IAC7B,GAAG,QAAQ;CACZ;AACD,eAAO,MAAM,WAAW,iCAAiC,CAAC;AAC1D,eAAO,MAAM,mBAAmB,sBAAsB,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_SEED_SIZE_BYTES = void 0;
|
|
3
|
+
exports.thetaTestnetChainId = exports.sendMsgType = exports.AtomTransactionType = exports.DEFAULT_SEED_SIZE_BYTES = void 0;
|
|
4
4
|
exports.DEFAULT_SEED_SIZE_BYTES = 16;
|
|
5
|
-
|
|
5
|
+
var AtomTransactionType;
|
|
6
|
+
(function (AtomTransactionType) {
|
|
7
|
+
AtomTransactionType["Pay"] = "Pay";
|
|
8
|
+
})(AtomTransactionType = exports.AtomTransactionType || (exports.AtomTransactionType = {}));
|
|
9
|
+
exports.sendMsgType = '/cosmos.bank.v1beta1.MsgSend';
|
|
10
|
+
exports.thetaTestnetChainId = 'theta-testnet-001';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFDMUMsSUFBWSxtQkFFWDtBQUZELFdBQVksbUJBQW1CO0lBQzdCLGtDQUFXLENBQUE7QUFDYixDQUFDLEVBRlcsbUJBQW1CLEdBQW5CLDJCQUFtQixLQUFuQiwyQkFBbUIsUUFFOUI7QUFDWSxRQUFBLFdBQVcsR0FBRyw4QkFBOEIsQ0FBQztBQUM3QyxRQUFBLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IERFRkFVTFRfU0VFRF9TSVpFX0JZVEVTID0gMTY7XG5leHBvcnQgZW51bSBBdG9tVHJhbnNhY3Rpb25UeXBlIHtcbiAgUGF5ID0gJ1BheScsXG59XG5leHBvcnQgY29uc3Qgc2VuZE1zZ1R5cGUgPSAnL2Nvc21vcy5iYW5rLnYxYmV0YTEuTXNnU2VuZCc7XG5leHBvcnQgY29uc3QgdGhldGFUZXN0bmV0Q2hhaW5JZCA9ICd0aGV0YS10ZXN0bmV0LTAwMSc7XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { TransactionExplanation as BaseTransactionExplanation, TransactionType } from '@bitgo-beta/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,sBAAsB,CAAC;AAC7G,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBDb2luLCBTaWduZXJEYXRhIH0gZnJvbSAnQGNvc21qcy9zdGFyZ2F0ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VEYXRhIHtcbiAgdHlwZVVybDogc3RyaW5nO1xuICB2YWx1ZToge1xuICAgIGZyb21BZGRyZXNzOiBzdHJpbmc7XG4gICAgdG9BZGRyZXNzOiBzdHJpbmc7XG4gICAgYW1vdW50OiBDb2luW107XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2FzRmVlTGltaXREYXRhIHtcbiAgYW1vdW50OiBDb2luW107XG4gIGdhczogbnVtYmVyOyAvLyBnYXMgbGltaXRcbn1cblxuLyoqXG4gKiBUaGUgdHJhbnNhY3Rpb24gZGF0YSByZXR1cm5lZCBmcm9tIHRoZSB0b0pzb24oKSBmdW5jdGlvbiBvZiBhIHRyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHhEYXRhIGV4dGVuZHMgQXRvbVRyYW5zYWN0aW9uIHtcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXRvbVRyYW5zYWN0aW9uIHtcbiAgdHlwZTogc3RyaW5nO1xuICBzaWduZXJBZGRyZXNzOiBzdHJpbmc7XG4gIGV4cGxpY2l0U2lnbmVyRGF0YTogU2lnbmVyRGF0YTtcbiAgc2VuZE1lc3NhZ2VzOiBNZXNzYWdlRGF0YVtdO1xuICBnYXNCdWRnZXQ6IEdhc0ZlZUxpbWl0RGF0YTtcbn1cbiJdfQ==
|
package/dist/src/lib/index.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import * as Utils from './utils';
|
|
2
|
+
import * as Interface from './iface';
|
|
2
3
|
export { KeyPair } from './keyPair';
|
|
4
|
+
export { Transaction } from './transaction';
|
|
5
|
+
export { TransactionBuilder } from './transactionBuilder';
|
|
6
|
+
export { TransferBuilder } from './transferBuilder';
|
|
7
|
+
export { TransactionBuilderFactory } from './transactionBuilderFactory';
|
|
8
|
+
export { Interface, Utils };
|
|
3
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC"}
|
package/dist/src/lib/index.js
CHANGED
|
@@ -6,12 +6,32 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
6
6
|
if (k2 === undefined) k2 = k;
|
|
7
7
|
o[k2] = m[k];
|
|
8
8
|
}));
|
|
9
|
-
var
|
|
10
|
-
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
11
20
|
};
|
|
12
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.KeyPair = void 0;
|
|
14
|
-
|
|
22
|
+
exports.Utils = exports.Interface = exports.TransactionBuilderFactory = exports.TransferBuilder = exports.TransactionBuilder = exports.Transaction = exports.KeyPair = void 0;
|
|
23
|
+
const Utils = __importStar(require("./utils"));
|
|
24
|
+
exports.Utils = Utils;
|
|
25
|
+
const Interface = __importStar(require("./iface"));
|
|
26
|
+
exports.Interface = Interface;
|
|
15
27
|
var keyPair_1 = require("./keyPair");
|
|
16
28
|
Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
|
|
17
|
-
|
|
29
|
+
var transaction_1 = require("./transaction");
|
|
30
|
+
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
|
|
31
|
+
var transactionBuilder_1 = require("./transactionBuilder");
|
|
32
|
+
Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
|
|
33
|
+
var transferBuilder_1 = require("./transferBuilder");
|
|
34
|
+
Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
|
|
35
|
+
var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
|
|
36
|
+
Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFRYixzQkFBSztBQVB6QixtREFBcUM7QUFPNUIsOEJBQVM7QUFMbEIscUNBQW9DO0FBQTNCLGtHQUFBLE9BQU8sT0FBQTtBQUNoQiw2Q0FBNEM7QUFBbkMsMEdBQUEsV0FBVyxPQUFBO0FBQ3BCLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQixxREFBb0Q7QUFBM0Msa0hBQUEsZUFBZSxPQUFBO0FBQ3hCLHlFQUF3RTtBQUEvRCxzSUFBQSx5QkFBeUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICogYXMgSW50ZXJmYWNlIGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5JztcbmV4cG9ydCB7IEludGVyZmFjZSwgVXRpbHMgfTtcbiJdfQ==
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { BaseKey, BaseTransaction, PublicKey as BasePublicKey, Signature, TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { AtomTransaction, TransactionExplanation, TxData } from './iface';
|
|
4
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/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,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAO7D,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-beta/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVM4QjtBQUc5QixtQ0FBZ0M7QUFDaEMsMkNBQStEO0FBQy9ELG9EQUE0QjtBQUM1Qix5REFBb0U7QUFDcEUseUNBQXNEO0FBRXRELE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBSTlDLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQW1CO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixJQUFJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLElBQUksa0JBQWtCLENBQUM7SUFDeEMsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUF3QixFQUFFLFNBQWlCO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDeEQ7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzFCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ2pDLE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDWixJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUk7WUFDYixhQUFhLEVBQUUsRUFBRSxDQUFDLGFBQWE7WUFDL0Isa0JBQWtCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQjtZQUN6QyxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVk7WUFDN0IsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTO1NBQ3hCLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQjtRQUNoQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2RyxNQUFNLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1FBRTNDLE1BQU0saUJBQWlCLEdBQTJCO1lBQ2hELFlBQVk7WUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxPQUFPO1lBQ1AsWUFBWSxFQUFFLEdBQUc7WUFDakIsYUFBYSxFQUFFLEVBQUU7WUFDakIsWUFBWSxFQUFFLEdBQUc7WUFDakIsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzRCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztRQUVGLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixLQUFLLDBCQUFlLENBQUMsSUFBSTtnQkFDdkIsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDcEU7Z0JBQ0UsTUFBTSxJQUFJLGtDQUF1QixDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDdkU7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGVBQWUsQ0FBQyxlQUFnQztRQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLGNBQXNCO1FBQ3ZDLElBQUk7WUFDRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLDBCQUEwQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQWUsQ0FBQyxJQUFJLENBQUM7U0FDbkM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sTUFBTSxHQUFHLDRCQUFZLENBQ3pCLDZCQUFxQixDQUFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQzlFLENBQUM7UUFDdkIsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckYsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsMkNBQTJDO1lBQzNDLE1BQU0sYUFBYSxHQUFHLDZCQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0MsTUFBTSxtQkFBbUIsR0FBRyxlQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9DO1FBQ0QscUZBQXFGO1FBQ3JGLE1BQU0sV0FBVyxHQUFHLGVBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRixPQUFPLGVBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEtBQWE7UUFDN0MsTUFBTSxTQUFTLEdBQUcsZUFBSyxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELElBQUksSUFBeUIsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekQsSUFBSSxPQUFPLEtBQUssdUJBQVcsRUFBRTtZQUMzQixJQUFJLEdBQUcsK0JBQW1CLENBQUMsR0FBRyxDQUFDO1NBQ2hDO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsTUFBTSxlQUFlLEdBQUcsZUFBSyxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sa0JBQWtCLEdBQUcsZUFBSyxDQUFDLGtDQUFrQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sU0FBUyxHQUFHLGVBQUssQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RCxPQUFPO1lBQ0wsSUFBSTtZQUNKLFlBQVksRUFBRSxlQUFlO1lBQzdCLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVc7WUFDbkQsU0FBUztZQUNULGtCQUFrQjtTQUNuQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILDBCQUEwQixDQUFDLElBQVksRUFBRSxpQkFBeUM7UUFDaEYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNsRixNQUFNLE9BQU8sR0FBMkI7WUFDdEM7Z0JBQ0UsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVM7Z0JBQzlELE1BQU0sRUFBRSxZQUFZO2FBQ3JCO1NBQ0YsQ0FBQztRQUNGLE9BQU87WUFDTCxHQUFHLGlCQUFpQjtZQUNwQixZQUFZO1lBQ1osT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF0S0Qsa0NBc0tDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgU2lnbmF0dXJlLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBBdG9tVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sIFR4RGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IEF0b21UcmFuc2FjdGlvblR5cGUsIHNlbmRNc2dUeXBlIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZW5jb2RlUHVia2V5LCBtYWtlU2lnbkJ5dGVzIH0gZnJvbSAnQGNvc21qcy9wcm90by1zaWduaW5nJztcbmltcG9ydCB7IGVuY29kZVNlY3AyNTZrMVB1YmtleSB9IGZyb20gJ0Bjb3NtanMvYW1pbm8nO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9hdG9tVHJhbnNhY3Rpb246IEF0b21UcmFuc2FjdGlvbjtcbiAgcHJpdmF0ZSBfc2lnbmF0dXJlOiBTaWduYXR1cmU7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IGF0b21UcmFuc2FjdGlvbigpOiBBdG9tVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9hdG9tVHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXRBdG9tVHJhbnNhY3Rpb24odHg6IEF0b21UcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX2F0b21UcmFuc2FjdGlvbiA9IHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5faWQgfHwgJ1VOQVZBSUxBQkxFX1RFWFQnO1xuICB9XG5cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0geyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9O1xuICAgIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICBnZXQgYXRvbVNpZ25hdHVyZSgpOiBTaWduYXR1cmUge1xuICAgIHJldHVybiB0aGlzLl9zaWduYXR1cmU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fYXRvbVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fYXRvbVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCB0eCA9IHRoaXMuX2F0b21UcmFuc2FjdGlvbjtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuX2lkLFxuICAgICAgdHlwZTogdHgudHlwZSxcbiAgICAgIHNpZ25lckFkZHJlc3M6IHR4LnNpZ25lckFkZHJlc3MsXG4gICAgICBleHBsaWNpdFNpZ25lckRhdGE6IHR4LmV4cGxpY2l0U2lnbmVyRGF0YSxcbiAgICAgIHNlbmRNZXNzYWdlczogdHguc2VuZE1lc3NhZ2VzLFxuICAgICAgZ2FzQnVkZ2V0OiB0eC5nYXNCdWRnZXQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy50b0pzb24oKTtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbJ2lkJywgJ291dHB1dHMnLCAnb3V0cHV0QW1vdW50JywgJ2NoYW5nZU91dHB1dHMnLCAnY2hhbmdlQW1vdW50JywgJ2ZlZScsICd0eXBlJ107XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIG91dHB1dHMsXG4gICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBmZWU6IHsgZmVlOiB0aGlzLmF0b21UcmFuc2FjdGlvbi5nYXNCdWRnZXQuZ2FzLnRvU3RyaW5nKCkgfSwgLy8gVE9ETyAtIGV4cGxvcmUgdGhlIGZlZSBleHBsYW5hdGlvbiBtb3JlLCBkbyB3ZSBuZWVkIHRvIHNob3cgbGltaXQgb3IgYmFzZSBhbW91bnRcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGxhaW5UcmFuc2ZlclRyYW5zYWN0aW9uKHJlc3VsdCwgZXhwbGFuYXRpb25SZXN1bHQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIHBheWxvYWRcbiAgICpcbiAgICogQHBhcmFtIHJhd1RyYW5zYWN0aW9uXG4gICAqL1xuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLl9hdG9tVHJhbnNhY3Rpb24gPSBUcmFuc2FjdGlvbi5kZXNlcmlhbGl6ZUF0b21UcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwdWJrZXkgPSBlbmNvZGVQdWJrZXkoXG4gICAgICBlbmNvZGVTZWNwMjU2azFQdWJrZXkoQnVmZmVyLmZyb20odGhpcy5fYXRvbVRyYW5zYWN0aW9uLnNlbmRNZXNzYWdlc1swXS52YWx1ZS5mcm9tQWRkcmVzcywgJ2hleCcpKVxuICAgICkgYXMgdW5rbm93biBhcyBzdHJpbmc7XG4gICAgY29uc3Qgc2lnbkRvYyA9IHV0aWxzLmNyZWF0ZVNpZ25Eb2NGcm9tQXRvbVRyYW5zYWN0aW9uKHB1YmtleSwgdGhpcy5hdG9tVHJhbnNhY3Rpb24pO1xuICAgIGlmICghdGhpcy5fc2lnbmF0dXJlKSB7XG4gICAgICAvLyBubyBzaWduYXR1cmUgeWV0LCBnZXQgdGhlIHNpZ25hYmxlIGJ5dGVzXG4gICAgICBjb25zdCBzaWduYWJsZUJ5dGVzID0gbWFrZVNpZ25CeXRlcyhzaWduRG9jKTtcbiAgICAgIGNvbnN0IHNpZ25hYmxlQnl0ZXNCdWZmZXIgPSBCdWZmZXIuZnJvbShzaWduYWJsZUJ5dGVzKTtcbiAgICAgIHJldHVybiBzaWduYWJsZUJ5dGVzQnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICB9XG4gICAgLy8gSWYgd2UgZG8gaGF2ZSBzaWduYXR1cmVzLCBhZGQgdGhlbSBhbmQgcmV0dXJuIHRoZSBiYXNlNjQgc2VyaWFsaXplZCBzaWduZWQgdHggZGF0YVxuICAgIGNvbnN0IHNpZ25lZFJhd1R4ID0gdXRpbHMuY3JlYXRlU2lnbmVkVHhSYXcocHVia2V5LCBzaWduRG9jLCB0aGlzLnNpZ25hdHVyZVswXSk7XG4gICAgcmV0dXJuIHV0aWxzLmNyZWF0ZUJhc2U2NFNpZ25lZFR4Qnl0ZXNGcm9tU2lnbmVkVHhSYXcoc2lnbmVkUmF3VHgpO1xuICB9XG5cbiAgc3RhdGljIGRlc2VyaWFsaXplQXRvbVRyYW5zYWN0aW9uKHJhd1R4OiBzdHJpbmcpOiBBdG9tVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IGRlY29kZWRUeCA9IHV0aWxzLmdldERlY29kZWRUeEZyb21SYXdCYXNlNjQocmF3VHgpO1xuICAgIGxldCB0eXBlOiBBdG9tVHJhbnNhY3Rpb25UeXBlO1xuICAgIGNvbnN0IHR5cGVVcmwgPSB1dGlscy5nZXRUeXBlVXJsRnJvbURlY29kZWRUeChkZWNvZGVkVHgpO1xuICAgIGlmICh0eXBlVXJsID09PSBzZW5kTXNnVHlwZSkge1xuICAgICAgdHlwZSA9IEF0b21UcmFuc2FjdGlvblR5cGUuUGF5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZDogJyArIHR5cGVVcmwpO1xuICAgIH1cbiAgICBjb25zdCBzZW5kTWVzc2FnZURhdGEgPSB1dGlscy5nZXRNZXNzYWdlRGF0YUZyb21EZWNvZGVkVHgoZGVjb2RlZFR4KTtcbiAgICBjb25zdCBleHBsaWNpdFNpZ25lckRhdGEgPSB1dGlscy5nZXRFeHBsaWNpdFNpZ25lckRhdGFGcm9tRGVjb2RlZFR4KGRlY29kZWRUeCk7XG4gICAgY29uc3QgZ2FzQnVkZ2V0ID0gdXRpbHMuZ2V0R2FzQnVkZ2V0RnJvbURlY29kZWRUeChkZWNvZGVkVHgpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlLFxuICAgICAgc2VuZE1lc3NhZ2VzOiBzZW5kTWVzc2FnZURhdGEsXG4gICAgICBzaWduZXJBZGRyZXNzOiBzZW5kTWVzc2FnZURhdGFbMF0udmFsdWUuZnJvbUFkZHJlc3MsXG4gICAgICBnYXNCdWRnZXQsXG4gICAgICBleHBsaWNpdFNpZ25lckRhdGEsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY29tcGxldGUgZXhwbGFuYXRpb24gZm9yIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb25cbiAgICogQ3VycmVudGx5IG9ubHkgc3VwcG9ydHMgb25lIG1lc3NhZ2UgcGVyIHRyYW5zZmVyLlxuICAgKiBAcGFyYW0ge1R4RGF0YX0ganNvbiBUaGUgdHJhbnNhY3Rpb24gZGF0YSBpbiBqc29uIGZvcm1hdFxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uRXhwbGFuYXRpb259IGV4cGxhbmF0aW9uUmVzdWx0IFRoZSB0cmFuc2FjdGlvbiBleHBsYW5hdGlvbiB0byBiZSBjb21wbGV0ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uRXhwbGFuYXRpb259XG4gICAqL1xuICBleHBsYWluVHJhbnNmZXJUcmFuc2FjdGlvbihqc29uOiBUeERhdGEsIGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gdGhpcy5fYXRvbVRyYW5zYWN0aW9uLnNlbmRNZXNzYWdlc1swXS52YWx1ZS5hbW91bnRbMF0uYW1vdW50O1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHRoaXMuX2F0b21UcmFuc2FjdGlvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUudG9BZGRyZXNzLFxuICAgICAgICBhbW91bnQ6IG91dHB1dEFtb3VudCxcbiAgICAgIH0sXG4gICAgXTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZXhwbGFuYXRpb25SZXN1bHQsXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBvdXRwdXRzLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { BaseAddress, BaseKey, BaseTransactionBuilder, PublicKey as BasePublicKey, TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
import BigNumber from 'bignumber.js';
|
|
5
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/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,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,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-beta/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBUzhCO0FBQzlCLCtDQUE0QztBQUM1QyxvREFBNEI7QUFHNUIsb0RBQTRCO0FBSTVCLE1BQXNCLGtCQUFtQixTQUFRLGlDQUFzQjtJQVVyRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQVRiLGdCQUFXLEdBQWdCLEVBQUUsQ0FBQztRQVVwQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBUUQsa0JBQWtCO0lBQ2xCLElBQWMsV0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFjLFdBQVcsQ0FBQyxXQUF3QjtRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsR0FBWTtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZLENBQUMsU0FBd0IsRUFBRSxTQUFpQjtRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLENBQUMsSUFBWTtRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxhQUFhLENBQUMsYUFBcUI7UUFDakMsSUFBSSxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDeEMsTUFB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Q0FBcUIsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1NBQ2pGO0lBQ0gsQ0FBQztDQUNGO0FBOU9ELGdEQThPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VBZGRyZXNzLFxuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgUHVibGljS2V5IGFzIEJhc2VQdWJsaWNLZXksXG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgQXRvbVRyYW5zYWN0aW9uLCBHYXNGZWVMaW1pdERhdGEsIE1lc3NhZ2VEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBDb2luLCBTaWduZXJEYXRhIH0gZnJvbSAnQGNvc21qcy9zdGFyZ2F0ZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX3NpZ25hdHVyZXM6IFNpZ25hdHVyZVtdID0gW107XG5cbiAgcHJvdGVjdGVkIF90eXBlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfc2lnbmVyQWRkcmVzczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2V4cGxpY2l0U2lnbmVyRGF0YTogU2lnbmVyRGF0YTtcbiAgcHJvdGVjdGVkIF9zZW5kTWVzc2FnZXM6IE1lc3NhZ2VEYXRhW107XG4gIHByb3RlY3RlZCBfZ2FzQnVkZ2V0OiBHYXNGZWVMaW1pdERhdGE7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8vIGdldCBhbmQgc2V0IHJlZ2lvblxuICAvKipcbiAgICogVGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGU7XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IEJhc2VQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHsgcHVibGljS2V5LCBzaWduYXR1cmUgfSk7XG4gIH1cblxuICB0eXBlKHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNpZ25lckFkZHJlc3Mgb2YgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICogVGhpcyBhY2NvdW50IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHBheWluZyB0cmFuc2FjdGlvbiBmZWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmVyQWRkcmVzcyB0aGUgYWNjb3VudCB0aGF0IGlzIHNlbmRpbmcgdGhpcyB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHNpZ25lckFkZHJlc3Moc2lnbmVyQWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkQWRkcmVzcyhzaWduZXJBZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbkJ1aWxkZXI6IHNlbmRlciBpc1ZhbGlkQWRkcmVzcyBjaGVjayBmYWlsZWQnKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmVyQWRkcmVzcyA9IHNpZ25lckFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnYXNCdWRnZXQoZ2FzQnVkZ2V0OiBHYXNGZWVMaW1pdERhdGEpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlR2FzQnVkZ2V0KGdhc0J1ZGdldCk7XG4gICAgdGhpcy5fZ2FzQnVkZ2V0ID0gZ2FzQnVkZ2V0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7U2lnbmVyRGF0YX0gZXhwbGl0aWNTaWduZXJEYXRhIHNpZ25lciBkYXRhOiB7YWNjb3VudE51bWJlciwgc2VxdWVuY2UsIGNoYWluSWR9XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgZXhwbGl0aWNTaWduZXJEYXRhKGV4cGxpY2l0U2lnbmVyRGF0YTogU2lnbmVyRGF0YSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVTaWduZXJEYXRhKGV4cGxpY2l0U2lnbmVyRGF0YSk7XG4gICAgdGhpcy5fZXhwbGljaXRTaWduZXJEYXRhID0gZXhwbGljaXRTaWduZXJEYXRhO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2VuZE1lc3NhZ2VzKHNlbmRNZXNzYWdlczogTWVzc2FnZURhdGFbXSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVNZXNzYWdlRGF0YUFycmF5KHNlbmRNZXNzYWdlcyk7XG4gICAgdGhpcy5fc2VuZE1lc3NhZ2VzID0gc2VuZE1lc3NhZ2VzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG4gICAgY29uc3QgdHhEYXRhID0gdHgudG9Kc29uKCk7XG4gICAgdGhpcy50eXBlKHR4RGF0YS50eXBlKTtcbiAgICB0aGlzLmdhc0J1ZGdldCh0eERhdGEuZ2FzQnVkZ2V0KTtcbiAgICB0aGlzLnNpZ25lckFkZHJlc3ModHhEYXRhLnNpZ25lckFkZHJlc3MpO1xuICAgIHRoaXMuc2VuZE1lc3NhZ2VzKHR4RGF0YS5zZW5kTWVzc2FnZXMpO1xuICAgIHRoaXMuZ2FzQnVkZ2V0KHR4RGF0YS5nYXNCdWRnZXQpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHR4LmZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdGhpcy5pbml0QnVpbGRlcih0eCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0QXRvbVRyYW5zYWN0aW9uKHRoaXMuYnVpbGRBdG9tVHJhbnNhY3Rpb24oKSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkQXRvbVRyYW5zYWN0aW9uKCk6IEF0b21UcmFuc2FjdGlvbiB7XG4gICAgYXNzZXJ0KHRoaXMuX3R5cGUsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3R5cGUgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9zaWduZXJBZGRyZXNzLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdzaWduZXJBZGRyZXNzIGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpKTtcbiAgICBhc3NlcnQodGhpcy5fZXhwbGljaXRTaWduZXJEYXRhLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdleHBsaWNpdFNpZ25lckRhdGEgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9zZW5kTWVzc2FnZXMsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3NlbmRNZXNzYWdlcyBhcmUgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9nYXNCdWRnZXQsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ2dhc1ByaWNlIGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB0aGlzLl90eXBlLFxuICAgICAgc2lnbmVyQWRkcmVzczogdGhpcy5fc2lnbmVyQWRkcmVzcyxcbiAgICAgIGV4cGxpY2l0U2lnbmVyRGF0YTogdGhpcy5fZXhwbGljaXRTaWduZXJEYXRhLFxuICAgICAgc2VuZE1lc3NhZ2VzOiB0aGlzLl9zZW5kTWVzc2FnZXMsXG4gICAgICBnYXNCdWRnZXQ6IHRoaXMuX2dhc0J1ZGdldCxcbiAgICB9O1xuICB9XG5cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IEJhc2VBZGRyZXNzLCBhZGRyZXNzRm9ybWF0Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcigndmFsaWRhdGVBZGRyZXNzIG1ldGhvZCBub3QgeWV0IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQW1vdW50RGF0YShhbW91bnRBcnJheTogQ29pbltdKTogdm9pZCB7XG4gICAgLy8gVE9ETyAtIG1ha2UgdGhlIGVycm9yIG1lc3NhZ2VzIG1vcmUgZGVzY3JpcHRpdmUgb2Ygd2hpY2ggYW1vdW50IGRhdGEgaXMgZmFpbGluZ1xuICAgIC8vIERvIGFtb3VudCBjaGVja2luZyBieSBjYXN0aW5nIHRvIG51bWJlcnMvYmlnbnVtYmVyIGFuZCBjb21wYXJpbmcgYXMgd2VsbFxuICAgIGZvciAoY29uc3QgYW1vdW50IG9mIGFtb3VudEFycmF5KSB7XG4gICAgICBpZiAoIWFtb3VudC5hbW91bnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhbW91bnQ6IHVuZGVmaW5lZCcpO1xuICAgICAgfVxuICAgICAgaWYgKCFhbW91bnQuZGVub20pIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBkZW5vbTogdW5kZWZpbmVkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVHYXNCdWRnZXQoZ2FzQnVkZ2V0OiBHYXNGZWVMaW1pdERhdGEpOiB2b2lkIHtcbiAgICBpZiAoZ2FzQnVkZ2V0LmdhcyA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGdhcyBsaW1pdCAnICsgZ2FzQnVkZ2V0Lmdhcyk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVBbW91bnREYXRhKGdhc0J1ZGdldC5hbW91bnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU1lc3NhZ2VEYXRhQXJyYXkoc2VuZE1lc3NhZ2VzOiBNZXNzYWdlRGF0YVtdKSB7XG4gICAgZm9yIChjb25zdCBtc2cgb2Ygc2VuZE1lc3NhZ2VzKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlTWVzc2FnZURhdGEobXNnKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZU1lc3NhZ2VEYXRhKG1lc3NhZ2VEYXRhOiBNZXNzYWdlRGF0YSk6IHZvaWQge1xuICAgIGlmICghbWVzc2FnZURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgTWVzc2FnZURhdGE6IHVuZGVmaW5lZGApO1xuICAgIH1cbiAgICBpZiAoIW1lc3NhZ2VEYXRhLnR5cGVVcmwpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgTWVzc2FnZURhdGEgdHlwZXVybDogYCArIG1lc3NhZ2VEYXRhLnR5cGVVcmwpO1xuICAgIH1cbiAgICBpZiAoIW1lc3NhZ2VEYXRhLnZhbHVlLnRvQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBNZXNzYWdlRGF0YSB2YWx1ZS50b0FkZHJlc3M6IGAgKyBtZXNzYWdlRGF0YS52YWx1ZS50b0FkZHJlc3MpO1xuICAgIH1cbiAgICBpZiAoIW1lc3NhZ2VEYXRhLnZhbHVlLmZyb21BZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIE1lc3NhZ2VEYXRhIHZhbHVlLmZyb21BZGRyZXNzOiBgICsgbWVzc2FnZURhdGEudmFsdWUuZnJvbUFkZHJlc3MpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlQW1vdW50RGF0YShtZXNzYWdlRGF0YS52YWx1ZS5hbW91bnQpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbjogVW5kZWZpbmVkJyk7XG4gICAgfVxuICAgIGlmICghdXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRyYW5zYWN0aW9uLmF0b21UcmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlVHJhbnNhY3Rpb25GaWVsZHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYWxsIGZpZWxkcyBhcmUgZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVRyYW5zYWN0aW9uRmllbGRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90eXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgdHlwZScpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc2lnbmVyQWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHNpZ25lckFkZHJlc3MnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2V4cGxpY2l0U2lnbmVyRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGV4cGxpY2l0U2lnbmVyRGF0YScpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc2VuZE1lc3NhZ2VzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgc2VuZE1lc3NhZ2VzJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9nYXNCdWRnZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBnYXMgYnVkZ2V0IGRhdGEnKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVTaWduZXJEYXRhKGV4cGxpY2l0U2lnbmVyRGF0YTogU2lnbmVyRGF0YSkge1xuICAgIGlmICghZXhwbGljaXRTaWduZXJEYXRhLmNoYWluSWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgZXhwbGljaXRTaWduZXJEYXRhOiBtaXNzaW5nIGNoYWluSWQnKTtcbiAgICB9XG4gICAgaWYgKCFleHBsaWNpdFNpZ25lckRhdGEuYWNjb3VudE51bWJlcikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBleHBsaWNpdFNpZ25lckRhdGE6IG1pc3NpbmcgYWNjb3VudE51bWJlcicpO1xuICAgIH1cbiAgICBpZiAoIWV4cGxpY2l0U2lnbmVyRGF0YS5zZXF1ZW5jZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBleHBsaWNpdFNpZ25lckRhdGE6IG1pc3Npbmcgc2VxdWVuY2UnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { BaseTransactionBuilderFactory } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
3
|
+
import { TransferBuilder } from './transferBuilder';
|
|
4
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/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,sBAAsB,CAAC;AAC/G,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,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-beta/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBK0c7QUFFL0csdURBQW9EO0FBRXBELCtDQUE0QztBQUU1QyxNQUFhLHlCQUEwQixTQUFRLHdDQUE2QjtJQUMxRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFXO1FBQ2QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUk7WUFDRixRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2YsS0FBSywwQkFBZSxDQUFDLElBQUk7b0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQztvQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUM1RDtTQUNGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLENBQUMsQ0FBQztTQUNUO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0IsQ0FBQyxFQUFnQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsOEJBQThCO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssaUJBQWlCLENBQStCLEVBQTJCLEVBQUUsT0FBVTtRQUM3RixJQUFJLEVBQUUsRUFBRTtZQUNOLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDekI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQixDQUFDLGNBQXNCO1FBQzdDLE1BQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGO0FBdERELDhEQXNEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tKHJhdzogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICBjb25zdCB0eCA9IHRoaXMucGFyc2VUcmFuc2FjdGlvbihyYXcpO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2ZlckJ1aWxkZXIodHgpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFRyYW5zZmVyQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBidWlsZGVyIHdpdGggdGhlIGdpdmVuIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb24gfCB1bmRlZmluZWR9IHR4IC0gdGhlIHRyYW5zYWN0aW9uIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgYnVpbGRlclxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uQnVpbGRlcn0gYnVpbGRlciAtIHRoZSBidWlsZGVyIHRvIGJlIGluaXRpYWxpemVkXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IHRoZSBidWlsZGVyIGluaXRpYWxpemVkXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVCdWlsZGVyPFQgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXI+KHR4OiBUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZCwgYnVpbGRlcjogVCk6IFQge1xuICAgIGlmICh0eCkge1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgfVxuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG5cbiAgLyoqIFBhcnNlIHRoZSB0cmFuc2FjdGlvbiBmcm9tIGEgcmF3IHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByYXdUcmFuc2FjdGlvbiAtIHRoZSByYXcgdHhcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9ufSBwYXJzZWR0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICByZXR1cm4gdHg7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { TransactionType } from '@bitgo-beta/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,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,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-beta/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQTBEO0FBRTFELG1EQUF1RDtBQUV2RCxNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBQ3JELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUFSRCwwQ0FRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { BaseUtils } from '@bitgo-beta/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
|
+
/**
|
|
18
|
+
* Checks if raw transaction can be deserialized
|
|
19
|
+
*
|
|
20
|
+
* @param {string} rawTransaction - transaction in base64 string format
|
|
21
|
+
* @returns {boolean} - the validation result
|
|
22
|
+
*/
|
|
23
|
+
isValidRawTransaction(rawTransaction: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Check the raw transaction has a valid format in the blockchain context, throw otherwise.
|
|
26
|
+
*
|
|
27
|
+
* @param {string} rawTransaction - Transaction in base64 string format
|
|
28
|
+
*/
|
|
29
|
+
validateRawTransaction(rawTransaction: string): void;
|
|
30
|
+
isValidAddress(address: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Returns whether or not the string is a valid amount
|
|
33
|
+
*
|
|
34
|
+
* @param {number[]} amounts - the amounts to validate
|
|
35
|
+
* @returns {boolean} - the validation result
|
|
36
|
+
*/
|
|
37
|
+
isValidAmounts(amounts: number[]): boolean;
|
|
38
|
+
isValidAmount(amount: number): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Decodes raw tx data into messages, signing info, and fee data
|
|
41
|
+
* @param txHex - raw base64 tx
|
|
42
|
+
*/
|
|
43
|
+
getDecodedTxFromRawBase64(txRaw: string): DecodedTxRaw;
|
|
44
|
+
/**
|
|
45
|
+
* Returns the array of messages in the body of the decoded transaction
|
|
46
|
+
* @param decodedTx
|
|
47
|
+
*/
|
|
48
|
+
private getEncodedMessagesFromDecodedTx;
|
|
49
|
+
/**
|
|
50
|
+
* Arranges a decoded message into our MessageData value interface
|
|
51
|
+
* @param decodedMessage
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
private getMessageValueDataFromDecodedMessage;
|
|
55
|
+
/**
|
|
56
|
+
* Returns an array of MessageData[] from an encoded messages array
|
|
57
|
+
* @param encodedMessages
|
|
58
|
+
* @private
|
|
59
|
+
*/
|
|
60
|
+
private getMessageDataFromEncodedMessages;
|
|
61
|
+
/**
|
|
62
|
+
* Pulls the sequence number from a DecodedTxRaw AuthInfo property
|
|
63
|
+
* @param decodedTx
|
|
64
|
+
* @private
|
|
65
|
+
*/
|
|
66
|
+
private getSequenceFromDecodedTx;
|
|
67
|
+
/**
|
|
68
|
+
* Pulls the typeUrl from the encoded message of a DecodedTxRaw
|
|
69
|
+
* @param decodedTx
|
|
70
|
+
*/
|
|
71
|
+
getTypeUrlFromDecodedTx(decodedTx: DecodedTxRaw): string;
|
|
72
|
+
getGasBudgetFromDecodedTx(decodedTx: DecodedTxRaw): GasFeeLimitData;
|
|
73
|
+
getExplicitSignerDataFromDecodedTx(decodedTx: DecodedTxRaw): SignerData;
|
|
74
|
+
/**
|
|
75
|
+
* Returns the array of MessageData[] from the decoded transaction
|
|
76
|
+
* @param decodedTx
|
|
77
|
+
*/
|
|
78
|
+
getMessageDataFromDecodedTx(decodedTx: DecodedTxRaw): MessageData[];
|
|
79
|
+
createSignDocFromAtomTransaction(pubkey: any, atomTransaction: AtomTransaction): import("cosmjs-types/cosmos/tx/v1beta1/tx").SignDoc;
|
|
80
|
+
createSignedTxRaw(pubkey: string, signDoc: SignDoc, signature: any): TxRaw;
|
|
81
|
+
createBase64SignedTxBytesFromSignedTxRaw(signedTxRaw: TxRaw): string;
|
|
82
|
+
}
|
|
83
|
+
declare const utils: Utils;
|
|
84
|
+
export default utils;
|
|
85
|
+
//# 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,sBAAsB,CAAC;AAIxE,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;;;;;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,191 @@
|
|
|
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-beta/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
|
+
throw new Error('Method not implemented.');
|
|
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
|
+
throw new Error('Method not implemented.');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Checks if raw transaction can be deserialized
|
|
39
|
+
*
|
|
40
|
+
* @param {string} rawTransaction - transaction in base64 string format
|
|
41
|
+
* @returns {boolean} - the validation result
|
|
42
|
+
*/
|
|
43
|
+
isValidRawTransaction(rawTransaction) {
|
|
44
|
+
throw new Error('Method not implemented.');
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check the raw transaction has a valid format in the blockchain context, throw otherwise.
|
|
48
|
+
*
|
|
49
|
+
* @param {string} rawTransaction - Transaction in base64 string format
|
|
50
|
+
*/
|
|
51
|
+
validateRawTransaction(rawTransaction) {
|
|
52
|
+
if (!rawTransaction) {
|
|
53
|
+
throw new sdk_core_1.ParseTransactionError('Invalid raw transaction: Undefined');
|
|
54
|
+
}
|
|
55
|
+
if (!this.isValidRawTransaction(rawTransaction)) {
|
|
56
|
+
throw new sdk_core_1.ParseTransactionError('Invalid raw transaction');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
isValidAddress(address) {
|
|
60
|
+
const allowed_chars = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';
|
|
61
|
+
const atomRegex = '^(cosmos)1([' + allowed_chars + ']+)$';
|
|
62
|
+
const re = new RegExp(atomRegex);
|
|
63
|
+
return re.test(address);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Returns whether or not the string is a valid amount
|
|
67
|
+
*
|
|
68
|
+
* @param {number[]} amounts - the amounts to validate
|
|
69
|
+
* @returns {boolean} - the validation result
|
|
70
|
+
*/
|
|
71
|
+
isValidAmounts(amounts) {
|
|
72
|
+
for (const amount of amounts) {
|
|
73
|
+
if (!this.isValidAmount(amount)) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
isValidAmount(amount) {
|
|
80
|
+
const bigNumberAmount = new bignumber_js_1.default(amount);
|
|
81
|
+
if (!bigNumberAmount.isInteger() || bigNumberAmount.isLessThanOrEqualTo(0)) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Decodes raw tx data into messages, signing info, and fee data
|
|
88
|
+
* @param txHex - raw base64 tx
|
|
89
|
+
*/
|
|
90
|
+
getDecodedTxFromRawBase64(txRaw) {
|
|
91
|
+
return proto_signing_1.decodeTxRaw(encoding_1.fromBase64(txRaw));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Returns the array of messages in the body of the decoded transaction
|
|
95
|
+
* @param decodedTx
|
|
96
|
+
*/
|
|
97
|
+
getEncodedMessagesFromDecodedTx(decodedTx) {
|
|
98
|
+
return decodedTx.body.messages;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Arranges a decoded message into our MessageData value interface
|
|
102
|
+
* @param decodedMessage
|
|
103
|
+
* @private
|
|
104
|
+
*/
|
|
105
|
+
getMessageValueDataFromDecodedMessage(decodedMessage) {
|
|
106
|
+
return {
|
|
107
|
+
fromAddress: decodedMessage.fromAddress,
|
|
108
|
+
toAddress: decodedMessage.toAddress,
|
|
109
|
+
amount: decodedMessage.amount,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Returns an array of MessageData[] from an encoded messages array
|
|
114
|
+
* @param encodedMessages
|
|
115
|
+
* @private
|
|
116
|
+
*/
|
|
117
|
+
getMessageDataFromEncodedMessages(encodedMessages) {
|
|
118
|
+
const registry = new proto_signing_1.Registry(stargate_1.defaultRegistryTypes);
|
|
119
|
+
const messageData = [];
|
|
120
|
+
for (const message of encodedMessages) {
|
|
121
|
+
messageData.push({
|
|
122
|
+
value: this.getMessageValueDataFromDecodedMessage(registry.decode(message)),
|
|
123
|
+
typeUrl: message.typeUrl,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return messageData;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Pulls the sequence number from a DecodedTxRaw AuthInfo property
|
|
130
|
+
* @param decodedTx
|
|
131
|
+
* @private
|
|
132
|
+
*/
|
|
133
|
+
getSequenceFromDecodedTx(decodedTx) {
|
|
134
|
+
return Number(decodedTx.authInfo.signerInfos[0].sequence);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Pulls the typeUrl from the encoded message of a DecodedTxRaw
|
|
138
|
+
* @param decodedTx
|
|
139
|
+
*/
|
|
140
|
+
getTypeUrlFromDecodedTx(decodedTx) {
|
|
141
|
+
const encodedMessage = this.getEncodedMessagesFromDecodedTx(decodedTx)[0];
|
|
142
|
+
return encodedMessage.typeUrl;
|
|
143
|
+
}
|
|
144
|
+
getGasBudgetFromDecodedTx(decodedTx) {
|
|
145
|
+
var _a, _b;
|
|
146
|
+
return {
|
|
147
|
+
amount: (_a = decodedTx.authInfo.fee) === null || _a === void 0 ? void 0 : _a.amount,
|
|
148
|
+
gas: Number((_b = decodedTx.authInfo.fee) === null || _b === void 0 ? void 0 : _b.gasLimit),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
getExplicitSignerDataFromDecodedTx(decodedTx) {
|
|
152
|
+
const sequence = this.getSequenceFromDecodedTx(decodedTx);
|
|
153
|
+
return {
|
|
154
|
+
accountNumber: 100,
|
|
155
|
+
sequence,
|
|
156
|
+
chainId: constants_1.thetaTestnetChainId, // TODO BG-67576 - if possible, get this information from txData
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Returns the array of MessageData[] from the decoded transaction
|
|
161
|
+
* @param decodedTx
|
|
162
|
+
*/
|
|
163
|
+
getMessageDataFromDecodedTx(decodedTx) {
|
|
164
|
+
const encodedMessages = this.getEncodedMessagesFromDecodedTx(decodedTx);
|
|
165
|
+
return this.getMessageDataFromEncodedMessages(encodedMessages);
|
|
166
|
+
}
|
|
167
|
+
createSignDocFromAtomTransaction(pubkey, atomTransaction) {
|
|
168
|
+
const register = new proto_signing_1.Registry(stargate_1.defaultRegistryTypes);
|
|
169
|
+
const txBodyBytes = register.encodeTxBody(atomTransaction.sendMessages);
|
|
170
|
+
const sequence = atomTransaction.explicitSignerData.sequence;
|
|
171
|
+
const authInfoBytes = proto_signing_1.makeAuthInfoBytes([{ pubkey, sequence }], atomTransaction.gasBudget.amount, atomTransaction.gasBudget.gas, undefined, undefined, undefined);
|
|
172
|
+
return proto_signing_1.makeSignDoc(txBodyBytes, authInfoBytes, atomTransaction.explicitSignerData.chainId, atomTransaction.explicitSignerData.accountNumber);
|
|
173
|
+
}
|
|
174
|
+
createSignedTxRaw(pubkey, signDoc, signature) {
|
|
175
|
+
const signatureBytes = new crypto_1.Secp256k1Signature(encoding_1.fromHex(signature.r), encoding_1.fromHex(signature.s)).toFixedLength();
|
|
176
|
+
const stdSignature = amino_1.encodeSecp256k1Signature(encoding_1.fromHex(pubkey), signatureBytes);
|
|
177
|
+
return tx_1.TxRaw.fromPartial({
|
|
178
|
+
bodyBytes: signDoc.bodyBytes,
|
|
179
|
+
authInfoBytes: signDoc.authInfoBytes,
|
|
180
|
+
signatures: [encoding_1.fromBase64(stdSignature.signature)],
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
createBase64SignedTxBytesFromSignedTxRaw(signedTxRaw) {
|
|
184
|
+
const signedTxBytes = tx_1.TxRaw.encode(signedTxRaw).finish();
|
|
185
|
+
return encoding_1.toBase64(signedTxBytes);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
exports.Utils = Utils;
|
|
189
|
+
const utils = new Utils();
|
|
190
|
+
exports.default = utils;
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUF3RTtBQUN4RSxnRUFBcUM7QUFDckMsMkNBQWtEO0FBQ2xELCtDQUFpRTtBQUNqRSx5REFPK0I7QUFFL0IsK0NBQTBFO0FBQzFFLHlDQUF5RDtBQUN6RCwyQ0FBb0Q7QUFDcEQsMERBQW1FO0FBRW5FLE1BQWEsS0FBSztJQUNoQixrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLElBQVk7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsaUJBQWlCLENBQUMsR0FBVztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQkFBZ0IsQ0FBQyxHQUFXO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGdCQUFnQixDQUFDLFNBQWlCO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG9CQUFvQixDQUFDLElBQVk7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHFCQUFxQixDQUFDLGNBQXNCO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHNCQUFzQixDQUFDLGNBQXNCO1FBQzNDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG9DQUFvQyxDQUFDLENBQUM7U0FDdkU7UUFD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QUFpQixDQUFDLE1BQWMsRUFBRSxPQUFnQixFQUFFLFNBQWM7UUFDaEUsTUFBTSxjQUFjLEdBQUcsSUFBSSwyQkFBa0IsQ0FBQyxrQkFBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFHLE1BQU0sWUFBWSxHQUFHLGdDQUF3QixDQUFDLGtCQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDL0UsT0FBTyxVQUFLLENBQUMsV0FBVyxDQUFDO1lBQ3ZCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7WUFDcEMsVUFBVSxFQUFFLENBQUMscUJBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDakQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHdDQUF3QyxDQUFDLFdBQWtCO1FBQ3pELE1BQU0sYUFBYSxHQUFHLFVBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekQsT0FBTyxtQkFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQTNNRCxzQkEyTUM7QUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRTFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VVdGlscywgUGFyc2VUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgdGhldGFUZXN0bmV0Q2hhaW5JZCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGZyb21CYXNlNjQsIGZyb21IZXgsIHRvQmFzZTY0IH0gZnJvbSAnQGNvc21qcy9lbmNvZGluZyc7XG5pbXBvcnQge1xuICBEZWNvZGVkVHhSYXcsXG4gIGRlY29kZVR4UmF3LFxuICBFbmNvZGVPYmplY3QsXG4gIG1ha2VBdXRoSW5mb0J5dGVzLFxuICBtYWtlU2lnbkRvYyxcbiAgUmVnaXN0cnksXG59IGZyb20gJ0Bjb3NtanMvcHJvdG8tc2lnbmluZyc7XG5pbXBvcnQgeyBBdG9tVHJhbnNhY3Rpb24sIEdhc0ZlZUxpbWl0RGF0YSwgTWVzc2FnZURhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IENvaW4sIGRlZmF1bHRSZWdpc3RyeVR5cGVzLCBTaWduZXJEYXRhIH0gZnJvbSAnQGNvc21qcy9zdGFyZ2F0ZSc7XG5pbXBvcnQgeyBlbmNvZGVTZWNwMjU2azFTaWduYXR1cmUgfSBmcm9tICdAY29zbWpzL2FtaW5vJztcbmltcG9ydCB7IFNlY3AyNTZrMVNpZ25hdHVyZSB9IGZyb20gJ0Bjb3NtanMvY3J5cHRvJztcbmltcG9ydCB7IFR4UmF3LCBTaWduRG9jIH0gZnJvbSAnY29zbWpzLXR5cGVzL2Nvc21vcy90eC92MWJldGExL3R4JztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiByYXcgdHJhbnNhY3Rpb24gY2FuIGJlIGRlc2VyaWFsaXplZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3VHJhbnNhY3Rpb24gLSB0cmFuc2FjdGlvbiBpbiBiYXNlNjQgc3RyaW5nIGZvcm1hdFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIGlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSByYXcgdHJhbnNhY3Rpb24gaGFzIGEgdmFsaWQgZm9ybWF0IGluIHRoZSBibG9ja2NoYWluIGNvbnRleHQsIHRocm93IG90aGVyd2lzZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIC0gVHJhbnNhY3Rpb24gaW4gYmFzZTY0IHN0cmluZyAgZm9ybWF0XG4gICAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbjogVW5kZWZpbmVkJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFsbG93ZWRfY2hhcnMgPSAncXB6cnk5eDhnZjJ0dmR3MHMzam41NGtoY2U2bXVhN2wnO1xuICAgIGNvbnN0IGF0b21SZWdleCA9ICdeKGNvc21vcykxKFsnICsgYWxsb3dlZF9jaGFycyArICddKykkJztcbiAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoYXRvbVJlZ2V4KTtcbiAgICByZXR1cm4gcmUudGVzdChhZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBhbW91bnRcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJbXX0gYW1vdW50cyAtIHRoZSBhbW91bnRzIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICAgKi9cbiAgaXNWYWxpZEFtb3VudHMoYW1vdW50czogbnVtYmVyW10pOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGFtb3VudCBvZiBhbW91bnRzKSB7XG4gICAgICBpZiAoIXRoaXMuaXNWYWxpZEFtb3VudChhbW91bnQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpc1ZhbGlkQW1vdW50KGFtb3VudDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYmlnTnVtYmVyQW1vdW50ID0gbmV3IEJpZ051bWJlcihhbW91bnQpO1xuICAgIGlmICghYmlnTnVtYmVyQW1vdW50LmlzSW50ZWdlcigpIHx8IGJpZ051bWJlckFtb3VudC5pc0xlc3NUaGFuT3JFcXVhbFRvKDApKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgcmF3IHR4IGRhdGEgaW50byBtZXNzYWdlcywgc2lnbmluZyBpbmZvLCBhbmQgZmVlIGRhdGFcbiAgICogQHBhcmFtIHR4SGV4IC0gcmF3IGJhc2U2NCB0eFxuICAgKi9cbiAgZ2V0RGVjb2RlZFR4RnJvbVJhd0Jhc2U2NCh0eFJhdzogc3RyaW5nKTogRGVjb2RlZFR4UmF3IHtcbiAgICByZXR1cm4gZGVjb2RlVHhSYXcoZnJvbUJhc2U2NCh0eFJhdykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFycmF5IG9mIG1lc3NhZ2VzIGluIHRoZSBib2R5IG9mIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBkZWNvZGVkVHhcbiAgICovXG4gIHByaXZhdGUgZ2V0RW5jb2RlZE1lc3NhZ2VzRnJvbURlY29kZWRUeChkZWNvZGVkVHg6IERlY29kZWRUeFJhdyk6IEVuY29kZU9iamVjdFtdIHtcbiAgICByZXR1cm4gZGVjb2RlZFR4LmJvZHkubWVzc2FnZXM7XG4gIH1cblxuICAvKipcbiAgICogQXJyYW5nZXMgYSBkZWNvZGVkIG1lc3NhZ2UgaW50byBvdXIgTWVzc2FnZURhdGEgdmFsdWUgaW50ZXJmYWNlXG4gICAqIEBwYXJhbSBkZWNvZGVkTWVzc2FnZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRNZXNzYWdlVmFsdWVEYXRhRnJvbURlY29kZWRNZXNzYWdlKGRlY29kZWRNZXNzYWdlOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBmcm9tQWRkcmVzczogZGVjb2RlZE1lc3NhZ2UuZnJvbUFkZHJlc3MsXG4gICAgICB0b0FkZHJlc3M6IGRlY29kZWRNZXNzYWdlLnRvQWRkcmVzcyxcbiAgICAgIGFtb3VudDogZGVjb2RlZE1lc3NhZ2UuYW1vdW50LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBNZXNzYWdlRGF0YVtdIGZyb20gYW4gZW5jb2RlZCBtZXNzYWdlcyBhcnJheVxuICAgKiBAcGFyYW0gZW5jb2RlZE1lc3NhZ2VzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGdldE1lc3NhZ2VEYXRhRnJvbUVuY29kZWRNZXNzYWdlcyhlbmNvZGVkTWVzc2FnZXM6IEVuY29kZU9iamVjdFtdKTogTWVzc2FnZURhdGFbXSB7XG4gICAgY29uc3QgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoZGVmYXVsdFJlZ2lzdHJ5VHlwZXMpO1xuICAgIGNvbnN0IG1lc3NhZ2VEYXRhOiBNZXNzYWdlRGF0YVtdID0gW107XG4gICAgZm9yIChjb25zdCBtZXNzYWdlIG9mIGVuY29kZWRNZXNzYWdlcykge1xuICAgICAgbWVzc2FnZURhdGEucHVzaCh7XG4gICAgICAgIHZhbHVlOiB0aGlzLmdldE1lc3NhZ2VWYWx1ZURhdGFGcm9tRGVjb2RlZE1lc3NhZ2UocmVnaXN0cnkuZGVjb2RlKG1lc3NhZ2UpKSxcbiAgICAgICAgdHlwZVVybDogbWVzc2FnZS50eXBlVXJsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWxscyB0aGUgc2VxdWVuY2UgbnVtYmVyIGZyb20gYSBEZWNvZGVkVHhSYXcgQXV0aEluZm8gcHJvcGVydHlcbiAgICogQHBhcmFtIGRlY29kZWRUeFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTZXF1ZW5jZUZyb21EZWNvZGVkVHgoZGVjb2RlZFR4OiBEZWNvZGVkVHhSYXcpOiBudW1iZXIge1xuICAgIHJldHVybiBOdW1iZXIoZGVjb2RlZFR4LmF1dGhJbmZvLnNpZ25lckluZm9zWzBdLnNlcXVlbmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWxscyB0aGUgdHlwZVVybCBmcm9tIHRoZSBlbmNvZGVkIG1lc3NhZ2Ugb2YgYSBEZWNvZGVkVHhSYXdcbiAgICogQHBhcmFtIGRlY29kZWRUeFxuICAgKi9cbiAgZ2V0VHlwZVVybEZyb21EZWNvZGVkVHgoZGVjb2RlZFR4OiBEZWNvZGVkVHhSYXcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVuY29kZWRNZXNzYWdlID0gdGhpcy5nZXRFbmNvZGVkTWVzc2FnZXNGcm9tRGVjb2RlZFR4KGRlY29kZWRUeClbMF07XG4gICAgcmV0dXJuIGVuY29kZWRNZXNzYWdlLnR5cGVVcmw7XG4gIH1cblxuICBnZXRHYXNCdWRnZXRGcm9tRGVjb2RlZFR4KGRlY29kZWRUeDogRGVjb2RlZFR4UmF3KTogR2FzRmVlTGltaXREYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgYW1vdW50OiBkZWNvZGVkVHguYXV0aEluZm8uZmVlPy5hbW91bnQgYXMgQ29pbltdLFxuICAgICAgZ2FzOiBOdW1iZXIoZGVjb2RlZFR4LmF1dGhJbmZvLmZlZT8uZ2FzTGltaXQpLFxuICAgIH07XG4gIH1cblxuICBnZXRFeHBsaWNpdFNpZ25lckRhdGFGcm9tRGVjb2RlZFR4KGRlY29kZWRUeDogRGVjb2RlZFR4UmF3KTogU2lnbmVyRGF0YSB7XG4gICAgY29uc3Qgc2VxdWVuY2UgPSB0aGlzLmdldFNlcXVlbmNlRnJvbURlY29kZWRUeChkZWNvZGVkVHgpO1xuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50TnVtYmVyOiAxMDAsIC8vIFRPRE8gQkctNjc1NzUgLSBpZiBwb3NzaWJsZSwgZ2V0IHRoaXMgaW5mb3JtYXRpb24gZnJvbSB0eERhdGFcbiAgICAgIHNlcXVlbmNlLFxuICAgICAgY2hhaW5JZDogdGhldGFUZXN0bmV0Q2hhaW5JZCwgLy8gVE9ETyBCRy02NzU3NiAtIGlmIHBvc3NpYmxlLCBnZXQgdGhpcyBpbmZvcm1hdGlvbiBmcm9tIHR4RGF0YVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXJyYXkgb2YgTWVzc2FnZURhdGFbXSBmcm9tIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBkZWNvZGVkVHhcbiAgICovXG4gIGdldE1lc3NhZ2VEYXRhRnJvbURlY29kZWRUeChkZWNvZGVkVHg6IERlY29kZWRUeFJhdyk6IE1lc3NhZ2VEYXRhW10ge1xuICAgIGNvbnN0IGVuY29kZWRNZXNzYWdlcyA9IHRoaXMuZ2V0RW5jb2RlZE1lc3NhZ2VzRnJvbURlY29kZWRUeChkZWNvZGVkVHgpO1xuICAgIHJldHVybiB0aGlzLmdldE1lc3NhZ2VEYXRhRnJvbUVuY29kZWRNZXNzYWdlcyhlbmNvZGVkTWVzc2FnZXMpO1xuICB9XG5cbiAgY3JlYXRlU2lnbkRvY0Zyb21BdG9tVHJhbnNhY3Rpb24ocHVia2V5OiBhbnksIGF0b21UcmFuc2FjdGlvbjogQXRvbVRyYW5zYWN0aW9uKSB7XG4gICAgY29uc3QgcmVnaXN0ZXIgPSBuZXcgUmVnaXN0cnkoZGVmYXVsdFJlZ2lzdHJ5VHlwZXMpO1xuICAgIGNvbnN0IHR4Qm9keUJ5dGVzID0gcmVnaXN0ZXIuZW5jb2RlVHhCb2R5KGF0b21UcmFuc2FjdGlvbi5zZW5kTWVzc2FnZXMgYXMgYW55KTtcbiAgICBjb25zdCBzZXF1ZW5jZSA9IGF0b21UcmFuc2FjdGlvbi5leHBsaWNpdFNpZ25lckRhdGEuc2VxdWVuY2U7XG4gICAgY29uc3QgYXV0aEluZm9CeXRlcyA9IG1ha2VBdXRoSW5mb0J5dGVzKFxuICAgICAgW3sgcHVia2V5LCBzZXF1ZW5jZSB9XSxcbiAgICAgIGF0b21UcmFuc2FjdGlvbi5nYXNCdWRnZXQuYW1vdW50LFxuICAgICAgYXRvbVRyYW5zYWN0aW9uLmdhc0J1ZGdldC5nYXMsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWRcbiAgICApO1xuICAgIHJldHVybiBtYWtlU2lnbkRvYyhcbiAgICAgIHR4Qm9keUJ5dGVzLFxuICAgICAgYXV0aEluZm9CeXRlcyxcbiAgICAgIGF0b21UcmFuc2FjdGlvbi5leHBsaWNpdFNpZ25lckRhdGEuY2hhaW5JZCxcbiAgICAgIGF0b21UcmFuc2FjdGlvbi5leHBsaWNpdFNpZ25lckRhdGEuYWNjb3VudE51bWJlclxuICAgICk7XG4gIH1cblxuICBjcmVhdGVTaWduZWRUeFJhdyhwdWJrZXk6IHN0cmluZywgc2lnbkRvYzogU2lnbkRvYywgc2lnbmF0dXJlOiBhbnkpOiBUeFJhdyB7XG4gICAgY29uc3Qgc2lnbmF0dXJlQnl0ZXMgPSBuZXcgU2VjcDI1NmsxU2lnbmF0dXJlKGZyb21IZXgoc2lnbmF0dXJlLnIpLCBmcm9tSGV4KHNpZ25hdHVyZS5zKSkudG9GaXhlZExlbmd0aCgpO1xuICAgIGNvbnN0IHN0ZFNpZ25hdHVyZSA9IGVuY29kZVNlY3AyNTZrMVNpZ25hdHVyZShmcm9tSGV4KHB1YmtleSksIHNpZ25hdHVyZUJ5dGVzKTtcbiAgICByZXR1cm4gVHhSYXcuZnJvbVBhcnRpYWwoe1xuICAgICAgYm9keUJ5dGVzOiBzaWduRG9jLmJvZHlCeXRlcyxcbiAgICAgIGF1dGhJbmZvQnl0ZXM6IHNpZ25Eb2MuYXV0aEluZm9CeXRlcyxcbiAgICAgIHNpZ25hdHVyZXM6IFtmcm9tQmFzZTY0KHN0ZFNpZ25hdHVyZS5zaWduYXR1cmUpXSxcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUJhc2U2NFNpZ25lZFR4Qnl0ZXNGcm9tU2lnbmVkVHhSYXcoc2lnbmVkVHhSYXc6IFR4UmF3KTogc3RyaW5nIHtcbiAgICBjb25zdCBzaWduZWRUeEJ5dGVzID0gVHhSYXcuZW5jb2RlKHNpZ25lZFR4UmF3KS5maW5pc2goKTtcbiAgICByZXR1cm4gdG9CYXNlNjQoc2lnbmVkVHhCeXRlcyk7XG4gIH1cbn1cblxuY29uc3QgdXRpbHMgPSBuZXcgVXRpbHMoKTtcblxuZXhwb3J0IGRlZmF1bHQgdXRpbHM7XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo-beta/sdk-coin-atom",
|
|
3
|
-
"version": "1.0.1-beta.
|
|
3
|
+
"version": "1.0.1-beta.9",
|
|
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-beta/sdk-core": "1.1.1-beta.
|
|
44
|
-
"@bitgo-beta/statics": "7.0.1-beta.
|
|
45
|
-
"@bitgo-beta/utxo-lib": "2.4.2-beta.
|
|
43
|
+
"@bitgo-beta/sdk-core": "1.1.1-beta.131",
|
|
44
|
+
"@bitgo-beta/statics": "7.0.1-beta.131",
|
|
45
|
+
"@bitgo-beta/utxo-lib": "2.4.2-beta.131",
|
|
46
46
|
"@cosmjs/amino": "^0.29.5",
|
|
47
|
-
"@cosmjs/
|
|
47
|
+
"@cosmjs/crypto": "^0.29.5",
|
|
48
|
+
"@cosmjs/encoding": "^0.29.5",
|
|
49
|
+
"@cosmjs/proto-signing": "^0.29.5",
|
|
50
|
+
"@cosmjs/stargate": "^0.29.5",
|
|
51
|
+
"bignumber.js": "^9.1.1",
|
|
52
|
+
"cosmjs-types": "^0.6.1"
|
|
48
53
|
},
|
|
49
54
|
"devDependencies": {
|
|
50
|
-
"@bitgo-beta/sdk-api": "1.1.1-beta.
|
|
55
|
+
"@bitgo-beta/sdk-api": "1.1.1-beta.131",
|
|
51
56
|
"@bitgo-beta/sdk-test": "^1.2.12"
|
|
52
57
|
},
|
|
53
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "d1e39fe74d0554eb596a47d3f3e32b7dc5094113"
|
|
54
59
|
}
|