@gearbox-protocol/sdk 13.1.0-next.1 → 13.1.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/dev/AccountOpener.js +5 -45
- package/dist/cjs/dev/index.js +8 -0
- package/dist/cjs/dev/isOutOfSyncError.js +56 -0
- package/dist/cjs/dev/isRateLimitError.js +80 -0
- package/dist/cjs/dev/isTransientError.js +83 -0
- package/dist/cjs/dev/providers.js +1 -1
- package/dist/cjs/dev/resilientTransport.js +104 -0
- package/dist/cjs/plugins/zappers/ZappersPlugin.js +144 -0
- package/dist/cjs/{sdk/market/ZapperRegister.js → plugins/zappers/extraZappers.js} +6 -110
- package/dist/cjs/plugins/zappers/index.js +26 -0
- package/dist/cjs/plugins/zappers/package.json +1 -0
- package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +104 -462
- package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +5 -16
- package/dist/cjs/sdk/base/ChainContractsRegister.js +1 -1
- package/dist/cjs/sdk/base/TokensMeta.js +32 -255
- package/dist/cjs/sdk/base/index.js +0 -2
- package/dist/cjs/sdk/chain/chains.js +5 -6
- package/dist/cjs/sdk/constants/index.js +2 -0
- package/dist/cjs/sdk/{base/token-types.js → constants/phantom-tokens.js} +3 -9
- package/dist/cjs/sdk/market/MarketRegister.js +2 -2
- package/dist/cjs/sdk/market/MarketSuite.js +0 -6
- package/dist/cjs/sdk/market/index.js +1 -3
- package/dist/cjs/sdk/market/pool/PoolSuite.js +0 -3
- package/dist/cjs/sdk/market/pool/PoolV310Contract.js +2 -17
- package/dist/cjs/sdk/market/pool/index.js +0 -4
- package/dist/cjs/sdk/pools/AbstractPoolService.js +137 -0
- package/dist/cjs/{abi/iStateSerializer.js → sdk/pools/PoolServiceV310.js} +8 -14
- package/dist/cjs/sdk/pools/createPoolService.js +35 -0
- package/dist/cjs/sdk/pools/index.js +4 -2
- package/dist/cjs/sdk/utils/AddressMap.js +1 -1
- package/dist/cjs/sdk/utils/viem/sendRawTx.js +0 -16
- package/dist/esm/dev/AccountOpener.js +6 -47
- package/dist/esm/dev/index.js +4 -0
- package/dist/esm/dev/isOutOfSyncError.js +32 -0
- package/dist/esm/dev/isRateLimitError.js +56 -0
- package/dist/esm/dev/isTransientError.js +59 -0
- package/dist/esm/dev/providers.js +1 -1
- package/dist/esm/dev/resilientTransport.js +79 -0
- package/dist/esm/plugins/zappers/ZappersPlugin.js +126 -0
- package/dist/esm/{sdk/market/ZapperRegister.js → plugins/zappers/extraZappers.js} +2 -109
- package/dist/esm/plugins/zappers/index.js +3 -0
- package/dist/esm/plugins/zappers/package.json +1 -0
- package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +104 -462
- package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +5 -16
- package/dist/esm/sdk/base/ChainContractsRegister.js +1 -1
- package/dist/esm/sdk/base/TokensMeta.js +32 -261
- package/dist/esm/sdk/base/index.js +0 -1
- package/dist/esm/sdk/chain/chains.js +5 -6
- package/dist/esm/sdk/constants/index.js +1 -0
- package/dist/esm/sdk/{base/token-types.js → constants/phantom-tokens.js} +0 -4
- package/dist/esm/sdk/market/MarketRegister.js +2 -2
- package/dist/esm/sdk/market/MarketSuite.js +0 -6
- package/dist/esm/sdk/market/index.js +0 -1
- package/dist/esm/sdk/market/pool/PoolSuite.js +0 -3
- package/dist/esm/sdk/market/pool/PoolV310Contract.js +2 -17
- package/dist/esm/sdk/market/pool/index.js +0 -2
- package/dist/esm/sdk/pools/AbstractPoolService.js +113 -0
- package/dist/esm/sdk/pools/PoolServiceV310.js +6 -0
- package/dist/esm/sdk/pools/createPoolService.js +11 -0
- package/dist/esm/sdk/pools/index.js +2 -1
- package/dist/esm/sdk/utils/AddressMap.js +1 -1
- package/dist/esm/sdk/utils/viem/sendRawTx.js +1 -19
- package/dist/types/dev/index.d.ts +4 -0
- package/dist/types/dev/isOutOfSyncError.d.ts +4 -0
- package/dist/types/dev/isRateLimitError.d.ts +4 -0
- package/dist/types/dev/isTransientError.d.ts +4 -0
- package/dist/types/dev/resilientTransport.d.ts +19 -0
- package/dist/types/plugins/zappers/ZappersPlugin.d.ts +18 -0
- package/dist/types/plugins/zappers/extraZappers.d.ts +6 -0
- package/dist/types/plugins/zappers/index.d.ts +3 -0
- package/dist/types/plugins/zappers/types.d.ts +12 -0
- package/dist/types/sdk/accounts/AbstractCreditAccountsService.d.ts +27 -123
- package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -1
- package/dist/types/sdk/accounts/types.d.ts +8 -108
- package/dist/types/sdk/base/TokensMeta.d.ts +18 -34
- package/dist/types/sdk/base/index.d.ts +0 -1
- package/dist/types/sdk/base/types.d.ts +1 -0
- package/dist/types/sdk/chain/chains.d.ts +1 -1
- package/dist/types/sdk/constants/index.d.ts +1 -0
- package/dist/types/sdk/constants/phantom-tokens.d.ts +2 -0
- package/dist/types/sdk/market/MarketRegister.d.ts +2 -2
- package/dist/types/sdk/market/MarketSuite.d.ts +0 -3
- package/dist/types/sdk/market/index.d.ts +0 -1
- package/dist/types/sdk/market/pool/PoolSuite.d.ts +0 -2
- package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +2 -6
- package/dist/types/sdk/market/pool/index.d.ts +0 -2
- package/dist/types/sdk/pools/AbstractPoolService.d.ts +9 -0
- package/dist/types/sdk/pools/PoolServiceV310.d.ts +4 -0
- package/dist/types/sdk/pools/createPoolService.d.ts +3 -0
- package/dist/types/sdk/pools/index.d.ts +2 -1
- package/dist/types/sdk/pools/types.d.ts +63 -84
- package/dist/types/sdk/utils/AddressMap.d.ts +1 -1
- package/dist/types/sdk/utils/viem/sendRawTx.d.ts +1 -5
- package/package.json +6 -5
- package/dist/cjs/abi/310/iSecuritizeDegenNFT.js +0 -263
- package/dist/cjs/abi/310/iSecuritizeKYCFactory.js +0 -278
- package/dist/cjs/sdk/market/pool/SecuritizeKYCFactory.js +0 -97
- package/dist/cjs/sdk/pools/PoolService.js +0 -391
- package/dist/esm/abi/310/iSecuritizeDegenNFT.js +0 -239
- package/dist/esm/abi/310/iSecuritizeKYCFactory.js +0 -254
- package/dist/esm/abi/iStateSerializer.js +0 -12
- package/dist/esm/sdk/market/pool/SecuritizeKYCFactory.js +0 -73
- package/dist/esm/sdk/pools/PoolService.js +0 -371
- package/dist/types/abi/310/iSecuritizeDegenNFT.d.ts +0 -324
- package/dist/types/abi/310/iSecuritizeKYCFactory.d.ts +0 -322
- package/dist/types/abi/iStateSerializer.d.ts +0 -11
- package/dist/types/sdk/base/token-types.d.ts +0 -33
- package/dist/types/sdk/market/ZapperRegister.d.ts +0 -17
- package/dist/types/sdk/market/pool/SecuritizeKYCFactory.d.ts +0 -345
- package/dist/types/sdk/market/types.d.ts +0 -10
- package/dist/types/sdk/pools/PoolService.d.ts +0 -14
- /package/dist/cjs/{sdk/market → plugins/zappers}/types.js +0 -0
- /package/dist/esm/{sdk/market → plugins/zappers}/types.js +0 -0
|
@@ -65,7 +65,7 @@ class CreditAccountServiceV310 extends import_AbstractCreditAccountsService.Abst
|
|
|
65
65
|
})
|
|
66
66
|
};
|
|
67
67
|
const calls = [...priceUpdatesCalls, addBotCall];
|
|
68
|
-
const tx = targetContract.type === "creditAccount" ?
|
|
68
|
+
const tx = targetContract.type === "creditAccount" ? cm.creditFacade.multicall(targetContract.creditAccount, calls) : void 0;
|
|
69
69
|
return { tx, calls, creditFacade: cm.creditFacade };
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
@@ -100,7 +100,7 @@ class CreditAccountServiceV310 extends import_AbstractCreditAccountsService.Abst
|
|
|
100
100
|
averageQuota
|
|
101
101
|
})
|
|
102
102
|
];
|
|
103
|
-
const tx =
|
|
103
|
+
const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
|
|
104
104
|
return { tx, calls, creditFacade: cm.creditFacade };
|
|
105
105
|
}
|
|
106
106
|
/**
|
|
@@ -113,13 +113,11 @@ class CreditAccountServiceV310 extends import_AbstractCreditAccountsService.Abst
|
|
|
113
113
|
creditAccount: ca,
|
|
114
114
|
permits,
|
|
115
115
|
to,
|
|
116
|
-
tokensToClaim
|
|
117
|
-
calls: wrapCalls = []
|
|
116
|
+
tokensToClaim
|
|
118
117
|
}) {
|
|
119
118
|
const cm = this.sdk.marketRegister.findCreditManager(ca.creditManager);
|
|
120
119
|
const addCollateral = collateralAssets.filter((a) => a.balance > 0);
|
|
121
120
|
const router = this.sdk.routerFor(ca);
|
|
122
|
-
const unwrapCalls = await this.getRedeemDiffCalls(1n, ca.creditManager) ?? [];
|
|
123
121
|
const claimPath = await router.findClaimAllRewards({
|
|
124
122
|
tokensToClaim,
|
|
125
123
|
creditAccount: ca
|
|
@@ -131,21 +129,14 @@ class CreditAccountServiceV310 extends import_AbstractCreditAccountsService.Abst
|
|
|
131
129
|
const calls = [
|
|
132
130
|
...operation === "close" ? [] : priceUpdates,
|
|
133
131
|
...this.prepareAddCollateral(ca.creditFacade, addCollateral, permits),
|
|
134
|
-
...wrapCalls,
|
|
135
132
|
...this.prepareDisableQuotas(ca),
|
|
136
133
|
...this.prepareDecreaseDebt(ca),
|
|
137
|
-
...unwrapCalls,
|
|
138
134
|
...claimPath.calls,
|
|
139
135
|
...assetsToWithdraw.map(
|
|
140
136
|
(t) => this.prepareWithdrawToken(ca.creditFacade, t.token, import_math.MAX_UINT256, to)
|
|
141
137
|
)
|
|
142
138
|
];
|
|
143
|
-
const tx =
|
|
144
|
-
cm,
|
|
145
|
-
ca.creditAccount,
|
|
146
|
-
calls,
|
|
147
|
-
operation
|
|
148
|
-
);
|
|
139
|
+
const tx = operation === "close" ? cm.creditFacade.closeCreditAccount(ca.creditAccount, calls) : cm.creditFacade.multicall(ca.creditAccount, calls);
|
|
149
140
|
return { tx, calls, creditFacade: cm.creditFacade };
|
|
150
141
|
}
|
|
151
142
|
/**
|
|
@@ -169,13 +160,11 @@ class CreditAccountServiceV310 extends import_AbstractCreditAccountsService.Abst
|
|
|
169
160
|
creditManager: ca.creditManager,
|
|
170
161
|
creditAccount: ca
|
|
171
162
|
});
|
|
172
|
-
const wrapCalls = await this.getDepositDiffCalls(1n, ca.creditManager) ?? [];
|
|
173
163
|
const addCollateral = collateralAssets.filter((a) => a.balance > 0);
|
|
174
164
|
const calls = [
|
|
175
165
|
...priceUpdates,
|
|
176
166
|
...this.prepareAddCollateral(ca.creditFacade, addCollateral, permits),
|
|
177
167
|
...claimPath.calls,
|
|
178
|
-
...wrapCalls,
|
|
179
168
|
...assetsToWithdraw.map(
|
|
180
169
|
(t) => this.prepareWithdrawToken(ca.creditFacade, t.token, import_math.MAX_UINT256, to)
|
|
181
170
|
)
|
|
@@ -219,7 +208,7 @@ class CreditAccountServiceV310 extends import_AbstractCreditAccountsService.Abst
|
|
|
219
208
|
...claimPath.calls,
|
|
220
209
|
...this.prepareUpdateQuotas(ca.creditFacade, { minQuota, averageQuota })
|
|
221
210
|
];
|
|
222
|
-
const tx =
|
|
211
|
+
const tx = cm.creditFacade.multicall(ca.creditAccount, calls);
|
|
223
212
|
return { tx, calls, creditFacade: cm.creditFacade };
|
|
224
213
|
}
|
|
225
214
|
async previewWithdrawLlamathenaProportionally(_) {
|
|
@@ -38,7 +38,7 @@ class ChainContractsRegister {
|
|
|
38
38
|
logger;
|
|
39
39
|
constructor(client, logger) {
|
|
40
40
|
this.client = client;
|
|
41
|
-
this.tokensMeta = new import_TokensMeta.TokensMeta(client
|
|
41
|
+
this.tokensMeta = new import_TokensMeta.TokensMeta(client);
|
|
42
42
|
this.logger = logger;
|
|
43
43
|
}
|
|
44
44
|
resetContracts() {
|
|
@@ -21,36 +21,18 @@ __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_iSecuritizeDegenNFT = require("../../abi/310/iSecuritizeDegenNFT.js");
|
|
26
|
-
var import_iSecuritizeKYCFactory = require("../../abi/310/iSecuritizeKYCFactory.js");
|
|
27
|
-
var import_iStateSerializer = require("../../abi/iStateSerializer.js");
|
|
28
24
|
var import_iVersion = require("../../abi/iVersion.js");
|
|
29
25
|
var import_utils = require("../utils/index.js");
|
|
30
|
-
var import_token_types = require("./token-types.js");
|
|
31
26
|
class TokensMeta extends import_utils.AddressMap {
|
|
32
27
|
#client;
|
|
33
|
-
#
|
|
34
|
-
|
|
35
|
-
constructor(client, logger) {
|
|
28
|
+
#phantomTokensLoaded;
|
|
29
|
+
constructor(client) {
|
|
36
30
|
super(void 0, "tokensMeta");
|
|
37
31
|
this.#client = client;
|
|
38
|
-
this.#logger = logger?.child?.({ name: "TokensMeta" }) ?? logger;
|
|
39
32
|
}
|
|
40
33
|
reset() {
|
|
41
34
|
this.clear();
|
|
42
|
-
this.#
|
|
43
|
-
}
|
|
44
|
-
upsert(address, value) {
|
|
45
|
-
let v = value;
|
|
46
|
-
const existing = this.get(address);
|
|
47
|
-
if (existing && v) {
|
|
48
|
-
v = {
|
|
49
|
-
...existing,
|
|
50
|
-
...v
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
super.upsert(address, v);
|
|
35
|
+
this.#phantomTokensLoaded = void 0;
|
|
54
36
|
}
|
|
55
37
|
symbol(token) {
|
|
56
38
|
return this.mustGet(token).symbol;
|
|
@@ -59,78 +41,27 @@ class TokensMeta extends import_utils.AddressMap {
|
|
|
59
41
|
return this.mustGet(token).decimals;
|
|
60
42
|
}
|
|
61
43
|
/**
|
|
62
|
-
* Returns
|
|
63
|
-
*
|
|
64
|
-
* @returns
|
|
65
|
-
*/
|
|
66
|
-
isPhantomToken(t) {
|
|
67
|
-
if (!this.#tokenDataLoaded.has(t.addr)) {
|
|
68
|
-
throw new Error(
|
|
69
|
-
`extended token data not loaded for ${t.symbol} (${t.addr})`
|
|
70
|
-
);
|
|
71
|
-
}
|
|
72
|
-
return !!t.contractType?.startsWith("PHANTOM_TOKEN::");
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Returns true if the token is a KYC underlying token, throws if the token data is not loaded
|
|
76
|
-
* @param t
|
|
77
|
-
* @returns
|
|
44
|
+
* Returns the phantom token type for a given token, or undefined for normal tokens
|
|
45
|
+
* Throws if the phantom token data is not loaded
|
|
78
46
|
*/
|
|
79
|
-
|
|
80
|
-
if (!this.#
|
|
81
|
-
throw new Error(
|
|
82
|
-
`extended token data not loaded for ${t.symbol} (${t.addr})`
|
|
83
|
-
);
|
|
47
|
+
phantomTokenType(token) {
|
|
48
|
+
if (!this.#phantomTokensLoaded?.has(token)) {
|
|
49
|
+
throw new Error("phantom token data not loaded");
|
|
84
50
|
}
|
|
85
|
-
return
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Returns true if the token is a DSToken, throws if the token data is not loaded
|
|
89
|
-
* @param t
|
|
90
|
-
* @returns
|
|
91
|
-
*/
|
|
92
|
-
isDSToken(t) {
|
|
93
|
-
if (!this.#tokenDataLoaded.has(t.addr)) {
|
|
94
|
-
throw new Error(
|
|
95
|
-
`extended token data not loaded for ${t.symbol} (${t.addr})`
|
|
96
|
-
);
|
|
97
|
-
}
|
|
98
|
-
return !!t.isDSToken;
|
|
51
|
+
return this.mustGet(token).phantomTokenType;
|
|
99
52
|
}
|
|
100
53
|
/**
|
|
101
54
|
* Returns a map of all phantom tokens
|
|
102
|
-
* Throws if token data is not loaded
|
|
55
|
+
* Throws if the phantom token data is not loaded
|
|
103
56
|
*/
|
|
104
57
|
get phantomTokens() {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if (this.isPhantomToken(meta)) {
|
|
108
|
-
result.upsert(token, meta);
|
|
109
|
-
}
|
|
58
|
+
if (!this.#phantomTokensLoaded) {
|
|
59
|
+
throw new Error("phantom tokens not loaded");
|
|
110
60
|
}
|
|
111
|
-
return
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
* Throws if token data is not loaded
|
|
116
|
-
*/
|
|
117
|
-
get kycUnderlyings() {
|
|
118
|
-
const result = new import_utils.AddressMap();
|
|
119
|
-
for (const [token, meta] of this.entries()) {
|
|
120
|
-
if (this.isKYCUnderlying(meta)) {
|
|
121
|
-
result.upsert(token, meta);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return result;
|
|
125
|
-
}
|
|
126
|
-
get dsTokens() {
|
|
127
|
-
const result = new import_utils.AddressMap();
|
|
128
|
-
for (const [token, meta] of this.entries()) {
|
|
129
|
-
if (this.isDSToken(meta)) {
|
|
130
|
-
result.upsert(token, meta);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return result;
|
|
61
|
+
return new import_utils.AddressMap(
|
|
62
|
+
this.entries().filter(([_, v]) => !!v.phantomTokenType),
|
|
63
|
+
"phantomTokens"
|
|
64
|
+
);
|
|
134
65
|
}
|
|
135
66
|
formatBN(arg0, arg1, arg2) {
|
|
136
67
|
const token = typeof arg0 === "object" ? arg0.token : arg0;
|
|
@@ -151,184 +82,30 @@ class TokensMeta extends import_utils.AddressMap {
|
|
|
151
82
|
return meta;
|
|
152
83
|
}
|
|
153
84
|
/**
|
|
154
|
-
* Loads token
|
|
155
|
-
*
|
|
156
|
-
* @param tokens - tokens to load data for, defaults to all tokens
|
|
85
|
+
* Loads phantom token data for all known tokens from chain
|
|
157
86
|
*/
|
|
158
|
-
async
|
|
159
|
-
|
|
160
|
-
const
|
|
161
|
-
if (tokensToLoad.length === 0) {
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
87
|
+
async loadPhantomTokens() {
|
|
88
|
+
this.#phantomTokensLoaded = new import_utils.AddressSet();
|
|
89
|
+
const tokens = this.keys();
|
|
164
90
|
const resp = await this.#client.multicall({
|
|
165
|
-
contracts:
|
|
166
|
-
(t) =>
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
address: t,
|
|
174
|
-
abi: import_iStateSerializer.iStateSerializerAbi,
|
|
175
|
-
functionName: "serialize"
|
|
176
|
-
}
|
|
177
|
-
]
|
|
91
|
+
contracts: tokens.map(
|
|
92
|
+
(t) => ({
|
|
93
|
+
address: t,
|
|
94
|
+
abi: import_iVersion.iVersionAbi,
|
|
95
|
+
functionName: "contractType"
|
|
96
|
+
})
|
|
178
97
|
),
|
|
179
98
|
allowFailure: true,
|
|
180
99
|
batchSize: 0
|
|
181
100
|
});
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
resp[2 * i],
|
|
188
|
-
resp[2 * i + 1]
|
|
189
|
-
);
|
|
190
|
-
this.#tokenDataLoaded.add(tokensToLoad[i]);
|
|
191
|
-
if (this.isKYCUnderlying(meta)) {
|
|
192
|
-
kycFactories.add(meta.kycFactory);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
this.#logger?.debug(`found ${kycFactories.size} KYC factories`);
|
|
196
|
-
await this.#loadDSTokens(kycFactories);
|
|
197
|
-
}
|
|
198
|
-
#overrideTokenMeta(token, contractTypeResp, serializeResp) {
|
|
199
|
-
const meta = this.mustGet(token);
|
|
200
|
-
if (contractTypeResp.status === "success") {
|
|
201
|
-
const contractType = (0, import_utils.bytes32ToString)(contractTypeResp.result);
|
|
202
|
-
if (contractType.startsWith("KYC_UNDERLYING::")) {
|
|
203
|
-
if (serializeResp.status === "success") {
|
|
204
|
-
this.#overrideKYCUnderlying(meta, contractType, serializeResp.result);
|
|
205
|
-
} else {
|
|
206
|
-
throw new Error(
|
|
207
|
-
`token ${meta.symbol} (${token}) is ${contractType} but serialize failed: ${serializeResp.error}`
|
|
208
|
-
);
|
|
101
|
+
for (let i = 0; i < resp.length; i++) {
|
|
102
|
+
if (resp[i].status === "success") {
|
|
103
|
+
const contractType = (0, import_utils.bytes32ToString)(resp[i].result);
|
|
104
|
+
if (contractType.startsWith("PHANTOM_TOKEN::")) {
|
|
105
|
+
this.mustGet(tokens[i]).phantomTokenType = contractType;
|
|
209
106
|
}
|
|
210
|
-
} else {
|
|
211
|
-
this.upsert(token, {
|
|
212
|
-
...meta,
|
|
213
|
-
contractType
|
|
214
|
-
});
|
|
215
107
|
}
|
|
216
|
-
this.#
|
|
217
|
-
}
|
|
218
|
-
return this.mustGet(token);
|
|
219
|
-
}
|
|
220
|
-
#overrideKYCUnderlying(meta, contractType, serialized) {
|
|
221
|
-
if (contractType === import_token_types.KYC_UNDERLYING_DEFAULT) {
|
|
222
|
-
const decoded = (0, import_viem.decodeAbiParameters)(
|
|
223
|
-
[
|
|
224
|
-
{ type: "address", name: "kycFactory" },
|
|
225
|
-
{ type: "address", name: "asset" }
|
|
226
|
-
],
|
|
227
|
-
serialized
|
|
228
|
-
);
|
|
229
|
-
this.upsert(meta.addr, {
|
|
230
|
-
...meta,
|
|
231
|
-
contractType,
|
|
232
|
-
kycFactory: decoded[0],
|
|
233
|
-
asset: decoded[1]
|
|
234
|
-
});
|
|
235
|
-
} else if (contractType === import_token_types.KYC_UNDERLYING_ON_DEMAND) {
|
|
236
|
-
const decoded = (0, import_viem.decodeAbiParameters)(
|
|
237
|
-
[
|
|
238
|
-
{ type: "address", name: "kycFactory" },
|
|
239
|
-
{ type: "address", name: "asset" },
|
|
240
|
-
{ type: "address", name: "pool" },
|
|
241
|
-
{ type: "address", name: "liquidityProvider" }
|
|
242
|
-
],
|
|
243
|
-
serialized
|
|
244
|
-
);
|
|
245
|
-
this.upsert(meta.addr, {
|
|
246
|
-
...meta,
|
|
247
|
-
contractType,
|
|
248
|
-
kycFactory: decoded[0],
|
|
249
|
-
asset: decoded[1],
|
|
250
|
-
pool: decoded[2],
|
|
251
|
-
liquidityProvider: decoded[3]
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
async #loadDSTokens(kycFactories) {
|
|
256
|
-
const degenNFTs = await this.#client.multicall({
|
|
257
|
-
contracts: kycFactories.map((address) => {
|
|
258
|
-
return {
|
|
259
|
-
address,
|
|
260
|
-
abi: import_iSecuritizeKYCFactory.iSecuritizeKYCFactoryAbi,
|
|
261
|
-
functionName: "getDegenNFT"
|
|
262
|
-
};
|
|
263
|
-
}),
|
|
264
|
-
allowFailure: false,
|
|
265
|
-
batchSize: 0
|
|
266
|
-
});
|
|
267
|
-
const resp = await this.#client.multicall({
|
|
268
|
-
contracts: degenNFTs.map((address) => {
|
|
269
|
-
return {
|
|
270
|
-
address,
|
|
271
|
-
abi: import_iSecuritizeDegenNFT.iSecuritizeDegenNFTAbi,
|
|
272
|
-
functionName: "getDSTokens"
|
|
273
|
-
};
|
|
274
|
-
}),
|
|
275
|
-
allowFailure: false,
|
|
276
|
-
batchSize: 0
|
|
277
|
-
});
|
|
278
|
-
const dsToken = new import_utils.AddressSet(resp.flat());
|
|
279
|
-
const tokensToLoad = dsToken.difference(new Set(this.keys()));
|
|
280
|
-
this.#logger?.debug(
|
|
281
|
-
`found ${dsToken.size} DSTokens in KYC factories, need to load ${tokensToLoad.size} basic metadata`
|
|
282
|
-
);
|
|
283
|
-
await this.#loadWithoutCompressor(tokensToLoad);
|
|
284
|
-
for (const token of dsToken) {
|
|
285
|
-
const meta = this.mustGet(token);
|
|
286
|
-
this.upsert(token, {
|
|
287
|
-
...meta,
|
|
288
|
-
isDSToken: true
|
|
289
|
-
});
|
|
290
|
-
this.#tokenDataLoaded.add(token);
|
|
291
|
-
this.#logger?.debug(`token ${meta.symbol} (${token}) is a DSToken`);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
async #loadWithoutCompressor(tokens_) {
|
|
295
|
-
if (tokens_.size === 0) {
|
|
296
|
-
return;
|
|
297
|
-
}
|
|
298
|
-
const tokens = Array.from(tokens_);
|
|
299
|
-
const resp = await this.#client.multicall({
|
|
300
|
-
contracts: tokens.flatMap(
|
|
301
|
-
(t) => [
|
|
302
|
-
{
|
|
303
|
-
address: t,
|
|
304
|
-
abi: import_viem.erc20Abi,
|
|
305
|
-
functionName: "symbol"
|
|
306
|
-
},
|
|
307
|
-
{
|
|
308
|
-
address: t,
|
|
309
|
-
abi: import_viem.erc20Abi,
|
|
310
|
-
functionName: "name"
|
|
311
|
-
},
|
|
312
|
-
{
|
|
313
|
-
address: t,
|
|
314
|
-
abi: import_viem.erc20Abi,
|
|
315
|
-
functionName: "decimals"
|
|
316
|
-
}
|
|
317
|
-
]
|
|
318
|
-
),
|
|
319
|
-
allowFailure: false,
|
|
320
|
-
batchSize: 0
|
|
321
|
-
});
|
|
322
|
-
this.#logger?.debug(
|
|
323
|
-
`loaded ${resp.length} basic metadata without compressor`
|
|
324
|
-
);
|
|
325
|
-
for (let i = 0; i < tokens.length; i++) {
|
|
326
|
-
this.upsert(tokens[i], {
|
|
327
|
-
addr: tokens[i],
|
|
328
|
-
symbol: resp[3 * i],
|
|
329
|
-
name: resp[3 * i + 1],
|
|
330
|
-
decimals: resp[3 * i + 2]
|
|
331
|
-
});
|
|
108
|
+
this.#phantomTokensLoaded.add(tokens[i]);
|
|
332
109
|
}
|
|
333
110
|
}
|
|
334
111
|
}
|
|
@@ -22,7 +22,6 @@ __reExport(base_exports, require("./errors.js"), module.exports);
|
|
|
22
22
|
__reExport(base_exports, require("./PlaceholderContract.js"), module.exports);
|
|
23
23
|
__reExport(base_exports, require("./SDKConstruct.js"), module.exports);
|
|
24
24
|
__reExport(base_exports, require("./TokensMeta.js"), module.exports);
|
|
25
|
-
__reExport(base_exports, require("./token-types.js"), module.exports);
|
|
26
25
|
__reExport(base_exports, require("./types.js"), module.exports);
|
|
27
26
|
// Annotate the CommonJS export names for ESM import in node:
|
|
28
27
|
0 && (module.exports = {
|
|
@@ -33,6 +32,5 @@ __reExport(base_exports, require("./types.js"), module.exports);
|
|
|
33
32
|
...require("./PlaceholderContract.js"),
|
|
34
33
|
...require("./SDKConstruct.js"),
|
|
35
34
|
...require("./TokensMeta.js"),
|
|
36
|
-
...require("./token-types.js"),
|
|
37
35
|
...require("./types.js")
|
|
38
36
|
});
|
|
@@ -75,12 +75,11 @@ const chains = {
|
|
|
75
75
|
"0x7a133fbd01736fd076158307c9476cc3877f1af5": "Invariant Group",
|
|
76
76
|
"0x09d8305F49374AEA6A78aF6C996df2913e8f3b19": "Tulipa",
|
|
77
77
|
"0x1b265b97eb169fb6668e3258007c3b0242c7bdbe": "kpk",
|
|
78
|
-
"0x9dddd1b9ce0ac8aa0c80e4ec141600b9bf0101c3": "
|
|
78
|
+
"0x9dddd1b9ce0ac8aa0c80e4ec141600b9bf0101c3": "UltraYield",
|
|
79
79
|
"0x601067eba24bb5b558a184fc082525637e96a42d": "Gami Labs"
|
|
80
80
|
},
|
|
81
81
|
testMarketConfigurators: {
|
|
82
|
-
"0x99df7330bf42d596af2e9d9836d4fc2077c574aa": "M11 Credit"
|
|
83
|
-
"0xE0527dE5908B3fc2e054B7eEE0DeF6c9965AbF24": "Securitize"
|
|
82
|
+
"0x99df7330bf42d596af2e9d9836d4fc2077c574aa": "M11 Credit"
|
|
84
83
|
},
|
|
85
84
|
isPublic: true,
|
|
86
85
|
wellKnownToken: {
|
|
@@ -113,7 +112,7 @@ const chains = {
|
|
|
113
112
|
network: "Optimism",
|
|
114
113
|
defaultMarketConfigurators: {
|
|
115
114
|
"0x2a15969CE5320868eb609680751cF8896DD92De5": "Chaos Labs",
|
|
116
|
-
"0x9dddd1b9ce0ac8aa0c80e4ec141600b9bf0101c3": "
|
|
115
|
+
"0x9dddd1b9ce0ac8aa0c80e4ec141600b9bf0101c3": "UltraYield"
|
|
117
116
|
},
|
|
118
117
|
isPublic: true,
|
|
119
118
|
wellKnownToken: {
|
|
@@ -182,7 +181,7 @@ const chains = {
|
|
|
182
181
|
network: "Monad",
|
|
183
182
|
defaultMarketConfigurators: {
|
|
184
183
|
"0x16956912813ab9a38d95730b52a8cf53e860a7c5": "Tulipa",
|
|
185
|
-
"0x7c6ee1bf9c1eb3ee55bdbdc1e8d0317aab718e0a": "
|
|
184
|
+
"0x7c6ee1bf9c1eb3ee55bdbdc1e8d0317aab718e0a": "UltraYield"
|
|
186
185
|
},
|
|
187
186
|
isPublic: true,
|
|
188
187
|
wellKnownToken: {
|
|
@@ -301,7 +300,7 @@ const chains = {
|
|
|
301
300
|
network: "Plasma",
|
|
302
301
|
defaultMarketConfigurators: {
|
|
303
302
|
"0x7a133fbd01736fd076158307c9476cc3877f1af5": "Invariant Group",
|
|
304
|
-
"0x4bce62622be621ce036691de98afcab0e41a77a3": "
|
|
303
|
+
"0x4bce62622be621ce036691de98afcab0e41a77a3": "UltraYield",
|
|
305
304
|
"0xce1cf71a28837daaa7b92d00ca4ef2fd649c2a67": "Hyperithm",
|
|
306
305
|
"0x9655f82b585b11cee8a05576ed8efcf755cec04b": "TelosC"
|
|
307
306
|
},
|
|
@@ -21,6 +21,7 @@ __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);
|
|
24
25
|
__reExport(constants_exports, require("./versions.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(constants_exports, require("./versions.js"), module.exports);
|
|
|
30
31
|
...require("./math.js"),
|
|
31
32
|
...require("./networks.js"),
|
|
32
33
|
...require("./periphery.js"),
|
|
34
|
+
...require("./phantom-tokens.js"),
|
|
33
35
|
...require("./versions.js")
|
|
34
36
|
});
|
|
@@ -16,13 +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(
|
|
21
|
-
KYC_UNDERLYING_DEFAULT: () => KYC_UNDERLYING_DEFAULT,
|
|
22
|
-
KYC_UNDERLYING_ON_DEMAND: () => KYC_UNDERLYING_ON_DEMAND,
|
|
19
|
+
var phantom_tokens_exports = {};
|
|
20
|
+
__export(phantom_tokens_exports, {
|
|
23
21
|
PHANTOM_TOKEN_CONTRACT_TYPES: () => PHANTOM_TOKEN_CONTRACT_TYPES
|
|
24
22
|
});
|
|
25
|
-
module.exports = __toCommonJS(
|
|
23
|
+
module.exports = __toCommonJS(phantom_tokens_exports);
|
|
26
24
|
const PHANTOM_TOKEN_CONTRACT_TYPES = [
|
|
27
25
|
"PHANTOM_TOKEN::CONVEX",
|
|
28
26
|
"PHANTOM_TOKEN::INFINIFI_UNWIND",
|
|
@@ -32,11 +30,7 @@ const PHANTOM_TOKEN_CONTRACT_TYPES = [
|
|
|
32
30
|
"PHANTOM_TOKEN::STAKING_REWARDS",
|
|
33
31
|
"PHANTOM_TOKEN::UPSHIFT_WITHDRAW"
|
|
34
32
|
];
|
|
35
|
-
const KYC_UNDERLYING_DEFAULT = "KYC_UNDERLYING::DEFAULT";
|
|
36
|
-
const KYC_UNDERLYING_ON_DEMAND = "KYC_UNDERLYING::ON_DEMAND";
|
|
37
33
|
// Annotate the CommonJS export names for ESM import in node:
|
|
38
34
|
0 && (module.exports = {
|
|
39
|
-
KYC_UNDERLYING_DEFAULT,
|
|
40
|
-
KYC_UNDERLYING_ON_DEMAND,
|
|
41
35
|
PHANTOM_TOKEN_CONTRACT_TYPES
|
|
42
36
|
});
|
|
@@ -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");
|
|
25
26
|
var import_constants = require("../constants/index.js");
|
|
26
27
|
var import_utils = require("../utils/index.js");
|
|
27
28
|
var import_viem = require("../utils/viem/index.js");
|
|
28
29
|
var import_MarketConfiguratorContract = require("./MarketConfiguratorContract.js");
|
|
29
30
|
var import_MarketSuite = require("./MarketSuite.js");
|
|
30
|
-
|
|
31
|
-
class MarketRegister extends import_ZapperRegister.ZapperRegister {
|
|
31
|
+
class MarketRegister extends import_base.SDKConstruct {
|
|
32
32
|
/**
|
|
33
33
|
* Mapping pool.address -> MarketSuite
|
|
34
34
|
*/
|
|
@@ -62,12 +62,6 @@ class MarketSuite extends import_base.SDKConstruct {
|
|
|
62
62
|
this.priceOracle = (0, import_oracle.createPriceOracle)(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
|
-
}
|
|
68
|
-
async getKYCFactory() {
|
|
69
|
-
return this.pool.getKYCFactory();
|
|
70
|
-
}
|
|
71
65
|
get dirty() {
|
|
72
66
|
return this.configurator.dirty || this.pool.dirty || this.priceOracle.dirty || this.creditManagers.some((cm) => cm.dirty);
|
|
73
67
|
}
|
|
@@ -22,7 +22,6 @@ __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);
|
|
26
25
|
// Annotate the CommonJS export names for ESM import in node:
|
|
27
26
|
0 && (module.exports = {
|
|
28
27
|
...require("./adapters/index.js"),
|
|
@@ -31,6 +30,5 @@ __reExport(market_exports, require("./types.js"), module.exports);
|
|
|
31
30
|
...require("./MarketSuite.js"),
|
|
32
31
|
...require("./oracle/index.js"),
|
|
33
32
|
...require("./pool/index.js"),
|
|
34
|
-
...require("./pricefeeds/index.js")
|
|
35
|
-
...require("./types.js")
|
|
33
|
+
...require("./pricefeeds/index.js")
|
|
36
34
|
});
|
|
@@ -88,9 +88,6 @@ class PoolSuite extends import_base.SDKConstruct {
|
|
|
88
88
|
get underlying() {
|
|
89
89
|
return this.pool.underlying;
|
|
90
90
|
}
|
|
91
|
-
async getKYCFactory() {
|
|
92
|
-
return this.pool.getKYCFactory();
|
|
93
|
-
}
|
|
94
91
|
get dirty() {
|
|
95
92
|
return this.pool.dirty || this.rateKeeper.dirty || this.pqk.dirty || this.interestRateModel.dirty;
|
|
96
93
|
}
|
|
@@ -25,20 +25,16 @@ var import_generated = require("../../../abi/310/generated.js");
|
|
|
25
25
|
var import_iPausable = require("../../../abi/iPausable.js");
|
|
26
26
|
var import_base = require("../../base/index.js");
|
|
27
27
|
var import_utils = require("../../utils/index.js");
|
|
28
|
-
var import_SecuritizeKYCFactory = require("./SecuritizeKYCFactory.js");
|
|
29
28
|
const abi = [...import_generated.iPoolV310Abi, ...import_iPausable.iPausableAbi];
|
|
30
29
|
class PoolV310Contract extends import_base.BaseContract {
|
|
31
30
|
creditManagerDebtParams;
|
|
32
|
-
|
|
33
|
-
#kycFactory;
|
|
34
|
-
constructor(sdk, data) {
|
|
31
|
+
constructor(options, data) {
|
|
35
32
|
const { baseParams, creditManagerDebtParams, ...rest } = data;
|
|
36
|
-
super(
|
|
33
|
+
super(options, {
|
|
37
34
|
...data.baseParams,
|
|
38
35
|
name: `PoolV3(${data.name})`,
|
|
39
36
|
abi
|
|
40
37
|
});
|
|
41
|
-
this.#sdk = sdk;
|
|
42
38
|
Object.assign(this, rest);
|
|
43
39
|
this.creditManagerDebtParams = new import_utils.AddressMap(
|
|
44
40
|
creditManagerDebtParams.map((p) => [p.creditManager, p])
|
|
@@ -50,17 +46,6 @@ class PoolV310Contract extends import_base.BaseContract {
|
|
|
50
46
|
symbol: data.symbol
|
|
51
47
|
});
|
|
52
48
|
}
|
|
53
|
-
async getKYCFactory() {
|
|
54
|
-
if (this.#kycFactory) {
|
|
55
|
-
return this.#kycFactory;
|
|
56
|
-
}
|
|
57
|
-
await this.#sdk.tokensMeta.loadTokenData(this.underlying);
|
|
58
|
-
const u = this.#sdk.tokensMeta.mustGet(this.underlying);
|
|
59
|
-
if (this.#sdk.tokensMeta.isKYCUnderlying(u)) {
|
|
60
|
-
this.#kycFactory = new import_SecuritizeKYCFactory.SecuritizeKYCFactory(this.#sdk, u.kycFactory);
|
|
61
|
-
}
|
|
62
|
-
return this.#kycFactory;
|
|
63
|
-
}
|
|
64
49
|
stateHuman(raw = true) {
|
|
65
50
|
return {
|
|
66
51
|
...super.stateHuman(raw),
|
|
@@ -18,15 +18,11 @@ module.exports = __toCommonJS(pool_exports);
|
|
|
18
18
|
__reExport(pool_exports, require("./GaugeContract.js"), module.exports);
|
|
19
19
|
__reExport(pool_exports, require("./LinearInterestRateModelContract.js"), module.exports);
|
|
20
20
|
__reExport(pool_exports, require("./PoolSuite.js"), module.exports);
|
|
21
|
-
__reExport(pool_exports, require("./PoolV310Contract.js"), module.exports);
|
|
22
|
-
__reExport(pool_exports, require("./SecuritizeKYCFactory.js"), module.exports);
|
|
23
21
|
__reExport(pool_exports, require("./types.js"), module.exports);
|
|
24
22
|
// Annotate the CommonJS export names for ESM import in node:
|
|
25
23
|
0 && (module.exports = {
|
|
26
24
|
...require("./GaugeContract.js"),
|
|
27
25
|
...require("./LinearInterestRateModelContract.js"),
|
|
28
26
|
...require("./PoolSuite.js"),
|
|
29
|
-
...require("./PoolV310Contract.js"),
|
|
30
|
-
...require("./SecuritizeKYCFactory.js"),
|
|
31
27
|
...require("./types.js")
|
|
32
28
|
});
|