Skip to content

Commit 55738a2

Browse files
committed
fix: improve getting curator name from suite
1 parent d4e8a35 commit 55738a2

File tree

9 files changed

+200
-152
lines changed

9 files changed

+200
-152
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"@gearbox-protocol/cli-utils": "^5.45.15",
3030
"@gearbox-protocol/liquidator-contracts": "^1.36.0-experimental.41",
3131
"@gearbox-protocol/liquidator-v2-contracts": "^2.4.0",
32-
"@gearbox-protocol/sdk": "8.27.7",
32+
"@gearbox-protocol/sdk": "8.27.9",
3333
"@gearbox-protocol/types": "^1.14.8",
3434
"@types/node": "^24.3.1",
3535
"@uniswap/sdk-core": "^7.7.2",
@@ -48,7 +48,7 @@
4848
"pino": "^9.9.4",
4949
"tsx": "4.20.5",
5050
"typescript": "^5.9.2",
51-
"viem": "^2.37.3",
51+
"viem": "^2.37.4",
5252
"vitest": "^3.2.4",
5353
"zod": "^4.1.5"
5454
},

src/services/liquidate/partial/utils.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import type {
22
CreditSuite,
3+
Curator,
34
OnDemandPriceUpdates,
45
PriceUpdateV300,
56
PriceUpdateV310,
67
} from "@gearbox-protocol/sdk";
7-
import { formatBN } from "@gearbox-protocol/sdk";
8+
import { formatBN, getCuratorName } from "@gearbox-protocol/sdk";
89
import type { Address } from "abitype";
910

1011
import type { OptimalPartialLiquidation } from "./types.js";
@@ -59,3 +60,16 @@ export function humanizePreviewPartialLiquidation(
5960
slippage: slippage.toString(),
6061
};
6162
}
63+
64+
export function mustGetCuratorName(cm: CreditSuite): Curator {
65+
const curator = getCuratorName(
66+
cm.marketConfigurator,
67+
cm.provider.networkType,
68+
);
69+
if (!curator) {
70+
throw new Error(
71+
`unknown market configurator ${cm.marketConfigurator} on ${cm.provider.networkType}`,
72+
);
73+
}
74+
return curator;
75+
}

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,18 @@ import {
66
AaveFLTaker_bytecode,
77
AaveLiquidator_bytecode,
88
} from "@gearbox-protocol/liquidator-v2-contracts/bytecode";
9-
import type { CreditSuite, Curator } from "@gearbox-protocol/sdk";
9+
import {
10+
type CreditSuite,
11+
type Curator,
12+
getCuratorName,
13+
isVersionRange,
14+
VERSION_RANGE_300,
15+
VERSION_RANGE_310,
16+
} from "@gearbox-protocol/sdk";
1017
import { type Address, isAddress } from "viem";
1118

1219
import { AAVE_V3_LENDING_POOL } from "../constants.js";
20+
import { mustGetCuratorName } from "../utils.js";
1321
import PartialLiquidatorV300Contract from "./PartialLiquidatorV300Contract.js";
1422

1523
export class AAVELiquidatorV300Contract extends PartialLiquidatorV300Contract {
@@ -18,14 +26,14 @@ export class AAVELiquidatorV300Contract extends PartialLiquidatorV300Contract {
1826
public static tryAttach(
1927
cm: CreditSuite,
2028
): AAVELiquidatorV300Contract | undefined {
21-
if (cm.router.version < 300 || cm.router.version > 309) {
29+
if (!isVersionRange(cm.router.version, VERSION_RANGE_300)) {
2230
return undefined;
2331
}
2432
const aavePool = AAVE_V3_LENDING_POOL[cm.provider.networkType];
2533
if (!aavePool || !isAddress(aavePool)) {
2634
return undefined;
2735
}
28-
const curator = cm.name.includes("K3") ? "K3" : "Chaos Labs";
36+
const curator = mustGetCuratorName(cm);
2937
const symbol = cm.sdk.tokensMeta.symbol(cm.underlying);
3038
let result: AAVELiquidatorV300Contract | undefined;
3139
switch (symbol) {

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,16 @@ import {
66
GhoFMTaker_bytecode,
77
GhoLiquidator_bytecode,
88
} from "@gearbox-protocol/liquidator-v2-contracts/bytecode";
9-
import type { CreditSuite, Curator } from "@gearbox-protocol/sdk";
9+
import {
10+
type CreditSuite,
11+
type Curator,
12+
isVersionRange,
13+
VERSION_RANGE_300,
14+
} from "@gearbox-protocol/sdk";
1015
import type { Address } from "viem";
1116

1217
import { FLASH_MINTERS } from "../constants.js";
18+
import { mustGetCuratorName } from "../utils.js";
1319
import PartialLiquidatorV300Contract from "./PartialLiquidatorV300Contract.js";
1420

1521
export class GHOLiquidatorV300Contract extends PartialLiquidatorV300Contract {
@@ -19,10 +25,10 @@ export class GHOLiquidatorV300Contract extends PartialLiquidatorV300Contract {
1925
public static tryAttach(
2026
cm: CreditSuite,
2127
): GHOLiquidatorV300Contract | undefined {
22-
if (cm.router.version < 300 || cm.router.version > 309) {
28+
if (!isVersionRange(cm.router.version, VERSION_RANGE_300)) {
2329
return undefined;
2430
}
25-
const curator = cm.name.includes("K3") ? "K3" : "Chaos Labs";
31+
const curator = mustGetCuratorName(cm);
2632
const symbol = cm.sdk.tokensMeta.symbol(cm.underlying);
2733
const flashMinter = FLASH_MINTERS[cm.provider.networkType]?.[symbol];
2834
if (!flashMinter) {

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,16 @@ import {
66
SiloFLTaker_bytecode,
77
SiloLiquidator_bytecode,
88
} from "@gearbox-protocol/liquidator-v2-contracts/bytecode";
9-
import type { CreditSuite, Curator } from "@gearbox-protocol/sdk";
9+
import {
10+
type CreditSuite,
11+
type Curator,
12+
isVersionRange,
13+
VERSION_RANGE_300,
14+
} from "@gearbox-protocol/sdk";
1015
import type { Address } from "viem";
1116

1217
import { SONIC_USDCE_SILO, SONIC_WS_SILO } from "../constants.js";
18+
import { mustGetCuratorName } from "../utils.js";
1319
import PartialLiquidatorV300Contract from "./PartialLiquidatorV300Contract.js";
1420

1521
export class SiloLiquidatorV300Contract extends PartialLiquidatorV300Contract {
@@ -18,13 +24,13 @@ export class SiloLiquidatorV300Contract extends PartialLiquidatorV300Contract {
1824
public static tryAttach(
1925
cm: CreditSuite,
2026
): SiloLiquidatorV300Contract | undefined {
21-
if (cm.router.version < 300 || cm.router.version > 309) {
27+
if (!isVersionRange(cm.router.version, VERSION_RANGE_300)) {
2228
return undefined;
2329
}
2430
if (cm.provider.networkType !== "Sonic") {
2531
return undefined;
2632
}
27-
const curator = cm.name.includes("K3") ? "K3" : "Chaos Labs";
33+
const curator = mustGetCuratorName(cm);
2834
const result = new SiloLiquidatorV300Contract(cm.router.address, curator);
2935
// if (result.config.liquidationMode === "deleverage") {
3036
// return undefined;

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,16 @@ import {
88
AaveLiquidator_bytecode,
99
AaveUnwinder_bytecode,
1010
} from "@gearbox-protocol/liquidator-contracts/bytecode";
11-
import type { CreditSuite, Curator } from "@gearbox-protocol/sdk";
11+
import {
12+
type CreditSuite,
13+
type Curator,
14+
isVersionRange,
15+
VERSION_RANGE_310,
16+
} from "@gearbox-protocol/sdk";
1217
import { type Address, isAddress } from "viem";
1318

1419
import { AAVE_V3_LENDING_POOL } from "../constants.js";
20+
import { mustGetCuratorName } from "../utils.js";
1521
import PartialLiquidatorV310Contract from "./PartialLiquidatorV310Contract.js";
1622

1723
export class AAVELiquidatorV310Contract extends PartialLiquidatorV310Contract {
@@ -20,14 +26,14 @@ export class AAVELiquidatorV310Contract extends PartialLiquidatorV310Contract {
2026
public static tryAttach(
2127
cm: CreditSuite,
2228
): AAVELiquidatorV310Contract | undefined {
23-
if (cm.router.version < 310 || cm.router.version > 319) {
29+
if (!isVersionRange(cm.router.version, VERSION_RANGE_310)) {
2430
return undefined;
2531
}
2632
const aavePool = AAVE_V3_LENDING_POOL[cm.provider.networkType];
2733
if (!aavePool || !isAddress(aavePool)) {
2834
return undefined;
2935
}
30-
const curator = cm.name.includes("K3") ? "K3" : "Chaos Labs";
36+
const curator = mustGetCuratorName(cm);
3137
const symbol = cm.sdk.tokensMeta.symbol(cm.underlying);
3238
switch (symbol) {
3339
case "GHO":

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
import type { Address } from "viem";
1818

1919
import { FLASH_MINTERS } from "../constants.js";
20+
import { mustGetCuratorName } from "../utils.js";
2021
import PartialLiquidatorV310Contract from "./PartialLiquidatorV310Contract.js";
2122

2223
type GhoLiquidatorToken = "DOLA" | "GHO" | "NECT";
@@ -31,7 +32,7 @@ export class GHOLiquidatorV310Contract extends PartialLiquidatorV310Contract {
3132
if (!isVersionRange(cm.router.version, VERSION_RANGE_310)) {
3233
return undefined;
3334
}
34-
const curator = cm.name.includes("K3") ? "K3" : "Chaos Labs";
35+
const curator = mustGetCuratorName(cm);
3536
const symbol = cm.sdk.tokensMeta.symbol(cm.underlying);
3637
const flashMinter = FLASH_MINTERS[cm.provider.networkType]?.[symbol];
3738
if (!flashMinter) {

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,17 @@ import {
88
SiloLiquidator_bytecode,
99
SiloUnwinder_bytecode,
1010
} from "@gearbox-protocol/liquidator-contracts/bytecode";
11-
import { type CreditSuite, type Curator, hexEq } from "@gearbox-protocol/sdk";
11+
import {
12+
type CreditSuite,
13+
type Curator,
14+
hexEq,
15+
isVersionRange,
16+
VERSION_RANGE_310,
17+
} from "@gearbox-protocol/sdk";
1218
import type { Address } from "viem";
1319

1420
import { SONIC_USDCE_SILO, SONIC_WS_SILO } from "../constants.js";
21+
import { mustGetCuratorName } from "../utils.js";
1522
import PartialLiquidatorV310Contract from "./PartialLiquidatorV310Contract.js";
1623

1724
export class SiloLiquidatorV310Contract extends PartialLiquidatorV310Contract {
@@ -20,13 +27,13 @@ export class SiloLiquidatorV310Contract extends PartialLiquidatorV310Contract {
2027
public static tryAttach(
2128
cm: CreditSuite,
2229
): SiloLiquidatorV310Contract | undefined {
23-
if (cm.router.version < 310 || cm.router.version > 319) {
30+
if (!isVersionRange(cm.router.version, VERSION_RANGE_310)) {
2431
return undefined;
2532
}
2633
if (cm.provider.networkType !== "Sonic") {
2734
return undefined;
2835
}
29-
const curator = cm.name.includes("K3") ? "K3" : "Chaos Labs";
36+
const curator = mustGetCuratorName(cm);
3037
return new SiloLiquidatorV310Contract(cm.router.address, curator);
3138
}
3239

0 commit comments

Comments
 (0)