@eulerxyz/euler-v2-sdk 0.2.1-beta → 0.2.3-beta

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 (108) hide show
  1. package/dist/src/entities/Account.d.ts +1 -1
  2. package/dist/src/entities/Account.d.ts.map +1 -1
  3. package/dist/src/entities/Account.js +28 -38
  4. package/dist/src/entities/Account.js.map +1 -1
  5. package/dist/src/entities/EVault.d.ts.map +1 -1
  6. package/dist/src/entities/EVault.js +3 -9
  7. package/dist/src/entities/EVault.js.map +1 -1
  8. package/dist/src/entities/Portfolio.d.ts +3 -3
  9. package/dist/src/entities/Portfolio.d.ts.map +1 -1
  10. package/dist/src/entities/Portfolio.js +8 -4
  11. package/dist/src/entities/Portfolio.js.map +1 -1
  12. package/dist/src/index.d.ts +1 -1
  13. package/dist/src/index.d.ts.map +1 -1
  14. package/dist/src/index.js +1 -1
  15. package/dist/src/index.js.map +1 -1
  16. package/dist/src/plugins/pyth/pythPlugin.d.ts +7 -1
  17. package/dist/src/plugins/pyth/pythPlugin.d.ts.map +1 -1
  18. package/dist/src/plugins/pyth/pythPlugin.js +85 -9
  19. package/dist/src/plugins/pyth/pythPlugin.js.map +1 -1
  20. package/dist/src/sdk/buildSDK.js +1 -1
  21. package/dist/src/sdk/buildSDK.js.map +1 -1
  22. package/dist/src/sdk/defaultConfig.d.ts +1 -1
  23. package/dist/src/sdk/defaultConfig.d.ts.map +1 -1
  24. package/dist/src/sdk/defaultConfig.js +2 -2
  25. package/dist/src/sdk/defaultConfig.js.map +1 -1
  26. package/dist/src/services/accountService/adapters/accountV3Adapter/accountV3Adapter.d.ts +2 -2
  27. package/dist/src/services/accountService/adapters/accountV3Adapter/accountV3Adapter.d.ts.map +1 -1
  28. package/dist/src/services/accountService/adapters/accountV3Adapter/accountV3Adapter.js +3 -3
  29. package/dist/src/services/accountService/adapters/accountV3Adapter/accountV3Adapter.js.map +1 -1
  30. package/dist/src/services/executionService/executionService.d.ts +4 -1
  31. package/dist/src/services/executionService/executionService.d.ts.map +1 -1
  32. package/dist/src/services/executionService/executionService.js +29 -6
  33. package/dist/src/services/executionService/executionService.js.map +1 -1
  34. package/dist/src/services/executionService/executionServiceTypes.d.ts +9 -2
  35. package/dist/src/services/executionService/executionServiceTypes.d.ts.map +1 -1
  36. package/dist/src/services/intrinsicApyService/adapters/intrinsicApyV3Adapter/intrinsicApyV3Adapter.d.ts +1 -0
  37. package/dist/src/services/intrinsicApyService/adapters/intrinsicApyV3Adapter/intrinsicApyV3Adapter.d.ts.map +1 -1
  38. package/dist/src/services/intrinsicApyService/adapters/intrinsicApyV3Adapter/intrinsicApyV3Adapter.js +14 -2
  39. package/dist/src/services/intrinsicApyService/adapters/intrinsicApyV3Adapter/intrinsicApyV3Adapter.js.map +1 -1
  40. package/dist/src/services/priceService/backendClient.d.ts +1 -0
  41. package/dist/src/services/priceService/backendClient.d.ts.map +1 -1
  42. package/dist/src/services/priceService/backendClient.js +14 -3
  43. package/dist/src/services/priceService/backendClient.js.map +1 -1
  44. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.d.ts +4 -1
  45. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.d.ts.map +1 -1
  46. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js +189 -38
  47. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js.map +1 -1
  48. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.d.ts.map +1 -1
  49. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.js +33 -4
  50. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.js.map +1 -1
  51. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3AdapterTypes.d.ts +13 -0
  52. package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3AdapterTypes.d.ts.map +1 -1
  53. package/dist/src/services/rewardsService/rewardsService.d.ts +7 -1
  54. package/dist/src/services/rewardsService/rewardsService.d.ts.map +1 -1
  55. package/dist/src/services/rewardsService/rewardsService.js +144 -11
  56. package/dist/src/services/rewardsService/rewardsService.js.map +1 -1
  57. package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts +39 -2
  58. package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts.map +1 -1
  59. package/dist/src/services/swapService/swapService.d.ts +1 -1
  60. package/dist/src/services/swapService/swapService.d.ts.map +1 -1
  61. package/dist/src/services/swapService/swapService.js +4 -1
  62. package/dist/src/services/swapService/swapService.js.map +1 -1
  63. package/dist/src/services/swapService/swapVerification.d.ts +1 -1
  64. package/dist/src/services/swapService/swapVerification.d.ts.map +1 -1
  65. package/dist/src/services/swapService/swapVerification.js +3 -2
  66. package/dist/src/services/swapService/swapVerification.js.map +1 -1
  67. package/dist/src/services/tokenlistService/tokenlistService.d.ts +1 -1
  68. package/dist/src/services/tokenlistService/tokenlistService.d.ts.map +1 -1
  69. package/dist/src/services/tokenlistService/tokenlistService.js +51 -7
  70. package/dist/src/services/tokenlistService/tokenlistService.js.map +1 -1
  71. package/dist/src/services/tokenlistService/tokenlistServiceTypes.d.ts +1 -1
  72. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.d.ts.map +1 -1
  73. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.js +115 -143
  74. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.js.map +1 -1
  75. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterTypes.d.ts +34 -34
  76. package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterTypes.d.ts.map +1 -1
  77. package/dist/src/services/vaults/eVaultService/eVaultService.d.ts.map +1 -1
  78. package/dist/src/services/vaults/eVaultService/eVaultService.js +5 -9
  79. package/dist/src/services/vaults/eVaultService/eVaultService.js.map +1 -1
  80. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.d.ts +1 -1
  81. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnV3Adapter.d.ts +9 -9
  82. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnV3Adapter.d.ts.map +1 -1
  83. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnV3Adapter.js +10 -10
  84. package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnV3Adapter.js.map +1 -1
  85. package/dist/src/services/walletService/adapters/walletOnchainAdapter.d.ts +3 -1
  86. package/dist/src/services/walletService/adapters/walletOnchainAdapter.d.ts.map +1 -1
  87. package/dist/src/services/walletService/adapters/walletOnchainAdapter.js +89 -43
  88. package/dist/src/services/walletService/adapters/walletOnchainAdapter.js.map +1 -1
  89. package/dist/src/utils/accountComputations.d.ts.map +1 -1
  90. package/dist/src/utils/accountComputations.js +4 -2
  91. package/dist/src/utils/accountComputations.js.map +1 -1
  92. package/dist/src/utils/buildQuery.d.ts +8 -1
  93. package/dist/src/utils/buildQuery.d.ts.map +1 -1
  94. package/dist/src/utils/buildQuery.js +70 -11
  95. package/dist/src/utils/buildQuery.js.map +1 -1
  96. package/dist/src/utils/eulerLabels.d.ts +1 -0
  97. package/dist/src/utils/eulerLabels.d.ts.map +1 -1
  98. package/dist/src/utils/eulerLabels.js +24 -2
  99. package/dist/src/utils/eulerLabels.js.map +1 -1
  100. package/dist/src/utils/oracle.d.ts +1 -0
  101. package/dist/src/utils/oracle.d.ts.map +1 -1
  102. package/dist/src/utils/oracle.js +36 -0
  103. package/dist/src/utils/oracle.js.map +1 -1
  104. package/dist/src/utils/parsing.d.ts +17 -1
  105. package/dist/src/utils/parsing.d.ts.map +1 -1
  106. package/dist/src/utils/parsing.js +39 -0
  107. package/dist/src/utils/parsing.js.map +1 -1
  108. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"swapVerification.js","sourceRoot":"","sources":["../../../../src/services/swapService/swapVerification.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swapVerification.js","sourceRoot":"","sources":["../../../../src/services/swapService/swapVerification.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { Address } from "viem";
2
2
  import type { TokenListItem, TokenlistServiceConfig } from "./tokenlistServiceTypes.js";
3
3
  import { type BuildQueryFn } from "../../utils/buildQuery.js";
4
- /** Raw token shape from Euler API GET /v1/tokens response. */
4
+ /** Raw token shape from Euler API GET /v3/tokens response. */
5
5
  interface ApiToken {
6
6
  chainId: number;
7
7
  address: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tokenlistService.d.ts","sourceRoot":"","sources":["../../../../src/services/tokenlistService/tokenlistService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EACX,aAAa,EACb,sBAAsB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,2BAA2B,CAAC;AAE/E,8DAA8D;AAC9D,UAAU,QAAQ;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IACjC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAAC;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED,qBAAa,gBAAiB,YAAW,iBAAiB;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;gBAEhD,MAAM,EAAE,sBAAsB,EAAE,UAAU,CAAC,EAAE,YAAY;IAKrE,cAAc,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAYvD;IAEF,iBAAiB,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI;IAIjD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoB9D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS;IAWpE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGlC"}
1
+ {"version":3,"file":"tokenlistService.d.ts","sourceRoot":"","sources":["../../../../src/services/tokenlistService/tokenlistService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EACX,aAAa,EACb,sBAAsB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,2BAA2B,CAAC;AAE/E,8DAA8D;AAC9D,UAAU,QAAQ;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAaD,MAAM,WAAW,iBAAiB;IACjC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAAC;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAiCD,qBAAa,gBAAiB,YAAW,iBAAiB;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;gBAEhD,MAAM,EAAE,sBAAsB,EAAE,UAAU,CAAC,EAAE,YAAY;IAKrE,cAAc,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CA+BvD;IAEF,iBAAiB,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI;IAIjD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA6B9D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS;IAWpE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGlC"}
@@ -1,5 +1,32 @@
1
1
  import { getAddress } from "viem";
2
2
  import { applyBuildQuery } from "../../utils/buildQuery.js";
3
+ function setSearchParam(url, key, value) {
4
+ const hashIndex = url.indexOf("#");
5
+ const hash = hashIndex >= 0 ? url.slice(hashIndex) : "";
6
+ const withoutHash = hashIndex >= 0 ? url.slice(0, hashIndex) : url;
7
+ const queryIndex = withoutHash.indexOf("?");
8
+ const base = queryIndex >= 0 ? withoutHash.slice(0, queryIndex) : withoutHash;
9
+ const query = queryIndex >= 0 ? withoutHash.slice(queryIndex + 1) : "";
10
+ const params = new URLSearchParams(query);
11
+ params.set(key, value);
12
+ const serialized = params.toString();
13
+ return `${base}${serialized ? `?${serialized}` : ""}${hash}`;
14
+ }
15
+ async function fetchTokenListPage(url) {
16
+ const response = await fetch(url);
17
+ if (!response.ok) {
18
+ throw new Error(`Failed to fetch token list: ${response.status} ${response.statusText}`);
19
+ }
20
+ const raw = (await response.json());
21
+ if (Array.isArray(raw))
22
+ return raw;
23
+ if (raw && Array.isArray(raw.data))
24
+ return raw;
25
+ throw new Error(`Invalid token list response: expected array or data array`);
26
+ }
27
+ function nowMs() {
28
+ return typeof performance !== "undefined" ? performance.now() : Date.now();
29
+ }
3
30
  export class TokenlistService {
4
31
  config;
5
32
  cache = new Map();
@@ -9,22 +36,37 @@ export class TokenlistService {
9
36
  applyBuildQuery(this, buildQuery);
10
37
  }
11
38
  queryTokenList = async (url) => {
12
- const response = await fetch(url);
13
- if (!response.ok) {
14
- throw new Error(`Failed to fetch token list: ${response.status} ${response.statusText}`);
39
+ const firstPage = await fetchTokenListPage(url);
40
+ if (Array.isArray(firstPage))
41
+ return firstPage;
42
+ const tokens = [...firstPage.data];
43
+ const total = Number(firstPage.meta?.total);
44
+ const limit = Number(firstPage.meta?.limit);
45
+ const firstOffset = Number(firstPage.meta?.offset ?? 0);
46
+ if (!Number.isFinite(total) ||
47
+ !Number.isFinite(limit) ||
48
+ limit <= 0 ||
49
+ firstOffset + firstPage.data.length >= total) {
50
+ return tokens;
15
51
  }
16
- const raw = (await response.json());
17
- if (!Array.isArray(raw)) {
18
- throw new Error(`Invalid token list response: expected array`);
52
+ for (let offset = firstOffset + limit; offset < total; offset += limit) {
53
+ const page = await fetchTokenListPage(setSearchParam(url, "offset", String(offset)));
54
+ if (Array.isArray(page)) {
55
+ throw new Error(`Invalid token list response: expected paginated data`);
56
+ }
57
+ tokens.push(...page.data);
19
58
  }
20
- return raw;
59
+ return tokens;
21
60
  };
22
61
  setQueryTokenList(fn) {
23
62
  this.queryTokenList = fn;
24
63
  }
25
64
  async loadTokenlist(chainId) {
26
65
  const url = this.config.getTokenListUrl(chainId);
66
+ const startedAt = nowMs();
67
+ console.info(`[sdk-tokenlist] loadTokenlist start chainId=${chainId} url=${url}`);
27
68
  const raw = await this.queryTokenList(url);
69
+ const fetchedAt = nowMs();
28
70
  const list = raw
29
71
  .filter((t) => t?.address)
30
72
  .map((t) => ({
@@ -39,6 +81,8 @@ export class TokenlistService {
39
81
  ...(t.coingeckoId != null ? { coingeckoId: t.coingeckoId } : undefined),
40
82
  }));
41
83
  this.cache.set(chainId, list);
84
+ const finishedAt = nowMs();
85
+ console.info(`[sdk-tokenlist] loadTokenlist done chainId=${chainId} raw=${raw.length} tokens=${list.length} fetchMs=${(fetchedAt - startedAt).toFixed(1)} totalMs=${(finishedAt - startedAt).toFixed(1)}`);
42
86
  return list;
43
87
  }
44
88
  getToken(chainId, asset) {
@@ -1 +1 @@
1
- {"version":3,"file":"tokenlistService.js","sourceRoot":"","sources":["../../../../src/services/tokenlistService/tokenlistService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokenlistService.js","sourceRoot":"","sources":["../../../../src/services/tokenlistService/tokenlistService.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Address } from "viem";
2
2
  /**
3
- * Token list entry shape matching Euler API GET /v1/tokens response.
3
+ * Token list entry shape matching Euler API GET /v3/tokens response.
4
4
  */
5
5
  export interface TokenListItem {
6
6
  chainId: number;
@@ -1 +1 @@
1
- {"version":3,"file":"eVaultV3AdapterConversions.d.ts","sourceRoot":"","sources":["../../../../../../../src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAwB,MAAM,MAAM,CAAC;AAM1D,OAAO,EAEN,KAAK,SAAS,EAId,MAAM,2CAA2C,CAAC;AAWnD,OAAO,EAQN,KAAK,OAAO,EAIZ,MAAM,mCAAmC,CAAC;AAG3C,OAAO,KAAK,EACX,eAAe,EAIf,aAAa,EACb,MAAM,2BAA2B,CAAC;AAicnC,wBAAgB,YAAY,CAC3B,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,eAAe,EAAE,EACjC,MAAM,EAAE,SAAS,EAAE,EACnB,eAAe,EAAE,OAAO,GACtB,OAAO,CAsdT"}
1
+ {"version":3,"file":"eVaultV3AdapterConversions.d.ts","sourceRoot":"","sources":["../../../../../../../src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAwB,MAAM,MAAM,CAAC;AAM1D,OAAO,EAEN,KAAK,SAAS,EAId,MAAM,2CAA2C,CAAC;AAgBnD,OAAO,EAQN,KAAK,OAAO,EAIZ,MAAM,mCAAmC,CAAC;AAG3C,OAAO,KAAK,EACX,eAAe,EAIf,aAAa,EACb,MAAM,2BAA2B,CAAC;AAgdnC,wBAAgB,YAAY,CAC3B,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,eAAe,EAAE,EACjC,MAAM,EAAE,SAAS,EAAE,EACnB,eAAe,EAAE,OAAO,GACtB,OAAO,CAubT"}
@@ -1,6 +1,6 @@
1
1
  import { getAddress } from "viem";
2
2
  import { dataIssueLocation, vaultCollateralDiagnosticOwner, vaultDiagnosticOwner, } from "../../../../../utils/entityDiagnostics.js";
3
- import { parseAddressField, parseBigIntField, parseBooleanField, parseNumberField, parseRatio1e4, parseStringField, parseTimestampField, ZERO_ADDRESS, } from "../../../../../utils/parsing.js";
3
+ import { parseAddressField, parseBigIntField, parseBooleanField, parseNumberField, parseOptionalAddressField, parseOptionalBooleanField, parseOptionalNumberField, parseOptionalStringField, parseRatio1e4, parseStringField, parseTimestampField, ZERO_ADDRESS, } from "../../../../../utils/parsing.js";
4
4
  import { hasActiveBorrowableLtv, } from "../../../../../entities/EVault.js";
5
5
  import { VaultType } from "../../../../../utils/types.js";
6
6
  import { InterestRateModelType } from "../eVaultOnchainAdapter/eVaultLensTypes.js";
@@ -52,20 +52,22 @@ function parseRate(value) {
52
52
  const parsed = Number.parseFloat(value);
53
53
  return Number.isFinite(parsed) ? parsed * 100 : 0;
54
54
  }
55
+ function parseV3TargetTimestamp(value, params) {
56
+ if (typeof value === "number")
57
+ return parseNumberField(value, params);
58
+ const trimmed = value?.trim();
59
+ if (!trimmed)
60
+ return parseTimestampField(undefined, params);
61
+ if (/^\d+(\.\d+)?$/.test(trimmed)) {
62
+ return parseNumberField(Number(trimmed), params);
63
+ }
64
+ return parseTimestampField(trimmed, params);
65
+ }
55
66
  const DEFAULT_INTEREST_RATE_MODEL_BLOCK = {
56
67
  address: ZERO_ADDRESS,
57
68
  type: "unknown",
58
69
  data: null,
59
70
  };
60
- const DEFAULT_ORACLE_PRICE_BLOCK = {
61
- queryFailure: true,
62
- queryFailureReason: "0x",
63
- amountIn: "0",
64
- amountOutMid: "0",
65
- amountOutBid: "0",
66
- amountOutAsk: "0",
67
- timestamp: "",
68
- };
69
71
  function normalizeUnitOfAccountToken(token) {
70
72
  if (token.address.toLowerCase() === ZERO_ADDRESS.toLowerCase()) {
71
73
  return undefined;
@@ -91,7 +93,7 @@ function mapInterestRateModelType(type) {
91
93
  return InterestRateModelType.UNKNOWN;
92
94
  }
93
95
  }
94
- function convertToken(token, path, owner, errors) {
96
+ function convertToken(token, path, owner, errors, optionalFields = {}) {
95
97
  return {
96
98
  address: parseAddressField(token.address, {
97
99
  path: `${path}.address`,
@@ -99,24 +101,45 @@ function convertToken(token, path, owner, errors) {
99
101
  errors,
100
102
  source: "eVaultV3",
101
103
  }),
102
- name: parseStringField(token.name, {
103
- path: `${path}.name`,
104
- owner,
105
- errors,
106
- source: "eVaultV3",
107
- }),
108
- symbol: parseStringField(token.symbol, {
109
- path: `${path}.symbol`,
110
- owner,
111
- errors,
112
- source: "eVaultV3",
113
- }),
114
- decimals: parseNumberField(token.decimals, {
115
- path: `${path}.decimals`,
116
- owner,
117
- errors,
118
- source: "eVaultV3",
119
- }),
104
+ name: optionalFields.name
105
+ ? parseOptionalStringField(token.name, {
106
+ path: `${path}.name`,
107
+ owner,
108
+ errors,
109
+ source: "eVaultV3",
110
+ })
111
+ : parseStringField(token.name ?? undefined, {
112
+ path: `${path}.name`,
113
+ owner,
114
+ errors,
115
+ source: "eVaultV3",
116
+ }),
117
+ symbol: optionalFields.symbol
118
+ ? parseOptionalStringField(token.symbol, {
119
+ path: `${path}.symbol`,
120
+ owner,
121
+ errors,
122
+ source: "eVaultV3",
123
+ })
124
+ : parseStringField(token.symbol ?? undefined, {
125
+ path: `${path}.symbol`,
126
+ owner,
127
+ errors,
128
+ source: "eVaultV3",
129
+ }),
130
+ decimals: optionalFields.decimals
131
+ ? parseOptionalNumberField(token.decimals, {
132
+ path: `${path}.decimals`,
133
+ owner,
134
+ errors,
135
+ source: "eVaultV3",
136
+ })
137
+ : parseNumberField(token.decimals ?? undefined, {
138
+ path: `${path}.decimals`,
139
+ owner,
140
+ errors,
141
+ source: "eVaultV3",
142
+ }),
120
143
  };
121
144
  }
122
145
  function convertOraclePrice(price, errors, path, owner) {
@@ -310,9 +333,7 @@ function convertCollaterals(rows, vaultTimestamp, vaultEntityId, chainId, errors
310
333
  errors,
311
334
  source: "eVaultV3",
312
335
  });
313
- const targetTimestamp = parseNumberField(typeof row.targetTimestamp === "number"
314
- ? row.targetTimestamp
315
- : Number(row.targetTimestamp), {
336
+ const targetTimestamp = parseV3TargetTimestamp(row.targetTimestamp, {
316
337
  path: "$.targetTimestamp",
317
338
  owner: collateralOwner,
318
339
  errors,
@@ -339,16 +360,6 @@ function convertCollaterals(rows, vaultTimestamp, vaultEntityId, chainId, errors
339
360
  timestamp: 0,
340
361
  },
341
362
  };
342
- if (!row.oraclePriceRaw) {
343
- errors.push({
344
- code: "DEFAULT_APPLIED",
345
- severity: "warning",
346
- message: "Missing collateral oraclePriceRaw; default zero-price placeholder applied.",
347
- locations: [dataIssueLocation(collateralOwner, "$.oraclePriceRaw")],
348
- source: "eVaultV3",
349
- normalizedValue: "queryFailure:true",
350
- });
351
- }
352
363
  if (targetTimestamp > vaultTimestamp) {
353
364
  const ramping = {
354
365
  initialLiquidationLTV: parseRatio1e4(row.initialLiquidationLTV, {
@@ -452,23 +463,6 @@ export function convertVault(detail, collateralRows, errors, fallbackAddress) {
452
463
  }
453
464
  const unitOfAccountData = detail.unitOfAccount ?? DEFAULT_TOKEN_BLOCK;
454
465
  const unitOfAccountErrors = suppressUnitOfAccountDiagnostics ? [] : errors;
455
- if (!detail.fees) {
456
- errors.push({
457
- code: "DEFAULT_APPLIED",
458
- severity: "warning",
459
- message: "Missing fees object; defaulted all fee fields to 0.",
460
- locations: [dataIssueLocation(owner, "$.fees")],
461
- source: "eVaultV3",
462
- normalizedValue: {
463
- interestFee: 0,
464
- accumulatedFeesShares: "0",
465
- accumulatedFeesAssets: "0",
466
- governorFeeReceiver: ZERO_ADDRESS,
467
- protocolFeeReceiver: ZERO_ADDRESS,
468
- protocolFeeShare: 0,
469
- },
470
- });
471
- }
472
466
  const feeData = detail.fees ?? {
473
467
  interestFee: 0,
474
468
  accumulatedFeesShares: "0",
@@ -478,7 +472,12 @@ export function convertVault(detail, collateralRows, errors, fallbackAddress) {
478
472
  protocolFeeShare: 0,
479
473
  };
480
474
  const fees = {
481
- interestFee: feeData.interestFee ?? 0,
475
+ interestFee: parseOptionalNumberField(feeData.interestFee, {
476
+ path: "$.fees.interestFee",
477
+ owner,
478
+ errors,
479
+ source: "eVaultV3",
480
+ }),
482
481
  accumulatedFeesShares: parseBigIntField(feeData.accumulatedFeesShares ?? "0", {
483
482
  path: "$.fees.accumulatedFeesShares",
484
483
  owner,
@@ -491,52 +490,37 @@ export function convertVault(detail, collateralRows, errors, fallbackAddress) {
491
490
  errors,
492
491
  source: "eVaultV3",
493
492
  }),
494
- governorFeeReceiver: parseAddressField(feeData.governorFeeReceiver, {
493
+ governorFeeReceiver: parseOptionalAddressField(feeData.governorFeeReceiver, {
495
494
  path: "$.fees.governorFeeReceiver",
496
495
  owner,
497
496
  errors,
498
497
  source: "eVaultV3",
499
498
  }),
500
- protocolFeeReceiver: parseAddressField(feeData.protocolFeeReceiver, {
499
+ protocolFeeReceiver: parseOptionalAddressField(feeData.protocolFeeReceiver, {
501
500
  path: "$.fees.protocolFeeReceiver",
502
501
  owner,
503
502
  errors,
504
503
  source: "eVaultV3",
505
504
  }),
506
- protocolFeeShare: feeData.protocolFeeShare ?? 0,
505
+ protocolFeeShare: parseOptionalNumberField(feeData.protocolFeeShare, {
506
+ path: "$.fees.protocolFeeShare",
507
+ owner,
508
+ errors,
509
+ source: "eVaultV3",
510
+ }),
507
511
  };
508
512
  const hooks = {
509
513
  hookedOperations: {
510
514
  ...DEFAULT_HOOKED_OPERATIONS,
511
515
  ...(detail.hooks?.hookedOperations ?? {}),
512
516
  },
513
- hookTarget: parseAddressField(detail.hooks?.hookTarget, {
517
+ hookTarget: parseOptionalAddressField(detail.hooks?.hookTarget, {
514
518
  path: "$.hooks.hookTarget",
515
519
  owner,
516
520
  errors,
517
521
  source: "eVaultV3",
518
522
  }),
519
523
  };
520
- if (!detail.hooks?.hookedOperations) {
521
- errors.push({
522
- code: "DEFAULT_APPLIED",
523
- severity: "warning",
524
- message: "Missing hookedOperations; defaulted all operations to false.",
525
- locations: [dataIssueLocation(owner, "$.hooks.hookedOperations")],
526
- source: "eVaultV3",
527
- normalizedValue: DEFAULT_HOOKED_OPERATIONS,
528
- });
529
- }
530
- if (!detail.caps) {
531
- errors.push({
532
- code: "DEFAULT_APPLIED",
533
- severity: "warning",
534
- message: "Missing caps block; defaulted all cap fields to 0.",
535
- locations: [dataIssueLocation(owner, "$.caps")],
536
- source: "eVaultV3",
537
- normalizedValue: DEFAULT_CAPS_BLOCK,
538
- });
539
- }
540
524
  const capsData = detail.caps ?? DEFAULT_CAPS_BLOCK;
541
525
  const caps = {
542
526
  supplyCap: parseBigIntField(capsData.supplyCap ?? "0", {
@@ -552,53 +536,44 @@ export function convertVault(detail, collateralRows, errors, fallbackAddress) {
552
536
  source: "eVaultV3",
553
537
  }),
554
538
  };
555
- if (!detail.liquidation) {
556
- errors.push({
557
- code: "DEFAULT_APPLIED",
558
- severity: "warning",
559
- message: "Missing liquidation block; defaulted all liquidation fields to 0/false.",
560
- locations: [dataIssueLocation(owner, "$.liquidation")],
561
- source: "eVaultV3",
562
- normalizedValue: {
563
- maxLiquidationDiscount: 0,
564
- liquidationCoolOffTime: 0,
565
- socializeDebt: false,
566
- },
567
- });
568
- }
569
539
  const liquidationData = detail.liquidation ?? DEFAULT_LIQUIDATION_BLOCK;
570
540
  const liquidation = {
571
- maxLiquidationDiscount: liquidationData.maxLiquidationDiscount ?? 0,
572
- liquidationCoolOffTime: liquidationData.liquidationCoolOffTime ?? 0,
573
- socializeDebt: liquidationData.socializeDebt ?? false,
574
- };
575
- if (!detail.interestRates) {
576
- errors.push({
577
- code: "DEFAULT_APPLIED",
578
- severity: "warning",
579
- message: "Missing interestRates block; defaulted all rate fields to 0.",
580
- locations: [dataIssueLocation(owner, "$.interestRates")],
541
+ maxLiquidationDiscount: parseOptionalNumberField(liquidationData.maxLiquidationDiscount, {
542
+ path: "$.liquidation.maxLiquidationDiscount",
543
+ owner,
544
+ errors,
581
545
  source: "eVaultV3",
582
- normalizedValue: DEFAULT_INTEREST_RATES_BLOCK,
583
- });
584
- }
546
+ }),
547
+ liquidationCoolOffTime: parseOptionalNumberField(liquidationData.liquidationCoolOffTime, {
548
+ path: "$.liquidation.liquidationCoolOffTime",
549
+ owner,
550
+ errors,
551
+ source: "eVaultV3",
552
+ }),
553
+ socializeDebt: parseOptionalBooleanField(liquidationData.socializeDebt, {
554
+ path: "$.liquidation.socializeDebt",
555
+ owner,
556
+ errors,
557
+ source: "eVaultV3",
558
+ }),
559
+ };
585
560
  const interestRatesData = detail.interestRates ?? DEFAULT_INTEREST_RATES_BLOCK;
586
561
  const interestRates = {
587
- borrowSPY: parseRate(parseStringField(interestRatesData.borrowSPY, {
562
+ borrowSPY: parseRate(parseOptionalStringField(interestRatesData.borrowSPY, {
588
563
  path: "$.interestRates.borrowSPY",
589
564
  owner,
590
565
  errors,
591
566
  source: "eVaultV3",
592
567
  fallback: "0",
593
568
  })),
594
- borrowAPY: parseRate(parseStringField(interestRatesData.borrowAPY, {
569
+ borrowAPY: parseRate(parseOptionalStringField(interestRatesData.borrowAPY, {
595
570
  path: "$.interestRates.borrowAPY",
596
571
  owner,
597
572
  errors,
598
573
  source: "eVaultV3",
599
574
  fallback: "0",
600
575
  })),
601
- supplyAPY: parseRate(parseStringField(interestRatesData.supplyAPY, {
576
+ supplyAPY: parseRate(parseOptionalStringField(interestRatesData.supplyAPY, {
602
577
  path: "$.interestRates.supplyAPY",
603
578
  owner,
604
579
  errors,
@@ -606,18 +581,8 @@ export function convertVault(detail, collateralRows, errors, fallbackAddress) {
606
581
  fallback: "0",
607
582
  })),
608
583
  };
609
- if (!detail.interestRateModel) {
610
- errors.push({
611
- code: "DEFAULT_APPLIED",
612
- severity: "warning",
613
- message: "Missing interestRateModel block; defaulted all model fields to 0/unknown.",
614
- locations: [dataIssueLocation(owner, "$.interestRateModel")],
615
- source: "eVaultV3",
616
- normalizedValue: DEFAULT_INTEREST_RATE_MODEL_BLOCK,
617
- });
618
- }
619
584
  const interestRateModelData = detail.interestRateModel ?? DEFAULT_INTEREST_RATE_MODEL_BLOCK;
620
- const interestRateModelType = mapInterestRateModelType(parseStringField(interestRateModelData.type, {
585
+ const interestRateModelType = mapInterestRateModelType(parseOptionalStringField(interestRateModelData.type, {
621
586
  path: "$.interestRateModel.type",
622
587
  owner,
623
588
  errors,
@@ -625,7 +590,7 @@ export function convertVault(detail, collateralRows, errors, fallbackAddress) {
625
590
  fallback: "unknown",
626
591
  }));
627
592
  const normalizedIRMData = normalizeIRMParams(interestRateModelType, interestRateModelData.data);
628
- const interestRateModelAddress = parseAddressField(interestRateModelData.address, {
593
+ const interestRateModelAddress = parseAddressField(interestRateModelData.address ?? ZERO_ADDRESS, {
629
594
  path: "$.interestRateModel.address",
630
595
  owner,
631
596
  errors,
@@ -666,17 +631,17 @@ export function convertVault(detail, collateralRows, errors, fallbackAddress) {
666
631
  data: null,
667
632
  params: null,
668
633
  };
669
- if (!detail.oraclePriceRaw) {
670
- errors.push({
671
- code: "DEFAULT_APPLIED",
672
- severity: "warning",
673
- message: "Missing oraclePriceRaw block; defaulted all oracle price fields to 0.",
674
- locations: [dataIssueLocation(owner, "$.oraclePriceRaw")],
675
- source: "eVaultV3",
676
- normalizedValue: DEFAULT_ORACLE_PRICE_BLOCK,
677
- });
678
- }
679
- const oraclePriceData = detail.oraclePriceRaw ?? DEFAULT_ORACLE_PRICE_BLOCK;
634
+ const oraclePriceRaw = detail.oraclePriceRaw
635
+ ? convertOraclePrice(detail.oraclePriceRaw, errors, "$.oraclePriceRaw", owner)
636
+ : {
637
+ queryFailure: true,
638
+ queryFailureReason: "0x",
639
+ amountIn: 0n,
640
+ amountOutMid: 0n,
641
+ amountOutBid: 0n,
642
+ amountOutAsk: 0n,
643
+ timestamp: 0,
644
+ };
680
645
  const timestamp = parseTimestampField(detail.timestamp, {
681
646
  path: "$.timestamp",
682
647
  owner,
@@ -684,13 +649,20 @@ export function convertVault(detail, collateralRows, errors, fallbackAddress) {
684
649
  source: "eVaultV3",
685
650
  });
686
651
  const collaterals = convertCollaterals(collateralRows, timestamp, vaultAddress, detail.chainId, errors);
687
- const unitOfAccount = normalizeUnitOfAccountToken(convertToken(unitOfAccountData, "$.unitOfAccount", owner, unitOfAccountErrors));
652
+ const unitOfAccount = normalizeUnitOfAccountToken(convertToken(unitOfAccountData, "$.unitOfAccount", owner, unitOfAccountErrors, { name: true, symbol: true, decimals: true }));
688
653
  return {
689
654
  type: VaultType.EVault,
690
655
  chainId: detail.chainId,
691
656
  address: vaultAddress,
692
- shares: convertToken(sharesData, "$.shares", owner, errors),
693
- asset: convertToken(assetData, "$.asset", owner, errors),
657
+ shares: convertToken(sharesData, "$.shares", owner, errors, {
658
+ name: true,
659
+ symbol: true,
660
+ decimals: true,
661
+ }),
662
+ asset: convertToken(assetData, "$.asset", owner, errors, {
663
+ name: true,
664
+ symbol: true,
665
+ }),
694
666
  unitOfAccount,
695
667
  totalShares: parseBigIntField(detail.totalShares, {
696
668
  path: "$.totalShares",
@@ -734,7 +706,7 @@ export function convertVault(detail, collateralRows, errors, fallbackAddress) {
734
706
  errors,
735
707
  source: "eVaultV3",
736
708
  }),
737
- balanceTracker: parseAddressField(detail.balanceTracker, {
709
+ balanceTracker: parseOptionalAddressField(detail.balanceTracker, {
738
710
  path: "$.balanceTracker",
739
711
  owner,
740
712
  errors,
@@ -749,13 +721,13 @@ export function convertVault(detail, collateralRows, errors, fallbackAddress) {
749
721
  interestRateModel,
750
722
  collaterals,
751
723
  isBorrowable: hasActiveBorrowableLtv(collaterals, timestamp),
752
- evcCompatibleAsset: parseBooleanField(detail.evcCompatibleAsset, {
724
+ evcCompatibleAsset: parseOptionalBooleanField(detail.evcCompatibleAsset, {
753
725
  path: "$.evcCompatibleAsset",
754
726
  owner,
755
727
  errors,
756
728
  source: "eVaultV3",
757
729
  }),
758
- oraclePriceRaw: convertOraclePrice(oraclePriceData, errors, "$.oraclePriceRaw", owner),
730
+ oraclePriceRaw,
759
731
  timestamp,
760
732
  };
761
733
  }