@gearbox-protocol/sdk 9.14.0 → 9.15.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/cjs/permissionless/bindings/address-provider.js +51 -0
- package/dist/cjs/permissionless/bindings/base-contract.js +173 -0
- package/dist/cjs/permissionless/bindings/bytecode-repository.js +526 -0
- package/dist/cjs/permissionless/bindings/compressors/index.js +24 -0
- package/dist/cjs/permissionless/bindings/compressors/token-compressor.js +110 -0
- package/dist/cjs/permissionless/bindings/compressors/withdrawal-compressor.js +60 -0
- package/dist/cjs/permissionless/bindings/cross-chain-multisig.js +355 -0
- package/dist/cjs/permissionless/bindings/factory/abstract-factory.js +52 -0
- package/dist/cjs/permissionless/bindings/factory/credit-factory.js +197 -0
- package/dist/cjs/permissionless/bindings/factory/pool-factory.js +69 -0
- package/dist/cjs/permissionless/bindings/factory/price-oracle-factory.js +47 -0
- package/dist/cjs/permissionless/bindings/governance/batches-chain.js +41 -0
- package/dist/cjs/permissionless/bindings/governance/governor.js +243 -0
- package/dist/cjs/permissionless/bindings/governance/index.js +26 -0
- package/dist/cjs/permissionless/bindings/governance/timelock.js +104 -0
- package/dist/cjs/permissionless/bindings/governance/types.js +16 -0
- package/dist/cjs/permissionless/bindings/index.js +48 -0
- package/dist/cjs/permissionless/bindings/instance-manager.js +244 -0
- package/dist/cjs/permissionless/bindings/market-configurator-factory.js +75 -0
- package/dist/cjs/permissionless/bindings/market-configurator.js +771 -0
- package/dist/cjs/permissionless/bindings/price-feed-store.js +395 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/balancer-stable.js +63 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/balancer-weighted.js +63 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/bounded.js +47 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/composite.js +43 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/constant.js +42 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/curve-crypto.js +67 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/curve-stable.js +67 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/curve-twap.js +70 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/curve-usd.js +50 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/erc4626.js +72 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/external.js +38 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/index.js +63 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/kodiak.js +50 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/mellow-lrt.js +122 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/pendle-pt-twap.js +51 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/pyth.js +65 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/redstone.js +81 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/wsteth.js +63 -0
- package/dist/cjs/permissionless/bindings/pricefeeds/zero.js +33 -0
- package/dist/cjs/permissionless/bindings/router/index.js +22 -0
- package/dist/cjs/permissionless/bindings/router/routing-manager.js +58 -0
- package/dist/cjs/permissionless/bindings/treasury-splitter.js +60 -0
- package/dist/cjs/permissionless/bindings/types.js +16 -0
- package/dist/cjs/permissionless/chains/archive-transport.js +274 -0
- package/dist/cjs/permissionless/core/auditor.js +16 -0
- package/dist/cjs/permissionless/core/bytecode.js +16 -0
- package/dist/cjs/permissionless/core/index.js +32 -0
- package/dist/cjs/permissionless/core/pricefeed-builder.js +16 -0
- package/dist/cjs/permissionless/core/pricefeed.js +16 -0
- package/dist/cjs/permissionless/core/proposal.js +16 -0
- package/dist/cjs/permissionless/core/raw-tx.js +38 -0
- package/dist/cjs/permissionless/deployment/addresses.js +35 -0
- package/dist/cjs/permissionless/deployment/mainnet.js +54 -0
- package/dist/cjs/permissionless/index.js +32 -0
- package/dist/cjs/permissionless/package.json +1 -0
- package/dist/cjs/permissionless/plugins/index.js +40 -0
- package/dist/cjs/permissionless/plugins/irm/constructor-params-abi.js +81 -0
- package/dist/cjs/permissionless/plugins/loss-policies/constructor-params-abi.js +79 -0
- package/dist/cjs/permissionless/plugins/rate-keepers/constructor-params-abi.js +89 -0
- package/dist/cjs/permissionless/utils/abi-decoder.js +72 -0
- package/dist/cjs/permissionless/utils/abi-encoder.js +89 -0
- package/dist/cjs/permissionless/utils/block-utils.js +55 -0
- package/dist/cjs/permissionless/utils/create2.js +113 -0
- package/dist/cjs/permissionless/utils/format.js +97 -0
- package/dist/cjs/permissionless/utils/governance/batch.js +114 -0
- package/dist/cjs/permissionless/utils/governance/index.js +26 -0
- package/dist/cjs/permissionless/utils/governance/timelock-txs.js +44 -0
- package/dist/cjs/permissionless/utils/governance/types.js +16 -0
- package/dist/cjs/permissionless/utils/index.js +38 -0
- package/dist/cjs/permissionless/utils/literals.js +46 -0
- package/dist/cjs/permissionless/utils/price-update/get-price-feeds.js +91 -0
- package/dist/cjs/permissionless/utils/price-update/get-price-update-tx.js +84 -0
- package/dist/cjs/permissionless/utils/price-update/get-prices.js +123 -0
- package/dist/cjs/permissionless/utils/price-update/get-updatable-feeds.js +52 -0
- package/dist/cjs/permissionless/utils/price-update/index.js +28 -0
- package/dist/cjs/permissionless/utils/signature.js +35 -0
- package/dist/cjs/sdk/GearboxSDK.js +5 -1
- package/dist/esm/permissionless/bindings/address-provider.js +27 -0
- package/dist/esm/permissionless/bindings/base-contract.js +151 -0
- package/dist/esm/permissionless/bindings/bytecode-repository.js +508 -0
- package/dist/esm/permissionless/bindings/compressors/index.js +2 -0
- package/dist/esm/permissionless/bindings/compressors/token-compressor.js +89 -0
- package/dist/esm/permissionless/bindings/compressors/withdrawal-compressor.js +38 -0
- package/dist/esm/permissionless/bindings/cross-chain-multisig.js +336 -0
- package/dist/esm/permissionless/bindings/factory/abstract-factory.js +28 -0
- package/dist/esm/permissionless/bindings/factory/credit-factory.js +177 -0
- package/dist/esm/permissionless/bindings/factory/pool-factory.js +45 -0
- package/dist/esm/permissionless/bindings/factory/price-oracle-factory.js +23 -0
- package/dist/esm/permissionless/bindings/governance/batches-chain.js +17 -0
- package/dist/esm/permissionless/bindings/governance/governor.js +224 -0
- package/dist/esm/permissionless/bindings/governance/index.js +3 -0
- package/dist/esm/permissionless/bindings/governance/timelock.js +80 -0
- package/dist/esm/permissionless/bindings/governance/types.js +0 -0
- package/dist/esm/permissionless/bindings/index.js +14 -0
- package/dist/esm/permissionless/bindings/instance-manager.js +223 -0
- package/dist/esm/permissionless/bindings/market-configurator-factory.js +51 -0
- package/dist/esm/permissionless/bindings/market-configurator.js +765 -0
- package/dist/esm/permissionless/bindings/price-feed-store.js +376 -0
- package/dist/esm/permissionless/bindings/pricefeeds/balancer-stable.js +39 -0
- package/dist/esm/permissionless/bindings/pricefeeds/balancer-weighted.js +39 -0
- package/dist/esm/permissionless/bindings/pricefeeds/bounded.js +23 -0
- package/dist/esm/permissionless/bindings/pricefeeds/composite.js +19 -0
- package/dist/esm/permissionless/bindings/pricefeeds/constant.js +18 -0
- package/dist/esm/permissionless/bindings/pricefeeds/curve-crypto.js +43 -0
- package/dist/esm/permissionless/bindings/pricefeeds/curve-stable.js +43 -0
- package/dist/esm/permissionless/bindings/pricefeeds/curve-twap.js +46 -0
- package/dist/esm/permissionless/bindings/pricefeeds/curve-usd.js +26 -0
- package/dist/esm/permissionless/bindings/pricefeeds/erc4626.js +48 -0
- package/dist/esm/permissionless/bindings/pricefeeds/external.js +14 -0
- package/dist/esm/permissionless/bindings/pricefeeds/index.js +39 -0
- package/dist/esm/permissionless/bindings/pricefeeds/kodiak.js +26 -0
- package/dist/esm/permissionless/bindings/pricefeeds/mellow-lrt.js +98 -0
- package/dist/esm/permissionless/bindings/pricefeeds/pendle-pt-twap.js +27 -0
- package/dist/esm/permissionless/bindings/pricefeeds/pyth.js +41 -0
- package/dist/esm/permissionless/bindings/pricefeeds/redstone.js +57 -0
- package/dist/esm/permissionless/bindings/pricefeeds/wsteth.js +39 -0
- package/dist/esm/permissionless/bindings/pricefeeds/zero.js +9 -0
- package/dist/esm/permissionless/bindings/router/index.js +1 -0
- package/dist/esm/permissionless/bindings/router/routing-manager.js +36 -0
- package/dist/esm/permissionless/bindings/treasury-splitter.js +36 -0
- package/dist/esm/permissionless/bindings/types.js +0 -0
- package/dist/esm/permissionless/chains/archive-transport.js +250 -0
- package/dist/esm/permissionless/core/auditor.js +0 -0
- package/dist/esm/permissionless/core/bytecode.js +0 -0
- package/dist/esm/permissionless/core/index.js +6 -0
- package/dist/esm/permissionless/core/pricefeed-builder.js +0 -0
- package/dist/esm/permissionless/core/pricefeed.js +0 -0
- package/dist/esm/permissionless/core/proposal.js +0 -0
- package/dist/esm/permissionless/core/raw-tx.js +14 -0
- package/dist/esm/permissionless/deployment/addresses.js +11 -0
- package/dist/esm/permissionless/deployment/mainnet.js +27 -0
- package/dist/esm/permissionless/index.js +6 -0
- package/dist/esm/permissionless/package.json +1 -0
- package/dist/esm/permissionless/plugins/index.js +20 -0
- package/dist/esm/permissionless/plugins/irm/constructor-params-abi.js +52 -0
- package/dist/esm/permissionless/plugins/loss-policies/constructor-params-abi.js +50 -0
- package/dist/esm/permissionless/plugins/rate-keepers/constructor-params-abi.js +59 -0
- package/dist/esm/permissionless/utils/abi-decoder.js +50 -0
- package/dist/esm/permissionless/utils/abi-encoder.js +65 -0
- package/dist/esm/permissionless/utils/block-utils.js +31 -0
- package/dist/esm/permissionless/utils/create2.js +85 -0
- package/dist/esm/permissionless/utils/format.js +67 -0
- package/dist/esm/permissionless/utils/governance/batch.js +87 -0
- package/dist/esm/permissionless/utils/governance/index.js +3 -0
- package/dist/esm/permissionless/utils/governance/timelock-txs.js +20 -0
- package/dist/esm/permissionless/utils/governance/types.js +0 -0
- package/dist/esm/permissionless/utils/index.js +9 -0
- package/dist/esm/permissionless/utils/literals.js +16 -0
- package/dist/esm/permissionless/utils/price-update/get-price-feeds.js +65 -0
- package/dist/esm/permissionless/utils/price-update/get-price-update-tx.js +65 -0
- package/dist/esm/permissionless/utils/price-update/get-prices.js +103 -0
- package/dist/esm/permissionless/utils/price-update/get-updatable-feeds.js +31 -0
- package/dist/esm/permissionless/utils/price-update/index.js +4 -0
- package/dist/esm/permissionless/utils/signature.js +11 -0
- package/dist/esm/sdk/GearboxSDK.js +5 -1
- package/dist/types/permissionless/bindings/address-provider.d.ts +259 -0
- package/dist/types/permissionless/bindings/base-contract.d.ts +23 -0
- package/dist/types/permissionless/bindings/bytecode-repository.d.ts +1352 -0
- package/dist/types/permissionless/bindings/compressors/index.d.ts +2 -0
- package/dist/types/permissionless/bindings/compressors/token-compressor.d.ts +118 -0
- package/dist/types/permissionless/bindings/compressors/withdrawal-compressor.d.ts +331 -0
- package/dist/types/permissionless/bindings/cross-chain-multisig.d.ts +835 -0
- package/dist/types/permissionless/bindings/factory/abstract-factory.d.ts +17 -0
- package/dist/types/permissionless/bindings/factory/credit-factory.d.ts +224 -0
- package/dist/types/permissionless/bindings/factory/pool-factory.d.ts +86 -0
- package/dist/types/permissionless/bindings/factory/price-oracle-factory.d.ts +38 -0
- package/dist/types/permissionless/bindings/governance/batches-chain.d.ts +39 -0
- package/dist/types/permissionless/bindings/governance/governor.d.ts +615 -0
- package/dist/types/permissionless/bindings/governance/index.d.ts +3 -0
- package/dist/types/permissionless/bindings/governance/timelock.d.ts +10 -0
- package/dist/types/permissionless/bindings/governance/types.d.ts +42 -0
- package/dist/types/permissionless/bindings/index.d.ts +14 -0
- package/dist/types/permissionless/bindings/instance-manager.d.ts +361 -0
- package/dist/types/permissionless/bindings/market-configurator-factory.d.ts +244 -0
- package/dist/types/permissionless/bindings/market-configurator.d.ts +1656 -0
- package/dist/types/permissionless/bindings/price-feed-store.d.ts +605 -0
- package/dist/types/permissionless/bindings/pricefeeds/balancer-stable.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/balancer-weighted.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/bounded.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/composite.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/constant.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/curve-crypto.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/curve-stable.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/curve-twap.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/curve-usd.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/erc4626.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/external.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/index.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/kodiak.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/mellow-lrt.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/pendle-pt-twap.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/pyth.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/redstone.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/wsteth.d.ts +2 -0
- package/dist/types/permissionless/bindings/pricefeeds/zero.d.ts +2 -0
- package/dist/types/permissionless/bindings/router/index.d.ts +1 -0
- package/dist/types/permissionless/bindings/router/routing-manager.d.ts +502 -0
- package/dist/types/permissionless/bindings/treasury-splitter.d.ts +21 -0
- package/dist/types/permissionless/bindings/types.d.ts +65 -0
- package/dist/types/permissionless/chains/archive-transport.d.ts +49 -0
- package/dist/types/permissionless/core/auditor.d.ts +7 -0
- package/dist/types/permissionless/core/bytecode.d.ts +46 -0
- package/dist/types/permissionless/core/index.d.ts +6 -0
- package/dist/types/permissionless/core/pricefeed-builder.d.ts +59 -0
- package/dist/types/permissionless/core/pricefeed.d.ts +10 -0
- package/dist/types/permissionless/core/proposal.d.ts +33 -0
- package/dist/types/permissionless/core/raw-tx.d.ts +4 -0
- package/dist/types/permissionless/deployment/addresses.d.ts +7 -0
- package/dist/types/permissionless/deployment/mainnet.d.ts +10 -0
- package/dist/types/permissionless/index.d.ts +6 -0
- package/dist/types/permissionless/plugins/index.d.ts +3 -0
- package/dist/types/permissionless/plugins/irm/constructor-params-abi.d.ts +63 -0
- package/dist/types/permissionless/plugins/loss-policies/constructor-params-abi.d.ts +48 -0
- package/dist/types/permissionless/plugins/rate-keepers/constructor-params-abi.d.ts +55 -0
- package/dist/types/permissionless/utils/abi-decoder.d.ts +13 -0
- package/dist/types/permissionless/utils/abi-encoder.d.ts +7 -0
- package/dist/types/permissionless/utils/block-utils.d.ts +8 -0
- package/dist/types/permissionless/utils/create2.d.ts +17 -0
- package/dist/types/permissionless/utils/format.d.ts +7 -0
- package/dist/types/permissionless/utils/governance/batch.d.ts +17 -0
- package/dist/types/permissionless/utils/governance/index.d.ts +3 -0
- package/dist/types/permissionless/utils/governance/timelock-txs.d.ts +2 -0
- package/dist/types/permissionless/utils/governance/types.d.ts +16 -0
- package/dist/types/permissionless/utils/index.d.ts +9 -0
- package/dist/types/permissionless/utils/literals.d.ts +7 -0
- package/dist/types/permissionless/utils/price-update/get-price-feeds.d.ts +8 -0
- package/dist/types/permissionless/utils/price-update/get-price-update-tx.d.ts +9 -0
- package/dist/types/permissionless/utils/price-update/get-prices.d.ts +6 -0
- package/dist/types/permissionless/utils/price-update/get-updatable-feeds.d.ts +8 -0
- package/dist/types/permissionless/utils/price-update/index.d.ts +4 -0
- package/dist/types/permissionless/utils/signature.d.ts +2 -0
- package/package.json +11 -1
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var get_price_feeds_exports = {};
|
|
20
|
+
__export(get_price_feeds_exports, {
|
|
21
|
+
getCallTouchedPriceFeeds: () => getCallTouchedPriceFeeds,
|
|
22
|
+
getCallsTouchedPriceFeeds: () => getCallsTouchedPriceFeeds,
|
|
23
|
+
getCallsTouchedUpdatablePriceFeeds: () => getCallsTouchedUpdatablePriceFeeds
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(get_price_feeds_exports);
|
|
26
|
+
var import_constants = require("../../../sdk/constants/index.js");
|
|
27
|
+
var import_sdk = require("../../../sdk/index.js");
|
|
28
|
+
var import_bindings = require("../../bindings");
|
|
29
|
+
var import_addresses = require("../../deployment/addresses");
|
|
30
|
+
var import_format = require("../format");
|
|
31
|
+
var import_get_updatable_feeds = require("./get-updatable-feeds");
|
|
32
|
+
function getCallTouchedPriceFeeds(parsedCall) {
|
|
33
|
+
const priceFeeds = [];
|
|
34
|
+
const deepParsedArgs = (0, import_format.deepJsonParse)(parsedCall.args);
|
|
35
|
+
function searchForPriceFeeds(obj) {
|
|
36
|
+
if (obj === null || obj === void 0) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (Array.isArray(obj)) {
|
|
40
|
+
obj.forEach((item) => {
|
|
41
|
+
searchForPriceFeeds(item);
|
|
42
|
+
});
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (typeof obj === "object") {
|
|
46
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
47
|
+
if (key === "priceFeed" || key === "underlyingPriceFeed") {
|
|
48
|
+
priceFeeds.push(value);
|
|
49
|
+
}
|
|
50
|
+
searchForPriceFeeds(value);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
searchForPriceFeeds(deepParsedArgs);
|
|
55
|
+
return priceFeeds;
|
|
56
|
+
}
|
|
57
|
+
function getCallsTouchedPriceFeeds(parsedCalls) {
|
|
58
|
+
return parsedCalls.flatMap((call) => getCallTouchedPriceFeeds(call));
|
|
59
|
+
}
|
|
60
|
+
async function getCallsTouchedUpdatablePriceFeeds({
|
|
61
|
+
parsedCalls,
|
|
62
|
+
client
|
|
63
|
+
}) {
|
|
64
|
+
const addressProvider = new import_bindings.AddressProviderContract(
|
|
65
|
+
import_addresses.Addresses.ADDRESS_PROVIDER,
|
|
66
|
+
client
|
|
67
|
+
);
|
|
68
|
+
const pfCompressor = await addressProvider.getAddressOrRevert(
|
|
69
|
+
import_constants.AP_PRICE_FEED_COMPRESSOR,
|
|
70
|
+
310n
|
|
71
|
+
);
|
|
72
|
+
const sdk = await import_sdk.GearboxSDK.attach({
|
|
73
|
+
rpcURLs: [client.transport.url],
|
|
74
|
+
marketConfigurators: []
|
|
75
|
+
});
|
|
76
|
+
const touchedFeeds = parsedCalls.flatMap(
|
|
77
|
+
(call) => getCallTouchedPriceFeeds(call)
|
|
78
|
+
);
|
|
79
|
+
return (await (0, import_get_updatable_feeds.getUpdatablePriceFeeds)({
|
|
80
|
+
sdk,
|
|
81
|
+
client,
|
|
82
|
+
pfCompressor,
|
|
83
|
+
priceFeeds: touchedFeeds
|
|
84
|
+
})).map((feed) => feed.address);
|
|
85
|
+
}
|
|
86
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
87
|
+
0 && (module.exports = {
|
|
88
|
+
getCallTouchedPriceFeeds,
|
|
89
|
+
getCallsTouchedPriceFeeds,
|
|
90
|
+
getCallsTouchedUpdatablePriceFeeds
|
|
91
|
+
});
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var get_price_update_tx_exports = {};
|
|
20
|
+
__export(get_price_update_tx_exports, {
|
|
21
|
+
getPriceUpdateTx: () => getPriceUpdateTx,
|
|
22
|
+
getUpdateCalldata: () => getUpdateCalldata
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(get_price_update_tx_exports);
|
|
25
|
+
var import_viem = require("viem");
|
|
26
|
+
var import_sdk = require("../../../sdk/index.js");
|
|
27
|
+
var import_utils = require("../../../sdk/utils/index.js");
|
|
28
|
+
var import_bindings = require("../../bindings");
|
|
29
|
+
var import_addresses = require("../../deployment/addresses");
|
|
30
|
+
function getUpdateCalldata(tx) {
|
|
31
|
+
const data = (0, import_viem.decodeFunctionData)({
|
|
32
|
+
abi: (0, import_viem.parseAbi)(["function updatePrice(bytes calldata data) external"]),
|
|
33
|
+
data: tx.raw.callData
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
priceFeed: tx.raw.to,
|
|
37
|
+
data: data.args[0]
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
async function getPriceUpdateTx({
|
|
41
|
+
client,
|
|
42
|
+
priceFeeds,
|
|
43
|
+
useMulticall3 = false
|
|
44
|
+
}) {
|
|
45
|
+
const pfStore = new import_bindings.PriceFeedStoreContract(
|
|
46
|
+
import_addresses.Addresses.PRICE_FEED_STORE,
|
|
47
|
+
client
|
|
48
|
+
);
|
|
49
|
+
const sdk = await import_sdk.GearboxSDK.attach({
|
|
50
|
+
rpcURLs: [client.transport.url],
|
|
51
|
+
marketConfigurators: []
|
|
52
|
+
});
|
|
53
|
+
const updateTxs = await sdk.priceFeeds.generateExternalPriceFeedsUpdateTxs(priceFeeds);
|
|
54
|
+
if (useMulticall3) {
|
|
55
|
+
const multicallCalls = updateTxs.txs.map((tx) => ({
|
|
56
|
+
target: tx.raw.to,
|
|
57
|
+
allowFailure: false,
|
|
58
|
+
callData: tx.raw.callData
|
|
59
|
+
}));
|
|
60
|
+
if (multicallCalls.length === 0) {
|
|
61
|
+
return void 0;
|
|
62
|
+
}
|
|
63
|
+
const multicall3Address = client.chain?.contracts?.multicall3?.address;
|
|
64
|
+
if (!multicall3Address) {
|
|
65
|
+
throw new Error("Multicall3 address not found");
|
|
66
|
+
}
|
|
67
|
+
const multicallTx = (0, import_utils.createRawTx)(multicall3Address, {
|
|
68
|
+
abi: import_viem.multicall3Abi,
|
|
69
|
+
functionName: "aggregate3",
|
|
70
|
+
args: [multicallCalls]
|
|
71
|
+
});
|
|
72
|
+
return multicallTx;
|
|
73
|
+
}
|
|
74
|
+
const priceUpdates = updateTxs.txs.map((tx) => getUpdateCalldata(tx));
|
|
75
|
+
if (priceUpdates.length === 0) {
|
|
76
|
+
return void 0;
|
|
77
|
+
}
|
|
78
|
+
return pfStore.updatePrices(priceUpdates);
|
|
79
|
+
}
|
|
80
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
81
|
+
0 && (module.exports = {
|
|
82
|
+
getPriceUpdateTx,
|
|
83
|
+
getUpdateCalldata
|
|
84
|
+
});
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var get_prices_exports = {};
|
|
20
|
+
__export(get_prices_exports, {
|
|
21
|
+
getPrices: () => getPrices
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(get_prices_exports);
|
|
24
|
+
var import_viem = require("viem");
|
|
25
|
+
var import_sdk = require("../../../sdk/index.js");
|
|
26
|
+
var import_viem2 = require("../../../sdk/utils/viem/index.js");
|
|
27
|
+
const latestRoundDataAbi = [
|
|
28
|
+
{
|
|
29
|
+
inputs: [],
|
|
30
|
+
name: "latestRoundData",
|
|
31
|
+
outputs: [
|
|
32
|
+
{ name: "roundId", type: "uint80" },
|
|
33
|
+
{ name: "answer", type: "int256" },
|
|
34
|
+
{ name: "startedAt", type: "uint256" },
|
|
35
|
+
{ name: "updatedAt", type: "uint256" },
|
|
36
|
+
{ name: "answeredInRound", type: "uint80" }
|
|
37
|
+
],
|
|
38
|
+
stateMutability: "view",
|
|
39
|
+
type: "function"
|
|
40
|
+
}
|
|
41
|
+
];
|
|
42
|
+
function getLatestRoundDataCall(priceFeed) {
|
|
43
|
+
return {
|
|
44
|
+
address: priceFeed,
|
|
45
|
+
abi: latestRoundDataAbi,
|
|
46
|
+
functionName: "latestRoundData",
|
|
47
|
+
args: []
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
async function getPricesChunk({
|
|
51
|
+
client,
|
|
52
|
+
priceFeeds,
|
|
53
|
+
sdk
|
|
54
|
+
}) {
|
|
55
|
+
const updateCall = priceFeeds.map(
|
|
56
|
+
(priceFeed) => getLatestRoundDataCall(priceFeed)
|
|
57
|
+
);
|
|
58
|
+
const updateTxs = await sdk.priceFeeds.generateExternalPriceFeedsUpdateTxs(priceFeeds);
|
|
59
|
+
const multicallCalls = updateTxs.txs.map((tx) => ({
|
|
60
|
+
target: tx.raw.to,
|
|
61
|
+
allowFailure: true,
|
|
62
|
+
callData: tx.raw.callData
|
|
63
|
+
}));
|
|
64
|
+
const multicall3Address = client.chain?.contracts?.multicall3?.address;
|
|
65
|
+
if (!multicall3Address) {
|
|
66
|
+
throw new Error("Multicall3 address not found");
|
|
67
|
+
}
|
|
68
|
+
const multicallResult = await (0, import_viem2.simulateMulticall)(client, {
|
|
69
|
+
contracts: [
|
|
70
|
+
{
|
|
71
|
+
address: multicall3Address,
|
|
72
|
+
// @ts-expect-error
|
|
73
|
+
abi: import_viem.multicall3Abi,
|
|
74
|
+
// @ts-expect-error
|
|
75
|
+
functionName: "aggregate3",
|
|
76
|
+
args: [multicallCalls]
|
|
77
|
+
},
|
|
78
|
+
...updateCall
|
|
79
|
+
],
|
|
80
|
+
allowFailure: true
|
|
81
|
+
});
|
|
82
|
+
const prices = multicallResult.results.slice(1).map((result) => {
|
|
83
|
+
if (result.status === "failure") {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
return result.result[1];
|
|
87
|
+
});
|
|
88
|
+
const priceEntries = priceFeeds.map(
|
|
89
|
+
(priceFeed, index) => [
|
|
90
|
+
priceFeed,
|
|
91
|
+
prices[index] ?? null
|
|
92
|
+
]
|
|
93
|
+
);
|
|
94
|
+
return Object.fromEntries(priceEntries);
|
|
95
|
+
}
|
|
96
|
+
async function getPrices({
|
|
97
|
+
client,
|
|
98
|
+
priceFeeds,
|
|
99
|
+
chunkSize = 10
|
|
100
|
+
}) {
|
|
101
|
+
const sdk = await import_sdk.GearboxSDK.attach({
|
|
102
|
+
rpcURLs: [client.transport.url],
|
|
103
|
+
marketConfigurators: [],
|
|
104
|
+
redstone: {
|
|
105
|
+
ignoreMissingFeeds: true
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
const chunks = [];
|
|
109
|
+
for (let i = 0; i < priceFeeds.length; i += chunkSize) {
|
|
110
|
+
chunks.push(priceFeeds.slice(i, i + chunkSize));
|
|
111
|
+
}
|
|
112
|
+
const results = await Promise.all(
|
|
113
|
+
chunks.map((chunk) => getPricesChunk({ client, priceFeeds: chunk, sdk }))
|
|
114
|
+
);
|
|
115
|
+
return results.reduce(
|
|
116
|
+
(acc, result) => ({ ...acc, ...result }),
|
|
117
|
+
{}
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
121
|
+
0 && (module.exports = {
|
|
122
|
+
getPrices
|
|
123
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var get_updatable_feeds_exports = {};
|
|
20
|
+
__export(get_updatable_feeds_exports, {
|
|
21
|
+
getUpdatablePriceFeeds: () => getUpdatablePriceFeeds
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(get_updatable_feeds_exports);
|
|
24
|
+
var import_viem = require("viem");
|
|
25
|
+
var import_priceFeedCompressor = require("../../../abi/compressors/priceFeedCompressor.js");
|
|
26
|
+
var import_sdk = require("../../../sdk/index.js");
|
|
27
|
+
var import_utils = require("../../../sdk/utils/index.js");
|
|
28
|
+
async function getUpdatablePriceFeeds(args) {
|
|
29
|
+
const { sdk, client, pfCompressor, priceFeeds } = args;
|
|
30
|
+
const priceFeedCompressor = (0, import_viem.getContract)({
|
|
31
|
+
address: pfCompressor,
|
|
32
|
+
abi: import_priceFeedCompressor.priceFeedCompressorAbi,
|
|
33
|
+
client
|
|
34
|
+
});
|
|
35
|
+
const updatablePriceFeeds = (await priceFeedCompressor.read.loadPriceFeedTree([
|
|
36
|
+
priceFeeds
|
|
37
|
+
])).filter(
|
|
38
|
+
(data) => ["PRICE_FEED::PYTH", "PRICE_FEED::REDSTONE"].includes(
|
|
39
|
+
(0, import_utils.bytes32ToString)(data.baseParams.contractType)
|
|
40
|
+
)
|
|
41
|
+
).map((data) => {
|
|
42
|
+
if ((0, import_utils.bytes32ToString)(data.baseParams.contractType) === "PRICE_FEED::PYTH") {
|
|
43
|
+
return new import_sdk.PythPriceFeed(sdk, data);
|
|
44
|
+
}
|
|
45
|
+
return new import_sdk.RedstonePriceFeedContract(sdk, data);
|
|
46
|
+
});
|
|
47
|
+
return updatablePriceFeeds;
|
|
48
|
+
}
|
|
49
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
50
|
+
0 && (module.exports = {
|
|
51
|
+
getUpdatablePriceFeeds
|
|
52
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var price_update_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(price_update_exports);
|
|
18
|
+
__reExport(price_update_exports, require("./get-price-feeds"), module.exports);
|
|
19
|
+
__reExport(price_update_exports, require("./get-price-update-tx"), module.exports);
|
|
20
|
+
__reExport(price_update_exports, require("./get-prices"), module.exports);
|
|
21
|
+
__reExport(price_update_exports, require("./get-updatable-feeds"), module.exports);
|
|
22
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
23
|
+
0 && (module.exports = {
|
|
24
|
+
...require("./get-price-feeds"),
|
|
25
|
+
...require("./get-price-update-tx"),
|
|
26
|
+
...require("./get-prices"),
|
|
27
|
+
...require("./get-updatable-feeds")
|
|
28
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var signature_exports = {};
|
|
20
|
+
__export(signature_exports, {
|
|
21
|
+
normalizeSignature: () => normalizeSignature
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(signature_exports);
|
|
24
|
+
function normalizeSignature(signature) {
|
|
25
|
+
const sig = signature.startsWith("0x") ? signature.slice(2) : signature;
|
|
26
|
+
let v = parseInt(sig.slice(128, 130), 16);
|
|
27
|
+
if (v === 0 || v === 1) {
|
|
28
|
+
v += 27;
|
|
29
|
+
}
|
|
30
|
+
return `0x${sig.slice(0, 128)}${v.toString(16)}`;
|
|
31
|
+
}
|
|
32
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
33
|
+
0 && (module.exports = {
|
|
34
|
+
normalizeSignature
|
|
35
|
+
});
|
|
@@ -458,7 +458,11 @@ class GearboxSDK {
|
|
|
458
458
|
this.#currentBlock = blockNumber;
|
|
459
459
|
this.#timestamp = timestamp;
|
|
460
460
|
await this.marketRegister.syncState(ignoreUpdateablePrices);
|
|
461
|
-
await this.#hooks.triggerHooks("syncState", {
|
|
461
|
+
await this.#hooks.triggerHooks("syncState", {
|
|
462
|
+
blockNumber,
|
|
463
|
+
timestamp,
|
|
464
|
+
ignoreUpdateablePrices
|
|
465
|
+
});
|
|
462
466
|
const pluginsList = import_utils.TypedObjectUtils.entries(this.plugins);
|
|
463
467
|
const pluginResponse = await Promise.allSettled(
|
|
464
468
|
pluginsList.map(([name, plugin]) => {
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { stringToHex } from "viem";
|
|
2
|
+
import { iAddressProviderV310Abi } from "../../abi/310/generated.js";
|
|
3
|
+
import { BaseContract } from "./base-contract";
|
|
4
|
+
const abi = iAddressProviderV310Abi;
|
|
5
|
+
class AddressProviderContract extends BaseContract {
|
|
6
|
+
constructor(address, client) {
|
|
7
|
+
super(abi, address, client, "AddressProvider");
|
|
8
|
+
}
|
|
9
|
+
async getAddressOrRevert(key, version = 0n) {
|
|
10
|
+
return await this.contract.read.getAddressOrRevert([
|
|
11
|
+
stringToHex(key, { size: 32 }),
|
|
12
|
+
version
|
|
13
|
+
]);
|
|
14
|
+
}
|
|
15
|
+
async getLatestVersionAddress(key) {
|
|
16
|
+
const version = await this.getLatestVersion(key);
|
|
17
|
+
return await this.getAddressOrRevert(key, version);
|
|
18
|
+
}
|
|
19
|
+
async getLatestVersion(key) {
|
|
20
|
+
return await this.contract.read.getLatestVersion([
|
|
21
|
+
stringToHex(key, { size: 32 })
|
|
22
|
+
]);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
AddressProviderContract
|
|
27
|
+
};
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getContract
|
|
3
|
+
} from "viem";
|
|
4
|
+
import { createRawTx } from "../../sdk/utils/index.js";
|
|
5
|
+
import { decodeFunctionWithNamedArgs } from "../utils/abi-decoder";
|
|
6
|
+
class BaseContract {
|
|
7
|
+
abi;
|
|
8
|
+
address;
|
|
9
|
+
name;
|
|
10
|
+
static register = {};
|
|
11
|
+
contract;
|
|
12
|
+
client;
|
|
13
|
+
constructor(abi, address, client, name) {
|
|
14
|
+
this.abi = abi;
|
|
15
|
+
this.client = client;
|
|
16
|
+
this.address = address.toLowerCase();
|
|
17
|
+
this.name = name;
|
|
18
|
+
this.contract = getContract({
|
|
19
|
+
address,
|
|
20
|
+
abi,
|
|
21
|
+
client
|
|
22
|
+
});
|
|
23
|
+
BaseContract.register[this.address] = this;
|
|
24
|
+
}
|
|
25
|
+
static parseCall(call) {
|
|
26
|
+
const parsedCall = BaseContract.parse(call.target, call.callData);
|
|
27
|
+
return {
|
|
28
|
+
...parsedCall,
|
|
29
|
+
chainId: call.chainId
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
static parse(address, calldata) {
|
|
33
|
+
const contract = BaseContract.register[address.toLowerCase()];
|
|
34
|
+
if (contract) {
|
|
35
|
+
return contract.parseFunctionData(calldata);
|
|
36
|
+
} else {
|
|
37
|
+
return {
|
|
38
|
+
chainId: 0,
|
|
39
|
+
target: address,
|
|
40
|
+
label: "Unknown contract",
|
|
41
|
+
functionName: `Unknown function: ${calldata}`,
|
|
42
|
+
args: {}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
parseFunctionData(calldata) {
|
|
47
|
+
const decodedWithNames = decodeFunctionWithNamedArgs(this.abi, calldata);
|
|
48
|
+
if (!decodedWithNames) {
|
|
49
|
+
return {
|
|
50
|
+
chainId: 0,
|
|
51
|
+
target: this.address,
|
|
52
|
+
label: this.name,
|
|
53
|
+
functionName: `Unknown function: ${calldata}`,
|
|
54
|
+
args: {}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const specParsed = this.parseFunctionParams(
|
|
58
|
+
decodedWithNames.originalDecoded
|
|
59
|
+
);
|
|
60
|
+
if (specParsed) {
|
|
61
|
+
return specParsed;
|
|
62
|
+
}
|
|
63
|
+
return this.wrapParseCall(
|
|
64
|
+
decodedWithNames.originalDecoded,
|
|
65
|
+
decodedWithNames.args
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
wrapParseCall(params, parsedParams) {
|
|
69
|
+
return {
|
|
70
|
+
chainId: 0,
|
|
71
|
+
target: this.address,
|
|
72
|
+
label: this.name,
|
|
73
|
+
functionName: params.functionName,
|
|
74
|
+
args: parsedParams
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
parseFunctionParams(params) {
|
|
78
|
+
return void 0;
|
|
79
|
+
}
|
|
80
|
+
createRawTx(parameters) {
|
|
81
|
+
const { description: argsDescription } = parameters;
|
|
82
|
+
const tx = createRawTx(
|
|
83
|
+
this.address,
|
|
84
|
+
{
|
|
85
|
+
abi: this.abi,
|
|
86
|
+
...parameters
|
|
87
|
+
},
|
|
88
|
+
argsDescription
|
|
89
|
+
);
|
|
90
|
+
tx.description = parameters.description || argsDescription || this.stringifyParsedCall(this.parseFunctionData(tx.callData));
|
|
91
|
+
return tx;
|
|
92
|
+
}
|
|
93
|
+
stringifyParsedCall(parsedCall) {
|
|
94
|
+
const argsStr = Object.entries(parsedCall.args).map(([key, value]) => `${key}: ${value}`).join(", ");
|
|
95
|
+
return `${parsedCall.label}.${parsedCall.functionName}(${argsStr})`;
|
|
96
|
+
}
|
|
97
|
+
async getEvents(eventName, fromBlock, toBlock, args, chunkSize) {
|
|
98
|
+
if (chunkSize) {
|
|
99
|
+
const chunkSizeBigint = BigInt(chunkSize);
|
|
100
|
+
const getEventPromises = [];
|
|
101
|
+
for (let i = fromBlock; i < toBlock; i += chunkSizeBigint) {
|
|
102
|
+
getEventPromises.push(
|
|
103
|
+
this.client.getContractEvents({
|
|
104
|
+
address: this.address,
|
|
105
|
+
fromBlock: i,
|
|
106
|
+
toBlock: i + chunkSizeBigint,
|
|
107
|
+
abi: this.abi,
|
|
108
|
+
eventName,
|
|
109
|
+
args
|
|
110
|
+
})
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
const events = (await Promise.all(getEventPromises)).flat();
|
|
114
|
+
return events;
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
const events = await this.client.getContractEvents({
|
|
118
|
+
address: this.address,
|
|
119
|
+
fromBlock,
|
|
120
|
+
toBlock,
|
|
121
|
+
abi: this.abi,
|
|
122
|
+
eventName,
|
|
123
|
+
args
|
|
124
|
+
});
|
|
125
|
+
return events;
|
|
126
|
+
} catch (e) {
|
|
127
|
+
const blockRangeErrors = [
|
|
128
|
+
"query exceeds max block",
|
|
129
|
+
"range is too large",
|
|
130
|
+
"eth_getLogs is limited to",
|
|
131
|
+
"Unable to perform request",
|
|
132
|
+
"Block range limit exceeded"
|
|
133
|
+
];
|
|
134
|
+
if (e instanceof Error && blockRangeErrors.some((errorText) => e.message.includes(errorText))) {
|
|
135
|
+
const middle = (fromBlock + toBlock) / 2n;
|
|
136
|
+
const [firstHalfEvents, secondHalfEvents] = await Promise.all([
|
|
137
|
+
this.getEvents(eventName, fromBlock, middle, args),
|
|
138
|
+
this.getEvents(eventName, middle + 1n, toBlock, args)
|
|
139
|
+
]);
|
|
140
|
+
return [...firstHalfEvents, ...secondHalfEvents];
|
|
141
|
+
}
|
|
142
|
+
throw e;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
getContract() {
|
|
146
|
+
return this.contract;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
export {
|
|
150
|
+
BaseContract
|
|
151
|
+
};
|