Skip to content

Commit 772e8d3

Browse files
committed
fix: update sdk
1 parent 24aa2d5 commit 772e8d3

File tree

10 files changed

+490
-451
lines changed

10 files changed

+490
-451
lines changed

package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,22 @@
2020
"pino-pretty": "^13.1.1"
2121
},
2222
"devDependencies": {
23-
"@aws-sdk/client-s3": "^3.864.0",
24-
"@biomejs/biome": "^2.2.0",
23+
"@aws-sdk/client-s3": "^3.873.0",
24+
"@biomejs/biome": "^2.2.2",
2525
"@commander-js/extra-typings": "^14.0.0",
2626
"@commitlint/cli": "^19.8.1",
2727
"@commitlint/config-conventional": "^19.8.1",
2828
"@gearbox-protocol/biome-config": "^1.0.0",
29-
"@gearbox-protocol/cli-utils": "^5.44.1",
29+
"@gearbox-protocol/cli-utils": "^5.45.9",
3030
"@gearbox-protocol/liquidator-contracts": "^1.36.0-experimental.41",
3131
"@gearbox-protocol/liquidator-v2-contracts": "^2.4.0",
32-
"@gearbox-protocol/sdk": "8.24.2",
32+
"@gearbox-protocol/sdk": "8.25.1-next.4",
3333
"@gearbox-protocol/types": "^1.14.8",
3434
"@types/node": "^24.3.0",
3535
"@uniswap/sdk-core": "^7.7.2",
3636
"@uniswap/v3-sdk": "^3.25.2",
3737
"@vlad-yakovlev/telegram-md": "^2.1.0",
38-
"abitype": "^1.0.8",
38+
"abitype": "^1.0.9",
3939
"axios": "^1.11.0",
4040
"axios-retry": "^4.5.0",
4141
"date-fns": "^4.1.0",
@@ -46,11 +46,11 @@
4646
"nanoid": "^5.1.5",
4747
"node-pty": "^1.0.0",
4848
"pino": "^9.9.0",
49-
"tsx": "4.20.4",
49+
"tsx": "4.20.5",
5050
"typescript": "^5.9.2",
51-
"viem": "^2.34.0",
51+
"viem": "^2.35.1",
5252
"vitest": "^3.2.4",
53-
"zod": "^4.0.17"
53+
"zod": "^4.1.2"
5454
},
5555
"commitlint": {
5656
"extends": [

src/services/liquidate/BatchLiquidator.ts

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,18 @@ import {
77
AP_ROUTER,
88
type CreditAccountData,
99
filterDust,
10-
type OnDemandPriceUpdate,
10+
type OnDemandPriceUpdates,
11+
type PriceUpdateV300,
1112
VERSION_RANGE_300,
1213
} from "@gearbox-protocol/sdk";
1314
import {
1415
iCreditFacadeV3Abi,
1516
iCreditFacadeV3MulticallAbi,
1617
} from "@gearbox-protocol/types/abi";
17-
import type { OptimisticResult } from "@gearbox-protocol/types/optimist";
18+
import type {
19+
OptimisticResult,
20+
PriceUpdate,
21+
} from "@gearbox-protocol/types/optimist";
1822
import type { Address, TransactionReceipt } from "viem";
1923
import { encodeFunctionData, parseEventLogs } from "viem";
2024
import type { BatchLiquidatorSchema } from "../../config/index.js";
@@ -148,7 +152,8 @@ export default class BatchLiquidator
148152
for (const ca of accounts) {
149153
// pathfinder returns input without price updates
150154
const input = this.#getEstimateBatchInput(ca);
151-
input.priceUpdates = priceUpdatesByAccount[ca.creditAccount];
155+
input.priceUpdates = priceUpdatesByAccount[ca.creditAccount]
156+
.raw as PriceUpdateV300[];
152157
inputs.push(input);
153158
}
154159
const { result } = await this.client.pub.simulateContract({
@@ -163,16 +168,16 @@ export default class BatchLiquidator
163168
for (let i = 0; i < accounts.length; i++) {
164169
const ca = accounts[i];
165170
const cm = this.sdk.marketRegister.findCreditManager(ca.creditManager);
166-
const updates = priceUpdatesByAccount[ca.creditAccount].map(
167-
({ token, reserve, data }) => ({
168-
target: cm.creditFacade.address,
169-
callData: encodeFunctionData({
170-
abi: iCreditFacadeV3MulticallAbi,
171-
functionName: "onDemandPriceUpdate",
172-
args: [token, reserve, data],
173-
}),
171+
const updates = (
172+
priceUpdatesByAccount[ca.creditAccount].raw as PriceUpdateV300[]
173+
).map(({ token, reserve, data }) => ({
174+
target: cm.creditFacade.address,
175+
callData: encodeFunctionData({
176+
abi: iCreditFacadeV3MulticallAbi,
177+
functionName: "onDemandPriceUpdate",
178+
args: [token, reserve, data],
174179
}),
175-
);
180+
}));
176181
result[i].calls = [...updates, ...result[i].calls];
177182
}
178183

@@ -265,7 +270,8 @@ export default class BatchLiquidator
265270
pathAmount: 0n,
266271
liquidatorPremium: batch[a.creditAccount]?.profit ?? 0n,
267272
liquidatorProfit: 0n, // cannot compute for single account
268-
priceUpdates: priceUpdatesByAccount[a.creditAccount],
273+
priceUpdates: priceUpdatesByAccount[a.creditAccount]
274+
.raw as PriceUpdate[],
269275
isError: !liquidated.has(a.creditAccount),
270276
error: getError(a),
271277
batchId: `${index + 1}/${total}`,
@@ -379,7 +385,7 @@ export default class BatchLiquidator
379385
*/
380386
async #batchLiquidationPreviewUpdates(
381387
accounts: CreditAccountData[],
382-
): Promise<Record<Address, OnDemandPriceUpdate[]>> {
388+
): Promise<Record<Address, OnDemandPriceUpdates>> {
383389
const tokensByAccount: Record<Address, Set<Address>> = {};
384390
for (const ca of accounts) {
385391
const accTokens = tokensByAccount[ca.creditAccount] ?? new Set<Address>();
@@ -393,13 +399,15 @@ export default class BatchLiquidator
393399
}
394400
const updates =
395401
await this.creditAccountService.getUpdateForAccounts(accounts);
396-
const result: Record<Address, OnDemandPriceUpdate[]> = {};
402+
const result: Record<Address, OnDemandPriceUpdates> = {};
397403
for (const ca of accounts) {
398404
const market = this.sdk.marketRegister.findByCreditManager(
399405
ca.creditManager,
400406
);
401-
result[ca.creditAccount] =
402-
market.priceOracle.onDemandPriceUpdates(updates);
407+
result[ca.creditAccount] = market.priceOracle.onDemandPriceUpdates(
408+
ca.creditFacade,
409+
updates,
410+
);
403411
}
404412
return result;
405413
}

src/services/liquidate/SingularPartialLiquidator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ export default class SingularPartialLiquidator extends SingularLiquidator<
184184
assetOut: optimalLiquidation.tokenOut,
185185
amountOut: optimalLiquidation.optimalAmount,
186186
flashLoanAmount: optimalLiquidation.flashLoanAmount,
187-
priceUpdates,
187+
priceUpdates: priceUpdates.raw,
188188
calls: preview.calls.map(c => ({
189189
callData: c.callData,
190190
target: c.target,

src/services/liquidate/partial/AbstractPartialLiquidatorContract.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type {
44
Curator,
55
GearboxSDK,
66
ICreditAccountsService,
7-
OnDemandPriceUpdate,
7+
OnDemandPriceUpdates,
88
} from "@gearbox-protocol/sdk";
99
import { ADDRESS_0X0, AddressMap } from "@gearbox-protocol/sdk";
1010
import {
@@ -289,14 +289,14 @@ export abstract class AbstractPartialLiquidatorContract
289289

290290
public abstract getOptimalLiquidation(
291291
ca: CreditAccountData,
292-
priceUpdates: OnDemandPriceUpdate[],
292+
priceUpdates: OnDemandPriceUpdates,
293293
): Promise<OptimalPartialLiquidation>;
294294

295295
public abstract previewPartialLiquidation(
296296
ca: CreditAccountData,
297297
cm: CreditSuite,
298298
optimalLiquidation: OptimalPartialLiquidation,
299-
priceUpdates: OnDemandPriceUpdate[],
299+
priceUpdates: OnDemandPriceUpdates,
300300
): Promise<RawPartialLiquidationPreview>;
301301

302302
public abstract partialLiquidateAndConvert(

src/services/liquidate/partial/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type {
22
CreditAccountData,
33
CreditSuite,
44
MultiCall,
5-
OnDemandPriceUpdate,
5+
OnDemandPriceUpdates,
66
} from "@gearbox-protocol/sdk";
77
import type { Address, Hash, SimulateContractReturnType } from "viem";
88

@@ -46,7 +46,7 @@ export interface IPartialLiquidatorContract {
4646
*/
4747
getOptimalLiquidation: (
4848
ca: CreditAccountData,
49-
priceUpdates: OnDemandPriceUpdate[],
49+
priceUpdates: OnDemandPriceUpdates,
5050
) => Promise<OptimalPartialLiquidation>;
5151
/**
5252
* Cross-version call to previewPartialLiquidation on liquidator contracts for rouuters v300 and v310
@@ -59,7 +59,7 @@ export interface IPartialLiquidatorContract {
5959
ca: CreditAccountData,
6060
cm: CreditSuite,
6161
optimalLiquidation: OptimalPartialLiquidation,
62-
priceUpdates: OnDemandPriceUpdate[],
62+
priceUpdates: OnDemandPriceUpdates,
6363
) => Promise<RawPartialLiquidationPreview>;
6464
/**
6565
* Cross-version call to partialLiquidateAndConvert on liquidator contracts for rouuters v300 and v310

src/services/liquidate/partial/utils.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import type { CreditSuite, OnDemandPriceUpdate } from "@gearbox-protocol/sdk";
1+
import type {
2+
CreditSuite,
3+
OnDemandPriceUpdates,
4+
PriceUpdateV300,
5+
PriceUpdateV310,
6+
} from "@gearbox-protocol/sdk";
27
import { formatBN } from "@gearbox-protocol/sdk";
38
import type { Address } from "abitype";
49

@@ -30,7 +35,7 @@ export function humanizeOptimalLiquidation(
3035
export function humanizePreviewPartialLiquidation(
3136
cm: CreditSuite,
3237
data: OptimalPartialLiquidation,
33-
priceUpdates: Partial<OnDemandPriceUpdate>[],
38+
priceUpdates: OnDemandPriceUpdates,
3439
slippage: number,
3540
liquidatorContract: Address,
3641
connectors?: Address[],
@@ -40,8 +45,10 @@ export function humanizePreviewPartialLiquidation(
4045
...result,
4146
liquidatorContract,
4247
connectors,
43-
priceUpdates: priceUpdates.map(p => {
44-
if (p.token) {
48+
priceUpdates: (
49+
priceUpdates.raw as Array<PriceUpdateV300 | PriceUpdateV310>
50+
).map(p => {
51+
if ("token" in p) {
4552
return p.token;
4653
}
4754
if (p.priceFeed) {

src/services/liquidate/partial/v300/PartialLiquidatorV300Contract.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import type {
33
CreditAccountData,
44
CreditSuite,
55
Curator,
6-
OnDemandPriceUpdate,
6+
OnDemandPriceUpdates,
7+
PriceUpdateV300,
78
} from "@gearbox-protocol/sdk";
89
import { ADDRESS_0X0, hexEq } from "@gearbox-protocol/sdk";
910
import type { Address, SimulateContractReturnType } from "viem";
@@ -105,7 +106,7 @@ export default abstract class PartialLiquidatorV300Contract extends AbstractPart
105106

106107
public async getOptimalLiquidation(
107108
ca: CreditAccountData,
108-
priceUpdates: Pick<OnDemandPriceUpdate, "data" | "token" | "reserve">[],
109+
priceUpdates: OnDemandPriceUpdates,
109110
): Promise<OptimalPartialLiquidation> {
110111
const optimalHF = this.getOptimalHealthFactor(ca);
111112
const {
@@ -121,7 +122,11 @@ export default abstract class PartialLiquidatorV300Contract extends AbstractPart
121122
abi: [...iPartialLiquidatorAbi, ...exceptionsAbis],
122123
address: this.address,
123124
functionName: "getOptimalLiquidation",
124-
args: [ca.creditAccount, optimalHF, priceUpdates],
125+
args: [
126+
ca.creditAccount,
127+
optimalHF,
128+
priceUpdates.raw as PriceUpdateV300[] as any,
129+
],
125130
gas: 550_000_000n,
126131
});
127132
return {
@@ -137,7 +142,7 @@ export default abstract class PartialLiquidatorV300Contract extends AbstractPart
137142
ca: CreditAccountData,
138143
cm: CreditSuite,
139144
optimalLiquidation: OptimalPartialLiquidation,
140-
priceUpdates: Pick<OnDemandPriceUpdate, "data" | "token" | "reserve">[],
145+
priceUpdates: OnDemandPriceUpdates,
141146
): Promise<RawPartialLiquidationPreview> {
142147
const connectors = this.sdk
143148
.routerFor(cm)
@@ -166,7 +171,7 @@ export default abstract class PartialLiquidatorV300Contract extends AbstractPart
166171
optimalLiquidation.tokenOut,
167172
optimalLiquidation.optimalAmount,
168173
optimalLiquidation.flashLoanAmount,
169-
priceUpdates,
174+
priceUpdates.raw as PriceUpdateV300[] as any,
170175
connectors,
171176
BigInt(this.config.slippage),
172177
],
@@ -191,7 +196,7 @@ export default abstract class PartialLiquidatorV300Contract extends AbstractPart
191196
preview.assetOut,
192197
preview.amountOut,
193198
preview.flashLoanAmount,
194-
preview.priceUpdates,
199+
preview.priceUpdates as readonly PriceUpdateV300[],
195200
preview.calls,
196201
],
197202
});

src/services/liquidate/partial/v310/PartialLiquidatorV310Contract.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import type {
33
CreditAccountData,
44
CreditSuite,
55
Curator,
6-
OnDemandPriceUpdate,
6+
OnDemandPriceUpdates,
7+
PriceUpdateV310,
78
} from "@gearbox-protocol/sdk";
89
import { ADDRESS_0X0, hexEq } from "@gearbox-protocol/sdk";
910
import { Create2Deployer } from "@gearbox-protocol/sdk/dev";
@@ -75,7 +76,7 @@ export default abstract class PartialLiquidatorV310Contract extends AbstractPart
7576

7677
public async getOptimalLiquidation(
7778
ca: CreditAccountData,
78-
priceUpdates: Pick<OnDemandPriceUpdate, "data" | "priceFeed">[],
79+
priceUpdates: OnDemandPriceUpdates,
7980
): Promise<OptimalPartialLiquidation> {
8081
const optimalHF = this.getOptimalHealthFactor(ca);
8182
const {
@@ -91,7 +92,11 @@ export default abstract class PartialLiquidatorV310Contract extends AbstractPart
9192
abi: [...iPartialLiquidatorAbi, ...exceptionsAbis],
9293
address: this.address,
9394
functionName: "getOptimalLiquidation",
94-
args: [ca.creditAccount, optimalHF, priceUpdates],
95+
args: [
96+
ca.creditAccount,
97+
optimalHF,
98+
priceUpdates.raw as PriceUpdateV310[] as any,
99+
],
95100
gas: 550_000_000n,
96101
});
97102
return {
@@ -107,7 +112,7 @@ export default abstract class PartialLiquidatorV310Contract extends AbstractPart
107112
ca: CreditAccountData,
108113
cm: CreditSuite,
109114
optimalLiquidation: OptimalPartialLiquidation,
110-
priceUpdates: Pick<OnDemandPriceUpdate, "data" | "priceFeed">[],
115+
priceUpdates: OnDemandPriceUpdates,
111116
): Promise<RawPartialLiquidationPreview> {
112117
this.caLogger(ca).debug(
113118
humanizePreviewPartialLiquidation(
@@ -130,7 +135,7 @@ export default abstract class PartialLiquidatorV310Contract extends AbstractPart
130135
optimalLiquidation.tokenOut,
131136
optimalLiquidation.optimalAmount,
132137
optimalLiquidation.flashLoanAmount,
133-
priceUpdates,
138+
priceUpdates.raw as PriceUpdateV310[] as any,
134139
BigInt(this.config.slippage),
135140
4n, // TODO: splits
136141
this.extraData,
@@ -156,7 +161,7 @@ export default abstract class PartialLiquidatorV310Contract extends AbstractPart
156161
preview.assetOut,
157162
preview.amountOut,
158163
preview.flashLoanAmount,
159-
preview.priceUpdates,
164+
preview.priceUpdates as readonly PriceUpdateV310[],
160165
preview.calls,
161166
this.extraData,
162167
],

src/services/liquidate/types.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import type {
22
CreditAccountData,
33
MultiCall,
4-
OnDemandPriceUpdate,
54
RawTx,
65
} from "@gearbox-protocol/sdk";
76
import type { PartialLiquidationCondition } from "@gearbox-protocol/types/optimist";
@@ -19,7 +18,7 @@ export interface PartialLiquidationPreview {
1918
amountOut: bigint;
2019
flashLoanAmount: bigint;
2120
underlyingBalance: bigint;
22-
priceUpdates: OnDemandPriceUpdate[];
21+
priceUpdates: unknown[];
2322
skipOnFailure?: boolean;
2423
}
2524

0 commit comments

Comments
 (0)