@bitgo-beta/sdk-coin-tao 1.0.0-beta.99 → 1.0.0-beta.991
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 +16 -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 +4 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +10 -2
- 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/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 +3 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +15 -1
- package/dist/src/lib/utils.d.ts +3 -2
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +13 -1
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/dist/src/tao.d.ts +14 -0
- package/dist/src/tao.d.ts.map +1 -1
- package/dist/src/tao.js +38 -1
- 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/test/resources/testnet.d.ts +2 -0
- 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 +13 -9
- package/.eslintignore +0 -4
- package/.gitignore +0 -3
- package/.mocharc.yml +0 -8
- package/.prettierignore +0 -2
- package/CHANGELOG.md +0 -68
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,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -18,4 +18,5 @@ __exportStar(require("./lib"), exports);
|
|
|
18
18
|
__exportStar(require("./register"), exports);
|
|
19
19
|
__exportStar(require("./tao"), exports);
|
|
20
20
|
__exportStar(require("./ttao"), exports);
|
|
21
|
-
|
|
21
|
+
__exportStar(require("./taoToken"), exports);
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQjtBQUN0Qiw2Q0FBMkI7QUFDM0Isd0NBQXNCO0FBQ3RCLHlDQUF1QjtBQUN2Qiw2Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYic7XG5leHBvcnQgKiBmcm9tICcuL3JlZ2lzdGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdGFvJztcbmV4cG9ydCAqIGZyb20gJy4vdHRhbyc7XG5leHBvcnQgKiBmcm9tICcuL3Rhb1Rva2VuJztcbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants for TAO network operations
|
|
3
|
+
*/
|
|
4
|
+
export declare const TAO_CONSTANTS: {
|
|
5
|
+
/**
|
|
6
|
+
* Maximum supported netuid value for TAO subnets
|
|
7
|
+
* Valid range is 0 to MAX_NETUID (inclusive)
|
|
8
|
+
*/
|
|
9
|
+
readonly MAX_NETUID: 128;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB;;;OAGG;;CAEK,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TAO_CONSTANTS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Constants for TAO network operations
|
|
6
|
+
*/
|
|
7
|
+
exports.TAO_CONSTANTS = {
|
|
8
|
+
/**
|
|
9
|
+
* Maximum supported netuid value for TAO subnets
|
|
10
|
+
* Valid range is 0 to MAX_NETUID (inclusive)
|
|
11
|
+
*/
|
|
12
|
+
MAX_NETUID: 128,
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDVSxRQUFBLGFBQWEsR0FBRztJQUMzQjs7O09BR0c7SUFDSCxVQUFVLEVBQUUsR0FBRztDQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnN0YW50cyBmb3IgVEFPIG5ldHdvcmsgb3BlcmF0aW9uc1xuICovXG5leHBvcnQgY29uc3QgVEFPX0NPTlNUQU5UUyA9IHtcbiAgLyoqXG4gICAqIE1heGltdW0gc3VwcG9ydGVkIG5ldHVpZCB2YWx1ZSBmb3IgVEFPIHN1Ym5ldHNcbiAgICogVmFsaWQgcmFuZ2UgaXMgMCB0byBNQVhfTkVUVUlEIChpbmNsdXNpdmUpXG4gICAqL1xuICBNQVhfTkVUVUlEOiAxMjgsXG59IGFzIGNvbnN0O1xuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Interface } from '@bitgo-beta/abstract-substrate';
|
|
2
|
+
export interface TransferStakeTxData extends Interface.TxData {
|
|
3
|
+
destinationColdkey: string;
|
|
4
|
+
hotkey: string;
|
|
5
|
+
originNetuid: string;
|
|
6
|
+
destinationNetuid: string;
|
|
7
|
+
alphaAmount: string;
|
|
8
|
+
}
|
|
9
|
+
export interface MoveStakeTxData extends Interface.TxData {
|
|
10
|
+
originHotkey: string;
|
|
11
|
+
destinationHotkey: string;
|
|
12
|
+
originNetuid: string;
|
|
13
|
+
destinationNetuid: string;
|
|
14
|
+
alphaAmount: string;
|
|
15
|
+
}
|
|
16
|
+
//# 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,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,MAAM,WAAW,mBAAoB,SAAQ,SAAS,CAAC,MAAM;IAC3D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAgB,SAAQ,SAAS,CAAC,MAAM;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1zdWJzdHJhdGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZmVyU3Rha2VUeERhdGEgZXh0ZW5kcyBJbnRlcmZhY2UuVHhEYXRhIHtcbiAgZGVzdGluYXRpb25Db2xka2V5OiBzdHJpbmc7XG4gIGhvdGtleTogc3RyaW5nO1xuICBvcmlnaW5OZXR1aWQ6IHN0cmluZztcbiAgZGVzdGluYXRpb25OZXR1aWQ6IHN0cmluZztcbiAgYWxwaGFBbW91bnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb3ZlU3Rha2VUeERhdGEgZXh0ZW5kcyBJbnRlcmZhY2UuVHhEYXRhIHtcbiAgb3JpZ2luSG90a2V5OiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uSG90a2V5OiBzdHJpbmc7XG4gIG9yaWdpbk5ldHVpZDogc3RyaW5nO1xuICBkZXN0aW5hdGlvbk5ldHVpZDogc3RyaW5nO1xuICBhbHBoYUFtb3VudDogc3RyaW5nO1xufVxuIl19
|
package/dist/src/lib/index.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
export { Constants, Errors, Interface, KeyPair, SingletonRegistry, Transaction, TransactionBuilder, } from '@bitgo-beta/abstract-substrate';
|
|
2
2
|
export { TransactionBuilderFactory } from './transactionBuilderFactory';
|
|
3
|
+
export { TokenTransferBuilder } from './tokenTransferBuilder';
|
|
4
|
+
export { TokenTransferTransaction } from './tokenTransferTransaction';
|
|
3
5
|
export { TransferBuilder } from './transferBuilder';
|
|
4
6
|
export { StakingBuilder } from './stakingBuilder';
|
|
5
7
|
export { UnstakeBuilder } from './unstakeBuilder';
|
|
8
|
+
export { MoveStakeBuilder } from './moveStakeBuilder';
|
|
9
|
+
export { MoveStakeTransaction } from './moveStakeTransaction';
|
|
6
10
|
export { Utils, default as utils } from './utils';
|
|
7
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,MAAM,EACN,SAAS,EACT,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,MAAM,EACN,SAAS,EACT,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/src/lib/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.utils = exports.Utils = exports.UnstakeBuilder = exports.StakingBuilder = exports.TransferBuilder = exports.TransactionBuilderFactory = exports.TransactionBuilder = exports.Transaction = exports.SingletonRegistry = exports.KeyPair = exports.Interface = exports.Errors = exports.Constants = void 0;
|
|
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
7
|
var abstract_substrate_1 = require("@bitgo-beta/abstract-substrate");
|
|
8
8
|
Object.defineProperty(exports, "Constants", { enumerable: true, get: function () { return abstract_substrate_1.Constants; } });
|
|
9
9
|
Object.defineProperty(exports, "Errors", { enumerable: true, get: function () { return abstract_substrate_1.Errors; } });
|
|
@@ -14,13 +14,21 @@ Object.defineProperty(exports, "Transaction", { enumerable: true, get: function
|
|
|
14
14
|
Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return abstract_substrate_1.TransactionBuilder; } });
|
|
15
15
|
var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
|
|
16
16
|
Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
|
|
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; } });
|
|
17
21
|
var transferBuilder_1 = require("./transferBuilder");
|
|
18
22
|
Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
|
|
19
23
|
var stakingBuilder_1 = require("./stakingBuilder");
|
|
20
24
|
Object.defineProperty(exports, "StakingBuilder", { enumerable: true, get: function () { return stakingBuilder_1.StakingBuilder; } });
|
|
21
25
|
var unstakeBuilder_1 = require("./unstakeBuilder");
|
|
22
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; } });
|
|
23
31
|
var utils_1 = require("./utils");
|
|
24
32
|
Object.defineProperty(exports, "Utils", { enumerable: true, get: function () { return utils_1.Utils; } });
|
|
25
33
|
Object.defineProperty(exports, "utils", { enumerable: true, get: function () { return __importDefault(utils_1).default; } });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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,79 @@
|
|
|
1
|
+
import { Transaction, TransactionBuilder } from '@bitgo-beta/abstract-substrate';
|
|
2
|
+
import { TransactionType } 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 TokenTransferBuilder extends TransactionBuilder {
|
|
6
|
+
protected _destinationColdkey: string;
|
|
7
|
+
protected _hotkey: string;
|
|
8
|
+
protected _originNetuid: string;
|
|
9
|
+
protected _destinationNetuid: string;
|
|
10
|
+
protected _alphaAmount: string;
|
|
11
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
12
|
+
/**
|
|
13
|
+
* Construct a transaction to transfer stake
|
|
14
|
+
* @returns {UnsignedTransaction} an unsigned transfer stake transaction
|
|
15
|
+
*/
|
|
16
|
+
protected buildTransaction(): UnsignedTransaction;
|
|
17
|
+
/** @inheritdoc */
|
|
18
|
+
protected get transactionType(): TransactionType;
|
|
19
|
+
/**
|
|
20
|
+
* Set the amount to transfer
|
|
21
|
+
* @param {string} amount to transfer
|
|
22
|
+
* @returns {TokenTransferBuilder} This builder.
|
|
23
|
+
*/
|
|
24
|
+
amount(amount: string): this;
|
|
25
|
+
/**
|
|
26
|
+
* Set the validator hot key address
|
|
27
|
+
* @param {string} hotkey address of validator
|
|
28
|
+
* @returns {TokenTransferBuilder} This builder.
|
|
29
|
+
*/
|
|
30
|
+
hotkey(address: string): this;
|
|
31
|
+
/**
|
|
32
|
+
* Set the destination cold key address
|
|
33
|
+
* @param {string} address of the destination cold key
|
|
34
|
+
* @returns {TokenTransferBuilder} This builder.
|
|
35
|
+
*/
|
|
36
|
+
destinationColdkey(address: string): this;
|
|
37
|
+
/**
|
|
38
|
+
* Set the origin netuid of the subnet (root network is 0)
|
|
39
|
+
* @param {string} netuid of subnet
|
|
40
|
+
* @returns {TokenTransferBuilder} 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 {TokenTransferBuilder} This builder.
|
|
47
|
+
*/
|
|
48
|
+
destinationNetuid(netuid: string): this;
|
|
49
|
+
/** @inheritdoc */
|
|
50
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
51
|
+
/** @inheritdoc */
|
|
52
|
+
validateTransaction(_: Transaction): void;
|
|
53
|
+
/**
|
|
54
|
+
* Helper method to validate whether tx params have the correct type and format
|
|
55
|
+
* @param {string} destinationColdkey destination cold key address
|
|
56
|
+
* @param {string} hotkey hotkey address of the validator
|
|
57
|
+
* @param {string} originNetuid netuid of the origin subnet
|
|
58
|
+
* @param {string} destinationNetuid netuid of the destination subnet
|
|
59
|
+
* @param {string} alphaAmount amount to transfer
|
|
60
|
+
* @throws {InvalidTransactionError} if validation fails
|
|
61
|
+
*/
|
|
62
|
+
private validateFields;
|
|
63
|
+
/** @inheritdoc */
|
|
64
|
+
validateDecodedTransaction(decodedTxn: DecodedSigningPayload | DecodedSignedTx, rawTransaction: string): void;
|
|
65
|
+
/**
|
|
66
|
+
* Validate the netuid. Throws an error if the netuid is not a non-negative integer.
|
|
67
|
+
* @param netuid The netuid to validate.
|
|
68
|
+
*/
|
|
69
|
+
validateNetuid(netuid: string): void;
|
|
70
|
+
/**
|
|
71
|
+
* Construct a transaction to transfer stake
|
|
72
|
+
*
|
|
73
|
+
* @param {Interface.TransferStakeArgs} args arguments to be passed to the transferStake method
|
|
74
|
+
* @param {Interface.CreateBaseTxInfo} info txn info required to construct the transferStake txn
|
|
75
|
+
* @returns {UnsignedTransaction} an unsigned stake transaction
|
|
76
|
+
*/
|
|
77
|
+
private transferStake;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=tokenTransferBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenTransferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/tokenTransferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,WAAW,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpG,OAAO,EAA2B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAgB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAItH,qBAAa,oBAAqB,SAAQ,kBAAkB;IAC1D,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACtC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,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;IAM5B;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM7B;;;;OAIG;IAEH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMzC;;;;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;IAiBjE,kBAAkB;IAClB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAWzC;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IAoBtB,kBAAkB;IAClB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAW7G;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMpC;;;;;;OAMG;IAEH,OAAO,CAAC,aAAa;CAatB"}
|