@1delta/margin-fetcher 0.0.337 → 0.0.339

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.
Files changed (31) hide show
  1. package/dist/index.js +384 -212
  2. package/dist/index.js.map +1 -1
  3. package/dist/lending/public-data/liquity/convertPublic.d.ts +20 -0
  4. package/dist/lending/public-data/liquity/convertPublic.d.ts.map +1 -1
  5. package/dist/lending/public-data/liquity/types.d.ts +5 -1
  6. package/dist/lending/public-data/liquity/types.d.ts.map +1 -1
  7. package/dist/lending/user-data/aave-v2-type/userCallParse.d.ts.map +1 -1
  8. package/dist/lending/user-data/aave-v3-type/userCallParse.d.ts.map +1 -1
  9. package/dist/lending/user-data/aave-v3-type/userCallParseYldr.d.ts.map +1 -1
  10. package/dist/lending/user-data/compound-v2/userCallParse.d.ts.map +1 -1
  11. package/dist/lending/user-data/compound-v3/userCallParse.d.ts.map +1 -1
  12. package/dist/lending/user-data/dolomite/userCallParse.d.ts.map +1 -1
  13. package/dist/lending/user-data/euler/userCallParse.d.ts.map +1 -1
  14. package/dist/lending/user-data/fetch-balances/e2e.d.ts.map +1 -1
  15. package/dist/lending/user-data/fetch-balances/parse.d.ts +26 -1
  16. package/dist/lending/user-data/fetch-balances/parse.d.ts.map +1 -1
  17. package/dist/lending/user-data/init/userCallParse.d.ts.map +1 -1
  18. package/dist/lending/user-data/river/userCallParse.d.ts.map +1 -1
  19. package/dist/lending/user-data/teller/userCallParse.d.ts.map +1 -1
  20. package/dist/lending/user-data/utils/types.d.ts +7 -0
  21. package/dist/lending/user-data/utils/types.d.ts.map +1 -1
  22. package/dist/prices/oracle-prices/fetchers/liquity.d.ts +24 -0
  23. package/dist/prices/oracle-prices/fetchers/liquity.d.ts.map +1 -1
  24. package/dist/utils/multicall.d.ts +41 -12
  25. package/dist/utils/multicall.d.ts.map +1 -1
  26. package/dist/yields/rewards/fetchLenderRewards.d.ts.map +1 -1
  27. package/dist/yields/rewards/index.d.ts +1 -1
  28. package/dist/yields/rewards/index.d.ts.map +1 -1
  29. package/dist/yields/rewards/merkl.d.ts +24 -0
  30. package/dist/yields/rewards/merkl.d.ts.map +1 -1
  31. package/package.json +4 -4
@@ -19,6 +19,26 @@ export declare function liquityKeyParts(key: string): {
19
19
  chainId: string;
20
20
  collIndex: number;
21
21
  } | undefined;
22
+ /**
23
+ * Human USD price of a branch's collateral from its `lastGoodPrice()` read.
24
+ *
25
+ * The feed is WAD-USD on canonical (18-dec) collateral, but forks that list
26
+ * NON-18-dec collateral split into two camps:
27
+ * - the feed stays 1e18 and the fork normalizes collateral to 18 decimals
28
+ * inside its CR math (Enosys: 6-dec FXRP/stXRP);
29
+ * - the FEED absorbs the scaling and returns USD x 10^(36 - collDecimals),
30
+ * leaving trove collateral in raw token units (Ebisu: 8-dec WBTC/LBTC,
31
+ * 6-dec XAUt0/syrupUSDT).
32
+ * Both satisfy `collRaw * price / 1e18 = USD_WAD`, so no on-chain read tells
33
+ * them apart — `branch.priceDecimals` pins it per branch when metadata has it.
34
+ *
35
+ * Absent metadata, auto-detect: the two candidates differ by
36
+ * 10^(18 - collDecimals) (>= 1e10 on every listed branch), so at most one can
37
+ * land in a sane USD band. Prefer the 1e18 reading, fall back to the
38
+ * decimals-adjusted one only when 1e18 is implausibly large, and return 0
39
+ * (unknown -> caller falls back to the shared price map) if neither fits.
40
+ */
41
+ export declare function liquityCollateralPrice(raw: bigint | null | undefined, collDecimals: number, priceDecimals?: number): number;
22
42
  /**
23
43
  * Map one deployment's on-chain branch batch into the shared
24
44
  * `MorphoGeneralPublicResponse` shape (identical to Midnight/Term/Exactly),
@@ -1 +1 @@
1
- {"version":3,"file":"convertPublic.d.ts","sourceRoot":"","sources":["../../../../src/lending/public-data/liquity/convertPublic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,GACV;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAOpE;AAkBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,iBAAiB,EACtB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,EACxC,iBAAiB,GAAE,gBAIlB,EACD,MAAM,GAAE,gBAAqB,GAC5B;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,2BAA2B,CAAA;CAAE,CAoP9C"}
1
+ {"version":3,"file":"convertPublic.d.ts","sourceRoot":"","sources":["../../../../src/lending/public-data/liquity/convertPublic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,GACV;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAOpE;AAWD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC9B,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CASR;AAgBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,iBAAiB,EACtB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,EACxC,iBAAiB,GAAE,gBAIlB,EACD,MAAM,GAAE,gBAAqB,GAC5B;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,2BAA2B,CAAA;CAAE,CAoP9C"}
@@ -18,7 +18,11 @@ export interface LiquityBranchRaw {
18
18
  aggWeightedDebtSum: bigint | null;
19
19
  /** StabilityPool.getTotalBoldDeposits() — the branch "earn" pool size */
20
20
  spDeposits: bigint | null;
21
- /** PriceFeed price, 1e18 USD (fetchPrice preferred, lastGoodPrice fallback) */
21
+ /**
22
+ * PriceFeed.lastGoodPrice() — USD scaled by `branch.priceDecimals` (1e18 on
23
+ * canonical 18-dec collateral; fork-dependent otherwise). Always read it
24
+ * through `liquityCollateralPrice`, never a bare `/1e18`.
25
+ */
22
26
  collPrice: bigint | null;
23
27
  /** SortedTroves.getSize() — live (non-zombie) trove count */
24
28
  troveCount: bigint | null;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lending/public-data/liquity/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE/E;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,mBAAmB,CAAA;IAC3B,oFAAoF;IACpF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,mEAAmE;IACnE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,+DAA+D;IAC/D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,qFAAqF;IACrF,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,2FAA2F;IAC3F,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,yEAAyE;IACzE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,6DAA6D;IAC7D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAA;IACtC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lending/public-data/liquity/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE/E;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,mBAAmB,CAAA;IAC3B,oFAAoF;IACpF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,mEAAmE;IACnE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,+DAA+D;IAC/D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,qFAAqF;IACrF,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,2FAA2F;IAC3F,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,yEAAyE;IACzE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;;;OAIG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,6DAA6D;IAC7D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAA;IACtC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAC7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/aave-v2-type/userCallParse.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,mBAAmB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAKnF,eAAO,MAAM,0BAA0B,GACrC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CAgDhD,CAAA"}
1
+ {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/aave-v2-type/userCallParse.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,mBAAmB,EACnB,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAKvB,eAAO,MAAM,0BAA0B,GACrC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CAgDhD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/aave-v3-type/userCallParse.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,mBAAmB,EACnB,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAKvB,eAAO,MAAM,0BAA0B,GACrC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CAqDhD,CAAA"}
1
+ {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/aave-v3-type/userCallParse.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,mBAAmB,EACnB,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAKvB,eAAO,MAAM,0BAA0B,GACrC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CAqDhD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"userCallParseYldr.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/aave-v3-type/userCallParseYldr.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAuB,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAInF,sDAAsD;AACtD,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CAkDhD,CAAA"}
1
+ {"version":3,"file":"userCallParseYldr.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/aave-v3-type/userCallParseYldr.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,mBAAmB,EAEnB,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAIvB,sDAAsD;AACtD,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CAkDhD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/compound-v2/userCallParse.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,mBAAmB,EACnB,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAKvB,eAAO,MAAM,8BAA8B,GACzC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CA0DhD,CAAA"}
1
+ {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/compound-v2/userCallParse.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,mBAAmB,EACnB,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAKvB,eAAO,MAAM,8BAA8B,GACzC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CA0DhD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/compound-v3/userCallParse.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAK9D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,8BAA8B,GACzC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CA6HhD,CAAA"}
1
+ {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/compound-v3/userCallParse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAK9D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,8BAA8B,GACzC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CAyIhD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/dolomite/userCallParse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAc9D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,GACvC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CA+FhD,CAAA"}
1
+ {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/dolomite/userCallParse.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAc9D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,GACvC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CAqGhD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/euler/userCallParse.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAU9D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,EAC7B,oBAAoB,MAAM,EAAE,KAC3B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CAgIhD,CAAA"}
1
+ {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/euler/userCallParse.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAU9D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,EAC7B,oBAAoB,MAAM,EAAE,KAC3B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CAiIhD,CAAA"}
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"e2e.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/fetch-balances/e2e.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,eAAe,EAEhB,MAAM,4BAA4B,CAAA;AACnC,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,EACV,UAAU,EAEV,wBAAwB,EACzB,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;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,CAgCf,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,14 +1,39 @@
1
1
  import { LenderUserQuery } from '../../../types/lenderTypes';
2
2
  import { LenderToLenderCrossPoolMeta, UserData } from '../utils/types';
3
+ /** Reported per lender whose multicall slice contained failed reads. */
4
+ export interface IncompleteLenderRead {
5
+ lender: string;
6
+ /** Number of slots in the lender's slice that returned no data. */
7
+ failedCalls: number;
8
+ /** Size of the lender's slice. */
9
+ totalCalls: number;
10
+ /** True when EVERY read failed and the lender was skipped entirely. */
11
+ dropped: boolean;
12
+ }
13
+ export interface ConvertLenderUserDataOptions {
14
+ /** Invoked once per lender with failed reads — for logging / surfacing. */
15
+ onIncomplete?: (info: IncompleteLenderRead) => void;
16
+ }
3
17
  /**
4
18
  * Converts the raw results into the desired format
19
+ *
20
+ * Slots that hold the multicall failure sentinel are NOT data: a failed read
21
+ * says nothing about the user's position. When every read for a lender failed
22
+ * the lender is skipped outright — converting would emit an all-zero entry that
23
+ * is indistinguishable from "user has no position here", which is how a
24
+ * rate-limited RPC ends up rendering phantom $0 rows (and, when only some calls
25
+ * fail, understated balances). Partial failures still convert — the readable
26
+ * positions are real — but are flagged `incomplete` and reported via
27
+ * `options.onIncomplete`.
28
+ *
5
29
  * @param chainId - The chain ID
6
30
  * @param queriesRaw - The queries to fetch data for
7
31
  * @param rawResults - The raw results from the multicall
8
32
  * @param lenderState - The state of the lender
33
+ * @param options - Optional reporting hooks
9
34
  * @returns The converted data
10
35
  */
11
- export declare const convertLenderUserDataResult: (chainId: string, queriesRaw: LenderUserQuery[], rawResults: any[], lenderState: LenderToLenderCrossPoolMeta) => {
36
+ export declare const convertLenderUserDataResult: (chainId: string, queriesRaw: LenderUserQuery[], rawResults: any[], lenderState: LenderToLenderCrossPoolMeta, options?: ConvertLenderUserDataOptions) => {
12
37
  [lender: string]: UserData;
13
38
  };
14
39
  //# sourceMappingURL=parse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/fetch-balances/parse.ts"],"names":[],"mappings":"AAsBA,OAAO,EACL,eAAe,EAEhB,MAAM,4BAA4B,CAAA;AAsBnC,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AA8HtE;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,GACtC,SAAS,MAAM,EACf,YAAY,eAAe,EAAE,EAC7B,YAAY,GAAG,EAAE,EACjB,aAAa,2BAA2B,KACvC;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;CA4C9B,CAAA"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/fetch-balances/parse.ts"],"names":[],"mappings":"AAsBA,OAAO,EACL,eAAe,EAEhB,MAAM,4BAA4B,CAAA;AAuBnC,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AA8HtE,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAA;IACnB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,2EAA2E;IAC3E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAA;CACpD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,2BAA2B,GACtC,SAAS,MAAM,EACf,YAAY,eAAe,EAAE,EAC7B,YAAY,GAAG,EAAE,EACjB,aAAa,2BAA2B,EACxC,UAAU,4BAA4B,KACrC;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;CA+D9B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/init/userCallParse.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAyH9D,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CAmDhD,CAAA"}
1
+ {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/init/userCallParse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AA+H9D,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,mBAAmB,KAC5B,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,GAAG,SAAS,EAAE,MAAM,CAmDhD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/river/userCallParse.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,2BAA2B,EAC3B,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAIvB,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,oFAAoF;IACpF,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAcD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,OAAO,2BAA2B,KACjC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAAG,SAAS,EAAE,MAAM,CA8ItE,CAAA"}
1
+ {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/river/userCallParse.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,2BAA2B,EAC3B,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAIvB,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,oFAAoF;IACpF,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAcD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,OAAO,2BAA2B,KACjC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAAG,SAAS,EAAE,MAAM,CAiJtE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/teller/userCallParse.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,2BAA2B,EAC3B,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAkBvB;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,MAAM,EACf,SAAS,MAAM,EACf,SAAS,MAAM,EACf,OAAO,2BAA2B,KACjC,CACD,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAAG,SAAS,EAC3D,MAAM,CA+JP,CAAA"}
1
+ {"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/teller/userCallParse.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,2BAA2B,EAC3B,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAkBvB;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,MAAM,EACf,SAAS,MAAM,EACf,SAAS,MAAM,EACf,OAAO,2BAA2B,KACjC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAAG,SAAS,EAAE,MAAM,CAoKtE,CAAA"}
@@ -168,5 +168,12 @@ export type UserData = {
168
168
  chainId: string;
169
169
  account: string;
170
170
  data: UserDataForSubAccount[];
171
+ /**
172
+ * Set when some of the lender's on-chain reads failed (revert, RPC error,
173
+ * rejected multicall chunk) and the entry was built from what did come back.
174
+ * Balances may therefore be understated — treat as "at least this much",
175
+ * not as the user's full position.
176
+ */
177
+ incomplete?: boolean;
171
178
  };
172
179
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/utils/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/utils/types.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,33 @@
1
1
  import { FetcherResult, OraclePriceEntry, ParseContext } from '../types';
2
+ /**
3
+ * Liquity-family oracle price fetcher (Liquity V2 + friendly forks: Felix,
4
+ * USDaf, Nerite, Quill, Enosys, Soneta, Ebisu).
5
+ *
6
+ * Each branch's `PriceFeed.lastGoodPrice()` returns the COLLATERAL price in USD
7
+ * (1e18-scaled on canonical 18-dec collateral; see `liquityCollateralPrice` for
8
+ * the fork-dependent scale on non-18-dec branches) — the same value the branch
9
+ * uses for its collateral ratio, and the same read the public-data fetcher
10
+ * already makes. So these are DIRECT USD prices (PASS 1) that feed the shared
11
+ * `usdPrices` map.
12
+ *
13
+ * Why a dedicated fetcher (not cross-protocol flattening): the family spans
14
+ * chains where no other integrated protocol prices the collateral (Felix/HYPE
15
+ * on HyperEVM, Enosys on Flare, Soneta on Sonic, Ebisu on Plasma, plus bespoke
16
+ * LST/stable collateral on mainnet). Without this those branches would serve a
17
+ * null oracle price. It also uses each branch's OWN feed — the correct oracle
18
+ * for risk. `lastGoodPrice` is a view (fresh on any active branch), so one call
19
+ * per branch. The stablecoin (BOLD / USDaf / satUSD-like) is the debt asset and
20
+ * is emitted pegged to $1 (the same peg `convertPublic` uses) so debt is priced.
21
+ */
2
22
  interface LiquityBranchMeta {
3
23
  lender: string;
4
24
  chainId: string;
5
25
  collIndex: number;
6
26
  collToken: string;
27
+ /** Collateral token decimals — sets the feed scale (see below). */
28
+ collDecimals: number;
29
+ /** Feed decimals from metadata when known; auto-detected otherwise. */
30
+ priceDecimals?: number;
7
31
  /** Stable/debt token (pegged to 1). Emitted once per branch. */
8
32
  debtToken?: string;
9
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"liquity.d.ts","sourceRoot":"","sources":["../../../../src/prices/oracle-prices/fetchers/liquity.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAEb,gBAAgB,EAChB,YAAY,EACb,MAAM,UAAU,CAAA;AA0BjB,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,GACd,aAAa,CAAC,iBAAiB,CAAC,EAAE,CA4BpC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,GAAG,EAAE,EACX,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,YAAY,GACpB,gBAAgB,EAAE,CA2CpB;AAED,yDAAyD;AACzD,wBAAgB,aAAa;;;;;;;;;;;;;;;;;;;;;GAE5B;AAED,4CAA4C;AAC5C,eAAO,MAAM,cAAc;;;;CAI1B,CAAA"}
1
+ {"version":3,"file":"liquity.d.ts","sourceRoot":"","sources":["../../../../src/prices/oracle-prices/fetchers/liquity.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAEb,gBAAgB,EAChB,YAAY,EACb,MAAM,UAAU,CAAA;AAOjB;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAA;IACpB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,GACd,aAAa,CAAC,iBAAiB,CAAC,EAAE,CA8BpC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,GAAG,EAAE,EACX,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,YAAY,GACpB,gBAAgB,EAAE,CAmDpB;AAED,yDAAyD;AACzD,wBAAgB,aAAa;;;;;;;;;;;;;;;;;;;;;GAE5B;AAED,4CAA4C;AAC5C,eAAO,MAAM,cAAc;;;;CAI1B,CAAA"}
@@ -1,23 +1,52 @@
1
1
  import { GeneralCall, GetEvmClientFunction } from '../types';
2
2
  import { PreparedCall } from './rpcCall';
3
3
  export type Call = GeneralCall;
4
- /** Same as Multicall viem except that the abi param is supposed to be the abi per call */
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[]>;
4
+ /**
5
+ * Sentinel written into the result array for a call that returned NO data
6
+ * a revert, an RPC error, or a whole `aggregate3` chunk that was rejected
7
+ * (rate limit, subrequest cap, dropped connection: viem marks every call in a
8
+ * rejected chunk as `status: 'failure'`).
9
+ *
10
+ * It is NOT a zero value. Parsers must skip these slots — coercing one to `0`
11
+ * turns a failed read into a phantom "no balance" position and, worse, makes a
12
+ * real deposit or debt silently disappear from a user's portfolio.
13
+ */
14
+ export declare const MULTICALL_FAILURE = "0x";
15
+ /** True when a multicall slot holds no usable data (see {@link MULTICALL_FAILURE}). */
16
+ export declare const isFailedCall: (value: unknown) => boolean;
17
+ /**
18
+ * Same as Multicall viem except that the abi param is supposed to be the abi per call
19
+ *
20
+ * `retryFailed` runs one extra pass over the slots that came back as failures
21
+ * (see {@link retryFailedSlots}) — worth it for reads whose consumer cannot
22
+ * tell "call failed" from "value is zero".
23
+ */
24
+ export declare const multicallViemAbiArray: (chainId: string, abi: any[], calls: Call[], getEvmClient: GetEvmClientFunction, retry?: boolean, providerId?: number, retries?: number, allowFailure?: boolean, batchSize?: number, logs?: boolean, retryFailed?: boolean) => Promise<any[]>;
6
25
  /**
7
26
  * Sharded variant of {@link multicallViemAbiArray}. Splits the flat call set
8
- * into batches of `batchSize` and distributes them across up to `poolSize`
27
+ * into one shard per endpoint and distributes them across up to `poolSize`
9
28
  * 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.
29
+ * taken modulo the available RPC list). Shards run concurrently — one in
30
+ * flight per endpoint — so wall-clock is roughly `(numShards / poolSize)`
31
+ * round-trips instead of `numShards` on a single endpoint.
32
+ *
33
+ * NOTE on the two different "batch" units: `batchSize` is viem's per-request
34
+ * calldata BYTE limit — it decides how many `aggregate3` sub-requests viem
35
+ * fires inside ONE `provider.multicall` call. Sharding is about spreading
36
+ * those sub-requests over endpoints, so the call list is split by COUNT
37
+ * (`contracts.length / poolSize`), never by `batchSize`. Splitting by
38
+ * `batchSize` made sharding a no-op for any call set smaller than the byte
39
+ * limit, which is every realistic user-data query.
13
40
  *
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).
41
+ * Failover is per-shard: a failed shard is retried on the *next* rpcId (and
42
+ * its byte batchSize halved on each attempt to dodge size/response limits)
43
+ * without discarding the shards that already succeeded. Results are
44
+ * reassembled in the original call order. If a shard still fails after
45
+ * `retries` failovers, the error propagates (same all-or-nothing-per-chain
46
+ * semantics as before). With `retryFailed`, individual failed slots inside a
47
+ * shard get one extra pass on the next endpoint before being given up on.
19
48
  */
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[]>;
49
+ export declare const multicallShardedAbiArray: (chainId: string, abi: any[], calls: Call[], getEvmClient: GetEvmClientFunction, poolSize: number, retries?: number, allowFailure?: boolean, batchSize?: number, logs?: boolean, retryFailed?: boolean) => Promise<any[]>;
21
50
  export interface MulticallConfig {
22
51
  chainId: string;
23
52
  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;;;;;;;;;;;;;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"}
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;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAA;AAErC,uFAAuF;AACvF,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,KAAG,OACwB,CAAA;AAyCtE;;;;;;GAMG;AACH,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,EACZ,qBAAmB,KAClB,OAAO,CAAC,GAAG,EAAE,CAwDf,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;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,EACZ,qBAAmB,KAClB,OAAO,CAAC,GAAG,EAAE,CAmGf,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 +1 @@
1
- {"version":3,"file":"fetchLenderRewards.d.ts","sourceRoot":"","sources":["../../../src/yields/rewards/fetchLenderRewards.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,YAAY,EAAE,MAAM,SAAS,CAAA;AAErD,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,QAQ5E;AAKD;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC,CAUhE"}
1
+ {"version":3,"file":"fetchLenderRewards.d.ts","sourceRoot":"","sources":["../../../src/yields/rewards/fetchLenderRewards.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiB,YAAY,EAAE,MAAM,SAAS,CAAA;AAErD,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,QAQ5E;AASD;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC,CAUhE"}
@@ -1,4 +1,4 @@
1
- export { aaveMerklRewardFetcher, createMerklRewardFetcher } from './merkl';
1
+ export { aaveMerklRewardFetcher, createMerklRewardFetcher, eulerMerklRewardFetcher, morphoCollateralMerklRewardFetcher, } from './merkl';
2
2
  export type { MerklRewardConfig } from './merkl';
3
3
  export { fetchLenderRewards, mergeRewardResults } from './fetchLenderRewards';
4
4
  export type { RewardFetcher, RewardResult } from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/yields/rewards/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAC1E,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC7E,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/yields/rewards/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,kCAAkC,GACnC,MAAM,SAAS,CAAA;AAChB,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC7E,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA"}
@@ -14,9 +14,33 @@ export interface MerklRewardConfig {
14
14
  resolveAsset?: (opp: MerklOpportunity) => {
15
15
  asset: string;
16
16
  lender?: string;
17
+ bucket?: RewardBucket;
17
18
  } | undefined;
18
19
  }
20
+ type RewardBucket = 'deposit' | 'borrow';
19
21
  /** Create a RewardFetcher that pulls data from the Merkl API for a given protocol */
20
22
  export declare function createMerklRewardFetcher(config: MerklRewardConfig): RewardFetcher;
21
23
  export declare const aaveMerklRewardFetcher: RewardFetcher;
24
+ /**
25
+ * Euler v2 markets are EVK vaults, keyed as `EULER_V2:<chain>:<vaultAddress>`.
26
+ * Every Merkl Euler opportunity targets a specific vault whose address is the
27
+ * opportunity's `explorerAddress` (the `identifier` may carry a suffix like
28
+ * "…BORROW_BL", so we key off explorerAddress). The reward lands on whichever
29
+ * vault we track — a regular borrowable market or an Euler Earn vault — and
30
+ * no-ops if we don't track it. Bucket is derived from the action (LEND/BORROW).
31
+ */
32
+ export declare const eulerMerklRewardFetcher: RewardFetcher;
33
+ /**
34
+ * Morpho supply/borrow rewards already arrive via Morpho's GraphQL API, so this
35
+ * fetcher emits ONLY the collateral dimension (`type === "MORPHOCOLLATERAL"`) —
36
+ * "deposit X as collateral" incentives that GraphQL doesn't expose. In our model
37
+ * each Morpho market is stored as two per-side rows; the collateral token is its
38
+ * own row (`MORPHO_BLUE_<uniqueKey>:<chain>:<collateralToken>`), so a collateral
39
+ * incentive is simply a `deposit` reward on that row — which the pairs view reads
40
+ * as `reward_apr_long` for the long/collateral leg. The Merkl action for these
41
+ * opps is inconsistent (LEND on some chains, BORROW on others), so we force the
42
+ * deposit bucket.
43
+ */
44
+ export declare const morphoCollateralMerklRewardFetcher: RewardFetcher;
45
+ export {};
22
46
  //# sourceMappingURL=merkl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merkl.d.ts","sourceRoot":"","sources":["../../../src/yields/rewards/merkl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAgB,MAAM,SAAS,CAAA;AAqHvE,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,eAAe,EAAE,MAAM,CAAA;IACvB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CACb,GAAG,EAAE,gBAAgB,KAClB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAA;CACpD;AAID,qFAAqF;AACrF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,iBAAiB,GACxB,aAAa,CA0Df;AAsBD,eAAO,MAAM,sBAAsB,eAIjC,CAAA"}
1
+ {"version":3,"file":"merkl.d.ts","sourceRoot":"","sources":["../../../src/yields/rewards/merkl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAgB,MAAM,SAAS,CAAA;AAqHvE,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,eAAe,EAAE,MAAM,CAAA;IACvB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CACb,GAAG,EAAE,gBAAgB,KAClB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE,GAAG,SAAS,CAAA;CAC3E;AAED,KAAK,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAA;AAMxC,qFAAqF;AACrF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,iBAAiB,GACxB,aAAa,CAqEf;AAsBD,eAAO,MAAM,sBAAsB,eAIjC,CAAA;AAmBF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,eASlC,CAAA;AAuBF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kCAAkC,eAe7C,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1delta/margin-fetcher",
3
- "version": "0.0.337",
3
+ "version": "0.0.339",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "files": [
@@ -23,11 +23,11 @@
23
23
  "async-retry": "^1.3.3",
24
24
  "lodash": "^4.17.23",
25
25
  "@1delta/abis": "0.0.27",
26
- "@1delta/calldata-sdk": "0.0.160",
26
+ "@1delta/data-sdk": "0.0.35",
27
+ "@1delta/calldata-sdk": "0.0.161",
27
28
  "@1delta/dex-registry": "0.0.104",
28
- "@1delta/proxy-fetch": "0.0.1",
29
- "@1delta/data-sdk": "0.0.34",
30
29
  "@1delta/lender-registry": "0.0.36",
30
+ "@1delta/proxy-fetch": "0.0.1",
31
31
  "@1delta/providers": "0.0.62"
32
32
  },
33
33
  "devDependencies": {