@gearbox-protocol/liquidator-v2-config 8.4.0-beta.28 → 8.4.0-beta.29
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/index.d.ts +18 -9
- package/dist/index.mjs +15 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -38,10 +38,11 @@ declare const BatchLiquidatorSchema: z.ZodObject<{
|
|
|
38
38
|
rwaFactories: z.ZodPipe<z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodPipe<z.ZodString, z.ZodTransform<string[], string>>]>, z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>>>, z.ZodTransform<`0x${string}`[] | undefined, `0x${string}`[] | undefined>>;
|
|
39
39
|
appName: z.ZodDefault<z.ZodString>;
|
|
40
40
|
port: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
41
|
-
|
|
41
|
+
whitelistUrl: z.ZodOptional<z.ZodURL>;
|
|
42
42
|
debugAccount: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
43
43
|
debugManager: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
44
44
|
castBin: z.ZodOptional<z.ZodString>;
|
|
45
|
+
castTimeout: z.ZodOptional<z.ZodString>;
|
|
45
46
|
staleBlockThreshold: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
46
47
|
logsPageSize: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
|
|
47
48
|
pollingInterval: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
@@ -134,10 +135,11 @@ declare const CommonSchema: z.ZodObject<{
|
|
|
134
135
|
rwaFactories: z.ZodPipe<z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodPipe<z.ZodString, z.ZodTransform<string[], string>>]>, z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>>>, z.ZodTransform<`0x${string}`[] | undefined, `0x${string}`[] | undefined>>;
|
|
135
136
|
appName: z.ZodDefault<z.ZodString>;
|
|
136
137
|
port: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
137
|
-
|
|
138
|
+
whitelistUrl: z.ZodOptional<z.ZodURL>;
|
|
138
139
|
debugAccount: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
139
140
|
debugManager: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
140
141
|
castBin: z.ZodOptional<z.ZodString>;
|
|
142
|
+
castTimeout: z.ZodOptional<z.ZodString>;
|
|
141
143
|
staleBlockThreshold: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
142
144
|
logsPageSize: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
|
|
143
145
|
pollingInterval: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
@@ -248,10 +250,11 @@ declare const ConfigSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
248
250
|
rwaFactories: z.ZodPipe<z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodPipe<z.ZodString, z.ZodTransform<string[], string>>]>, z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>>>, z.ZodTransform<`0x${string}`[] | undefined, `0x${string}`[] | undefined>>;
|
|
249
251
|
appName: z.ZodDefault<z.ZodString>;
|
|
250
252
|
port: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
251
|
-
|
|
253
|
+
whitelistUrl: z.ZodOptional<z.ZodURL>;
|
|
252
254
|
debugAccount: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
253
255
|
debugManager: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
254
256
|
castBin: z.ZodOptional<z.ZodString>;
|
|
257
|
+
castTimeout: z.ZodOptional<z.ZodString>;
|
|
255
258
|
staleBlockThreshold: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
256
259
|
logsPageSize: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
|
|
257
260
|
pollingInterval: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
@@ -345,10 +348,11 @@ declare const ConfigSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
345
348
|
rwaFactories: z.ZodPipe<z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodPipe<z.ZodString, z.ZodTransform<string[], string>>]>, z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>>>, z.ZodTransform<`0x${string}`[] | undefined, `0x${string}`[] | undefined>>;
|
|
346
349
|
appName: z.ZodDefault<z.ZodString>;
|
|
347
350
|
port: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
348
|
-
|
|
351
|
+
whitelistUrl: z.ZodOptional<z.ZodURL>;
|
|
349
352
|
debugAccount: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
350
353
|
debugManager: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
351
354
|
castBin: z.ZodOptional<z.ZodString>;
|
|
355
|
+
castTimeout: z.ZodOptional<z.ZodString>;
|
|
352
356
|
staleBlockThreshold: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
353
357
|
logsPageSize: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
|
|
354
358
|
pollingInterval: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
@@ -440,10 +444,11 @@ declare const ConfigSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
440
444
|
rwaFactories: z.ZodPipe<z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodPipe<z.ZodString, z.ZodTransform<string[], string>>]>, z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>>>, z.ZodTransform<`0x${string}`[] | undefined, `0x${string}`[] | undefined>>;
|
|
441
445
|
appName: z.ZodDefault<z.ZodString>;
|
|
442
446
|
port: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
443
|
-
|
|
447
|
+
whitelistUrl: z.ZodOptional<z.ZodURL>;
|
|
444
448
|
debugAccount: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
445
449
|
debugManager: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
446
450
|
castBin: z.ZodOptional<z.ZodString>;
|
|
451
|
+
castTimeout: z.ZodOptional<z.ZodString>;
|
|
447
452
|
staleBlockThreshold: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
448
453
|
logsPageSize: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
|
|
449
454
|
pollingInterval: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
@@ -534,10 +539,11 @@ declare const ConfigSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
534
539
|
rwaFactories: z.ZodPipe<z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodPipe<z.ZodString, z.ZodTransform<string[], string>>]>, z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>>>, z.ZodTransform<`0x${string}`[] | undefined, `0x${string}`[] | undefined>>;
|
|
535
540
|
appName: z.ZodDefault<z.ZodString>;
|
|
536
541
|
port: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
537
|
-
|
|
542
|
+
whitelistUrl: z.ZodOptional<z.ZodURL>;
|
|
538
543
|
debugAccount: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
539
544
|
debugManager: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
540
545
|
castBin: z.ZodOptional<z.ZodString>;
|
|
546
|
+
castTimeout: z.ZodOptional<z.ZodString>;
|
|
541
547
|
staleBlockThreshold: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
542
548
|
logsPageSize: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
|
|
543
549
|
pollingInterval: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
@@ -647,10 +653,11 @@ declare const DeleverageLiquidatorSchema: z.ZodObject<{
|
|
|
647
653
|
rwaFactories: z.ZodPipe<z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodPipe<z.ZodString, z.ZodTransform<string[], string>>]>, z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>>>, z.ZodTransform<`0x${string}`[] | undefined, `0x${string}`[] | undefined>>;
|
|
648
654
|
appName: z.ZodDefault<z.ZodString>;
|
|
649
655
|
port: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
650
|
-
|
|
656
|
+
whitelistUrl: z.ZodOptional<z.ZodURL>;
|
|
651
657
|
debugAccount: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
652
658
|
debugManager: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
653
659
|
castBin: z.ZodOptional<z.ZodString>;
|
|
660
|
+
castTimeout: z.ZodOptional<z.ZodString>;
|
|
654
661
|
staleBlockThreshold: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
655
662
|
logsPageSize: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
|
|
656
663
|
pollingInterval: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
@@ -755,10 +762,11 @@ declare const FullLiquidatorSchema: z.ZodObject<{
|
|
|
755
762
|
rwaFactories: z.ZodPipe<z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodPipe<z.ZodString, z.ZodTransform<string[], string>>]>, z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>>>, z.ZodTransform<`0x${string}`[] | undefined, `0x${string}`[] | undefined>>;
|
|
756
763
|
appName: z.ZodDefault<z.ZodString>;
|
|
757
764
|
port: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
758
|
-
|
|
765
|
+
whitelistUrl: z.ZodOptional<z.ZodURL>;
|
|
759
766
|
debugAccount: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
760
767
|
debugManager: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
761
768
|
castBin: z.ZodOptional<z.ZodString>;
|
|
769
|
+
castTimeout: z.ZodOptional<z.ZodString>;
|
|
762
770
|
staleBlockThreshold: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
763
771
|
logsPageSize: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
|
|
764
772
|
pollingInterval: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
@@ -1001,10 +1009,11 @@ declare const PartialLiquidatorSchema: z.ZodObject<{
|
|
|
1001
1009
|
rwaFactories: z.ZodPipe<z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodPipe<z.ZodString, z.ZodTransform<string[], string>>]>, z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>>>, z.ZodTransform<`0x${string}`[] | undefined, `0x${string}`[] | undefined>>;
|
|
1002
1010
|
appName: z.ZodDefault<z.ZodString>;
|
|
1003
1011
|
port: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
1004
|
-
|
|
1012
|
+
whitelistUrl: z.ZodOptional<z.ZodURL>;
|
|
1005
1013
|
debugAccount: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
1006
1014
|
debugManager: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>>;
|
|
1007
1015
|
castBin: z.ZodOptional<z.ZodString>;
|
|
1016
|
+
castTimeout: z.ZodOptional<z.ZodString>;
|
|
1008
1017
|
staleBlockThreshold: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
1009
1018
|
logsPageSize: z.ZodOptional<z.ZodCoercedBigInt<unknown>>;
|
|
1010
1019
|
pollingInterval: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
package/dist/index.mjs
CHANGED
|
@@ -116,12 +116,13 @@ var CommonSchema = z2.object({
|
|
|
116
116
|
env: "PORT"
|
|
117
117
|
}),
|
|
118
118
|
/**
|
|
119
|
-
*
|
|
119
|
+
* Full URL of the whitelist endpoint. Entries can be credit account
|
|
120
|
+
* addresses or credit manager addresses. Only applied in non-optimistic mode.
|
|
120
121
|
*/
|
|
121
|
-
|
|
122
|
-
flags: "--
|
|
123
|
-
description: "
|
|
124
|
-
env: "
|
|
122
|
+
whitelistUrl: z2.url().optional().register(zommandRegistry, {
|
|
123
|
+
flags: "--whitelist-url <url>",
|
|
124
|
+
description: "Full URL of the liquidator whitelist endpoint. Entries are credit account or credit manager addresses. Only applied in non-optimistic mode.",
|
|
125
|
+
env: "WHITELIST_URL"
|
|
125
126
|
}),
|
|
126
127
|
/**
|
|
127
128
|
* Only check this account during local debug session
|
|
@@ -148,6 +149,15 @@ var CommonSchema = z2.object({
|
|
|
148
149
|
description: "Path to foundry/cast binary, so that we can create tree-like traces in case of errors",
|
|
149
150
|
env: "CAST_BIN"
|
|
150
151
|
}),
|
|
152
|
+
/**
|
|
153
|
+
* Timeout duration passed to `timeout` utility when running cast.
|
|
154
|
+
* If unset, cast runs without a timeout. Accepts any value understood by `timeout(1)` (e.g. `30s`, `1m`).
|
|
155
|
+
*/
|
|
156
|
+
castTimeout: z2.string().optional().register(zommandRegistry, {
|
|
157
|
+
flags: "--cast-timeout <duration>",
|
|
158
|
+
description: "Timeout duration for cast invocations (e.g. 30s, 1m). If unset, cast runs without a timeout.",
|
|
159
|
+
env: "CAST_TIMEOUT"
|
|
160
|
+
}),
|
|
151
161
|
/**
|
|
152
162
|
* Stale block threshold in seconds, to notify and try to rotate rpc provider. 0 means no monitoring
|
|
153
163
|
*/
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config.ts","../src/notifications.ts","../src/schema.ts","../src/batch-liquidator.ts","../src/common.ts","../src/deleverage-liquidator.ts","../src/full-liquidator.ts","../src/partial-liquidator.ts"],"sourcesContent":["import { createPublicClient, type Transport } from \"viem\";\nimport type { CommonSchema } from \"./common.js\";\nimport type { ConfigSchema } from \"./schema.js\";\n\nexport type Config = ConfigSchema & {\n readonly chainId: number;\n readonly startBlock: bigint;\n};\n\nexport type LiqduiatorConfig<TSchema extends CommonSchema> = TSchema & {\n readonly chainId: number;\n readonly startBlock: bigint;\n};\n\nexport class ConfigImplementation {\n #startBlock?: bigint;\n #chainId?: number;\n\n constructor(schema: ConfigSchema) {\n Object.assign(this, schema);\n }\n\n public async initialize(transport: Transport): Promise<void> {\n const client = createPublicClient({\n transport,\n name: \"preload client\",\n });\n\n const [startBlock, chainId] = await Promise.all([\n client.getBlockNumber(),\n client.getChainId(),\n ]);\n\n this.#startBlock = startBlock;\n this.#chainId = chainId;\n }\n\n public get startBlock(): bigint {\n if (this.#startBlock === undefined) {\n throw new Error(\"config not initialized\");\n }\n return this.#startBlock;\n }\n\n public get chainId(): number {\n if (this.#chainId === undefined) {\n throw new Error(\"config not initialized\");\n }\n return this.#chainId;\n }\n}\n","import { NotificationConfig } from \"@gearbox-protocol/cli-utils\";\nimport type { Curator } from \"@gearbox-protocol/sdk\";\nimport { z } from \"zod/v4\";\n\nconst extendedOptions = NotificationConfig.options.map(o =>\n o.extend({\n /**\n * When undefined, defaults to all curators together (aka Gearbox internal)\n */\n curator: z.custom<Curator>(s => typeof s === \"string\").optional(),\n }),\n);\n\nexport const NotificationsConfig = z.object({\n notifications: z\n .array(\n z.discriminatedUnion(\n NotificationConfig.def.discriminator,\n extendedOptions as [\n (typeof extendedOptions)[0],\n ...(typeof extendedOptions)[number][],\n ],\n ),\n )\n .optional()\n .default([]),\n});\n","import { z } from \"zod/v4\";\nimport { BatchLiquidatorSchema } from \"./batch-liquidator.js\";\nimport { DeleverageLiquidatorSchema } from \"./deleverage-liquidator.js\";\nimport { FullLiquidatorSchema } from \"./full-liquidator.js\";\nimport { PartialLiquidatorSchema } from \"./partial-liquidator.js\";\n\nexport const ConfigSchema = z.discriminatedUnion(\"liquidationMode\", [\n FullLiquidatorSchema,\n PartialLiquidatorSchema,\n BatchLiquidatorSchema,\n DeleverageLiquidatorSchema,\n]);\n\nexport type ConfigSchema = z.infer<typeof ConfigSchema>;\n","import { zommandRegistry } from \"@gearbox-protocol/cli-utils\";\nimport { z } from \"zod/v4\";\nimport { CommonSchema } from \"./common.js\";\n\nexport const BatchLiquidatorSchema = z.object({\n ...CommonSchema.shape,\n /**\n * Liquidator mode\n */\n liquidationMode: z.literal(\"batch\").register(zommandRegistry, {\n flags: \"--liquidation-mode <mode>\",\n description: \"Liquidator mode (full/partial/batch/deleverage)\",\n env: \"LIQUIDATION_MODE\",\n }),\n /**\n * Number of accounts to liquidate at once using batch liquidator\n */\n batchSize: z.coerce\n .number()\n .nonnegative()\n .default(10)\n .register(zommandRegistry, {\n flags: \"--batch-size <size>\",\n description:\n \"Number of accounts to liquidate at once using batch liquidator\",\n env: \"BATCH_SIZE\",\n }),\n});\n\nexport type BatchLiquidatorSchema = z.infer<typeof BatchLiquidatorSchema>;\n","import {\n addressLike,\n boolLike,\n CensoredString,\n optionalAddressArrayLike,\n ProvidersSchema,\n stringArrayLike,\n zommandRegistry,\n} from \"@gearbox-protocol/cli-utils\";\nimport { MAX_UINT256, WAD } from \"@gearbox-protocol/sdk\";\nimport { type Hex, isHex } from \"viem\";\nimport { z } from \"zod/v4\";\nimport { NotificationsConfig } from \"./notifications.js\";\n\nexport const CommonSchema = z.object({\n ...ProvidersSchema.shape,\n /**\n * By default uses address provider from @gearbox-protocol/sdk\n * Use this option to override address provider\n */\n addressProvider: addressLike().optional().register(zommandRegistry, {\n flags: \"--address-provider <address>\",\n description:\n \"Address provider override, uses default value from SDK otherwise\",\n env: \"ADDRESS_PROVIDER\",\n }),\n /**\n * Market configurators addresses to attach SDK\n */\n marketConfigurators: optionalAddressArrayLike().register(zommandRegistry, {\n flags: \"--market-configurators <addresses...>\",\n description:\n \"Market configurators to use for the process, comma separated. Uses default value from SDK if not specified\",\n env: \"MARKET_CONFIGURATORS\",\n }),\n /**\n * RWA factories addresses to attach SDK\n */\n rwaFactories: optionalAddressArrayLike().register(zommandRegistry, {\n flags: \"--rwa-factories <addresses...>\",\n description:\n \"RWA factories to use for the process, comma separated. Uses default value from SDK if not specified\",\n env: \"RWA_FACTORIES\",\n }),\n /**\n * App name used in various messages to distinguish instances\n */\n appName: z.string().default(\"liquidator-ts\").register(zommandRegistry, {\n flags: \"--app-name <name>\",\n description: \"App name used in various messages to distinguish instances\",\n env: \"APP_NAME\",\n }),\n /**\n * Port to expose some vital signals and metrics\n */\n port: z.coerce.number().default(4000).register(zommandRegistry, {\n flags: \"--port <port>\",\n description: \"Port to expose some vital signals and metrics\",\n env: \"PORT\",\n }),\n /**\n * These accounts will not be liquidated\n */\n ignoreAccounts: optionalAddressArrayLike().register(zommandRegistry, {\n flags: \"--ignore-accounts <addresses...>\",\n description: \"These accounts will not be liquidated\",\n env: \"IGNORE_ACCOUNTS\",\n }),\n /**\n * Only check this account during local debug session\n */\n debugAccount: addressLike().optional().register(zommandRegistry, {\n flags: \"--debug-account <address>\",\n description: \"Only check this account during local debug session\",\n env: \"DEBUG_ACCOUNT\",\n }),\n /**\n * Only check this credit manager during local debug session\n */\n debugManager: addressLike().optional().register(zommandRegistry, {\n flags: \"--debug-manager <address>\",\n description: \"Only check this credit manager during local debug session\",\n env: \"DEBUG_MANAGER\",\n }),\n /**\n * Path to foundry/cast binary, so that we can create tree-like traces in case of errors\n * Used during optimistic liquidations\n */\n castBin: z.string().optional().register(zommandRegistry, {\n flags: \"--cast-bin <path>\",\n description:\n \"Path to foundry/cast binary, so that we can create tree-like traces in case of errors\",\n env: \"CAST_BIN\",\n }),\n /**\n * Stale block threshold in seconds, to notify and try to rotate rpc provider. 0 means no monitoring\n */\n staleBlockThreshold: z.coerce\n .number()\n .nonnegative()\n .default(120)\n .register(zommandRegistry, {\n flags: \"--stale-block-threshold <threshold>\",\n description:\n \"Stale block threshold in seconds, to notify and try to rotate rpc provider. 0 means no monitoring\",\n env: \"STALE_BLOCK_THRESHOLD\",\n }),\n /**\n * Max block range size for eth_getLogs\n */\n logsPageSize: z.coerce\n .bigint()\n .nonnegative()\n .optional()\n .register(zommandRegistry, {\n flags: \"--logs-page-size <size>\",\n description: \"Max block range size for eth_getLogs\",\n env: \"LOGS_PAGE_SIZE\",\n }),\n /**\n * Polling interval in milliseconds, default to what's default in viem\n */\n pollingInterval: z.coerce\n .number()\n .nonnegative()\n .optional()\n .register(zommandRegistry, {\n flags: \"--polling-interval <interval>\",\n description:\n \"Polling interval in milliseconds, default to what's default in viem\",\n env: \"POLLING_INTERVAL\",\n }),\n /**\n * Private key used to send liquidation transactions\n */\n privateKey: z\n .string()\n .min(1)\n .transform((s): Hex => {\n return isHex(s) ? s : `0x${s}`;\n })\n .transform(CensoredString.transform<Hex>)\n .register(zommandRegistry, {\n flags: \"--private-key <key>\",\n description: \"Private key used to send liquidation transactions\",\n env: \"PRIVATE_KEY\",\n }),\n /**\n * If balance drops before this value - we should send notification\n */\n minBalance: z.coerce\n .bigint()\n .positive()\n .default(500000000000000000n)\n .register(zommandRegistry, {\n flags: \"--min-balance <balance>\",\n description: \"Minimum balance to liquidate\",\n env: \"MIN_BALANCE\",\n }),\n /**\n * Filter out all accounts with HF >= threshold during scan stage\n */\n hfThreshold: z.coerce\n .bigint()\n .nonnegative()\n .max(MAX_UINT256)\n .default(WAD - 1n) // 100% accounts are healthy, and credit account compressors filters by HF <= threshold\n .register(zommandRegistry, {\n flags: \"--hf-threshold <threshold>\",\n description:\n \"Filter out all accounts with HF >= threshold during scan stage\",\n env: \"HF_THRESHOLD\",\n }),\n /**\n * Default numSplits for router v3.1 contract\n */\n numSplits: z.coerce\n .bigint()\n .positive()\n .default(10n)\n .register(zommandRegistry, {\n flags: \"--num-splits <splits>\",\n description: \"Default numSplits for router v3.1 contract\",\n env: \"NUM_SPLITS\",\n }),\n /**\n * Liquidator mode\n */\n liquidationMode: z\n .enum([\"full\", \"partial\", \"batch\", \"deleverage\"])\n .default(\"full\")\n .register(zommandRegistry, {\n flags: \"--liquidation-mode <mode>\",\n description: \"Liquidator mode (full/partial/batch/deleverage)\",\n env: \"LIQUIDATION_MODE\",\n }),\n /**\n * Enable optimistic liquidations\n */\n optimistic: boolLike().optional().register(zommandRegistry, {\n flags: \"--optimistic\",\n description: \"Enable optimistic liquidations\",\n env: \"OPTIMISTIC\",\n }),\n /**\n * In optimistic mode, use real health factor range to scan for accounts\n * and do not force-enable deleverage bot on accounts.\n *\n * This mode can be used to test that deleverage bot is able to detect accounts correctly\n */\n useProductionScanner: boolLike().optional().register(zommandRegistry, {\n flags: \"--use-production-scanner\",\n description:\n \"In optimistic mode, use real health factor range to scan for accounts and do not force-enable deleverage bot on accounts\",\n env: \"USE_PRODUCTION_SCANNER\",\n }),\n /**\n * Optimistic timestamp to pass from external runner, in ms\n */\n optimisticTimestamp: z.coerce\n .number()\n .int()\n .positive()\n .nullish()\n .register(zommandRegistry, {\n flags: \"--optimistic-timestamp <timestamp>\",\n description: \"Optimistic timestamp to pass from external runner, in ms\",\n env: \"OPTIMISTIC_TIMESTAMP\",\n }),\n /**\n * Fail on missing feeds (redstone and pyth)\n */\n failOnMissingFeeds: boolLike().optional().register(zommandRegistry, {\n flags: \"--fail-on-missing-feeds\",\n description: \"Fail on missing feeds (redstone and pyth)\",\n env: \"FAIL_ON_MISSING_FEEDS\",\n }),\n /**\n * Explicitly set gas limit for SDK\n * -1 to disable explicitly setting gas limit in SDK\n * If not set, SDK will use default gas limit\n */\n gasLimit: z.coerce.bigint().optional().register(zommandRegistry, {\n flags: \"--gas-limit <limit>\",\n description: \"Set gas limit for SDK\",\n env: \"GAS_LIMIT\",\n }),\n /**\n * Do not send transactions in non-optimistic mode, just log them\n */\n dryRun: boolLike().optional().register(zommandRegistry, {\n flags: \"--dry-run\",\n description:\n \"Do not send transactions in non-optimistic mode, just log them\",\n env: \"DRY_RUN\",\n }),\n /**\n * Redstone gateways override\n * Set local caching proxies to avoid rate limiting in test environment\n */\n redstoneGateways: stringArrayLike()\n .pipe(z.array(z.url()))\n .transform(a => (a.length ? a : undefined))\n .optional()\n .register(zommandRegistry, {\n flags: \"--redstone-gateways <urls...>\",\n description: \"Redstone gateways to use, comma separated\",\n env: \"REDSTONE_GATEWAYS\",\n }),\n\n /**\n * Limit number of accounts to load from compressor. 0 = unlimited, let compressor decide\n */\n compressorBatchSize: z.coerce\n .number()\n .nonnegative()\n .default(0)\n .register(zommandRegistry, {\n flags: \"--compressor-batch-size <size>\",\n description:\n \"Limit number of accounts to load from compressor. 0 = unlimited, let compressor decide\",\n env: \"COMPRESSOR_BATCH_SIZE\",\n }),\n /**\n * Slippage value for pathfined\n */\n slippage: z.coerce\n .number()\n .min(0)\n .max(10000)\n .int()\n .default(50)\n .register(zommandRegistry, {\n flags: \"--slippage <value>\",\n description: \"Slippage value for pathfinder\",\n env: \"SLIPPAGE\",\n }),\n /**\n * By default, reserve prices are not updated (except for deleverage mode)\n */\n updateReservePrices: boolLike()\n .optional()\n .default(false)\n .register(zommandRegistry, {\n flags: \"--update-reserve-prices\",\n description: \"Update reserve prices\",\n env: \"UPDATE_RESERVE_PRICES\",\n }),\n /**\n * List of assets to keep on account after liquidation\n */\n keepAssets: optionalAddressArrayLike().register(zommandRegistry, {\n flags: \"--keep-assets <assets...>\",\n description: \"List of assets to keep on account after liquidation\",\n env: \"KEEP_ASSETS\",\n }),\n\n /**\n * Directory to save json with optimistic liquidation results\n */\n outDir: z.string().default(\".\").register(zommandRegistry, {\n flags: \"--out-dir <dir>\",\n description: \"Directory to save json with optimistic liquidation results\",\n env: \"OUT_DIR\",\n }),\n /**\n * REST endpoint to POST json with optimistic liquidation results\n */\n outEndpoint: z.url().optional().register(zommandRegistry, {\n flags: \"--out-endpoint <url>\",\n description:\n \"REST endpoint to POST json with optimistic liquidation results\",\n env: \"OUT_ENDPOINT\",\n }),\n /**\n * Headers for REST endpoint\n */\n outHeaders: z\n .string()\n .default(\"{}\")\n .transform(CensoredString.transform)\n .register(zommandRegistry, {\n flags: \"--out-headers <headers>\",\n description: \"Headers for REST endpoint\",\n env: \"OUT_HEADERS\",\n }),\n /**\n * s3 bucket to upload json with optimistic liquidation results\n */\n outS3Bucket: z.string().optional().register(zommandRegistry, {\n flags: \"--out-s3-bucket <bucket>\",\n description: \"S3 bucket to upload json with optimistic liquidation results\",\n env: \"OUT_S3_BUCKET\",\n }),\n /**\n * s3 bucket path prefix\n */\n outS3Prefix: z.string().default(\"\").register(zommandRegistry, {\n flags: \"--out-s3-prefix <prefix>\",\n description: \"S3 bucket path prefix\",\n env: \"OUT_S3_PREFIX\",\n }),\n /**\n * Filename of json with optimistic liquidation results for s3 or dir output\n */\n outFileName: z.string().optional().register(zommandRegistry, {\n flags: \"--out-file-name <name>\",\n description:\n \"Filename of json with optimistic liquidation results for s3 or dir output\",\n env: \"OUT_FILE_NAME\",\n }),\n\n /**\n * Notifications, global and per-curator\n */\n ...NotificationsConfig.shape,\n});\n\nexport type CommonSchema = z.infer<typeof CommonSchema>;\n","import { zommandRegistry } from \"@gearbox-protocol/cli-utils\";\nimport { z } from \"zod/v4\";\nimport { CommonSchema } from \"./common.js\";\n\nexport const DeleverageLiquidatorSchema = z.object({\n ...CommonSchema.shape,\n /**\n * Liquidator mode\n */\n liquidationMode: z.literal(\"deleverage\").register(zommandRegistry, {\n flags: \"--liquidation-mode <mode>\",\n description: \"Liquidator mode (full/partial/batch/deleverage)\",\n env: \"LIQUIDATION_MODE\",\n }),\n});\n\nexport type DeleverageLiquidatorSchema = z.infer<\n typeof DeleverageLiquidatorSchema\n>;\n","import { zommandRegistry } from \"@gearbox-protocol/cli-utils\";\nimport { z } from \"zod/v4\";\nimport { CommonSchema } from \"./common.js\";\n\nexport const FullLiquidatorSchema = z\n .object({\n ...CommonSchema.shape,\n /**\n * Liquidator mode\n */\n liquidationMode: z.literal(\"full\").register(zommandRegistry, {\n flags: \"--liquidation-mode <mode>\",\n description: \"Liquidator mode (full/partial/batch/deleverage)\",\n env: \"LIQUIDATION_MODE\",\n }),\n /**\n * Debt policy\n * full - liquidate fully\n * debt-only - try to liquidate only debt\n * debt-expired - try to liquidate only debt for expired accounts\n */\n debtPolicy: z\n .enum([\"full\", \"debt-only\", \"debt-expired\"])\n .default(\"full\")\n .register(zommandRegistry, {\n flags: \"--debt-policy <policy>\",\n description: \"Liquidate fully/debt only/debt only for expired accounts\",\n env: \"DEBT_POLICY\",\n }),\n /**\n * Full-mode liquidation strategy set for this process.\n *\n * Values:\n * - `auto`: production default. Includes loss-policy, normal full, and RWA\n * stablecoin strategies. Routing is decided by account type and\n * per-strategy `isApplicable`: non-RWA accounts use loss policy when they\n * have bad debt and fall back to normal full liquidation otherwise, while\n * RWA accounts use only the RWA stablecoin strategy.\n * - `rwa`: include only `LiquidationStrategyRWAViaStablecoins`\n * Intended for optimistic RWA tracks.\n * - `loss`: include only `LiquidationStrategyLossPolicy`\n * Intended for optimistic loss-policy tracks.\n * - `full`: include only `LiquidationStrategyFull`\n * Intended for optimistic normal-full tracks.\n *\n * Optimistic mode rejects `auto`, so the external runner must invoke\n * explicit tracks: `rwa`, `loss`, and `full`.\n */\n strategy: z\n .enum([\"auto\", \"rwa\", \"loss\", \"full\"])\n .default(\"auto\")\n .register(zommandRegistry, {\n flags: \"--strategy <strategy>\",\n description:\n \"Full-mode liquidation strategy set (auto/rwa/loss/full). Optimistic mode requires an explicit track.\",\n env: \"STRATEGY\",\n }),\n })\n .refine(data => !(data.optimistic === true && data.strategy === \"auto\"), {\n message:\n \"strategy=auto is not allowed in optimistic mode; pick one of rwa/loss/full\",\n });\n\nexport type FullLiquidatorSchema = z.infer<typeof FullLiquidatorSchema>;\n","import {\n boolLike,\n optionalAddressArrayLike,\n zommandRegistry,\n} from \"@gearbox-protocol/cli-utils\";\nimport { z } from \"zod/v4\";\nimport { CommonSchema } from \"./common.js\";\n\nexport const PartialLiquidatorSchema = z\n .object({\n ...CommonSchema.shape,\n /**\n * Liquidator mode\n */\n liquidationMode: z.literal(\"partial\").register(zommandRegistry, {\n flags: \"--liquidation-mode <mode>\",\n description: \"Liquidator mode (full/partial/batch/deleverage)\",\n env: \"LIQUIDATION_MODE\",\n }),\n\n /**\n * Fallback to use full liquidator when partial liquidator fails\n */\n partialFallback: boolLike().optional().register(zommandRegistry, {\n flags: \"--partial-fallback\",\n description:\n \"Fallback to use full liquidator when partial liquidator fails\",\n env: \"PARTIAL_FALLBACK\",\n }),\n\n /**\n * Desired HF after partial liquidation, with 4 decimals (100% = 10000)\n */\n targetPartialHF: z.coerce\n .bigint()\n .default(10100n)\n .register(zommandRegistry, {\n flags: \"--target-partial-hf <hf>\",\n description:\n \"Desired HF after partial liquidation, with 4 decimals (100% = 10000)\",\n env: \"TARGET_PARTIAL_HF\",\n }),\n /**\n * Optimal HF for partial liquidation will be calculated for accounts with following underlying tokens\n * Takes precedence over targetPartialHF\n */\n calculatePartialHF: optionalAddressArrayLike().register(zommandRegistry, {\n flags: \"--calculate-partial-hf <tokens>\",\n description:\n \"Optimal HF for partial liquidation will be calculated for accounts with following underlying tokens\",\n env: \"CALCULATE_PARTIAL_HF\",\n }),\n })\n .refine(\n data => !(data.optimistic === true && data.partialFallback === true),\n { message: \"partialFallback=true is not allowed in optimistic mode\" },\n );\n\nexport type PartialLiquidatorSchema = z.infer<typeof PartialLiquidatorSchema>;\n"],"mappings":"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","names":["z","zommandRegistry","z","z","z","z","zommandRegistry","zommandRegistry","z","z","zommandRegistry","zommandRegistry","z","z","zommandRegistry","boolLike","optionalAddressArrayLike","zommandRegistry","z","z","zommandRegistry","boolLike","optionalAddressArrayLike","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/notifications.ts","../src/schema.ts","../src/batch-liquidator.ts","../src/common.ts","../src/deleverage-liquidator.ts","../src/full-liquidator.ts","../src/partial-liquidator.ts"],"sourcesContent":["import { createPublicClient, type Transport } from \"viem\";\nimport type { CommonSchema } from \"./common.js\";\nimport type { ConfigSchema } from \"./schema.js\";\n\nexport type Config = ConfigSchema & {\n readonly chainId: number;\n readonly startBlock: bigint;\n};\n\nexport type LiqduiatorConfig<TSchema extends CommonSchema> = TSchema & {\n readonly chainId: number;\n readonly startBlock: bigint;\n};\n\nexport class ConfigImplementation {\n #startBlock?: bigint;\n #chainId?: number;\n\n constructor(schema: ConfigSchema) {\n Object.assign(this, schema);\n }\n\n public async initialize(transport: Transport): Promise<void> {\n const client = createPublicClient({\n transport,\n name: \"preload client\",\n });\n\n const [startBlock, chainId] = await Promise.all([\n client.getBlockNumber(),\n client.getChainId(),\n ]);\n\n this.#startBlock = startBlock;\n this.#chainId = chainId;\n }\n\n public get startBlock(): bigint {\n if (this.#startBlock === undefined) {\n throw new Error(\"config not initialized\");\n }\n return this.#startBlock;\n }\n\n public get chainId(): number {\n if (this.#chainId === undefined) {\n throw new Error(\"config not initialized\");\n }\n return this.#chainId;\n }\n}\n","import { NotificationConfig } from \"@gearbox-protocol/cli-utils\";\nimport type { Curator } from \"@gearbox-protocol/sdk\";\nimport { z } from \"zod/v4\";\n\nconst extendedOptions = NotificationConfig.options.map(o =>\n o.extend({\n /**\n * When undefined, defaults to all curators together (aka Gearbox internal)\n */\n curator: z.custom<Curator>(s => typeof s === \"string\").optional(),\n }),\n);\n\nexport const NotificationsConfig = z.object({\n notifications: z\n .array(\n z.discriminatedUnion(\n NotificationConfig.def.discriminator,\n extendedOptions as [\n (typeof extendedOptions)[0],\n ...(typeof extendedOptions)[number][],\n ],\n ),\n )\n .optional()\n .default([]),\n});\n","import { z } from \"zod/v4\";\nimport { BatchLiquidatorSchema } from \"./batch-liquidator.js\";\nimport { DeleverageLiquidatorSchema } from \"./deleverage-liquidator.js\";\nimport { FullLiquidatorSchema } from \"./full-liquidator.js\";\nimport { PartialLiquidatorSchema } from \"./partial-liquidator.js\";\n\nexport const ConfigSchema = z.discriminatedUnion(\"liquidationMode\", [\n FullLiquidatorSchema,\n PartialLiquidatorSchema,\n BatchLiquidatorSchema,\n DeleverageLiquidatorSchema,\n]);\n\nexport type ConfigSchema = z.infer<typeof ConfigSchema>;\n","import { zommandRegistry } from \"@gearbox-protocol/cli-utils\";\nimport { z } from \"zod/v4\";\nimport { CommonSchema } from \"./common.js\";\n\nexport const BatchLiquidatorSchema = z.object({\n ...CommonSchema.shape,\n /**\n * Liquidator mode\n */\n liquidationMode: z.literal(\"batch\").register(zommandRegistry, {\n flags: \"--liquidation-mode <mode>\",\n description: \"Liquidator mode (full/partial/batch/deleverage)\",\n env: \"LIQUIDATION_MODE\",\n }),\n /**\n * Number of accounts to liquidate at once using batch liquidator\n */\n batchSize: z.coerce\n .number()\n .nonnegative()\n .default(10)\n .register(zommandRegistry, {\n flags: \"--batch-size <size>\",\n description:\n \"Number of accounts to liquidate at once using batch liquidator\",\n env: \"BATCH_SIZE\",\n }),\n});\n\nexport type BatchLiquidatorSchema = z.infer<typeof BatchLiquidatorSchema>;\n","import {\n addressLike,\n boolLike,\n CensoredString,\n optionalAddressArrayLike,\n ProvidersSchema,\n stringArrayLike,\n zommandRegistry,\n} from \"@gearbox-protocol/cli-utils\";\nimport { MAX_UINT256, WAD } from \"@gearbox-protocol/sdk\";\nimport { type Hex, isHex } from \"viem\";\nimport { z } from \"zod/v4\";\nimport { NotificationsConfig } from \"./notifications.js\";\n\nexport const CommonSchema = z.object({\n ...ProvidersSchema.shape,\n /**\n * By default uses address provider from @gearbox-protocol/sdk\n * Use this option to override address provider\n */\n addressProvider: addressLike().optional().register(zommandRegistry, {\n flags: \"--address-provider <address>\",\n description:\n \"Address provider override, uses default value from SDK otherwise\",\n env: \"ADDRESS_PROVIDER\",\n }),\n /**\n * Market configurators addresses to attach SDK\n */\n marketConfigurators: optionalAddressArrayLike().register(zommandRegistry, {\n flags: \"--market-configurators <addresses...>\",\n description:\n \"Market configurators to use for the process, comma separated. Uses default value from SDK if not specified\",\n env: \"MARKET_CONFIGURATORS\",\n }),\n /**\n * RWA factories addresses to attach SDK\n */\n rwaFactories: optionalAddressArrayLike().register(zommandRegistry, {\n flags: \"--rwa-factories <addresses...>\",\n description:\n \"RWA factories to use for the process, comma separated. Uses default value from SDK if not specified\",\n env: \"RWA_FACTORIES\",\n }),\n /**\n * App name used in various messages to distinguish instances\n */\n appName: z.string().default(\"liquidator-ts\").register(zommandRegistry, {\n flags: \"--app-name <name>\",\n description: \"App name used in various messages to distinguish instances\",\n env: \"APP_NAME\",\n }),\n /**\n * Port to expose some vital signals and metrics\n */\n port: z.coerce.number().default(4000).register(zommandRegistry, {\n flags: \"--port <port>\",\n description: \"Port to expose some vital signals and metrics\",\n env: \"PORT\",\n }),\n /**\n * Full URL of the whitelist endpoint. Entries can be credit account\n * addresses or credit manager addresses. Only applied in non-optimistic mode.\n */\n whitelistUrl: z.url().optional().register(zommandRegistry, {\n flags: \"--whitelist-url <url>\",\n description:\n \"Full URL of the liquidator whitelist endpoint. Entries are credit account or credit manager addresses. Only applied in non-optimistic mode.\",\n env: \"WHITELIST_URL\",\n }),\n /**\n * Only check this account during local debug session\n */\n debugAccount: addressLike().optional().register(zommandRegistry, {\n flags: \"--debug-account <address>\",\n description: \"Only check this account during local debug session\",\n env: \"DEBUG_ACCOUNT\",\n }),\n /**\n * Only check this credit manager during local debug session\n */\n debugManager: addressLike().optional().register(zommandRegistry, {\n flags: \"--debug-manager <address>\",\n description: \"Only check this credit manager during local debug session\",\n env: \"DEBUG_MANAGER\",\n }),\n /**\n * Path to foundry/cast binary, so that we can create tree-like traces in case of errors\n * Used during optimistic liquidations\n */\n castBin: z.string().optional().register(zommandRegistry, {\n flags: \"--cast-bin <path>\",\n description:\n \"Path to foundry/cast binary, so that we can create tree-like traces in case of errors\",\n env: \"CAST_BIN\",\n }),\n /**\n * Timeout duration passed to `timeout` utility when running cast.\n * If unset, cast runs without a timeout. Accepts any value understood by `timeout(1)` (e.g. `30s`, `1m`).\n */\n castTimeout: z.string().optional().register(zommandRegistry, {\n flags: \"--cast-timeout <duration>\",\n description:\n \"Timeout duration for cast invocations (e.g. 30s, 1m). If unset, cast runs without a timeout.\",\n env: \"CAST_TIMEOUT\",\n }),\n /**\n * Stale block threshold in seconds, to notify and try to rotate rpc provider. 0 means no monitoring\n */\n staleBlockThreshold: z.coerce\n .number()\n .nonnegative()\n .default(120)\n .register(zommandRegistry, {\n flags: \"--stale-block-threshold <threshold>\",\n description:\n \"Stale block threshold in seconds, to notify and try to rotate rpc provider. 0 means no monitoring\",\n env: \"STALE_BLOCK_THRESHOLD\",\n }),\n /**\n * Max block range size for eth_getLogs\n */\n logsPageSize: z.coerce\n .bigint()\n .nonnegative()\n .optional()\n .register(zommandRegistry, {\n flags: \"--logs-page-size <size>\",\n description: \"Max block range size for eth_getLogs\",\n env: \"LOGS_PAGE_SIZE\",\n }),\n /**\n * Polling interval in milliseconds, default to what's default in viem\n */\n pollingInterval: z.coerce\n .number()\n .nonnegative()\n .optional()\n .register(zommandRegistry, {\n flags: \"--polling-interval <interval>\",\n description:\n \"Polling interval in milliseconds, default to what's default in viem\",\n env: \"POLLING_INTERVAL\",\n }),\n /**\n * Private key used to send liquidation transactions\n */\n privateKey: z\n .string()\n .min(1)\n .transform((s): Hex => {\n return isHex(s) ? s : `0x${s}`;\n })\n .transform(CensoredString.transform<Hex>)\n .register(zommandRegistry, {\n flags: \"--private-key <key>\",\n description: \"Private key used to send liquidation transactions\",\n env: \"PRIVATE_KEY\",\n }),\n /**\n * If balance drops before this value - we should send notification\n */\n minBalance: z.coerce\n .bigint()\n .positive()\n .default(500000000000000000n)\n .register(zommandRegistry, {\n flags: \"--min-balance <balance>\",\n description: \"Minimum balance to liquidate\",\n env: \"MIN_BALANCE\",\n }),\n /**\n * Filter out all accounts with HF >= threshold during scan stage\n */\n hfThreshold: z.coerce\n .bigint()\n .nonnegative()\n .max(MAX_UINT256)\n .default(WAD - 1n) // 100% accounts are healthy, and credit account compressors filters by HF <= threshold\n .register(zommandRegistry, {\n flags: \"--hf-threshold <threshold>\",\n description:\n \"Filter out all accounts with HF >= threshold during scan stage\",\n env: \"HF_THRESHOLD\",\n }),\n /**\n * Default numSplits for router v3.1 contract\n */\n numSplits: z.coerce\n .bigint()\n .positive()\n .default(10n)\n .register(zommandRegistry, {\n flags: \"--num-splits <splits>\",\n description: \"Default numSplits for router v3.1 contract\",\n env: \"NUM_SPLITS\",\n }),\n /**\n * Liquidator mode\n */\n liquidationMode: z\n .enum([\"full\", \"partial\", \"batch\", \"deleverage\"])\n .default(\"full\")\n .register(zommandRegistry, {\n flags: \"--liquidation-mode <mode>\",\n description: \"Liquidator mode (full/partial/batch/deleverage)\",\n env: \"LIQUIDATION_MODE\",\n }),\n /**\n * Enable optimistic liquidations\n */\n optimistic: boolLike().optional().register(zommandRegistry, {\n flags: \"--optimistic\",\n description: \"Enable optimistic liquidations\",\n env: \"OPTIMISTIC\",\n }),\n /**\n * In optimistic mode, use real health factor range to scan for accounts\n * and do not force-enable deleverage bot on accounts.\n *\n * This mode can be used to test that deleverage bot is able to detect accounts correctly\n */\n useProductionScanner: boolLike().optional().register(zommandRegistry, {\n flags: \"--use-production-scanner\",\n description:\n \"In optimistic mode, use real health factor range to scan for accounts and do not force-enable deleverage bot on accounts\",\n env: \"USE_PRODUCTION_SCANNER\",\n }),\n /**\n * Optimistic timestamp to pass from external runner, in ms\n */\n optimisticTimestamp: z.coerce\n .number()\n .int()\n .positive()\n .nullish()\n .register(zommandRegistry, {\n flags: \"--optimistic-timestamp <timestamp>\",\n description: \"Optimistic timestamp to pass from external runner, in ms\",\n env: \"OPTIMISTIC_TIMESTAMP\",\n }),\n /**\n * Fail on missing feeds (redstone and pyth)\n */\n failOnMissingFeeds: boolLike().optional().register(zommandRegistry, {\n flags: \"--fail-on-missing-feeds\",\n description: \"Fail on missing feeds (redstone and pyth)\",\n env: \"FAIL_ON_MISSING_FEEDS\",\n }),\n /**\n * Explicitly set gas limit for SDK\n * -1 to disable explicitly setting gas limit in SDK\n * If not set, SDK will use default gas limit\n */\n gasLimit: z.coerce.bigint().optional().register(zommandRegistry, {\n flags: \"--gas-limit <limit>\",\n description: \"Set gas limit for SDK\",\n env: \"GAS_LIMIT\",\n }),\n /**\n * Do not send transactions in non-optimistic mode, just log them\n */\n dryRun: boolLike().optional().register(zommandRegistry, {\n flags: \"--dry-run\",\n description:\n \"Do not send transactions in non-optimistic mode, just log them\",\n env: \"DRY_RUN\",\n }),\n /**\n * Redstone gateways override\n * Set local caching proxies to avoid rate limiting in test environment\n */\n redstoneGateways: stringArrayLike()\n .pipe(z.array(z.url()))\n .transform(a => (a.length ? a : undefined))\n .optional()\n .register(zommandRegistry, {\n flags: \"--redstone-gateways <urls...>\",\n description: \"Redstone gateways to use, comma separated\",\n env: \"REDSTONE_GATEWAYS\",\n }),\n\n /**\n * Limit number of accounts to load from compressor. 0 = unlimited, let compressor decide\n */\n compressorBatchSize: z.coerce\n .number()\n .nonnegative()\n .default(0)\n .register(zommandRegistry, {\n flags: \"--compressor-batch-size <size>\",\n description:\n \"Limit number of accounts to load from compressor. 0 = unlimited, let compressor decide\",\n env: \"COMPRESSOR_BATCH_SIZE\",\n }),\n /**\n * Slippage value for pathfined\n */\n slippage: z.coerce\n .number()\n .min(0)\n .max(10000)\n .int()\n .default(50)\n .register(zommandRegistry, {\n flags: \"--slippage <value>\",\n description: \"Slippage value for pathfinder\",\n env: \"SLIPPAGE\",\n }),\n /**\n * By default, reserve prices are not updated (except for deleverage mode)\n */\n updateReservePrices: boolLike()\n .optional()\n .default(false)\n .register(zommandRegistry, {\n flags: \"--update-reserve-prices\",\n description: \"Update reserve prices\",\n env: \"UPDATE_RESERVE_PRICES\",\n }),\n /**\n * List of assets to keep on account after liquidation\n */\n keepAssets: optionalAddressArrayLike().register(zommandRegistry, {\n flags: \"--keep-assets <assets...>\",\n description: \"List of assets to keep on account after liquidation\",\n env: \"KEEP_ASSETS\",\n }),\n\n /**\n * Directory to save json with optimistic liquidation results\n */\n outDir: z.string().default(\".\").register(zommandRegistry, {\n flags: \"--out-dir <dir>\",\n description: \"Directory to save json with optimistic liquidation results\",\n env: \"OUT_DIR\",\n }),\n /**\n * REST endpoint to POST json with optimistic liquidation results\n */\n outEndpoint: z.url().optional().register(zommandRegistry, {\n flags: \"--out-endpoint <url>\",\n description:\n \"REST endpoint to POST json with optimistic liquidation results\",\n env: \"OUT_ENDPOINT\",\n }),\n /**\n * Headers for REST endpoint\n */\n outHeaders: z\n .string()\n .default(\"{}\")\n .transform(CensoredString.transform)\n .register(zommandRegistry, {\n flags: \"--out-headers <headers>\",\n description: \"Headers for REST endpoint\",\n env: \"OUT_HEADERS\",\n }),\n /**\n * s3 bucket to upload json with optimistic liquidation results\n */\n outS3Bucket: z.string().optional().register(zommandRegistry, {\n flags: \"--out-s3-bucket <bucket>\",\n description: \"S3 bucket to upload json with optimistic liquidation results\",\n env: \"OUT_S3_BUCKET\",\n }),\n /**\n * s3 bucket path prefix\n */\n outS3Prefix: z.string().default(\"\").register(zommandRegistry, {\n flags: \"--out-s3-prefix <prefix>\",\n description: \"S3 bucket path prefix\",\n env: \"OUT_S3_PREFIX\",\n }),\n /**\n * Filename of json with optimistic liquidation results for s3 or dir output\n */\n outFileName: z.string().optional().register(zommandRegistry, {\n flags: \"--out-file-name <name>\",\n description:\n \"Filename of json with optimistic liquidation results for s3 or dir output\",\n env: \"OUT_FILE_NAME\",\n }),\n\n /**\n * Notifications, global and per-curator\n */\n ...NotificationsConfig.shape,\n});\n\nexport type CommonSchema = z.infer<typeof CommonSchema>;\n","import { zommandRegistry } from \"@gearbox-protocol/cli-utils\";\nimport { z } from \"zod/v4\";\nimport { CommonSchema } from \"./common.js\";\n\nexport const DeleverageLiquidatorSchema = z.object({\n ...CommonSchema.shape,\n /**\n * Liquidator mode\n */\n liquidationMode: z.literal(\"deleverage\").register(zommandRegistry, {\n flags: \"--liquidation-mode <mode>\",\n description: \"Liquidator mode (full/partial/batch/deleverage)\",\n env: \"LIQUIDATION_MODE\",\n }),\n});\n\nexport type DeleverageLiquidatorSchema = z.infer<\n typeof DeleverageLiquidatorSchema\n>;\n","import { zommandRegistry } from \"@gearbox-protocol/cli-utils\";\nimport { z } from \"zod/v4\";\nimport { CommonSchema } from \"./common.js\";\n\nexport const FullLiquidatorSchema = z\n .object({\n ...CommonSchema.shape,\n /**\n * Liquidator mode\n */\n liquidationMode: z.literal(\"full\").register(zommandRegistry, {\n flags: \"--liquidation-mode <mode>\",\n description: \"Liquidator mode (full/partial/batch/deleverage)\",\n env: \"LIQUIDATION_MODE\",\n }),\n /**\n * Debt policy\n * full - liquidate fully\n * debt-only - try to liquidate only debt\n * debt-expired - try to liquidate only debt for expired accounts\n */\n debtPolicy: z\n .enum([\"full\", \"debt-only\", \"debt-expired\"])\n .default(\"full\")\n .register(zommandRegistry, {\n flags: \"--debt-policy <policy>\",\n description: \"Liquidate fully/debt only/debt only for expired accounts\",\n env: \"DEBT_POLICY\",\n }),\n /**\n * Full-mode liquidation strategy set for this process.\n *\n * Values:\n * - `auto`: production default. Includes loss-policy, normal full, and RWA\n * stablecoin strategies. Routing is decided by account type and\n * per-strategy `isApplicable`: non-RWA accounts use loss policy when they\n * have bad debt and fall back to normal full liquidation otherwise, while\n * RWA accounts use only the RWA stablecoin strategy.\n * - `rwa`: include only `LiquidationStrategyRWAViaStablecoins`\n * Intended for optimistic RWA tracks.\n * - `loss`: include only `LiquidationStrategyLossPolicy`\n * Intended for optimistic loss-policy tracks.\n * - `full`: include only `LiquidationStrategyFull`\n * Intended for optimistic normal-full tracks.\n *\n * Optimistic mode rejects `auto`, so the external runner must invoke\n * explicit tracks: `rwa`, `loss`, and `full`.\n */\n strategy: z\n .enum([\"auto\", \"rwa\", \"loss\", \"full\"])\n .default(\"auto\")\n .register(zommandRegistry, {\n flags: \"--strategy <strategy>\",\n description:\n \"Full-mode liquidation strategy set (auto/rwa/loss/full). Optimistic mode requires an explicit track.\",\n env: \"STRATEGY\",\n }),\n })\n .refine(data => !(data.optimistic === true && data.strategy === \"auto\"), {\n message:\n \"strategy=auto is not allowed in optimistic mode; pick one of rwa/loss/full\",\n });\n\nexport type FullLiquidatorSchema = z.infer<typeof FullLiquidatorSchema>;\n","import {\n boolLike,\n optionalAddressArrayLike,\n zommandRegistry,\n} from \"@gearbox-protocol/cli-utils\";\nimport { z } from \"zod/v4\";\nimport { CommonSchema } from \"./common.js\";\n\nexport const PartialLiquidatorSchema = z\n .object({\n ...CommonSchema.shape,\n /**\n * Liquidator mode\n */\n liquidationMode: z.literal(\"partial\").register(zommandRegistry, {\n flags: \"--liquidation-mode <mode>\",\n description: \"Liquidator mode (full/partial/batch/deleverage)\",\n env: \"LIQUIDATION_MODE\",\n }),\n\n /**\n * Fallback to use full liquidator when partial liquidator fails\n */\n partialFallback: boolLike().optional().register(zommandRegistry, {\n flags: \"--partial-fallback\",\n description:\n \"Fallback to use full liquidator when partial liquidator fails\",\n env: \"PARTIAL_FALLBACK\",\n }),\n\n /**\n * Desired HF after partial liquidation, with 4 decimals (100% = 10000)\n */\n targetPartialHF: z.coerce\n .bigint()\n .default(10100n)\n .register(zommandRegistry, {\n flags: \"--target-partial-hf <hf>\",\n description:\n \"Desired HF after partial liquidation, with 4 decimals (100% = 10000)\",\n env: \"TARGET_PARTIAL_HF\",\n }),\n /**\n * Optimal HF for partial liquidation will be calculated for accounts with following underlying tokens\n * Takes precedence over targetPartialHF\n */\n calculatePartialHF: optionalAddressArrayLike().register(zommandRegistry, {\n flags: \"--calculate-partial-hf <tokens>\",\n description:\n \"Optimal HF for partial liquidation will be calculated for accounts with following underlying tokens\",\n env: \"CALCULATE_PARTIAL_HF\",\n }),\n })\n .refine(\n data => !(data.optimistic === true && data.partialFallback === true),\n { message: \"partialFallback=true is not allowed in optimistic mode\" },\n );\n\nexport type PartialLiquidatorSchema = z.infer<typeof PartialLiquidatorSchema>;\n"],"mappings":"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","names":["z","zommandRegistry","z","z","z","z","zommandRegistry","zommandRegistry","z","z","zommandRegistry","zommandRegistry","z","z","zommandRegistry","boolLike","optionalAddressArrayLike","zommandRegistry","z","z","zommandRegistry","boolLike","optionalAddressArrayLike","z"]}
|
package/package.json
CHANGED