@gearbox-protocol/sdk 12.8.0 → 13.0.0-next.10
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/{sdk/pools/PoolServiceV310.js → abi/iStateSerializer.js} +14 -8
- package/dist/cjs/sdk/base/TokensMeta.js +111 -32
- package/dist/cjs/sdk/base/index.js +2 -0
- package/dist/cjs/sdk/{constants/phantom-tokens.js → base/token-types.js} +9 -3
- package/dist/cjs/sdk/constants/index.js +0 -2
- package/dist/cjs/sdk/market/MarketRegister.js +2 -2
- package/dist/cjs/sdk/market/MarketSuite.js +3 -0
- package/dist/cjs/{plugins/zappers/extraZappers.js → sdk/market/ZapperRegister.js} +110 -6
- package/dist/cjs/sdk/market/index.js +3 -1
- package/dist/cjs/sdk/pools/PoolService.js +270 -0
- package/dist/cjs/sdk/pools/index.js +2 -4
- package/dist/esm/abi/iStateSerializer.js +12 -0
- package/dist/esm/sdk/base/TokensMeta.js +118 -33
- package/dist/esm/sdk/base/index.js +1 -0
- package/dist/esm/sdk/{constants/phantom-tokens.js → base/token-types.js} +4 -0
- package/dist/esm/sdk/constants/index.js +0 -1
- package/dist/esm/sdk/market/MarketRegister.js +2 -2
- package/dist/esm/sdk/market/MarketSuite.js +3 -0
- package/dist/esm/{plugins/zappers/extraZappers.js → sdk/market/ZapperRegister.js} +109 -2
- package/dist/esm/sdk/market/index.js +1 -0
- package/dist/esm/sdk/pools/PoolService.js +250 -0
- package/dist/esm/sdk/pools/index.js +1 -2
- package/dist/types/abi/iStateSerializer.d.ts +11 -0
- package/dist/types/sdk/base/TokensMeta.d.ts +11 -18
- package/dist/types/sdk/base/index.d.ts +1 -0
- package/dist/types/sdk/base/token-types.d.ts +25 -0
- package/dist/types/sdk/base/types.d.ts +0 -1
- package/dist/types/sdk/constants/index.d.ts +0 -1
- package/dist/types/sdk/market/MarketRegister.d.ts +2 -2
- package/dist/types/sdk/market/MarketSuite.d.ts +1 -0
- package/dist/types/sdk/market/ZapperRegister.d.ts +17 -0
- package/dist/types/sdk/market/index.d.ts +1 -0
- package/dist/types/sdk/market/types.d.ts +10 -0
- package/dist/types/sdk/pools/PoolService.d.ts +11 -0
- package/dist/types/sdk/pools/index.d.ts +1 -2
- package/dist/types/sdk/pools/types.d.ts +63 -57
- package/dist/types/sdk/sdk-legacy/payload/pool.d.ts +3 -2
- package/package.json +3 -3
- package/dist/cjs/plugins/zappers/ZappersPlugin.js +0 -143
- package/dist/cjs/plugins/zappers/index.js +0 -26
- package/dist/cjs/plugins/zappers/package.json +0 -1
- package/dist/cjs/sdk/pools/AbstractPoolService.js +0 -137
- package/dist/cjs/sdk/pools/PoolServiceV300.js +0 -30
- package/dist/cjs/sdk/pools/createPoolService.js +0 -39
- package/dist/esm/plugins/zappers/ZappersPlugin.js +0 -125
- package/dist/esm/plugins/zappers/index.js +0 -3
- package/dist/esm/plugins/zappers/package.json +0 -1
- package/dist/esm/sdk/pools/AbstractPoolService.js +0 -113
- package/dist/esm/sdk/pools/PoolServiceV300.js +0 -6
- package/dist/esm/sdk/pools/PoolServiceV310.js +0 -6
- package/dist/esm/sdk/pools/createPoolService.js +0 -15
- package/dist/types/plugins/zappers/ZappersPlugin.d.ts +0 -18
- package/dist/types/plugins/zappers/extraZappers.d.ts +0 -6
- package/dist/types/plugins/zappers/index.d.ts +0 -3
- package/dist/types/plugins/zappers/types.d.ts +0 -12
- package/dist/types/sdk/constants/phantom-tokens.d.ts +0 -2
- package/dist/types/sdk/pools/AbstractPoolService.d.ts +0 -9
- package/dist/types/sdk/pools/PoolServiceV300.d.ts +0 -4
- package/dist/types/sdk/pools/PoolServiceV310.d.ts +0 -4
- package/dist/types/sdk/pools/createPoolService.d.ts +0 -8
- /package/dist/cjs/{plugins/zappers → sdk/market}/types.js +0 -0
- /package/dist/esm/{plugins/zappers → sdk/market}/types.js +0 -0
|
@@ -16,15 +16,21 @@ 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(
|
|
21
|
-
|
|
19
|
+
var iStateSerializer_exports = {};
|
|
20
|
+
__export(iStateSerializer_exports, {
|
|
21
|
+
iStateSerializerAbi: () => iStateSerializerAbi
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
module.exports = __toCommonJS(iStateSerializer_exports);
|
|
24
|
+
const iStateSerializerAbi = [
|
|
25
|
+
{
|
|
26
|
+
type: "function",
|
|
27
|
+
inputs: [],
|
|
28
|
+
name: "serialize",
|
|
29
|
+
outputs: [{ name: "serializedData", internalType: "bytes", type: "bytes" }],
|
|
30
|
+
stateMutability: "view"
|
|
31
|
+
}
|
|
32
|
+
];
|
|
27
33
|
// Annotate the CommonJS export names for ESM import in node:
|
|
28
34
|
0 && (module.exports = {
|
|
29
|
-
|
|
35
|
+
iStateSerializerAbi
|
|
30
36
|
});
|
|
@@ -21,19 +21,21 @@ __export(TokensMeta_exports, {
|
|
|
21
21
|
TokensMeta: () => TokensMeta
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(TokensMeta_exports);
|
|
24
|
+
var import_viem = require("viem");
|
|
25
|
+
var import_iStateSerializer = require("../../abi/iStateSerializer.js");
|
|
24
26
|
var import_iVersion = require("../../abi/iVersion.js");
|
|
25
27
|
var import__ = require("../index.js");
|
|
26
28
|
var import_utils = require("../utils/index.js");
|
|
27
29
|
class TokensMeta extends import_utils.AddressMap {
|
|
28
30
|
#client;
|
|
29
|
-
#
|
|
31
|
+
#tokenDataLoaded = new import_utils.AddressSet();
|
|
30
32
|
constructor(client) {
|
|
31
33
|
super(void 0, "tokensMeta");
|
|
32
34
|
this.#client = client;
|
|
33
35
|
}
|
|
34
36
|
reset() {
|
|
35
37
|
this.clear();
|
|
36
|
-
this.#
|
|
38
|
+
this.#tokenDataLoaded.clear();
|
|
37
39
|
}
|
|
38
40
|
symbol(token) {
|
|
39
41
|
return this.mustGet(token).symbol;
|
|
@@ -41,28 +43,43 @@ class TokensMeta extends import_utils.AddressMap {
|
|
|
41
43
|
decimals(token) {
|
|
42
44
|
return this.mustGet(token).decimals;
|
|
43
45
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (!this.#phantomTokensLoaded?.has(token)) {
|
|
50
|
-
throw new Error("phantom token data not loaded");
|
|
46
|
+
isPhantomToken(t) {
|
|
47
|
+
if (!this.#tokenDataLoaded.has(t.addr)) {
|
|
48
|
+
throw new Error(
|
|
49
|
+
`extended token data not loaded for ${t.symbol} (${t.addr})`
|
|
50
|
+
);
|
|
51
51
|
}
|
|
52
|
-
return
|
|
52
|
+
return "contractType" in t && t.contractType.startsWith("PHANTOM_TOKEN::");
|
|
53
|
+
}
|
|
54
|
+
isKYCUnderlying(t) {
|
|
55
|
+
if (!this.#tokenDataLoaded.has(t.addr)) {
|
|
56
|
+
throw new Error(
|
|
57
|
+
`extended token data not loaded for ${t.symbol} (${t.addr})`
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
return "contractType" in t && t.contractType.startsWith("KYC_UNDERLYING::");
|
|
53
61
|
}
|
|
54
62
|
/**
|
|
55
63
|
* Returns a map of all phantom tokens
|
|
56
64
|
* Throws if the phantom token data is not loaded
|
|
57
65
|
*/
|
|
58
66
|
get phantomTokens() {
|
|
59
|
-
|
|
60
|
-
|
|
67
|
+
const result = new import_utils.AddressMap();
|
|
68
|
+
for (const [token, meta] of this.entries()) {
|
|
69
|
+
if (this.isPhantomToken(meta)) {
|
|
70
|
+
result.upsert(token, meta);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
get kycUnderlyings() {
|
|
76
|
+
const result = new import_utils.AddressMap();
|
|
77
|
+
for (const [token, meta] of this.entries()) {
|
|
78
|
+
if (this.isKYCUnderlying(meta)) {
|
|
79
|
+
result.upsert(token, meta);
|
|
80
|
+
}
|
|
61
81
|
}
|
|
62
|
-
return
|
|
63
|
-
this.entries().filter(([_, v]) => !!v.phantomTokenType),
|
|
64
|
-
"phantomTokens"
|
|
65
|
-
);
|
|
82
|
+
return result;
|
|
66
83
|
}
|
|
67
84
|
formatBN(arg0, arg1, arg2) {
|
|
68
85
|
const token = typeof arg0 === "object" ? arg0.token : arg0;
|
|
@@ -83,30 +100,92 @@ class TokensMeta extends import_utils.AddressMap {
|
|
|
83
100
|
return meta;
|
|
84
101
|
}
|
|
85
102
|
/**
|
|
86
|
-
* Loads phantom token
|
|
103
|
+
* Loads token information about phantom token and KYC underlying tokens
|
|
104
|
+
*
|
|
105
|
+
* @param tokens - tokens to load data for, defaults to all tokens
|
|
87
106
|
*/
|
|
88
|
-
async
|
|
89
|
-
|
|
90
|
-
const
|
|
107
|
+
async loadTokenData(...tokens) {
|
|
108
|
+
const tokenz = new import_utils.AddressSet(tokens.length > 0 ? tokens : this.keys());
|
|
109
|
+
const tokensToLoad = Array.from(tokenz.difference(this.#tokenDataLoaded));
|
|
110
|
+
if (tokensToLoad.length === 0) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
91
113
|
const resp = await this.#client.multicall({
|
|
92
|
-
contracts:
|
|
93
|
-
(t) =>
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
114
|
+
contracts: tokensToLoad.flatMap(
|
|
115
|
+
(t) => [
|
|
116
|
+
{
|
|
117
|
+
address: t,
|
|
118
|
+
abi: import_iVersion.iVersionAbi,
|
|
119
|
+
functionName: "contractType"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
address: t,
|
|
123
|
+
abi: import_iStateSerializer.iStateSerializerAbi,
|
|
124
|
+
functionName: "serialize"
|
|
125
|
+
}
|
|
126
|
+
]
|
|
98
127
|
),
|
|
99
128
|
allowFailure: true,
|
|
100
129
|
batchSize: 0
|
|
101
130
|
});
|
|
102
|
-
for (let i = 0; i <
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
131
|
+
for (let i = 0; i < tokensToLoad.length; i++) {
|
|
132
|
+
this.#overrideTokenMeta(tokensToLoad[i], resp[i], resp[i + 1]);
|
|
133
|
+
this.#tokenDataLoaded.add(tokensToLoad[i]);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
#overrideTokenMeta(token, contractTypeResp, serializeResp) {
|
|
137
|
+
const meta = this.mustGet(token);
|
|
138
|
+
if (contractTypeResp.status === "success") {
|
|
139
|
+
const contractType = (0, import__.bytes32ToString)(contractTypeResp.result);
|
|
140
|
+
if (contractType.startsWith("KYC_UNDERLYING::")) {
|
|
141
|
+
if (serializeResp.status === "success") {
|
|
142
|
+
this.#overrideKYCUnderlying(meta, contractType, serializeResp.result);
|
|
143
|
+
} else {
|
|
144
|
+
throw new Error(
|
|
145
|
+
`token ${meta.symbol} (${token}) is ${contractType} but serialize failed: ${serializeResp.error}`
|
|
146
|
+
);
|
|
107
147
|
}
|
|
148
|
+
} else if (contractType.startsWith("PHANTOM_TOKEN::")) {
|
|
149
|
+
this.upsert(token, {
|
|
150
|
+
...meta,
|
|
151
|
+
contractType
|
|
152
|
+
});
|
|
108
153
|
}
|
|
109
|
-
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
#overrideKYCUnderlying(meta, contractType, serialized) {
|
|
157
|
+
if (contractType === import__.KYC_UNDERLYING_DEFAULT) {
|
|
158
|
+
const decoded = (0, import_viem.decodeAbiParameters)(
|
|
159
|
+
[
|
|
160
|
+
{ type: "address", name: "kycFactory" },
|
|
161
|
+
{ type: "address", name: "asset" }
|
|
162
|
+
],
|
|
163
|
+
serialized
|
|
164
|
+
);
|
|
165
|
+
this.upsert(meta.addr, {
|
|
166
|
+
...meta,
|
|
167
|
+
contractType,
|
|
168
|
+
kycFactory: decoded[0],
|
|
169
|
+
asset: decoded[1]
|
|
170
|
+
});
|
|
171
|
+
} else if (contractType === import__.KYC_UNDERLYING_ON_DEMAND) {
|
|
172
|
+
const decoded = (0, import_viem.decodeAbiParameters)(
|
|
173
|
+
[
|
|
174
|
+
{ type: "address", name: "kycFactory" },
|
|
175
|
+
{ type: "address", name: "asset" },
|
|
176
|
+
{ type: "address", name: "pool" },
|
|
177
|
+
{ type: "address", name: "liquidityProvider" }
|
|
178
|
+
],
|
|
179
|
+
serialized
|
|
180
|
+
);
|
|
181
|
+
this.upsert(meta.addr, {
|
|
182
|
+
...meta,
|
|
183
|
+
contractType,
|
|
184
|
+
kycFactory: decoded[0],
|
|
185
|
+
asset: decoded[1],
|
|
186
|
+
pool: decoded[2],
|
|
187
|
+
liquidityProvider: decoded[3]
|
|
188
|
+
});
|
|
110
189
|
}
|
|
111
190
|
}
|
|
112
191
|
}
|
|
@@ -21,6 +21,7 @@ __reExport(base_exports, require("./Construct.js"), module.exports);
|
|
|
21
21
|
__reExport(base_exports, require("./PlaceholderContract.js"), module.exports);
|
|
22
22
|
__reExport(base_exports, require("./SDKConstruct.js"), module.exports);
|
|
23
23
|
__reExport(base_exports, require("./TokensMeta.js"), module.exports);
|
|
24
|
+
__reExport(base_exports, require("./token-types.js"), module.exports);
|
|
24
25
|
__reExport(base_exports, require("./types.js"), module.exports);
|
|
25
26
|
// Annotate the CommonJS export names for ESM import in node:
|
|
26
27
|
0 && (module.exports = {
|
|
@@ -30,5 +31,6 @@ __reExport(base_exports, require("./types.js"), module.exports);
|
|
|
30
31
|
...require("./PlaceholderContract.js"),
|
|
31
32
|
...require("./SDKConstruct.js"),
|
|
32
33
|
...require("./TokensMeta.js"),
|
|
34
|
+
...require("./token-types.js"),
|
|
33
35
|
...require("./types.js")
|
|
34
36
|
});
|
|
@@ -16,11 +16,13 @@ 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 token_types_exports = {};
|
|
20
|
+
__export(token_types_exports, {
|
|
21
|
+
KYC_UNDERLYING_DEFAULT: () => KYC_UNDERLYING_DEFAULT,
|
|
22
|
+
KYC_UNDERLYING_ON_DEMAND: () => KYC_UNDERLYING_ON_DEMAND,
|
|
21
23
|
PHANTOM_TOKEN_CONTRACT_TYPES: () => PHANTOM_TOKEN_CONTRACT_TYPES
|
|
22
24
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
25
|
+
module.exports = __toCommonJS(token_types_exports);
|
|
24
26
|
const PHANTOM_TOKEN_CONTRACT_TYPES = [
|
|
25
27
|
"PHANTOM_TOKEN::CONVEX",
|
|
26
28
|
"PHANTOM_TOKEN::INFINIFI_UNWIND",
|
|
@@ -30,7 +32,11 @@ const PHANTOM_TOKEN_CONTRACT_TYPES = [
|
|
|
30
32
|
"PHANTOM_TOKEN::STAKING_REWARDS",
|
|
31
33
|
"PHANTOM_TOKEN::UPSHIFT_WITHDRAW"
|
|
32
34
|
];
|
|
35
|
+
const KYC_UNDERLYING_DEFAULT = "KYC_UNDERLYING::DEFAULT";
|
|
36
|
+
const KYC_UNDERLYING_ON_DEMAND = "KYC_UNDERLYING::ON_DEMAND";
|
|
33
37
|
// Annotate the CommonJS export names for ESM import in node:
|
|
34
38
|
0 && (module.exports = {
|
|
39
|
+
KYC_UNDERLYING_DEFAULT,
|
|
40
|
+
KYC_UNDERLYING_ON_DEMAND,
|
|
35
41
|
PHANTOM_TOKEN_CONTRACT_TYPES
|
|
36
42
|
});
|
|
@@ -21,7 +21,6 @@ __reExport(constants_exports, require("./bot-permissions.js"), module.exports);
|
|
|
21
21
|
__reExport(constants_exports, require("./math.js"), module.exports);
|
|
22
22
|
__reExport(constants_exports, require("./networks.js"), module.exports);
|
|
23
23
|
__reExport(constants_exports, require("./periphery.js"), module.exports);
|
|
24
|
-
__reExport(constants_exports, require("./phantom-tokens.js"), module.exports);
|
|
25
24
|
__reExport(constants_exports, require("./versions.js"), module.exports);
|
|
26
25
|
// Annotate the CommonJS export names for ESM import in node:
|
|
27
26
|
0 && (module.exports = {
|
|
@@ -31,6 +30,5 @@ __reExport(constants_exports, require("./versions.js"), module.exports);
|
|
|
31
30
|
...require("./math.js"),
|
|
32
31
|
...require("./networks.js"),
|
|
33
32
|
...require("./periphery.js"),
|
|
34
|
-
...require("./phantom-tokens.js"),
|
|
35
33
|
...require("./versions.js")
|
|
36
34
|
});
|
|
@@ -22,13 +22,13 @@ __export(MarketRegister_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(MarketRegister_exports);
|
|
24
24
|
var import_marketCompressor = require("../../abi/compressors/marketCompressor.js");
|
|
25
|
-
var import_base = require("../base/index.js");
|
|
26
25
|
var import_constants = require("../constants/index.js");
|
|
27
26
|
var import_utils = require("../utils/index.js");
|
|
28
27
|
var import_viem = require("../utils/viem/index.js");
|
|
29
28
|
var import_MarketConfiguratorContract = require("./MarketConfiguratorContract.js");
|
|
30
29
|
var import_MarketSuite = require("./MarketSuite.js");
|
|
31
|
-
|
|
30
|
+
var import_ZapperRegister = require("./ZapperRegister.js");
|
|
31
|
+
class MarketRegister extends import_ZapperRegister.ZapperRegister {
|
|
32
32
|
/**
|
|
33
33
|
* Mapping pool.address -> MarketSuite
|
|
34
34
|
*/
|
|
@@ -62,6 +62,9 @@ class MarketSuite extends import_base.SDKConstruct {
|
|
|
62
62
|
this.priceOracle = (0, import_oracle.getOrCreatePriceOracle)(sdk, marketData.priceOracle);
|
|
63
63
|
this.lossPolicy = (0, import_loss_policy.createLossPolicy)(sdk, marketData.lossPolicy);
|
|
64
64
|
}
|
|
65
|
+
get underlying() {
|
|
66
|
+
return this.pool.underlying;
|
|
67
|
+
}
|
|
65
68
|
get dirty() {
|
|
66
69
|
return this.configurator.dirty || this.pool.dirty || this.priceOracle.dirty || this.creditManagers.some((cm) => cm.dirty);
|
|
67
70
|
}
|
|
@@ -16,12 +16,115 @@ 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(
|
|
21
|
-
|
|
19
|
+
var ZapperRegister_exports = {};
|
|
20
|
+
__export(ZapperRegister_exports, {
|
|
21
|
+
ZapperRegister: () => ZapperRegister
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
|
|
23
|
+
module.exports = __toCommonJS(ZapperRegister_exports);
|
|
24
|
+
var import_peripheryCompressor = require("../../abi/compressors/peripheryCompressor.js");
|
|
25
|
+
var import_base = require("../base/index.js");
|
|
26
|
+
var import_constants = require("../constants/index.js");
|
|
27
|
+
var import_utils = require("../utils/index.js");
|
|
28
|
+
class ZapperRegister extends import_base.SDKConstruct {
|
|
29
|
+
/**
|
|
30
|
+
* Mapping pool.address -> ZapperData[]
|
|
31
|
+
* Needs to be loaded explicitly using loadZappers method
|
|
32
|
+
*/
|
|
33
|
+
#zappers;
|
|
34
|
+
/**
|
|
35
|
+
* Load zappers for all pools using periphery compressor, adds hardcoded zappers
|
|
36
|
+
*/
|
|
37
|
+
async loadZappers(force) {
|
|
38
|
+
if (!force && this.#zappers) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const [pcAddr] = this.sdk.addressProvider.mustGetLatest(
|
|
42
|
+
import_constants.AP_PERIPHERY_COMPRESSOR,
|
|
43
|
+
import_constants.VERSION_RANGE_310
|
|
44
|
+
);
|
|
45
|
+
this.logger?.debug(`loading zappers with periphery compressor ${pcAddr}`);
|
|
46
|
+
const markets = this.sdk.marketRegister.markets;
|
|
47
|
+
const resp = await this.client.multicall({
|
|
48
|
+
contracts: markets.map(
|
|
49
|
+
(m) => ({
|
|
50
|
+
abi: import_peripheryCompressor.peripheryCompressorAbi,
|
|
51
|
+
address: pcAddr,
|
|
52
|
+
functionName: "getZappers",
|
|
53
|
+
args: [m.configurator.address, m.pool.pool.address]
|
|
54
|
+
})
|
|
55
|
+
),
|
|
56
|
+
allowFailure: true,
|
|
57
|
+
batchSize: 0
|
|
58
|
+
});
|
|
59
|
+
this.#zappers = new import_utils.AddressMap(void 0, "zappers");
|
|
60
|
+
for (let i = 0; i < resp.length; i++) {
|
|
61
|
+
const { status, result, error } = resp[i];
|
|
62
|
+
const marketConfigurator = markets[i].configurator.address;
|
|
63
|
+
const pool = markets[i].pool.pool.address;
|
|
64
|
+
if (status === "success") {
|
|
65
|
+
for (const z of result) {
|
|
66
|
+
this.#addZapper({ ...z, pool, type: "base" });
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
this.logger?.error(
|
|
70
|
+
`failed to load zapper for market configurator ${this.labelAddress(
|
|
71
|
+
marketConfigurator
|
|
72
|
+
)} and pool ${this.labelAddress(pool)}: ${error}`
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
for (const z of KYC_ZAPPERS[this.networkType] ?? []) {
|
|
77
|
+
this.#addZapper({ ...z, type: "kyc" });
|
|
78
|
+
}
|
|
79
|
+
for (const z of MIGRATION_ZAPPERS[this.networkType] ?? []) {
|
|
80
|
+
this.#addZapper({ ...z, type: "migration" });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
#addZapper(z) {
|
|
84
|
+
if (BROKEN_ZAPPERS.has(z.baseParams.addr)) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const existing = this.zappers.get(z.pool);
|
|
88
|
+
if (existing) {
|
|
89
|
+
const hasZapper = existing.some(
|
|
90
|
+
(zz) => (0, import_utils.hexEq)(zz.baseParams.addr, z.baseParams.addr)
|
|
91
|
+
);
|
|
92
|
+
if (!hasZapper) {
|
|
93
|
+
existing.push(z);
|
|
94
|
+
}
|
|
95
|
+
} else {
|
|
96
|
+
this.zappers.upsert(z.pool, [z]);
|
|
97
|
+
}
|
|
98
|
+
const zappersTokens = [z.tokenIn, z.tokenOut];
|
|
99
|
+
for (const t of zappersTokens) {
|
|
100
|
+
this.sdk.tokensMeta.upsert(t.addr, t);
|
|
101
|
+
this.sdk.setAddressLabel(t.addr, t.symbol);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
get zappers() {
|
|
105
|
+
if (!this.#zappers) {
|
|
106
|
+
throw new Error("zappers not loaded, call loadZappers first");
|
|
107
|
+
}
|
|
108
|
+
return this.#zappers;
|
|
109
|
+
}
|
|
110
|
+
poolZappers(pool) {
|
|
111
|
+
return this.zappers.get(pool) ?? [];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Can return multiple zappers if there are multiple zappers for the same tokenIn and tokenOut
|
|
115
|
+
*/
|
|
116
|
+
getZapper(pool, tokenIn, tokenOut) {
|
|
117
|
+
const zappers = this.zappers.get(pool)?.filter(
|
|
118
|
+
(z) => (0, import_utils.hexEq)(z.tokenIn.addr, tokenIn) && (0, import_utils.hexEq)(z.tokenOut.addr, tokenOut)
|
|
119
|
+
);
|
|
120
|
+
return zappers;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const BROKEN_ZAPPERS = new import_utils.AddressMap(
|
|
124
|
+
[["0x90D66b03EC4D462e42e3c7741049FB46a4a03B69", true]],
|
|
125
|
+
"brokenZappers"
|
|
126
|
+
);
|
|
127
|
+
const MIGRATION_ZAPPERS = {
|
|
25
128
|
Mainnet: [
|
|
26
129
|
{
|
|
27
130
|
baseParams: {
|
|
@@ -130,7 +233,8 @@ const extraZappers = {
|
|
|
130
233
|
}
|
|
131
234
|
]
|
|
132
235
|
};
|
|
236
|
+
const KYC_ZAPPERS = {};
|
|
133
237
|
// Annotate the CommonJS export names for ESM import in node:
|
|
134
238
|
0 && (module.exports = {
|
|
135
|
-
|
|
239
|
+
ZapperRegister
|
|
136
240
|
});
|
|
@@ -22,6 +22,7 @@ __reExport(market_exports, require("./MarketSuite.js"), module.exports);
|
|
|
22
22
|
__reExport(market_exports, require("./oracle/index.js"), module.exports);
|
|
23
23
|
__reExport(market_exports, require("./pool/index.js"), module.exports);
|
|
24
24
|
__reExport(market_exports, require("./pricefeeds/index.js"), module.exports);
|
|
25
|
+
__reExport(market_exports, require("./types.js"), module.exports);
|
|
25
26
|
// Annotate the CommonJS export names for ESM import in node:
|
|
26
27
|
0 && (module.exports = {
|
|
27
28
|
...require("./adapters/index.js"),
|
|
@@ -30,5 +31,6 @@ __reExport(market_exports, require("./pricefeeds/index.js"), module.exports);
|
|
|
30
31
|
...require("./MarketSuite.js"),
|
|
31
32
|
...require("./oracle/index.js"),
|
|
32
33
|
...require("./pool/index.js"),
|
|
33
|
-
...require("./pricefeeds/index.js")
|
|
34
|
+
...require("./pricefeeds/index.js"),
|
|
35
|
+
...require("./types.js")
|
|
34
36
|
});
|