@bitgo-beta/abstract-substrate 1.0.1-beta.60 → 1.0.1-beta.61
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/abstractSubstrateCoin.d.ts +19 -25
- package/dist/src/abstractSubstrateCoin.d.ts.map +1 -1
- package/dist/src/abstractSubstrateCoin.js +39 -63
- package/dist/src/lib/constants.d.ts +2 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +5 -0
- package/dist/src/lib/errors.d.ts +8 -0
- package/dist/src/lib/errors.d.ts.map +1 -0
- package/dist/src/lib/errors.js +19 -0
- package/dist/src/lib/iface.d.ts +25 -235
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +2 -97
- package/dist/src/lib/index.d.ts +8 -2
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +20 -4
- package/dist/src/lib/keyPair.d.ts +6 -20
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +12 -66
- package/dist/src/lib/nativeTransferBuilder.d.ts +61 -0
- package/dist/src/lib/nativeTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/nativeTransferBuilder.js +147 -0
- package/dist/src/lib/singletonRegistry.d.ts +8 -0
- package/dist/src/lib/singletonRegistry.d.ts.map +1 -0
- package/dist/src/lib/singletonRegistry.js +20 -0
- package/dist/src/lib/transaction.d.ts +69 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +308 -0
- package/dist/src/lib/transactionBuilder.d.ts +121 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +334 -0
- package/dist/src/lib/transferBuilder.d.ts +6 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +11 -0
- package/dist/src/lib/txnSchema.d.ts +7 -0
- package/dist/src/lib/txnSchema.d.ts.map +1 -0
- package/dist/src/lib/txnSchema.js +42 -0
- package/dist/src/lib/utils.d.ts +5 -143
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +3 -253
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -4
- 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/resources/index.d.ts +0 -3
- package/dist/src/resources/index.d.ts.map +0 -1
- package/dist/src/resources/index.js +0 -19
- package/dist/src/resources/mainnet.d.ts +0 -2
- package/dist/src/resources/mainnet.d.ts.map +0 -1
- package/dist/src/resources/mainnet.js +0 -5
- package/dist/src/resources/westend.d.ts +0 -2
- package/dist/src/resources/westend.d.ts.map +0 -1
- package/dist/src/resources/westend.js +0 -5
|
@@ -1,31 +1,9 @@
|
|
|
1
|
-
import { BaseCoin, BitGoBase, KeyPair, MPCAlgorithm, ParsedTransaction, ParseTransactionOptions, SignedTransaction,
|
|
2
|
-
import { BaseCoin as StaticsBaseCoin
|
|
3
|
-
import {
|
|
4
|
-
export declare const DEFAULT_SCAN_FACTOR = 20;
|
|
5
|
-
export interface SignTransactionOptions extends BaseSignTransactionOptions {
|
|
6
|
-
txPrebuild: TransactionPrebuild;
|
|
7
|
-
prv: string;
|
|
8
|
-
}
|
|
9
|
-
export interface TransactionPrebuild {
|
|
10
|
-
txHex: string;
|
|
11
|
-
transaction: Interface.TxData;
|
|
12
|
-
}
|
|
13
|
-
export interface ExplainTransactionOptions {
|
|
14
|
-
txPrebuild: TransactionPrebuild;
|
|
15
|
-
publicKey: string;
|
|
16
|
-
feeInfo: {
|
|
17
|
-
fee: string;
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
export interface VerifiedTransactionParameters {
|
|
21
|
-
txHex: string;
|
|
22
|
-
prv: string;
|
|
23
|
-
}
|
|
1
|
+
import { BaseCoin, BitGoBase, KeyPair, MPCAlgorithm, ParsedTransaction, ParseTransactionOptions, SignedTransaction, VerifyAddressOptions, VerifyTransactionOptions } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { CoinFamily, BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
|
|
3
|
+
import { SignTransactionOptions, VerifiedTransactionParameters } from './lib/iface';
|
|
24
4
|
export declare class SubstrateCoin extends BaseCoin {
|
|
25
5
|
protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
|
|
26
|
-
readonly MAX_VALIDITY_DURATION = 2400;
|
|
27
6
|
protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
|
|
28
|
-
static createInstance(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>): BaseCoin;
|
|
29
7
|
/**
|
|
30
8
|
* Creates an instance of TransactionBuilderFactory for the coin specific sdk
|
|
31
9
|
*/
|
|
@@ -57,5 +35,21 @@ export declare class SubstrateCoin extends BaseCoin {
|
|
|
57
35
|
verifySignTransactionParams(params: SignTransactionOptions): VerifiedTransactionParameters;
|
|
58
36
|
/** @inheritDoc **/
|
|
59
37
|
signTransaction(params: SignTransactionOptions): Promise<SignedTransaction>;
|
|
38
|
+
/**
|
|
39
|
+
* Retrieves the address format for the substrate coin.
|
|
40
|
+
*
|
|
41
|
+
* @returns {number} The address format as a number.
|
|
42
|
+
*/
|
|
43
|
+
protected getAddressFormat(): number;
|
|
44
|
+
/**
|
|
45
|
+
* Retrieves the maximum validity duration in blocks.
|
|
46
|
+
*
|
|
47
|
+
* This method is intended to be overridden by subclasses to provide the specific
|
|
48
|
+
* maximum validity duration for different types of Substrate-based coins.
|
|
49
|
+
*
|
|
50
|
+
* @returns {number} The maximum validity duration in blocks.
|
|
51
|
+
* @throws {Error} If the method is not implemented by the subclass.
|
|
52
|
+
*/
|
|
53
|
+
protected getMaxValidityDurationBlocks(): number;
|
|
60
54
|
}
|
|
61
55
|
//# sourceMappingURL=abstractSubstrateCoin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractSubstrateCoin.d.ts","sourceRoot":"","sources":["../../src/abstractSubstrateCoin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"abstractSubstrateCoin.d.ts","sourceRoot":"","sources":["../../src/abstractSubstrateCoin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG9E,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAGpF,qBAAa,aAAc,SAAQ,QAAQ;IACzC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAE3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E;;OAEG;IACH,UAAU,IAAI,GAAG;IAIjB,mBAAmB;IACnB,aAAa,IAAI,MAAM,GAAG,MAAM;IAIhC,mBAAmB;IACnB,QAAQ,IAAI,MAAM;IAIlB,mBAAmB;IACnB,SAAS,IAAI,UAAU;IAIvB,mBAAmB;IACnB,WAAW,IAAI,MAAM;IAIrB,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,mBAAmB;IACnB,eAAe,IAAI,YAAY;IAI/B,mBAAmB;IACnB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAYvC,mBAAmB;IACnB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,mBAAmB;IACnB,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,mBAAmB;IACb,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAInF,mBAAmB;IACb,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAU3E,mBAAmB;IACnB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,2BAA2B,CAAC,MAAM,EAAE,sBAAsB,GAAG,6BAA6B;IAe1F,mBAAmB;IACb,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqBjF;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC;;;;;;;;OAQG;IACH,SAAS,CAAC,4BAA4B,IAAI,MAAM;CAGjD"}
|
|
@@ -1,56 +1,21 @@
|
|
|
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.SubstrateCoin =
|
|
37
|
-
const _ = __importStar(require("lodash"));
|
|
6
|
+
exports.SubstrateCoin = void 0;
|
|
38
7
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
39
8
|
const lib_1 = require("./lib");
|
|
40
|
-
const
|
|
41
|
-
|
|
9
|
+
const constants_1 = require("./lib/constants");
|
|
10
|
+
const utils_1 = __importDefault(require("./lib/utils"));
|
|
42
11
|
class SubstrateCoin extends sdk_core_1.BaseCoin {
|
|
43
12
|
constructor(bitgo, staticsCoin) {
|
|
44
13
|
super(bitgo);
|
|
45
|
-
this.MAX_VALIDITY_DURATION = 2400;
|
|
46
14
|
if (!staticsCoin) {
|
|
47
15
|
throw new Error('missing required constructor parameter staticsCoin');
|
|
48
16
|
}
|
|
49
17
|
this._staticsCoin = staticsCoin;
|
|
50
18
|
}
|
|
51
|
-
static createInstance(bitgo, staticsCoin) {
|
|
52
|
-
return new SubstrateCoin(bitgo, staticsCoin);
|
|
53
|
-
}
|
|
54
19
|
/**
|
|
55
20
|
* Creates an instance of TransactionBuilderFactory for the coin specific sdk
|
|
56
21
|
*/
|
|
@@ -83,7 +48,7 @@ class SubstrateCoin extends sdk_core_1.BaseCoin {
|
|
|
83
48
|
}
|
|
84
49
|
/** @inheritDoc **/
|
|
85
50
|
generateKeyPair(seed) {
|
|
86
|
-
const keyPair = seed ?
|
|
51
|
+
const keyPair = seed ? new lib_1.KeyPair({ seed }) : new lib_1.KeyPair();
|
|
87
52
|
const keys = keyPair.getKeys();
|
|
88
53
|
if (!keys.prv) {
|
|
89
54
|
throw new Error('Missing prv in key generation.');
|
|
@@ -95,15 +60,15 @@ class SubstrateCoin extends sdk_core_1.BaseCoin {
|
|
|
95
60
|
}
|
|
96
61
|
/** @inheritDoc **/
|
|
97
62
|
isValidPub(pub) {
|
|
98
|
-
return
|
|
63
|
+
return utils_1.default.isValidPublicKey(pub);
|
|
99
64
|
}
|
|
100
65
|
/** @inheritDoc **/
|
|
101
66
|
isWalletAddress(params) {
|
|
102
67
|
throw new Error('Method not implemented');
|
|
103
68
|
}
|
|
104
69
|
/** @inheritDoc **/
|
|
105
|
-
parseTransaction(params) {
|
|
106
|
-
|
|
70
|
+
async parseTransaction(params) {
|
|
71
|
+
return {};
|
|
107
72
|
}
|
|
108
73
|
/** @inheritDoc **/
|
|
109
74
|
async verifyTransaction(params) {
|
|
@@ -115,25 +80,16 @@ class SubstrateCoin extends sdk_core_1.BaseCoin {
|
|
|
115
80
|
}
|
|
116
81
|
/** @inheritDoc **/
|
|
117
82
|
isValidAddress(address) {
|
|
118
|
-
return
|
|
83
|
+
return utils_1.default.isValidAddress(address);
|
|
119
84
|
}
|
|
120
85
|
verifySignTransactionParams(params) {
|
|
121
|
-
const prv = params
|
|
122
|
-
const txHex = params
|
|
123
|
-
if (
|
|
124
|
-
throw new Error(
|
|
125
|
-
}
|
|
126
|
-
if (!_.isString(txHex)) {
|
|
127
|
-
throw new Error(`txPrebuild must be an object, got type ${typeof txHex}`);
|
|
86
|
+
const prv = params?.prv;
|
|
87
|
+
const txHex = params?.txPrebuild?.txHex;
|
|
88
|
+
if (typeof txHex !== 'string') {
|
|
89
|
+
throw new Error(`txHex must be string, got type ${typeof txHex}`);
|
|
128
90
|
}
|
|
129
|
-
if (
|
|
130
|
-
throw new Error(
|
|
131
|
-
}
|
|
132
|
-
if (!_.isString(prv)) {
|
|
133
|
-
throw new Error(`prv must be a string, got type ${typeof prv}`);
|
|
134
|
-
}
|
|
135
|
-
if (!_.has(params, 'pubs')) {
|
|
136
|
-
throw new Error('missing public key parameter to sign transaction');
|
|
91
|
+
if (typeof prv !== 'string') {
|
|
92
|
+
throw new Error(`prv must be string, got type ${typeof prv}`);
|
|
137
93
|
}
|
|
138
94
|
return { txHex, prv };
|
|
139
95
|
}
|
|
@@ -145,7 +101,7 @@ class SubstrateCoin extends sdk_core_1.BaseCoin {
|
|
|
145
101
|
const keyPair = new lib_1.KeyPair({ prv: prv });
|
|
146
102
|
const { referenceBlock, blockNumber, transactionVersion, sender } = params.txPrebuild.transaction;
|
|
147
103
|
txBuilder
|
|
148
|
-
.validity({ firstValid: blockNumber, maxDuration: this.
|
|
104
|
+
.validity({ firstValid: blockNumber, maxDuration: this.getMaxValidityDurationBlocks() })
|
|
149
105
|
.referenceBlock(referenceBlock)
|
|
150
106
|
.version(transactionVersion)
|
|
151
107
|
.sender({ address: sender })
|
|
@@ -157,6 +113,26 @@ class SubstrateCoin extends sdk_core_1.BaseCoin {
|
|
|
157
113
|
const signedTxHex = transaction.toBroadcastFormat();
|
|
158
114
|
return { txHex: signedTxHex };
|
|
159
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Retrieves the address format for the substrate coin.
|
|
118
|
+
*
|
|
119
|
+
* @returns {number} The address format as a number.
|
|
120
|
+
*/
|
|
121
|
+
getAddressFormat() {
|
|
122
|
+
return constants_1.DEFAULT_SUBSTRATE_PREFIX;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Retrieves the maximum validity duration in blocks.
|
|
126
|
+
*
|
|
127
|
+
* This method is intended to be overridden by subclasses to provide the specific
|
|
128
|
+
* maximum validity duration for different types of Substrate-based coins.
|
|
129
|
+
*
|
|
130
|
+
* @returns {number} The maximum validity duration in blocks.
|
|
131
|
+
* @throws {Error} If the method is not implemented by the subclass.
|
|
132
|
+
*/
|
|
133
|
+
getMaxValidityDurationBlocks() {
|
|
134
|
+
throw new Error('Method not implemented.');
|
|
135
|
+
}
|
|
160
136
|
}
|
|
161
137
|
exports.SubstrateCoin = SubstrateCoin;
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RTdWJzdHJhdGVDb2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fic3RyYWN0U3Vic3RyYXRlQ29pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBNEI7QUFDNUIsbURBVzhCO0FBRTlCLCtCQUFzRTtBQUV0RSxNQUFNLEtBQUssR0FBRyxXQUFLLENBQUMsT0FBTyxDQUFDO0FBRWYsUUFBQSxtQkFBbUIsR0FBRyxFQUFFLENBQUMsQ0FBQyx3REFBd0Q7QUF5Qi9GLE1BQWEsYUFBYyxTQUFRLG1CQUFRO0lBSXpDLFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSE4sMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBS3BDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsT0FBTyxJQUFJLGFBQWEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVTtRQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDcEMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLGVBQWU7UUFDYixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLGVBQWUsQ0FBQyxJQUFhO1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGFBQWdCLEVBQUUsQ0FBQztRQUM1RixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsT0FBTztZQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztTQUNkLENBQUM7SUFDSixDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE9BQU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsZUFBZSxDQUFDLE1BQTRCO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLGdCQUFnQixDQUFDLE1BQStCO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFnQztRQUN0RCxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekUsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsb0lBQW9JLENBQ3ZKLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsMkJBQTJCLENBQUMsTUFBOEI7UUFDeEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUV2QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUV0QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixLQUFLLENBQUMsZUFBZSxDQUFDLE1BQThCO1FBQ2xELE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksYUFBZ0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBRWxHLFNBQVM7YUFDTixRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQzthQUM5RSxjQUFjLENBQUMsY0FBYyxDQUFDO2FBQzlCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQzthQUMzQixNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sV0FBVyxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBcEpELHNDQW9KQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIEJhc2VDb2luLFxuICBCaXRHb0Jhc2UsXG4gIEtleVBhaXIsXG4gIE1QQ0FsZ29yaXRobSxcbiAgUGFyc2VkVHJhbnNhY3Rpb24sXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBTaWduZWRUcmFuc2FjdGlvbixcbiAgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBhcyBCYXNlU2lnblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luLCBDb2luRmFtaWx5IH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBJbnRlcmZhY2UsIEtleVBhaXIgYXMgU3Vic3RyYXRlS2V5UGFpciwgVXRpbHMgfSBmcm9tICcuL2xpYic7XG5cbmNvbnN0IHV0aWxzID0gVXRpbHMuZGVmYXVsdDtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0NBTl9GQUNUT1IgPSAyMDsgLy8gZGVmYXVsdCBudW1iZXIgb2YgcmVjZWl2ZSBhZGRyZXNzZXMgdG8gc2NhbiBmb3IgZnVuZHNcblxuZXhwb3J0IGludGVyZmFjZSBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkO1xuICBwcnY6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblByZWJ1aWxkIHtcbiAgdHhIZXg6IHN0cmluZztcbiAgdHJhbnNhY3Rpb246IEludGVyZmFjZS5UeERhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4UHJlYnVpbGQ6IFRyYW5zYWN0aW9uUHJlYnVpbGQ7XG4gIHB1YmxpY0tleTogc3RyaW5nO1xuICBmZWVJbmZvOiB7XG4gICAgZmVlOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZpZWRUcmFuc2FjdGlvblBhcmFtZXRlcnMge1xuICB0eEhleDogc3RyaW5nO1xuICBwcnY6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFN1YnN0cmF0ZUNvaW4gZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG4gIHJlYWRvbmx5IE1BWF9WQUxJRElUWV9EVVJBVElPTiA9IDI0MDA7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IFN1YnN0cmF0ZUNvaW4oYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZm9yIHRoZSBjb2luIHNwZWNpZmljIHNka1xuICAgKi9cbiAgZ2V0QnVpbGRlcigpOiBhbnkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0QmFzZUZhY3RvcigpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy5fc3RhdGljc0NvaW4uZGVjaW1hbFBsYWNlcyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLm5hbWU7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldEZhbWlseSgpOiBDb2luRmFtaWx5IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZmFtaWx5O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mdWxsTmFtZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0TVBDQWxnb3JpdGhtKCk6IE1QQ0FsZ29yaXRobSB7XG4gICAgcmV0dXJuICdlZGRzYSc7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgY29uc3Qga2V5UGFpciA9IHNlZWQgPyB1dGlscy5rZXlQYWlyRnJvbVNlZWQobmV3IFVpbnQ4QXJyYXkoc2VlZCkpIDogbmV3IFN1YnN0cmF0ZUtleVBhaXIoKTtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG4gICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHBydiBpbiBrZXkgZ2VuZXJhdGlvbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHB1Yjoga2V5cy5wdWIsXG4gICAgICBwcnY6IGtleXMucHJ2LFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZFB1YmxpY0tleShwdWIpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyB0eFBhcmFtcyB9ID0gcGFyYW1zO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHR4UGFyYW1zLnJlY2lwaWVudHMpICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHt0aGlzLmdldENoYWluKCl9IGRvZXNuJ3Qgc3VwcG9ydCBzZW5kaW5nIHRvIG1vcmUgdGhhbiAxIGRlc3RpbmF0aW9uIGFkZHJlc3Mgd2l0aGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uLiBUcnkgYWdhaW4sIHVzaW5nIG9ubHkgYSBzaW5nbGUgcmVjaXBpZW50LmBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICB2ZXJpZnlTaWduVHJhbnNhY3Rpb25QYXJhbXMocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogVmVyaWZpZWRUcmFuc2FjdGlvblBhcmFtZXRlcnMge1xuICAgIGNvbnN0IHBydiA9IHBhcmFtcy5wcnY7XG5cbiAgICBjb25zdCB0eEhleCA9IHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4O1xuXG4gICAgaWYgKCF0eEhleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHR4UHJlYnVpbGQgcGFyYW1ldGVyJyk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzU3RyaW5nKHR4SGV4KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB0eFByZWJ1aWxkIG11c3QgYmUgYW4gb2JqZWN0LCBnb3QgdHlwZSAke3R5cGVvZiB0eEhleH1gKTtcbiAgICB9XG5cbiAgICBpZiAoIXBydikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHBydiBwYXJhbWV0ZXIgdG8gc2lnbiB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGlmICghXy5pc1N0cmluZyhwcnYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHBydiBtdXN0IGJlIGEgc3RyaW5nLCBnb3QgdHlwZSAke3R5cGVvZiBwcnZ9YCk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmhhcyhwYXJhbXMsICdwdWJzJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBwdWJsaWMga2V5IHBhcmFtZXRlciB0byBzaWduIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgdHhIZXgsIHBydiB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBhc3luYyBzaWduVHJhbnNhY3Rpb24ocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHsgdHhIZXgsIHBydiB9ID0gdGhpcy52ZXJpZnlTaWduVHJhbnNhY3Rpb25QYXJhbXMocGFyYW1zKTtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyKCk7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHR4SGV4KTtcbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IFN1YnN0cmF0ZUtleVBhaXIoeyBwcnY6IHBydiB9KTtcbiAgICBjb25zdCB7IHJlZmVyZW5jZUJsb2NrLCBibG9ja051bWJlciwgdHJhbnNhY3Rpb25WZXJzaW9uLCBzZW5kZXIgfSA9IHBhcmFtcy50eFByZWJ1aWxkLnRyYW5zYWN0aW9uO1xuXG4gICAgdHhCdWlsZGVyXG4gICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiBibG9ja051bWJlciwgbWF4RHVyYXRpb246IHRoaXMuTUFYX1ZBTElESVRZX0RVUkFUSU9OIH0pXG4gICAgICAucmVmZXJlbmNlQmxvY2socmVmZXJlbmNlQmxvY2spXG4gICAgICAudmVyc2lvbih0cmFuc2FjdGlvblZlcnNpb24pXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAuc2lnbih7IGtleToga2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25lZFR4SGV4ID0gdHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICByZXR1cm4geyB0eEhleDogc2lnbmVkVHhIZXggfTtcbiAgfVxufVxuIl19
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RTdWJzdHJhdGVDb2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fic3RyYWN0U3Vic3RyYXRlQ29pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFVOEI7QUFFOUIsK0JBQW9EO0FBQ3BELCtDQUEyRDtBQUUzRCx3REFBZ0M7QUFFaEMsTUFBYSxhQUFjLFNBQVEsbUJBQVE7SUFHekMsWUFBc0IsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsZUFBZTtRQUNiLE9BQU8s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Q0FBQyxXQUFXLENBQUM7UUFFbEcsU0FBUzthQUNOLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLENBQUM7YUFDdkYsY0FBYyxDQUFDLGNBQWMsQ0FBQzthQUM5QixPQUFPLENBQUMsa0JBQWtCLENBQUM7YUFDM0IsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQzNCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN4QyxNQUFNLFdBQVcsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sZ0JBQWdCO1FBQ3hCLE9BQU8sb0NBQXdCLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ08sNEJBQTRCO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUF4SkQsc0NBd0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUNvaW4sXG4gIEJpdEdvQmFzZSxcbiAgS2V5UGFpcixcbiAgTVBDQWxnb3JpdGhtLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBDb2luRmFtaWx5LCBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4gfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEtleVBhaXIgYXMgU3Vic3RyYXRlS2V5UGFpciB9IGZyb20gJy4vbGliJztcbmltcG9ydCB7IERFRkFVTFRfU1VCU1RSQVRFX1BSRUZJWCB9IGZyb20gJy4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTaWduVHJhbnNhY3Rpb25PcHRpb25zLCBWZXJpZmllZFRyYW5zYWN0aW9uUGFyYW1ldGVycyB9IGZyb20gJy4vbGliL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBTdWJzdHJhdGVDb2luIGV4dGVuZHMgQmFzZUNvaW4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbyk7XG5cbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGljc0NvaW4gPSBzdGF0aWNzQ29pbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZm9yIHRoZSBjb2luIHNwZWNpZmljIHNka1xuICAgKi9cbiAgZ2V0QnVpbGRlcigpOiBhbnkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0QmFzZUZhY3RvcigpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy5fc3RhdGljc0NvaW4uZGVjaW1hbFBsYWNlcyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLm5hbWU7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldEZhbWlseSgpOiBDb2luRmFtaWx5IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZmFtaWx5O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mdWxsTmFtZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0TVBDQWxnb3JpdGhtKCk6IE1QQ0FsZ29yaXRobSB7XG4gICAgcmV0dXJuICdlZGRzYSc7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgY29uc3Qga2V5UGFpciA9IHNlZWQgPyBuZXcgU3Vic3RyYXRlS2V5UGFpcih7IHNlZWQgfSkgOiBuZXcgU3Vic3RyYXRlS2V5UGFpcigpO1xuICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXMoKTtcbiAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJ2IGluIGtleSBnZW5lcmF0aW9uLicpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcHViOiBrZXlzLnB1YixcbiAgICAgIHBydjoga2V5cy5wcnYsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkUHVibGljS2V5KHB1Yik7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFZlcmlmeUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGFzeW5jIHBhcnNlVHJhbnNhY3Rpb24ocGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyB0eFBhcmFtcyB9ID0gcGFyYW1zO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHR4UGFyYW1zLnJlY2lwaWVudHMpICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHt0aGlzLmdldENoYWluKCl9IGRvZXNuJ3Qgc3VwcG9ydCBzZW5kaW5nIHRvIG1vcmUgdGhhbiAxIGRlc3RpbmF0aW9uIGFkZHJlc3Mgd2l0aGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uLiBUcnkgYWdhaW4sIHVzaW5nIG9ubHkgYSBzaW5nbGUgcmVjaXBpZW50LmBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICB2ZXJpZnlTaWduVHJhbnNhY3Rpb25QYXJhbXMocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogVmVyaWZpZWRUcmFuc2FjdGlvblBhcmFtZXRlcnMge1xuICAgIGNvbnN0IHBydiA9IHBhcmFtcz8ucHJ2O1xuICAgIGNvbnN0IHR4SGV4ID0gcGFyYW1zPy50eFByZWJ1aWxkPy50eEhleDtcblxuICAgIGlmICh0eXBlb2YgdHhIZXggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHR4SGV4IG11c3QgYmUgc3RyaW5nLCBnb3QgdHlwZSAke3R5cGVvZiB0eEhleH1gKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHBydiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcHJ2IG11c3QgYmUgc3RyaW5nLCBnb3QgdHlwZSAke3R5cGVvZiBwcnZ9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgdHhIZXgsIHBydiB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBhc3luYyBzaWduVHJhbnNhY3Rpb24ocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHsgdHhIZXgsIHBydiB9ID0gdGhpcy52ZXJpZnlTaWduVHJhbnNhY3Rpb25QYXJhbXMocGFyYW1zKTtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyKCk7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHR4SGV4KTtcbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IFN1YnN0cmF0ZUtleVBhaXIoeyBwcnY6IHBydiB9KTtcbiAgICBjb25zdCB7IHJlZmVyZW5jZUJsb2NrLCBibG9ja051bWJlciwgdHJhbnNhY3Rpb25WZXJzaW9uLCBzZW5kZXIgfSA9IHBhcmFtcy50eFByZWJ1aWxkLnRyYW5zYWN0aW9uO1xuXG4gICAgdHhCdWlsZGVyXG4gICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiBibG9ja051bWJlciwgbWF4RHVyYXRpb246IHRoaXMuZ2V0TWF4VmFsaWRpdHlEdXJhdGlvbkJsb2NrcygpIH0pXG4gICAgICAucmVmZXJlbmNlQmxvY2socmVmZXJlbmNlQmxvY2spXG4gICAgICAudmVyc2lvbih0cmFuc2FjdGlvblZlcnNpb24pXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAuc2lnbih7IGtleToga2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25lZFR4SGV4ID0gdHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICByZXR1cm4geyB0eEhleDogc2lnbmVkVHhIZXggfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGFkZHJlc3MgZm9ybWF0IGZvciB0aGUgc3Vic3RyYXRlIGNvaW4uXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBhZGRyZXNzIGZvcm1hdCBhcyBhIG51bWJlci5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRBZGRyZXNzRm9ybWF0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIERFRkFVTFRfU1VCU1RSQVRFX1BSRUZJWDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIG1heGltdW0gdmFsaWRpdHkgZHVyYXRpb24gaW4gYmxvY2tzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgdG8gcHJvdmlkZSB0aGUgc3BlY2lmaWNcbiAgICogbWF4aW11bSB2YWxpZGl0eSBkdXJhdGlvbiBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIFN1YnN0cmF0ZS1iYXNlZCBjb2lucy5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIG1heGltdW0gdmFsaWRpdHkgZHVyYXRpb24gaW4gYmxvY2tzLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgYnkgdGhlIHN1YmNsYXNzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldE1heFZhbGlkaXR5RHVyYXRpb25CbG9ja3MoKTogbnVtYmVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,KAAK,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_SUBSTRATE_PREFIX = void 0;
|
|
4
|
+
exports.DEFAULT_SUBSTRATE_PREFIX = 42;
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSx3QkFBd0IsR0FBRyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgREVGQVVMVF9TVUJTVFJBVEVfUFJFRklYID0gNDI7XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BuildTransactionError } from '@bitgo-beta/sdk-core';
|
|
2
|
+
export declare class AddressValidationError extends BuildTransactionError {
|
|
3
|
+
constructor(malformedAddress: string);
|
|
4
|
+
}
|
|
5
|
+
export declare class InvalidFeeError extends BuildTransactionError {
|
|
6
|
+
constructor(type?: string, expectedType?: string);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,qBAAa,sBAAuB,SAAQ,qBAAqB;gBACnD,gBAAgB,EAAE,MAAM;CAIrC;AAED,qBAAa,eAAgB,SAAQ,qBAAqB;gBAC5C,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAIjD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidFeeError = exports.AddressValidationError = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
class AddressValidationError extends sdk_core_1.BuildTransactionError {
|
|
6
|
+
constructor(malformedAddress) {
|
|
7
|
+
super(`The address '${malformedAddress}' is not a well-formed dot address`);
|
|
8
|
+
this.name = AddressValidationError.name;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.AddressValidationError = AddressValidationError;
|
|
12
|
+
class InvalidFeeError extends sdk_core_1.BuildTransactionError {
|
|
13
|
+
constructor(type, expectedType) {
|
|
14
|
+
super(`The specified type: "${type}" is not valid. Please provide the type: "${expectedType}"`);
|
|
15
|
+
this.name = InvalidFeeError.name;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.InvalidFeeError = InvalidFeeError;
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTZEO0FBRTdELE1BQWEsc0JBQXVCLFNBQVEsZ0NBQXFCO0lBQy9ELFlBQVksZ0JBQXdCO1FBQ2xDLEtBQUssQ0FBQyxnQkFBZ0IsZ0JBQWdCLG9DQUFvQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBTEQsd0RBS0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsZ0NBQXFCO0lBQ3hELFlBQVksSUFBYSxFQUFFLFlBQXFCO1FBQzlDLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSw2Q0FBNkMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBTEQsMENBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgQnVpbGRUcmFuc2FjdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IobWFsZm9ybWVkQWRkcmVzczogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFRoZSBhZGRyZXNzICcke21hbGZvcm1lZEFkZHJlc3N9JyBpcyBub3QgYSB3ZWxsLWZvcm1lZCBkb3QgYWRkcmVzc2ApO1xuICAgIHRoaXMubmFtZSA9IEFkZHJlc3NWYWxpZGF0aW9uRXJyb3IubmFtZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZEZlZUVycm9yIGV4dGVuZHMgQnVpbGRUcmFuc2FjdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IodHlwZT86IHN0cmluZywgZXhwZWN0ZWRUeXBlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFRoZSBzcGVjaWZpZWQgdHlwZTogXCIke3R5cGV9XCIgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSB0aGUgdHlwZTogXCIke2V4cGVjdGVkVHlwZX1cImApO1xuICAgIHRoaXMubmFtZSA9IEludmFsaWRGZWVFcnJvci5uYW1lO1xuICB9XG59XG4iXX0=
|
package/dist/src/lib/iface.d.ts
CHANGED
|
@@ -1,48 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SignTransactionOptions as BaseSignTransactionOptions, TransactionExplanation as BaseTransactionExplanation, TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
2
|
import { PolkadotSpecNameType } from '@bitgo-beta/statics';
|
|
3
|
-
import { BaseTxInfo,
|
|
3
|
+
import { BaseTxInfo, DecodedUnsignedTx, TypeRegistry } from '@substrate/txwrapper-core/lib/types';
|
|
4
4
|
export { HexString } from '@polkadot/util/types';
|
|
5
5
|
/**
|
|
6
6
|
* Section names for the transaction methods.
|
|
7
7
|
*/
|
|
8
8
|
export declare enum SectionNames {
|
|
9
|
-
Proxy = "proxy"
|
|
10
|
-
Staking = "staking"
|
|
9
|
+
Proxy = "proxy"
|
|
11
10
|
}
|
|
12
11
|
/**
|
|
13
12
|
* Method names for the transaction method. Names change based on the type of transaction e.g 'bond' for the staking transaction
|
|
14
13
|
*/
|
|
15
14
|
export declare enum MethodNames {
|
|
16
|
-
/**
|
|
17
|
-
* Register a proxy account for the sender that is able to make calls on its behalf.
|
|
18
|
-
*
|
|
19
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#addproxydelegate-multiaddress-proxy_type-kitchensinkruntimeproxytype-delay-u32
|
|
20
|
-
*/
|
|
21
|
-
AddProxy = "addProxy",
|
|
22
|
-
/**
|
|
23
|
-
* Unregister a proxy account for the sender.
|
|
24
|
-
*
|
|
25
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#removeproxydelegate-multiaddress-proxy_type-kitchensinkruntimeproxytype-delay-u32
|
|
26
|
-
*/
|
|
27
|
-
RemoveProxy = "removeProxy",
|
|
28
|
-
/**
|
|
29
|
-
* Dispatch the given call from an account that the sender is authorised for through add_proxy.
|
|
30
|
-
*
|
|
31
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#proxyreal-multiaddress-force_proxy_type-optionkitchensinkruntimeproxytype-call-call
|
|
32
|
-
*/
|
|
33
|
-
Proxy = "proxy",
|
|
34
|
-
/**
|
|
35
|
-
* Take the origin account as a stash and lock up value of its balance. controller will be the account that controls it.
|
|
36
|
-
*
|
|
37
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#bondcontroller-multiaddress-value-compactu128-payee-palletstakingrewarddestination
|
|
38
|
-
*/
|
|
39
|
-
Bond = "bond",
|
|
40
|
-
/**
|
|
41
|
-
* Add some extra amount that have appeared in the stash free_balance into the balance up for staking.
|
|
42
|
-
*
|
|
43
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#bondextramax_additional-compactu128
|
|
44
|
-
*/
|
|
45
|
-
BondExtra = "bondExtra",
|
|
46
15
|
/**
|
|
47
16
|
* Transfer the entire transferable balance from the caller account.
|
|
48
17
|
*
|
|
@@ -54,56 +23,7 @@ export declare enum MethodNames {
|
|
|
54
23
|
*
|
|
55
24
|
* @see https://polkadot.js.org/docs/substrate/extrinsics/#transferkeepalivedest-multiaddress-value-compactu128
|
|
56
25
|
*/
|
|
57
|
-
TransferKeepAlive = "transferKeepAlive"
|
|
58
|
-
/**
|
|
59
|
-
* Schedule a portion of the stash to be unlocked ready for transfer out after the bond period ends.
|
|
60
|
-
*
|
|
61
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#unbondvalue-compactu128
|
|
62
|
-
*/
|
|
63
|
-
Unbond = "unbond",
|
|
64
|
-
/**
|
|
65
|
-
* @deprecated Anonymous proxies were renamed to pure proxies.
|
|
66
|
-
*
|
|
67
|
-
* @see PureProxy
|
|
68
|
-
* @see https://polkadot.polkassembly.io/referendum/84
|
|
69
|
-
*/
|
|
70
|
-
Anonymous = "anonymous",
|
|
71
|
-
/**
|
|
72
|
-
* Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and initialize it with a proxy of proxy_type for origin sender.
|
|
73
|
-
*
|
|
74
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#createpureproxy_type-kitchensinkruntimeproxytype-delay-u32-index-u16
|
|
75
|
-
*/
|
|
76
|
-
PureProxy = "createPure",// Anonymous proxies were renamed to pure proxies
|
|
77
|
-
/**
|
|
78
|
-
* Send a batch of dispatch calls.
|
|
79
|
-
*
|
|
80
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#batchcalls-veccall
|
|
81
|
-
*/
|
|
82
|
-
Batch = "batch",
|
|
83
|
-
/**
|
|
84
|
-
* Send a batch of dispatch calls and atomically execute them. The whole transaction will rollback and fail if any of the calls failed.
|
|
85
|
-
*
|
|
86
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#batchallcalls-veccall
|
|
87
|
-
*/
|
|
88
|
-
BatchAll = "batchAll",
|
|
89
|
-
/**
|
|
90
|
-
* Declare no desire to either validate or nominate.
|
|
91
|
-
*
|
|
92
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#chill
|
|
93
|
-
*/
|
|
94
|
-
Chill = "chill",
|
|
95
|
-
/**
|
|
96
|
-
* Remove any unlocked chunks from the unlocking queue from our management.
|
|
97
|
-
*
|
|
98
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#withdrawunbondednum_slashing_spans-u32
|
|
99
|
-
*/
|
|
100
|
-
WithdrawUnbonded = "withdrawUnbonded",
|
|
101
|
-
/**
|
|
102
|
-
* Pay out all the stakers behind a single validator for a single era.
|
|
103
|
-
*
|
|
104
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#payoutstakersvalidator_stash-accountid32-era-u32
|
|
105
|
-
*/
|
|
106
|
-
PayoutStakers = "payoutStakers"
|
|
26
|
+
TransferKeepAlive = "transferKeepAlive"
|
|
107
27
|
}
|
|
108
28
|
/**
|
|
109
29
|
* The transaction data returned from the toJson() function of a transaction
|
|
@@ -124,17 +44,7 @@ export interface TxData {
|
|
|
124
44
|
to?: string;
|
|
125
45
|
tip?: number;
|
|
126
46
|
eraPeriod?: number;
|
|
127
|
-
controller?: string;
|
|
128
47
|
payee?: string;
|
|
129
|
-
owner?: string;
|
|
130
|
-
proxyType?: string;
|
|
131
|
-
delay?: string;
|
|
132
|
-
forceProxyType?: ProxyType;
|
|
133
|
-
index?: string;
|
|
134
|
-
batchCalls?: BatchCallObject[];
|
|
135
|
-
numSlashingSpans?: number;
|
|
136
|
-
validatorStash?: string;
|
|
137
|
-
claimEra?: string;
|
|
138
48
|
keepAlive?: boolean;
|
|
139
49
|
}
|
|
140
50
|
/**
|
|
@@ -155,142 +65,11 @@ export interface TransferAllArgs {
|
|
|
155
65
|
};
|
|
156
66
|
keepAlive: boolean;
|
|
157
67
|
}
|
|
158
|
-
/**
|
|
159
|
-
* Transaction method specific args
|
|
160
|
-
*/
|
|
161
|
-
export type StakeArgsPayee = 'Staked' | 'Stash' | 'Controller' | {
|
|
162
|
-
Account: string;
|
|
163
|
-
};
|
|
164
|
-
/**
|
|
165
|
-
* Transaction method specific args
|
|
166
|
-
*/
|
|
167
|
-
export type StakeArgsPayeeRaw = {
|
|
168
|
-
controller?: null;
|
|
169
|
-
stash?: null;
|
|
170
|
-
staked?: null;
|
|
171
|
-
account?: string;
|
|
172
|
-
};
|
|
173
|
-
/**
|
|
174
|
-
* Transaction method specific args
|
|
175
|
-
*/
|
|
176
|
-
export interface StakeArgs {
|
|
177
|
-
value: string;
|
|
178
|
-
controller: {
|
|
179
|
-
id: string;
|
|
180
|
-
};
|
|
181
|
-
payee: StakeArgsPayee;
|
|
182
|
-
}
|
|
183
|
-
export interface StakeMoreArgs {
|
|
184
|
-
maxAdditional: string;
|
|
185
|
-
}
|
|
186
|
-
export interface StakeMoreCallArgs {
|
|
187
|
-
max_additional: string;
|
|
188
|
-
}
|
|
189
|
-
export interface UnstakeArgs {
|
|
190
|
-
value: string;
|
|
191
|
-
}
|
|
192
|
-
export interface WithdrawUnstakedArgs {
|
|
193
|
-
numSlashingSpans: number;
|
|
194
|
-
}
|
|
195
|
-
export interface ClaimArgs {
|
|
196
|
-
validatorStash: string;
|
|
197
|
-
era: string;
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* The types of proxies that can be setup and used
|
|
201
|
-
* https://wiki.polkadot.network/docs/learn-proxies#proxy-types
|
|
202
|
-
*/
|
|
203
|
-
export declare enum ProxyType {
|
|
204
|
-
ANY = "Any",
|
|
205
|
-
NON_TRANSFER = "NonTransfer",
|
|
206
|
-
STAKING = "Staking",
|
|
207
|
-
IDENTTITY_JUDGEMENT = "IdentityJudgement",
|
|
208
|
-
CANCEL_PROXY = "CancelProxy"
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Transaction method specific args
|
|
212
|
-
*/
|
|
213
|
-
export interface AddProxyArgs {
|
|
214
|
-
delegate: string | AccountId;
|
|
215
|
-
delay: string;
|
|
216
|
-
proxyType: ProxyType;
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Transaction method specific args
|
|
220
|
-
*/
|
|
221
|
-
export interface AddAnonymousProxyArgs {
|
|
222
|
-
proxyType: ProxyType;
|
|
223
|
-
index: string;
|
|
224
|
-
delay: string;
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Transaction method specific args
|
|
228
|
-
*/
|
|
229
|
-
export type BatchCallObject = {
|
|
230
|
-
callIndex: string;
|
|
231
|
-
args: Record<string, any> | AddProxyBatchCallArgs | AddAnonymousProxyBatchCallArgs | StakeBatchCallArgs | StakeMoreArgs | StakeMoreCallArgs | UnbondCallArgs;
|
|
232
|
-
};
|
|
233
|
-
export interface BatchArgs {
|
|
234
|
-
calls: BatchCallObject[];
|
|
235
|
-
}
|
|
236
|
-
export interface AddAnonymousProxyBatchCallArgs {
|
|
237
|
-
proxy_type: ProxyType;
|
|
238
|
-
index: number;
|
|
239
|
-
delay: number;
|
|
240
|
-
}
|
|
241
|
-
export interface AddProxyBatchCallArgs {
|
|
242
|
-
delegate: string | AccountId;
|
|
243
|
-
proxy_type: ProxyType;
|
|
244
|
-
delay: number;
|
|
245
|
-
}
|
|
246
|
-
export type AccountId = {
|
|
247
|
-
id: string;
|
|
248
|
-
};
|
|
249
|
-
export type StakeBatchCallPayeeStaked = {
|
|
250
|
-
staked: null;
|
|
251
|
-
};
|
|
252
|
-
export type StakeBatchCallPayeeStash = {
|
|
253
|
-
stash: null;
|
|
254
|
-
};
|
|
255
|
-
export type StakeBatchCallPayeeController = {
|
|
256
|
-
controller: null;
|
|
257
|
-
};
|
|
258
|
-
export type StakeBatchCallPayeeAccount = {
|
|
259
|
-
account: string;
|
|
260
|
-
};
|
|
261
|
-
export type StakeBatchCallPayee = StakeBatchCallPayeeStaked | StakeBatchCallPayeeStash | StakeBatchCallPayeeController | StakeBatchCallPayeeAccount;
|
|
262
|
-
export interface StakeBatchCallArgs {
|
|
263
|
-
value: string;
|
|
264
|
-
controller?: {
|
|
265
|
-
id: string;
|
|
266
|
-
};
|
|
267
|
-
payee: StakeBatchCallPayee;
|
|
268
|
-
}
|
|
269
|
-
export interface UnstakeBatchCallArgs {
|
|
270
|
-
value: string;
|
|
271
|
-
}
|
|
272
|
-
export interface UnbondCallArgs {
|
|
273
|
-
value: string;
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Transaction method specific args
|
|
277
|
-
*/
|
|
278
|
-
export type ProxyCallArgs = {
|
|
279
|
-
callIndex: string;
|
|
280
|
-
args: TransferArgs;
|
|
281
|
-
};
|
|
282
|
-
/**
|
|
283
|
-
* Transaction method specific args
|
|
284
|
-
*/
|
|
285
|
-
export interface ProxyArgs {
|
|
286
|
-
real: string | AccountId;
|
|
287
|
-
forceProxyType: ProxyType;
|
|
288
|
-
}
|
|
289
68
|
/**
|
|
290
69
|
* Decoded TxMethod from a transaction hex
|
|
291
70
|
*/
|
|
292
71
|
export interface TxMethod {
|
|
293
|
-
args: TransferArgs | TransferAllArgs
|
|
72
|
+
args: TransferArgs | TransferAllArgs;
|
|
294
73
|
name: MethodNames;
|
|
295
74
|
pallet: string;
|
|
296
75
|
}
|
|
@@ -313,18 +92,10 @@ export interface CreateBaseTxInfo {
|
|
|
313
92
|
}
|
|
314
93
|
export interface TransactionExplanation extends BaseTransactionExplanation {
|
|
315
94
|
type: TransactionType;
|
|
316
|
-
forceProxyType?: ProxyType;
|
|
317
|
-
controller?: string;
|
|
318
95
|
payee?: string;
|
|
319
|
-
owner?: string;
|
|
320
|
-
proxyType?: string;
|
|
321
|
-
delay?: string;
|
|
322
96
|
}
|
|
323
97
|
export declare enum TransactionTypes {
|
|
324
|
-
TRANSFER = "transfer"
|
|
325
|
-
STAKING = "staking",
|
|
326
|
-
ADDR_INIT = "addressInitialization",
|
|
327
|
-
UNSTAKING = "unstaking"
|
|
98
|
+
TRANSFER = "transfer"
|
|
328
99
|
}
|
|
329
100
|
export interface Material {
|
|
330
101
|
genesisHash: string;
|
|
@@ -334,4 +105,23 @@ export interface Material {
|
|
|
334
105
|
txVersion: number;
|
|
335
106
|
metadata: `0x${string}`;
|
|
336
107
|
}
|
|
108
|
+
export interface SignTransactionOptions extends BaseSignTransactionOptions {
|
|
109
|
+
txPrebuild: TransactionPrebuild;
|
|
110
|
+
prv: string;
|
|
111
|
+
}
|
|
112
|
+
export interface TransactionPrebuild {
|
|
113
|
+
txHex: string;
|
|
114
|
+
transaction: TxData;
|
|
115
|
+
}
|
|
116
|
+
export interface ExplainTransactionOptions {
|
|
117
|
+
txPrebuild: TransactionPrebuild;
|
|
118
|
+
publicKey: string;
|
|
119
|
+
feeInfo: {
|
|
120
|
+
fee: string;
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export interface VerifiedTransactionParameters {
|
|
124
|
+
txHex: string;
|
|
125
|
+
prv: string;
|
|
126
|
+
}
|
|
337
127
|
//# sourceMappingURL=iface.d.ts.map
|