@bitgo-beta/sdk-coin-tao 1.0.1-alpha.18 → 1.0.1-alpha.181
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 +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/constants.d.ts +11 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +14 -0
- package/dist/src/lib/iface.d.ts +14 -335
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -126
- package/dist/src/lib/index.d.ts +9 -9
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +30 -51
- package/dist/src/lib/moveStakeBuilder.d.ts +84 -0
- package/dist/src/lib/moveStakeBuilder.d.ts.map +1 -0
- package/dist/src/lib/moveStakeBuilder.js +182 -0
- package/dist/src/lib/moveStakeTransaction.d.ts +10 -0
- package/dist/src/lib/moveStakeTransaction.d.ts.map +1 -0
- package/dist/src/lib/moveStakeTransaction.js +68 -0
- package/dist/src/lib/stakingBuilder.d.ts +63 -0
- package/dist/src/lib/stakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/stakingBuilder.js +133 -0
- package/dist/src/lib/tokenTransferBuilder.d.ts +79 -0
- package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/tokenTransferBuilder.js +165 -0
- package/dist/src/lib/tokenTransferTransaction.d.ts +8 -0
- package/dist/src/lib/tokenTransferTransaction.d.ts.map +1 -0
- package/dist/src/lib/tokenTransferTransaction.js +57 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +10 -4
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +33 -8
- package/dist/src/lib/transferBuilder.d.ts +2 -7
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +8 -3
- package/dist/src/lib/unstakeBuilder.d.ts +66 -0
- package/dist/src/lib/unstakeBuilder.d.ts.map +1 -0
- package/dist/src/lib/unstakeBuilder.js +136 -0
- package/dist/src/lib/utils.d.ts +5 -264
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +15 -480
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/dist/src/resources/index.d.ts +1 -1
- package/dist/src/resources/index.js +2 -2
- package/dist/src/resources/mainnet.d.ts +12 -1
- package/dist/src/resources/mainnet.d.ts.map +1 -1
- package/dist/src/resources/mainnet.js +14 -3
- package/dist/src/resources/testnet.d.ts +13 -0
- package/dist/src/resources/testnet.d.ts.map +1 -0
- package/dist/src/resources/testnet.js +16 -0
- package/dist/src/tao.d.ts +19 -6
- package/dist/src/tao.d.ts.map +1 -1
- package/dist/src/tao.js +43 -81
- package/dist/src/taoToken.d.ts +19 -0
- package/dist/src/taoToken.d.ts.map +1 -0
- package/dist/src/taoToken.js +52 -0
- package/dist/test/integration/index.d.ts +1 -0
- package/dist/test/integration/index.d.ts.map +1 -0
- package/dist/test/integration/index.js +1 -0
- package/dist/test/resources/index.d.ts +150 -0
- package/dist/test/resources/index.d.ts.map +1 -0
- package/dist/test/resources/index.js +166 -0
- package/dist/test/resources/materialData.json +8 -0
- package/dist/test/resources/materialDataModified.json +8 -0
- package/dist/{src/resources/westend.d.ts → test/resources/testnet.d.ts} +2 -2
- package/dist/test/resources/testnet.d.ts.map +1 -0
- package/dist/test/resources/testnet.js +5 -0
- package/dist/test/unit/fixtures.d.ts +31 -0
- package/dist/test/unit/fixtures.d.ts.map +1 -0
- package/dist/test/unit/fixtures.js +107 -0
- package/dist/test/unit/tao.d.ts +2 -0
- package/dist/test/unit/tao.d.ts.map +1 -0
- package/dist/test/unit/tao.js +487 -0
- package/dist/test/unit/transactionBuilder/base.d.ts +8 -0
- package/dist/test/unit/transactionBuilder/base.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/base.js +238 -0
- package/dist/test/unit/transactionBuilder/moveStakeBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/moveStakeBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/moveStakeBuilder.js +472 -0
- package/dist/test/unit/transactionBuilder/singeltonRegistry.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/singeltonRegistry.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/singeltonRegistry.js +59 -0
- package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingBuilder.js +112 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +93 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +75 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.js +309 -0
- package/dist/test/unit/transactionBuilder/unstakeBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/unstakeBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/unstakeBuilder.js +112 -0
- package/dist/test/unit/util.d.ts +2 -0
- package/dist/test/unit/util.d.ts.map +1 -0
- package/dist/test/unit/util.js +29 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +14 -20
- package/.eslintignore +0 -4
- package/.gitignore +0 -3
- package/.mocharc.yml +0 -8
- package/.prettierignore +0 -2
- package/CHANGELOG.md +0 -36
- package/dist/src/lib/errors.d.ts +0 -8
- package/dist/src/lib/errors.d.ts.map +0 -1
- package/dist/src/lib/errors.js +0 -19
- package/dist/src/lib/iface_utils.d.ts +0 -59
- package/dist/src/lib/iface_utils.d.ts.map +0 -1
- package/dist/src/lib/iface_utils.js +0 -92
- package/dist/src/lib/keyPair.d.ts +0 -38
- package/dist/src/lib/keyPair.d.ts.map +0 -1
- package/dist/src/lib/keyPair.js +0 -117
- package/dist/src/lib/nativeTransferBuilder.d.ts +0 -84
- package/dist/src/lib/nativeTransferBuilder.d.ts.map +0 -1
- package/dist/src/lib/nativeTransferBuilder.js +0 -219
- package/dist/src/lib/singletonRegistry.d.ts +0 -7
- package/dist/src/lib/singletonRegistry.d.ts.map +0 -1
- package/dist/src/lib/singletonRegistry.js +0 -20
- package/dist/src/lib/transaction.d.ts +0 -83
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -610
- package/dist/src/lib/transactionBuilder.d.ts +0 -131
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -351
- package/dist/src/lib/txnSchema.d.ts +0 -15
- package/dist/src/lib/txnSchema.d.ts.map +0 -1
- package/dist/src/lib/txnSchema.js +0 -117
- package/dist/src/resources/westend.d.ts.map +0 -1
- package/dist/src/resources/westend.js +0 -5
package/dist/src/lib/index.js
CHANGED
|
@@ -1,55 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
35
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.Utils = exports.
|
|
37
|
-
|
|
38
|
-
exports.
|
|
39
|
-
|
|
40
|
-
exports
|
|
41
|
-
|
|
42
|
-
Object.defineProperty(exports, "
|
|
43
|
-
|
|
44
|
-
Object.defineProperty(exports, "
|
|
45
|
-
var transactionBuilder_1 = require("./transactionBuilder");
|
|
46
|
-
Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
|
|
47
|
-
var transferBuilder_1 = require("./transferBuilder");
|
|
48
|
-
Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
|
|
6
|
+
exports.utils = exports.Utils = exports.MoveStakeTransaction = exports.MoveStakeBuilder = exports.UnstakeBuilder = exports.StakingBuilder = exports.TransferBuilder = exports.TokenTransferTransaction = exports.TokenTransferBuilder = exports.TransactionBuilderFactory = exports.TransactionBuilder = exports.Transaction = exports.SingletonRegistry = exports.KeyPair = exports.Interface = exports.Errors = exports.Constants = void 0;
|
|
7
|
+
var abstract_substrate_1 = require("@bitgo-beta/abstract-substrate");
|
|
8
|
+
Object.defineProperty(exports, "Constants", { enumerable: true, get: function () { return abstract_substrate_1.Constants; } });
|
|
9
|
+
Object.defineProperty(exports, "Errors", { enumerable: true, get: function () { return abstract_substrate_1.Errors; } });
|
|
10
|
+
Object.defineProperty(exports, "Interface", { enumerable: true, get: function () { return abstract_substrate_1.Interface; } });
|
|
11
|
+
Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return abstract_substrate_1.KeyPair; } });
|
|
12
|
+
Object.defineProperty(exports, "SingletonRegistry", { enumerable: true, get: function () { return abstract_substrate_1.SingletonRegistry; } });
|
|
13
|
+
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return abstract_substrate_1.Transaction; } });
|
|
14
|
+
Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return abstract_substrate_1.TransactionBuilder; } });
|
|
49
15
|
var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
|
|
50
16
|
Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
|
|
51
|
-
var
|
|
52
|
-
Object.defineProperty(exports, "
|
|
53
|
-
var
|
|
54
|
-
Object.defineProperty(exports, "
|
|
55
|
-
|
|
17
|
+
var tokenTransferBuilder_1 = require("./tokenTransferBuilder");
|
|
18
|
+
Object.defineProperty(exports, "TokenTransferBuilder", { enumerable: true, get: function () { return tokenTransferBuilder_1.TokenTransferBuilder; } });
|
|
19
|
+
var tokenTransferTransaction_1 = require("./tokenTransferTransaction");
|
|
20
|
+
Object.defineProperty(exports, "TokenTransferTransaction", { enumerable: true, get: function () { return tokenTransferTransaction_1.TokenTransferTransaction; } });
|
|
21
|
+
var transferBuilder_1 = require("./transferBuilder");
|
|
22
|
+
Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
|
|
23
|
+
var stakingBuilder_1 = require("./stakingBuilder");
|
|
24
|
+
Object.defineProperty(exports, "StakingBuilder", { enumerable: true, get: function () { return stakingBuilder_1.StakingBuilder; } });
|
|
25
|
+
var unstakeBuilder_1 = require("./unstakeBuilder");
|
|
26
|
+
Object.defineProperty(exports, "UnstakeBuilder", { enumerable: true, get: function () { return unstakeBuilder_1.UnstakeBuilder; } });
|
|
27
|
+
var moveStakeBuilder_1 = require("./moveStakeBuilder");
|
|
28
|
+
Object.defineProperty(exports, "MoveStakeBuilder", { enumerable: true, get: function () { return moveStakeBuilder_1.MoveStakeBuilder; } });
|
|
29
|
+
var moveStakeTransaction_1 = require("./moveStakeTransaction");
|
|
30
|
+
Object.defineProperty(exports, "MoveStakeTransaction", { enumerable: true, get: function () { return moveStakeTransaction_1.MoveStakeTransaction; } });
|
|
31
|
+
var utils_1 = require("./utils");
|
|
32
|
+
Object.defineProperty(exports, "Utils", { enumerable: true, get: function () { return utils_1.Utils; } });
|
|
33
|
+
Object.defineProperty(exports, "utils", { enumerable: true, get: function () { return __importDefault(utils_1).default; } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFFQVF3QztBQVB0QywrR0FBQSxTQUFTLE9BQUE7QUFDVCw0R0FBQSxNQUFNLE9BQUE7QUFDTiwrR0FBQSxTQUFTLE9BQUE7QUFDVCw2R0FBQSxPQUFPLE9BQUE7QUFDUCx1SEFBQSxpQkFBaUIsT0FBQTtBQUNqQixpSEFBQSxXQUFXLE9BQUE7QUFDWCx3SEFBQSxrQkFBa0IsT0FBQTtBQUdwQix5RUFBd0U7QUFBL0Qsc0lBQUEseUJBQXlCLE9BQUE7QUFDbEMsK0RBQThEO0FBQXJELDRIQUFBLG9CQUFvQixPQUFBO0FBQzdCLHVFQUFzRTtBQUE3RCxvSUFBQSx3QkFBd0IsT0FBQTtBQUNqQyxxREFBb0Q7QUFBM0Msa0hBQUEsZUFBZSxPQUFBO0FBQ3hCLG1EQUFrRDtBQUF6QyxnSEFBQSxjQUFjLE9BQUE7QUFDdkIsbURBQWtEO0FBQXpDLGdIQUFBLGNBQWMsT0FBQTtBQUN2Qix1REFBc0Q7QUFBN0Msb0hBQUEsZ0JBQWdCLE9BQUE7QUFDekIsK0RBQThEO0FBQXJELDRIQUFBLG9CQUFvQixPQUFBO0FBQzdCLGlDQUFrRDtBQUF6Qyw4RkFBQSxLQUFLLE9BQUE7QUFBRSwrR0FBQSxPQUFPLE9BQVMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBDb25zdGFudHMsXG4gIEVycm9ycyxcbiAgSW50ZXJmYWNlLFxuICBLZXlQYWlyLFxuICBTaW5nbGV0b25SZWdpc3RyeSxcbiAgVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uQnVpbGRlcixcbn0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3Qtc3Vic3RyYXRlJztcblxuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSc7XG5leHBvcnQgeyBUb2tlblRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdG9rZW5UcmFuc2ZlckJ1aWxkZXInO1xuZXhwb3J0IHsgVG9rZW5UcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90b2tlblRyYW5zZmVyVHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuZXhwb3J0IHsgU3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdCdWlsZGVyJztcbmV4cG9ydCB7IFVuc3Rha2VCdWlsZGVyIH0gZnJvbSAnLi91bnN0YWtlQnVpbGRlcic7XG5leHBvcnQgeyBNb3ZlU3Rha2VCdWlsZGVyIH0gZnJvbSAnLi9tb3ZlU3Rha2VCdWlsZGVyJztcbmV4cG9ydCB7IE1vdmVTdGFrZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi9tb3ZlU3Rha2VUcmFuc2FjdGlvbic7XG5leHBvcnQgeyBVdGlscywgZGVmYXVsdCBhcyB1dGlscyB9IGZyb20gJy4vdXRpbHMnO1xuIl19
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Transaction, TransactionBuilder } from '@bitgo-beta/abstract-substrate';
|
|
2
|
+
import { TransactionType, BaseAddress } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
4
|
+
import { DecodedSignedTx, DecodedSigningPayload, UnsignedTransaction } from '@substrate/txwrapper-core';
|
|
5
|
+
export declare class MoveStakeBuilder extends TransactionBuilder {
|
|
6
|
+
protected _originHotkey: string;
|
|
7
|
+
protected _destinationHotkey: string;
|
|
8
|
+
protected _originNetuid: string;
|
|
9
|
+
protected _destinationNetuid: string;
|
|
10
|
+
protected _alphaAmount: string;
|
|
11
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
12
|
+
/**
|
|
13
|
+
* Construct a transaction to move stake
|
|
14
|
+
* @returns {UnsignedTransaction} an unsigned move stake transaction
|
|
15
|
+
*/
|
|
16
|
+
protected buildTransaction(): UnsignedTransaction;
|
|
17
|
+
/** @inheritdoc */
|
|
18
|
+
protected get transactionType(): TransactionType;
|
|
19
|
+
/**
|
|
20
|
+
* Set the amount to move
|
|
21
|
+
* @param {string} amount to move
|
|
22
|
+
* @returns {MoveStakeBuilder} This builder.
|
|
23
|
+
*/
|
|
24
|
+
amount(amount: string): this;
|
|
25
|
+
/**
|
|
26
|
+
* Set the origin hot key address
|
|
27
|
+
* @param {string} address of origin hotkey
|
|
28
|
+
* @returns {MoveStakeBuilder} This builder.
|
|
29
|
+
*/
|
|
30
|
+
originHotkey({ address }: BaseAddress): this;
|
|
31
|
+
/**
|
|
32
|
+
* Set the destination hot key address
|
|
33
|
+
* @param {string} address of destination hotkey
|
|
34
|
+
* @returns {MoveStakeBuilder} This builder.
|
|
35
|
+
*/
|
|
36
|
+
destinationHotkey({ address }: BaseAddress): this;
|
|
37
|
+
/**
|
|
38
|
+
* Set the origin netuid of the subnet (root network is 0)
|
|
39
|
+
* @param {string} netuid of subnet
|
|
40
|
+
* @returns {MoveStakeBuilder} This builder.
|
|
41
|
+
*/
|
|
42
|
+
originNetuid(netuid: string): this;
|
|
43
|
+
/**
|
|
44
|
+
* Set the destination netuid of the subnet (root network is 0)
|
|
45
|
+
* @param {string} netuid of subnet
|
|
46
|
+
* @returns {MoveStakeBuilder} This builder.
|
|
47
|
+
*/
|
|
48
|
+
destinationNetuid(netuid: string): this;
|
|
49
|
+
/** @inheritdoc */
|
|
50
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
51
|
+
/** @inheritdoc */
|
|
52
|
+
validateTransaction(_: Transaction): void;
|
|
53
|
+
/**
|
|
54
|
+
* @param {BigNumber} amount amount to validate
|
|
55
|
+
* @throws {InvalidTransactionError} if amount is less than or equal to zero
|
|
56
|
+
*/
|
|
57
|
+
private validateAmount;
|
|
58
|
+
/**
|
|
59
|
+
* @param {string} netuid netuid to validate
|
|
60
|
+
* @throws {InvalidTransactionError} if netuid is out of range
|
|
61
|
+
*/
|
|
62
|
+
private validateNetuid;
|
|
63
|
+
/**
|
|
64
|
+
* Helper method to validate whether tx params have the correct type and format
|
|
65
|
+
* @param {string} originHotkey origin hotkey address
|
|
66
|
+
* @param {string} destinationHotkey destination hotkey address
|
|
67
|
+
* @param {string} originNetuid netuid of the origin subnet
|
|
68
|
+
* @param {string} destinationNetuid netuid of the destination subnet
|
|
69
|
+
* @param {string} alphaAmount amount to move
|
|
70
|
+
* @throws {InvalidTransactionError} if validation fails
|
|
71
|
+
*/
|
|
72
|
+
private validateFields;
|
|
73
|
+
/** @inheritdoc */
|
|
74
|
+
validateDecodedTransaction(decodedTxn: DecodedSigningPayload | DecodedSignedTx, rawTransaction: string): void;
|
|
75
|
+
/**
|
|
76
|
+
* Construct a transaction to move stake
|
|
77
|
+
*
|
|
78
|
+
* @param {Interface.MoveStakeArgs} args arguments to be passed to the moveStake method
|
|
79
|
+
* @param {Interface.CreateBaseTxInfo} info txn info required to construct the moveStake txn
|
|
80
|
+
* @returns {UnsignedTransaction} an unsigned move stake transaction
|
|
81
|
+
*/
|
|
82
|
+
private moveStake;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=moveStakeBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moveStakeBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/moveStakeBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,WAAW,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpG,OAAO,EAA2B,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAgB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAKtH,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;gBAEnB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;OAGG;IACH,SAAS,CAAC,gBAAgB,IAAI,mBAAmB;IAcjD,kBAAkB;IAClB,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO5B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,IAAI;IAM5C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,IAAI;IAMjD;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMlC;;;;OAIG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMvC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAgBjE,kBAAkB;IAClB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAWzC;;;OAGG;IACH,OAAO,CAAC,cAAc;IAMtB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAetB;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IAwBtB,kBAAkB;IAClB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAa7G;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;CAalB"}
|
|
@@ -0,0 +1,182 @@
|
|
|
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.MoveStakeBuilder = void 0;
|
|
7
|
+
const abstract_substrate_1 = require("@bitgo-beta/abstract-substrate");
|
|
8
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const txwrapper_core_1 = require("@substrate/txwrapper-core");
|
|
10
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
const moveStakeTransaction_1 = require("./moveStakeTransaction");
|
|
13
|
+
class MoveStakeBuilder extends abstract_substrate_1.TransactionBuilder {
|
|
14
|
+
constructor(_coinConfig) {
|
|
15
|
+
super(_coinConfig);
|
|
16
|
+
this._transaction = new moveStakeTransaction_1.MoveStakeTransaction(_coinConfig);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Construct a transaction to move stake
|
|
20
|
+
* @returns {UnsignedTransaction} an unsigned move stake transaction
|
|
21
|
+
*/
|
|
22
|
+
buildTransaction() {
|
|
23
|
+
const baseTxInfo = this.createBaseTxInfo();
|
|
24
|
+
return this.moveStake({
|
|
25
|
+
originHotkey: this._originHotkey,
|
|
26
|
+
destinationHotkey: this._destinationHotkey,
|
|
27
|
+
originNetuid: this._originNetuid,
|
|
28
|
+
destinationNetuid: this._destinationNetuid,
|
|
29
|
+
alphaAmount: this._alphaAmount,
|
|
30
|
+
}, baseTxInfo);
|
|
31
|
+
}
|
|
32
|
+
/** @inheritdoc */
|
|
33
|
+
get transactionType() {
|
|
34
|
+
return sdk_core_1.TransactionType.StakingRedelegate;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Set the amount to move
|
|
38
|
+
* @param {string} amount to move
|
|
39
|
+
* @returns {MoveStakeBuilder} This builder.
|
|
40
|
+
*/
|
|
41
|
+
amount(amount) {
|
|
42
|
+
const value = new bignumber_js_1.default(amount);
|
|
43
|
+
this.validateAmount(value);
|
|
44
|
+
this._alphaAmount = amount;
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Set the origin hot key address
|
|
49
|
+
* @param {string} address of origin hotkey
|
|
50
|
+
* @returns {MoveStakeBuilder} This builder.
|
|
51
|
+
*/
|
|
52
|
+
originHotkey({ address }) {
|
|
53
|
+
this.validateAddress({ address });
|
|
54
|
+
this._originHotkey = address;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Set the destination hot key address
|
|
59
|
+
* @param {string} address of destination hotkey
|
|
60
|
+
* @returns {MoveStakeBuilder} This builder.
|
|
61
|
+
*/
|
|
62
|
+
destinationHotkey({ address }) {
|
|
63
|
+
this.validateAddress({ address });
|
|
64
|
+
this._destinationHotkey = address;
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Set the origin netuid of the subnet (root network is 0)
|
|
69
|
+
* @param {string} netuid of subnet
|
|
70
|
+
* @returns {MoveStakeBuilder} This builder.
|
|
71
|
+
*/
|
|
72
|
+
originNetuid(netuid) {
|
|
73
|
+
this.validateNetuid(netuid);
|
|
74
|
+
this._originNetuid = netuid;
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Set the destination netuid of the subnet (root network is 0)
|
|
79
|
+
* @param {string} netuid of subnet
|
|
80
|
+
* @returns {MoveStakeBuilder} This builder.
|
|
81
|
+
*/
|
|
82
|
+
destinationNetuid(netuid) {
|
|
83
|
+
this.validateNetuid(netuid);
|
|
84
|
+
this._destinationNetuid = netuid;
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
/** @inheritdoc */
|
|
88
|
+
fromImplementation(rawTransaction) {
|
|
89
|
+
const tx = super.fromImplementation(rawTransaction);
|
|
90
|
+
if (this._method?.name !== abstract_substrate_1.Interface.MethodNames.MoveStake) {
|
|
91
|
+
throw new sdk_core_1.InvalidTransactionError(`Invalid Transaction Type: ${this._method?.name}. Expected ${abstract_substrate_1.Interface.MethodNames.MoveStake}`);
|
|
92
|
+
}
|
|
93
|
+
const txMethod = this._method.args;
|
|
94
|
+
this.amount(txMethod.alphaAmount);
|
|
95
|
+
this.originHotkey({ address: txMethod.originHotkey });
|
|
96
|
+
this.destinationHotkey({ address: txMethod.destinationHotkey });
|
|
97
|
+
this.originNetuid(txMethod.originNetuid);
|
|
98
|
+
this.destinationNetuid(txMethod.destinationNetuid);
|
|
99
|
+
return tx;
|
|
100
|
+
}
|
|
101
|
+
/** @inheritdoc */
|
|
102
|
+
validateTransaction(_) {
|
|
103
|
+
super.validateTransaction(_);
|
|
104
|
+
this.validateFields(this._originHotkey, this._destinationHotkey, this._originNetuid, this._destinationNetuid, this._alphaAmount);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* @param {BigNumber} amount amount to validate
|
|
108
|
+
* @throws {InvalidTransactionError} if amount is less than or equal to zero
|
|
109
|
+
*/
|
|
110
|
+
validateAmount(amount) {
|
|
111
|
+
if (amount.isLessThanOrEqualTo(0)) {
|
|
112
|
+
throw new sdk_core_1.InvalidTransactionError('Amount must be greater than zero');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* @param {string} netuid netuid to validate
|
|
117
|
+
* @throws {InvalidTransactionError} if netuid is out of range
|
|
118
|
+
*/
|
|
119
|
+
validateNetuid(netuid) {
|
|
120
|
+
const trimmed = netuid.trim();
|
|
121
|
+
if (!/^\d+$/.test(trimmed)) {
|
|
122
|
+
throw new sdk_core_1.InvalidTransactionError(`Invalid netuid: ${netuid}. Must be a non-negative integer.`);
|
|
123
|
+
}
|
|
124
|
+
const num = Number(trimmed);
|
|
125
|
+
if (num < 0 || num > constants_1.TAO_CONSTANTS.MAX_NETUID) {
|
|
126
|
+
throw new sdk_core_1.InvalidTransactionError(`Invalid netuid: ${netuid}. Netuid must be between 0 and ${constants_1.TAO_CONSTANTS.MAX_NETUID}.`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Helper method to validate whether tx params have the correct type and format
|
|
131
|
+
* @param {string} originHotkey origin hotkey address
|
|
132
|
+
* @param {string} destinationHotkey destination hotkey address
|
|
133
|
+
* @param {string} originNetuid netuid of the origin subnet
|
|
134
|
+
* @param {string} destinationNetuid netuid of the destination subnet
|
|
135
|
+
* @param {string} alphaAmount amount to move
|
|
136
|
+
* @throws {InvalidTransactionError} if validation fails
|
|
137
|
+
*/
|
|
138
|
+
validateFields(originHotkey, destinationHotkey, originNetuid, destinationNetuid, alphaAmount) {
|
|
139
|
+
// Validate netuid ranges
|
|
140
|
+
this.validateNetuid(originNetuid);
|
|
141
|
+
this.validateNetuid(destinationNetuid);
|
|
142
|
+
const validationResult = abstract_substrate_1.Schema.MoveStakeTransactionSchema.validate({
|
|
143
|
+
originHotkey,
|
|
144
|
+
destinationHotkey,
|
|
145
|
+
originNetuid,
|
|
146
|
+
destinationNetuid,
|
|
147
|
+
alphaAmount,
|
|
148
|
+
});
|
|
149
|
+
if (validationResult.error) {
|
|
150
|
+
throw new sdk_core_1.InvalidTransactionError(`Transaction validation failed: ${validationResult.error.message}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/** @inheritdoc */
|
|
154
|
+
validateDecodedTransaction(decodedTxn, rawTransaction) {
|
|
155
|
+
if (decodedTxn.method?.name === abstract_substrate_1.Interface.MethodNames.MoveStake) {
|
|
156
|
+
const txMethod = decodedTxn.method.args;
|
|
157
|
+
const validationResult = abstract_substrate_1.Schema.MoveStakeTransactionSchema.validate(txMethod);
|
|
158
|
+
if (validationResult.error) {
|
|
159
|
+
throw new sdk_core_1.InvalidTransactionError(`Move Stake Transaction validation failed: ${validationResult.error.message}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Construct a transaction to move stake
|
|
165
|
+
*
|
|
166
|
+
* @param {Interface.MoveStakeArgs} args arguments to be passed to the moveStake method
|
|
167
|
+
* @param {Interface.CreateBaseTxInfo} info txn info required to construct the moveStake txn
|
|
168
|
+
* @returns {UnsignedTransaction} an unsigned move stake transaction
|
|
169
|
+
*/
|
|
170
|
+
moveStake(args, info) {
|
|
171
|
+
return (0, txwrapper_core_1.defineMethod)({
|
|
172
|
+
method: {
|
|
173
|
+
args,
|
|
174
|
+
name: 'moveStake',
|
|
175
|
+
pallet: 'subtensorModule',
|
|
176
|
+
},
|
|
177
|
+
...info.baseTxInfo,
|
|
178
|
+
}, info.options);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
exports.MoveStakeBuilder = MoveStakeBuilder;
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZVN0YWtlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbW92ZVN0YWtlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx1RUFBb0c7QUFDcEcsbURBQTZGO0FBRTdGLDhEQUFzSDtBQUN0SCxnRUFBcUM7QUFDckMsMkNBQTRDO0FBQzVDLGlFQUE4RDtBQUU5RCxNQUFhLGdCQUFpQixTQUFRLHVDQUFrQjtJQU90RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksMkNBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7T0FHRztJQUNPLGdCQUFnQjtRQUN4QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMzQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQ25CO1lBQ0UsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2hDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDMUMsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2hDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDMUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQy9CLEVBQ0QsVUFBVSxDQUNYLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsaUJBQWlCLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsTUFBYztRQUNuQixNQUFNLEtBQUssR0FBRyxJQUFJLHNCQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztR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QUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBMEMsQ0FBQztZQUU5RSxNQUFNLGdCQUFnQixHQUFHLDJCQUFNLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlFLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FDL0IsNkNBQTZDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FDOUUsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLFNBQVMsQ0FBQyxJQUE2QixFQUFFLElBQWdDO1FBQy9FLE9BQU8sSUFBQSw2QkFBWSxFQUNqQjtZQUNFLE1BQU0sRUFBRTtnQkFDTixJQUFJO2dCQUNKLElBQUksRUFBRSxXQUFXO2dCQUNqQixNQUFNLEVBQUUsaUJBQWlCO2FBQzFCO1lBQ0QsR0FBRyxJQUFJLENBQUMsVUFBVTtTQUNuQixFQUNELElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXhORCw0Q0F3TkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcmZhY2UsIFNjaGVtYSwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LXN1YnN0cmF0ZSc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlLCBCYXNlQWRkcmVzcyB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IERlY29kZWRTaWduZWRUeCwgRGVjb2RlZFNpZ25pbmdQYXlsb2FkLCBkZWZpbmVNZXRob2QsIFVuc2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IFRBT19DT05TVEFOVFMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNb3ZlU3Rha2VUcmFuc2FjdGlvbiB9IGZyb20gJy4vbW92ZVN0YWtlVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgTW92ZVN0YWtlQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfb3JpZ2luSG90a2V5OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfZGVzdGluYXRpb25Ib3RrZXk6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9vcmlnaW5OZXR1aWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9kZXN0aW5hdGlvbk5ldHVpZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2FscGhhQW1vdW50OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IE1vdmVTdGFrZVRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgYSB0cmFuc2FjdGlvbiB0byBtb3ZlIHN0YWtlXG4gICAqIEByZXR1cm5zIHtVbnNpZ25lZFRyYW5zYWN0aW9ufSBhbiB1bnNpZ25lZCBtb3ZlIHN0YWtlIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRUcmFuc2FjdGlvbigpOiBVbnNpZ25lZFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBiYXNlVHhJbmZvID0gdGhpcy5jcmVhdGVCYXNlVHhJbmZvKCk7XG4gICAgcmV0dXJuIHRoaXMubW92ZVN0YWtlKFxuICAgICAge1xuICAgICAgICBvcmlnaW5Ib3RrZXk6IHRoaXMuX29yaWdpbkhvdGtleSxcbiAgICAgICAgZGVzdGluYXRpb25Ib3RrZXk6IHRoaXMuX2Rlc3RpbmF0aW9uSG90a2V5LFxuICAgICAgICBvcmlnaW5OZXR1aWQ6IHRoaXMuX29yaWdpbk5ldHVpZCxcbiAgICAgICAgZGVzdGluYXRpb25OZXR1aWQ6IHRoaXMuX2Rlc3RpbmF0aW9uTmV0dWlkLFxuICAgICAgICBhbHBoYUFtb3VudDogdGhpcy5fYWxwaGFBbW91bnQsXG4gICAgICB9LFxuICAgICAgYmFzZVR4SW5mb1xuICAgICk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdSZWRlbGVnYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYW1vdW50IHRvIG1vdmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCB0byBtb3ZlXG4gICAqIEByZXR1cm5zIHtNb3ZlU3Rha2VCdWlsZGVyfSBUaGlzIGJ1aWxkZXIuXG4gICAqL1xuICBhbW91bnQoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBCaWdOdW1iZXIoYW1vdW50KTtcbiAgICB0aGlzLnZhbGlkYXRlQW1vdW50KHZhbHVlKTtcbiAgICB0aGlzLl9hbHBoYUFtb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG9yaWdpbiBob3Qga2V5IGFkZHJlc3NcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3Mgb2Ygb3JpZ2luIGhvdGtleVxuICAgKiBAcmV0dXJucyB7TW92ZVN0YWtlQnVpbGRlcn0gVGhpcyBidWlsZGVyLlxuICAgKi9cbiAgb3JpZ2luSG90a2V5KHsgYWRkcmVzcyB9OiBCYXNlQWRkcmVzcyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB0aGlzLl9vcmlnaW5Ib3RrZXkgPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGVzdGluYXRpb24gaG90IGtleSBhZGRyZXNzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIG9mIGRlc3RpbmF0aW9uIGhvdGtleVxuICAgKiBAcmV0dXJucyB7TW92ZVN0YWtlQnVpbGRlcn0gVGhpcyBidWlsZGVyLlxuICAgKi9cbiAgZGVzdGluYXRpb25Ib3RrZXkoeyBhZGRyZXNzIH06IEJhc2VBZGRyZXNzKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzIH0pO1xuICAgIHRoaXMuX2Rlc3RpbmF0aW9uSG90a2V5ID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG9yaWdpbiBuZXR1aWQgb2YgdGhlIHN1Ym5ldCAocm9vdCBuZXR3b3JrIGlzIDApXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuZXR1aWQgb2Ygc3VibmV0XG4gICAqIEByZXR1cm5zIHtNb3ZlU3Rha2VCdWlsZGVyfSBUaGlzIGJ1aWxkZXIuXG4gICAqL1xuICBvcmlnaW5OZXR1aWQobmV0dWlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTmV0dWlkKG5ldHVpZCk7XG4gICAgdGhpcy5fb3JpZ2luTmV0dWlkID0gbmV0dWlkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGVzdGluYXRpb24gbmV0dWlkIG9mIHRoZSBzdWJuZXQgKHJvb3QgbmV0d29yayBpcyAwKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV0dWlkIG9mIHN1Ym5ldFxuICAgKiBAcmV0dXJucyB7TW92ZVN0YWtlQnVpbGRlcn0gVGhpcyBidWlsZGVyLlxuICAgKi9cbiAgZGVzdGluYXRpb25OZXR1aWQobmV0dWlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTmV0dWlkKG5ldHVpZCk7XG4gICAgdGhpcy5fZGVzdGluYXRpb25OZXR1aWQgPSBuZXR1aWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gc3VwZXIuZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBpZiAodGhpcy5fbWV0aG9kPy5uYW1lICE9PSBJbnRlcmZhY2UuTWV0aG9kTmFtZXMuTW92ZVN0YWtlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIFRyYW5zYWN0aW9uIFR5cGU6ICR7dGhpcy5fbWV0aG9kPy5uYW1lfS4gRXhwZWN0ZWQgJHtJbnRlcmZhY2UuTWV0aG9kTmFtZXMuTW92ZVN0YWtlfWBcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHR4TWV0aG9kID0gdGhpcy5fbWV0aG9kLmFyZ3MgYXMgSW50ZXJmYWNlLk1vdmVTdGFrZUFyZ3M7XG4gICAgdGhpcy5hbW91bnQodHhNZXRob2QuYWxwaGFBbW91bnQpO1xuICAgIHRoaXMub3JpZ2luSG90a2V5KHsgYWRkcmVzczogdHhNZXRob2Qub3JpZ2luSG90a2V5IH0pO1xuICAgIHRoaXMuZGVzdGluYXRpb25Ib3RrZXkoeyBhZGRyZXNzOiB0eE1ldGhvZC5kZXN0aW5hdGlvbkhvdGtleSB9KTtcbiAgICB0aGlzLm9yaWdpbk5ldHVpZCh0eE1ldGhvZC5vcmlnaW5OZXR1aWQpO1xuICAgIHRoaXMuZGVzdGluYXRpb25OZXR1aWQodHhNZXRob2QuZGVzdGluYXRpb25OZXR1aWQpO1xuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKF86IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIudmFsaWRhdGVUcmFuc2FjdGlvbihfKTtcbiAgICB0aGlzLnZhbGlkYXRlRmllbGRzKFxuICAgICAgdGhpcy5fb3JpZ2luSG90a2V5LFxuICAgICAgdGhpcy5fZGVzdGluYXRpb25Ib3RrZXksXG4gICAgICB0aGlzLl9vcmlnaW5OZXR1aWQsXG4gICAgICB0aGlzLl9kZXN0aW5hdGlvbk5ldHVpZCxcbiAgICAgIHRoaXMuX2FscGhhQW1vdW50XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0JpZ051bWJlcn0gYW1vdW50IGFtb3VudCB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIHtJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcn0gaWYgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlQW1vdW50KGFtb3VudDogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGFtb3VudC5pc0xlc3NUaGFuT3JFcXVhbFRvKDApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0Ftb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuZXR1aWQgbmV0dWlkIHRvIHZhbGlkYXRlXG4gICAqIEB0aHJvd3Mge0ludmFsaWRUcmFuc2FjdGlvbkVycm9yfSBpZiBuZXR1aWQgaXMgb3V0IG9mIHJhbmdlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlTmV0dWlkKG5ldHVpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdHJpbW1lZCA9IG5ldHVpZC50cmltKCk7XG5cbiAgICBpZiAoIS9eXFxkKyQvLnRlc3QodHJpbW1lZCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBuZXR1aWQ6ICR7bmV0dWlkfS4gTXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLmApO1xuICAgIH1cblxuICAgIGNvbnN0IG51bSA9IE51bWJlcih0cmltbWVkKTtcbiAgICBpZiAobnVtIDwgMCB8fCBudW0gPiBUQU9fQ09OU1RBTlRTLk1BWF9ORVRVSUQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgbmV0dWlkOiAke25ldHVpZH0uIE5ldHVpZCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgJHtUQU9fQ09OU1RBTlRTLk1BWF9ORVRVSUR9LmBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gdmFsaWRhdGUgd2hldGhlciB0eCBwYXJhbXMgaGF2ZSB0aGUgY29ycmVjdCB0eXBlIGFuZCBmb3JtYXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbkhvdGtleSBvcmlnaW4gaG90a2V5IGFkZHJlc3NcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRlc3RpbmF0aW9uSG90a2V5IGRlc3RpbmF0aW9uIGhvdGtleSBhZGRyZXNzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5OZXR1aWQgbmV0dWlkIG9mIHRoZSBvcmlnaW4gc3VibmV0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXN0aW5hdGlvbk5ldHVpZCBuZXR1aWQgb2YgdGhlIGRlc3RpbmF0aW9uIHN1Ym5ldFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWxwaGFBbW91bnQgYW1vdW50IHRvIG1vdmVcbiAgICogQHRocm93cyB7SW52YWxpZFRyYW5zYWN0aW9uRXJyb3J9IGlmIHZhbGlkYXRpb24gZmFpbHNcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVGaWVsZHMoXG4gICAgb3JpZ2luSG90a2V5OiBzdHJpbmcsXG4gICAgZGVzdGluYXRpb25Ib3RrZXk6IHN0cmluZyxcbiAgICBvcmlnaW5OZXR1aWQ6IHN0cmluZyxcbiAgICBkZXN0aW5hdGlvbk5ldHVpZDogc3RyaW5nLFxuICAgIGFscGhhQW1vdW50OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgLy8gVmFsaWRhdGUgbmV0dWlkIHJhbmdlc1xuICAgIHRoaXMudmFsaWRhdGVOZXR1aWQob3JpZ2luTmV0dWlkKTtcbiAgICB0aGlzLnZhbGlkYXRlTmV0dWlkKGRlc3RpbmF0aW9uTmV0dWlkKTtcblxuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBTY2hlbWEuTW92ZVN0YWtlVHJhbnNhY3Rpb25TY2hlbWEudmFsaWRhdGUoe1xuICAgICAgb3JpZ2luSG90a2V5LFxuICAgICAgZGVzdGluYXRpb25Ib3RrZXksXG4gICAgICBvcmlnaW5OZXR1aWQsXG4gICAgICBkZXN0aW5hdGlvbk5ldHVpZCxcbiAgICAgIGFscGhhQW1vdW50LFxuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihkZWNvZGVkVHhuOiBEZWNvZGVkU2lnbmluZ1BheWxvYWQgfCBEZWNvZGVkU2lnbmVkVHgsIHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoZGVjb2RlZFR4bi5tZXRob2Q/Lm5hbWUgPT09IEludGVyZmFjZS5NZXRob2ROYW1lcy5Nb3ZlU3Rha2UpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4bi5tZXRob2QuYXJncyBhcyB1bmtub3duIGFzIEludGVyZmFjZS5Nb3ZlU3Rha2VBcmdzO1xuXG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gU2NoZW1hLk1vdmVTdGFrZVRyYW5zYWN0aW9uU2NoZW1hLnZhbGlkYXRlKHR4TWV0aG9kKTtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICBgTW92ZSBTdGFrZSBUcmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDogJHt2YWxpZGF0aW9uUmVzdWx0LmVycm9yLm1lc3NhZ2V9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgYSB0cmFuc2FjdGlvbiB0byBtb3ZlIHN0YWtlXG4gICAqXG4gICAqIEBwYXJhbSB7SW50ZXJmYWNlLk1vdmVTdGFrZUFyZ3N9IGFyZ3MgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgbW92ZVN0YWtlIG1ldGhvZFxuICAgKiBAcGFyYW0ge0ludGVyZmFjZS5DcmVhdGVCYXNlVHhJbmZvfSBpbmZvIHR4biBpbmZvIHJlcXVpcmVkIHRvIGNvbnN0cnVjdCB0aGUgbW92ZVN0YWtlIHR4blxuICAgKiBAcmV0dXJucyB7VW5zaWduZWRUcmFuc2FjdGlvbn0gYW4gdW5zaWduZWQgbW92ZSBzdGFrZSB0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBtb3ZlU3Rha2UoYXJnczogSW50ZXJmYWNlLk1vdmVTdGFrZUFyZ3MsIGluZm86IEludGVyZmFjZS5DcmVhdGVCYXNlVHhJbmZvKTogVW5zaWduZWRUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIGRlZmluZU1ldGhvZChcbiAgICAgIHtcbiAgICAgICAgbWV0aG9kOiB7XG4gICAgICAgICAgYXJncyxcbiAgICAgICAgICBuYW1lOiAnbW92ZVN0YWtlJyxcbiAgICAgICAgICBwYWxsZXQ6ICdzdWJ0ZW5zb3JNb2R1bGUnLFxuICAgICAgICB9LFxuICAgICAgICAuLi5pbmZvLmJhc2VUeEluZm8sXG4gICAgICB9LFxuICAgICAgaW5mby5vcHRpb25zXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Interface as SubstrateInterface, Transaction as SubstrateTransaction } from '@bitgo-beta/abstract-substrate';
|
|
2
|
+
export declare class MoveStakeTransaction extends SubstrateTransaction {
|
|
3
|
+
/** @inheritdoc */
|
|
4
|
+
toJson(): SubstrateInterface.TxData;
|
|
5
|
+
/** @inheritdoc */
|
|
6
|
+
loadInputsAndOutputs(): void;
|
|
7
|
+
/** @inheritdoc */
|
|
8
|
+
explainTransaction(): SubstrateInterface.TransactionExplanation;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=moveStakeTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moveStakeTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/moveStakeTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAMtH,qBAAa,oBAAqB,SAAQ,oBAAoB;IAC5D,kBAAkB;IAClB,MAAM,IAAI,kBAAkB,CAAC,MAAM;IAsBnC,kBAAkB;IAClB,oBAAoB,IAAI,IAAI;IAqB5B,kBAAkB;IAClB,kBAAkB,IAAI,kBAAkB,CAAC,sBAAsB;CAiBhE"}
|
|
@@ -0,0 +1,68 @@
|
|
|
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.MoveStakeTransaction = void 0;
|
|
7
|
+
const abstract_substrate_1 = require("@bitgo-beta/abstract-substrate");
|
|
8
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
|
|
10
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
11
|
+
class MoveStakeTransaction extends abstract_substrate_1.Transaction {
|
|
12
|
+
/** @inheritdoc */
|
|
13
|
+
toJson() {
|
|
14
|
+
if (!this._substrateTransaction) {
|
|
15
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction');
|
|
16
|
+
}
|
|
17
|
+
const decodedTx = (0, txwrapper_polkadot_1.decode)(this._substrateTransaction, {
|
|
18
|
+
metadataRpc: this._substrateTransaction.metadataRpc,
|
|
19
|
+
registry: this._registry,
|
|
20
|
+
isImmortalEra: utils_1.default.isZeroHex(this._substrateTransaction.era),
|
|
21
|
+
});
|
|
22
|
+
const txMethod = decodedTx.method.args;
|
|
23
|
+
const result = super.toJson();
|
|
24
|
+
result.originHotkey = txMethod.originHotkey;
|
|
25
|
+
result.destinationHotkey = txMethod.destinationHotkey;
|
|
26
|
+
result.originNetuid = txMethod.originNetuid;
|
|
27
|
+
result.destinationNetuid = txMethod.destinationNetuid;
|
|
28
|
+
result.alphaAmount = txMethod.alphaAmount;
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
/** @inheritdoc */
|
|
32
|
+
loadInputsAndOutputs() {
|
|
33
|
+
super.loadInputsAndOutputs();
|
|
34
|
+
const decodedTx = (0, txwrapper_polkadot_1.decode)(this._substrateTransaction, {
|
|
35
|
+
metadataRpc: this._substrateTransaction.metadataRpc,
|
|
36
|
+
registry: this._registry,
|
|
37
|
+
isImmortalEra: utils_1.default.isZeroHex(this._substrateTransaction.era),
|
|
38
|
+
});
|
|
39
|
+
const txMethod = decodedTx.method.args;
|
|
40
|
+
this._inputs.push({
|
|
41
|
+
address: txMethod.originHotkey,
|
|
42
|
+
value: txMethod.alphaAmount,
|
|
43
|
+
});
|
|
44
|
+
this._outputs.push({
|
|
45
|
+
address: txMethod.destinationHotkey,
|
|
46
|
+
value: txMethod.alphaAmount,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/** @inheritdoc */
|
|
50
|
+
explainTransaction() {
|
|
51
|
+
const result = this.toJson();
|
|
52
|
+
const explanationResult = {
|
|
53
|
+
id: result.id,
|
|
54
|
+
outputAmount: result.alphaAmount?.toString() || '0',
|
|
55
|
+
changeAmount: '0',
|
|
56
|
+
changeOutputs: [],
|
|
57
|
+
outputs: [],
|
|
58
|
+
fee: {
|
|
59
|
+
fee: result.tip?.toString() || '',
|
|
60
|
+
type: 'tip',
|
|
61
|
+
},
|
|
62
|
+
type: this.type,
|
|
63
|
+
};
|
|
64
|
+
return explanationResult;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.MoveStakeTransaction = MoveStakeTransaction;
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZVN0YWtlVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21vdmVTdGFrZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHVFQUFzSDtBQUN0SCxtREFBK0Q7QUFDL0Qsc0VBQXVEO0FBRXZELG9EQUE0QjtBQUU1QixNQUFhLG9CQUFxQixTQUFRLGdDQUFvQjtJQUM1RCxrQkFBa0I7SUFDbEIsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksa0NBQXVCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBQSwyQkFBTSxFQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUNuRCxXQUFXLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVc7WUFDbkQsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLGFBQWEsRUFBRSxlQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUM7U0FDL0QsQ0FBNEMsQ0FBQztRQUM5QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQXdDLENBQUM7UUFFM0UsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBcUIsQ0FBQztRQUNqRCxNQUFNLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDNUMsTUFBTSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztRQUN0RCxNQUFNLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDNUMsTUFBTSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztRQUN0RCxNQUFNLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFFMUMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixvQkFBb0I7UUFDbEIsS0FBSyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFN0IsTUFBTSxTQUFTLEdBQUcsSUFBQSwyQkFBTSxFQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUNuRCxXQUFXLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVc7WUFDbkQsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLGFBQWEsRUFBRSxlQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUM7U0FDL0QsQ0FBNEMsQ0FBQztRQUM5QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQXdDLENBQUM7UUFFM0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxZQUFZO1lBQzlCLEtBQUssRUFBRSxRQUFRLENBQUMsV0FBVztTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNqQixPQUFPLEVBQUUsUUFBUSxDQUFDLGlCQUFpQjtZQUNuQyxLQUFLLEVBQUUsUUFBUSxDQUFDLFdBQVc7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0I7UUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBcUIsQ0FBQztRQUVoRCxNQUFNLGlCQUFpQixHQUE4QztZQUNuRSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDYixZQUFZLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxHQUFHO1lBQ25ELFlBQVksRUFBRSxHQUFHO1lBQ2pCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sRUFBRSxFQUFFO1lBQ1gsR0FBRyxFQUFFO2dCQUNILEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2pDLElBQUksRUFBRSxLQUFLO2FBQ1o7WUFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztRQUNGLE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQztDQUNGO0FBaEVELG9EQWdFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVyZmFjZSBhcyBTdWJzdHJhdGVJbnRlcmZhY2UsIFRyYW5zYWN0aW9uIGFzIFN1YnN0cmF0ZVRyYW5zYWN0aW9uIH0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3Qtc3Vic3RyYXRlJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgTW92ZVN0YWtlVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBNb3ZlU3Rha2VUcmFuc2FjdGlvbiBleHRlbmRzIFN1YnN0cmF0ZVRyYW5zYWN0aW9uIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBTdWJzdHJhdGVJbnRlcmZhY2UuVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3N1YnN0cmF0ZVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjb2RlZFR4ID0gZGVjb2RlKHRoaXMuX3N1YnN0cmF0ZVRyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYzogdGhpcy5fc3Vic3RyYXRlVHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgICBpc0ltbW9ydGFsRXJhOiB1dGlscy5pc1plcm9IZXgodGhpcy5fc3Vic3RyYXRlVHJhbnNhY3Rpb24uZXJhKSxcbiAgICB9KSBhcyB1bmtub3duIGFzIFN1YnN0cmF0ZUludGVyZmFjZS5EZWNvZGVkVHg7XG4gICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgU3Vic3RyYXRlSW50ZXJmYWNlLk1vdmVTdGFrZUFyZ3M7XG5cbiAgICBjb25zdCByZXN1bHQgPSBzdXBlci50b0pzb24oKSBhcyBNb3ZlU3Rha2VUeERhdGE7XG4gICAgcmVzdWx0Lm9yaWdpbkhvdGtleSA9IHR4TWV0aG9kLm9yaWdpbkhvdGtleTtcbiAgICByZXN1bHQuZGVzdGluYXRpb25Ib3RrZXkgPSB0eE1ldGhvZC5kZXN0aW5hdGlvbkhvdGtleTtcbiAgICByZXN1bHQub3JpZ2luTmV0dWlkID0gdHhNZXRob2Qub3JpZ2luTmV0dWlkO1xuICAgIHJlc3VsdC5kZXN0aW5hdGlvbk5ldHVpZCA9IHR4TWV0aG9kLmRlc3RpbmF0aW9uTmV0dWlkO1xuICAgIHJlc3VsdC5hbHBoYUFtb3VudCA9IHR4TWV0aG9kLmFscGhhQW1vdW50O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBzdXBlci5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuXG4gICAgY29uc3QgZGVjb2RlZFR4ID0gZGVjb2RlKHRoaXMuX3N1YnN0cmF0ZVRyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYzogdGhpcy5fc3Vic3RyYXRlVHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgICBpc0ltbW9ydGFsRXJhOiB1dGlscy5pc1plcm9IZXgodGhpcy5fc3Vic3RyYXRlVHJhbnNhY3Rpb24uZXJhKSxcbiAgICB9KSBhcyB1bmtub3duIGFzIFN1YnN0cmF0ZUludGVyZmFjZS5EZWNvZGVkVHg7XG4gICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgU3Vic3RyYXRlSW50ZXJmYWNlLk1vdmVTdGFrZUFyZ3M7XG5cbiAgICB0aGlzLl9pbnB1dHMucHVzaCh7XG4gICAgICBhZGRyZXNzOiB0eE1ldGhvZC5vcmlnaW5Ib3RrZXksXG4gICAgICB2YWx1ZTogdHhNZXRob2QuYWxwaGFBbW91bnQsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vdXRwdXRzLnB1c2goe1xuICAgICAgYWRkcmVzczogdHhNZXRob2QuZGVzdGluYXRpb25Ib3RrZXksXG4gICAgICB2YWx1ZTogdHhNZXRob2QuYWxwaGFBbW91bnQsXG4gICAgfSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFN1YnN0cmF0ZUludGVyZmFjZS5UcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRvSnNvbigpIGFzIE1vdmVTdGFrZVR4RGF0YTtcblxuICAgIGNvbnN0IGV4cGxhbmF0aW9uUmVzdWx0OiBTdWJzdHJhdGVJbnRlcmZhY2UuVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IHtcbiAgICAgIGlkOiByZXN1bHQuaWQsXG4gICAgICBvdXRwdXRBbW91bnQ6IHJlc3VsdC5hbHBoYUFtb3VudD8udG9TdHJpbmcoKSB8fCAnMCcsXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgb3V0cHV0czogW10sXG4gICAgICBmZWU6IHtcbiAgICAgICAgZmVlOiByZXN1bHQudGlwPy50b1N0cmluZygpIHx8ICcnLFxuICAgICAgICB0eXBlOiAndGlwJyxcbiAgICAgIH0sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgICByZXR1cm4gZXhwbGFuYXRpb25SZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
2
|
+
import { UnsignedTransaction, DecodedSignedTx, DecodedSigningPayload } from '@substrate/txwrapper-core';
|
|
3
|
+
import { TransactionType, BaseAddress } from '@bitgo-beta/sdk-core';
|
|
4
|
+
import { Transaction, TransactionBuilder } from '@bitgo-beta/abstract-substrate';
|
|
5
|
+
export declare class StakingBuilder extends TransactionBuilder {
|
|
6
|
+
protected _amount: string;
|
|
7
|
+
protected _hotkey: string;
|
|
8
|
+
protected _netuid: string;
|
|
9
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
10
|
+
/**
|
|
11
|
+
* Construct a transaction to stake
|
|
12
|
+
* @returns {UnsignedTransaction} an unsigned stake TAO transaction
|
|
13
|
+
*
|
|
14
|
+
* @see https://polkadot.js.org/docs/substrate/extrinsics/#staking
|
|
15
|
+
*/
|
|
16
|
+
protected buildTransaction(): UnsignedTransaction;
|
|
17
|
+
/** @inheritdoc */
|
|
18
|
+
protected get transactionType(): TransactionType;
|
|
19
|
+
/**
|
|
20
|
+
* Set the amount to stake
|
|
21
|
+
* @param {string} amount to stake
|
|
22
|
+
* @returns {StakingBuilder} This staking builder.
|
|
23
|
+
*
|
|
24
|
+
* @see https://wiki.polkadot.network/docs/learn-nominator#required-minimum-stake
|
|
25
|
+
*/
|
|
26
|
+
amount(amount: string): this;
|
|
27
|
+
/**
|
|
28
|
+
* Set the validator hot key address
|
|
29
|
+
* @param {string} hotkey address of validator
|
|
30
|
+
* @returns {StakingBuilder} This staking builder.
|
|
31
|
+
*
|
|
32
|
+
* @see https://wiki.polkadot.network/docs/learn-staking#accounts
|
|
33
|
+
*/
|
|
34
|
+
hotkey({ address }: BaseAddress): this;
|
|
35
|
+
/**
|
|
36
|
+
* Set netuid of the subnet (root network is 0)
|
|
37
|
+
* @param {string} netuid of subnet
|
|
38
|
+
* @returns {StakingBuilder} This staking builder.
|
|
39
|
+
*/
|
|
40
|
+
netuid(netuid: string): this;
|
|
41
|
+
/** @inheritdoc */
|
|
42
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
43
|
+
/** @inheritdoc */
|
|
44
|
+
validateTransaction(_: Transaction): void;
|
|
45
|
+
/**
|
|
46
|
+
* Helper method to validate whether stake params have the correct type and format
|
|
47
|
+
* @param {string} amountStaked amount to stake
|
|
48
|
+
* @param {string} hotkey hotkey address of the validator
|
|
49
|
+
* @param {string} netuid netuid of the subnet
|
|
50
|
+
*/
|
|
51
|
+
private validateFields;
|
|
52
|
+
/** @inheritdoc */
|
|
53
|
+
validateDecodedTransaction(decodedTxn: DecodedSigningPayload | DecodedSignedTx, rawTransaction: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* Construct a transaction to stake
|
|
56
|
+
*
|
|
57
|
+
* @param {Interface.AddStakeArgs} Stake arguments to be passed to the addStake method
|
|
58
|
+
* @param {Interface.CreateBaseTxInfo} Base txn info required to construct the addStake txn
|
|
59
|
+
* @returns {UnsignedTransaction} an unsigned stake TAO transaction
|
|
60
|
+
*/
|
|
61
|
+
private addStake;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=stakingBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stakingBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/stakingBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAgB,mBAAmB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEtH,OAAO,EAA2B,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAqB,MAAM,gCAAgC,CAAC;AAEpG,qBAAa,cAAe,SAAQ,kBAAkB;IACpD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;;OAKG;IACH,SAAS,CAAC,gBAAgB,IAAI,mBAAmB;IAYjD,kBAAkB;IAClB,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,IAAI;IAMtC;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAajE,kBAAkB;IAClB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAKzC;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IActB,kBAAkB;IAClB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAa7G;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;CAajB"}
|