@eulerxyz/euler-v2-sdk 2.0.0 → 2.1.0
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/src/plugins/pyth/pythPlugin.d.ts +13 -3
- package/dist/src/plugins/pyth/pythPlugin.d.ts.map +1 -1
- package/dist/src/plugins/pyth/pythPlugin.js +195 -59
- package/dist/src/plugins/pyth/pythPlugin.js.map +1 -1
- package/dist/src/plugins/types.d.ts +10 -1
- package/dist/src/plugins/types.d.ts.map +1 -1
- package/dist/src/plugins/types.js +24 -0
- package/dist/src/plugins/types.js.map +1 -1
- package/dist/src/sdk/sdk.d.ts +4 -2
- package/dist/src/sdk/sdk.d.ts.map +1 -1
- package/dist/src/sdk/sdk.js +7 -21
- package/dist/src/sdk/sdk.js.map +1 -1
- package/dist/src/services/executionService/encode.d.ts.map +1 -1
- package/dist/src/services/executionService/encode.js +3 -0
- package/dist/src/services/executionService/encode.js.map +1 -1
- package/dist/src/services/executionService/executionService.d.ts +70 -9
- package/dist/src/services/executionService/executionService.d.ts.map +1 -1
- package/dist/src/services/executionService/executionService.js +79 -25
- package/dist/src/services/executionService/executionService.js.map +1 -1
- package/dist/src/services/executionService/executionServiceTypes.d.ts +21 -1
- package/dist/src/services/executionService/executionServiceTypes.d.ts.map +1 -1
- package/dist/src/services/executionService/executionServiceTypes.js.map +1 -1
- package/dist/src/services/executionService/index.d.ts +2 -1
- package/dist/src/services/executionService/index.d.ts.map +1 -1
- package/dist/src/services/executionService/index.js +1 -0
- package/dist/src/services/executionService/index.js.map +1 -1
- package/dist/src/services/executionService/materializedExecution.d.ts +153 -0
- package/dist/src/services/executionService/materializedExecution.d.ts.map +1 -0
- package/dist/src/services/executionService/materializedExecution.js +475 -0
- package/dist/src/services/executionService/materializedExecution.js.map +1 -0
- package/dist/src/services/executionService/migrationAuthorization.d.ts +10 -0
- package/dist/src/services/executionService/migrationAuthorization.d.ts.map +1 -0
- package/dist/src/services/executionService/migrationAuthorization.js +142 -0
- package/dist/src/services/executionService/migrationAuthorization.js.map +1 -0
- package/dist/src/services/executionService/simulate.d.ts.map +1 -1
- package/dist/src/services/executionService/simulate.js +53 -1
- package/dist/src/services/executionService/simulate.js.map +1 -1
- package/dist/src/services/feeFlowService/feeFlowService.d.ts +4 -1
- package/dist/src/services/feeFlowService/feeFlowService.d.ts.map +1 -1
- package/dist/src/services/feeFlowService/feeFlowService.js +100 -39
- package/dist/src/services/feeFlowService/feeFlowService.js.map +1 -1
- package/dist/src/services/feeFlowService/feeFlowServiceTypes.d.ts +13 -0
- package/dist/src/services/feeFlowService/feeFlowServiceTypes.d.ts.map +1 -1
- package/dist/src/services/feeFlowService/index.d.ts +2 -2
- package/dist/src/services/feeFlowService/index.d.ts.map +1 -1
- package/dist/src/services/feeFlowService/index.js +1 -1
- package/dist/src/services/feeFlowService/index.js.map +1 -1
- package/dist/src/services/positionMigrationService/connectors/aave/aaveConnectorTypes.d.ts +2 -0
- package/dist/src/services/positionMigrationService/connectors/aave/aaveConnectorTypes.d.ts.map +1 -1
- package/dist/src/services/positionMigrationService/connectors/metamorpho/metamorphoConnectorTypes.d.ts +1 -0
- package/dist/src/services/positionMigrationService/connectors/metamorpho/metamorphoConnectorTypes.d.ts.map +1 -1
- package/dist/src/services/positionMigrationService/connectors/morpho/morphoConnector.d.ts +4 -4
- package/dist/src/services/positionMigrationService/connectors/morpho/morphoConnector.d.ts.map +1 -1
- package/dist/src/services/positionMigrationService/connectors/morpho/morphoConnector.js +7 -10
- package/dist/src/services/positionMigrationService/connectors/morpho/morphoConnector.js.map +1 -1
- package/dist/src/services/positionMigrationService/connectors/morpho/morphoConnectorTypes.d.ts +5 -1
- package/dist/src/services/positionMigrationService/connectors/morpho/morphoConnectorTypes.d.ts.map +1 -1
- package/dist/src/services/positionMigrationService/index.d.ts +1 -1
- package/dist/src/services/positionMigrationService/index.d.ts.map +1 -1
- package/dist/src/services/positionMigrationService/index.js.map +1 -1
- package/dist/src/services/positionMigrationService/positionMigrationService.d.ts +7 -1
- package/dist/src/services/positionMigrationService/positionMigrationService.d.ts.map +1 -1
- package/dist/src/services/positionMigrationService/positionMigrationService.js +188 -3
- package/dist/src/services/positionMigrationService/positionMigrationService.js.map +1 -1
- package/dist/src/services/positionMigrationService/positionMigrationServiceTypes.d.ts +49 -15
- package/dist/src/services/positionMigrationService/positionMigrationServiceTypes.d.ts.map +1 -1
- package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.d.ts.map +1 -1
- package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js +7 -1
- package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js.map +1 -1
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.d.ts.map +1 -1
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.js +3 -0
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.js.map +1 -1
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3AdapterTypes.d.ts +2 -0
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3AdapterTypes.d.ts.map +1 -1
- package/dist/src/services/rewardsService/rewardsService.d.ts.map +1 -1
- package/dist/src/services/rewardsService/rewardsService.js +37 -6
- package/dist/src/services/rewardsService/rewardsService.js.map +1 -1
- package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts +4 -0
- package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts.map +1 -1
- package/dist/src/utils/healthCheckSets.d.ts +9 -2
- package/dist/src/utils/healthCheckSets.d.ts.map +1 -1
- package/dist/src/utils/healthCheckSets.js +52 -14
- package/dist/src/utils/healthCheckSets.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { type Address, type Hex, type PublicClient } from "viem";
|
|
2
2
|
import { type BuildQueryFn } from "../../utils/buildQuery.js";
|
|
3
3
|
import { type EulerPlugin } from "../types.js";
|
|
4
|
+
export type PythUpdateBundle = {
|
|
5
|
+
feedIds: Hex[];
|
|
6
|
+
publishTimes: number[];
|
|
7
|
+
updates: Hex[];
|
|
8
|
+
};
|
|
4
9
|
/**
|
|
5
10
|
* Adapter for the Pyth plugin. Follows the SDK's injectable query pattern:
|
|
6
11
|
* all external calls are `query*` arrow-function properties, wrapped by `applyBuildQuery`.
|
|
@@ -8,20 +13,25 @@ import { type EulerPlugin } from "../types.js";
|
|
|
8
13
|
export declare class PythPluginAdapter {
|
|
9
14
|
private hermesUrl;
|
|
10
15
|
private fetchFn;
|
|
16
|
+
private inFlightUpdateBundles;
|
|
11
17
|
constructor(hermesUrl: string, buildQuery?: BuildQueryFn, fetchFn?: typeof fetch);
|
|
12
18
|
/**
|
|
13
19
|
* Fetch latest price update data from Pyth Hermes API.
|
|
14
|
-
*
|
|
20
|
+
* Concurrent calls coalesce only when their normalized feed sets are
|
|
21
|
+
* identical.
|
|
15
22
|
*/
|
|
16
|
-
|
|
23
|
+
queryPythUpdateBundle: (feedIds: Hex[]) => Promise<PythUpdateBundle>;
|
|
24
|
+
queryPythUpdateData: (feedIds: Hex[]) => Promise<Hex[]>;
|
|
25
|
+
getQueryKeyPythUpdateBundle(feedIds: Hex[]): string | null;
|
|
17
26
|
getQueryKeyPythUpdateData(feedIds: Hex[]): string | null;
|
|
18
|
-
private
|
|
27
|
+
private fetchPythUpdateBundle;
|
|
19
28
|
/**
|
|
20
29
|
* Query the on-chain Pyth contract for the fee required to update given price data.
|
|
21
30
|
*/
|
|
22
31
|
queryPythUpdateFee: (provider: PublicClient, pythAddress: Address, updateData: Hex[]) => Promise<bigint>;
|
|
23
32
|
getQueryKeyPythUpdateFee(provider: PublicClient, pythAddress: Address, updateData: Hex[]): string | null;
|
|
24
33
|
setQueryPythUpdateData(fn: typeof this.queryPythUpdateData): void;
|
|
34
|
+
setQueryPythUpdateBundle(fn: typeof this.queryPythUpdateBundle): void;
|
|
25
35
|
setQueryPythUpdateFee(fn: typeof this.queryPythUpdateFee): void;
|
|
26
36
|
}
|
|
27
37
|
export interface PythPluginConfig {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pythPlugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/pyth/pythPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,OAAO,EAIZ,KAAK,GAAG,EACR,KAAK,YAAY,EAEjB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"pythPlugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/pyth/pythPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,OAAO,EAIZ,KAAK,GAAG,EACR,KAAK,YAAY,EAEjB,MAAM,MAAM,CAAC;AAcd,OAAO,EAIN,KAAK,YAAY,EACjB,MAAM,2BAA2B,CAAC;AAWnC,OAAO,EACN,KAAK,WAAW,EAQhB,MAAM,aAAa,CAAC;AAqErB,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,GAAG,EAAE,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,qBAAqB,CAAgD;gBAG5E,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,YAAY,EACzB,OAAO,GAAE,OAAO,KAAwB;IAUzC;;;;OAIG;IACH,qBAAqB,GAAU,SAAS,GAAG,EAAE,KAAG,OAAO,CAAC,gBAAgB,CAAC,CAqBvE;IAEF,mBAAmB,GAAU,SAAS,GAAG,EAAE,KAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CACP;IAErD,2BAA2B,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI;IAI1D,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI;IAMxD,OAAO,CAAC,qBAAqB,CAwD3B;IAEF;;OAEG;IACH,kBAAkB,GACjB,UAAU,YAAY,EACtB,aAAa,OAAO,EACpB,YAAY,GAAG,EAAE,KACf,OAAO,CAAC,MAAM,CAAC,CAOhB;IAEF,wBAAwB,CACvB,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,OAAO,EACpB,UAAU,EAAE,GAAG,EAAE,GACf,MAAM,GAAG,IAAI;IAQhB,sBAAsB,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,mBAAmB,GAAG,IAAI;IAIjE,wBAAwB,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,qBAAqB,GAAG,IAAI;IAIrE,qBAAqB,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,kBAAkB,GAAG,IAAI;CAG/D;AA0VD,MAAM,WAAW,gBAAgB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,yGAAyG;IACzG,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAAC,CAAC;IAC7D,kGAAkG;IAClG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4KAA4K;IAC5K,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,gBAAqB,GAAG,WAAW,CAuT3E"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { decodeFunctionData, encodeFunctionData, getAddress, zeroAddress, } from "viem";
|
|
2
2
|
import { Account, } from "../../entities/Account.js";
|
|
3
3
|
import { applyBuildQuery, normalizeQueryKeySet, serializeQueryArgs, } from "../../utils/buildQuery.js";
|
|
4
|
-
import {
|
|
5
|
-
import { calculateHealthCheckSets, } from "../../utils/healthCheckSets.js";
|
|
4
|
+
import { calculateHealthCheckSets, collectLiquidationHealthChecks, } from "../../utils/healthCheckSets.js";
|
|
6
5
|
import { collectPythFeedsFromRouteSteps, } from "../../utils/oracle.js";
|
|
7
|
-
import { prependToBatch, } from "../types.js";
|
|
6
|
+
import { PluginExecutionFatalError, prependToBatch, } from "../types.js";
|
|
8
7
|
// ── Pyth ABI (minimal: only the two functions we need) ──
|
|
9
8
|
const PYTH_ABI = [
|
|
10
9
|
{
|
|
@@ -25,7 +24,6 @@ const PYTH_ABI = [
|
|
|
25
24
|
// ── Hermes data fetch (injectable query pattern) ──
|
|
26
25
|
const normalizeHex = (value) => (value.startsWith("0x") ? value : `0x${value}`);
|
|
27
26
|
const normalizeFeedId = (value) => normalizeHex(value).toLowerCase();
|
|
28
|
-
const PYTH_PRICE_ID_PATTERN = /0x[0-9a-fA-F]{64}/g;
|
|
29
27
|
const DEFAULT_MAX_PYTH_UPDATE_FEE = 10n ** 16n;
|
|
30
28
|
const OFFICIAL_PYTH_ADDRESSES_BY_CHAIN_ID = new Map([
|
|
31
29
|
[1, "0x4305FB66699C3B2702D4d05CF36551390A4c69C6"],
|
|
@@ -65,10 +63,6 @@ const OFFICIAL_PYTH_ADDRESSES_BY_CHAIN_ID = new Map([
|
|
|
65
63
|
[534352, "0xA2aa501b19aff244D90cc15a4Cf739D2725B5729"],
|
|
66
64
|
[167000, "0x2880aB155794e7179c9eE2e38200202908C17B43"],
|
|
67
65
|
]);
|
|
68
|
-
const parseMissingPriceIds = (body) => {
|
|
69
|
-
const matches = body.match(PYTH_PRICE_ID_PATTERN) ?? [];
|
|
70
|
-
return new Set(matches.map((id) => normalizeFeedId(id)));
|
|
71
|
-
};
|
|
72
66
|
/**
|
|
73
67
|
* Adapter for the Pyth plugin. Follows the SDK's injectable query pattern:
|
|
74
68
|
* all external calls are `query*` arrow-function properties, wrapped by `applyBuildQuery`.
|
|
@@ -76,6 +70,7 @@ const parseMissingPriceIds = (body) => {
|
|
|
76
70
|
export class PythPluginAdapter {
|
|
77
71
|
hermesUrl;
|
|
78
72
|
fetchFn;
|
|
73
|
+
inFlightUpdateBundles = new Map();
|
|
79
74
|
constructor(hermesUrl, buildQuery, fetchFn = globalThis.fetch) {
|
|
80
75
|
this.hermesUrl = hermesUrl;
|
|
81
76
|
// Browser fetch throws "Illegal invocation" if `this` is anything but
|
|
@@ -87,42 +82,76 @@ export class PythPluginAdapter {
|
|
|
87
82
|
}
|
|
88
83
|
/**
|
|
89
84
|
* Fetch latest price update data from Pyth Hermes API.
|
|
90
|
-
*
|
|
85
|
+
* Concurrent calls coalesce only when their normalized feed sets are
|
|
86
|
+
* identical.
|
|
91
87
|
*/
|
|
92
|
-
|
|
88
|
+
queryPythUpdateBundle = async (feedIds) => {
|
|
93
89
|
const normalizedIds = [...new Set(feedIds.map(normalizeFeedId))].sort((left, right) => left.localeCompare(right));
|
|
94
|
-
if (!normalizedIds.length)
|
|
95
|
-
return [];
|
|
96
|
-
|
|
97
|
-
|
|
90
|
+
if (!normalizedIds.length) {
|
|
91
|
+
return { feedIds: [], publishTimes: [], updates: [] };
|
|
92
|
+
}
|
|
93
|
+
const key = normalizedIds.join(",");
|
|
94
|
+
const existing = this.inFlightUpdateBundles.get(key);
|
|
95
|
+
if (existing)
|
|
96
|
+
return existing;
|
|
97
|
+
const pending = this.fetchPythUpdateBundle(normalizedIds);
|
|
98
|
+
this.inFlightUpdateBundles.set(key, pending);
|
|
99
|
+
try {
|
|
100
|
+
return await pending;
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
if (this.inFlightUpdateBundles.get(key) === pending) {
|
|
104
|
+
this.inFlightUpdateBundles.delete(key);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
queryPythUpdateData = async (feedIds) => (await this.queryPythUpdateBundle(feedIds)).updates;
|
|
109
|
+
getQueryKeyPythUpdateBundle(feedIds) {
|
|
110
|
+
return this.getQueryKeyPythUpdateData(feedIds);
|
|
111
|
+
}
|
|
98
112
|
getQueryKeyPythUpdateData(feedIds) {
|
|
99
113
|
return serializeQueryArgs([
|
|
100
114
|
normalizeQueryKeySet(feedIds.map(normalizeFeedId)),
|
|
101
115
|
]);
|
|
102
116
|
}
|
|
103
|
-
|
|
104
|
-
if (!feedIds.length)
|
|
105
|
-
return [];
|
|
117
|
+
fetchPythUpdateBundle = async (feedIds) => {
|
|
118
|
+
if (!feedIds.length) {
|
|
119
|
+
return { feedIds: [], publishTimes: [], updates: [] };
|
|
120
|
+
}
|
|
106
121
|
const url = new URL("/v2/updates/price/latest", this.hermesUrl);
|
|
107
122
|
feedIds.forEach((id) => url.searchParams.append("ids[]", id));
|
|
108
123
|
url.searchParams.set("encoding", "hex");
|
|
124
|
+
url.searchParams.set("parsed", "true");
|
|
109
125
|
const response = await this.fetchFn(url.toString());
|
|
110
126
|
if (!response.ok) {
|
|
111
127
|
const body = await response.text().catch(() => "");
|
|
112
|
-
if (response.status === 404) {
|
|
113
|
-
const missingIds = parseMissingPriceIds(body);
|
|
114
|
-
if (missingIds.size > 0) {
|
|
115
|
-
const retryIds = feedIds.filter((id) => !missingIds.has(id));
|
|
116
|
-
return this.fetchPythUpdateData(retryIds);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
128
|
throw new Error(`Failed to fetch Pyth update data: ${response.status}${body ? ` ${body}` : ""}`);
|
|
120
129
|
}
|
|
121
130
|
const body = (await response.json());
|
|
122
131
|
const binaryData = body?.binary?.data;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
132
|
+
const updates = Array.isArray(binaryData)
|
|
133
|
+
? binaryData.map((item) => normalizeHex(String(item)))
|
|
134
|
+
: [];
|
|
135
|
+
const publishTimeByFeed = new Map();
|
|
136
|
+
for (const parsed of body.parsed ?? []) {
|
|
137
|
+
if (typeof parsed.id !== "string")
|
|
138
|
+
continue;
|
|
139
|
+
const publishTime = parsed.price?.publish_time;
|
|
140
|
+
if (typeof publishTime !== "number" ||
|
|
141
|
+
!Number.isSafeInteger(publishTime) ||
|
|
142
|
+
publishTime < 0) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
publishTimeByFeed.set(normalizeFeedId(parsed.id), publishTime);
|
|
146
|
+
}
|
|
147
|
+
const hasCompletePublishTimes = feedIds.every((id) => publishTimeByFeed.has(id));
|
|
148
|
+
return {
|
|
149
|
+
feedIds,
|
|
150
|
+
publishTimes: hasCompletePublishTimes
|
|
151
|
+
? feedIds.map((id) => publishTimeByFeed.get(id))
|
|
152
|
+
: [],
|
|
153
|
+
updates,
|
|
154
|
+
};
|
|
126
155
|
};
|
|
127
156
|
/**
|
|
128
157
|
* Query the on-chain Pyth contract for the fee required to update given price data.
|
|
@@ -145,12 +174,15 @@ export class PythPluginAdapter {
|
|
|
145
174
|
setQueryPythUpdateData(fn) {
|
|
146
175
|
this.queryPythUpdateData = fn;
|
|
147
176
|
}
|
|
177
|
+
setQueryPythUpdateBundle(fn) {
|
|
178
|
+
this.queryPythUpdateBundle = fn;
|
|
179
|
+
}
|
|
148
180
|
setQueryPythUpdateFee(fn) {
|
|
149
181
|
this.queryPythUpdateFee = fn;
|
|
150
182
|
}
|
|
151
183
|
}
|
|
152
184
|
// ── Core batch item builder ──
|
|
153
|
-
async function buildPythBatchItems(feeds, adapter, provider, chainId, trustedPythAddresses, maxUpdateFee, sender = zeroAddress) {
|
|
185
|
+
async function buildPythBatchItems(feeds, adapter, provider, chainId, trustedPythAddresses, maxUpdateFee, sender = zeroAddress, failClosed = false) {
|
|
154
186
|
if (!feeds.length)
|
|
155
187
|
return { items: [], totalValue: 0n };
|
|
156
188
|
// Group feeds by Pyth contract address
|
|
@@ -158,7 +190,11 @@ async function buildPythBatchItems(feeds, adapter, provider, chainId, trustedPyt
|
|
|
158
190
|
for (const feed of feeds) {
|
|
159
191
|
const pythAddress = getAddress(feed.pythAddress);
|
|
160
192
|
if (!trustedPythAddresses.has(pythAddress.toLowerCase())) {
|
|
161
|
-
|
|
193
|
+
const error = new Error(`Untrusted Pyth contract for chainId ${chainId}`);
|
|
194
|
+
logPythPluginError(pythAddress, [feed.feedId], error);
|
|
195
|
+
if (failClosed) {
|
|
196
|
+
throw new PluginExecutionFatalError(error.message, { cause: error });
|
|
197
|
+
}
|
|
162
198
|
continue;
|
|
163
199
|
}
|
|
164
200
|
const set = grouped.get(pythAddress) || new Set();
|
|
@@ -170,8 +206,12 @@ async function buildPythBatchItems(feeds, adapter, provider, chainId, trustedPyt
|
|
|
170
206
|
for (const [pythAddress, feedSet] of grouped.entries()) {
|
|
171
207
|
try {
|
|
172
208
|
const updateData = await adapter.queryPythUpdateData([...feedSet]);
|
|
173
|
-
if (!updateData.length)
|
|
209
|
+
if (!updateData.length) {
|
|
210
|
+
if (failClosed) {
|
|
211
|
+
throw new Error("Pyth Hermes returned no update data");
|
|
212
|
+
}
|
|
174
213
|
continue;
|
|
214
|
+
}
|
|
175
215
|
const fee = await adapter.queryPythUpdateFee(provider, pythAddress, updateData);
|
|
176
216
|
if (fee > maxUpdateFee) {
|
|
177
217
|
throw new Error(`Pyth update fee ${fee.toString()} exceeds max ${maxUpdateFee.toString()}`);
|
|
@@ -190,6 +230,9 @@ async function buildPythBatchItems(feeds, adapter, provider, chainId, trustedPyt
|
|
|
190
230
|
}
|
|
191
231
|
catch (error) {
|
|
192
232
|
logPythPluginError(pythAddress, [...feedSet], error);
|
|
233
|
+
if (failClosed) {
|
|
234
|
+
throw new PluginExecutionFatalError(`Pyth update materialization failed for ${pythAddress}`, { cause: error });
|
|
235
|
+
}
|
|
193
236
|
}
|
|
194
237
|
}
|
|
195
238
|
return { items, totalValue };
|
|
@@ -243,6 +286,41 @@ async function resolveAccount(account, chainId, sdk) {
|
|
|
243
286
|
const fetched = await sdk.accountService.fetchAccount(chainId, getAddress(account), MINIMAL_ACCOUNT_FETCH_OPTIONS);
|
|
244
287
|
return fetched.result;
|
|
245
288
|
}
|
|
289
|
+
async function resolvePlanHealthCheckSets(plan, account, chainId, sdk) {
|
|
290
|
+
const checksByViolator = new Map();
|
|
291
|
+
for (const check of collectLiquidationHealthChecks(plan)) {
|
|
292
|
+
const controllers = checksByViolator.get(check.violator) ?? new Set();
|
|
293
|
+
controllers.add(check.controller);
|
|
294
|
+
checksByViolator.set(check.violator, controllers);
|
|
295
|
+
}
|
|
296
|
+
if (!checksByViolator.size)
|
|
297
|
+
return calculateHealthCheckSets(plan, account);
|
|
298
|
+
const additionalSubAccounts = [];
|
|
299
|
+
for (const [violator, requiredControllers] of checksByViolator) {
|
|
300
|
+
let subAccount = account.getSubAccount(violator);
|
|
301
|
+
if (!subAccount) {
|
|
302
|
+
const fetched = await sdk.accountService.fetchSubAccount(chainId, violator, undefined, MINIMAL_ACCOUNT_FETCH_OPTIONS);
|
|
303
|
+
const blockingIssues = fetched.errors.filter((issue) => issue.severity === "error");
|
|
304
|
+
if (blockingIssues.length) {
|
|
305
|
+
throw new PluginExecutionFatalError(`Pyth liquidation enrichment could not load complete violator metadata for ${violator}: ${blockingIssues.map((issue) => issue.message).join("; ")}`);
|
|
306
|
+
}
|
|
307
|
+
subAccount = fetched.result;
|
|
308
|
+
}
|
|
309
|
+
if (!subAccount) {
|
|
310
|
+
throw new PluginExecutionFatalError(`Pyth liquidation enrichment could not load violator sub-account ${violator}.`);
|
|
311
|
+
}
|
|
312
|
+
for (const controller of requiredControllers) {
|
|
313
|
+
const controllerEnabled = subAccount.enabledControllers.some((enabled) => getAddress(enabled) === getAddress(controller));
|
|
314
|
+
const debtPosition = subAccount.positions.find((position) => getAddress(position.vaultAddress) === getAddress(controller) &&
|
|
315
|
+
position.borrowed > 0n);
|
|
316
|
+
if (!controllerEnabled || !debtPosition) {
|
|
317
|
+
throw new PluginExecutionFatalError(`Pyth liquidation enrichment received incomplete violator metadata for ${violator}: controller ${controller} is not present as enabled debt.`);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
additionalSubAccounts.push(subAccount);
|
|
321
|
+
}
|
|
322
|
+
return calculateHealthCheckSets(plan, account, additionalSubAccounts);
|
|
323
|
+
}
|
|
246
324
|
async function collectHealthCheckFeeds(checkedAccounts, chainId, sdk) {
|
|
247
325
|
const controllerAddresses = new Set();
|
|
248
326
|
for (const account of checkedAccounts) {
|
|
@@ -252,7 +330,14 @@ async function collectHealthCheckFeeds(checkedAccounts, chainId, sdk) {
|
|
|
252
330
|
}
|
|
253
331
|
if (!controllerAddresses.size)
|
|
254
332
|
return [];
|
|
255
|
-
const fetched = await sdk.vaultMetaService.fetchVaults(chainId, [
|
|
333
|
+
const fetched = await sdk.vaultMetaService.fetchVaults(chainId, [
|
|
334
|
+
...controllerAddresses,
|
|
335
|
+
]);
|
|
336
|
+
const requiresCompleteMetadata = checkedAccounts.some((account) => account.requireCompleteMetadata);
|
|
337
|
+
const blockingIssues = fetched.errors.filter((issue) => issue.severity === "error");
|
|
338
|
+
if (requiresCompleteMetadata && blockingIssues.length) {
|
|
339
|
+
throw new PluginExecutionFatalError(`Pyth liquidation enrichment could not load complete controller metadata: ${blockingIssues.map((issue) => issue.message).join("; ")}`);
|
|
340
|
+
}
|
|
256
341
|
const controllers = new Map();
|
|
257
342
|
for (const vault of fetched.result) {
|
|
258
343
|
if (isPythControllerVault(vault)) {
|
|
@@ -264,8 +349,24 @@ async function collectHealthCheckFeeds(checkedAccounts, chainId, sdk) {
|
|
|
264
349
|
for (const account of checkedAccounts) {
|
|
265
350
|
for (const controllerAddress of account.controllers) {
|
|
266
351
|
const controller = controllers.get(getAddress(controllerAddress));
|
|
267
|
-
if (!controller)
|
|
352
|
+
if (!controller) {
|
|
353
|
+
if (account.requireCompleteMetadata) {
|
|
354
|
+
throw new PluginExecutionFatalError(`Pyth liquidation enrichment could not resolve controller ${controllerAddress} for violator ${account.account}.`);
|
|
355
|
+
}
|
|
268
356
|
continue;
|
|
357
|
+
}
|
|
358
|
+
const unitOfAccount = controller.unitOfAccount?.address;
|
|
359
|
+
if (account.requireCompleteMetadata && !unitOfAccount) {
|
|
360
|
+
throw new PluginExecutionFatalError(`Pyth liquidation enrichment could not resolve the unit of account for controller ${controllerAddress}.`);
|
|
361
|
+
}
|
|
362
|
+
const liabilityNeedsRoute = unitOfAccount
|
|
363
|
+
? getAddress(controller.asset.address) !== getAddress(unitOfAccount)
|
|
364
|
+
: false;
|
|
365
|
+
if (account.requireCompleteMetadata &&
|
|
366
|
+
liabilityNeedsRoute &&
|
|
367
|
+
!controller.debtPricingOracleRoute?.steps.length) {
|
|
368
|
+
throw new PluginExecutionFatalError(`Pyth liquidation enrichment could not resolve the liability oracle route for controller ${controllerAddress}.`);
|
|
369
|
+
}
|
|
269
370
|
const selfKey = `${getAddress(controllerAddress).toLowerCase()}:${CONTROLLER_SELF}`;
|
|
270
371
|
if (!seenPairs.has(selfKey)) {
|
|
271
372
|
seenPairs.add(selfKey);
|
|
@@ -273,12 +374,25 @@ async function collectHealthCheckFeeds(checkedAccounts, chainId, sdk) {
|
|
|
273
374
|
}
|
|
274
375
|
for (const collateralAddress of account.collaterals) {
|
|
275
376
|
const pairKey = `${getAddress(controllerAddress).toLowerCase()}:${getAddress(collateralAddress).toLowerCase()}`;
|
|
377
|
+
const collateral = controller.collaterals.find((c) => getAddress(c.address) === getAddress(collateralAddress));
|
|
378
|
+
if (!collateral) {
|
|
379
|
+
// EVC collateral enablement is permissionless. A vault absent from
|
|
380
|
+
// the controller's LTV list has an effective zero LTV, so EVK skips
|
|
381
|
+
// its oracle read and no update feed is required.
|
|
382
|
+
continue;
|
|
383
|
+
}
|
|
384
|
+
const collateralNeedsRoute = unitOfAccount
|
|
385
|
+
? getAddress(collateralAddress) !== getAddress(unitOfAccount) &&
|
|
386
|
+
collateral.currentLiquidationLTV > 0
|
|
387
|
+
: false;
|
|
388
|
+
if (account.requireCompleteMetadata &&
|
|
389
|
+
collateralNeedsRoute &&
|
|
390
|
+
!collateral.oracleRoute?.steps.length) {
|
|
391
|
+
throw new PluginExecutionFatalError(`Pyth liquidation enrichment could not resolve the oracle route for collateral ${collateralAddress} in controller ${controllerAddress}.`);
|
|
392
|
+
}
|
|
276
393
|
if (seenPairs.has(pairKey))
|
|
277
394
|
continue;
|
|
278
395
|
seenPairs.add(pairKey);
|
|
279
|
-
const collateral = controller.collaterals.find((c) => getAddress(c.address) === getAddress(collateralAddress));
|
|
280
|
-
if (!collateral)
|
|
281
|
-
continue;
|
|
282
396
|
feeds.push(...collectPythFeedsFromRouteSteps(collateral.oracleRoute));
|
|
283
397
|
}
|
|
284
398
|
}
|
|
@@ -305,14 +419,29 @@ export function createPythPlugin(config = {}) {
|
|
|
305
419
|
}
|
|
306
420
|
return addresses;
|
|
307
421
|
};
|
|
308
|
-
const buildBatchItemsFromPrefetch = (entries, sender) => {
|
|
422
|
+
const buildBatchItemsFromPrefetch = (entries, sender, failClosed = false) => {
|
|
309
423
|
const items = [];
|
|
310
424
|
let totalValue = 0n;
|
|
311
425
|
for (const entry of entries) {
|
|
312
|
-
if (
|
|
426
|
+
if (entry.feedIds.length !== entry.publishTimes.length ||
|
|
427
|
+
entry.feedIds.length === 0) {
|
|
428
|
+
if (failClosed) {
|
|
429
|
+
throw new PluginExecutionFatalError("Pyth prefetch is missing publish-time evidence");
|
|
430
|
+
}
|
|
431
|
+
continue;
|
|
432
|
+
}
|
|
433
|
+
if (!entry.updates.length) {
|
|
434
|
+
if (failClosed) {
|
|
435
|
+
throw new PluginExecutionFatalError("Pyth prefetch has no update data");
|
|
436
|
+
}
|
|
313
437
|
continue;
|
|
314
|
-
|
|
438
|
+
}
|
|
439
|
+
if (entry.fee > maxUpdateFee) {
|
|
440
|
+
if (failClosed) {
|
|
441
|
+
throw new PluginExecutionFatalError(`Pyth update fee ${entry.fee.toString()} exceeds max ${maxUpdateFee.toString()}`);
|
|
442
|
+
}
|
|
315
443
|
continue;
|
|
444
|
+
}
|
|
316
445
|
items.push({
|
|
317
446
|
targetContract: entry.pythAddress,
|
|
318
447
|
onBehalfOfAccount: sender,
|
|
@@ -332,7 +461,7 @@ export function createPythPlugin(config = {}) {
|
|
|
332
461
|
name: "pyth",
|
|
333
462
|
async prefetch(plan, account, chainId, sdk) {
|
|
334
463
|
const resolvedAccount = await resolveAccount(account, chainId, sdk);
|
|
335
|
-
const planSets =
|
|
464
|
+
const planSets = await resolvePlanHealthCheckSets(plan, resolvedAccount, chainId, sdk);
|
|
336
465
|
const allAccounts = [];
|
|
337
466
|
for (const set of planSets)
|
|
338
467
|
allAccounts.push(...set.accounts);
|
|
@@ -347,30 +476,40 @@ export function createPythPlugin(config = {}) {
|
|
|
347
476
|
for (const feed of feeds) {
|
|
348
477
|
const pythAddress = getAddress(feed.pythAddress);
|
|
349
478
|
if (!trusted.has(pythAddress.toLowerCase())) {
|
|
350
|
-
|
|
351
|
-
|
|
479
|
+
const error = new PluginExecutionFatalError(`Untrusted Pyth contract for chainId ${chainId}`);
|
|
480
|
+
logPythPluginError(pythAddress, [feed.feedId], error);
|
|
481
|
+
throw error;
|
|
352
482
|
}
|
|
353
483
|
const set = grouped.get(pythAddress) ?? new Set();
|
|
354
484
|
set.add(feed.feedId);
|
|
355
485
|
grouped.set(pythAddress, set);
|
|
356
486
|
}
|
|
357
487
|
const entries = [];
|
|
358
|
-
let hadError = false;
|
|
359
488
|
await Promise.all([...grouped.entries()].map(async ([pythAddress, feedSet]) => {
|
|
360
489
|
const feedIds = [...feedSet];
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
490
|
+
const bundle = await adapter.queryPythUpdateBundle(feedIds);
|
|
491
|
+
const { updates } = bundle;
|
|
492
|
+
if (!updates.length) {
|
|
493
|
+
throw new PluginExecutionFatalError("Pyth Hermes returned no update data");
|
|
494
|
+
}
|
|
495
|
+
if (bundle.feedIds.length !== bundle.publishTimes.length ||
|
|
496
|
+
bundle.feedIds.length === 0) {
|
|
497
|
+
throw new PluginExecutionFatalError("Pyth Hermes response is missing publish-time evidence");
|
|
367
498
|
}
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
499
|
+
const fee = await adapter.queryPythUpdateFee(provider, pythAddress, updates);
|
|
500
|
+
if (fee > maxUpdateFee) {
|
|
501
|
+
throw new PluginExecutionFatalError(`Pyth update fee ${fee.toString()} exceeds max ${maxUpdateFee.toString()}`);
|
|
371
502
|
}
|
|
503
|
+
entries.push({
|
|
504
|
+
pythAddress,
|
|
505
|
+
feedIds: bundle.feedIds,
|
|
506
|
+
publishTimes: bundle.publishTimes,
|
|
507
|
+
updates,
|
|
508
|
+
fee,
|
|
509
|
+
});
|
|
372
510
|
}));
|
|
373
|
-
|
|
511
|
+
entries.sort((left, right) => left.pythAddress.localeCompare(right.pythAddress));
|
|
512
|
+
return { entries };
|
|
374
513
|
},
|
|
375
514
|
async getReadPrepend(ctx, prefetch) {
|
|
376
515
|
if (hasPythPrefetch(prefetch)) {
|
|
@@ -398,16 +537,13 @@ export function createPythPlugin(config = {}) {
|
|
|
398
537
|
// Prepend the prefetched Pyth update once. Pyth updates are
|
|
399
538
|
// multicall-scoped: a single update at the head of the first
|
|
400
539
|
// evcBatch serves every health-check downstream in that batch.
|
|
401
|
-
const built = buildBatchItemsFromPrefetch(prefetch.pyth.entries, sender);
|
|
540
|
+
const built = buildBatchItemsFromPrefetch(prefetch.pyth.entries, sender, true);
|
|
402
541
|
if (!built.items.length)
|
|
403
542
|
return plan;
|
|
404
543
|
return prependToBatch(plan, built.items);
|
|
405
544
|
}
|
|
406
545
|
const resolvedAccount = await resolveAccount(account, chainId, sdk);
|
|
407
|
-
const healthCheckSets = new Map(
|
|
408
|
-
set.planIndex,
|
|
409
|
-
set.accounts,
|
|
410
|
-
]));
|
|
546
|
+
const healthCheckSets = new Map((await resolvePlanHealthCheckSets(plan, resolvedAccount, chainId, sdk)).map((set) => [set.planIndex, set.accounts]));
|
|
411
547
|
const provider = sdk.providerService.getProvider(chainId);
|
|
412
548
|
const processed = [];
|
|
413
549
|
for (const [planIndex, entry] of plan.entries()) {
|
|
@@ -425,9 +561,9 @@ export function createPythPlugin(config = {}) {
|
|
|
425
561
|
processed.push(entry);
|
|
426
562
|
continue;
|
|
427
563
|
}
|
|
428
|
-
const result = await buildPythBatchItems(feeds, adapter, provider, chainId, getTrustedPythAddresses(chainId), maxUpdateFee, sender);
|
|
564
|
+
const result = await buildPythBatchItems(feeds, adapter, provider, chainId, getTrustedPythAddresses(chainId), maxUpdateFee, sender, true);
|
|
429
565
|
processed.push(result.items.length
|
|
430
|
-
?
|
|
566
|
+
? prependToBatch([entry], result.items)[0]
|
|
431
567
|
: entry);
|
|
432
568
|
}
|
|
433
569
|
return processed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pythPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/pyth/pythPlugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pythPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/pyth/pythPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,18 @@ import type { Address, Hex, PublicClient } from "viem";
|
|
|
2
2
|
import type { AddressOrAccount } from "../entities/Account.js";
|
|
3
3
|
import type { EVault } from "../entities/EVault.js";
|
|
4
4
|
import type { EulerSDK } from "../sdk/sdk.js";
|
|
5
|
-
import type
|
|
5
|
+
import { type BatchItemDescription, type EVCBatchItem, type TransactionPlan } from "../services/executionService/executionServiceTypes.js";
|
|
6
6
|
export interface PluginBatchItems {
|
|
7
7
|
items: EVCBatchItem[];
|
|
8
8
|
totalValue: bigint;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* A plugin failure with an explicitly safety-critical classification. SDK plan
|
|
12
|
+
* processing and prefetch APIs propagate this and every other plugin error.
|
|
13
|
+
*/
|
|
14
|
+
export declare class PluginExecutionFatalError extends Error {
|
|
15
|
+
constructor(message: string, options?: ErrorOptions);
|
|
16
|
+
}
|
|
10
17
|
export interface ReadPluginContext {
|
|
11
18
|
chainId: number;
|
|
12
19
|
vaults: EVault[];
|
|
@@ -34,6 +41,8 @@ export type PythPluginPrefetch = {
|
|
|
34
41
|
entries: Array<{
|
|
35
42
|
pythAddress: Address;
|
|
36
43
|
feedIds: Hex[];
|
|
44
|
+
/** Publish time for each feedIds entry, in the same order. */
|
|
45
|
+
publishTimes: number[];
|
|
37
46
|
updates: Hex[];
|
|
38
47
|
fee: bigint;
|
|
39
48
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/types.ts"],"names":[],"mappings":"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"}
|