@gearbox-protocol/sdk 3.0.0-vfour.285 → 3.0.0-vfour.286
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/adapters/{plugin.js → GearboxAdaptersPlugin.js} +34 -31
- package/dist/cjs/adapters/index.js +2 -2
- package/dist/cjs/dev/index.js +2 -2
- package/dist/cjs/dev/migrateFaucet.js +94 -0
- package/dist/cjs/sdk/GearboxSDK.js +32 -12
- package/dist/cjs/sdk/market/MarketRegister.js +1 -51
- package/dist/cjs/sdk/market/adapters/factory.js +4 -4
- package/dist/cjs/zappers/GearboxZappersPlugin.js +94 -0
- package/dist/cjs/zappers/index.js +24 -0
- package/dist/cjs/zappers/package.json +1 -0
- package/dist/cjs/zappers/types.js +16 -0
- package/dist/esm/adapters/{plugin.js → GearboxAdaptersPlugin.js} +32 -29
- package/dist/esm/adapters/index.js +1 -1
- package/dist/esm/dev/index.js +1 -1
- package/dist/esm/dev/migrateFaucet.js +70 -0
- package/dist/esm/sdk/GearboxSDK.js +32 -12
- package/dist/esm/sdk/market/MarketRegister.js +3 -60
- package/dist/esm/sdk/market/adapters/factory.js +4 -4
- package/dist/esm/zappers/GearboxZappersPlugin.js +73 -0
- package/dist/esm/zappers/index.js +2 -0
- package/dist/esm/zappers/package.json +1 -0
- package/dist/esm/zappers/types.js +0 -0
- package/dist/types/adapters/GearboxAdaptersPlugin.d.ts +7 -0
- package/dist/types/adapters/index.d.ts +1 -1
- package/dist/types/dev/index.d.ts +1 -1
- package/dist/types/dev/migrateFaucet.d.ts +6 -0
- package/dist/types/sdk/GearboxSDK.d.ts +7 -7
- package/dist/types/sdk/base/types.d.ts +0 -1
- package/dist/types/sdk/market/MarketRegister.d.ts +2 -8
- package/dist/types/sdk/market/adapters/factory.d.ts +2 -1
- package/dist/types/sdk/plugins/index.d.ts +20 -2
- package/dist/types/sdk/sdk-legacy/payload/pool.d.ts +7 -1
- package/dist/types/sdk/types/state-human.d.ts +1 -5
- package/dist/types/zappers/GearboxZappersPlugin.d.ts +10 -0
- package/dist/types/zappers/index.d.ts +2 -0
- package/dist/types/zappers/types.d.ts +12 -0
- package/package.json +1 -1
- package/dist/cjs/dev/SDKExample.js +0 -177
- package/dist/esm/dev/SDKExample.js +0 -153
- package/dist/types/adapters/plugin.d.ts +0 -2
- package/dist/types/dev/SDKExample.d.ts +0 -17
|
@@ -16,11 +16,11 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var GearboxAdaptersPlugin_exports = {};
|
|
20
|
+
__export(GearboxAdaptersPlugin_exports, {
|
|
21
21
|
GearboxAdaptersPlugin: () => GearboxAdaptersPlugin
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
23
|
+
module.exports = __toCommonJS(GearboxAdaptersPlugin_exports);
|
|
24
24
|
var import_sdk = require("../sdk/index.js");
|
|
25
25
|
var import_BalancerV2VaultAdapterContract = require("./BalancerV2VaultAdapterContract.js");
|
|
26
26
|
var import_BalancerV3RouterAdapterContract = require("./BalancerV3RouterAdapterContract.js");
|
|
@@ -43,71 +43,74 @@ var import_UniswapV3AdapterContract = require("./UniswapV3AdapterContract.js");
|
|
|
43
43
|
var import_VelodromeV2AdapterContract = require("./VelodromeV2AdapterContract.js");
|
|
44
44
|
var import_WstETHV1AdapterContract = require("./WstETHV1AdapterContract.js");
|
|
45
45
|
var import_YearnV2AdapterContract = require("./YearnV2AdapterContract.js");
|
|
46
|
-
|
|
47
|
-
name
|
|
48
|
-
createContract(
|
|
46
|
+
class GearboxAdaptersPlugin extends import_sdk.SDKConstruct {
|
|
47
|
+
name = "Adapters";
|
|
48
|
+
createContract(data) {
|
|
49
49
|
const args = data;
|
|
50
50
|
const adapterType = (0, import_sdk.bytes32ToString)(
|
|
51
51
|
args.baseParams.contractType
|
|
52
52
|
);
|
|
53
53
|
switch (adapterType) {
|
|
54
54
|
case "ADAPTER::UNISWAP_V2_ROUTER":
|
|
55
|
-
return new import_UniswapV2AdapterContract.UniswapV2AdapterContract(sdk, args);
|
|
55
|
+
return new import_UniswapV2AdapterContract.UniswapV2AdapterContract(this.sdk, args);
|
|
56
56
|
case "ADAPTER::UNISWAP_V3_ROUTER":
|
|
57
|
-
return new import_UniswapV3AdapterContract.UniswapV3AdapterContract(sdk, args);
|
|
57
|
+
return new import_UniswapV3AdapterContract.UniswapV3AdapterContract(this.sdk, args);
|
|
58
58
|
case "ADAPTER::CURVE_V1_2ASSETS":
|
|
59
|
-
return new import_Curve2AssetsAdapterContract.Curve2AssetsAdapterContract(sdk, args);
|
|
59
|
+
return new import_Curve2AssetsAdapterContract.Curve2AssetsAdapterContract(this.sdk, args);
|
|
60
60
|
case "ADAPTER::CURVE_V1_3ASSETS":
|
|
61
|
-
return new import_Curve3AssetsAdapterContract.Curve3AssetsAdapterContract(sdk, args);
|
|
61
|
+
return new import_Curve3AssetsAdapterContract.Curve3AssetsAdapterContract(this.sdk, args);
|
|
62
62
|
case "ADAPTER::CURVE_V1_4ASSETS":
|
|
63
|
-
return new import_Curve4AssetsAdapterContract.Curve4AssetsAdapterContract(sdk, args);
|
|
63
|
+
return new import_Curve4AssetsAdapterContract.Curve4AssetsAdapterContract(this.sdk, args);
|
|
64
64
|
case "ADAPTER::CURVE_V1_STECRV_POOL":
|
|
65
|
-
return new import_CurveV1AdapterStETHContract.CurveV1AdapterStETHContract(sdk, args);
|
|
65
|
+
return new import_CurveV1AdapterStETHContract.CurveV1AdapterStETHContract(this.sdk, args);
|
|
66
66
|
case "ADAPTER::CURVE_V1_WRAPPER":
|
|
67
|
-
return new import_CurveV1StableNGAdapterContract.CurveV1StableNGAdapterContract(sdk, args);
|
|
67
|
+
return new import_CurveV1StableNGAdapterContract.CurveV1StableNGAdapterContract(this.sdk, args);
|
|
68
68
|
case "ADAPTER::CVX_V1_BASE_REWARD_POOL":
|
|
69
|
-
return new import_ConvexV1BaseRewardPoolAdapterContract.ConvexV1BaseRewardPoolAdapterContract(sdk, args);
|
|
69
|
+
return new import_ConvexV1BaseRewardPoolAdapterContract.ConvexV1BaseRewardPoolAdapterContract(this.sdk, args);
|
|
70
70
|
case "ADAPTER::CVX_V1_BOOSTER":
|
|
71
|
-
return new import_ConvexV1BoosterAdapterContract.ConvexV1BoosterAdapterContract(sdk, args);
|
|
71
|
+
return new import_ConvexV1BoosterAdapterContract.ConvexV1BoosterAdapterContract(this.sdk, args);
|
|
72
72
|
case "ADAPTER::CURVE_STABLE_NG":
|
|
73
|
-
return new import_CurveV1StableNGAdapterContract.CurveV1StableNGAdapterContract(sdk, args);
|
|
73
|
+
return new import_CurveV1StableNGAdapterContract.CurveV1StableNGAdapterContract(this.sdk, args);
|
|
74
74
|
case "ADAPTER::LIDO_WSTETH_V1":
|
|
75
|
-
return new import_WstETHV1AdapterContract.WstETHV1AdapterContract(sdk, args);
|
|
75
|
+
return new import_WstETHV1AdapterContract.WstETHV1AdapterContract(this.sdk, args);
|
|
76
76
|
case "ADAPTER::BALANCER_VAULT":
|
|
77
|
-
return new import_BalancerV2VaultAdapterContract.BalancerV2VaultAdapterContract(sdk, args);
|
|
77
|
+
return new import_BalancerV2VaultAdapterContract.BalancerV2VaultAdapterContract(this.sdk, args);
|
|
78
78
|
case "ADAPTER::BALANCER_V3_ROUTER":
|
|
79
|
-
return new import_BalancerV3RouterAdapterContract.BalancerV3RouterAdapterContract(sdk, args);
|
|
79
|
+
return new import_BalancerV3RouterAdapterContract.BalancerV3RouterAdapterContract(this.sdk, args);
|
|
80
80
|
case "ADAPTER::ERC4626_VAULT":
|
|
81
|
-
return new import_ERC4626AdapterContract.ERC4626AdapterContract(sdk, args);
|
|
81
|
+
return new import_ERC4626AdapterContract.ERC4626AdapterContract(this.sdk, args);
|
|
82
82
|
case "ADAPTER::VELODROME_V2_ROUTER":
|
|
83
|
-
return new import_VelodromeV2AdapterContract.VelodromeV2RouterAdapterContract(sdk, args);
|
|
83
|
+
return new import_VelodromeV2AdapterContract.VelodromeV2RouterAdapterContract(this.sdk, args);
|
|
84
84
|
case "ADAPTER::CAMELOT_V3_ROUTER":
|
|
85
|
-
return new import_CamelotV3AdapterContract.CamelotV3AdapterContract(sdk, args);
|
|
85
|
+
return new import_CamelotV3AdapterContract.CamelotV3AdapterContract(this.sdk, args);
|
|
86
86
|
case "ADAPTER::YEARN_V2":
|
|
87
|
-
return new import_YearnV2AdapterContract.YearnV2RouterAdapterContract(sdk, args);
|
|
87
|
+
return new import_YearnV2AdapterContract.YearnV2RouterAdapterContract(this.sdk, args);
|
|
88
88
|
case "ADAPTER::MELLOW_LRT_VAULT":
|
|
89
|
-
return new import_MellowVaultAdapterContract.MellowVaultAdapterContract(sdk, args);
|
|
89
|
+
return new import_MellowVaultAdapterContract.MellowVaultAdapterContract(this.sdk, args);
|
|
90
90
|
case "ADAPTER::MELLOW_ERC4626_VAULT":
|
|
91
|
-
return new import_MellowERC4626VaultAdapterContract.MellowERC4626VaultAdapterContract(sdk, args);
|
|
91
|
+
return new import_MellowERC4626VaultAdapterContract.MellowERC4626VaultAdapterContract(this.sdk, args);
|
|
92
92
|
case "ADAPTER::PENDLE_ROUTER":
|
|
93
|
-
return new import_PendleRouterAdapterContract.PendleRouterAdapterContract(sdk, args);
|
|
93
|
+
return new import_PendleRouterAdapterContract.PendleRouterAdapterContract(this.sdk, args);
|
|
94
94
|
case "ADAPTER::DAI_USDS_EXCHANGE":
|
|
95
|
-
return new import_DaiUsdsAdapterContract.DaiUsdsAdapterContract(sdk, args);
|
|
95
|
+
return new import_DaiUsdsAdapterContract.DaiUsdsAdapterContract(this.sdk, args);
|
|
96
96
|
case "ADAPTER::STAKING_REWARDS":
|
|
97
|
-
return new import_StakingRewardsAdapterContract.StakingRewardsAdapterContract(sdk, args);
|
|
97
|
+
return new import_StakingRewardsAdapterContract.StakingRewardsAdapterContract(this.sdk, args);
|
|
98
98
|
default: {
|
|
99
99
|
const err = new Error(
|
|
100
100
|
`Adapter type ${adapterType} not supported for adapter at ${args.baseParams.addr}`
|
|
101
101
|
);
|
|
102
|
-
if (sdk.strictContractTypes) {
|
|
102
|
+
if (this.sdk.strictContractTypes) {
|
|
103
103
|
throw err;
|
|
104
104
|
}
|
|
105
|
-
sdk.logger?.error(err);
|
|
105
|
+
this.sdk.logger?.error(err);
|
|
106
106
|
return void 0;
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
|
-
|
|
110
|
+
stateHuman(raw) {
|
|
111
|
+
return {};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
111
114
|
// Annotate the CommonJS export names for ESM import in node:
|
|
112
115
|
0 && (module.exports = {
|
|
113
116
|
GearboxAdaptersPlugin
|
|
@@ -15,10 +15,10 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
|
|
|
15
15
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
16
|
var adapters_exports = {};
|
|
17
17
|
module.exports = __toCommonJS(adapters_exports);
|
|
18
|
-
__reExport(adapters_exports, require("./
|
|
18
|
+
__reExport(adapters_exports, require("./GearboxAdaptersPlugin.js"), module.exports);
|
|
19
19
|
__reExport(adapters_exports, require("./types.js"), module.exports);
|
|
20
20
|
// Annotate the CommonJS export names for ESM import in node:
|
|
21
21
|
0 && (module.exports = {
|
|
22
|
-
...require("./
|
|
22
|
+
...require("./GearboxAdaptersPlugin.js"),
|
|
23
23
|
...require("./types.js")
|
|
24
24
|
});
|
package/dist/cjs/dev/index.js
CHANGED
|
@@ -18,8 +18,8 @@ module.exports = __toCommonJS(dev_exports);
|
|
|
18
18
|
__reExport(dev_exports, require("./AccountOpener.js"), module.exports);
|
|
19
19
|
__reExport(dev_exports, require("./calcLiquidatableLTs.js"), module.exports);
|
|
20
20
|
__reExport(dev_exports, require("./createAnvilClient.js"), module.exports);
|
|
21
|
+
__reExport(dev_exports, require("./migrateFaucet.js"), module.exports);
|
|
21
22
|
__reExport(dev_exports, require("./PriceFeedStore.js"), module.exports);
|
|
22
|
-
__reExport(dev_exports, require("./SDKExample.js"), module.exports);
|
|
23
23
|
__reExport(dev_exports, require("./setLTs.js"), module.exports);
|
|
24
24
|
__reExport(dev_exports, require("./setLTZero.js"), module.exports);
|
|
25
25
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -27,8 +27,8 @@ __reExport(dev_exports, require("./setLTZero.js"), module.exports);
|
|
|
27
27
|
...require("./AccountOpener.js"),
|
|
28
28
|
...require("./calcLiquidatableLTs.js"),
|
|
29
29
|
...require("./createAnvilClient.js"),
|
|
30
|
+
...require("./migrateFaucet.js"),
|
|
30
31
|
...require("./PriceFeedStore.js"),
|
|
31
|
-
...require("./SDKExample.js"),
|
|
32
32
|
...require("./setLTs.js"),
|
|
33
33
|
...require("./setLTZero.js")
|
|
34
34
|
});
|
|
@@ -0,0 +1,94 @@
|
|
|
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 migrateFaucet_exports = {};
|
|
20
|
+
__export(migrateFaucet_exports, {
|
|
21
|
+
migrateFaucet: () => migrateFaucet
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(migrateFaucet_exports);
|
|
24
|
+
var import_viem = require("viem");
|
|
25
|
+
var import_v300 = require("../abi/v300.js");
|
|
26
|
+
var import_v310 = require("../abi/v310.js");
|
|
27
|
+
var import_sdk = require("../sdk/index.js");
|
|
28
|
+
var import_createAnvilClient = require("./createAnvilClient.js");
|
|
29
|
+
async function unsafeMigrateFaucet(sdk) {
|
|
30
|
+
const anvil = (0, import_createAnvilClient.createAnvilClient)({
|
|
31
|
+
chain: sdk.provider.chain,
|
|
32
|
+
transport: sdk.provider.transport
|
|
33
|
+
});
|
|
34
|
+
const [faucetAddr, owner] = await anvil.multicall({
|
|
35
|
+
contracts: [
|
|
36
|
+
{
|
|
37
|
+
abi: import_v300.iAddressProviderV300Abi,
|
|
38
|
+
address: import_sdk.ADDRESS_PROVIDER[sdk.provider.networkType],
|
|
39
|
+
functionName: "getAddressOrRevert",
|
|
40
|
+
args: [(0, import_viem.stringToHex)("FAUCET", { size: 32 }), 0n]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
abi: import_v310.iAddressProviderV310Abi,
|
|
44
|
+
address: sdk.addressProvider.address,
|
|
45
|
+
functionName: "owner",
|
|
46
|
+
args: []
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
allowFailure: false
|
|
50
|
+
});
|
|
51
|
+
sdk.logger?.debug(`faucet address: ${faucetAddr}, owner: ${owner}`);
|
|
52
|
+
await anvil.impersonateAccount({ address: owner });
|
|
53
|
+
await anvil.setBalance({
|
|
54
|
+
address: owner,
|
|
55
|
+
value: (0, import_viem.parseEther)("1000")
|
|
56
|
+
});
|
|
57
|
+
const balance = await anvil.getBalance({ address: owner });
|
|
58
|
+
sdk.logger?.debug(`owner balance: ${(0, import_viem.formatEther)(balance)} ETH`);
|
|
59
|
+
const { request } = await anvil.simulateContract({
|
|
60
|
+
chain: anvil.chain,
|
|
61
|
+
account: owner,
|
|
62
|
+
address: sdk.addressProvider.address,
|
|
63
|
+
abi: import_v310.iAddressProviderV310Abi,
|
|
64
|
+
functionName: "setAddress",
|
|
65
|
+
args: [(0, import_viem.stringToHex)("FAUCET", { size: 32 }), faucetAddr, false]
|
|
66
|
+
});
|
|
67
|
+
sdk.logger?.debug("estimated setAddress call");
|
|
68
|
+
const hash = await anvil.writeContract({
|
|
69
|
+
chain: anvil.chain,
|
|
70
|
+
account: owner,
|
|
71
|
+
address: sdk.addressProvider.address,
|
|
72
|
+
abi: import_v310.iAddressProviderV310Abi,
|
|
73
|
+
functionName: "setAddress",
|
|
74
|
+
args: [(0, import_viem.stringToHex)("FAUCET", { size: 32 }), faucetAddr, false],
|
|
75
|
+
gas: request.gas ? request.gas * 11n / 10n : void 0
|
|
76
|
+
});
|
|
77
|
+
const receipt = await anvil.waitForTransactionReceipt({ hash });
|
|
78
|
+
await anvil.stopImpersonatingAccount({ address: owner });
|
|
79
|
+
if (receipt.status === "reverted") {
|
|
80
|
+
throw new Error("faucet migration reverted");
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async function migrateFaucet(sdk) {
|
|
84
|
+
try {
|
|
85
|
+
await unsafeMigrateFaucet(sdk);
|
|
86
|
+
sdk.logger?.info("faucet migrated successfully");
|
|
87
|
+
} catch (e) {
|
|
88
|
+
sdk.logger?.error(`faucet migration failed: ${e}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
92
|
+
0 && (module.exports = {
|
|
93
|
+
migrateFaucet
|
|
94
|
+
});
|
|
@@ -32,10 +32,12 @@ var import_router = require("./router/index.js");
|
|
|
32
32
|
var import_utils = require("./utils/index.js");
|
|
33
33
|
var import_internal = require("./utils/internal/index.js");
|
|
34
34
|
var import_viem2 = require("./utils/viem/index.js");
|
|
35
|
+
const ERR_NOT_ATTACHED = new Error("Gearbox SDK not attached");
|
|
35
36
|
class GearboxSDK {
|
|
36
37
|
#hooks = new import_internal.Hooks();
|
|
37
38
|
// Represents chain object
|
|
38
39
|
#provider;
|
|
40
|
+
plugins;
|
|
39
41
|
// Block which was use for data query
|
|
40
42
|
#currentBlock;
|
|
41
43
|
#timestamp;
|
|
@@ -50,7 +52,6 @@ class GearboxSDK {
|
|
|
50
52
|
// Router contract
|
|
51
53
|
#router;
|
|
52
54
|
logger;
|
|
53
|
-
plugins;
|
|
54
55
|
/**
|
|
55
56
|
* Interest rate models can be reused across chain (and SDK operates on chain level)
|
|
56
57
|
* TODO: use whatever interface is necessary for InterestRateModels
|
|
@@ -124,8 +125,14 @@ class GearboxSDK {
|
|
|
124
125
|
this.#provider = options.provider;
|
|
125
126
|
this.logger = options.logger;
|
|
126
127
|
this.priceFeeds = new import_pricefeeds.PriceFeedRegister(this);
|
|
127
|
-
this.plugins = options.plugins ?? [];
|
|
128
128
|
this.strictContractTypes = options.strictContractTypes ?? false;
|
|
129
|
+
const pluginsInstances = {};
|
|
130
|
+
for (const [name, PluginConstructor] of Object.entries(
|
|
131
|
+
options.plugins ?? {}
|
|
132
|
+
)) {
|
|
133
|
+
pluginsInstances[name] = new PluginConstructor(this);
|
|
134
|
+
}
|
|
135
|
+
this.plugins = pluginsInstances;
|
|
129
136
|
}
|
|
130
137
|
async #attach(opts) {
|
|
131
138
|
const {
|
|
@@ -187,6 +194,13 @@ class GearboxSDK {
|
|
|
187
194
|
} catch (e) {
|
|
188
195
|
this.logger?.warn("Router not found", e);
|
|
189
196
|
}
|
|
197
|
+
for (const [name, plugin] of Object.entries(this.plugins)) {
|
|
198
|
+
if (plugin.attach) {
|
|
199
|
+
this.logger?.debug(`attaching plugin ${name}`);
|
|
200
|
+
await plugin.attach();
|
|
201
|
+
this.logger?.debug(`attached plugin ${name}`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
190
204
|
this.logger?.info(`attach time: ${Date.now() - time} ms`);
|
|
191
205
|
return this;
|
|
192
206
|
}
|
|
@@ -246,6 +260,12 @@ class GearboxSDK {
|
|
|
246
260
|
gearStakingV3: this.gearStakingContract.stateHuman(raw)
|
|
247
261
|
},
|
|
248
262
|
tokens: this.tokensMeta.values(),
|
|
263
|
+
plugins: Object.fromEntries(
|
|
264
|
+
Object.entries(this.plugins).map(([name, plugin]) => [
|
|
265
|
+
name,
|
|
266
|
+
plugin.stateHuman(raw)
|
|
267
|
+
])
|
|
268
|
+
),
|
|
249
269
|
...this.marketRegister.stateHuman(raw)
|
|
250
270
|
};
|
|
251
271
|
}
|
|
@@ -268,7 +288,7 @@ class GearboxSDK {
|
|
|
268
288
|
*/
|
|
269
289
|
async syncState(opts) {
|
|
270
290
|
let { blockNumber, timestamp } = opts ?? {};
|
|
271
|
-
if (!blockNumber) {
|
|
291
|
+
if (!blockNumber || !timestamp) {
|
|
272
292
|
const block = await this.provider.publicClient.getBlock({
|
|
273
293
|
blockTag: "latest"
|
|
274
294
|
});
|
|
@@ -301,7 +321,7 @@ class GearboxSDK {
|
|
|
301
321
|
await this.marketRegister.syncState();
|
|
302
322
|
this.#currentBlock = blockNumber;
|
|
303
323
|
this.#timestamp = timestamp;
|
|
304
|
-
await this.#hooks.triggerHooks("syncState");
|
|
324
|
+
await this.#hooks.triggerHooks("syncState", { blockNumber, timestamp });
|
|
305
325
|
this.#syncing = false;
|
|
306
326
|
this.logger?.debug(`synced state to block ${blockNumber}`);
|
|
307
327
|
}
|
|
@@ -310,49 +330,49 @@ class GearboxSDK {
|
|
|
310
330
|
}
|
|
311
331
|
get currentBlock() {
|
|
312
332
|
if (this.#currentBlock === void 0) {
|
|
313
|
-
throw
|
|
333
|
+
throw ERR_NOT_ATTACHED;
|
|
314
334
|
}
|
|
315
335
|
return this.#currentBlock;
|
|
316
336
|
}
|
|
317
337
|
get timestamp() {
|
|
318
338
|
if (this.#timestamp === void 0) {
|
|
319
|
-
throw
|
|
339
|
+
throw ERR_NOT_ATTACHED;
|
|
320
340
|
}
|
|
321
341
|
return this.#timestamp;
|
|
322
342
|
}
|
|
323
343
|
get gear() {
|
|
324
344
|
if (this.#gear === void 0) {
|
|
325
|
-
throw
|
|
345
|
+
throw ERR_NOT_ATTACHED;
|
|
326
346
|
}
|
|
327
347
|
return this.#gear;
|
|
328
348
|
}
|
|
329
349
|
get addressProvider() {
|
|
330
350
|
if (this.#addressProvider === void 0) {
|
|
331
|
-
throw
|
|
351
|
+
throw ERR_NOT_ATTACHED;
|
|
332
352
|
}
|
|
333
353
|
return this.#addressProvider;
|
|
334
354
|
}
|
|
335
355
|
get botListContract() {
|
|
336
356
|
if (this.#botListContract === void 0) {
|
|
337
|
-
throw
|
|
357
|
+
throw ERR_NOT_ATTACHED;
|
|
338
358
|
}
|
|
339
359
|
return this.#botListContract;
|
|
340
360
|
}
|
|
341
361
|
get gearStakingContract() {
|
|
342
362
|
if (this.#gearStakingContract === void 0) {
|
|
343
|
-
throw
|
|
363
|
+
throw ERR_NOT_ATTACHED;
|
|
344
364
|
}
|
|
345
365
|
return this.#gearStakingContract;
|
|
346
366
|
}
|
|
347
367
|
get marketRegister() {
|
|
348
368
|
if (this.#marketRegister === void 0) {
|
|
349
|
-
throw
|
|
369
|
+
throw ERR_NOT_ATTACHED;
|
|
350
370
|
}
|
|
351
371
|
return this.#marketRegister;
|
|
352
372
|
}
|
|
353
373
|
get router() {
|
|
354
374
|
if (this.#router === void 0) {
|
|
355
|
-
throw
|
|
375
|
+
throw ERR_NOT_ATTACHED;
|
|
356
376
|
}
|
|
357
377
|
return this.#router;
|
|
358
378
|
}
|
|
@@ -34,7 +34,6 @@ class MarketRegister extends import_base.SDKConstruct {
|
|
|
34
34
|
* Mapping pool.address -> MarketSuite
|
|
35
35
|
*/
|
|
36
36
|
#markets = new import_utils.AddressMap(void 0, "markets");
|
|
37
|
-
#zappers = new import_utils.AddressMap(void 0, "zappers");
|
|
38
37
|
#marketFilter;
|
|
39
38
|
constructor(sdk, markets) {
|
|
40
39
|
super(sdk);
|
|
@@ -55,43 +54,6 @@ class MarketRegister extends import_base.SDKConstruct {
|
|
|
55
54
|
}
|
|
56
55
|
await this.#loadMarkets(marketConfigurators, [], ignoreUpdateablePrices);
|
|
57
56
|
}
|
|
58
|
-
async loadZappers() {
|
|
59
|
-
const pcAddr = this.sdk.addressProvider.getAddress(
|
|
60
|
-
import_constants.AP_PERIPHERY_COMPRESSOR,
|
|
61
|
-
310
|
|
62
|
-
);
|
|
63
|
-
this.#logger?.debug(`loading zappers with periphery compressor ${pcAddr}`);
|
|
64
|
-
const resp = await this.provider.publicClient.multicall({
|
|
65
|
-
contracts: this.markets.map((m) => ({
|
|
66
|
-
abi: import_compressors.iPeripheryCompressorAbi,
|
|
67
|
-
address: pcAddr,
|
|
68
|
-
functionName: "getZappers",
|
|
69
|
-
args: [m.configurator.address, m.pool.pool.address]
|
|
70
|
-
})),
|
|
71
|
-
allowFailure: true
|
|
72
|
-
});
|
|
73
|
-
for (let i = 0; i < resp.length; i++) {
|
|
74
|
-
const { status, result, error } = resp[i];
|
|
75
|
-
const marketConfigurator = this.markets[i].configurator.address;
|
|
76
|
-
const pool = this.markets[i].pool.pool.address;
|
|
77
|
-
if (status === "success") {
|
|
78
|
-
const list = result;
|
|
79
|
-
this.#zappers.upsert(
|
|
80
|
-
pool,
|
|
81
|
-
list.map((z) => ({ ...z, pool }))
|
|
82
|
-
);
|
|
83
|
-
} else {
|
|
84
|
-
this.#logger?.error(
|
|
85
|
-
`failed to load zapper for market configurator ${this.labelAddress(marketConfigurator)} and pool ${this.labelAddress(pool)}: ${error}`
|
|
86
|
-
);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const zappersTokens = this.#zappers.values().flatMap((l) => l.flatMap((z) => [z.tokenIn, z.tokenOut]));
|
|
90
|
-
for (const t of zappersTokens) {
|
|
91
|
-
this.sdk.tokensMeta.upsert(t.addr, t);
|
|
92
|
-
this.sdk.provider.addressLabels.set(t.addr, t.symbol);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
57
|
get marketFilter() {
|
|
96
58
|
return this.#marketFilter;
|
|
97
59
|
}
|
|
@@ -192,16 +154,7 @@ class MarketRegister extends import_base.SDKConstruct {
|
|
|
192
154
|
}
|
|
193
155
|
stateHuman(raw = true) {
|
|
194
156
|
return {
|
|
195
|
-
markets: this.markets.map((market) => market.stateHuman(raw))
|
|
196
|
-
zappers: this.zappers.values().flatMap(
|
|
197
|
-
(l) => l.flatMap((z) => ({
|
|
198
|
-
address: z.baseParams.addr,
|
|
199
|
-
contractType: z.baseParams.contractType,
|
|
200
|
-
version: Number(z.baseParams.version),
|
|
201
|
-
tokenIn: this.labelAddress(z.tokenIn.addr),
|
|
202
|
-
tokenOut: this.labelAddress(z.tokenOut.addr)
|
|
203
|
-
}))
|
|
204
|
-
)
|
|
157
|
+
markets: this.markets.map((market) => market.stateHuman(raw))
|
|
205
158
|
};
|
|
206
159
|
}
|
|
207
160
|
get pools() {
|
|
@@ -261,9 +214,6 @@ class MarketRegister extends import_base.SDKConstruct {
|
|
|
261
214
|
get marketsMap() {
|
|
262
215
|
return this.#markets;
|
|
263
216
|
}
|
|
264
|
-
get zappers() {
|
|
265
|
-
return this.#zappers;
|
|
266
|
-
}
|
|
267
217
|
get markets() {
|
|
268
218
|
return this.#markets.values();
|
|
269
219
|
}
|
|
@@ -25,18 +25,18 @@ var import_utils = require("../../utils/index.js");
|
|
|
25
25
|
var import_PlaceholderAdapterContracts = require("./PlaceholderAdapterContracts.js");
|
|
26
26
|
function createAdapter(sdk, args) {
|
|
27
27
|
const adapterType = (0, import_utils.bytes32ToString)(args.baseParams.contractType);
|
|
28
|
-
for (const plugin of sdk.plugins) {
|
|
28
|
+
for (const [name, plugin] of Object.entries(sdk.plugins)) {
|
|
29
29
|
try {
|
|
30
|
-
const adapter = plugin.createContract(
|
|
30
|
+
const adapter = plugin.createContract?.(args);
|
|
31
31
|
if (adapter) {
|
|
32
32
|
sdk.logger?.info(
|
|
33
|
-
` ${adapterType} v${args.baseParams.version} created using plugin ${
|
|
33
|
+
` ${adapterType} v${args.baseParams.version} created using plugin ${name}`
|
|
34
34
|
);
|
|
35
35
|
return adapter;
|
|
36
36
|
}
|
|
37
37
|
} catch (e) {
|
|
38
38
|
sdk.logger?.warn(
|
|
39
|
-
`plugin ${
|
|
39
|
+
`plugin ${name} error while trying to create ${adapterType} v${args.baseParams.version}: ${e}`
|
|
40
40
|
);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
@@ -0,0 +1,94 @@
|
|
|
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 GearboxZappersPlugin_exports = {};
|
|
20
|
+
__export(GearboxZappersPlugin_exports, {
|
|
21
|
+
GearboxZappersPlugin: () => GearboxZappersPlugin
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(GearboxZappersPlugin_exports);
|
|
24
|
+
var import_compressors = require("../abi/compressors.js");
|
|
25
|
+
var import_sdk = require("../sdk/index.js");
|
|
26
|
+
var import_sdk2 = require("../sdk/index.js");
|
|
27
|
+
class GearboxZappersPlugin extends import_sdk.SDKConstruct {
|
|
28
|
+
#zappers;
|
|
29
|
+
async attach() {
|
|
30
|
+
await this.loadZappers();
|
|
31
|
+
}
|
|
32
|
+
async loadZappers() {
|
|
33
|
+
this.#zappers = new import_sdk2.AddressMap(void 0, "zappers");
|
|
34
|
+
const pcAddr = this.sdk.addressProvider.getAddress(
|
|
35
|
+
import_sdk.AP_PERIPHERY_COMPRESSOR,
|
|
36
|
+
310
|
|
37
|
+
);
|
|
38
|
+
this.sdk.logger?.debug(
|
|
39
|
+
`loading zappers with periphery compressor ${pcAddr}`
|
|
40
|
+
);
|
|
41
|
+
const markets = this.sdk.marketRegister.markets;
|
|
42
|
+
const resp = await this.provider.publicClient.multicall({
|
|
43
|
+
contracts: markets.map((m) => ({
|
|
44
|
+
abi: import_compressors.iPeripheryCompressorAbi,
|
|
45
|
+
address: pcAddr,
|
|
46
|
+
functionName: "getZappers",
|
|
47
|
+
args: [m.configurator.address, m.pool.pool.address]
|
|
48
|
+
})),
|
|
49
|
+
allowFailure: true
|
|
50
|
+
});
|
|
51
|
+
for (let i = 0; i < resp.length; i++) {
|
|
52
|
+
const { status, result, error } = resp[i];
|
|
53
|
+
const marketConfigurator = markets[i].configurator.address;
|
|
54
|
+
const pool = markets[i].pool.pool.address;
|
|
55
|
+
if (status === "success") {
|
|
56
|
+
const list = result;
|
|
57
|
+
this.#zappers.upsert(
|
|
58
|
+
pool,
|
|
59
|
+
list.map((z) => ({ ...z, pool }))
|
|
60
|
+
);
|
|
61
|
+
} else {
|
|
62
|
+
this.sdk.logger?.error(
|
|
63
|
+
`failed to load zapper for market configurator ${this.labelAddress(marketConfigurator)} and pool ${this.labelAddress(pool)}: ${error}`
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const zappersTokens = this.#zappers.values().flatMap((l) => l.flatMap((z) => [z.tokenIn, z.tokenOut]));
|
|
68
|
+
for (const t of zappersTokens) {
|
|
69
|
+
this.sdk.tokensMeta.upsert(t.addr, t);
|
|
70
|
+
this.sdk.provider.addressLabels.set(t.addr, t.symbol);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
get zappers() {
|
|
74
|
+
if (!this.#zappers) {
|
|
75
|
+
throw new Error("zappers plugin not attached");
|
|
76
|
+
}
|
|
77
|
+
return this.#zappers;
|
|
78
|
+
}
|
|
79
|
+
stateHuman(raw) {
|
|
80
|
+
return this.zappers.values().flatMap(
|
|
81
|
+
(l) => l.flatMap((z) => ({
|
|
82
|
+
address: z.baseParams.addr,
|
|
83
|
+
contractType: z.baseParams.contractType,
|
|
84
|
+
version: Number(z.baseParams.version),
|
|
85
|
+
tokenIn: this.labelAddress(z.tokenIn.addr),
|
|
86
|
+
tokenOut: this.labelAddress(z.tokenOut.addr)
|
|
87
|
+
}))
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
92
|
+
0 && (module.exports = {
|
|
93
|
+
GearboxZappersPlugin
|
|
94
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
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 zappers_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(zappers_exports);
|
|
18
|
+
__reExport(zappers_exports, require("./GearboxZappersPlugin.js"), module.exports);
|
|
19
|
+
__reExport(zappers_exports, require("./types.js"), module.exports);
|
|
20
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
21
|
+
0 && (module.exports = {
|
|
22
|
+
...require("./GearboxZappersPlugin.js"),
|
|
23
|
+
...require("./types.js")
|
|
24
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "commonjs"}
|
|
@@ -0,0 +1,16 @@
|
|
|
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 __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var types_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(types_exports);
|