@gearbox-protocol/sdk 3.0.0-vfour.21 → 3.0.0-vfour.211

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.
@@ -1,5 +1,26 @@
1
- import { Address, Block, Hex, Prettify, Client, Transport, Chain, TestActions, PublicClient, WalletClient, TestRpcSchema } from 'viem';
2
- import { GearboxSDK, CreditAccountData, ILogger, CreditFactory } from '../sdk';
1
+ import { Address, TestRpcSchema, Hex, Block, Prettify, Client, Transport, Chain, TestActions, PublicClient, WalletClient } from 'viem';
2
+ import { SDKConstruct, CreditAccountsService, CreditAccountData, GearboxSDK, ILogger, Unarray, AddressMap, PriceFeedTreeNode, CreditManagerState } from '../sdk';
3
+ import { AbiParametersToPrimitiveTypes, ExtractAbiFunction } from 'abitype';
4
+
5
+ interface AccountOpenerOptions {
6
+ faucet?: Address;
7
+ }
8
+ interface TargetAccount {
9
+ creditManager: Address;
10
+ collateral: Address;
11
+ leverage?: number;
12
+ slippage?: number;
13
+ }
14
+ declare class AccountOpener extends SDKConstruct {
15
+ #private;
16
+ constructor(service: CreditAccountsService, options?: AccountOpenerOptions);
17
+ get borrower(): Address;
18
+ /**
19
+ * Tries to open account with underlying only in each CM
20
+ */
21
+ openCreditAccounts(targets: TargetAccount[]): Promise<CreditAccountData[]>;
22
+ getOpenedAccounts(): Promise<CreditAccountData[]>;
23
+ }
3
24
 
4
25
  /**
5
26
  * Given credit accounts, calculates new liquidation thresholds that needs to be set to drop account health factor a bit to make it eligible for partial liquidation
@@ -39,6 +60,7 @@ type AnvilRPCSchema = [
39
60
  }
40
61
  ];
41
62
  type AnvilActions = {
63
+ anvilNodeInfo: () => Promise<AnvilNodeInfo>;
42
64
  isAnvil: () => Promise<boolean>;
43
65
  evmMineDetailed: (
44
66
  /**
@@ -60,6 +82,12 @@ declare function createAnvilClient({ chain, transport, }: AnvilClientConfig): An
60
82
  * @returns
61
83
  */
62
84
  declare function isAnvil(client: Client<any, any, any, AnvilRPCSchema, any>): Promise<boolean>;
85
+ /**
86
+ * Anvil node info
87
+ * @param client
88
+ * @returns
89
+ */
90
+ declare function anvilNodeInfo(client: Client<any, any, any, AnvilRPCSchema, any>): Promise<AnvilNodeInfo>;
63
91
  /**
64
92
  * Safely tries to mine block with given timestamp
65
93
  * @param client
@@ -68,12 +96,327 @@ declare function isAnvil(client: Client<any, any, any, AnvilRPCSchema, any>): Pr
68
96
  */
69
97
  declare function evmMineDetailed(client: Client<any, any, any, AnvilRPCSchema, any>, timestamp: bigint | number): Promise<Block<Hex> | undefined>;
70
98
 
99
+ declare const iPriceFeedStoreAbi: readonly [{
100
+ readonly type: "function";
101
+ readonly name: "addPriceFeed";
102
+ readonly inputs: readonly [{
103
+ readonly name: "priceFeed";
104
+ readonly type: "address";
105
+ readonly internalType: "address";
106
+ }, {
107
+ readonly name: "stalenessPeriod";
108
+ readonly type: "uint32";
109
+ readonly internalType: "uint32";
110
+ }];
111
+ readonly outputs: readonly [];
112
+ readonly stateMutability: "nonpayable";
113
+ }, {
114
+ readonly type: "function";
115
+ readonly name: "allowPriceFeed";
116
+ readonly inputs: readonly [{
117
+ readonly name: "token";
118
+ readonly type: "address";
119
+ readonly internalType: "address";
120
+ }, {
121
+ readonly name: "priceFeed";
122
+ readonly type: "address";
123
+ readonly internalType: "address";
124
+ }];
125
+ readonly outputs: readonly [];
126
+ readonly stateMutability: "nonpayable";
127
+ }, {
128
+ readonly type: "function";
129
+ readonly name: "contractType";
130
+ readonly inputs: readonly [];
131
+ readonly outputs: readonly [{
132
+ readonly name: "";
133
+ readonly type: "bytes32";
134
+ readonly internalType: "bytes32";
135
+ }];
136
+ readonly stateMutability: "view";
137
+ }, {
138
+ readonly type: "function";
139
+ readonly name: "forbidPriceFeed";
140
+ readonly inputs: readonly [{
141
+ readonly name: "token";
142
+ readonly type: "address";
143
+ readonly internalType: "address";
144
+ }, {
145
+ readonly name: "priceFeed";
146
+ readonly type: "address";
147
+ readonly internalType: "address";
148
+ }];
149
+ readonly outputs: readonly [];
150
+ readonly stateMutability: "nonpayable";
151
+ }, {
152
+ readonly type: "function";
153
+ readonly name: "getAllowanceTimestamp";
154
+ readonly inputs: readonly [{
155
+ readonly name: "token";
156
+ readonly type: "address";
157
+ readonly internalType: "address";
158
+ }, {
159
+ readonly name: "priceFeed";
160
+ readonly type: "address";
161
+ readonly internalType: "address";
162
+ }];
163
+ readonly outputs: readonly [{
164
+ readonly name: "";
165
+ readonly type: "uint256";
166
+ readonly internalType: "uint256";
167
+ }];
168
+ readonly stateMutability: "view";
169
+ }, {
170
+ readonly type: "function";
171
+ readonly name: "getKnownPriceFeeds";
172
+ readonly inputs: readonly [];
173
+ readonly outputs: readonly [{
174
+ readonly name: "";
175
+ readonly type: "address[]";
176
+ readonly internalType: "address[]";
177
+ }];
178
+ readonly stateMutability: "view";
179
+ }, {
180
+ readonly type: "function";
181
+ readonly name: "getKnownTokens";
182
+ readonly inputs: readonly [];
183
+ readonly outputs: readonly [{
184
+ readonly name: "";
185
+ readonly type: "address[]";
186
+ readonly internalType: "address[]";
187
+ }];
188
+ readonly stateMutability: "view";
189
+ }, {
190
+ readonly type: "function";
191
+ readonly name: "getPriceFeeds";
192
+ readonly inputs: readonly [{
193
+ readonly name: "token";
194
+ readonly type: "address";
195
+ readonly internalType: "address";
196
+ }];
197
+ readonly outputs: readonly [{
198
+ readonly name: "";
199
+ readonly type: "address[]";
200
+ readonly internalType: "address[]";
201
+ }];
202
+ readonly stateMutability: "view";
203
+ }, {
204
+ readonly type: "function";
205
+ readonly name: "getStalenessPeriod";
206
+ readonly inputs: readonly [{
207
+ readonly name: "priceFeed";
208
+ readonly type: "address";
209
+ readonly internalType: "address";
210
+ }];
211
+ readonly outputs: readonly [{
212
+ readonly name: "";
213
+ readonly type: "uint32";
214
+ readonly internalType: "uint32";
215
+ }];
216
+ readonly stateMutability: "view";
217
+ }, {
218
+ readonly type: "function";
219
+ readonly name: "getTokenPriceFeedsMap";
220
+ readonly inputs: readonly [];
221
+ readonly outputs: readonly [{
222
+ readonly name: "";
223
+ readonly type: "tuple[]";
224
+ readonly internalType: "struct ConnectedPriceFeed[]";
225
+ readonly components: readonly [{
226
+ readonly name: "token";
227
+ readonly type: "address";
228
+ readonly internalType: "address";
229
+ }, {
230
+ readonly name: "priceFeeds";
231
+ readonly type: "address[]";
232
+ readonly internalType: "address[]";
233
+ }];
234
+ }];
235
+ readonly stateMutability: "view";
236
+ }, {
237
+ readonly type: "function";
238
+ readonly name: "isAllowedPriceFeed";
239
+ readonly inputs: readonly [{
240
+ readonly name: "token";
241
+ readonly type: "address";
242
+ readonly internalType: "address";
243
+ }, {
244
+ readonly name: "priceFeed";
245
+ readonly type: "address";
246
+ readonly internalType: "address";
247
+ }];
248
+ readonly outputs: readonly [{
249
+ readonly name: "";
250
+ readonly type: "bool";
251
+ readonly internalType: "bool";
252
+ }];
253
+ readonly stateMutability: "view";
254
+ }, {
255
+ readonly type: "function";
256
+ readonly name: "owner";
257
+ readonly inputs: readonly [];
258
+ readonly outputs: readonly [{
259
+ readonly name: "";
260
+ readonly type: "address";
261
+ readonly internalType: "address";
262
+ }];
263
+ readonly stateMutability: "view";
264
+ }, {
265
+ readonly type: "function";
266
+ readonly name: "setStalenessPeriod";
267
+ readonly inputs: readonly [{
268
+ readonly name: "priceFeed";
269
+ readonly type: "address";
270
+ readonly internalType: "address";
271
+ }, {
272
+ readonly name: "stalenessPeriod";
273
+ readonly type: "uint32";
274
+ readonly internalType: "uint32";
275
+ }];
276
+ readonly outputs: readonly [];
277
+ readonly stateMutability: "nonpayable";
278
+ }, {
279
+ readonly type: "function";
280
+ readonly name: "version";
281
+ readonly inputs: readonly [];
282
+ readonly outputs: readonly [{
283
+ readonly name: "";
284
+ readonly type: "uint256";
285
+ readonly internalType: "uint256";
286
+ }];
287
+ readonly stateMutability: "view";
288
+ }, {
289
+ readonly type: "event";
290
+ readonly name: "AddPriceFeed";
291
+ readonly inputs: readonly [{
292
+ readonly name: "priceFeed";
293
+ readonly type: "address";
294
+ readonly indexed: false;
295
+ readonly internalType: "address";
296
+ }, {
297
+ readonly name: "stalenessPeriod";
298
+ readonly type: "uint32";
299
+ readonly indexed: false;
300
+ readonly internalType: "uint32";
301
+ }];
302
+ readonly anonymous: false;
303
+ }, {
304
+ readonly type: "event";
305
+ readonly name: "AllowPriceFeed";
306
+ readonly inputs: readonly [{
307
+ readonly name: "token";
308
+ readonly type: "address";
309
+ readonly indexed: false;
310
+ readonly internalType: "address";
311
+ }, {
312
+ readonly name: "priceFeed";
313
+ readonly type: "address";
314
+ readonly indexed: false;
315
+ readonly internalType: "address";
316
+ }];
317
+ readonly anonymous: false;
318
+ }, {
319
+ readonly type: "event";
320
+ readonly name: "ForbidPriceFeed";
321
+ readonly inputs: readonly [{
322
+ readonly name: "token";
323
+ readonly type: "address";
324
+ readonly indexed: false;
325
+ readonly internalType: "address";
326
+ }, {
327
+ readonly name: "priceFeed";
328
+ readonly type: "address";
329
+ readonly indexed: false;
330
+ readonly internalType: "address";
331
+ }];
332
+ readonly anonymous: false;
333
+ }, {
334
+ readonly type: "event";
335
+ readonly name: "SetStalenessPeriod";
336
+ readonly inputs: readonly [{
337
+ readonly name: "priceFeed";
338
+ readonly type: "address";
339
+ readonly indexed: false;
340
+ readonly internalType: "address";
341
+ }, {
342
+ readonly name: "stalenessPeriod";
343
+ readonly type: "uint32";
344
+ readonly indexed: false;
345
+ readonly internalType: "uint32";
346
+ }];
347
+ readonly anonymous: false;
348
+ }, {
349
+ readonly type: "error";
350
+ readonly name: "CallerIsNotOwnerException";
351
+ readonly inputs: readonly [{
352
+ readonly name: "caller";
353
+ readonly type: "address";
354
+ readonly internalType: "address";
355
+ }];
356
+ }, {
357
+ readonly type: "error";
358
+ readonly name: "PriceFeedAlreadyAddedException";
359
+ readonly inputs: readonly [{
360
+ readonly name: "priceFeed";
361
+ readonly type: "address";
362
+ readonly internalType: "address";
363
+ }];
364
+ }, {
365
+ readonly type: "error";
366
+ readonly name: "PriceFeedIsNotAllowedException";
367
+ readonly inputs: readonly [{
368
+ readonly name: "token";
369
+ readonly type: "address";
370
+ readonly internalType: "address";
371
+ }, {
372
+ readonly name: "priceFeed";
373
+ readonly type: "address";
374
+ readonly internalType: "address";
375
+ }];
376
+ }, {
377
+ readonly type: "error";
378
+ readonly name: "PriceFeedNotKnownException";
379
+ readonly inputs: readonly [{
380
+ readonly name: "priceFeed";
381
+ readonly type: "address";
382
+ readonly internalType: "address";
383
+ }];
384
+ }];
385
+
386
+ type ConnectedPriceFeed = Unarray<AbiParametersToPrimitiveTypes<ExtractAbiFunction<typeof iPriceFeedStoreAbi, "getTokenPriceFeedsMap">["outputs"]>[0]>;
387
+ declare class PriceFeedStore extends SDKConstruct {
388
+ #private;
389
+ constructor(sdk: GearboxSDK);
390
+ load(update?: boolean): Promise<AddressMap<PriceFeedTreeNode[]>>;
391
+ }
392
+
393
+ interface SDKExampleOptions {
394
+ addressProvider?: string;
395
+ addressProviderJson?: string;
396
+ marketConfigurators: Address[];
397
+ anvilUrl?: string;
398
+ outFile?: string;
399
+ }
400
+ declare class SDKExample {
401
+ #private;
402
+ constructor(logger?: ILogger);
403
+ run(opts: SDKExampleOptions): Promise<void>;
404
+ get sdk(): GearboxSDK;
405
+ }
406
+
407
+ interface SetLTsCMSlice {
408
+ creditConfigurator: Address;
409
+ address: Address;
410
+ }
71
411
  /**
72
412
  * Helper function to set liquidation thresholds on credit manager via anvil impersonation
73
413
  * @param sdk
74
414
  * @param cm
75
415
  * @param newLTs
76
416
  */
77
- declare function setLTs(sdk: GearboxSDK, cm: CreditFactory, newLTs: Record<Address, number>, logger?: ILogger): Promise<void>;
417
+ declare function setLTs(anvil: AnvilClient, cm: SetLTsCMSlice, newLTs: Record<Address, number>, logger?: ILogger): Promise<void>;
418
+
419
+ type ZeroLTCMSlice = Pick<CreditManagerState, "creditConfigurator" | "feeInterest" | "liquidationDiscount" | "feeLiquidationExpired" | "liquidationDiscountExpired" | "feeLiquidation" | "name" | "underlying" | "baseParams">;
420
+ declare function setLTZero(anvil: AnvilClient, cm: ZeroLTCMSlice, logger?: ILogger): Promise<void>;
78
421
 
79
- export { type AnvilActions, type AnvilClient, type AnvilClientConfig, calcLiquidatableLTs, createAnvilClient, evmMineDetailed, isAnvil, setLTs };
422
+ export { AccountOpener, type AccountOpenerOptions, type AnvilActions, type AnvilClient, type AnvilClientConfig, type AnvilNodeInfo, type AnvilRPCSchema, type ConnectedPriceFeed, PriceFeedStore, SDKExample, type SDKExampleOptions, type SetLTsCMSlice, type TargetAccount, anvilNodeInfo, calcLiquidatableLTs, createAnvilClient, evmMineDetailed, isAnvil, setLTZero, setLTs };