@gearbox-protocol/sdk 17.13.0-next.6 → 17.13.0-next.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/model/analytics.schema.js +71 -7
- package/dist/cjs/model/index.js +5 -1
- package/dist/cjs/model/liquidations.schema.js +4 -3
- package/dist/cjs/model/opportunities.schema.js +1 -1
- package/dist/cjs/model/positions.schema.js +3 -0
- package/dist/cjs/offchain/analytics/OffchainAnalyticsPositions.js +8 -0
- package/dist/cjs/onchain/accounts/liquidations/LiquidationsService.js +15 -3
- package/dist/cjs/onchain/pools/PoolService.js +1 -0
- package/dist/cjs/onchain/positions/PositionsService.js +1 -0
- package/dist/cjs/onchain/validation/bundles/checkLiquidationEligibility.js +1 -0
- package/dist/cjs/onchain/validation/checks/checkPartiallyLiquidatable.js +1 -1
- package/dist/cjs/sdk/rewards/merkl-api.js +1 -1
- package/dist/cjs/sdk/rewards/turtle-api.js +1 -1
- package/dist/esm/dev/AccountOpener.js +1 -1
- package/dist/esm/dev/withdrawalUtils.js +1 -1
- package/dist/esm/history/trace/extractTransfers.js +1 -1
- package/dist/esm/model/analytics.schema.js +69 -9
- package/dist/esm/model/index.js +3 -3
- package/dist/esm/model/liquidations.schema.js +4 -3
- package/dist/esm/model/opportunities.schema.js +1 -1
- package/dist/esm/model/positions.schema.js +3 -0
- package/dist/esm/offchain/analytics/OffchainAnalyticsPositions.js +9 -1
- package/dist/esm/onchain/accounts/CreditAccountsServiceV310.js +2 -2
- package/dist/esm/onchain/accounts/liquidations/LiquidationsService.js +16 -4
- package/dist/esm/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
- package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
- package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
- package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
- package/dist/esm/onchain/base/TokensMeta.js +3 -3
- package/dist/esm/onchain/core/createAddressProvider.js +1 -1
- package/dist/esm/onchain/market/adapters/contracts/AccountMigratorAdapterContract.js +1 -1
- package/dist/esm/onchain/market/adapters/contracts/ERC4626AdapterContract.js +1 -1
- package/dist/esm/onchain/market/credit/CreditFacadeV310BaseContract.js +1 -1
- package/dist/esm/onchain/market/pool/PoolV310Contract.js +1 -1
- package/dist/esm/onchain/market/rwa/createDegenNFT.js +1 -1
- package/dist/esm/onchain/market/zapper/IETHZapperContract.js +1 -1
- package/dist/esm/onchain/market/zapper/ZapperContract.js +1 -1
- package/dist/esm/onchain/pools/PoolService.js +1 -0
- package/dist/esm/onchain/positions/PositionsService.js +1 -0
- package/dist/esm/onchain/preview/preview/previewPoolPositionOperation.js +2 -2
- package/dist/esm/onchain/utils/viem/simulateWithPriceUpdates.js +1 -1
- package/dist/esm/onchain/validation/bundles/checkLiquidationEligibility.js +1 -0
- package/dist/esm/onchain/validation/checks/checkPartiallyLiquidatable.js +1 -1
- package/dist/esm/sdk/rewards/merkl-api.js +1 -1
- package/dist/esm/sdk/rewards/turtle-api.js +1 -1
- package/dist/types/model/analytics.d.ts +56 -2
- package/dist/types/model/analytics.schema.d.ts +169 -25
- package/dist/types/model/index.d.ts +4 -4
- package/dist/types/model/liquidations.d.ts +14 -5
- package/dist/types/model/liquidations.schema.d.ts +3 -1
- package/dist/types/model/opportunities.d.ts +1 -1
- package/dist/types/model/positions.d.ts +5 -0
- package/dist/types/model/positions.schema.d.ts +80 -0
- package/dist/types/offchain/analytics/OffchainAnalyticsPositions.d.ts +4 -1
- package/dist/types/offchain/analytics/types.d.ts +14 -1
- package/dist/types/onchain/validation/checks/checkPartiallyLiquidatable.d.ts +3 -2
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_onchain_utils_zod = require("../onchain/utils/zod.js");
|
|
3
3
|
const require_model_primitives_schema = require("./primitives.schema.js");
|
|
4
4
|
const require_model_charts_schema = require("./charts.schema.js");
|
|
5
|
+
const require_model_curators_schema = require("./curators.schema.js");
|
|
5
6
|
const require_model_filters = require("./filters.js");
|
|
6
7
|
const require_model_filters_schema = require("./filters.schema.js");
|
|
7
8
|
const require_model_liquidations_schema = require("./liquidations.schema.js");
|
|
@@ -19,17 +20,39 @@ const analyticsPositionSortFieldSchema = zod_v4.z.enum([
|
|
|
19
20
|
"totalValueUsd",
|
|
20
21
|
"totalDebtUsd",
|
|
21
22
|
"pnlUsd",
|
|
22
|
-
"
|
|
23
|
-
"healthFactor",
|
|
24
|
-
"leverage",
|
|
25
|
-
"chainId",
|
|
26
|
-
"name",
|
|
27
|
-
"borrower"
|
|
23
|
+
"healthFactor"
|
|
28
24
|
]);
|
|
29
25
|
/** {@link AnalyticsSortDirection} */
|
|
30
26
|
const analyticsSortDirectionSchema = zod_v4.z.enum(["asc", "desc"]);
|
|
31
27
|
const analyticsOwnerShape = { borrower: require_onchain_utils_zod.ZodAddress() };
|
|
32
28
|
const addressSchema = zod_v4.z.custom((value) => typeof value === "string" && (0, viem.isAddress)(value, { strict: false }));
|
|
29
|
+
const addressParamSchema = zod_v4.z.string().refine((value) => (0, viem.isAddress)(value, { strict: false }), "invalid address");
|
|
30
|
+
/** {@link AnalyticsContractRef} */
|
|
31
|
+
const analyticsContractRefSchema = zod_v4.z.object({
|
|
32
|
+
chainId: require_model_primitives_schema.chainIdSchema,
|
|
33
|
+
address: addressSchema
|
|
34
|
+
});
|
|
35
|
+
const contractFilterSchema = zod_v4.z.union([analyticsContractRefSchema, zod_v4.z.array(analyticsContractRefSchema).readonly()]);
|
|
36
|
+
const contractFilterParamSchema = zod_v4.z.string().regex(/^$|^\d+:\w+(,\d+:\w+)*$/);
|
|
37
|
+
/** Decode comma-separated choices, preserving scalar reads and empty lists. */
|
|
38
|
+
function decodeChoices(param, decode) {
|
|
39
|
+
const choices = param === "" ? [] : param.split(",").map(decode);
|
|
40
|
+
return choices.length === 1 ? choices[0] : choices;
|
|
41
|
+
}
|
|
42
|
+
function encodeChoices(choices, encode) {
|
|
43
|
+
if (choices === void 0) return;
|
|
44
|
+
return [].concat(choices).map(encode).join(",");
|
|
45
|
+
}
|
|
46
|
+
function decodeContractRef(param) {
|
|
47
|
+
const [chainId, address] = param.split(":");
|
|
48
|
+
return {
|
|
49
|
+
chainId: Number(chainId),
|
|
50
|
+
address
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function encodeContractRef(ref) {
|
|
54
|
+
return `${ref.chainId}:${ref.address}`;
|
|
55
|
+
}
|
|
33
56
|
/** {@link AnalyticsPosition} */
|
|
34
57
|
const analyticsPositionSchema = zod_v4.z.discriminatedUnion("kind", [
|
|
35
58
|
zod_v4.z.object({
|
|
@@ -48,6 +71,10 @@ const analyticsPositionSchema = zod_v4.z.discriminatedUnion("kind", [
|
|
|
48
71
|
/** {@link AnalyticsPositionListOptions} */
|
|
49
72
|
const analyticsPositionListOptionsSchema = zod_v4.z.object({
|
|
50
73
|
borrower: addressSchema.optional(),
|
|
74
|
+
pool: contractFilterSchema.optional(),
|
|
75
|
+
creditManager: contractFilterSchema.optional(),
|
|
76
|
+
asset: contractFilterSchema.optional(),
|
|
77
|
+
curator: require_model_filters_schema.filterable(zod_v4.z.union([require_model_curators_schema.curatorNameSchema, zod_v4.z.array(require_model_curators_schema.curatorNameSchema).readonly()])).optional(),
|
|
51
78
|
kind: require_model_filters_schema.filterable(require_model_positions_schema.positionKindSchema).optional(),
|
|
52
79
|
isZeroDebt: require_model_filters_schema.filterable(zod_v4.z.boolean()).optional(),
|
|
53
80
|
chainIds: zod_v4.z.array(require_model_primitives_schema.chainIdSchema).optional(),
|
|
@@ -59,9 +86,16 @@ const analyticsPositionListOptionsSchema = zod_v4.z.object({
|
|
|
59
86
|
});
|
|
60
87
|
/**
|
|
61
88
|
* {@link AnalyticsPositionListOptions} as URL query parameters.
|
|
89
|
+
* Pool, credit manager and asset choices are comma-separated `chainId:address`
|
|
90
|
+
* references; curator choices are comma-separated names. An empty string
|
|
91
|
+
* carries an empty list rather than an unrestricted condition.
|
|
62
92
|
**/
|
|
63
93
|
const analyticsPositionListQueryParamsSchema = zod_v4.z.object({
|
|
64
|
-
borrower:
|
|
94
|
+
borrower: addressParamSchema.optional(),
|
|
95
|
+
pool: contractFilterParamSchema.optional(),
|
|
96
|
+
creditManager: contractFilterParamSchema.optional(),
|
|
97
|
+
asset: contractFilterParamSchema.optional(),
|
|
98
|
+
curator: zod_v4.z.string().optional(),
|
|
65
99
|
kind: require_model_positions_schema.positionKindSchema.optional(),
|
|
66
100
|
isZeroDebt: zod_v4.z.enum(["true", "false"]).optional(),
|
|
67
101
|
chainIds: zod_v4.z.string().regex(/^$|^\d+(,\d+)*$/).optional(),
|
|
@@ -78,6 +112,10 @@ const analyticsPositionListQueryParamsSchema = zod_v4.z.object({
|
|
|
78
112
|
const analyticsPositionListQuerySchema = zod_v4.z.codec(analyticsPositionListQueryParamsSchema, analyticsPositionListOptionsSchema, {
|
|
79
113
|
decode: (params) => ({
|
|
80
114
|
...params.borrower === void 0 ? {} : { borrower: params.borrower },
|
|
115
|
+
...params.pool === void 0 ? {} : { pool: decodeChoices(params.pool, decodeContractRef) },
|
|
116
|
+
...params.creditManager === void 0 ? {} : { creditManager: decodeChoices(params.creditManager, decodeContractRef) },
|
|
117
|
+
...params.asset === void 0 ? {} : { asset: decodeChoices(params.asset, decodeContractRef) },
|
|
118
|
+
...params.curator === void 0 ? {} : { curator: decodeChoices(params.curator, (name) => name) },
|
|
81
119
|
...params.kind === void 0 ? {} : { kind: params.kind },
|
|
82
120
|
...params.isZeroDebt === void 0 ? {} : { isZeroDebt: params.isZeroDebt === "true" },
|
|
83
121
|
...params.chainIds === void 0 ? {} : { chainIds: params.chainIds === "" ? [] : params.chainIds.split(",").map(Number) },
|
|
@@ -89,6 +127,10 @@ const analyticsPositionListQuerySchema = zod_v4.z.codec(analyticsPositionListQue
|
|
|
89
127
|
}),
|
|
90
128
|
encode: (options) => ({
|
|
91
129
|
borrower: options.borrower,
|
|
130
|
+
pool: encodeChoices(options.pool, encodeContractRef),
|
|
131
|
+
creditManager: encodeChoices(options.creditManager, encodeContractRef),
|
|
132
|
+
asset: encodeChoices(options.asset, encodeContractRef),
|
|
133
|
+
curator: require_model_filters.isFilterSet(options.curator) ? encodeChoices(options.curator, (name) => name) : void 0,
|
|
92
134
|
kind: require_model_filters.isFilterSet(options.kind) ? options.kind : void 0,
|
|
93
135
|
isZeroDebt: require_model_filters_schema.encodeFlag(options.isZeroDebt),
|
|
94
136
|
chainIds: options.chainIds?.join(","),
|
|
@@ -106,6 +148,24 @@ const analyticsPositionPageSchema = zod_v4.z.object({
|
|
|
106
148
|
offset: zod_v4.z.number().int().nonnegative(),
|
|
107
149
|
limit: zod_v4.z.number().int().positive().max(100)
|
|
108
150
|
});
|
|
151
|
+
/** {@link AnalyticsContractOption} */
|
|
152
|
+
const analyticsContractOptionSchema = zod_v4.z.object({
|
|
153
|
+
chainId: require_model_primitives_schema.chainIdSchema,
|
|
154
|
+
address: require_onchain_utils_zod.ZodAddress(),
|
|
155
|
+
name: zod_v4.z.string()
|
|
156
|
+
});
|
|
157
|
+
/** {@link AnalyticsPositionFilterOptions} */
|
|
158
|
+
const analyticsPositionFilterOptionsSchema = zod_v4.z.object({
|
|
159
|
+
pools: zod_v4.z.array(analyticsContractOptionSchema),
|
|
160
|
+
creditManagers: zod_v4.z.array(analyticsContractOptionSchema),
|
|
161
|
+
assets: zod_v4.z.array(require_model_primitives_schema.tokenSchema),
|
|
162
|
+
curators: zod_v4.z.array(require_model_curators_schema.curatorNameSchema)
|
|
163
|
+
});
|
|
164
|
+
/** Chain scope of a filter-options read, shared by the client and backend. */
|
|
165
|
+
const analyticsPositionFilterOptionsQuerySchema = zod_v4.z.codec(analyticsPositionListQueryParamsSchema.pick({ chainIds: true }), analyticsPositionListOptionsSchema.pick({ chainIds: true }), {
|
|
166
|
+
decode: (params) => params.chainIds === void 0 ? {} : { chainIds: params.chainIds === "" ? [] : params.chainIds.split(",").map(Number) },
|
|
167
|
+
encode: (filter) => ({ chainIds: filter.chainIds?.join(",") })
|
|
168
|
+
});
|
|
109
169
|
/**
|
|
110
170
|
* {@link AnalyticsChartQuery}
|
|
111
171
|
*
|
|
@@ -151,6 +211,10 @@ exports.ANALYTICS_POSITIONS_MAX_LIMIT = ANALYTICS_POSITIONS_MAX_LIMIT;
|
|
|
151
211
|
exports.analyticsChartQueryOptionsSchema = analyticsChartQueryOptionsSchema;
|
|
152
212
|
exports.analyticsChartQueryParamsSchema = analyticsChartQueryParamsSchema;
|
|
153
213
|
exports.analyticsChartQuerySchema = analyticsChartQuerySchema;
|
|
214
|
+
exports.analyticsContractOptionSchema = analyticsContractOptionSchema;
|
|
215
|
+
exports.analyticsContractRefSchema = analyticsContractRefSchema;
|
|
216
|
+
exports.analyticsPositionFilterOptionsQuerySchema = analyticsPositionFilterOptionsQuerySchema;
|
|
217
|
+
exports.analyticsPositionFilterOptionsSchema = analyticsPositionFilterOptionsSchema;
|
|
154
218
|
exports.analyticsPositionListOptionsSchema = analyticsPositionListOptionsSchema;
|
|
155
219
|
exports.analyticsPositionListQueryParamsSchema = analyticsPositionListQueryParamsSchema;
|
|
156
220
|
exports.analyticsPositionListQuerySchema = analyticsPositionListQuerySchema;
|
package/dist/cjs/model/index.js
CHANGED
|
@@ -4,9 +4,9 @@ const require_model_charts = require("./charts.js");
|
|
|
4
4
|
const require_model_compare_schema = require("./compare.schema.js");
|
|
5
5
|
const require_model_primitives_schema = require("./primitives.schema.js");
|
|
6
6
|
const require_model_charts_schema = require("./charts.schema.js");
|
|
7
|
+
const require_model_curators_schema = require("./curators.schema.js");
|
|
7
8
|
const require_model_filters = require("./filters.js");
|
|
8
9
|
const require_model_filters_schema = require("./filters.schema.js");
|
|
9
|
-
const require_model_curators_schema = require("./curators.schema.js");
|
|
10
10
|
const require_model_liquidations_schema = require("./liquidations.schema.js");
|
|
11
11
|
const require_model_rwa = require("./rwa.js");
|
|
12
12
|
const require_model_rwa_schema = require("./rwa.schema.js");
|
|
@@ -56,6 +56,10 @@ exports.amountSchema = require_model_primitives_schema.amountSchema;
|
|
|
56
56
|
exports.analyticsChartQueryOptionsSchema = require_model_analytics_schema.analyticsChartQueryOptionsSchema;
|
|
57
57
|
exports.analyticsChartQueryParamsSchema = require_model_analytics_schema.analyticsChartQueryParamsSchema;
|
|
58
58
|
exports.analyticsChartQuerySchema = require_model_analytics_schema.analyticsChartQuerySchema;
|
|
59
|
+
exports.analyticsContractOptionSchema = require_model_analytics_schema.analyticsContractOptionSchema;
|
|
60
|
+
exports.analyticsContractRefSchema = require_model_analytics_schema.analyticsContractRefSchema;
|
|
61
|
+
exports.analyticsPositionFilterOptionsQuerySchema = require_model_analytics_schema.analyticsPositionFilterOptionsQuerySchema;
|
|
62
|
+
exports.analyticsPositionFilterOptionsSchema = require_model_analytics_schema.analyticsPositionFilterOptionsSchema;
|
|
59
63
|
exports.analyticsPositionListOptionsSchema = require_model_analytics_schema.analyticsPositionListOptionsSchema;
|
|
60
64
|
exports.analyticsPositionListQueryParamsSchema = require_model_analytics_schema.analyticsPositionListQueryParamsSchema;
|
|
61
65
|
exports.analyticsPositionListQuerySchema = require_model_analytics_schema.analyticsPositionListQuerySchema;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_onchain_utils_zod = require("../onchain/utils/zod.js");
|
|
3
3
|
const require_model_primitives_schema = require("./primitives.schema.js");
|
|
4
|
-
const require_model_filters_schema = require("./filters.schema.js");
|
|
5
4
|
const require_model_curators_schema = require("./curators.schema.js");
|
|
5
|
+
const require_model_filters_schema = require("./filters.schema.js");
|
|
6
6
|
let zod_v4 = require("zod/v4");
|
|
7
7
|
//#region src/model/liquidations.schema.ts
|
|
8
8
|
/**
|
|
@@ -36,7 +36,8 @@ const liquidatableAccountSchema = zod_v4.z.object({
|
|
|
36
36
|
estimatedProfit: require_model_primitives_schema.tokenAmountSchema,
|
|
37
37
|
isDelayed: zod_v4.z.boolean(),
|
|
38
38
|
paused: zod_v4.z.boolean(),
|
|
39
|
-
rwa: zod_v4.z.boolean()
|
|
39
|
+
rwa: zod_v4.z.boolean(),
|
|
40
|
+
isPartiallyLiquidatable: zod_v4.z.boolean()
|
|
40
41
|
});
|
|
41
42
|
/**
|
|
42
43
|
* {@link InstantReceivedAsset}
|
|
@@ -87,7 +88,7 @@ const liquidationDetailsSchema = zod_v4.z.object({
|
|
|
87
88
|
kycProtocol: zod_v4.z.string().optional(),
|
|
88
89
|
kycToken: require_model_primitives_schema.tokenSchema.optional(),
|
|
89
90
|
approve: liquidationApprovalSchema.optional(),
|
|
90
|
-
|
|
91
|
+
isPartial: zod_v4.z.boolean()
|
|
91
92
|
});
|
|
92
93
|
//#endregion
|
|
93
94
|
exports.delayedReceivedAssetSchema = delayedReceivedAssetSchema;
|
|
@@ -2,9 +2,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_onchain_utils_zod = require("../onchain/utils/zod.js");
|
|
3
3
|
const require_model_compare_schema = require("./compare.schema.js");
|
|
4
4
|
const require_model_primitives_schema = require("./primitives.schema.js");
|
|
5
|
+
const require_model_curators_schema = require("./curators.schema.js");
|
|
5
6
|
const require_model_filters = require("./filters.js");
|
|
6
7
|
const require_model_filters_schema = require("./filters.schema.js");
|
|
7
|
-
const require_model_curators_schema = require("./curators.schema.js");
|
|
8
8
|
const require_model_rwa_schema = require("./rwa.schema.js");
|
|
9
9
|
let zod_v4 = require("zod/v4");
|
|
10
10
|
//#region src/model/opportunities.schema.ts
|
|
@@ -2,6 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_onchain_utils_zod = require("../onchain/utils/zod.js");
|
|
3
3
|
const require_model_compare_schema = require("./compare.schema.js");
|
|
4
4
|
const require_model_primitives_schema = require("./primitives.schema.js");
|
|
5
|
+
const require_model_curators_schema = require("./curators.schema.js");
|
|
5
6
|
const require_model_filters = require("./filters.js");
|
|
6
7
|
const require_model_filters_schema = require("./filters.schema.js");
|
|
7
8
|
const require_model_liquidations_schema = require("./liquidations.schema.js");
|
|
@@ -67,6 +68,7 @@ const positionCollateralSchema = zod_v4.z.object({
|
|
|
67
68
|
const poolPositionSchema = zod_v4.z.object({
|
|
68
69
|
kind: zod_v4.z.literal("pool"),
|
|
69
70
|
name: zod_v4.z.string(),
|
|
71
|
+
curator: require_model_curators_schema.curatorSchema,
|
|
70
72
|
chainId: require_model_primitives_schema.chainIdSchema,
|
|
71
73
|
pool: require_onchain_utils_zod.ZodAddress(),
|
|
72
74
|
underlyingToken: require_model_primitives_schema.underlyingTokenSchema,
|
|
@@ -97,6 +99,7 @@ const borrowRateBreakdownSchema = zod_v4.z.object({
|
|
|
97
99
|
const strategyPositionSchema = zod_v4.z.object({
|
|
98
100
|
kind: zod_v4.z.literal("strategy"),
|
|
99
101
|
name: require_model_compare_schema.backendPreferred(zod_v4.z.string()),
|
|
102
|
+
curator: require_model_curators_schema.curatorSchema,
|
|
100
103
|
chainId: require_model_primitives_schema.chainIdSchema,
|
|
101
104
|
creditManager: require_onchain_utils_zod.ZodAddress(),
|
|
102
105
|
creditAccount: require_onchain_utils_zod.ZodAddress(),
|
|
@@ -8,6 +8,14 @@ var OffchainAnalyticsPositions = class extends require_offchain_AbstractOffchain
|
|
|
8
8
|
constructor(options) {
|
|
9
9
|
super("OffchainAnalyticsPositions", options);
|
|
10
10
|
}
|
|
11
|
+
/** {@inheritDoc IOffchainAnalyticsPositions.filterOptions} */
|
|
12
|
+
async filterOptions(filter) {
|
|
13
|
+
return this.get({
|
|
14
|
+
path: "/v2/analytics/positions/filter-options",
|
|
15
|
+
query: zod_v4.z.encode(require_model_analytics_schema.analyticsPositionFilterOptionsQuerySchema, { chainIds: this.scopedChainIds(filter) }),
|
|
16
|
+
schema: require_model_analytics_schema.analyticsPositionFilterOptionsSchema
|
|
17
|
+
});
|
|
18
|
+
}
|
|
11
19
|
/** {@inheritDoc IOffchainAnalyticsPositions.list} */
|
|
12
20
|
async list(options) {
|
|
13
21
|
return this.get({
|
|
@@ -71,7 +71,8 @@ var LiquidationsService = class extends require_onchain_base_SDKConstruct.SDKCon
|
|
|
71
71
|
isCreditAccountFrozen: data.isCreditAccountFrozen,
|
|
72
72
|
kycProtocol: data.kycProtocol || void 0,
|
|
73
73
|
kycToken: require_onchain_utils_hex.hexEq(data.kycToken, "0x0000000000000000000000000000000000000000") ? void 0 : this.sdk.tokensMeta.getToken(data.kycToken),
|
|
74
|
-
approve: this.#liquidationApproval(data, suite, priceOracle)
|
|
74
|
+
approve: this.#liquidationApproval(data, suite, priceOracle),
|
|
75
|
+
isPartial: false
|
|
75
76
|
};
|
|
76
77
|
}
|
|
77
78
|
/**
|
|
@@ -152,7 +153,8 @@ var LiquidationsService = class extends require_onchain_base_SDKConstruct.SDKCon
|
|
|
152
153
|
spender: suite.creditManager.address,
|
|
153
154
|
...priceOracle.toTokenAmount(underlying, repaidAmount * (require_onchain_constants_math.PERCENTAGE_FACTOR + require_onchain_accounts_liquidations_constants.LIQUIDATION_APPROVAL_BUFFER) / require_onchain_constants_math.PERCENTAGE_FACTOR)
|
|
154
155
|
},
|
|
155
|
-
isPartiallyLiquidatable
|
|
156
|
+
isPartiallyLiquidatable,
|
|
157
|
+
isPartial: true
|
|
156
158
|
};
|
|
157
159
|
}
|
|
158
160
|
/**
|
|
@@ -419,9 +421,19 @@ var LiquidationsService = class extends require_onchain_base_SDKConstruct.SDKCon
|
|
|
419
421
|
},
|
|
420
422
|
isDelayed: ca.tokens.some((t) => t.balance > 10n && this.#isWithdrawalPhantom(t.token)),
|
|
421
423
|
paused: suite.creditFacade.isPaused,
|
|
422
|
-
rwa: market.rwa
|
|
424
|
+
rwa: market.rwa,
|
|
425
|
+
isPartiallyLiquidatable: this.#isPartiallyLiquidatable(ca, suite)
|
|
423
426
|
};
|
|
424
427
|
}
|
|
428
|
+
#isPartiallyLiquidatable(ca, suite) {
|
|
429
|
+
if (suite.market.rwa) return false;
|
|
430
|
+
try {
|
|
431
|
+
return this.#getPartialLiquidationParams(ca, suite, {}).isPartiallyLiquidatable;
|
|
432
|
+
} catch (e) {
|
|
433
|
+
this.logger?.debug(e, `credit account ${this.labelAddress(ca.creditAccount)} cannot be partially liquidated`);
|
|
434
|
+
return false;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
425
437
|
#isWithdrawalPhantom(token) {
|
|
426
438
|
return !!this.sdk.withdrawalCompressor?.getWithdrawalSourceToken(token);
|
|
427
439
|
}
|
|
@@ -398,6 +398,7 @@ var PoolService = class extends require_onchain_base_SDKConstruct.SDKConstruct {
|
|
|
398
398
|
return {
|
|
399
399
|
kind: "pool",
|
|
400
400
|
name: this.sdk.tokensMeta.mustGetToken(pool.address).name,
|
|
401
|
+
curator: market.curator,
|
|
401
402
|
chainId: this.chainId,
|
|
402
403
|
pool: pool.address,
|
|
403
404
|
underlyingToken: market.underlyingToken,
|
|
@@ -315,6 +315,7 @@ var PositionsService = class extends require_onchain_base_SDKConstruct.SDKConstr
|
|
|
315
315
|
creditAccount: ca.creditAccount,
|
|
316
316
|
underlyingToken: token,
|
|
317
317
|
name: suite.accountStrategyName(ca.creditAccount),
|
|
318
|
+
curator: market.curator,
|
|
318
319
|
targetCollateral: suite.accountTargetCollateral(ca.creditAccount),
|
|
319
320
|
leverage: require_onchain_market_math.calcPositionLeverage(totalValue, totalDebtValue),
|
|
320
321
|
borrowApy: require_onchain_market_math.calcBorrowApy(pool.baseInterestRate, suite.creditManager.feeInterest),
|
|
@@ -19,6 +19,7 @@ function checkLiquidationEligibility(input) {
|
|
|
19
19
|
creditAccount: details.creditAccount
|
|
20
20
|
}),
|
|
21
21
|
...require_onchain_validation_checks_checkPartiallyLiquidatable.checkPartiallyLiquidatable({
|
|
22
|
+
isPartial: details.isPartial,
|
|
22
23
|
partiallyLiquidatable: details.isPartiallyLiquidatable,
|
|
23
24
|
creditAccount: details.creditAccount
|
|
24
25
|
}),
|
|
@@ -7,7 +7,7 @@ require("../../../model/index.js");
|
|
|
7
7
|
* leaving less than the minimum debt is refused.
|
|
8
8
|
*/
|
|
9
9
|
function checkPartiallyLiquidatable(args) {
|
|
10
|
-
return args.
|
|
10
|
+
return args.isPartial && !args.partiallyLiquidatable ? [require_model_errors_liquidation_errors.partialLiquidationImpossible(args.creditAccount)] : [];
|
|
11
11
|
}
|
|
12
12
|
//#endregion
|
|
13
13
|
exports.checkPartiallyLiquidatable = checkPartiallyLiquidatable;
|
|
@@ -7,7 +7,7 @@ const MERKL_API_KEY_HEADER = "X-API-Key";
|
|
|
7
7
|
* Merkl has no timeout of its own, and a hung connection would otherwise stall
|
|
8
8
|
* its leg of a fan-out for as long as the socket lives.
|
|
9
9
|
*/
|
|
10
|
-
const TIMEOUT =
|
|
10
|
+
const TIMEOUT = 3e4;
|
|
11
11
|
/**
|
|
12
12
|
* The wallet's raw Merkl rewards on one chain.
|
|
13
13
|
*
|
|
@@ -3,7 +3,7 @@ const require_sdk_rewards_errors = require("./errors.js");
|
|
|
3
3
|
//#region src/sdk/rewards/turtle-api.ts
|
|
4
4
|
const TURTLE_API_URL = "https://earn.turtle.xyz";
|
|
5
5
|
const GEARBOX_ORG_ID = "d171ba3d-ff89-4e6c-8f13-d94840b06edd";
|
|
6
|
-
const TIMEOUT =
|
|
6
|
+
const TIMEOUT = 3e4;
|
|
7
7
|
const turtleStreamAbi = [{
|
|
8
8
|
type: "function",
|
|
9
9
|
name: "getClaimedRewards",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { iCreditFacadeV310Abi } from "../abi/310/generated.js";
|
|
2
1
|
import { ierc20Abi } from "../abi/iERC20.js";
|
|
2
|
+
import { iCreditFacadeV310Abi } from "../abi/310/generated.js";
|
|
3
3
|
import { AddressMap } from "../onchain/utils/AddressMap.js";
|
|
4
4
|
import { AddressSet } from "../onchain/utils/AddressSet.js";
|
|
5
5
|
import { AssetsMap } from "../onchain/utils/AssetsMap.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { iWithdrawalCompressorV313Abi } from "../abi/IWithdrawalCompressorV313.js";
|
|
1
2
|
import { getNetworkType } from "../onchain/chain/chains.js";
|
|
2
3
|
import { getWithdrawalCompressorAddress } from "../onchain/accounts/withdrawal-compressor/addresses.js";
|
|
3
|
-
import { iWithdrawalCompressorV313Abi } from "../abi/IWithdrawalCompressorV313.js";
|
|
4
4
|
import "../onchain/index.js";
|
|
5
5
|
import { iMidasDataFeedAbi, iMidasRedemptionVaultAbi, midasGatewayAbi, midasRedeemerAbi, midasRedemptionVaultPhantomTokenAbi, securitizeRedeemerAbi, securitizeRedemptionGatewayAbi, securitizeRedemptionPhantomTokenAbi } from "./withdrawalAbi.js";
|
|
6
6
|
import { erc20Abi, hexToString, parseAbi, parseEther } from "viem";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { iCreditFacadeV310Abi } from "../../abi/310/generated.js";
|
|
2
1
|
import { ierc20Abi } from "../../abi/iERC20.js";
|
|
2
|
+
import { iCreditFacadeV310Abi } from "../../abi/310/generated.js";
|
|
3
3
|
import { AddressMap } from "../../onchain/utils/AddressMap.js";
|
|
4
4
|
import "../../onchain/index.js";
|
|
5
5
|
import { UnexpectedFacadeEventOrderError } from "./errors.js";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ZodAddress } from "../onchain/utils/zod.js";
|
|
2
|
-
import { assetTypeSchema, chainIdSchema } from "./primitives.schema.js";
|
|
2
|
+
import { assetTypeSchema, chainIdSchema, tokenSchema } from "./primitives.schema.js";
|
|
3
3
|
import { chartRangeSchema, protocolChartMetricSchema } from "./charts.schema.js";
|
|
4
|
+
import { curatorNameSchema } from "./curators.schema.js";
|
|
4
5
|
import { isFilterSet } from "./filters.js";
|
|
5
6
|
import { encodeFlag, filterable } from "./filters.schema.js";
|
|
6
7
|
import { liquidationPositionSchema } from "./liquidations.schema.js";
|
|
@@ -18,17 +19,39 @@ const analyticsPositionSortFieldSchema = z.enum([
|
|
|
18
19
|
"totalValueUsd",
|
|
19
20
|
"totalDebtUsd",
|
|
20
21
|
"pnlUsd",
|
|
21
|
-
"
|
|
22
|
-
"healthFactor",
|
|
23
|
-
"leverage",
|
|
24
|
-
"chainId",
|
|
25
|
-
"name",
|
|
26
|
-
"borrower"
|
|
22
|
+
"healthFactor"
|
|
27
23
|
]);
|
|
28
24
|
/** {@link AnalyticsSortDirection} */
|
|
29
25
|
const analyticsSortDirectionSchema = z.enum(["asc", "desc"]);
|
|
30
26
|
const analyticsOwnerShape = { borrower: ZodAddress() };
|
|
31
27
|
const addressSchema = z.custom((value) => typeof value === "string" && isAddress(value, { strict: false }));
|
|
28
|
+
const addressParamSchema = z.string().refine((value) => isAddress(value, { strict: false }), "invalid address");
|
|
29
|
+
/** {@link AnalyticsContractRef} */
|
|
30
|
+
const analyticsContractRefSchema = z.object({
|
|
31
|
+
chainId: chainIdSchema,
|
|
32
|
+
address: addressSchema
|
|
33
|
+
});
|
|
34
|
+
const contractFilterSchema = z.union([analyticsContractRefSchema, z.array(analyticsContractRefSchema).readonly()]);
|
|
35
|
+
const contractFilterParamSchema = z.string().regex(/^$|^\d+:\w+(,\d+:\w+)*$/);
|
|
36
|
+
/** Decode comma-separated choices, preserving scalar reads and empty lists. */
|
|
37
|
+
function decodeChoices(param, decode) {
|
|
38
|
+
const choices = param === "" ? [] : param.split(",").map(decode);
|
|
39
|
+
return choices.length === 1 ? choices[0] : choices;
|
|
40
|
+
}
|
|
41
|
+
function encodeChoices(choices, encode) {
|
|
42
|
+
if (choices === void 0) return;
|
|
43
|
+
return [].concat(choices).map(encode).join(",");
|
|
44
|
+
}
|
|
45
|
+
function decodeContractRef(param) {
|
|
46
|
+
const [chainId, address] = param.split(":");
|
|
47
|
+
return {
|
|
48
|
+
chainId: Number(chainId),
|
|
49
|
+
address
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function encodeContractRef(ref) {
|
|
53
|
+
return `${ref.chainId}:${ref.address}`;
|
|
54
|
+
}
|
|
32
55
|
/** {@link AnalyticsPosition} */
|
|
33
56
|
const analyticsPositionSchema = z.discriminatedUnion("kind", [
|
|
34
57
|
z.object({
|
|
@@ -47,6 +70,10 @@ const analyticsPositionSchema = z.discriminatedUnion("kind", [
|
|
|
47
70
|
/** {@link AnalyticsPositionListOptions} */
|
|
48
71
|
const analyticsPositionListOptionsSchema = z.object({
|
|
49
72
|
borrower: addressSchema.optional(),
|
|
73
|
+
pool: contractFilterSchema.optional(),
|
|
74
|
+
creditManager: contractFilterSchema.optional(),
|
|
75
|
+
asset: contractFilterSchema.optional(),
|
|
76
|
+
curator: filterable(z.union([curatorNameSchema, z.array(curatorNameSchema).readonly()])).optional(),
|
|
50
77
|
kind: filterable(positionKindSchema).optional(),
|
|
51
78
|
isZeroDebt: filterable(z.boolean()).optional(),
|
|
52
79
|
chainIds: z.array(chainIdSchema).optional(),
|
|
@@ -58,9 +85,16 @@ const analyticsPositionListOptionsSchema = z.object({
|
|
|
58
85
|
});
|
|
59
86
|
/**
|
|
60
87
|
* {@link AnalyticsPositionListOptions} as URL query parameters.
|
|
88
|
+
* Pool, credit manager and asset choices are comma-separated `chainId:address`
|
|
89
|
+
* references; curator choices are comma-separated names. An empty string
|
|
90
|
+
* carries an empty list rather than an unrestricted condition.
|
|
61
91
|
**/
|
|
62
92
|
const analyticsPositionListQueryParamsSchema = z.object({
|
|
63
|
-
borrower:
|
|
93
|
+
borrower: addressParamSchema.optional(),
|
|
94
|
+
pool: contractFilterParamSchema.optional(),
|
|
95
|
+
creditManager: contractFilterParamSchema.optional(),
|
|
96
|
+
asset: contractFilterParamSchema.optional(),
|
|
97
|
+
curator: z.string().optional(),
|
|
64
98
|
kind: positionKindSchema.optional(),
|
|
65
99
|
isZeroDebt: z.enum(["true", "false"]).optional(),
|
|
66
100
|
chainIds: z.string().regex(/^$|^\d+(,\d+)*$/).optional(),
|
|
@@ -77,6 +111,10 @@ const analyticsPositionListQueryParamsSchema = z.object({
|
|
|
77
111
|
const analyticsPositionListQuerySchema = z.codec(analyticsPositionListQueryParamsSchema, analyticsPositionListOptionsSchema, {
|
|
78
112
|
decode: (params) => ({
|
|
79
113
|
...params.borrower === void 0 ? {} : { borrower: params.borrower },
|
|
114
|
+
...params.pool === void 0 ? {} : { pool: decodeChoices(params.pool, decodeContractRef) },
|
|
115
|
+
...params.creditManager === void 0 ? {} : { creditManager: decodeChoices(params.creditManager, decodeContractRef) },
|
|
116
|
+
...params.asset === void 0 ? {} : { asset: decodeChoices(params.asset, decodeContractRef) },
|
|
117
|
+
...params.curator === void 0 ? {} : { curator: decodeChoices(params.curator, (name) => name) },
|
|
80
118
|
...params.kind === void 0 ? {} : { kind: params.kind },
|
|
81
119
|
...params.isZeroDebt === void 0 ? {} : { isZeroDebt: params.isZeroDebt === "true" },
|
|
82
120
|
...params.chainIds === void 0 ? {} : { chainIds: params.chainIds === "" ? [] : params.chainIds.split(",").map(Number) },
|
|
@@ -88,6 +126,10 @@ const analyticsPositionListQuerySchema = z.codec(analyticsPositionListQueryParam
|
|
|
88
126
|
}),
|
|
89
127
|
encode: (options) => ({
|
|
90
128
|
borrower: options.borrower,
|
|
129
|
+
pool: encodeChoices(options.pool, encodeContractRef),
|
|
130
|
+
creditManager: encodeChoices(options.creditManager, encodeContractRef),
|
|
131
|
+
asset: encodeChoices(options.asset, encodeContractRef),
|
|
132
|
+
curator: isFilterSet(options.curator) ? encodeChoices(options.curator, (name) => name) : void 0,
|
|
91
133
|
kind: isFilterSet(options.kind) ? options.kind : void 0,
|
|
92
134
|
isZeroDebt: encodeFlag(options.isZeroDebt),
|
|
93
135
|
chainIds: options.chainIds?.join(","),
|
|
@@ -105,6 +147,24 @@ const analyticsPositionPageSchema = z.object({
|
|
|
105
147
|
offset: z.number().int().nonnegative(),
|
|
106
148
|
limit: z.number().int().positive().max(100)
|
|
107
149
|
});
|
|
150
|
+
/** {@link AnalyticsContractOption} */
|
|
151
|
+
const analyticsContractOptionSchema = z.object({
|
|
152
|
+
chainId: chainIdSchema,
|
|
153
|
+
address: ZodAddress(),
|
|
154
|
+
name: z.string()
|
|
155
|
+
});
|
|
156
|
+
/** {@link AnalyticsPositionFilterOptions} */
|
|
157
|
+
const analyticsPositionFilterOptionsSchema = z.object({
|
|
158
|
+
pools: z.array(analyticsContractOptionSchema),
|
|
159
|
+
creditManagers: z.array(analyticsContractOptionSchema),
|
|
160
|
+
assets: z.array(tokenSchema),
|
|
161
|
+
curators: z.array(curatorNameSchema)
|
|
162
|
+
});
|
|
163
|
+
/** Chain scope of a filter-options read, shared by the client and backend. */
|
|
164
|
+
const analyticsPositionFilterOptionsQuerySchema = z.codec(analyticsPositionListQueryParamsSchema.pick({ chainIds: true }), analyticsPositionListOptionsSchema.pick({ chainIds: true }), {
|
|
165
|
+
decode: (params) => params.chainIds === void 0 ? {} : { chainIds: params.chainIds === "" ? [] : params.chainIds.split(",").map(Number) },
|
|
166
|
+
encode: (filter) => ({ chainIds: filter.chainIds?.join(",") })
|
|
167
|
+
});
|
|
108
168
|
/**
|
|
109
169
|
* {@link AnalyticsChartQuery}
|
|
110
170
|
*
|
|
@@ -145,4 +205,4 @@ const analyticsChartQuerySchema = z.codec(analyticsChartQueryParamsSchema, analy
|
|
|
145
205
|
})
|
|
146
206
|
});
|
|
147
207
|
//#endregion
|
|
148
|
-
export { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, analyticsChartQueryOptionsSchema, analyticsChartQueryParamsSchema, analyticsChartQuerySchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema };
|
|
208
|
+
export { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, analyticsChartQueryOptionsSchema, analyticsChartQueryParamsSchema, analyticsChartQuerySchema, analyticsContractOptionSchema, analyticsContractRefSchema, analyticsPositionFilterOptionsQuerySchema, analyticsPositionFilterOptionsSchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema };
|
package/dist/esm/model/index.js
CHANGED
|
@@ -3,15 +3,15 @@ import { CHART_METRIC_UNITS, CHART_RANGES, CHART_UNAVAILABLE_CODES, POOL_OPPORTU
|
|
|
3
3
|
import { backendPreferred, compareTagOf, offchainOnly, onchainOnly, tolerance } from "./compare.schema.js";
|
|
4
4
|
import { amountSchema, assetTypeSchema, bpsSchema, chainIdSchema, leverageSchema, timestampSchema, tokenAmountSchema, tokenSchema, txCallSchema, underlyingTokenSchema } from "./primitives.schema.js";
|
|
5
5
|
import { chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, poolOpportunityChartMetricSchema, poolPositionChartMetricSchema, protocolChartMetricSchema, strategyOpportunityChartMetricSchema, strategyPositionChartMetricSchema } from "./charts.schema.js";
|
|
6
|
+
import { curatorNameSchema, curatorSchema } from "./curators.schema.js";
|
|
6
7
|
import { FILTER_ALL, isFilterSet } from "./filters.js";
|
|
7
8
|
import { booleanParamSchema, encodeFlag, filterAllSchema, filterable } from "./filters.schema.js";
|
|
8
|
-
import { curatorNameSchema, curatorSchema } from "./curators.schema.js";
|
|
9
9
|
import { delayedReceivedAssetSchema, instantReceivedAssetSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionSchema, receivedAssetSchema } from "./liquidations.schema.js";
|
|
10
10
|
import { KYC_REGISTRATION_LINKS, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_PROTOCOLS, SECURITIZE_REGISTER_VAULT_TYPES } from "./rwa.js";
|
|
11
11
|
import { kycRequirementSchema, rwaProtocolSchema } from "./rwa.schema.js";
|
|
12
12
|
import { apyBreakdownSchema, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterQueryParamsSchema, opportunityFilterQuerySchema, opportunityFilterSchema, opportunityKeySchema, opportunityKindSchema, opportunitySchema, opportunityTotalsSchema, pointRewardsSchema, pointsProgramSchema, poolOpportunityDetailSchema, poolOpportunityKeySchema, poolOpportunitySchema, priceFeedDataSchema, priceFeedSummarySchema, quotaAssetSchema, rateCurvePointSchema, rateCurveSchema, rewardsSchema, strategyOpportunityDetailSchema, strategyOpportunityKeySchema, strategyOpportunitySchema, tokenRewardsSchema } from "./opportunities.schema.js";
|
|
13
13
|
import { borrowRateBreakdownSchema, pnlBreakdownSchema, pointsProgramPnLSchema, pointsRewardsPnLSchema, poolPositionKeySchema, poolPositionSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionKeySchema, positionKindSchema, positionSchema, positionTransactionKindSchema, positionTransactionSchema, positionsTotalsSchema, rewardsPnLSchema, strategyPositionKeySchema, strategyPositionSchema, tokenQuotaRateSchema, tokenRewardsPnLSchema } from "./positions.schema.js";
|
|
14
|
-
import { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, analyticsChartQueryOptionsSchema, analyticsChartQueryParamsSchema, analyticsChartQuerySchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema } from "./analytics.schema.js";
|
|
14
|
+
import { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, analyticsChartQueryOptionsSchema, analyticsChartQueryParamsSchema, analyticsChartQuerySchema, analyticsContractOptionSchema, analyticsContractRefSchema, analyticsPositionFilterOptionsQuerySchema, analyticsPositionFilterOptionsSchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema } from "./analytics.schema.js";
|
|
15
15
|
import "./curators.js";
|
|
16
16
|
import "./delayed-intents.js";
|
|
17
17
|
import { creditAccountFrozen, liquidatorNotEligible, notEmergencyLiquidator, partialLiquidationImpossible } from "./errors/liquidation-errors.js";
|
|
@@ -33,4 +33,4 @@ import { safeValue, sdkErr, sdkOk } from "./result.js";
|
|
|
33
33
|
import "./rewards.js";
|
|
34
34
|
import "./withdrawals.js";
|
|
35
35
|
import { positionClaimableWithdrawalSchema, positionPendingWithdrawalSchema, positionWithdrawalsSchema, withdrawalOutputAmountSchema } from "./withdrawals.schema.js";
|
|
36
|
-
export { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, CHART_METRIC_UNITS, CHART_RANGES, CHART_UNAVAILABLE_CODES, FILTER_ALL, KYC_REGISTRATION_LINKS, POOL_OPPORTUNITY_CHART_METRICS, POOL_POSITION_CHART_METRICS, PROTOCOL_CHART_METRICS, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_PROTOCOLS, SECURITIZE_REGISTER_VAULT_TYPES, STRATEGY_OPPORTUNITY_CHART_METRICS, STRATEGY_POSITION_CHART_METRICS, STRATEGY_POSITION_COLLATERAL_ERROR, accountNotMidasGreenlisted, amountSchema, analyticsChartQueryOptionsSchema, analyticsChartQueryParamsSchema, analyticsChartQuerySchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema, apyBreakdownSchema, asEstimated, assetTypeSchema, backendPreferred, booleanParamSchema, borrowRateBreakdownSchema, bpsSchema, chainFailedSchema, chainIdSchema, chainMetadataSchema, chainSucceededSchema, chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, compareTagOf, creditAccountFrozen, creditAccountNotEmpty, creditAccountNotFound, creditManagerPaused, curatorNameSchema, curatorSchema, dataSourceSchema, debtOutOfRange, delayedReceivedAssetSchema, encodeFlag, filterAllSchema, filterable, forbiddenToken, instantReceivedAssetSchema, insufficientAllowance, insufficientBalance, insufficientCollateral, insufficientPoolLiquidity, isFilterSet, kycRequirementSchema, leverageOutOfRange, leverageSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionId, liquidationPositionSchema, liquidatorNotEligible, malformedTransaction, marketExpired, matchesLiquidatableAccountFilter, matchesOpportunityFilter, matchesPositionFilter, multipleDelayedWithdrawals, noDelayedRoute, noRecordedIntent, noStrategyTargetCollateral, notEmergencyLiquidator, noticeKindSchema, noticeSchema, offchainOnly, onchainOnly, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterQueryParamsSchema, opportunityFilterQuerySchema, opportunityFilterSchema, opportunityId, opportunityKeySchema, opportunityKindSchema, opportunitySchema, opportunityTotalsSchema, partialLiquidationImpossible, pnlBreakdownSchema, pointRewardsSchema, pointsProgramPnLSchema, pointsProgramSchema, pointsRewardsPnLSchema, poolOpportunityChartMetricSchema, poolOpportunityDetailSchema, poolOpportunityId, poolOpportunityKeySchema, poolOpportunitySchema, poolPaused, poolPositionChartMetricSchema, poolPositionId, poolPositionKeySchema, poolPositionSchema, poolSunset, positionClaimableWithdrawalSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionId, positionKeySchema, positionKindSchema, positionPendingWithdrawalSchema, positionSchema, positionTransactionKindSchema, positionTransactionSchema, positionWithdrawalsSchema, positionsTotalsSchema, priceFeedDataSchema, priceFeedSummarySchema, protocolChartMetricSchema, quotaAboveMax, quotaAssetSchema, quotaCountExceeded, quotaInactive, quotaLimitReached, quotaUnchanged, rateCurvePointSchema, rateCurveSchema, receivedAssetSchema, reservePriceLimited, responseMetadataSchema, responseSchema, rewardsPnLSchema, rewardsSchema, rwaOpenRequirementsNotMet, rwaProtocolSchema, safeValue, sdkErr, sdkOk, strategyOpportunityChartMetricSchema, strategyOpportunityDetailSchema, strategyOpportunityId, strategyOpportunityKeySchema, strategyOpportunitySchema, strategyPositionChartMetricSchema, strategyPositionId, strategyPositionKeySchema, strategyPositionSchema, timestampSchema, tokenAmountSchema, tokenQuotaRateSchema, tokenRewardsPnLSchema, tokenRewardsSchema, tokenSchema, tolerance, txCallSchema, underlyingTokenSchema, unexpectedFailure, unpriceableTokenError, unsupportedCollateralToken, unsupportedTokenPair, withdrawalInProgress, withdrawalOutputAmountSchema };
|
|
36
|
+
export { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, CHART_METRIC_UNITS, CHART_RANGES, CHART_UNAVAILABLE_CODES, FILTER_ALL, KYC_REGISTRATION_LINKS, POOL_OPPORTUNITY_CHART_METRICS, POOL_POSITION_CHART_METRICS, PROTOCOL_CHART_METRICS, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_PROTOCOLS, SECURITIZE_REGISTER_VAULT_TYPES, STRATEGY_OPPORTUNITY_CHART_METRICS, STRATEGY_POSITION_CHART_METRICS, STRATEGY_POSITION_COLLATERAL_ERROR, accountNotMidasGreenlisted, amountSchema, analyticsChartQueryOptionsSchema, analyticsChartQueryParamsSchema, analyticsChartQuerySchema, analyticsContractOptionSchema, analyticsContractRefSchema, analyticsPositionFilterOptionsQuerySchema, analyticsPositionFilterOptionsSchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema, apyBreakdownSchema, asEstimated, assetTypeSchema, backendPreferred, booleanParamSchema, borrowRateBreakdownSchema, bpsSchema, chainFailedSchema, chainIdSchema, chainMetadataSchema, chainSucceededSchema, chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, compareTagOf, creditAccountFrozen, creditAccountNotEmpty, creditAccountNotFound, creditManagerPaused, curatorNameSchema, curatorSchema, dataSourceSchema, debtOutOfRange, delayedReceivedAssetSchema, encodeFlag, filterAllSchema, filterable, forbiddenToken, instantReceivedAssetSchema, insufficientAllowance, insufficientBalance, insufficientCollateral, insufficientPoolLiquidity, isFilterSet, kycRequirementSchema, leverageOutOfRange, leverageSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionId, liquidationPositionSchema, liquidatorNotEligible, malformedTransaction, marketExpired, matchesLiquidatableAccountFilter, matchesOpportunityFilter, matchesPositionFilter, multipleDelayedWithdrawals, noDelayedRoute, noRecordedIntent, noStrategyTargetCollateral, notEmergencyLiquidator, noticeKindSchema, noticeSchema, offchainOnly, onchainOnly, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterQueryParamsSchema, opportunityFilterQuerySchema, opportunityFilterSchema, opportunityId, opportunityKeySchema, opportunityKindSchema, opportunitySchema, opportunityTotalsSchema, partialLiquidationImpossible, pnlBreakdownSchema, pointRewardsSchema, pointsProgramPnLSchema, pointsProgramSchema, pointsRewardsPnLSchema, poolOpportunityChartMetricSchema, poolOpportunityDetailSchema, poolOpportunityId, poolOpportunityKeySchema, poolOpportunitySchema, poolPaused, poolPositionChartMetricSchema, poolPositionId, poolPositionKeySchema, poolPositionSchema, poolSunset, positionClaimableWithdrawalSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionId, positionKeySchema, positionKindSchema, positionPendingWithdrawalSchema, positionSchema, positionTransactionKindSchema, positionTransactionSchema, positionWithdrawalsSchema, positionsTotalsSchema, priceFeedDataSchema, priceFeedSummarySchema, protocolChartMetricSchema, quotaAboveMax, quotaAssetSchema, quotaCountExceeded, quotaInactive, quotaLimitReached, quotaUnchanged, rateCurvePointSchema, rateCurveSchema, receivedAssetSchema, reservePriceLimited, responseMetadataSchema, responseSchema, rewardsPnLSchema, rewardsSchema, rwaOpenRequirementsNotMet, rwaProtocolSchema, safeValue, sdkErr, sdkOk, strategyOpportunityChartMetricSchema, strategyOpportunityDetailSchema, strategyOpportunityId, strategyOpportunityKeySchema, strategyOpportunitySchema, strategyPositionChartMetricSchema, strategyPositionId, strategyPositionKeySchema, strategyPositionSchema, timestampSchema, tokenAmountSchema, tokenQuotaRateSchema, tokenRewardsPnLSchema, tokenRewardsSchema, tokenSchema, tolerance, txCallSchema, underlyingTokenSchema, unexpectedFailure, unpriceableTokenError, unsupportedCollateralToken, unsupportedTokenPair, withdrawalInProgress, withdrawalOutputAmountSchema };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ZodAddress } from "../onchain/utils/zod.js";
|
|
2
2
|
import { assetTypeSchema, bpsSchema, chainIdSchema, timestampSchema, tokenAmountSchema, tokenSchema, txCallSchema, underlyingTokenSchema } from "./primitives.schema.js";
|
|
3
|
-
import { filterable } from "./filters.schema.js";
|
|
4
3
|
import { curatorSchema } from "./curators.schema.js";
|
|
4
|
+
import { filterable } from "./filters.schema.js";
|
|
5
5
|
import { z } from "zod/v4";
|
|
6
6
|
//#region src/model/liquidations.schema.ts
|
|
7
7
|
/**
|
|
@@ -35,7 +35,8 @@ const liquidatableAccountSchema = z.object({
|
|
|
35
35
|
estimatedProfit: tokenAmountSchema,
|
|
36
36
|
isDelayed: z.boolean(),
|
|
37
37
|
paused: z.boolean(),
|
|
38
|
-
rwa: z.boolean()
|
|
38
|
+
rwa: z.boolean(),
|
|
39
|
+
isPartiallyLiquidatable: z.boolean()
|
|
39
40
|
});
|
|
40
41
|
/**
|
|
41
42
|
* {@link InstantReceivedAsset}
|
|
@@ -86,7 +87,7 @@ const liquidationDetailsSchema = z.object({
|
|
|
86
87
|
kycProtocol: z.string().optional(),
|
|
87
88
|
kycToken: tokenSchema.optional(),
|
|
88
89
|
approve: liquidationApprovalSchema.optional(),
|
|
89
|
-
|
|
90
|
+
isPartial: z.boolean()
|
|
90
91
|
});
|
|
91
92
|
//#endregion
|
|
92
93
|
export { delayedReceivedAssetSchema, instantReceivedAssetSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionSchema, receivedAssetSchema };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ZodAddress } from "../onchain/utils/zod.js";
|
|
2
2
|
import { offchainOnly, onchainOnly, tolerance } from "./compare.schema.js";
|
|
3
3
|
import { amountSchema, assetTypeSchema, bpsSchema, chainIdSchema, leverageSchema, timestampSchema, tokenSchema, underlyingTokenSchema } from "./primitives.schema.js";
|
|
4
|
+
import { curatorSchema } from "./curators.schema.js";
|
|
4
5
|
import { isFilterSet } from "./filters.js";
|
|
5
6
|
import { booleanParamSchema, encodeFlag, filterable } from "./filters.schema.js";
|
|
6
|
-
import { curatorSchema } from "./curators.schema.js";
|
|
7
7
|
import { kycRequirementSchema } from "./rwa.schema.js";
|
|
8
8
|
import { z } from "zod/v4";
|
|
9
9
|
//#region src/model/opportunities.schema.ts
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ZodAddress, ZodBigInt, ZodHex } from "../onchain/utils/zod.js";
|
|
2
2
|
import { backendPreferred, offchainOnly, onchainOnly, tolerance } from "./compare.schema.js";
|
|
3
3
|
import { assetTypeSchema, bpsSchema, chainIdSchema, leverageSchema, timestampSchema, tokenAmountSchema, tokenSchema, underlyingTokenSchema } from "./primitives.schema.js";
|
|
4
|
+
import { curatorSchema } from "./curators.schema.js";
|
|
4
5
|
import { isFilterSet } from "./filters.js";
|
|
5
6
|
import { booleanParamSchema, encodeFlag, filterable } from "./filters.schema.js";
|
|
6
7
|
import { delayedReceivedAssetSchema, liquidationPositionSchema } from "./liquidations.schema.js";
|
|
@@ -66,6 +67,7 @@ const positionCollateralSchema = z.object({
|
|
|
66
67
|
const poolPositionSchema = z.object({
|
|
67
68
|
kind: z.literal("pool"),
|
|
68
69
|
name: z.string(),
|
|
70
|
+
curator: curatorSchema,
|
|
69
71
|
chainId: chainIdSchema,
|
|
70
72
|
pool: ZodAddress(),
|
|
71
73
|
underlyingToken: underlyingTokenSchema,
|
|
@@ -96,6 +98,7 @@ const borrowRateBreakdownSchema = z.object({
|
|
|
96
98
|
const strategyPositionSchema = z.object({
|
|
97
99
|
kind: z.literal("strategy"),
|
|
98
100
|
name: backendPreferred(z.string()),
|
|
101
|
+
curator: curatorSchema,
|
|
99
102
|
chainId: chainIdSchema,
|
|
100
103
|
creditManager: ZodAddress(),
|
|
101
104
|
creditAccount: ZodAddress(),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { analyticsPositionListQuerySchema, analyticsPositionPageSchema } from "../../model/analytics.schema.js";
|
|
1
|
+
import { analyticsPositionFilterOptionsQuerySchema, analyticsPositionFilterOptionsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema } from "../../model/analytics.schema.js";
|
|
2
2
|
import { AbstractOffchainNamespace } from "../AbstractOffchainNamespace.js";
|
|
3
3
|
import { z } from "zod/v4";
|
|
4
4
|
//#region src/offchain/analytics/OffchainAnalyticsPositions.ts
|
|
@@ -7,6 +7,14 @@ var OffchainAnalyticsPositions = class extends AbstractOffchainNamespace {
|
|
|
7
7
|
constructor(options) {
|
|
8
8
|
super("OffchainAnalyticsPositions", options);
|
|
9
9
|
}
|
|
10
|
+
/** {@inheritDoc IOffchainAnalyticsPositions.filterOptions} */
|
|
11
|
+
async filterOptions(filter) {
|
|
12
|
+
return this.get({
|
|
13
|
+
path: "/v2/analytics/positions/filter-options",
|
|
14
|
+
query: z.encode(analyticsPositionFilterOptionsQuerySchema, { chainIds: this.scopedChainIds(filter) }),
|
|
15
|
+
schema: analyticsPositionFilterOptionsSchema
|
|
16
|
+
});
|
|
17
|
+
}
|
|
10
18
|
/** {@inheritDoc IOffchainAnalyticsPositions.list} */
|
|
11
19
|
async list(options) {
|
|
12
20
|
return this.get({
|