@1delta/margin-fetcher 0.0.283 → 0.0.285

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.
@@ -1 +1 @@
1
- {"version":3,"file":"publicCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/public-data/init/publicCallParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAQjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAkBjD,eAAO,MAAM,iBAAiB,EAAE;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CAOvD,CAAA;AAED,eAAO,MAAM,4BAA4B,GACvC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,QAAQ;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACnC,kBAAkB,gBAAgB,EAClC,YAAW,gBAAqB,KAC/B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,yBAAyB,GAAG,SAAS,EAAE,MAAM,CA8HjE,CAAA"}
1
+ {"version":3,"file":"publicCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/public-data/init/publicCallParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAQjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAwBjD,eAAO,MAAM,iBAAiB,EAAE;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CAOvD,CAAA;AAED,eAAO,MAAM,4BAA4B,GACvC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,QAAQ;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACnC,kBAAkB,gBAAgB,EAClC,YAAW,gBAAqB,KAC/B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,yBAAyB,GAAG,SAAS,EAAE,MAAM,CAkIjE,CAAA"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Client for the Euler Data API (V3) — https://v3.euler.finance/v3/docs
3
+ *
4
+ * Replaces the Goldsky `euler-v2-<chain>` subgraphs (which Euler is
5
+ * deprecating, and which were observed running ~7 weeks behind chain head on
6
+ * BSC, silently dropping freshly-opened sub-account positions).
7
+ *
8
+ * For sub-account discovery we hit `/accounts/{owner}/positions?forceFresh=true`,
9
+ * which performs a live on-chain AccountLens read server-side (`source:
10
+ * accountLensVaultInfo`) rather than serving indexed/cached data — so a
11
+ * position opened seconds ago is visible.
12
+ */
13
+ /**
14
+ * Chains the Euler Data API serves (verified live via `/v3/evk/vaults` +
15
+ * `/v3/accounts/.../positions`). Chains with an Euler deployment NOT covered
16
+ * here (Optimism 10, Gnosis 100, Worldchain 480, Mantle 5000, Ink 57073) fall
17
+ * back to an on-chain 256 sub-account scan in the build path.
18
+ */
19
+ export declare const EULER_API_CHAINS: ReadonlySet<string>;
20
+ export declare const eulerApiSupportsChain: (chainId: string) => boolean;
21
+ interface EulerApiPosition {
22
+ /** Sub-account address holding the position. */
23
+ account: string;
24
+ subAccount?: {
25
+ owner?: string;
26
+ };
27
+ }
28
+ /**
29
+ * Fetches every position for `owner` across all of its sub-accounts on
30
+ * `chainId`. With `forceFresh` the API does a live on-chain lens read.
31
+ * Returns `undefined` when the chain is unsupported or the request fails —
32
+ * callers distinguish this from "owner has no positions" (`[]`).
33
+ */
34
+ export declare function fetchEulerPositionsFromApi(chainId: string, owner: string, forceFresh?: boolean): Promise<EulerApiPosition[] | undefined>;
35
+ export {};
36
+ //# sourceMappingURL=eulerDataApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eulerDataApi.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/euler/eulerDataApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAc/C,CAAA;AAEF,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,KAAG,OACzB,CAAA;AAE/B,UAAU,gBAAgB;IACxB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAChC;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,UAAU,UAAO,GAChB,OAAO,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAsCzC"}
@@ -5,9 +5,8 @@ import { Call } from '../../../utils/multicall';
5
5
  */
6
6
  export declare const ALL_EULER_SUB_ACCOUNT_INDEXES: number[];
7
7
  /**
8
- * Fetches sub-account indexes for an owner from the Euler V2 subgraph.
9
- * Results are memoized for 30 s so that concurrent build + parse calls
10
- * share the same result. Falls back to [0] on any error.
8
+ * Active sub-account indexes for an owner (true set; for the next-account
9
+ * route). Falls back to [0] when the API is unsupported or fails.
11
10
  */
12
11
  export declare function fetchEulerSubAccountIndexes(chainId: string, owner: string): Promise<number[]>;
13
12
  /**
@@ -40,11 +39,12 @@ export declare function resolveSubAccountIndexes(_account: string, subAccountInd
40
39
  * `getAccountEnabledVaultsInfo(evc, subAccountAddr)` call
41
40
  * via the AccountLens contract.
42
41
  *
43
- * When no `subAccountIndexes` are provided, queries the Euler subgraph
44
- * to discover active sub-accounts. Falls back to index [0] on error.
42
+ * When no `subAccountIndexes` are provided, discovers active sub-accounts via
43
+ * the Euler Data API; on unsupported chains / API failure it scans all 256
44
+ * indexes on-chain (empties are dropped by the parser).
45
45
  *
46
46
  * @param subAccountIndexes - Numeric sub-account indexes to fetch.
47
- * When undefined, fetches from subgraph.
47
+ * When undefined, resolved via {@link resolveEulerBuildIndexes}.
48
48
  * The owner's native index is always included automatically.
49
49
  * Pass a narrower set (e.g. [0]) for simulations where only one account is needed.
50
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"userCallBuild.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/euler/userCallBuild.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAG/C;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,MAAM,EAGjD,CAAA;AAyCD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAenB;AAiDD;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,GAAG,SAAS,CAGtB;AAqBD;;;;GAIG;AACH,iBAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;;GAGG;AACH,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,MAAM,EAAE,CAIV;AAMD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,GAC7B,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,oBAAoB,MAAM,EAAE,KAC3B,OAAO,CAAC,IAAI,EAAE,CAuBhB,CAAA;AAED,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,CAAA"}
1
+ {"version":3,"file":"userCallBuild.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/euler/userCallBuild.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAI/C;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,MAAM,EAGjD,CAAA;AA6DD;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAEnB;AA8BD;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,GAAG,SAAS,CAGtB;AAqBD;;;;GAIG;AACH,iBAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;;GAGG;AACH,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,MAAM,EAAE,CAIV;AAMD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kBAAkB,GAC7B,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,oBAAoB,MAAM,EAAE,KAC3B,OAAO,CAAC,IAAI,EAAE,CAuBhB,CAAA;AAED,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,CAAA"}
@@ -11,9 +11,11 @@ import type { ChainQuery, PreparedUserDataRpcCalls } from './types';
11
11
  * @param allowFailure - multicall can fail in single call, default is true
12
12
  * @param batchSize - multicall batch size, default is 4096
13
13
  * @param logs - show multicall error logs, default is false
14
+ * @param concurrency - number of distinct RPC endpoints to shard batches
15
+ * across in parallel; <= 1 keeps the legacy single-endpoint path
14
16
  * @returns The raw results from the multicall, "0x" for failures
15
17
  */
16
- export declare const getLenderUserDataResult: (chainId: string, queriesRaw: LenderUserQuery[], getEvmClient: GetEvmClientFunction, allowFailure?: boolean, batchSize?: number, retries?: number, logs?: boolean) => Promise<any[]>;
18
+ export declare const getLenderUserDataResult: (chainId: string, queriesRaw: LenderUserQuery[], getEvmClient: GetEvmClientFunction, allowFailure?: boolean, batchSize?: number, retries?: number, logs?: boolean, concurrency?: number) => Promise<any[]>;
17
19
  export declare const getLenderUserDataResultForwarded: (chainId: string, queriesRaw: any[], // LenderUserQuery[]
18
20
  getEvmClient: GetEvmClientFunction, allowFailure?: boolean, batchSize?: number, retries?: number, logs?: boolean) => Promise<any[]>;
19
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"e2e.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/fetch-balances/e2e.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAuB,MAAM,4BAA4B,CAAA;AACjF,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEjE,OAAO,EAAE,YAAY,EAAuB,MAAM,wBAAwB,CAAA;AAG1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,OAAO,KAAK,EAAE,UAAU,EAAmB,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAEpF;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,YAAY,eAAe,EAAE,EAC7B,cAAc,oBAAoB,EAClC,sBAAmB,EACnB,kBAAwC,EACxC,gBAAW,EACX,cAAY,KACX,OAAO,CAAC,GAAG,EAAE,CA8Bf,CAAA;AAED,eAAO,MAAM,gCAAgC,GAC3C,SAAS,MAAM,EACf,YAAY,GAAG,EAAE,EAAE,oBAAoB;AACvC,cAAc,oBAAoB,EAClC,sBAAmB,EACnB,kBAAwC,EACxC,gBAAW,EACX,cAAY,KACX,OAAO,CAAC,GAAG,EAAE,CAmCf,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,6BAA6B,GACxC,SAAS,MAAM,EACf,YAAY,eAAe,EAAE,EAC7B,kBAAwC,EACxC,iBAAmB,EACnB,sBAAmB,KAClB,OAAO,CAAC,wBAAwB,CA2ClC,CAAA;AASD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,YAAY,EAAE,UAAU,EAAE,EAC1B,WAAW,EAAE,UAAU,GAAG,YAAY,EAAE,GACvC,OAAO,CAAC;IACT,CAAC,OAAO,EAAE,MAAM,GAAG;QACjB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;KAC3B,CAAA;CACF,CAAC,CAsED"}
1
+ {"version":3,"file":"e2e.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/fetch-balances/e2e.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAuB,MAAM,4BAA4B,CAAA;AACjF,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEjE,OAAO,EAAE,YAAY,EAAuB,MAAM,wBAAwB,CAAA;AAG1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,OAAO,KAAK,EAAE,UAAU,EAAmB,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAEpF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,YAAY,eAAe,EAAE,EAC7B,cAAc,oBAAoB,EAClC,sBAAmB,EACnB,kBAAwC,EACxC,gBAAW,EACX,cAAY,EACZ,oBAAe,KACd,OAAO,CAAC,GAAG,EAAE,CA6Bf,CAAA;AAED,eAAO,MAAM,gCAAgC,GAC3C,SAAS,MAAM,EACf,YAAY,GAAG,EAAE,EAAE,oBAAoB;AACvC,cAAc,oBAAoB,EAClC,sBAAmB,EACnB,kBAAwC,EACxC,gBAAW,EACX,cAAY,KACX,OAAO,CAAC,GAAG,EAAE,CAmCf,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,6BAA6B,GACxC,SAAS,MAAM,EACf,YAAY,eAAe,EAAE,EAC7B,kBAAwC,EACxC,iBAAmB,EACnB,sBAAmB,KAClB,OAAO,CAAC,wBAAwB,CA2ClC,CAAA;AASD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,YAAY,EAAE,UAAU,EAAE,EAC1B,WAAW,EAAE,UAAU,GAAG,YAAY,EAAE,GACvC,OAAO,CAAC;IACT,CAAC,OAAO,EAAE,MAAM,GAAG;QACjB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;KAC3B,CAAA;CACF,CAAC,CAsED"}
@@ -3,6 +3,21 @@ import { PreparedCall } from './rpcCall';
3
3
  export type Call = GeneralCall;
4
4
  /** Same as Multicall viem except that the abi param is supposed to be the abi per call */
5
5
  export declare const multicallViemAbiArray: (chainId: string, abi: any[], calls: Call[], getEvmClient: GetEvmClientFunction, retry?: boolean, providerId?: number, retries?: number, allowFailure?: boolean, batchSize?: number, logs?: boolean) => Promise<any[]>;
6
+ /**
7
+ * Sharded variant of {@link multicallViemAbiArray}. Splits the flat call set
8
+ * into batches of `batchSize` and distributes them across up to `poolSize`
9
+ * distinct RPC endpoints (via `getEvmClient(chainId, rpcId)`, whose rpcId is
10
+ * taken modulo the available RPC list). Batches run concurrently — one in
11
+ * flight per endpoint — so wall-clock is roughly `(numBatches / poolSize)`
12
+ * round-trips instead of `numBatches` on a single endpoint.
13
+ *
14
+ * Failover is per-batch: a failed batch is retried on the *next* rpcId (and
15
+ * its batchSize halved on each attempt to dodge size/response limits) without
16
+ * discarding the batches that already succeeded. Results are reassembled in
17
+ * the original call order. If a batch still fails after `retries` failovers,
18
+ * the error propagates (same all-or-nothing-per-chain semantics as before).
19
+ */
20
+ export declare const multicallShardedAbiArray: (chainId: string, abi: any[], calls: Call[], getEvmClient: GetEvmClientFunction, poolSize: number, retries?: number, allowFailure?: boolean, batchSize?: number, logs?: boolean) => Promise<any[]>;
6
21
  export interface MulticallConfig {
7
22
  chainId: string;
8
23
  allowFailure: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../src/utils/multicall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE5D,OAAO,EAAqB,YAAY,EAAE,MAAM,WAAW,CAAA;AAO3D,MAAM,MAAM,IAAI,GAAG,WAAW,CAAA;AAS9B,0FAA0F;AAC1F,eAAO,MAAM,qBAAqB,GAChC,SAAS,MAAM,EACf,KAAK,GAAG,EAAE,EACV,OAAO,IAAI,EAAE,EACb,cAAc,oBAAoB,EAClC,eAAY,EACZ,mBAAc,EACd,gBAAoB,EACpB,sBAAmB,EACnB,kBAAwC,EACxC,cAAY,KACX,OAAO,CAAC,GAAG,EAAE,CA6Cf,CAAA;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,OAAO,CAAA;CACd;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,EAAE,EACV,KAAK,EAAE,IAAI,EAAE,GACZ,YAAY,EAAE,CAShB;AAED,eAAO,MAAM,oBAAoB,GAC/B,eAAe,YAAY,EAAE,EAC7B,QAAQ,eAAe,EACvB,cAAc,oBAAoB,KACjC,OAAO,CAAC,GAAG,EAAE,CAoBf,CAAA"}
1
+ {"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../src/utils/multicall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE5D,OAAO,EAAqB,YAAY,EAAE,MAAM,WAAW,CAAA;AAO3D,MAAM,MAAM,IAAI,GAAG,WAAW,CAAA;AAS9B,0FAA0F;AAC1F,eAAO,MAAM,qBAAqB,GAChC,SAAS,MAAM,EACf,KAAK,GAAG,EAAE,EACV,OAAO,IAAI,EAAE,EACb,cAAc,oBAAoB,EAClC,eAAY,EACZ,mBAAc,EACd,gBAAoB,EACpB,sBAAmB,EACnB,kBAAwC,EACxC,cAAY,KACX,OAAO,CAAC,GAAG,EAAE,CA6Cf,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,GACnC,SAAS,MAAM,EACf,KAAK,GAAG,EAAE,EACV,OAAO,IAAI,EAAE,EACb,cAAc,oBAAoB,EAClC,UAAU,MAAM,EAChB,gBAAoB,EACpB,sBAAmB,EACnB,kBAAwC,EACxC,cAAY,KACX,OAAO,CAAC,GAAG,EAAE,CAsFf,CAAA;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,OAAO,CAAA;CACd;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,EAAE,EACV,KAAK,EAAE,IAAI,EAAE,GACZ,YAAY,EAAE,CAShB;AAED,eAAO,MAAM,oBAAoB,GAC/B,eAAe,YAAY,EAAE,EAC7B,QAAQ,eAAe,EACvB,cAAc,oBAAoB,KACjC,OAAO,CAAC,GAAG,EAAE,CAoBf,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { GenericTokenList } from '../../types';
2
+ import { EulerEarnVaults } from './types';
3
+ /**
4
+ * True when the Goldsky subgraph at `subgraphUrl` lags chain head by more
5
+ * than `MAX_LAG_SECONDS`. Returns `false` when staleness can't be determined
6
+ * (RPC/meta unavailable) so a transient hiccup never needlessly abandons the
7
+ * richer subgraph source — the data-fetch error path covers hard failures.
8
+ */
9
+ export declare function isEulerEarnSubgraphStale(chainId: string, subgraphUrl: string): Promise<boolean>;
10
+ /**
11
+ * Fetches all Euler Earn vaults for a chain from the Euler Data API.
12
+ * Returns `undefined` when the list request fails (so the caller can fall
13
+ * back to the subgraph), or a (possibly empty) map otherwise.
14
+ */
15
+ export declare function fetchEulerEarnVaultsFromApi(chainId: string, prices?: {
16
+ [asset: string]: number;
17
+ }, tokenList?: GenericTokenList): Promise<EulerEarnVaults | undefined>;
18
+ //# sourceMappingURL=fetchFromApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchFromApi.d.ts","sourceRoot":"","sources":["../../../src/vaults/euler-earn/fetchFromApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9C,OAAO,EAAkB,eAAe,EAAE,MAAM,SAAS,CAAA;AAwDzD;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAiJD;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,MAAM,GAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,EACxC,SAAS,GAAE,gBAAqB,GAC/B,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAqBtC"}
@@ -2,6 +2,8 @@ import { GenericTokenList } from '../../types';
2
2
  import { EulerEarnVaults } from './types';
3
3
  /** True when the chain has an Euler Earn Goldsky subgraph configured. */
4
4
  export declare const hasEulerEarnVaultSubgraph: (chainId: string) => boolean;
5
+ /** Goldsky subgraph URL for a chain, or undefined when none is configured. */
6
+ export declare const getEulerEarnSubgraphUrl: (chainId: string) => string | undefined;
5
7
  /**
6
8
  * Fetches Euler Earn vaults from the Goldsky subgraph for chains
7
9
  * configured in `EULER_EARN_SUBGRAPH_URLS`.
@@ -1 +1 @@
1
- {"version":3,"file":"fetchFromSubgraph.d.ts","sourceRoot":"","sources":["../../../src/vaults/euler-earn/fetchFromSubgraph.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9C,OAAO,EAAkB,eAAe,EAAE,MAAM,SAAS,CAAA;AA2BzD,yEAAyE;AACzE,eAAO,MAAM,yBAAyB,GAAI,SAAS,MAAM,KAAG,OACvB,CAAA;AA4YrC;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,MAAM,EACf,MAAM,GAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,EACxC,SAAS,GAAE,gBAAqB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAqB1B"}
1
+ {"version":3,"file":"fetchFromSubgraph.d.ts","sourceRoot":"","sources":["../../../src/vaults/euler-earn/fetchFromSubgraph.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAI9C,OAAO,EAAkB,eAAe,EAAE,MAAM,SAAS,CAAA;AA2BzD,yEAAyE;AACzE,eAAO,MAAM,yBAAyB,GAAI,SAAS,MAAM,KAAG,OACvB,CAAA;AAErC,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,KACd,MAAM,GAAG,SAA8C,CAAA;AA4Y1D;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,MAAM,EACf,MAAM,GAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,EACxC,SAAS,GAAE,gBAAqB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAqB1B"}
@@ -3,20 +3,22 @@ import { EulerEarnVaults } from './types';
3
3
  /**
4
4
  * One-shot fetcher for all Euler Earn vaults on a chain.
5
5
  *
6
- * Currently sourced exclusively from Goldsky subgraphs (Euler does not
7
- * expose a public REST API for earn vaults the way Morpho does). Returns
8
- * `{}` when the chain has no subgraph entry configuredsame fallback
9
- * shape as the other vault fetchers in this directory.
6
+ * Source strategy Goldsky primary, Euler Data API fallback:
7
+ * - When a chain has a Goldsky subgraph, use it *unless* it lags chain head
8
+ * (e.g. the BSC subgraph ran ~7 weeks behind) or errorsthen fall back
9
+ * to the Euler Data API, which reads live on-chain figures. The richer
10
+ * subgraph result is kept as a last resort if the API is also unavailable.
11
+ * - Chains with no subgraph go straight to the API.
10
12
  *
11
- * Unlike `fetchFluidFTokens` / `fetchGearboxV3Pools`, no multicall
12
- * executor is needed the source is HTTP GraphQL.
13
+ * The subgraph fetch and the staleness probe run concurrently, so the common
14
+ * (healthy) path pays no extra latency. See [[euler-v3-data-api]].
13
15
  *
14
16
  * @param chainId target chain
15
17
  * @param prices optional price map keyed by oracle key / underlying
16
18
  * @param tokenList optional token list for hydrating `asset` metadata
17
19
  *
18
- * @returns `EulerEarnVaults` — map keyed by lowercased vault address, or
19
- * an empty object when the chain has no Euler Earn subgraph.
20
+ * @returns `EulerEarnVaults` keyed by lowercased vault address — `{}` when
21
+ * the chain has neither a usable subgraph nor API data.
20
22
  */
21
23
  export declare const fetchEulerEarnVaults: (chainId: string, prices?: {
22
24
  [asset: string]: number;
@@ -1 +1 @@
1
- {"version":3,"file":"fetchPublic.d.ts","sourceRoot":"","sources":["../../../src/vaults/euler-earn/fetchPublic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,SAAQ;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,EACxC,YAAW,gBAAqB,KAC/B,OAAO,CAAC,eAAe,CAEzB,CAAA"}
1
+ {"version":3,"file":"fetchPublic.d.ts","sourceRoot":"","sources":["../../../src/vaults/euler-earn/fetchPublic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAS9C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAKzC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,SAAQ;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,EACxC,YAAW,gBAAqB,KAC/B,OAAO,CAAC,eAAe,CA6BzB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export { fetchEulerEarnVaults } from './fetchPublic';
2
- export { fetchEulerEarnVaultsFromSubgraph, hasEulerEarnVaultSubgraph, } from './fetchFromSubgraph';
2
+ export { fetchEulerEarnVaultsFromSubgraph, hasEulerEarnVaultSubgraph, getEulerEarnSubgraphUrl, } from './fetchFromSubgraph';
3
+ export { fetchEulerEarnVaultsFromApi, isEulerEarnSubgraphStale, } from './fetchFromApi';
3
4
  export type { EulerEarnVault, EulerEarnVaults } from './types';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vaults/euler-earn/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EACL,gCAAgC,EAChC,yBAAyB,GAC1B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vaults/euler-earn/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/vaults/savings/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAgBtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAA;IAChB;;;0DAGsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;8DAC0D;IAC1D,UAAU,EAAE,OAAO,CAAA;IACnB,2CAA2C;IAC3C,UAAU,EAAE,OAAO,CAAA;IACnB;2BACuB;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4BAA4B;IAC5B,cAAc,EAAE,qBAAqB,CAAA;IACrC;;kBAEc;IACd,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC;;wEAEoE;IACpE,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;iCAE6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AA2UD;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAAA;CAapE,CAAA;AAEN,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,KAAG,oBAAoB,EACxC,CAAA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/vaults/savings/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAiBtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAA;IAChB;;;0DAGsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;8DAC0D;IAC1D,UAAU,EAAE,OAAO,CAAA;IACnB,2CAA2C;IAC3C,UAAU,EAAE,OAAO,CAAA;IACnB;2BACuB;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4BAA4B;IAC5B,cAAc,EAAE,qBAAqB,CAAA;IACrC;;kBAEc;IACd,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC;;wEAEoE;IACpE,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;iCAE6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAgWD;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAAA;CAapE,CAAA;AAEN,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,KAAG,oBAAoB,EACxC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { YieldFetcher } from '../../types';
2
+ /** Matches PRIME's `assetGroup` tag and the savings-registry `yieldKey`. */
3
+ export declare const HASTRA_PRIME_KEY = "Hastra PRIME::PRIME";
4
+ export declare const hastraPrimeFetcher: YieldFetcher;
5
+ //# sourceMappingURL=hastra.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hastra.d.ts","sourceRoot":"","sources":["../../../../src/yields/intrinsic/fetchers/hastra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAmB1C,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,wBAAwB,CAAA;AAErD,eAAO,MAAM,kBAAkB,EAAE,YAwBhC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/yields/intrinsic/index.ts"],"names":[],"mappings":"AA0DA,8DAA8D;AAC9D,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IACpD,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CACpC,CAAC,CAqFD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/yields/intrinsic/index.ts"],"names":[],"mappings":"AA4DA,8DAA8D;AAC9D,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IACpD,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CACpC,CAAC,CAwFD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1delta/margin-fetcher",
3
- "version": "0.0.283",
3
+ "version": "0.0.285",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "files": [
@@ -22,11 +22,11 @@
22
22
  "dependencies": {
23
23
  "async-retry": "^1.3.3",
24
24
  "lodash": "^4.17.23",
25
+ "@1delta/calldata-sdk": "0.0.152",
25
26
  "@1delta/abis": "0.0.20",
26
27
  "@1delta/dex-registry": "0.0.101",
27
- "@1delta/lender-registry": "0.0.32",
28
28
  "@1delta/providers": "0.0.59",
29
- "@1delta/calldata-sdk": "0.0.152",
29
+ "@1delta/lender-registry": "0.0.32",
30
30
  "@1delta/proxy-fetch": "0.0.1"
31
31
  },
32
32
  "devDependencies": {