@keplr-wallet/background 0.12.313 → 0.13.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/build/index.d.ts +1 -0
- package/build/index.js +7 -1
- package/build/index.js.map +1 -1
- package/build/keyring-cosmos/service.d.ts +10 -0
- package/build/keyring-cosmos/service.js +100 -0
- package/build/keyring-cosmos/service.js.map +1 -1
- package/build/keyring-ethereum/service.d.ts +5 -0
- package/build/keyring-ethereum/service.js +66 -0
- package/build/keyring-ethereum/service.js.map +1 -1
- package/build/recent-send-history/api.d.ts +31 -0
- package/build/recent-send-history/api.js +97 -0
- package/build/recent-send-history/api.js.map +1 -0
- package/build/recent-send-history/handler.js +36 -0
- package/build/recent-send-history/handler.js.map +1 -1
- package/build/recent-send-history/init.js +5 -0
- package/build/recent-send-history/init.js.map +1 -1
- package/build/recent-send-history/messages.d.ts +76 -1
- package/build/recent-send-history/messages.js +121 -1
- package/build/recent-send-history/messages.js.map +1 -1
- package/build/recent-send-history/service.d.ts +262 -9
- package/build/recent-send-history/service.js +2103 -812
- package/build/recent-send-history/service.js.map +1 -1
- package/build/recent-send-history/types.d.ts +214 -22
- package/build/recent-send-history/types.js +21 -0
- package/build/recent-send-history/types.js.map +1 -1
- package/build/tx/service.d.ts +2 -0
- package/build/tx/service.js +35 -0
- package/build/tx/service.js.map +1 -1
- package/build/tx-ethereum/service.d.ts +2 -0
- package/build/tx-ethereum/service.js +42 -0
- package/build/tx-ethereum/service.js.map +1 -1
- package/build/tx-executor/constants.d.ts +1 -0
- package/build/tx-executor/constants.js +5 -0
- package/build/tx-executor/constants.js.map +1 -0
- package/build/tx-executor/handler.d.ts +3 -0
- package/build/tx-executor/handler.js +45 -0
- package/build/tx-executor/handler.js.map +1 -0
- package/build/tx-executor/index.d.ts +3 -0
- package/build/tx-executor/index.js +20 -0
- package/build/tx-executor/index.js.map +1 -0
- package/build/tx-executor/init.d.ts +3 -0
- package/build/tx-executor/init.js +14 -0
- package/build/tx-executor/init.js.map +1 -0
- package/build/tx-executor/internal.d.ts +4 -0
- package/build/tx-executor/internal.js +24 -0
- package/build/tx-executor/internal.js.map +1 -0
- package/build/tx-executor/messages.d.ts +53 -0
- package/build/tx-executor/messages.js +116 -0
- package/build/tx-executor/messages.js.map +1 -0
- package/build/tx-executor/service.d.ts +67 -0
- package/build/tx-executor/service.js +715 -0
- package/build/tx-executor/service.js.map +1 -0
- package/build/tx-executor/types.d.ts +105 -0
- package/build/tx-executor/types.js +33 -0
- package/build/tx-executor/types.js.map +1 -0
- package/build/tx-executor/utils/cosmos.d.ts +59 -0
- package/build/tx-executor/utils/cosmos.js +526 -0
- package/build/tx-executor/utils/cosmos.js.map +1 -0
- package/build/tx-executor/utils/evm.d.ts +4 -0
- package/build/tx-executor/utils/evm.js +236 -0
- package/build/tx-executor/utils/evm.js.map +1 -0
- package/package.json +13 -13
- package/src/index.ts +24 -1
- package/src/keyring-cosmos/service.ts +151 -0
- package/src/keyring-ethereum/service.ts +103 -6
- package/src/recent-send-history/api.ts +119 -0
- package/src/recent-send-history/handler.ts +84 -0
- package/src/recent-send-history/init.ts +10 -0
- package/src/recent-send-history/messages.ts +163 -1
- package/src/recent-send-history/service.ts +3042 -1153
- package/src/recent-send-history/types.ts +268 -31
- package/src/tx/service.ts +41 -0
- package/src/tx-ethereum/service.ts +57 -0
- package/src/tx-executor/constants.ts +1 -0
- package/src/tx-executor/handler.ts +71 -0
- package/src/tx-executor/index.ts +3 -0
- package/src/tx-executor/init.ts +20 -0
- package/src/tx-executor/internal.ts +9 -0
- package/src/tx-executor/messages.ts +157 -0
- package/src/tx-executor/service.ts +1025 -0
- package/src/tx-executor/types.ts +161 -0
- package/src/tx-executor/utils/cosmos.ts +771 -0
- package/src/tx-executor/utils/evm.ts +310 -0
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.calculateCosmosStdFee = exports.getDefaultGasPrice = exports.getCosmosGasPrice = exports.fetchCosmosSpendableBalances = exports.simulateCosmosTx = exports.getCosmosPubKeyTypeUrl = exports.prepareSignDocForDirectSigning = exports.prepareSignDocForAminoSigning = exports.buildSignedTxFromAminoSignResponse = void 0;
|
|
13
|
+
const cosmos_1 = require("@keplr-wallet/cosmos");
|
|
14
|
+
const buffer_1 = require("buffer/");
|
|
15
|
+
const common_1 = require("@keplr-wallet/common");
|
|
16
|
+
const tx_1 = require("@keplr-wallet/proto-types/cosmos/tx/v1beta1/tx");
|
|
17
|
+
const web3_1 = require("@keplr-wallet/proto-types/ethermint/types/v1/web3");
|
|
18
|
+
const keys_1 = require("@keplr-wallet/proto-types/cosmos/crypto/secp256k1/keys");
|
|
19
|
+
const signing_1 = require("@keplr-wallet/proto-types/cosmos/tx/signing/v1beta1/signing");
|
|
20
|
+
const simple_fetch_1 = require("@keplr-wallet/simple-fetch");
|
|
21
|
+
const unit_1 = require("@keplr-wallet/unit");
|
|
22
|
+
// TODO: move helper functions to proper packages
|
|
23
|
+
/**
|
|
24
|
+
* Build a signed transaction from an AminoSignResponse
|
|
25
|
+
*/
|
|
26
|
+
function buildSignedTxFromAminoSignResponse(params) {
|
|
27
|
+
var _a;
|
|
28
|
+
const { protoMsgs, signResponse, chainInfo, eip712Signing } = params;
|
|
29
|
+
const chainIsInjective = chainInfo.chainId.startsWith("injective");
|
|
30
|
+
const ethSignPlainJson = ((_a = chainInfo.features) === null || _a === void 0 ? void 0 : _a.includes("evm-ledger-sign-plain-json")) === true;
|
|
31
|
+
const pubKeyTypeUrl = getCosmosPubKeyTypeUrl(chainInfo);
|
|
32
|
+
return {
|
|
33
|
+
tx: tx_1.TxRaw.encode({
|
|
34
|
+
bodyBytes: tx_1.TxBody.encode(tx_1.TxBody.fromPartial({
|
|
35
|
+
messages: protoMsgs,
|
|
36
|
+
timeoutHeight: signResponse.signed.timeout_height,
|
|
37
|
+
memo: signResponse.signed.memo,
|
|
38
|
+
extensionOptions: eip712Signing && !ethSignPlainJson
|
|
39
|
+
? [
|
|
40
|
+
{
|
|
41
|
+
typeUrl: (() => {
|
|
42
|
+
var _a;
|
|
43
|
+
if ((_a = chainInfo.features) === null || _a === void 0 ? void 0 : _a.includes("/cosmos.evm.types.v1.ExtensionOptionsWeb3Tx")) {
|
|
44
|
+
return "/cosmos.evm.types.v1.ExtensionOptionsWeb3Tx";
|
|
45
|
+
}
|
|
46
|
+
if (chainIsInjective) {
|
|
47
|
+
return "/injective.types.v1beta1.ExtensionOptionsWeb3Tx";
|
|
48
|
+
}
|
|
49
|
+
return "/ethermint.types.v1.ExtensionOptionsWeb3Tx";
|
|
50
|
+
})(),
|
|
51
|
+
value: web3_1.ExtensionOptionsWeb3Tx.encode(web3_1.ExtensionOptionsWeb3Tx.fromPartial({
|
|
52
|
+
typedDataChainId: cosmos_1.EthermintChainIdHelper.parse(chainInfo.chainId).ethChainId.toString(),
|
|
53
|
+
feePayer: !chainIsInjective
|
|
54
|
+
? signResponse.signed.fee.feePayer
|
|
55
|
+
: undefined,
|
|
56
|
+
feePayerSig: !chainIsInjective
|
|
57
|
+
? buffer_1.Buffer.from(signResponse.signature.signature, "base64")
|
|
58
|
+
: undefined,
|
|
59
|
+
})).finish(),
|
|
60
|
+
},
|
|
61
|
+
]
|
|
62
|
+
: undefined,
|
|
63
|
+
})).finish(),
|
|
64
|
+
authInfoBytes: tx_1.AuthInfo.encode({
|
|
65
|
+
signerInfos: [
|
|
66
|
+
{
|
|
67
|
+
publicKey: {
|
|
68
|
+
typeUrl: pubKeyTypeUrl,
|
|
69
|
+
value: keys_1.PubKey.encode({
|
|
70
|
+
key: buffer_1.Buffer.from(signResponse.signature.pub_key.value, "base64"),
|
|
71
|
+
}).finish(),
|
|
72
|
+
},
|
|
73
|
+
modeInfo: {
|
|
74
|
+
single: {
|
|
75
|
+
mode: eip712Signing && ethSignPlainJson
|
|
76
|
+
? signing_1.SignMode.SIGN_MODE_EIP_191
|
|
77
|
+
: signing_1.SignMode.SIGN_MODE_LEGACY_AMINO_JSON,
|
|
78
|
+
},
|
|
79
|
+
multi: undefined,
|
|
80
|
+
},
|
|
81
|
+
sequence: signResponse.signed.sequence,
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
fee: tx_1.Fee.fromPartial({
|
|
85
|
+
amount: signResponse.signed.fee.amount,
|
|
86
|
+
gasLimit: signResponse.signed.fee.gas,
|
|
87
|
+
payer: eip712Signing && !chainIsInjective && !ethSignPlainJson
|
|
88
|
+
? // Fee delegation feature not yet supported. But, for eip712 ethermint signing, we must set fee payer.
|
|
89
|
+
signResponse.signed.fee.feePayer
|
|
90
|
+
: undefined,
|
|
91
|
+
}),
|
|
92
|
+
}).finish(),
|
|
93
|
+
signatures:
|
|
94
|
+
// Injective needs the signature in the signatures list even if eip712
|
|
95
|
+
!eip712Signing || chainIsInjective || ethSignPlainJson
|
|
96
|
+
? [buffer_1.Buffer.from(signResponse.signature.signature, "base64")]
|
|
97
|
+
: [new Uint8Array(0)],
|
|
98
|
+
}).finish(),
|
|
99
|
+
signDoc: signResponse.signed,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
exports.buildSignedTxFromAminoSignResponse = buildSignedTxFromAminoSignResponse;
|
|
103
|
+
/**
|
|
104
|
+
* Prepare sign document for Cosmos transaction signing
|
|
105
|
+
*/
|
|
106
|
+
function prepareSignDocForAminoSigning(params) {
|
|
107
|
+
var _a;
|
|
108
|
+
const { chainInfo, accountNumber, sequence, aminoMsgs, memo, eip712Signing, signer, fee, } = params;
|
|
109
|
+
const chainIsInjective = chainInfo.chainId.startsWith("injective");
|
|
110
|
+
const ethSignPlainJson = ((_a = chainInfo.features) === null || _a === void 0 ? void 0 : _a.includes("evm-ledger-sign-plain-json")) === true;
|
|
111
|
+
const signDocRaw = {
|
|
112
|
+
chain_id: chainInfo.chainId,
|
|
113
|
+
account_number: accountNumber,
|
|
114
|
+
sequence,
|
|
115
|
+
fee,
|
|
116
|
+
msgs: aminoMsgs,
|
|
117
|
+
memo: (0, common_1.escapeHTML)(memo !== null && memo !== void 0 ? memo : ""),
|
|
118
|
+
};
|
|
119
|
+
if (eip712Signing) {
|
|
120
|
+
if (chainIsInjective) {
|
|
121
|
+
// Due to injective's problem, it should exist if injective with ledger.
|
|
122
|
+
// There is currently no effective way to handle this in keplr. Just set a very large number.
|
|
123
|
+
signDocRaw.timeout_height =
|
|
124
|
+
Number.MAX_SAFE_INTEGER.toString();
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
// If not injective (evmos), they require fee payer.
|
|
128
|
+
// XXX: "feePayer" should be "payer". But, it maybe from ethermint team's mistake.
|
|
129
|
+
// That means this part is not standard.
|
|
130
|
+
signDocRaw.fee = Object.assign(Object.assign({}, signDocRaw.fee), (() => {
|
|
131
|
+
if (ethSignPlainJson) {
|
|
132
|
+
return {};
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
feePayer: signer,
|
|
136
|
+
};
|
|
137
|
+
})());
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return (0, common_1.sortObjectByKey)(signDocRaw);
|
|
141
|
+
}
|
|
142
|
+
exports.prepareSignDocForAminoSigning = prepareSignDocForAminoSigning;
|
|
143
|
+
function prepareSignDocForDirectSigning(params) {
|
|
144
|
+
const { chainInfo, accountNumber, sequence, protoMsgs, fee, memo, pubKey } = params;
|
|
145
|
+
const bodyBytes = tx_1.TxBody.encode(tx_1.TxBody.fromPartial({
|
|
146
|
+
messages: protoMsgs,
|
|
147
|
+
memo,
|
|
148
|
+
})).finish();
|
|
149
|
+
const pubKeyTypeUrl = getCosmosPubKeyTypeUrl(chainInfo);
|
|
150
|
+
const authInfoBytes = tx_1.AuthInfo.encode({
|
|
151
|
+
signerInfos: [
|
|
152
|
+
tx_1.SignerInfo.fromPartial({
|
|
153
|
+
publicKey: {
|
|
154
|
+
typeUrl: pubKeyTypeUrl,
|
|
155
|
+
value: keys_1.PubKey.encode({
|
|
156
|
+
key: pubKey,
|
|
157
|
+
}).finish(),
|
|
158
|
+
},
|
|
159
|
+
modeInfo: {
|
|
160
|
+
single: {
|
|
161
|
+
mode: signing_1.SignMode.SIGN_MODE_DIRECT,
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
sequence,
|
|
165
|
+
}),
|
|
166
|
+
],
|
|
167
|
+
fee: tx_1.Fee.fromPartial({
|
|
168
|
+
amount: fee.amount.map((amount) => ({
|
|
169
|
+
amount: amount.amount,
|
|
170
|
+
denom: amount.denom,
|
|
171
|
+
})),
|
|
172
|
+
gasLimit: fee.gas,
|
|
173
|
+
}),
|
|
174
|
+
}).finish();
|
|
175
|
+
const signDoc = tx_1.SignDoc.fromPartial({
|
|
176
|
+
bodyBytes,
|
|
177
|
+
authInfoBytes,
|
|
178
|
+
chainId: chainInfo.chainId,
|
|
179
|
+
accountNumber,
|
|
180
|
+
});
|
|
181
|
+
return {
|
|
182
|
+
signDoc,
|
|
183
|
+
bodyBytes,
|
|
184
|
+
authInfoBytes,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
exports.prepareSignDocForDirectSigning = prepareSignDocForDirectSigning;
|
|
188
|
+
/**
|
|
189
|
+
* Resolve the correct pub key typeUrl for a chain, accounting for ethermint/initia/injective variants.
|
|
190
|
+
*/
|
|
191
|
+
function getCosmosPubKeyTypeUrl(chainInfo) {
|
|
192
|
+
var _a, _b, _c;
|
|
193
|
+
const useEthereumSign = ((_a = chainInfo.features) === null || _a === void 0 ? void 0 : _a.includes("eth-key-sign")) === true;
|
|
194
|
+
if (!useEthereumSign) {
|
|
195
|
+
return "/cosmos.crypto.secp256k1.PubKey";
|
|
196
|
+
}
|
|
197
|
+
if (chainInfo.chainId.startsWith("injective")) {
|
|
198
|
+
return "/injective.crypto.v1beta1.ethsecp256k1.PubKey";
|
|
199
|
+
}
|
|
200
|
+
if (chainInfo.chainId.startsWith("stratos")) {
|
|
201
|
+
return "/stratos.crypto.v1.ethsecp256k1.PubKey";
|
|
202
|
+
}
|
|
203
|
+
if ((_b = chainInfo.features) === null || _b === void 0 ? void 0 : _b.includes("eth-secp256k1-cosmos")) {
|
|
204
|
+
return "/cosmos.evm.crypto.v1.ethsecp256k1.PubKey";
|
|
205
|
+
}
|
|
206
|
+
if ((_c = chainInfo.features) === null || _c === void 0 ? void 0 : _c.includes("eth-secp256k1-initia")) {
|
|
207
|
+
return "/initia.crypto.v1beta1.ethsecp256k1.PubKey";
|
|
208
|
+
}
|
|
209
|
+
return "/ethermint.crypto.v1.ethsecp256k1.PubKey";
|
|
210
|
+
}
|
|
211
|
+
exports.getCosmosPubKeyTypeUrl = getCosmosPubKeyTypeUrl;
|
|
212
|
+
function simulateCosmosTx(signer, chainInfo, msgs, fee, memo = "") {
|
|
213
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
214
|
+
const account = yield cosmos_1.BaseAccount.fetchFromRest(chainInfo.rest, signer, true);
|
|
215
|
+
const unsignedTx = tx_1.TxRaw.encode({
|
|
216
|
+
bodyBytes: tx_1.TxBody.encode(tx_1.TxBody.fromPartial({
|
|
217
|
+
messages: msgs,
|
|
218
|
+
memo: memo,
|
|
219
|
+
})).finish(),
|
|
220
|
+
authInfoBytes: tx_1.AuthInfo.encode({
|
|
221
|
+
signerInfos: [
|
|
222
|
+
tx_1.SignerInfo.fromPartial({
|
|
223
|
+
// Pub key is ignored.
|
|
224
|
+
// It is fine to ignore the pub key when simulating tx.
|
|
225
|
+
// However, the estimated gas would be slightly smaller because tx size doesn't include pub key.
|
|
226
|
+
modeInfo: {
|
|
227
|
+
single: {
|
|
228
|
+
mode: signing_1.SignMode.SIGN_MODE_LEGACY_AMINO_JSON,
|
|
229
|
+
},
|
|
230
|
+
multi: undefined,
|
|
231
|
+
},
|
|
232
|
+
sequence: account.getSequence().toString(),
|
|
233
|
+
}),
|
|
234
|
+
],
|
|
235
|
+
fee: tx_1.Fee.fromPartial({
|
|
236
|
+
amount: fee.amount.map((amount) => {
|
|
237
|
+
return { amount: amount.amount, denom: amount.denom };
|
|
238
|
+
}),
|
|
239
|
+
}),
|
|
240
|
+
}).finish(),
|
|
241
|
+
// Because of the validation of tx itself, the signature must exist.
|
|
242
|
+
// However, since they do not actually verify the signature, it is okay to use any value.
|
|
243
|
+
signatures: [new Uint8Array(64)],
|
|
244
|
+
}).finish();
|
|
245
|
+
const result = yield (0, simple_fetch_1.simpleFetch)(chainInfo.rest, "/cosmos/tx/v1beta1/simulate", {
|
|
246
|
+
method: "POST",
|
|
247
|
+
headers: {
|
|
248
|
+
"content-type": "application/json",
|
|
249
|
+
},
|
|
250
|
+
body: JSON.stringify({
|
|
251
|
+
tx_bytes: buffer_1.Buffer.from(unsignedTx).toString("base64"),
|
|
252
|
+
}),
|
|
253
|
+
});
|
|
254
|
+
const gasUsed = parseInt(result.data.gas_info.gas_used);
|
|
255
|
+
if (Number.isNaN(gasUsed)) {
|
|
256
|
+
throw new Error(`Invalid integer gas: ${result.data.gas_info.gas_used}`);
|
|
257
|
+
}
|
|
258
|
+
return {
|
|
259
|
+
gasUsed: gasUsed,
|
|
260
|
+
};
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
exports.simulateCosmosTx = simulateCosmosTx;
|
|
264
|
+
function fetchCosmosSpendableBalances(baseURL, bech32Address, limit = 1000) {
|
|
265
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
266
|
+
const { data } = yield (0, simple_fetch_1.simpleFetch)(baseURL, `/cosmos/bank/v1beta1/spendable_balances/${bech32Address}?pagination.limit=${limit}`);
|
|
267
|
+
return data;
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
exports.fetchCosmosSpendableBalances = fetchCosmosSpendableBalances;
|
|
271
|
+
// Default gas price steps
|
|
272
|
+
const DefaultGasPriceStep = {
|
|
273
|
+
low: 0.01,
|
|
274
|
+
average: 0.025,
|
|
275
|
+
high: 0.04,
|
|
276
|
+
};
|
|
277
|
+
// Default multiplication factors for fee market
|
|
278
|
+
const DefaultMultiplication = {
|
|
279
|
+
low: 1.1,
|
|
280
|
+
average: 1.2,
|
|
281
|
+
high: 1.3,
|
|
282
|
+
};
|
|
283
|
+
function getCosmosGasPrice(chainInfo, feeType = "average", feeCurrency) {
|
|
284
|
+
var _a, _b, _c, _d;
|
|
285
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
286
|
+
// Use first currency from chainInfo if feeCurrency is not provided
|
|
287
|
+
const currency = feeCurrency || chainInfo.feeCurrencies[0];
|
|
288
|
+
if (!currency) {
|
|
289
|
+
throw new Error("No fee currency is provided and not found for chain");
|
|
290
|
+
}
|
|
291
|
+
// 1. Try Osmosis base fee (for Osmosis with base-fee-beta feature)
|
|
292
|
+
if ((_a = chainInfo.features) === null || _a === void 0 ? void 0 : _a.includes("osmosis-base-fee-beta")) {
|
|
293
|
+
try {
|
|
294
|
+
const osmosisResult = yield getOsmosisBaseFeeCurrency(chainInfo, currency, feeType);
|
|
295
|
+
if (!osmosisResult) {
|
|
296
|
+
throw new Error("Failed to fetch Osmosis base fee currency");
|
|
297
|
+
}
|
|
298
|
+
if ((_b = chainInfo.features) === null || _b === void 0 ? void 0 : _b.includes("osmosis-txfees")) {
|
|
299
|
+
const osmosisTxFeesResult = yield getOsmosisTxFeesGasPrice(chainInfo, currency, feeType);
|
|
300
|
+
if (osmosisTxFeesResult) {
|
|
301
|
+
return {
|
|
302
|
+
gasPrice: osmosisTxFeesResult,
|
|
303
|
+
source: "osmosis-txfees",
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
// if osmosis-txfees is not enabled, use the base fee currency
|
|
308
|
+
return {
|
|
309
|
+
gasPrice: new unit_1.Dec(osmosisResult.gasPriceStep[feeType]),
|
|
310
|
+
source: "osmosis-base-fee",
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
console.error("Failed to fetch Osmosis base fee:", error);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
// 2. Try Initia Dynamic Fee
|
|
318
|
+
if ((_c = chainInfo.features) === null || _c === void 0 ? void 0 : _c.includes("initia-dynamicfee")) {
|
|
319
|
+
try {
|
|
320
|
+
const initiaResult = yield getInitiaDynamicFeeGasPrice(chainInfo, feeType);
|
|
321
|
+
if (initiaResult) {
|
|
322
|
+
return { gasPrice: initiaResult, source: "initia-dynamic" };
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
console.error("Failed to fetch Initia dynamic fee:", error);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
// 3. Try Fee Market (for chains with feemarket feature)
|
|
330
|
+
if ((_d = chainInfo.features) === null || _d === void 0 ? void 0 : _d.includes("feemarket")) {
|
|
331
|
+
try {
|
|
332
|
+
const feeMarketResult = yield getFeeMarketGasPrice(chainInfo, currency, feeType);
|
|
333
|
+
if (feeMarketResult) {
|
|
334
|
+
return { gasPrice: feeMarketResult, source: "feemarket" };
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
catch (error) {
|
|
338
|
+
console.error("Failed to fetch fee market gas price:", error);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
// 5. Try EIP-1559 (for EVM chains)
|
|
342
|
+
if (chainInfo.evm) {
|
|
343
|
+
try {
|
|
344
|
+
const eip1559Result = yield getEIP1559GasPrice(chainInfo, feeType);
|
|
345
|
+
if (eip1559Result) {
|
|
346
|
+
return { gasPrice: eip1559Result, source: "eip1559" };
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
catch (error) {
|
|
350
|
+
console.error("Failed to fetch EIP-1559 gas price:", error);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
// 6. Fallback to default gas price step
|
|
354
|
+
const gasPrice = getDefaultGasPrice(currency, feeType);
|
|
355
|
+
return { gasPrice, source: "default" };
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
exports.getCosmosGasPrice = getCosmosGasPrice;
|
|
359
|
+
function getOsmosisBaseFeeCurrency(chainInfo, feeCurrency, feeType) {
|
|
360
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
361
|
+
// Fetch base fee from Osmosis
|
|
362
|
+
const baseDenom = "uosmo";
|
|
363
|
+
if (feeCurrency.coinMinimalDenom !== baseDenom) {
|
|
364
|
+
return null;
|
|
365
|
+
}
|
|
366
|
+
// Fetch multiplication factors from remote config
|
|
367
|
+
const remoteConfig = yield (0, simple_fetch_1.simpleFetch)("https://gjsttg7mkgtqhjpt3mv5aeuszi0zblbb.lambda-url.us-west-2.on.aws/osmosis/osmosis-base-fee-beta.json").catch(() => ({ data: {} }));
|
|
368
|
+
const { data: baseFeeResponse } = yield (0, simple_fetch_1.simpleFetch)(chainInfo.rest, "/osmosis/txfees/v1beta1/cur_eip_base_fee");
|
|
369
|
+
const multiplier = remoteConfig.data[feeType] || DefaultMultiplication[feeType];
|
|
370
|
+
return Object.assign(Object.assign({}, feeCurrency), { gasPriceStep: {
|
|
371
|
+
low: parseFloat(baseFeeResponse.base_fee) * multiplier,
|
|
372
|
+
average: parseFloat(baseFeeResponse.base_fee) * multiplier,
|
|
373
|
+
high: parseFloat(baseFeeResponse.base_fee) * multiplier,
|
|
374
|
+
} });
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
function getOsmosisTxFeesGasPrice(chainInfo, feeCurrency, feeType) {
|
|
378
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
379
|
+
// Check if it's a fee token
|
|
380
|
+
const { data: feeTokensResponse } = yield (0, simple_fetch_1.simpleFetch)(chainInfo.rest, "/osmosis/txfees/v1beta1/fee_tokens");
|
|
381
|
+
const isFeeToken = feeTokensResponse.fee_tokens.some((token) => token.denom === feeCurrency.coinMinimalDenom);
|
|
382
|
+
if (!isFeeToken) {
|
|
383
|
+
return null;
|
|
384
|
+
}
|
|
385
|
+
// Get spot price
|
|
386
|
+
const { data: spotPriceResponse } = yield (0, simple_fetch_1.simpleFetch)(chainInfo.rest, `/osmosis/txfees/v1beta1/spot_price_by_denom?denom=${feeCurrency.coinMinimalDenom}`);
|
|
387
|
+
const spotPrice = new unit_1.Dec(spotPriceResponse.spot_price);
|
|
388
|
+
if (spotPrice.lte(new unit_1.Dec(0))) {
|
|
389
|
+
return null;
|
|
390
|
+
}
|
|
391
|
+
const baseGasPrice = getDefaultGasPrice(feeCurrency, feeType);
|
|
392
|
+
// Add 1% slippage protection
|
|
393
|
+
return baseGasPrice.quo(spotPrice).mul(new unit_1.Dec(1.01));
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
function getFeeMarketGasPrice(chainInfo, feeCurrency, feeType) {
|
|
397
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
398
|
+
try {
|
|
399
|
+
const gasPricesResponse = yield (0, simple_fetch_1.simpleFetch)(chainInfo.rest, "/feemarket/v1/gas_prices");
|
|
400
|
+
const gasPrice = gasPricesResponse.data.prices.find((price) => price.denom === feeCurrency.coinMinimalDenom);
|
|
401
|
+
if (!gasPrice) {
|
|
402
|
+
return null;
|
|
403
|
+
}
|
|
404
|
+
// Fetch multiplication config
|
|
405
|
+
const multiplicationConfig = yield (0, simple_fetch_1.simpleFetch)("https://gjsttg7mkgtqhjpt3mv5aeuszi0zblbb.lambda-url.us-west-2.on.aws", "/feemarket/info.json").catch(() => ({
|
|
406
|
+
data: {},
|
|
407
|
+
}));
|
|
408
|
+
let multiplication = DefaultMultiplication;
|
|
409
|
+
// Apply default multiplication
|
|
410
|
+
const defaultConfig = multiplicationConfig.data["__default__"];
|
|
411
|
+
if (defaultConfig) {
|
|
412
|
+
multiplication = {
|
|
413
|
+
low: defaultConfig.low || multiplication.low,
|
|
414
|
+
average: defaultConfig.average || multiplication.average,
|
|
415
|
+
high: defaultConfig.high || multiplication.high,
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
// Apply chain-specific multiplication
|
|
419
|
+
const chainConfig = multiplicationConfig.data[chainInfo.chainId];
|
|
420
|
+
if (chainConfig) {
|
|
421
|
+
multiplication = {
|
|
422
|
+
low: chainConfig.low || multiplication.low,
|
|
423
|
+
average: chainConfig.average || multiplication.average,
|
|
424
|
+
high: chainConfig.high || multiplication.high,
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
const baseGasPrice = new unit_1.Dec(gasPrice.amount);
|
|
428
|
+
return baseGasPrice.mul(new unit_1.Dec(multiplication[feeType]));
|
|
429
|
+
}
|
|
430
|
+
catch (error) {
|
|
431
|
+
return null;
|
|
432
|
+
}
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
function getInitiaDynamicFeeGasPrice(chainInfo, feeType) {
|
|
436
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
437
|
+
try {
|
|
438
|
+
const dynamicFeeResponse = yield (0, simple_fetch_1.simpleFetch)(chainInfo.rest, "/initia/dynamicfee/v1/params");
|
|
439
|
+
if (!dynamicFeeResponse.data.params.base_gas_price) {
|
|
440
|
+
return null;
|
|
441
|
+
}
|
|
442
|
+
const baseGasPrice = new unit_1.Dec(dynamicFeeResponse.data.params.base_gas_price);
|
|
443
|
+
// Fetch multiplication config
|
|
444
|
+
const multiplicationConfig = yield (0, simple_fetch_1.simpleFetch)("https://gjsttg7mkgtqhjpt3mv5aeuszi0zblbb.lambda-url.us-west-2.on.aws", "/feemarket/info.json").catch(() => ({
|
|
445
|
+
data: {},
|
|
446
|
+
}));
|
|
447
|
+
let multiplication = DefaultMultiplication;
|
|
448
|
+
// Apply default multiplication
|
|
449
|
+
const defaultConfig = multiplicationConfig.data["__default__"];
|
|
450
|
+
if (defaultConfig) {
|
|
451
|
+
multiplication = {
|
|
452
|
+
low: defaultConfig.low || multiplication.low,
|
|
453
|
+
average: defaultConfig.average || multiplication.average,
|
|
454
|
+
high: defaultConfig.high || multiplication.high,
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
// Apply chain-specific multiplication
|
|
458
|
+
const chainConfig = multiplicationConfig.data[chainInfo.chainId];
|
|
459
|
+
if (chainConfig) {
|
|
460
|
+
multiplication = {
|
|
461
|
+
low: chainConfig.low || multiplication.low,
|
|
462
|
+
average: chainConfig.average || multiplication.average,
|
|
463
|
+
high: chainConfig.high || multiplication.high,
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
return baseGasPrice.mul(new unit_1.Dec(multiplication[feeType]));
|
|
467
|
+
}
|
|
468
|
+
catch (error) {
|
|
469
|
+
return null;
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
function getEIP1559GasPrice(chainInfo, feeType) {
|
|
474
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
475
|
+
try {
|
|
476
|
+
// Get latest block for base fee
|
|
477
|
+
const blockResponse = yield (0, simple_fetch_1.simpleFetch)(chainInfo.rpc, {
|
|
478
|
+
method: "POST",
|
|
479
|
+
headers: { "Content-Type": "application/json" },
|
|
480
|
+
body: JSON.stringify({
|
|
481
|
+
jsonrpc: "2.0",
|
|
482
|
+
method: "eth_getBlockByNumber",
|
|
483
|
+
params: ["latest", false],
|
|
484
|
+
id: 1,
|
|
485
|
+
}),
|
|
486
|
+
});
|
|
487
|
+
const baseFeePerGasHex = blockResponse.data.result.baseFeePerGas;
|
|
488
|
+
if (!baseFeePerGasHex) {
|
|
489
|
+
return null;
|
|
490
|
+
}
|
|
491
|
+
const baseFeePerGas = new unit_1.Dec(parseInt(baseFeePerGasHex, 16));
|
|
492
|
+
// Calculate priority fee (simplified version)
|
|
493
|
+
const priorityFeeMultipliers = {
|
|
494
|
+
low: 1.1,
|
|
495
|
+
average: 1.25,
|
|
496
|
+
high: 1.5,
|
|
497
|
+
};
|
|
498
|
+
const maxPriorityFeePerGas = baseFeePerGas.mul(new unit_1.Dec(priorityFeeMultipliers[feeType] - 1));
|
|
499
|
+
return baseFeePerGas.add(maxPriorityFeePerGas);
|
|
500
|
+
}
|
|
501
|
+
catch (error) {
|
|
502
|
+
return null;
|
|
503
|
+
}
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
function getDefaultGasPrice(feeCurrency, feeType) {
|
|
507
|
+
const gasPriceStep = feeCurrency.gasPriceStep || DefaultGasPriceStep;
|
|
508
|
+
return new unit_1.Dec(gasPriceStep[feeType]);
|
|
509
|
+
}
|
|
510
|
+
exports.getDefaultGasPrice = getDefaultGasPrice;
|
|
511
|
+
function calculateCosmosStdFee(feeCurrency, gasUsed, gasPrice, features) {
|
|
512
|
+
const gasAdjustment = (features === null || features === void 0 ? void 0 : features.includes("feemarket")) ? 1.6 : 1.4;
|
|
513
|
+
const adjustedGas = Math.floor(gasUsed * gasAdjustment);
|
|
514
|
+
const feeAmount = gasPrice.mul(new unit_1.Dec(adjustedGas)).roundUp();
|
|
515
|
+
return {
|
|
516
|
+
amount: [
|
|
517
|
+
{
|
|
518
|
+
denom: feeCurrency.coinMinimalDenom,
|
|
519
|
+
amount: feeAmount.toString(),
|
|
520
|
+
},
|
|
521
|
+
],
|
|
522
|
+
gas: adjustedGas.toString(),
|
|
523
|
+
};
|
|
524
|
+
}
|
|
525
|
+
exports.calculateCosmosStdFee = calculateCosmosStdFee;
|
|
526
|
+
//# sourceMappingURL=cosmos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cosmos.js","sourceRoot":"","sources":["../../../src/tx-executor/utils/cosmos.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA2E;AAW3E,oCAAiC;AACjC,iDAAmE;AAEnE,uEAOwD;AACxD,4EAA2F;AAC3F,iFAAgF;AAChF,yFAAuF;AACvF,6DAAyD;AACzD,6CAAyC;AAGzC,iDAAiD;AAEjD;;GAEG;AACH,SAAgB,kCAAkC,CAAC,MAKlD;;IAIC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAErE,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACnE,MAAM,gBAAgB,GACpB,CAAA,MAAA,SAAS,CAAC,QAAQ,0CAAE,QAAQ,CAAC,4BAA4B,CAAC,MAAK,IAAI,CAAC;IAEtE,MAAM,aAAa,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAExD,OAAO;QACL,EAAE,EAAE,UAAK,CAAC,MAAM,CAAC;YACf,SAAS,EAAE,WAAM,CAAC,MAAM,CACtB,WAAM,CAAC,WAAW,CAAC;gBACjB,QAAQ,EAAE,SAAS;gBACnB,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,cAAc;gBACjD,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI;gBAC9B,gBAAgB,EACd,aAAa,IAAI,CAAC,gBAAgB;oBAChC,CAAC,CAAC;wBACE;4BACE,OAAO,EAAE,CAAC,GAAG,EAAE;;gCACb,IACE,MAAA,SAAS,CAAC,QAAQ,0CAAE,QAAQ,CAC1B,6CAA6C,CAC9C,EACD;oCACA,OAAO,6CAA6C,CAAC;iCACtD;gCAED,IAAI,gBAAgB,EAAE;oCACpB,OAAO,iDAAiD,CAAC;iCAC1D;gCAED,OAAO,4CAA4C,CAAC;4BACtD,CAAC,CAAC,EAAE;4BACJ,KAAK,EAAE,6BAAsB,CAAC,MAAM,CAClC,6BAAsB,CAAC,WAAW,CAAC;gCACjC,gBAAgB,EAAE,+BAAsB,CAAC,KAAK,CAC5C,SAAS,CAAC,OAAO,CAClB,CAAC,UAAU,CAAC,QAAQ,EAAE;gCACvB,QAAQ,EAAE,CAAC,gBAAgB;oCACzB,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ;oCAClC,CAAC,CAAC,SAAS;gCACb,WAAW,EAAE,CAAC,gBAAgB;oCAC5B,CAAC,CAAC,eAAM,CAAC,IAAI,CACT,YAAY,CAAC,SAAS,CAAC,SAAS,EAChC,QAAQ,CACT;oCACH,CAAC,CAAC,SAAS;6BACd,CAAC,CACH,CAAC,MAAM,EAAE;yBACX;qBACF;oBACH,CAAC,CAAC,SAAS;aAChB,CAAC,CACH,CAAC,MAAM,EAAE;YACV,aAAa,EAAE,aAAQ,CAAC,MAAM,CAAC;gBAC7B,WAAW,EAAE;oBACX;wBACE,SAAS,EAAE;4BACT,OAAO,EAAE,aAAa;4BACtB,KAAK,EAAE,aAAM,CAAC,MAAM,CAAC;gCACnB,GAAG,EAAE,eAAM,CAAC,IAAI,CACd,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EACpC,QAAQ,CACT;6BACF,CAAC,CAAC,MAAM,EAAE;yBACZ;wBACD,QAAQ,EAAE;4BACR,MAAM,EAAE;gCACN,IAAI,EACF,aAAa,IAAI,gBAAgB;oCAC/B,CAAC,CAAC,kBAAQ,CAAC,iBAAiB;oCAC5B,CAAC,CAAC,kBAAQ,CAAC,2BAA2B;6BAC3C;4BACD,KAAK,EAAE,SAAS;yBACjB;wBACD,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ;qBACvC;iBACF;gBACD,GAAG,EAAE,QAAG,CAAC,WAAW,CAAC;oBACnB,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,MAAgB;oBAChD,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;oBACrC,KAAK,EACH,aAAa,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB;wBACrD,CAAC,CAAC,sGAAsG;4BACtG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ;wBAClC,CAAC,CAAC,SAAS;iBAChB,CAAC;aACH,CAAC,CAAC,MAAM,EAAE;YACX,UAAU;YACR,sEAAsE;YACtE,CAAC,aAAa,IAAI,gBAAgB,IAAI,gBAAgB;gBACpD,CAAC,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;SAC1B,CAAC,CAAC,MAAM,EAAE;QACX,OAAO,EAAE,YAAY,CAAC,MAAM;KAC7B,CAAC;AACJ,CAAC;AA1GD,gFA0GC;AAED;;GAEG;AACH,SAAgB,6BAA6B,CAAC,MAS7C;;IACC,MAAM,EACJ,SAAS,EACT,aAAa,EACb,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,aAAa,EACb,MAAM,EACN,GAAG,GACJ,GAAG,MAAM,CAAC;IAEX,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACnE,MAAM,gBAAgB,GACpB,CAAA,MAAA,SAAS,CAAC,QAAQ,0CAAE,QAAQ,CAAC,4BAA4B,CAAC,MAAK,IAAI,CAAC;IAEtE,MAAM,UAAU,GAAe;QAC7B,QAAQ,EAAE,SAAS,CAAC,OAAO;QAC3B,cAAc,EAAE,aAAa;QAC7B,QAAQ;QACR,GAAG;QACH,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,IAAA,mBAAU,EAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAC;KAC7B,CAAC;IAEF,IAAI,aAAa,EAAE;QACjB,IAAI,gBAAgB,EAAE;YACpB,wEAAwE;YACxE,6FAA6F;YAC5F,UAAkC,CAAC,cAAc;gBAChD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;SACtC;aAAM;YACL,oDAAoD;YACpD,kFAAkF;YAClF,6CAA6C;YAC5C,UAAkC,CAAC,GAAG,mCAClC,UAAU,CAAC,GAAG,GACd,CAAC,GAAG,EAAE;gBACP,IAAI,gBAAgB,EAAE;oBACpB,OAAO,EAAE,CAAC;iBACX;gBACD,OAAO;oBACL,QAAQ,EAAE,MAAM;iBACjB,CAAC;YACJ,CAAC,CAAC,EAAE,CACL,CAAC;SACH;KACF;IAED,OAAO,IAAA,wBAAe,EAAC,UAAU,CAAC,CAAC;AACrC,CAAC;AA3DD,sEA2DC;AAED,SAAgB,8BAA8B,CAAC,MAQ9C;IAKC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GACxE,MAAM,CAAC;IAET,MAAM,SAAS,GAAG,WAAM,CAAC,MAAM,CAC7B,WAAM,CAAC,WAAW,CAAC;QACjB,QAAQ,EAAE,SAAS;QACnB,IAAI;KACL,CAAC,CACH,CAAC,MAAM,EAAE,CAAC;IAEX,MAAM,aAAa,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAExD,MAAM,aAAa,GAAG,aAAQ,CAAC,MAAM,CAAC;QACpC,WAAW,EAAE;YACX,eAAU,CAAC,WAAW,CAAC;gBACrB,SAAS,EAAE;oBACT,OAAO,EAAE,aAAa;oBACtB,KAAK,EAAE,aAAM,CAAC,MAAM,CAAC;wBACnB,GAAG,EAAE,MAAM;qBACZ,CAAC,CAAC,MAAM,EAAE;iBACZ;gBACD,QAAQ,EAAE;oBACR,MAAM,EAAE;wBACN,IAAI,EAAE,kBAAQ,CAAC,gBAAgB;qBAChC;iBACF;gBACD,QAAQ;aACT,CAAC;SACH;QACD,GAAG,EAAE,QAAG,CAAC,WAAW,CAAC;YACnB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAClC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;YACH,QAAQ,EAAE,GAAG,CAAC,GAAG;SAClB,CAAC;KACH,CAAC,CAAC,MAAM,EAAE,CAAC;IAEZ,MAAM,OAAO,GAAG,YAAO,CAAC,WAAW,CAAC;QAClC,SAAS;QACT,aAAa;QACb,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,aAAa;KACd,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,SAAS;QACT,aAAa;KACd,CAAC;AACJ,CAAC;AA/DD,wEA+DC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,SAAoB;;IACzD,MAAM,eAAe,GAAG,CAAA,MAAA,SAAS,CAAC,QAAQ,0CAAE,QAAQ,CAAC,cAAc,CAAC,MAAK,IAAI,CAAC;IAE9E,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO,iCAAiC,CAAC;KAC1C;IAED,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;QAC7C,OAAO,+CAA+C,CAAC;KACxD;IAED,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAC3C,OAAO,wCAAwC,CAAC;KACjD;IAED,IAAI,MAAA,SAAS,CAAC,QAAQ,0CAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE;QACxD,OAAO,2CAA2C,CAAC;KACpD;IAED,IAAI,MAAA,SAAS,CAAC,QAAQ,0CAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE;QACxD,OAAO,4CAA4C,CAAC;KACrD;IAED,OAAO,0CAA0C,CAAC;AACpD,CAAC;AAxBD,wDAwBC;AAED,SAAsB,gBAAgB,CACpC,MAAc,EACd,SAAoB,EACpB,IAAW,EACX,GAAwB,EACxB,OAAe,EAAE;;QAIjB,MAAM,OAAO,GAAG,MAAM,oBAAW,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAE9E,MAAM,UAAU,GAAG,UAAK,CAAC,MAAM,CAAC;YAC9B,SAAS,EAAE,WAAM,CAAC,MAAM,CACtB,WAAM,CAAC,WAAW,CAAC;gBACjB,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,IAAI;aACX,CAAC,CACH,CAAC,MAAM,EAAE;YACV,aAAa,EAAE,aAAQ,CAAC,MAAM,CAAC;gBAC7B,WAAW,EAAE;oBACX,eAAU,CAAC,WAAW,CAAC;wBACrB,sBAAsB;wBACtB,uDAAuD;wBACvD,gGAAgG;wBAChG,QAAQ,EAAE;4BACR,MAAM,EAAE;gCACN,IAAI,EAAE,kBAAQ,CAAC,2BAA2B;6BAC3C;4BACD,KAAK,EAAE,SAAS;yBACjB;wBACD,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;qBAC3C,CAAC;iBACH;gBACD,GAAG,EAAE,QAAG,CAAC,WAAW,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;wBAChC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;oBACxD,CAAC,CAAC;iBACH,CAAC;aACH,CAAC,CAAC,MAAM,EAAE;YACX,oEAAoE;YACpE,yFAAyF;YACzF,UAAU,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;SACjC,CAAC,CAAC,MAAM,EAAE,CAAC;QAEZ,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAW,EAI7B,SAAS,CAAC,IAAI,EAAE,6BAA6B,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,QAAQ,EAAE,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;aACrD,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC1E;QAED,OAAO;YACL,OAAO,EAAE,OAAO;SACjB,CAAC;IACJ,CAAC;CAAA;AAlED,4CAkEC;AAED,SAAsB,4BAA4B,CAChD,OAAe,EACf,aAAqB,EACrB,KAAK,GAAG,IAAI;;QAEZ,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,0BAAW,EAChC,OAAO,EACP,2CAA2C,aAAa,qBAAqB,KAAK,EAAE,CACrF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;CAAA;AAVD,oEAUC;AAED,0BAA0B;AAC1B,MAAM,mBAAmB,GAAG;IAC1B,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,gDAAgD;AAChD,MAAM,qBAAqB,GAAG;IAC5B,GAAG,EAAE,GAAG;IACR,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;CACV,CAAC;AAEF,SAAsB,iBAAiB,CACrC,SAAoB,EACpB,UAA+B,SAAS,EACxC,WAAyB;;;QAWzB,mEAAmE;QACnE,MAAM,QAAQ,GAAG,WAAW,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;SACxE;QAED,mEAAmE;QACnE,IAAI,MAAA,SAAS,CAAC,QAAQ,0CAAE,QAAQ,CAAC,uBAAuB,CAAC,EAAE;YACzD,IAAI;gBACF,MAAM,aAAa,GAAG,MAAM,yBAAyB,CACnD,SAAS,EACT,QAAQ,EACR,OAAO,CACR,CAAC;gBACF,IAAI,CAAC,aAAa,EAAE;oBAClB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;iBAC9D;gBAED,IAAI,MAAA,SAAS,CAAC,QAAQ,0CAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE;oBAClD,MAAM,mBAAmB,GAAG,MAAM,wBAAwB,CACxD,SAAS,EACT,QAAQ,EACR,OAAO,CACR,CAAC;oBACF,IAAI,mBAAmB,EAAE;wBACvB,OAAO;4BACL,QAAQ,EAAE,mBAAmB;4BAC7B,MAAM,EAAE,gBAAgB;yBACzB,CAAC;qBACH;iBACF;gBAED,8DAA8D;gBAC9D,OAAO;oBACL,QAAQ,EAAE,IAAI,UAAG,CAAC,aAAa,CAAC,YAAa,CAAC,OAAO,CAAC,CAAC;oBACvD,MAAM,EAAE,kBAAkB;iBAC3B,CAAC;aACH;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;aAC3D;SACF;QAED,4BAA4B;QAC5B,IAAI,MAAA,SAAS,CAAC,QAAQ,0CAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE;YACrD,IAAI;gBACF,MAAM,YAAY,GAAG,MAAM,2BAA2B,CACpD,SAAS,EACT,OAAO,CACR,CAAC;gBACF,IAAI,YAAY,EAAE;oBAChB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;iBAC7D;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;aAC7D;SACF;QAED,wDAAwD;QACxD,IAAI,MAAA,SAAS,CAAC,QAAQ,0CAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;YAC7C,IAAI;gBACF,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAChD,SAAS,EACT,QAAQ,EACR,OAAO,CACR,CAAC;gBACF,IAAI,eAAe,EAAE;oBACnB,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;iBAC3D;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;aAC/D;SACF;QAED,mCAAmC;QACnC,IAAI,SAAS,CAAC,GAAG,EAAE;YACjB,IAAI;gBACF,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACnE,IAAI,aAAa,EAAE;oBACjB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;iBACvD;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;aAC7D;SACF;QAED,wCAAwC;QACxC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;;CACxC;AAtGD,8CAsGC;AAED,SAAe,yBAAyB,CACtC,SAAoB,EACpB,WAAwB,EACxB,OAA4B;;QAE5B,8BAA8B;QAC9B,MAAM,SAAS,GAAG,OAAO,CAAC;QAE1B,IAAI,WAAW,CAAC,gBAAgB,KAAK,SAAS,EAAE;YAC9C,OAAO,IAAI,CAAC;SACb;QAED,kDAAkD;QAClD,MAAM,YAAY,GAAG,MAAM,IAAA,0BAAW,EAKpC,yGAAyG,CAC1G,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAyC,EAAE,CAAC,CAAC,CAAC;QAErE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,MAAM,IAAA,0BAAW,EACjD,SAAS,CAAC,IAAI,EACd,0CAA0C,CAC3C,CAAC;QAEF,MAAM,UAAU,GACd,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC/D,uCACK,WAAW,KACd,YAAY,EAAE;gBACZ,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,UAAU;gBACtD,OAAO,EAAE,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,UAAU;gBAC1D,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,UAAU;aACxD,IACD;IACJ,CAAC;CAAA;AAED,SAAe,wBAAwB,CACrC,SAAoB,EACpB,WAAwB,EACxB,OAA4B;;QAE5B,4BAA4B;QAC5B,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,MAAM,IAAA,0BAAW,EAElD,SAAS,CAAC,IAAI,EAAE,oCAAoC,CAAC,CAAC;QAEzD,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAClD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC,gBAAgB,CACxD,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,IAAI,CAAC;SACb;QAED,iBAAiB;QACjB,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,MAAM,IAAA,0BAAW,EACnD,SAAS,CAAC,IAAI,EACd,qDAAqD,WAAW,CAAC,gBAAgB,EAAE,CACpF,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,UAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,UAAG,CAAC,CAAC,CAAC,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC;SACb;QAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9D,6BAA6B;QAC7B,OAAO,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,UAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;CAAA;AAED,SAAe,oBAAoB,CACjC,SAAoB,EACpB,WAAwB,EACxB,OAA4B;;QAE5B,IAAI;YACF,MAAM,iBAAiB,GAAG,MAAM,IAAA,0BAAW,EAExC,SAAS,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC,gBAAgB,CACxD,CAAC;YAEF,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO,IAAI,CAAC;aACb;YAED,8BAA8B;YAC9B,MAAM,oBAAoB,GAAG,MAAM,IAAA,0BAAW,EAO5C,sEAAsE,EACtE,sBAAsB,CACvB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBACb,IAAI,EAAE,EAGL;aACF,CAAC,CAAC,CAAC;YAEJ,IAAI,cAAc,GAAG,qBAAqB,CAAC;YAE3C,+BAA+B;YAC/B,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/D,IAAI,aAAa,EAAE;gBACjB,cAAc,GAAG;oBACf,GAAG,EAAE,aAAa,CAAC,GAAG,IAAI,cAAc,CAAC,GAAG;oBAC5C,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO;oBACxD,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI;iBAChD,CAAC;aACH;YAED,sCAAsC;YACtC,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACjE,IAAI,WAAW,EAAE;gBACf,cAAc,GAAG;oBACf,GAAG,EAAE,WAAW,CAAC,GAAG,IAAI,cAAc,CAAC,GAAG;oBAC1C,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO;oBACtD,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI;iBAC9C,CAAC;aACH;YAED,MAAM,YAAY,GAAG,IAAI,UAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9C,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,UAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC3D;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,IAAI,CAAC;SACb;IACH,CAAC;CAAA;AAED,SAAe,2BAA2B,CACxC,SAAoB,EACpB,OAA4B;;QAE5B,IAAI;YACF,MAAM,kBAAkB,GAAG,MAAM,IAAA,0BAAW,EAIzC,SAAS,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;YAEnD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;gBAClD,OAAO,IAAI,CAAC;aACb;YAED,MAAM,YAAY,GAAG,IAAI,UAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAE5E,8BAA8B;YAC9B,MAAM,oBAAoB,GAAG,MAAM,IAAA,0BAAW,EAO5C,sEAAsE,EACtE,sBAAsB,CACvB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBACb,IAAI,EAAE,EAGL;aACF,CAAC,CAAC,CAAC;YAEJ,IAAI,cAAc,GAAG,qBAAqB,CAAC;YAE3C,+BAA+B;YAC/B,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/D,IAAI,aAAa,EAAE;gBACjB,cAAc,GAAG;oBACf,GAAG,EAAE,aAAa,CAAC,GAAG,IAAI,cAAc,CAAC,GAAG;oBAC5C,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO;oBACxD,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI;iBAChD,CAAC;aACH;YAED,sCAAsC;YACtC,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACjE,IAAI,WAAW,EAAE;gBACf,cAAc,GAAG;oBACf,GAAG,EAAE,WAAW,CAAC,GAAG,IAAI,cAAc,CAAC,GAAG;oBAC1C,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO;oBACtD,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI;iBAC9C,CAAC;aACH;YAED,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,UAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC3D;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,IAAI,CAAC;SACb;IACH,CAAC;CAAA;AAED,SAAe,kBAAkB,CAC/B,SAAoB,EACpB,OAA4B;;QAE5B,IAAI;YACF,gCAAgC;YAChC,MAAM,aAAa,GAAG,MAAM,IAAA,0BAAW,EAIpC,SAAS,CAAC,GAAG,EAAE;gBAChB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,sBAAsB;oBAC9B,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;oBACzB,EAAE,EAAE,CAAC;iBACN,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,gBAAgB,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YACjE,IAAI,CAAC,gBAAgB,EAAE;gBACrB,OAAO,IAAI,CAAC;aACb;YAED,MAAM,aAAa,GAAG,IAAI,UAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;YAE9D,8CAA8C;YAC9C,MAAM,sBAAsB,GAAwC;gBAClE,GAAG,EAAE,GAAG;gBACR,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,GAAG;aACV,CAAC;YAEF,MAAM,oBAAoB,GAAG,aAAa,CAAC,GAAG,CAC5C,IAAI,UAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAC7C,CAAC;YAEF,OAAO,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;SAChD;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,IAAI,CAAC;SACb;IACH,CAAC;CAAA;AAED,SAAgB,kBAAkB,CAChC,WAAwB,EACxB,OAA4B;IAE5B,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,IAAI,mBAAmB,CAAC;IACrE,OAAO,IAAI,UAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AACxC,CAAC;AAND,gDAMC;AAED,SAAgB,qBAAqB,CACnC,WAAwB,EACxB,OAAe,EACf,QAAa,EACb,QAA8B;IAE9B,MAAM,aAAa,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAElE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC;IAExD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAG,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAE/D,OAAO;QACL,MAAM,EAAE;YACN;gBACE,KAAK,EAAE,WAAW,CAAC,gBAAgB;gBACnC,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE;aAC7B;SACF;QACD,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE;KAC5B,CAAC;AACJ,CAAC;AArBD,sDAqBC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { EVMInfo } from "@keplr-wallet/types";
|
|
2
|
+
import { UnsignedTransaction } from "@ethersproject/transactions";
|
|
3
|
+
import { BackgroundTxFeeType } from "../types";
|
|
4
|
+
export declare function fillUnsignedEVMTx(origin: string, evmInfo: EVMInfo, signer: string, tx: UnsignedTransaction, feeType?: BackgroundTxFeeType): Promise<UnsignedTransaction>;
|