@bitgo/sdk-coin-flrp 1.3.3 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/flrp.d.ts +6 -75
- package/dist/src/flrp.d.ts.map +1 -1
- package/dist/src/flrp.js +13 -298
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -2
- package/dist/src/lib/ExportInCTxBuilder.d.ts +51 -0
- package/dist/src/lib/ExportInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ExportInCTxBuilder.js +186 -0
- package/dist/src/lib/ExportInPTxBuilder.d.ts +47 -0
- package/dist/src/lib/ExportInPTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ExportInPTxBuilder.js +273 -0
- package/dist/src/lib/ImportInCTxBuilder.d.ts +48 -0
- package/dist/src/lib/ImportInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ImportInCTxBuilder.js +215 -0
- package/dist/src/lib/ImportInPTxBuilder.d.ts +33 -0
- package/dist/src/lib/ImportInPTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ImportInPTxBuilder.js +180 -0
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts +18 -16
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicInCTransactionBuilder.js +38 -36
- package/dist/src/lib/atomicTransactionBuilder.d.ts +42 -79
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicTransactionBuilder.js +138 -281
- package/dist/src/lib/iface.d.ts +50 -51
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +22 -10
- package/dist/src/lib/index.d.ts +2 -3
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +5 -6
- package/dist/src/lib/keyPair.d.ts +1 -1
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +9 -5
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +32 -67
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +91 -205
- package/dist/src/lib/transaction.d.ts +8 -73
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +159 -210
- package/dist/src/lib/transactionBuilder.d.ts +56 -34
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +113 -70
- package/dist/src/lib/transactionBuilderFactory.d.ts +35 -30
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +133 -74
- package/dist/src/lib/utils.d.ts +73 -151
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +197 -390
- package/dist/test/resources/transactionData/exportInC.d.ts +20 -0
- package/dist/test/resources/transactionData/exportInC.d.ts.map +1 -0
- package/dist/test/resources/transactionData/exportInC.js +34 -0
- package/dist/test/resources/transactionData/exportInP.d.ts +69 -0
- package/dist/test/resources/transactionData/exportInP.d.ts.map +1 -0
- package/dist/test/resources/transactionData/exportInP.js +140 -0
- package/dist/test/resources/transactionData/importInC.d.ts +27 -0
- package/dist/test/resources/transactionData/importInC.d.ts.map +1 -0
- package/dist/test/resources/transactionData/importInC.js +44 -0
- package/dist/test/resources/transactionData/importInP.d.ts +35 -0
- package/dist/test/resources/transactionData/importInP.d.ts.map +1 -0
- package/dist/test/resources/transactionData/importInP.js +58 -0
- package/dist/test/unit/lib/exportInCTxBuilder.js +95 -513
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts +1 -1
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts.map +1 -1
- package/dist/test/unit/lib/exportInPTxBuilder.js +110 -366
- package/dist/test/unit/lib/importInCTxBuilder.d.ts +1 -1
- package/dist/test/unit/lib/importInCTxBuilder.d.ts.map +1 -1
- package/dist/test/unit/lib/importInCTxBuilder.js +40 -251
- package/dist/test/unit/lib/importInPTxBuilder.d.ts +1 -1
- package/dist/test/unit/lib/importInPTxBuilder.d.ts.map +1 -1
- package/dist/test/unit/lib/importInPTxBuilder.js +61 -489
- package/dist/test/unit/lib/signFlowTestSuit.d.ts +20 -0
- package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +1 -0
- package/dist/test/unit/lib/signFlowTestSuit.js +89 -0
- package/dist/test/unit/lib/utils.js +29 -302
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -10
- package/dist/src/iface.d.ts +0 -25
- package/dist/src/iface.d.ts.map +0 -1
- package/dist/src/iface.js +0 -3
- package/dist/src/lib/constants.d.ts +0 -170
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -227
- package/dist/src/lib/delegatorTxBuilder.d.ts +0 -58
- package/dist/src/lib/delegatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/delegatorTxBuilder.js +0 -224
- package/dist/src/lib/errors.d.ts +0 -8
- package/dist/src/lib/errors.d.ts.map +0 -1
- package/dist/src/lib/errors.js +0 -19
- package/dist/src/lib/exportInCTxBuilder.d.ts +0 -77
- package/dist/src/lib/exportInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportInCTxBuilder.js +0 -199
- package/dist/src/lib/exportInPTxBuilder.d.ts +0 -30
- package/dist/src/lib/exportInPTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportInPTxBuilder.js +0 -120
- package/dist/src/lib/importInCTxBuilder.d.ts +0 -67
- package/dist/src/lib/importInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importInCTxBuilder.js +0 -403
- package/dist/src/lib/importInPTxBuilder.d.ts +0 -73
- package/dist/src/lib/importInPTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importInPTxBuilder.js +0 -464
- package/dist/src/lib/types.d.ts +0 -78
- package/dist/src/lib/types.d.ts.map +0 -1
- package/dist/src/lib/types.js +0 -5
- package/dist/src/lib/validatorTxBuilder.d.ts +0 -40
- package/dist/src/lib/validatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/validatorTxBuilder.js +0 -180
- package/dist/test/unit/delegatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/delegatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/delegatorTxBuilder.test.js +0 -233
- package/dist/test/unit/flrp.d.ts +0 -2
- package/dist/test/unit/flrp.d.ts.map +0 -1
- package/dist/test/unit/flrp.js +0 -118
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts +0 -2
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/atomicTransactionBuilder.js +0 -222
- package/dist/test/unit/lib/transaction.d.ts +0 -2
- package/dist/test/unit/lib/transaction.d.ts.map +0 -1
- package/dist/test/unit/lib/transaction.js +0 -460
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.js +0 -271
- package/dist/test/unit/smoke.d.ts +0 -2
- package/dist/test/unit/smoke.d.ts.map +0 -1
- package/dist/test/unit/smoke.js +0 -23
- package/dist/test/unit/transactionBuilder.test.d.ts +0 -2
- package/dist/test/unit/transactionBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder.test.js +0 -114
- package/dist/test/unit/validatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/validatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/validatorTxBuilder.test.js +0 -293
|
@@ -1,91 +1,150 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TransactionBuilderFactory =
|
|
6
|
+
exports.TransactionBuilderFactory = void 0;
|
|
7
|
+
const flarejs_1 = require("@flarenetwork/flarejs");
|
|
4
8
|
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
const ExportInPTxBuilder_1 = require("./ExportInPTxBuilder");
|
|
10
|
+
const ImportInPTxBuilder_1 = require("./ImportInPTxBuilder");
|
|
11
|
+
const ExportInCTxBuilder_1 = require("./ExportInCTxBuilder");
|
|
12
|
+
const ImportInCTxBuilder_1 = require("./ImportInCTxBuilder");
|
|
13
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
14
|
+
class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
|
|
15
|
+
constructor(_coinConfig) {
|
|
16
|
+
super(_coinConfig);
|
|
17
|
+
this.recoverSigner = false;
|
|
10
18
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Extract credentials from remaining bytes after transaction using FlareJS codec.
|
|
21
|
+
* This is the proper way to parse credentials - using the codec's UnpackPrefix method.
|
|
22
|
+
* @param credentialBytes Remaining bytes after the transaction (starts with numCredentials)
|
|
23
|
+
* @param codec The FlareJS codec to use for unpacking
|
|
24
|
+
* @returns Array of parsed credentials
|
|
25
|
+
*/
|
|
26
|
+
extractCredentialsWithCodec(credentialBytes, codec) {
|
|
27
|
+
const credentials = [];
|
|
28
|
+
if (credentialBytes.length < 4) {
|
|
29
|
+
return credentials;
|
|
30
|
+
}
|
|
31
|
+
// Skip the first 4 bytes (numCredentials as Int type)
|
|
32
|
+
// The codec doesn't know about this Int, so we skip it manually
|
|
33
|
+
let remainingBytes = credentialBytes.slice(4);
|
|
34
|
+
let moreCredentials = true;
|
|
35
|
+
do {
|
|
36
|
+
try {
|
|
37
|
+
const unpacked = codec.UnpackPrefix(remainingBytes);
|
|
38
|
+
credentials.push(unpacked[0]);
|
|
39
|
+
remainingBytes = unpacked[1];
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
moreCredentials = false;
|
|
43
|
+
}
|
|
44
|
+
} while (remainingBytes.length > 0 && moreCredentials);
|
|
45
|
+
return credentials;
|
|
30
46
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
47
|
+
/** @inheritdoc */
|
|
48
|
+
from(raw) {
|
|
49
|
+
utils_1.default.validateRawTransaction(raw);
|
|
50
|
+
const rawNoHex = utils_1.default.removeHexPrefix(raw);
|
|
51
|
+
const rawBuffer = Buffer.from(rawNoHex, 'hex');
|
|
52
|
+
let txSource;
|
|
53
|
+
const network = this._coinConfig.network;
|
|
54
|
+
let tx;
|
|
55
|
+
let credentials = [];
|
|
56
|
+
try {
|
|
57
|
+
txSource = 'EVM';
|
|
58
|
+
const evmManager = flarejs_1.utils.getManagerForVM('EVM');
|
|
59
|
+
// Use getCodecFromBuffer to get both codec and remaining bytes
|
|
60
|
+
const [codec, txBytes] = evmManager.getCodecFromBuffer(rawBuffer);
|
|
61
|
+
// UnpackPrefix returns [transaction, remainingBytes]
|
|
62
|
+
const [transaction, credentialBytes] = codec.UnpackPrefix(txBytes);
|
|
63
|
+
tx = transaction;
|
|
64
|
+
// Extract credentials from remaining bytes using codec
|
|
65
|
+
if (credentialBytes.length > 4) {
|
|
66
|
+
credentials = this.extractCredentialsWithCodec(credentialBytes, codec);
|
|
67
|
+
}
|
|
68
|
+
const blockchainId = tx.getBlockchainId();
|
|
69
|
+
if (blockchainId === network.cChainBlockchainID) {
|
|
70
|
+
console.log('Parsed as EVM transaction on C-Chain');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
txSource = 'PVM';
|
|
75
|
+
const pvmManager = flarejs_1.utils.getManagerForVM('PVM');
|
|
76
|
+
// Use getCodecFromBuffer to get both codec and remaining bytes
|
|
77
|
+
const [codec, txBytes] = pvmManager.getCodecFromBuffer(rawBuffer);
|
|
78
|
+
// UnpackPrefix returns [transaction, remainingBytes]
|
|
79
|
+
const [transaction, credentialBytes] = codec.UnpackPrefix(txBytes);
|
|
80
|
+
tx = transaction;
|
|
81
|
+
// Extract credentials from remaining bytes using codec
|
|
82
|
+
if (credentialBytes.length > 4) {
|
|
83
|
+
credentials = this.extractCredentialsWithCodec(credentialBytes, codec);
|
|
84
|
+
}
|
|
85
|
+
const blockchainId = tx.getBlockchainId();
|
|
86
|
+
if (blockchainId === network.blockchainID) {
|
|
87
|
+
console.log('Parsed as PVM transaction on P-Chain');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (txSource === 'EVM') {
|
|
91
|
+
if (ExportInCTxBuilder_1.ExportInCTxBuilder.verifyTxType(tx._type)) {
|
|
92
|
+
const exportBuilder = this.getExportInCBuilder();
|
|
93
|
+
exportBuilder.initBuilder(tx, rawBuffer, credentials);
|
|
94
|
+
return exportBuilder;
|
|
95
|
+
}
|
|
96
|
+
else if (ImportInCTxBuilder_1.ImportInCTxBuilder.verifyTxType(tx._type)) {
|
|
97
|
+
const importBuilder = this.getImportInCBuilder();
|
|
98
|
+
importBuilder.initBuilder(tx, rawBuffer, credentials);
|
|
99
|
+
return importBuilder;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else if (txSource === 'PVM') {
|
|
103
|
+
if (ImportInPTxBuilder_1.ImportInPTxBuilder.verifyTxType(tx._type)) {
|
|
104
|
+
const importBuilder = this.getImportInPBuilder();
|
|
105
|
+
importBuilder.initBuilder(tx, rawBuffer, credentials);
|
|
106
|
+
return importBuilder;
|
|
107
|
+
}
|
|
108
|
+
else if (ExportInPTxBuilder_1.ExportInPTxBuilder.verifyTxType(tx._type)) {
|
|
109
|
+
const exportBuilder = this.getExportInPBuilder();
|
|
110
|
+
exportBuilder.initBuilder(tx, rawBuffer, credentials);
|
|
111
|
+
return exportBuilder;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
throw new sdk_core_1.NotSupported('Transaction type not supported');
|
|
34
115
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
get transactionType() {
|
|
39
|
-
return sdk_core_1.TransactionType.AddDelegator;
|
|
116
|
+
/** @inheritdoc */
|
|
117
|
+
getTransferBuilder() {
|
|
118
|
+
throw new sdk_core_1.NotSupported('Transfer is not supported in P Chain');
|
|
40
119
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
120
|
+
/**
|
|
121
|
+
* Export Cross chain transfer
|
|
122
|
+
*/
|
|
123
|
+
getExportInPBuilder() {
|
|
124
|
+
return new ExportInPTxBuilder_1.ExportInPTxBuilder(this._coinConfig);
|
|
44
125
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
class TransactionBuilderFactory {
|
|
51
|
-
constructor(coinConfig) {
|
|
52
|
-
this._coinConfig = coinConfig;
|
|
126
|
+
/**
|
|
127
|
+
* Import Cross chain transfer
|
|
128
|
+
*/
|
|
129
|
+
getImportInPBuilder() {
|
|
130
|
+
return new ImportInPTxBuilder_1.ImportInPTxBuilder(this._coinConfig);
|
|
53
131
|
}
|
|
54
132
|
/**
|
|
55
|
-
*
|
|
56
|
-
* @param txHex - Transaction hex string
|
|
133
|
+
* Import in C chain Cross chain transfer
|
|
57
134
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// For now, return a basic export builder as that's the most common use case
|
|
61
|
-
if (!txHex) {
|
|
62
|
-
throw new Error('Transaction hex is required');
|
|
63
|
-
}
|
|
64
|
-
// Create a mock export builder for now
|
|
65
|
-
// In the future, this will parse the transaction and determine the correct type
|
|
66
|
-
const builder = new ExportTxBuilder(this._coinConfig);
|
|
67
|
-
// Initialize with the hex data (placeholder)
|
|
68
|
-
builder.initBuilder({ txHex });
|
|
69
|
-
return builder;
|
|
135
|
+
getImportInCBuilder() {
|
|
136
|
+
return new ImportInCTxBuilder_1.ImportInCTxBuilder(this._coinConfig);
|
|
70
137
|
}
|
|
71
138
|
/**
|
|
72
|
-
*
|
|
73
|
-
* @param type - Transaction type
|
|
139
|
+
* Export in C chain Cross chain transfer
|
|
74
140
|
*/
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
case sdk_core_1.TransactionType.AddValidator:
|
|
82
|
-
return new ValidatorTxBuilder(this._coinConfig);
|
|
83
|
-
case sdk_core_1.TransactionType.AddDelegator:
|
|
84
|
-
return new DelegatorTxBuilder(this._coinConfig);
|
|
85
|
-
default:
|
|
86
|
-
throw new sdk_core_1.NotImplementedError(`Transaction type ${type} not supported`);
|
|
87
|
-
}
|
|
141
|
+
getExportInCBuilder() {
|
|
142
|
+
return new ExportInCTxBuilder_1.ExportInCTxBuilder(this._coinConfig);
|
|
143
|
+
}
|
|
144
|
+
/** @inheritdoc */
|
|
145
|
+
getWalletInitializationBuilder() {
|
|
146
|
+
throw new sdk_core_1.NotSupported('Wallet initialization is not needed');
|
|
88
147
|
}
|
|
89
148
|
}
|
|
90
149
|
exports.TransactionBuilderFactory = TransactionBuilderFactory;
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw4Q0FBdUU7QUFDdkUseUVBQXNFO0FBRXRFLDJEQUEyRDtBQUMzRCxNQUFhLGVBQWdCLFNBQVEsbURBQXdCO0lBQzNELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixxREFBcUQ7SUFDdkQsQ0FBQztDQUNGO0FBVEQsMENBU0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsbURBQXdCO0lBQzNELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixxREFBcUQ7SUFDdkQsQ0FBQztDQUNGO0FBVEQsMENBU0M7QUFFRCxNQUFhLGtCQUFtQixTQUFRLG1EQUF3QjtJQUM5RCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLFlBQVksQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEIscURBQXFEO0lBQ3ZELENBQUM7Q0FDRjtBQVRELGdEQVNDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSxtREFBd0I7SUFDOUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxZQUFZLENBQUM7SUFDdEMsQ0FBQztJQUVELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLHFEQUFxRDtJQUN2RCxDQUFDO0NBQ0Y7QUFURCxnREFTQztBQUVEOztHQUVHO0FBQ0gsTUFBYSx5QkFBeUI7SUFHcEMsWUFBWSxVQUFnQztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEtBQWE7UUFDaEIsc0ZBQXNGO1FBQ3RGLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxnRkFBZ0Y7UUFDaEYsTUFBTSxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXRELDZDQUE2QztRQUM3QyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUUvQixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLElBQXFCO1FBQzlCLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLDBCQUFlLENBQUMsTUFBTTtnQkFDekIsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0MsS0FBSywwQkFBZSxDQUFDLE1BQU07Z0JBQ3pCLE9BQU8sSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQy9DLEtBQUssMEJBQWUsQ0FBQyxZQUFZO2dCQUMvQixPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xELEtBQUssMEJBQWUsQ0FBQyxZQUFZO2dCQUMvQixPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xEO2dCQUNFLE1BQU0sSUFBSSw4QkFBbUIsQ0FBQyxvQkFBb0IsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUE5Q0QsOERBOENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IE5vdEltcGxlbWVudGVkRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2F0b21pY1RyYW5zYWN0aW9uQnVpbGRlcic7XG5cbi8vIFBsYWNlaG9sZGVyIGJ1aWxkZXJzIC0gYmFzaWMgaW1wbGVtZW50YXRpb25zIGZvciB0ZXN0aW5nXG5leHBvcnQgY2xhc3MgRXhwb3J0VHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkV4cG9ydDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgLy8gRG9uJ3QgdGhyb3cgZXJyb3IsIGFsbG93IHBsYWNlaG9sZGVyIGZ1bmN0aW9uYWxpdHlcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW1wb3J0VHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkltcG9ydDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgLy8gRG9uJ3QgdGhyb3cgZXJyb3IsIGFsbG93IHBsYWNlaG9sZGVyIGZ1bmN0aW9uYWxpdHlcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVmFsaWRhdG9yVHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkFkZFZhbGlkYXRvcjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgLy8gRG9uJ3QgdGhyb3cgZXJyb3IsIGFsbG93IHBsYWNlaG9sZGVyIGZ1bmN0aW9uYWxpdHlcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGVsZWdhdG9yVHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkFkZERlbGVnYXRvcjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgLy8gRG9uJ3QgdGhyb3cgZXJyb3IsIGFsbG93IHBsYWNlaG9sZGVyIGZ1bmN0aW9uYWxpdHlcbiAgfVxufVxuXG4vKipcbiAqIEZhY3RvcnkgZm9yIEZsYXJlIFAtY2hhaW4gdHJhbnNhY3Rpb24gYnVpbGRlcnNcbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+O1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgdGhpcy5fY29pbkNvbmZpZyA9IGNvaW5Db25maWc7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgdHJhbnNhY3Rpb24gYnVpbGRlciBmcm9tIGEgaGV4IHN0cmluZ1xuICAgKiBAcGFyYW0gdHhIZXggLSBUcmFuc2FjdGlvbiBoZXggc3RyaW5nXG4gICAqL1xuICBmcm9tKHR4SGV4OiBzdHJpbmcpOiBBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIC8vIFRPRE86IFBhcnNlIHRoZSBoZXggYW5kIGRldGVybWluZSB0cmFuc2FjdGlvbiB0eXBlLCB0aGVuIHJldHVybiBhcHByb3ByaWF0ZSBidWlsZGVyXG4gICAgLy8gRm9yIG5vdywgcmV0dXJuIGEgYmFzaWMgZXhwb3J0IGJ1aWxkZXIgYXMgdGhhdCdzIHRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZVxuICAgIGlmICghdHhIZXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJhbnNhY3Rpb24gaGV4IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGEgbW9jayBleHBvcnQgYnVpbGRlciBmb3Igbm93XG4gICAgLy8gSW4gdGhlIGZ1dHVyZSwgdGhpcyB3aWxsIHBhcnNlIHRoZSB0cmFuc2FjdGlvbiBhbmQgZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHR5cGVcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEV4cG9ydFR4QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcblxuICAgIC8vIEluaXRpYWxpemUgd2l0aCB0aGUgaGV4IGRhdGEgKHBsYWNlaG9sZGVyKVxuICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIoeyB0eEhleCB9KTtcblxuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZm9yIGEgc3BlY2lmaWMgdHlwZVxuICAgKiBAcGFyYW0gdHlwZSAtIFRyYW5zYWN0aW9uIHR5cGVcbiAgICovXG4gIGdldEJ1aWxkZXIodHlwZTogVHJhbnNhY3Rpb25UeXBlKTogQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkV4cG9ydDpcbiAgICAgICAgcmV0dXJuIG5ldyBFeHBvcnRUeEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5JbXBvcnQ6XG4gICAgICAgIHJldHVybiBuZXcgSW1wb3J0VHhCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkVmFsaWRhdG9yOlxuICAgICAgICByZXR1cm4gbmV3IFZhbGlkYXRvclR4QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFkZERlbGVnYXRvcjpcbiAgICAgICAgcmV0dXJuIG5ldyBEZWxlZ2F0b3JUeEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcihgVHJhbnNhY3Rpb24gdHlwZSAke3R5cGV9IG5vdCBzdXBwb3J0ZWRgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBOEY7QUFDOUYsOENBQThFO0FBRzlFLDZEQUEwRDtBQUMxRCw2REFBMEQ7QUFDMUQsNkRBQTBEO0FBQzFELDZEQUEwRDtBQUMxRCxvREFBNEI7QUFFNUIsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFHMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIWCxrQkFBYSxHQUFHLEtBQUssQ0FBQztJQUloQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssMkJBQTJCLENBQUMsZUFBMkIsRUFBRSxLQUFVO1FBQ3pFLE1BQU0sV0FBVyxHQUFpQixFQUFFLENBQUM7UUFDckMsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxzREFBc0Q7UUFDdEQsZ0VBQWdFO1FBQ2hFLElBQUksY0FBYyxHQUFlLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTNCLEdBQUcsQ0FBQztZQUNGLElBQUksQ0FBQztnQkFDSCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNwRCxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQWUsQ0FBQyxDQUFDO2dCQUM1QyxjQUFjLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBZSxDQUFDO1lBQzdDLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUMs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LENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQjtRQUNqQixPQUFPLElBQUksdUNBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQjtRQUNqQixPQUFPLElBQUksdUNBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQjtRQUNqQixPQUFPLElBQUksdUNBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsOEJBQThCO1FBQzVCLE1BQU0sSUFBSSx1QkFBWSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGO0FBdEpELDhEQXNKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHV0aWxzIGFzIEZsYXJlVXRpbHMsIGV2bVNlcmlhbCwgcHZtU2VyaWFsLCBDcmVkZW50aWFsIH0gZnJvbSAnQGZsYXJlbmV0d29yay9mbGFyZWpzJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBOb3RTdXBwb3J0ZWQgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgRmxhcmVOZXR3b3JrLCBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgRXhwb3J0SW5QVHhCdWlsZGVyIH0gZnJvbSAnLi9FeHBvcnRJblBUeEJ1aWxkZXInO1xuaW1wb3J0IHsgSW1wb3J0SW5QVHhCdWlsZGVyIH0gZnJvbSAnLi9JbXBvcnRJblBUeEJ1aWxkZXInO1xuaW1wb3J0IHsgRXhwb3J0SW5DVHhCdWlsZGVyIH0gZnJvbSAnLi9FeHBvcnRJbkNUeEJ1aWxkZXInO1xuaW1wb3J0IHsgSW1wb3J0SW5DVHhCdWlsZGVyIH0gZnJvbSAnLi9JbXBvcnRJbkNUeEJ1aWxkZXInO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgcHJvdGVjdGVkIHJlY292ZXJTaWduZXIgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCBjcmVkZW50aWFscyBmcm9tIHJlbWFpbmluZyBieXRlcyBhZnRlciB0cmFuc2FjdGlvbiB1c2luZyBGbGFyZUpTIGNvZGVjLlxuICAgKiBUaGlzIGlzIHRoZSBwcm9wZXIgd2F5IHRvIHBhcnNlIGNyZWRlbnRpYWxzIC0gdXNpbmcgdGhlIGNvZGVjJ3MgVW5wYWNrUHJlZml4IG1ldGhvZC5cbiAgICogQHBhcmFtIGNyZWRlbnRpYWxCeXRlcyBSZW1haW5pbmcgYnl0ZXMgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIChzdGFydHMgd2l0aCBudW1DcmVkZW50aWFscylcbiAgICogQHBhcmFtIGNvZGVjIFRoZSBGbGFyZUpTIGNvZGVjIHRvIHVzZSBmb3IgdW5wYWNraW5nXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHBhcnNlZCBjcmVkZW50aWFsc1xuICAgKi9cbiAgcHJpdmF0ZSBleHRyYWN0Q3JlZGVudGlhbHNXaXRoQ29kZWMoY3JlZGVudGlhbEJ5dGVzOiBVaW50OEFycmF5LCBjb2RlYzogYW55KTogQ3JlZGVudGlhbFtdIHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdID0gW107XG4gICAgaWYgKGNyZWRlbnRpYWxCeXRlcy5sZW5ndGggPCA0KSB7XG4gICAgICByZXR1cm4gY3JlZGVudGlhbHM7XG4gICAgfVxuXG4gICAgLy8gU2tpcCB0aGUgZmlyc3QgNCBieXRlcyAobnVtQ3JlZGVudGlhbHMgYXMgSW50IHR5cGUpXG4gICAgLy8gVGhlIGNvZGVjIGRvZXNuJ3Qga25vdyBhYm91dCB0aGlzIEludCwgc28gd2Ugc2tpcCBpdCBtYW51YWxseVxuICAgIGxldCByZW1haW5pbmdCeXRlczogVWludDhBcnJheSA9IGNyZWRlbnRpYWxCeXRlcy5zbGljZSg0KTtcbiAgICBsZXQgbW9yZUNyZWRlbnRpYWxzID0gdHJ1ZTtcblxuICAgIGRvIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVucGFja2VkID0gY29kZWMuVW5wYWNrUHJlZml4KHJlbWFpbmluZ0J5dGVzKTtcbiAgICAgICAgY3JlZGVudGlhbHMucHVzaCh1bnBhY2tlZFswXSBhcyBDcmVkZW50aWFsKTtcbiAgICAgICAgcmVtYWluaW5nQnl0ZXMgPSB1bnBhY2tlZFsxXSBhcyBVaW50OEFycmF5O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBtb3JlQ3JlZGVudGlhbHMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IHdoaWxlIChyZW1haW5pbmdCeXRlcy5sZW5ndGggPiAwICYmIG1vcmVDcmVkZW50aWFscyk7XG5cbiAgICByZXR1cm4gY3JlZGVudGlhbHM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShyYXc6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdXRpbHMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgIGNvbnN0IHJhd05vSGV4ID0gdXRpbHMucmVtb3ZlSGV4UHJlZml4KHJhdyk7XG4gICAgY29uc3QgcmF3QnVmZmVyID0gQnVmZmVyLmZyb20ocmF3Tm9IZXgsICdoZXgnKTtcbiAgICBsZXQgdHhTb3VyY2U6ICdFVk0nIHwgJ1BWTSc7XG5cbiAgICBjb25zdCBuZXR3b3JrID0gdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrIGFzIEZsYXJlTmV0d29yaztcbiAgICBsZXQgdHg6IGFueTtcbiAgICBsZXQgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHR4U291cmNlID0gJ0VWTSc7XG4gICAgICBjb25zdCBldm1NYW5hZ2VyID0gRmxhcmVVdGlscy5nZXRNYW5hZ2VyRm9yVk0oJ0VWTScpO1xuXG4gICAgICAvLyBVc2UgZ2V0Q29kZWNGcm9tQnVmZmVyIHRvIGdldCBib3RoIGNvZGVjIGFuZCByZW1haW5pbmcgYnl0ZXNcbiAgICAgIGNvbnN0IFtjb2RlYywgdHhCeXRlc10gPSBldm1NYW5hZ2VyLmdldENvZGVjRnJvbUJ1ZmZlcihyYXdCdWZmZXIpO1xuICAgICAgLy8gVW5wYWNrUHJlZml4IHJldHVybnMgW3RyYW5zYWN0aW9uLCByZW1haW5pbmdCeXRlc11cbiAgICAgIGNvbnN0IFt0cmFuc2FjdGlvbiwgY3JlZGVudGlhbEJ5dGVzXSA9IGNvZGVjLlVucGFja1ByZWZpeCh0eEJ5dGVzKSBhcyBbYW55LCBVaW50OEFycmF5XTtcbiAgICAgIHR4ID0gdHJhbnNhY3Rpb247XG5cbiAgICAgIC8vIEV4dHJhY3QgY3JlZGVudGlhbHMgZnJvbSByZW1haW5pbmcgYnl0ZXMgdXNpbmcgY29kZWNcbiAgICAgIGlmIChjcmVkZW50aWFsQnl0ZXMubGVuZ3RoID4gNCkge1xuICAgICAgICBjcmVkZW50aWFscyA9IHRoaXMuZXh0cmFjdENyZWRlbnRpYWxzV2l0aENvZGVjKGNyZWRlbnRpYWxCeXRlcywgY29kZWMpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBibG9ja2NoYWluSWQgPSB0eC5nZXRCbG9ja2NoYWluSWQoKTtcbiAgICAgIGlmIChibG9ja2NoYWluSWQgPT09IG5ldHdvcmsuY0NoYWluQmxvY2tjaGFpbklEKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdQYXJzZWQgYXMgRVZNIHRyYW5zYWN0aW9uIG9uIEMtQ2hhaW4nKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0eFNvdXJjZSA9ICdQVk0nO1xuICAgICAgY29uc3QgcHZtTWFuYWdlciA9IEZsYXJlVXRpbHMuZ2V0TWFuYWdlckZvclZNKCdQVk0nKTtcblxuICAgICAgLy8gVXNlIGdldENvZGVjRnJvbUJ1ZmZlciB0byBnZXQgYm90aCBjb2RlYyBhbmQgcmVtYWluaW5nIGJ5dGVzXG4gICAgICBjb25zdCBbY29kZWMsIHR4Qnl0ZXNdID0gcHZtTWFuYWdlci5nZXRDb2RlY0Zyb21CdWZmZXIocmF3QnVmZmVyKTtcbiAgICAgIC8vIFVucGFja1ByZWZpeCByZXR1cm5zIFt0cmFuc2FjdGlvbiwgcmVtYWluaW5nQnl0ZXNdXG4gICAgICBjb25zdCBbdHJhbnNhY3Rpb24sIGNyZWRlbnRpYWxCeXRlc10gPSBjb2RlYy5VbnBhY2tQcmVmaXgodHhCeXRlcykgYXMgW2FueSwgVWludDhBcnJheV07XG4gICAgICB0eCA9IHRyYW5zYWN0aW9uO1xuXG4gICAgICAvLyBFeHRyYWN0IGNyZWRlbnRpYWxzIGZyb20gcmVtYWluaW5nIGJ5dGVzIHVzaW5nIGNvZGVjXG4gICAgICBpZiAoY3JlZGVudGlhbEJ5dGVzLmxlbmd0aCA+IDQpIHtcbiAgICAgICAgY3JlZGVudGlhbHMgPSB0aGlzLmV4dHJhY3RDcmVkZW50aWFsc1dpdGhDb2RlYyhjcmVkZW50aWFsQnl0ZXMsIGNvZGVjKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYmxvY2tjaGFpbklkID0gdHguZ2V0QmxvY2tjaGFpbklkKCk7XG4gICAgICBpZiAoYmxvY2tjaGFpbklkID09PSBuZXR3b3JrLmJsb2NrY2hhaW5JRCkge1xuICAgICAgICBjb25zb2xlLmxvZygnUGFyc2VkIGFzIFBWTSB0cmFuc2FjdGlvbiBvbiBQLUNoYWluJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR4U291cmNlID09PSAnRVZNJykge1xuICAgICAgaWYgKEV4cG9ydEluQ1R4QnVpbGRlci52ZXJpZnlUeFR5cGUodHguX3R5cGUpKSB7XG4gICAgICAgIGNvbnN0IGV4cG9ydEJ1aWxkZXIgPSB0aGlzLmdldEV4cG9ydEluQ0J1aWxkZXIoKTtcbiAgICAgICAgZXhwb3J0QnVpbGRlci5pbml0QnVpbGRlcih0eCBhcyBldm1TZXJpYWwuRXhwb3J0VHgsIHJhd0J1ZmZlciwgY3JlZGVudGlhbHMpO1xuICAgICAgICByZXR1cm4gZXhwb3J0QnVpbGRlcjtcbiAgICAgIH0gZWxzZSBpZiAoSW1wb3J0SW5DVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eC5fdHlwZSkpIHtcbiAgICAgICAgY29uc3QgaW1wb3J0QnVpbGRlciA9IHRoaXMuZ2V0SW1wb3J0SW5DQnVpbGRlcigpO1xuICAgICAgICBpbXBvcnRCdWlsZGVyLmluaXRCdWlsZGVyKHR4IGFzIGV2bVNlcmlhbC5JbXBvcnRUeCwgcmF3QnVmZmVyLCBjcmVkZW50aWFscyk7XG4gICAgICAgIHJldHVybiBpbXBvcnRCdWlsZGVyO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHhTb3VyY2UgPT09ICdQVk0nKSB7XG4gICAgICBpZiAoSW1wb3J0SW5QVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eC5fdHlwZSkpIHtcbiAgICAgICAgY29uc3QgaW1wb3J0QnVpbGRlciA9IHRoaXMuZ2V0SW1wb3J0SW5QQnVpbGRlcigpO1xuICAgICAgICBpbXBvcnRCdWlsZGVyLmluaXRCdWlsZGVyKHR4IGFzIHB2bVNlcmlhbC5JbXBvcnRUeCwgcmF3QnVmZmVyLCBjcmVkZW50aWFscyk7XG4gICAgICAgIHJldHVybiBpbXBvcnRCdWlsZGVyO1xuICAgICAgfSBlbHNlIGlmIChFeHBvcnRJblBUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKHR4Ll90eXBlKSkge1xuICAgICAgICBjb25zdCBleHBvcnRCdWlsZGVyID0gdGhpcy5nZXRFeHBvcnRJblBCdWlsZGVyKCk7XG4gICAgICAgIGV4cG9ydEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHggYXMgcHZtU2VyaWFsLkV4cG9ydFR4LCByYXdCdWZmZXIsIGNyZWRlbnRpYWxzKTtcbiAgICAgICAgcmV0dXJuIGV4cG9ydEJ1aWxkZXI7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ1RyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFRyYW5zZmVyQnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ1RyYW5zZmVyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gUCBDaGFpbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCBDcm9zcyBjaGFpbiB0cmFuc2ZlclxuICAgKi9cbiAgZ2V0RXhwb3J0SW5QQnVpbGRlcigpOiBFeHBvcnRJblBUeEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgRXhwb3J0SW5QVHhCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBDcm9zcyBjaGFpbiB0cmFuc2ZlclxuICAgKi9cbiAgZ2V0SW1wb3J0SW5QQnVpbGRlcigpOiBJbXBvcnRJblBUeEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgSW1wb3J0SW5QVHhCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBpbiBDIGNoYWluIENyb3NzIGNoYWluIHRyYW5zZmVyXG4gICAqL1xuICBnZXRJbXBvcnRJbkNCdWlsZGVyKCk6IEltcG9ydEluQ1R4QnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRJbkNUeEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IGluIEMgY2hhaW4gQ3Jvc3MgY2hhaW4gdHJhbnNmZXJcbiAgICovXG4gIGdldEV4cG9ydEluQ0J1aWxkZXIoKTogRXhwb3J0SW5DVHhCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEV4cG9ydEluQ1R4QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdXYWxsZXQgaW5pdGlhbGl6YXRpb24gaXMgbm90IG5lZWRlZCcpO1xuICB9XG59XG4iXX0=
|
package/dist/src/lib/utils.d.ts
CHANGED
|
@@ -1,219 +1,141 @@
|
|
|
1
|
-
import { TransferableOutput } from '@flarenetwork/flarejs';
|
|
1
|
+
import { Signature, TransferableOutput, Id } from '@flarenetwork/flarejs';
|
|
2
2
|
import { BaseUtils, Entry } from '@bitgo/sdk-core';
|
|
3
3
|
import { FlareNetwork } from '@bitgo/statics';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
export declare const createFlexibleHexRegex: (requirePrefix?: boolean) => RegExp;
|
|
4
|
+
import { Buffer } from 'buffer';
|
|
5
|
+
import { Output, DeprecatedTx } from './iface';
|
|
7
6
|
export declare class Utils implements BaseUtils {
|
|
8
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Check if addresses in wallet match UTXO output addresses
|
|
9
|
+
*/
|
|
9
10
|
includeIn(walletAddresses: string[], otxoOutputAddresses: string[]): boolean;
|
|
10
11
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* @
|
|
14
|
-
* @returns {boolean} - the validation result
|
|
12
|
+
* Validates a Flare address or array of addresses
|
|
13
|
+
* @param {string | string[]} address - address(es) to validate
|
|
14
|
+
* @returns {boolean} - validation result
|
|
15
15
|
*/
|
|
16
|
-
/** @inheritdoc */
|
|
17
16
|
isValidAddress(address: string | string[]): boolean;
|
|
18
17
|
private isValidAddressRegex;
|
|
19
18
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
* Validates a block ID
|
|
20
|
+
* @param {string} hash - block ID to validate
|
|
21
|
+
* @returns {boolean} - validation result
|
|
22
|
+
*/
|
|
23
|
+
isValidBlockId(hash: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Validates a public key
|
|
26
|
+
* @param {string} pub - public key to validate
|
|
27
|
+
* @returns {boolean} - validation result
|
|
25
28
|
*/
|
|
26
29
|
isValidPublicKey(pub: string): boolean;
|
|
27
|
-
parseAddress: (address: string) => Buffer;
|
|
28
|
-
stringToAddress: (address: string, hrp?: string) => Buffer;
|
|
29
30
|
/**
|
|
30
|
-
*
|
|
31
|
-
* private key
|
|
32
|
-
*
|
|
33
|
-
* The protocol key format is described in the @stacks/transactions npm package, in the
|
|
34
|
-
* createStacksPrivateKey function:
|
|
35
|
-
* https://github.com/blockstack/stacks.js/blob/master/packages/transactions/src/keys.ts#L125
|
|
36
|
-
*
|
|
37
|
-
* @param {string} prv - the private key (or extended private key) to be validated
|
|
38
|
-
* @returns {boolean} - the validation result
|
|
31
|
+
* Validates a private key
|
|
32
|
+
* @param {string} prv - private key to validate
|
|
33
|
+
* @returns {boolean} - validation result
|
|
39
34
|
*/
|
|
40
35
|
isValidPrivateKey(prv: string): boolean;
|
|
41
36
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* @param {string} maybe - the string to be validated
|
|
45
|
-
* @returns {boolean} - the validation result
|
|
37
|
+
* Checks if a string contains only hex characters
|
|
46
38
|
*/
|
|
47
|
-
allHexChars(
|
|
39
|
+
allHexChars(str: string): boolean;
|
|
48
40
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* @param {string} address - the Ethereum address to validate
|
|
53
|
-
* @returns {boolean} - true if valid Ethereum address format
|
|
41
|
+
* Creates a signature using the Flare network parameters
|
|
42
|
+
* Returns a 65-byte signature (64 bytes signature + 1 byte recovery parameter)
|
|
54
43
|
*/
|
|
55
|
-
|
|
44
|
+
createSignature(network: FlareNetwork, message: Buffer, prv: Buffer): Buffer;
|
|
56
45
|
/**
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* @param {T} obj - the source object
|
|
60
|
-
* @param {K[]} keys - array of property keys to pick
|
|
61
|
-
* @returns {Pick<T, K>} - new object with only the specified properties
|
|
46
|
+
* Verifies a signature
|
|
62
47
|
*/
|
|
63
|
-
|
|
48
|
+
verifySignature(network: FlareNetwork, message: Buffer, signature: Buffer, publicKey: Buffer): boolean;
|
|
64
49
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* @param {unknown} a - first value to compare
|
|
68
|
-
* @param {unknown} b - second value to compare
|
|
69
|
-
* @returns {boolean} - true if values are deeply equal
|
|
50
|
+
* Creates a new signature object
|
|
70
51
|
*/
|
|
71
|
-
|
|
72
|
-
/** @inheritdoc */
|
|
73
|
-
isValidSignature(signature: string): boolean;
|
|
74
|
-
/** @inheritdoc */
|
|
75
|
-
isValidTransactionId(txId: string): boolean;
|
|
76
|
-
/** @inheritdoc */
|
|
77
|
-
isValidBlockId(blockId: string): boolean;
|
|
52
|
+
createNewSig(sigHex: string): Signature;
|
|
78
53
|
/**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* @param
|
|
83
|
-
* @return signature
|
|
54
|
+
* Creates an empty signature with embedded address for signature slot identification.
|
|
55
|
+
* The address is embedded at position 90 (after the first 45 zero bytes).
|
|
56
|
+
* This allows the signing logic to determine which slot belongs to which address.
|
|
57
|
+
* @param addressHex The 20-byte address in hex format (40 chars, without 0x prefix)
|
|
84
58
|
*/
|
|
85
|
-
|
|
59
|
+
createEmptySigWithAddress(addressHex: string): Signature;
|
|
86
60
|
/**
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* @param message
|
|
90
|
-
* @param signature
|
|
91
|
-
* @param publicKey - public key instead of private key for verification
|
|
92
|
-
* @return true if it's verify successful
|
|
61
|
+
* Extracts the embedded address from an empty signature.
|
|
62
|
+
* Returns the address hex string (40 chars) or empty string if not found.
|
|
93
63
|
*/
|
|
94
|
-
|
|
64
|
+
getAddressFromEmptySig(sig: string): string;
|
|
95
65
|
/**
|
|
96
|
-
*
|
|
97
|
-
* @param network
|
|
98
|
-
* @param message
|
|
99
|
-
* @param signature
|
|
100
|
-
* @return recovered public key
|
|
66
|
+
* Computes SHA256 hash
|
|
101
67
|
*/
|
|
102
|
-
recoverySignature(network: FlareNetwork, message: Buffer, signature: Buffer): Buffer;
|
|
103
68
|
sha256(buf: Uint8Array): Buffer;
|
|
104
69
|
/**
|
|
105
|
-
*
|
|
106
|
-
* It's to reuse in TransactionBuilder and TransactionBuilderFactory
|
|
107
|
-
*
|
|
108
|
-
* @param rawTransaction Transaction as hex string
|
|
70
|
+
* Validates raw transaction format
|
|
109
71
|
*/
|
|
110
72
|
validateRawTransaction(rawTransaction: string): void;
|
|
111
73
|
/**
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
* @param {DeprecatedTx} tx
|
|
115
|
-
* @param {string} blockchainId
|
|
116
|
-
* @returns true if tx is for blockchainId
|
|
117
|
-
*/
|
|
118
|
-
isTransactionOf(tx: DeprecatedTx, blockchainId: string): boolean;
|
|
119
|
-
/**
|
|
120
|
-
* Check if Output is from PVM.
|
|
121
|
-
* Output could be EVM or PVM output.
|
|
122
|
-
* @param {DeprecatedOutput} output
|
|
123
|
-
* @returns {boolean} output has transferable output structure
|
|
124
|
-
*/
|
|
125
|
-
deprecatedIsTransferableOutput(output: DeprecatedOutput): boolean;
|
|
126
|
-
/**
|
|
127
|
-
* Check if Output is from PVM.
|
|
128
|
-
* Output could be EVM or PVM output.
|
|
129
|
-
* @param {Output} output
|
|
130
|
-
* @returns {boolean} output is TransferableOutput
|
|
74
|
+
* Checks if output is TransferableOutput type
|
|
131
75
|
*/
|
|
132
76
|
isTransferableOutput(output: Output): output is TransferableOutput;
|
|
133
77
|
/**
|
|
134
|
-
*
|
|
135
|
-
* @param network required to stringify addresses
|
|
136
|
-
* @return mapper function
|
|
137
|
-
*/
|
|
138
|
-
deprecatedMapOutputToEntry(network: FlareNetwork): (output: DeprecatedOutput) => Entry;
|
|
139
|
-
/**
|
|
140
|
-
* Return a mapper function to that network address representation.
|
|
141
|
-
* @param network required to stringify addresses
|
|
142
|
-
* @return mapper function
|
|
78
|
+
* Maps outputs to entry format
|
|
143
79
|
*/
|
|
144
80
|
mapOutputToEntry(network: FlareNetwork): (Output: any) => Entry;
|
|
145
81
|
/**
|
|
146
|
-
*
|
|
147
|
-
* @param hex string
|
|
148
|
-
* @returns hex without 0x
|
|
82
|
+
* Removes 0x prefix from hex string
|
|
149
83
|
*/
|
|
150
84
|
removeHexPrefix(hex: string): string;
|
|
151
85
|
/**
|
|
152
|
-
*
|
|
153
|
-
* @param {string} outputidx number
|
|
154
|
-
* @return {Buffer} buffer of size 4 with that number value
|
|
86
|
+
* Converts output index to buffer
|
|
155
87
|
*/
|
|
156
88
|
outputidxNumberToBuffer(outputidx: string): Buffer;
|
|
157
89
|
/**
|
|
158
|
-
*
|
|
159
|
-
* @param {Buffer} outputidx
|
|
160
|
-
* @return {string} outputidx number
|
|
90
|
+
* Converts output index buffer to number string
|
|
161
91
|
*/
|
|
162
92
|
outputidxBufferToNumber(outputidx: Buffer): string;
|
|
93
|
+
isValidSignature(signature: string): boolean;
|
|
94
|
+
isValidTransactionId(txId: string): boolean;
|
|
163
95
|
/**
|
|
164
|
-
*
|
|
165
|
-
* Follows FlareJS utils.stringToBytes pattern
|
|
166
|
-
* @param {string} text - Text to convert
|
|
167
|
-
* @returns {Uint8Array} Byte array
|
|
168
|
-
*/
|
|
169
|
-
stringToBytes(text: string): Uint8Array;
|
|
170
|
-
/**
|
|
171
|
-
* Convert bytes to string from FlareJS memo
|
|
172
|
-
* @param {Uint8Array} bytes - Bytes to convert
|
|
173
|
-
* @returns {string} Decoded string
|
|
96
|
+
* Helper method to convert address components to string
|
|
174
97
|
*/
|
|
175
|
-
|
|
98
|
+
addressToString: (hrp: string, prefix: string, address: Buffer) => string;
|
|
176
99
|
/**
|
|
177
|
-
*
|
|
178
|
-
* Supports string, JSON object, or raw bytes
|
|
179
|
-
* @param {string | Record<string, unknown> | Uint8Array} memo - Memo data
|
|
180
|
-
* @returns {Uint8Array} Memo bytes for FlareJS
|
|
100
|
+
* Decodes a base58 string with checksum to a Buffer
|
|
181
101
|
*/
|
|
182
|
-
|
|
102
|
+
cb58Decode(str: string): Buffer;
|
|
183
103
|
/**
|
|
184
|
-
*
|
|
185
|
-
* @param {Uint8Array} memoBytes - Memo bytes from FlareJS transaction
|
|
186
|
-
* @returns {string} Decoded memo string
|
|
104
|
+
* Validates a checksum on a Buffer and returns true if valid, false if not
|
|
187
105
|
*/
|
|
188
|
-
|
|
106
|
+
private validateChecksum;
|
|
189
107
|
/**
|
|
190
|
-
*
|
|
191
|
-
* @param {Uint8Array} memoBytes - Memo bytes
|
|
192
|
-
* @param {number} maxSize - Maximum size in bytes (default 4KB)
|
|
193
|
-
* @returns {boolean} Whether memo is within size limits
|
|
108
|
+
* Encodes a Buffer as a base58 string with checksum
|
|
194
109
|
*/
|
|
195
|
-
|
|
110
|
+
cb58Encode(bytes: Buffer): string;
|
|
196
111
|
/**
|
|
197
112
|
* Adds a checksum to a Buffer and returns the concatenated result
|
|
198
113
|
*/
|
|
199
114
|
private addChecksum;
|
|
200
115
|
/**
|
|
201
|
-
*
|
|
116
|
+
* Parse an address string into a Buffer
|
|
117
|
+
* @param address - The address to parse
|
|
118
|
+
* @returns Buffer containing the parsed address
|
|
202
119
|
*/
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
* Encodes a Buffer as a base58 string with checksum
|
|
206
|
-
*/
|
|
207
|
-
cb58Encode(bytes: Buffer): string;
|
|
120
|
+
parseAddress: (address: string) => Buffer;
|
|
121
|
+
stringToAddress: (address: string, hrp?: string) => Buffer;
|
|
208
122
|
/**
|
|
209
|
-
*
|
|
123
|
+
* Check if tx is for the blockchainId
|
|
124
|
+
*
|
|
125
|
+
* @param {DeprecatedTx} tx
|
|
126
|
+
* @param {string} blockchainId
|
|
127
|
+
* @returns true if tx is for blockchainId
|
|
210
128
|
*/
|
|
211
|
-
|
|
129
|
+
isTransactionOf(tx: DeprecatedTx, blockchainId: string): boolean;
|
|
130
|
+
flareIdString(value: string): Id;
|
|
212
131
|
/**
|
|
213
|
-
*
|
|
132
|
+
* FlareJS wrapper to recover signature
|
|
133
|
+
* @param network
|
|
134
|
+
* @param message
|
|
135
|
+
* @param signature
|
|
136
|
+
* @return recovered public key
|
|
214
137
|
*/
|
|
215
|
-
|
|
216
|
-
isValidId(id: string): boolean;
|
|
138
|
+
recoverySignature(network: FlareNetwork, message: Buffer, signature: Buffer): Buffer;
|
|
217
139
|
}
|
|
218
140
|
declare const utils: Utils;
|
|
219
141
|
export default utils;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|