@1delta/margin-fetcher 0.0.31 → 0.0.33

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 (210) hide show
  1. package/dist/abis/oracle/UniV3.d.ts +50 -0
  2. package/dist/abis/oracle/UniV3.d.ts.map +1 -0
  3. package/dist/abis/oracle/UniV3.js +63 -0
  4. package/dist/assets/index.d.ts +3 -8
  5. package/dist/assets/index.d.ts.map +1 -1
  6. package/dist/assets/index.js +12 -30
  7. package/dist/assets/liquidityThresholds.d.ts.map +1 -1
  8. package/dist/assets/liquidityThresholds.js +3 -3
  9. package/dist/flash-liquidity/assets.d.ts.map +1 -1
  10. package/dist/flash-liquidity/assets.js +22 -13
  11. package/dist/flash-liquidity/fetchLiquidity.d.ts +2 -2
  12. package/dist/flash-liquidity/fetchLiquidity.d.ts.map +1 -1
  13. package/dist/flash-liquidity/fetchLiquidity.js +11 -10
  14. package/dist/flash-liquidity/utils.d.ts +3 -2
  15. package/dist/flash-liquidity/utils.d.ts.map +1 -1
  16. package/dist/flash-liquidity/utils.js +5 -5
  17. package/dist/lending/aave-v2-type/misc.d.ts +1 -1
  18. package/dist/lending/aave-v2-type/misc.d.ts.map +1 -1
  19. package/dist/lending/aave-v2-type/misc.js +7 -3
  20. package/dist/lending/aave-v2-type/publicCallBuild.d.ts +1 -1
  21. package/dist/lending/aave-v2-type/publicCallBuild.d.ts.map +1 -1
  22. package/dist/lending/aave-v2-type/publicCallBuild.js +11 -11
  23. package/dist/lending/aave-v2-type/publicCallParse.d.ts +1 -1
  24. package/dist/lending/aave-v2-type/publicCallParse.d.ts.map +1 -1
  25. package/dist/lending/aave-v2-type/publicCallParse.js +5 -5
  26. package/dist/lending/aave-v3-type/publicCallBuild.d.ts +1 -1
  27. package/dist/lending/aave-v3-type/publicCallBuild.d.ts.map +1 -1
  28. package/dist/lending/aave-v3-type/publicCallBuild.js +1 -1
  29. package/dist/lending/aave-v3-type/publicCallParse.d.ts +1 -1
  30. package/dist/lending/aave-v3-type/publicCallParse.d.ts.map +1 -1
  31. package/dist/lending/aave-v3-type/publicCallParse.js +5 -14
  32. package/dist/lending/addresses/aave.js +1 -1
  33. package/dist/lending/addresses/aaveV2.js +1 -1
  34. package/dist/lending/addresses/aurelius.js +1 -1
  35. package/dist/lending/addresses/compoundV3.d.ts +1 -1
  36. package/dist/lending/addresses/compoundV3.d.ts.map +1 -1
  37. package/dist/lending/addresses/compoundV3.js +5 -4
  38. package/dist/lending/addresses/contracts.d.ts +1 -1
  39. package/dist/lending/addresses/contracts.d.ts.map +1 -1
  40. package/dist/lending/addresses/contracts.js +1 -1
  41. package/dist/lending/addresses/hana.js +1 -1
  42. package/dist/lending/addresses/init.js +1 -1
  43. package/dist/lending/addresses/lendle.js +1 -1
  44. package/dist/lending/addresses/meridian.js +1 -1
  45. package/dist/lending/addresses/takotako.js +1 -1
  46. package/dist/lending/compound-v3/publicCallBuild.d.ts +1 -1
  47. package/dist/lending/compound-v3/publicCallBuild.d.ts.map +1 -1
  48. package/dist/lending/compound-v3/publicCallParse.d.ts +1 -1
  49. package/dist/lending/compound-v3/publicCallParse.d.ts.map +1 -1
  50. package/dist/lending/compound-v3/publicCallParse.js +3 -9
  51. package/dist/lending/fetchLender.d.ts +1 -1
  52. package/dist/lending/fetchLender.d.ts.map +1 -1
  53. package/dist/lending/fetchLender.js +1 -1
  54. package/dist/lending/fetchLenderAll.d.ts +1 -1
  55. package/dist/lending/fetchLenderAll.d.ts.map +1 -1
  56. package/dist/lending/fetchLenderAll.js +1 -1
  57. package/dist/lending/fetchLenderExt.d.ts +1 -1
  58. package/dist/lending/fetchLenderExt.d.ts.map +1 -1
  59. package/dist/lending/index.d.ts +1 -0
  60. package/dist/lending/index.d.ts.map +1 -1
  61. package/dist/lending/index.js +1 -0
  62. package/dist/lending/init/publicCallBuild.d.ts +1 -1
  63. package/dist/lending/init/publicCallBuild.d.ts.map +1 -1
  64. package/dist/lending/init/publicCallParse.d.ts +4 -4
  65. package/dist/lending/init/publicCallParse.d.ts.map +1 -1
  66. package/dist/lending/init/publicCallParse.js +7 -7
  67. package/dist/lending/meta/index.d.ts +19 -0
  68. package/dist/lending/meta/index.d.ts.map +1 -0
  69. package/dist/lending/meta/index.js +83 -0
  70. package/dist/lending/morpho/publicCallBuild.d.ts.map +1 -1
  71. package/dist/lending/user-data/aave-v2-type/userCallBuild.d.ts +1 -1
  72. package/dist/lending/user-data/aave-v2-type/userCallBuild.d.ts.map +1 -1
  73. package/dist/lending/user-data/aave-v2-type/userCallBuild.js +1 -1
  74. package/dist/lending/user-data/aave-v2-type/userCallParse.d.ts +2 -2
  75. package/dist/lending/user-data/aave-v2-type/userCallParse.d.ts.map +1 -1
  76. package/dist/lending/user-data/aave-v2-type/userCallParse.js +44 -38
  77. package/dist/lending/user-data/aave-v3-type/userCallBuild.d.ts +1 -1
  78. package/dist/lending/user-data/aave-v3-type/userCallBuild.d.ts.map +1 -1
  79. package/dist/lending/user-data/aave-v3-type/userCallParse.d.ts +1 -1
  80. package/dist/lending/user-data/aave-v3-type/userCallParse.d.ts.map +1 -1
  81. package/dist/lending/user-data/aave-v3-type/userCallParse.js +5 -5
  82. package/dist/lending/user-data/aave-v3-type/userCallParseYldr.d.ts +2 -2
  83. package/dist/lending/user-data/aave-v3-type/userCallParseYldr.d.ts.map +1 -1
  84. package/dist/lending/user-data/aave-v3-type/userCallParseYldr.js +15 -15
  85. package/dist/lending/user-data/abis.d.ts +1 -1
  86. package/dist/lending/user-data/abis.d.ts.map +1 -1
  87. package/dist/lending/user-data/compound-v3/userCallBuild.d.ts +1 -1
  88. package/dist/lending/user-data/compound-v3/userCallBuild.d.ts.map +1 -1
  89. package/dist/lending/user-data/compound-v3/userCallParse.d.ts +1 -1
  90. package/dist/lending/user-data/compound-v3/userCallParse.d.ts.map +1 -1
  91. package/dist/lending/user-data/compound-v3/userCallParse.js +4 -4
  92. package/dist/lending/user-data/init/userCallBuild.d.ts +2 -2
  93. package/dist/lending/user-data/init/userCallBuild.d.ts.map +1 -1
  94. package/dist/lending/user-data/init/userCallBuild.js +3 -3
  95. package/dist/lending/user-data/init/userCallParse.d.ts +1 -1
  96. package/dist/lending/user-data/init/userCallParse.d.ts.map +1 -1
  97. package/dist/lending/user-data/init/userCallParse.js +4 -4
  98. package/dist/lending/user-data/morpho/userCallBuild.d.ts +1 -1
  99. package/dist/lending/user-data/morpho/userCallBuild.d.ts.map +1 -1
  100. package/dist/lending/user-data/morpho/userCallBuild.js +6 -4
  101. package/dist/lending/user-data/morpho/userCallParse.d.ts +1 -1
  102. package/dist/lending/user-data/morpho/userCallParse.d.ts.map +1 -1
  103. package/dist/lending/user-data/morpho/userCallParse.js +5 -5
  104. package/dist/lending/user-data/types.js +1 -1
  105. package/dist/lending-pairs/computeLendingPairs.d.ts.map +1 -1
  106. package/dist/lending-pairs/computeLendingPairs.js +6 -6
  107. package/dist/prices/defillama/index.d.ts.map +1 -1
  108. package/dist/prices/defillama/index.js +21 -0
  109. package/dist/prices/main-prices/addresses/api3.js +1 -1
  110. package/dist/prices/main-prices/addresses/chainlink.js +1 -1
  111. package/dist/prices/main-prices/fetchOracleData.d.ts +6 -0
  112. package/dist/prices/main-prices/fetchOracleData.d.ts.map +1 -1
  113. package/dist/prices/main-prices/fetchOracleData.js +80 -20
  114. package/dist/types/index.d.ts +8 -2
  115. package/dist/types/index.d.ts.map +1 -1
  116. package/dist/types/index.js +2 -2
  117. package/dist/utils/constants.js +1 -1
  118. package/dist/utils/index.d.ts +2 -2
  119. package/dist/utils/index.d.ts.map +1 -1
  120. package/dist/utils/index.js +29 -26
  121. package/dist/utils/parsing.d.ts +1 -1
  122. package/dist/utils/parsing.d.ts.map +1 -1
  123. package/dist/utils/parsing.js +9 -8
  124. package/dist/yields/index.d.ts.map +1 -1
  125. package/dist/yields/index.js +7 -3
  126. package/package.json +2 -2
  127. package/src/abis/oracle/UniV3.ts +63 -0
  128. package/src/assets/index.ts +26 -66
  129. package/src/assets/liquidityThresholds.ts +55 -43
  130. package/src/flash-liquidity/assets.ts +68 -44
  131. package/src/flash-liquidity/fetchLiquidity.ts +13 -14
  132. package/src/flash-liquidity/utils.ts +22 -16
  133. package/src/lending/aave-v2-type/misc.ts +7 -3
  134. package/src/lending/aave-v2-type/publicCallBuild.ts +28 -17
  135. package/src/lending/aave-v2-type/publicCallParse.ts +5 -5
  136. package/src/lending/aave-v3-type/publicCallBuild.ts +1 -1
  137. package/src/lending/aave-v3-type/publicCallParse.ts +4 -14
  138. package/src/lending/addresses/aave.ts +1 -1
  139. package/src/lending/addresses/aaveV2.ts +1 -1
  140. package/src/lending/addresses/aurelius.ts +1 -1
  141. package/src/lending/addresses/compoundV3.ts +5 -12
  142. package/src/lending/addresses/contracts.ts +1 -1
  143. package/src/lending/addresses/hana.ts +1 -1
  144. package/src/lending/addresses/init.ts +1 -1
  145. package/src/lending/addresses/lendle.ts +1 -1
  146. package/src/lending/addresses/meridian.ts +1 -1
  147. package/src/lending/addresses/takotako.ts +1 -1
  148. package/src/lending/compound-v3/publicCallBuild.ts +1 -1
  149. package/src/lending/compound-v3/publicCallParse.ts +3 -10
  150. package/src/lending/fetchLender.ts +1 -1
  151. package/src/lending/fetchLenderAll.ts +1 -1
  152. package/src/lending/fetchLenderExt.ts +1 -1
  153. package/src/lending/index.ts +1 -0
  154. package/src/lending/init/publicCallBuild.ts +1 -1
  155. package/src/lending/init/publicCallParse.ts +64 -48
  156. package/src/lending/meta/index.ts +124 -0
  157. package/src/lending/morpho/publicCallBuild.ts +0 -1
  158. package/src/lending/user-data/aave-v2-type/userCallBuild.ts +1 -1
  159. package/src/lending/user-data/aave-v2-type/userCallParse.ts +181 -122
  160. package/src/lending/user-data/aave-v3-type/userCallBuild.ts +1 -1
  161. package/src/lending/user-data/aave-v3-type/userCallParse.ts +7 -8
  162. package/src/lending/user-data/aave-v3-type/userCallParseYldr.ts +37 -34
  163. package/src/lending/user-data/abis.ts +1 -1
  164. package/src/lending/user-data/compound-v3/userCallBuild.ts +1 -1
  165. package/src/lending/user-data/compound-v3/userCallParse.ts +4 -6
  166. package/src/lending/user-data/fetchUserData.ts +1 -1
  167. package/src/lending/user-data/init/userCallBuild.ts +11 -7
  168. package/src/lending/user-data/init/userCallParse.ts +5 -5
  169. package/src/lending/user-data/morpho/userCallBuild.ts +7 -4
  170. package/src/lending/user-data/morpho/userCallParse.ts +8 -5
  171. package/src/lending/user-data/types.ts +1 -1
  172. package/src/lending-pairs/computeLendingPairs.ts +6 -12
  173. package/src/prices/defillama/index.ts +24 -0
  174. package/src/prices/main-prices/addresses/api3.ts +1 -1
  175. package/src/prices/main-prices/addresses/chainlink.ts +1 -1
  176. package/src/prices/main-prices/fetchOracleData.ts +118 -20
  177. package/src/types/index.ts +10 -4
  178. package/src/utils/constants.ts +1 -1
  179. package/src/utils/index.ts +48 -39
  180. package/src/utils/parsing.ts +37 -35
  181. package/src/yields/index.ts +7 -3
  182. package/test/flashLiquidity.test.ts +6 -6
  183. package/test/index.test.ts +1 -1
  184. package/test/lenderData.test.ts +10 -11
  185. package/test/lenderDataBasic.test.ts +1 -1
  186. package/test/mainPriceMB.test.ts +1 -1
  187. package/test/mainPrices.test.ts +16 -15
  188. package/test/morpho.test.ts +1 -1
  189. package/test/morphoPrice.test.ts +1 -1
  190. package/test/userData.test.ts +2 -1
  191. package/test/userDataAave.test.ts +1 -1
  192. package/test/userDataAaveMainnet.test.ts +1 -1
  193. package/test/userDataAll.test.ts +2 -1
  194. package/test/userDataCompound.test.ts +2 -1
  195. package/test/userDataMorpho.test.ts +2 -1
  196. package/test/userDataMorphoEthereum.test.ts +2 -1
  197. package/test/userDataMorphoKatana.test.ts +2 -1
  198. package/test/utils.ts +11 -1
  199. package/dist/lending/user-data/morpho/userCallParseNoDeploy.d.ts +0 -11
  200. package/dist/lending/user-data/morpho/userCallParseNoDeploy.d.ts.map +0 -1
  201. package/dist/lending/user-data/morpho/userCallParseNoDeploy.js +0 -112
  202. package/dist/prices/main-prices/addresses/aaveOracles.d.ts +0 -300
  203. package/dist/prices/main-prices/addresses/aaveOracles.d.ts.map +0 -1
  204. package/dist/prices/main-prices/addresses/aaveOracles.js +0 -299
  205. package/dist/prices/main-prices/addresses/morpho.d.ts +0 -11
  206. package/dist/prices/main-prices/addresses/morpho.d.ts.map +0 -1
  207. package/dist/prices/main-prices/addresses/morpho.js +0 -2554
  208. package/src/lending/user-data/morpho/userCallParseNoDeploy.ts +0 -168
  209. package/src/prices/main-prices/addresses/aaveOracles.ts +0 -299
  210. package/src/prices/main-prices/addresses/morpho.ts +0 -2563
@@ -1,15 +1,16 @@
1
- import { Chain, Lender } from "@1delta/asset-registry";
2
- import { formatEther, formatUnits } from "viem";
3
- import { isCompoundV3 } from ".";
1
+ import { Chain } from '@1delta/chain-registry';
2
+ import { Lender } from '@1delta/lender-registry';
3
+ import { formatEther, formatUnits } from 'viem';
4
+ import { isCompoundV3 } from '.';
4
5
  export const BPS = 10000;
5
6
  export const parseRawAmount = (answer, decimals = 18) => {
6
- if (!answer || answer === "0x")
7
- return "0";
7
+ if (!answer || answer === '0x')
8
+ return '0';
8
9
  try {
9
- return formatUnits(BigInt(answer ?? "0"), decimals ?? 18);
10
+ return formatUnits(BigInt(answer ?? '0'), decimals ?? 18);
10
11
  }
11
12
  catch (e) {
12
- return "0";
13
+ return '0';
13
14
  }
14
15
  };
15
16
  export var TimeScale;
@@ -31,7 +32,7 @@ export const apyToApr = (apy) => {
31
32
  return ((apy + 1) ** (1 / SECONDS_PER_YEAR) - 1) * SECONDS_PER_YEAR;
32
33
  };
33
34
  export const apyToAprPercent = (apy) => {
34
- return 100 * ((apy / 100 + 1) ** (1 / SECONDS_PER_YEAR) - 1) * SECONDS_PER_YEAR;
35
+ return (100 * ((apy / 100 + 1) ** (1 / SECONDS_PER_YEAR) - 1) * SECONDS_PER_YEAR);
35
36
  };
36
37
  export const formatAaveYieldToNumber = (n) => {
37
38
  if (!n)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/yields/index.ts"],"names":[],"mappings":"AAkGA,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,qBAAqB,EAAE,GAAG,CAAA;IAC1B,oBAAoB,EAAE,GAAG,CAAA;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAA;IACxD,aAAa,EAAE;QACb,CAAC,OAAO,EAAE,MAAM,GAAG;YACjB,CAAC,MAAM,EAAE,MAAM,GAAG;gBAAE,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAA;aAAE,CAAA;SACzD,CAAA;KACF,CAAA;CACF;AAcD,eAAO,MAAM,kBAAkB,uCA4b9B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/yields/index.ts"],"names":[],"mappings":"AAkGA,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,qBAAqB,EAAE,GAAG,CAAA;IAC1B,oBAAoB,EAAE,GAAG,CAAA;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAA;IACxD,aAAa,EAAE;QACb,CAAC,OAAO,EAAE,MAAM,GAAG;YACjB,CAAC,MAAM,EAAE,MAAM,GAAG;gBAAE,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAA;aAAE,CAAA;SACzD,CAAA;KACF,CAAA;CACF;AAcD,eAAO,MAAM,kBAAkB,uCAgc9B,CAAA"}
@@ -120,8 +120,9 @@ export const fetchGeneralYields = async () => {
120
120
  return aYield + (wstethRes ?? 0);
121
121
  });
122
122
  const stmaticPromise = safeFetch('STMATIC', async () => {
123
- const res = await fetch(FeedData.STMATIC).then((r) => r.json());
124
- return Number(res.apr) * 0.9;
123
+ // const res = await fetch(FeedData.STMATIC).then((r) => r.json())
124
+ // return Number(res.apr) * 0.9
125
+ return 0;
125
126
  });
126
127
  const savaxPromise = safeFetch('SAVAX', async () => {
127
128
  const res = await fetch(FeedData.SAVAX).then((r) => r.json());
@@ -183,7 +184,10 @@ export const fetchGeneralYields = async () => {
183
184
  Object.entries(res).forEach(([addr, data]) => {
184
185
  const key = addressToAssetYearn[addr.toLowerCase()];
185
186
  if (key) {
186
- const apr = ((data.apr.netAPR ?? 0) + (data.apr.extra.extrinsicYield ?? 0)) * 100;
187
+ const apr = ((data.apr.netAPR ?? 0) +
188
+ (data.apr.extra.extrinsicYield ?? 0) +
189
+ (data.apr.extra.katanaNativeYield ?? 0)) *
190
+ 100;
187
191
  map[key] = apr;
188
192
  }
189
193
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1delta/margin-fetcher",
3
- "version": "0.0.31",
3
+ "version": "0.0.33",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,7 +17,7 @@
17
17
  "@types/async-retry": "^1.4.9",
18
18
  "async-retry": "^1.3.3",
19
19
  "typescript": "^5.9.2",
20
- "@1delta/providers": "0.0.10"
20
+ "@1delta/providers": "0.0.12"
21
21
  },
22
22
  "scripts": {
23
23
  "build": "tsc",
@@ -0,0 +1,63 @@
1
+ export const UniswapV3Abi = [
2
+ {
3
+ inputs: [],
4
+ name: 'protocolFees',
5
+ outputs: [
6
+ {
7
+ internalType: 'uint128',
8
+ name: 'token0',
9
+ type: 'uint128',
10
+ },
11
+ {
12
+ internalType: 'uint128',
13
+ name: 'token1',
14
+ type: 'uint128',
15
+ },
16
+ ],
17
+ stateMutability: 'view',
18
+ type: 'function',
19
+ },
20
+ {
21
+ inputs: [],
22
+ name: 'slot0',
23
+ outputs: [
24
+ {
25
+ internalType: 'uint160',
26
+ name: 'sqrtPriceX96',
27
+ type: 'uint160',
28
+ },
29
+ {
30
+ internalType: 'int24',
31
+ name: 'tick',
32
+ type: 'int24',
33
+ },
34
+ {
35
+ internalType: 'uint16',
36
+ name: 'observationIndex',
37
+ type: 'uint16',
38
+ },
39
+ {
40
+ internalType: 'uint16',
41
+ name: 'observationCardinality',
42
+ type: 'uint16',
43
+ },
44
+ {
45
+ internalType: 'uint16',
46
+ name: 'observationCardinalityNext',
47
+ type: 'uint16',
48
+ },
49
+ {
50
+ internalType: 'uint8',
51
+ name: 'feeProtocol',
52
+ type: 'uint8',
53
+ },
54
+ {
55
+ internalType: 'bool',
56
+ name: 'unlocked',
57
+ type: 'bool',
58
+ },
59
+ ],
60
+ stateMutability: 'view',
61
+ type: 'function',
62
+ },
63
+ ] as const
@@ -1,90 +1,50 @@
1
+ import { isAaveType, isCompoundV3 } from '../utils'
1
2
  import {
2
- AAVE_FORK_POOL_DATA,
3
- AAVE_STYLE_RESERVE_ASSETS,
4
- AAVE_STYLE_TOKENS,
5
- ASSET_META,
6
- COMPOUND_STYLE_RESERVE_ASSETS,
7
- COMPOUND_V2_STYLE_RESERVE_ASSETS,
8
- INIT_STYLE_RESERVE_ASSETS,
9
- Lender,
10
- SWAYLEND_RESERVE_ASSETS,
11
- } from "@1delta/asset-registry";
12
- import { isAaveType, isCompoundV3, isInit, isSwaylend } from "../utils";
3
+ aaveTokens,
4
+ aavePools,
5
+ aaveReserves,
6
+ compoundV3Reserves,
7
+ } from '@1delta/data-sdk'
13
8
 
14
9
  /** No specific configuration */
15
- export const LENDER_MODE_NO_MODE = 0;
10
+ export const LENDER_MODE_NO_MODE = 0
16
11
 
17
12
  export function getAaveStyleProtocolTokenMap(chainId: string, lender: string) {
18
- return AAVE_STYLE_TOKENS[lender]?.[chainId] as any;
13
+ return aaveTokens()?.[lender]?.[chainId] as any
19
14
  }
20
15
 
21
16
  export const getAaveAssets = (
22
17
  chainId: string | undefined,
23
- lendingProtocol: string = Lender.AAVE_V3
18
+ lendingProtocol: string | undefined,
24
19
  ): string[] => {
25
- if (isAaveType(lendingProtocol))
26
- return AAVE_STYLE_RESERVE_ASSETS[lendingProtocol]?.[chainId ?? "0"] ?? [];
27
- return [];
28
- };
29
-
30
- export const getInitAssets = (
31
- chainId: string | undefined,
32
- lendingProtocol = Lender.INIT
33
- ): string[] => {
34
- if (isInit(lendingProtocol))
35
- return INIT_STYLE_RESERVE_ASSETS[lendingProtocol]?.[chainId ?? "0"] ?? [];
36
- return [];
37
- };
20
+ if (isAaveType(lendingProtocol ?? ''))
21
+ return aaveReserves()?.[lendingProtocol ?? '']?.[chainId ?? ''] ?? []
22
+ return []
23
+ }
38
24
 
39
25
  export const getCompoundV3Assets = (
40
26
  chainId: string | undefined,
41
- lendingProtocol = Lender.COMPOUND_V3_USDCE
27
+ lendingProtocol: string | undefined,
42
28
  ): string[] => {
43
- if (isCompoundV3(lendingProtocol))
44
- return (
45
- COMPOUND_STYLE_RESERVE_ASSETS[lendingProtocol]?.[chainId ?? "0"] ?? []
46
- );
47
- return [];
48
- };
49
-
50
- export const getCompoundV2Assets = (
51
- chainId: string | undefined,
52
- lendingProtocol = Lender.VENUS
53
- ): string[] => {
54
- if (isCompoundV3(lendingProtocol))
55
- return (
56
- COMPOUND_V2_STYLE_RESERVE_ASSETS[lendingProtocol]?.[chainId ?? "0"] ?? []
57
- );
58
- return [];
59
- };
60
-
61
- export const getSwaylendAssets = (
62
- chainId: string | undefined,
63
- lendingProtocol = Lender.SWAYLEND_USDC
64
- ): string[] => {
65
- if (isSwaylend(lendingProtocol))
66
- return SWAYLEND_RESERVE_ASSETS[lendingProtocol]?.[chainId ?? "0"] ?? [];
67
- return [];
68
- };
29
+ if (isCompoundV3(lendingProtocol ?? ''))
30
+ return compoundV3Reserves()?.[lendingProtocol ?? '']?.[chainId ?? '']
31
+ return []
32
+ }
69
33
 
70
34
  export function getAaveTypePoolDataProviderAddress(
71
35
  chainId: string,
72
- lender: string
36
+ lender: string,
73
37
  ) {
74
38
  // @ts-ignore
75
- return AAVE_FORK_POOL_DATA[lender]?.[chainId]?.protocolDataProvider;
39
+ return aavePools()?.[lender]?.[chainId]?.protocolDataProvider
76
40
  }
77
41
 
78
42
  export function getAaveTypePoolAddress(
79
43
  chainId: string,
80
- lender: string
44
+ lender: string,
81
45
  ): string {
82
46
  // @ts-ignore
83
- return AAVE_FORK_POOL_DATA[lender]?.[chainId]?.pool;
84
- }
85
-
86
- export function getAssetMeta(chainId: string, asset: string | undefined) {
87
- return ASSET_META[chainId ?? "0"]?.[asset?.toLowerCase() ?? ""] as any;
47
+ return aavePools()?.[lender]?.[chainId]?.pool
88
48
  }
89
49
 
90
50
  /**
@@ -93,9 +53,9 @@ export function getAssetMeta(chainId: string, asset: string | undefined) {
93
53
  * @returns SupportedAsset
94
54
  */
95
55
  export const toOracleKey = (a: string) => {
96
- return a;
97
- };
56
+ return a
57
+ }
98
58
 
99
59
  export const toGenericPriceKey = (assetAddress: string, chainId: string) => {
100
- return chainId + "-" + assetAddress;
101
- };
60
+ return chainId + '-' + assetAddress
61
+ }
@@ -1,30 +1,32 @@
1
- import { Chain } from "@1delta/asset-registry";
1
+ import { Chain } from '@1delta/chain-registry'
2
2
 
3
3
  export interface LiquidityThresholds {
4
4
  /** Minimum total deposits in USD */
5
- minDepositsUSD: number;
5
+ minDepositsUSD: number
6
6
  /** Minimum total debt/borrows in USD */
7
- minDebtUSD: number;
7
+ minDebtUSD: number
8
8
  /** Minimum total liquidity in USD */
9
- minLiquidityUSD: number;
9
+ minLiquidityUSD: number
10
10
  }
11
11
 
12
12
  export const DEFAULT_LIQUIDITY_THRESHOLDS: LiquidityThresholds = {
13
- minDepositsUSD: 25_000,
14
- minDebtUSD: 10_000,
15
- minLiquidityUSD: 15_000,
16
- };
13
+ minDepositsUSD: 25_000,
14
+ minDebtUSD: 10_000,
15
+ minLiquidityUSD: 15_000,
16
+ }
17
17
 
18
- export const ASSET_GROUP_LIQUIDITY_THRESHOLDS: { [assetGroup: string]: LiquidityThresholds } = {
19
- 'USDC': {
18
+ export const ASSET_GROUP_LIQUIDITY_THRESHOLDS: {
19
+ [assetGroup: string]: LiquidityThresholds
20
+ } = {
21
+ USDC: {
20
22
  minDepositsUSD: 25_000,
21
23
  minDebtUSD: 5_000,
22
24
  minLiquidityUSD: 15_000,
23
25
  },
24
- };
26
+ }
25
27
 
26
28
  export const CHAIN_THRESHOLD_MULTIPLIERS: { [chainId: string]: number } = {
27
- [Chain.POLYGON_MAINNET]: 1.0,
29
+ [Chain.POLYGON_MAINNET]: 1.0,
28
30
  [Chain.ARBITRUM_ONE]: 1.0,
29
31
  [Chain.OP_MAINNET]: 1.0,
30
32
  [Chain.BASE]: 1.0,
@@ -34,69 +36,79 @@ export const CHAIN_THRESHOLD_MULTIPLIERS: { [chainId: string]: number } = {
34
36
  [Chain.SCROLL]: 0.8,
35
37
  [Chain.TAIKO_ALETHIA]: 0.6,
36
38
  [Chain.HEMI_NETWORK]: 0.6,
37
- };
39
+ }
38
40
 
39
41
  /**
40
42
  * Asset based overrides (per chain)
41
43
  * assetKey format: "chainId-assetAddress" (lowercase)
42
44
  */
43
- export const ASSET_SPECIFIC_THRESHOLDS: { [assetKey: string]: LiquidityThresholds } = {
44
-
45
- };
46
-
47
-
48
-
45
+ export const ASSET_SPECIFIC_THRESHOLDS: {
46
+ [assetKey: string]: LiquidityThresholds
47
+ } = {}
49
48
 
50
49
  export function getLiquidityThresholds(
51
- chainId: string,
52
- assetAddress: string,
53
- assetGroup?:string,
50
+ chainId: string,
51
+ assetAddress: string,
52
+ assetGroup?: string,
54
53
  ): LiquidityThresholds {
55
54
  // Check for asset overrides
56
- const assetKey = `${chainId}-${assetAddress.toLowerCase()}`;
55
+ const assetKey = `${chainId}-${assetAddress.toLowerCase()}`
57
56
  if (ASSET_SPECIFIC_THRESHOLDS[assetKey]) {
58
- return ASSET_SPECIFIC_THRESHOLDS[assetKey];
57
+ return ASSET_SPECIFIC_THRESHOLDS[assetKey]
59
58
  }
60
59
 
61
- let baseThresholds = assetGroup && ASSET_GROUP_LIQUIDITY_THRESHOLDS[assetGroup]
62
- ? ASSET_GROUP_LIQUIDITY_THRESHOLDS[assetGroup]
63
- : DEFAULT_LIQUIDITY_THRESHOLDS;
64
-
65
- const chainMultiplier = CHAIN_THRESHOLD_MULTIPLIERS[chainId] ?? 1.0;
66
-
60
+ let baseThresholds =
61
+ assetGroup && ASSET_GROUP_LIQUIDITY_THRESHOLDS[assetGroup]
62
+ ? ASSET_GROUP_LIQUIDITY_THRESHOLDS[assetGroup]
63
+ : DEFAULT_LIQUIDITY_THRESHOLDS
64
+
65
+ const chainMultiplier = CHAIN_THRESHOLD_MULTIPLIERS[chainId] ?? 1.0
66
+
67
67
  return {
68
68
  minDepositsUSD: Math.floor(baseThresholds.minDepositsUSD * chainMultiplier),
69
69
  minDebtUSD: Math.floor(baseThresholds.minDebtUSD * chainMultiplier),
70
- minLiquidityUSD: Math.floor(baseThresholds.minLiquidityUSD * chainMultiplier),
71
- };
70
+ minLiquidityUSD: Math.floor(
71
+ baseThresholds.minLiquidityUSD * chainMultiplier,
72
+ ),
73
+ }
72
74
  }
73
75
 
74
76
  export function meetsLiquidityThresholds(
75
- pool: { totalDepositsUSD: number; totalDebtUSD: number; totalLiquidityUSD: number },
76
- thresholds: LiquidityThresholds
77
+ pool: {
78
+ totalDepositsUSD: number
79
+ totalDebtUSD: number
80
+ totalLiquidityUSD: number
81
+ },
82
+ thresholds: LiquidityThresholds,
77
83
  ): boolean {
78
84
  return (
79
85
  pool.totalDepositsUSD >= thresholds.minDepositsUSD &&
80
86
  pool.totalDebtUSD >= thresholds.minDebtUSD &&
81
87
  pool.totalLiquidityUSD >= thresholds.minLiquidityUSD
82
- );
88
+ )
83
89
  }
84
90
 
85
91
  export function meetsLiquidityThresholdsLong(
86
- pool: { totalDepositsUSD: number; totalDebtUSD: number; totalLiquidityUSD: number },
87
- thresholds: LiquidityThresholds
92
+ pool: {
93
+ totalDepositsUSD: number
94
+ totalDebtUSD: number
95
+ totalLiquidityUSD: number
96
+ },
97
+ thresholds: LiquidityThresholds,
88
98
  ): boolean {
89
- return (
90
- pool.totalDepositsUSD >= thresholds.minDepositsUSD
91
- );
99
+ return pool.totalDepositsUSD >= thresholds.minDepositsUSD
92
100
  }
93
101
 
94
102
  export function meetsLiquidityThresholdsShort(
95
- pool: { totalDepositsUSD: number; totalDebtUSD: number; totalLiquidityUSD: number },
96
- thresholds: LiquidityThresholds
103
+ pool: {
104
+ totalDepositsUSD: number
105
+ totalDebtUSD: number
106
+ totalLiquidityUSD: number
107
+ },
108
+ thresholds: LiquidityThresholds,
97
109
  ): boolean {
98
110
  return (
99
111
  pool.totalDebtUSD >= thresholds.minDebtUSD &&
100
112
  pool.totalLiquidityUSD >= thresholds.minLiquidityUSD
101
- );
113
+ )
102
114
  }
@@ -1,61 +1,85 @@
1
- import { AAVE_STYLE_RESERVE_ASSETS, COMPOUND_STYLE_RESERVE_ASSETS, COMPOUND_V2_STYLE_RESERVE_ASSETS, MORPHO_BLUE_POOL_DATA } from "@1delta/asset-registry"
2
- import { BALANCER_V2_FORKS, BALANCER_V3_FORKS, UNISWAP_V4_FORKS } from "@1delta/dex-registry"
3
- import { uniq } from "lodash"
1
+ import {
2
+ aaveReserves,
3
+ compoundV2Reserves,
4
+ compoundV3Reserves,
5
+ morphoPools,
6
+ } from '@1delta/data-sdk'
7
+ import {
8
+ BALANCER_V2_FORKS,
9
+ BALANCER_V3_FORKS,
10
+ UNISWAP_V4_FORKS,
11
+ } from '@1delta/dex-registry'
12
+ import { uniq } from 'lodash'
4
13
 
5
14
  function createAssetArrayPerChain() {
6
- let assetsPerChain: { [chainId: string]: string[] } = {}
7
- Object.entries(COMPOUND_STYLE_RESERVE_ASSETS).forEach(([lender, data]) => {
8
-
9
- Object.entries(data).forEach(([chainId, assetArray]) => {
10
- if (!assetsPerChain[chainId]) assetsPerChain[chainId] = []
11
- assetsPerChain[chainId] = uniq([...assetsPerChain[chainId], ...assetArray])
12
- })
15
+ let assetsPerChain: { [chainId: string]: string[] } = {}
16
+ Object.entries(compoundV3Reserves() ?? {}).forEach(([lender, data]) => {
17
+ Object.entries(data).forEach(([chainId, assetArray]) => {
18
+ if (!assetsPerChain[chainId]) assetsPerChain[chainId] = []
19
+ assetsPerChain[chainId] = uniq([
20
+ ...assetsPerChain[chainId],
21
+ ...assetArray,
22
+ ])
13
23
  })
14
-
15
- Object.entries(AAVE_STYLE_RESERVE_ASSETS).forEach(([lender, data]) => {
16
- Object.entries(data).forEach(([chainId, assetArray]) => {
17
- if (!assetsPerChain[chainId]) assetsPerChain[chainId] = []
18
- assetsPerChain[chainId] = uniq([...assetsPerChain[chainId], ...assetArray])
19
- })
24
+ })
25
+
26
+ Object.entries(aaveReserves() ?? {}).forEach(([lender, data]) => {
27
+ Object.entries(data).forEach(([chainId, assetArray]) => {
28
+ if (!assetsPerChain[chainId]) assetsPerChain[chainId] = []
29
+ assetsPerChain[chainId] = uniq([
30
+ ...assetsPerChain[chainId],
31
+ ...assetArray,
32
+ ])
20
33
  })
21
-
22
- Object.entries(COMPOUND_V2_STYLE_RESERVE_ASSETS).forEach(([lender, data]) => {
23
- Object.entries(data).forEach(([chainId, assetArray]) => {
24
- if (!assetsPerChain[chainId]) assetsPerChain[chainId] = []
25
- assetsPerChain[chainId] = uniq([...assetsPerChain[chainId], ...assetArray])
26
- })
34
+ })
35
+
36
+ Object.entries(compoundV2Reserves() ?? {}).forEach(([lender, data]) => {
37
+ Object.entries(data).forEach(([chainId, assetArray]) => {
38
+ if (!assetsPerChain[chainId]) assetsPerChain[chainId] = []
39
+ assetsPerChain[chainId] = uniq([
40
+ ...assetsPerChain[chainId],
41
+ ...assetArray,
42
+ ])
27
43
  })
28
- return assetsPerChain
44
+ })
45
+ return assetsPerChain
29
46
  }
30
47
 
31
48
  export const RELEVANT_LENDING_ASSETS = createAssetArrayPerChain()
32
49
 
33
-
34
50
  interface PoolData {
35
- pool: string
36
- address: string
51
+ pool: string
52
+ address: string
37
53
  }
38
54
 
39
- function createSimpleArrayPerChain(fork: any, field: undefined | string = undefined) {
40
- let pools: { [chainId: string]: PoolData[] } = {}
41
- Object.entries(fork).forEach(([b2, data]: [string, any]) => {
42
- // @ts-ignore
43
- Object.entries(field ? data[field] : data).forEach(([chainId, address]: [string, any]) => {
44
- if (!pools[chainId]) pools[chainId] = []
45
- pools[chainId] = uniq([...pools[chainId], { address, pool: b2 }])
46
- })
47
- })
48
- return pools
55
+ function createSimpleArrayPerChain(
56
+ fork: any,
57
+ field: undefined | string = undefined,
58
+ ) {
59
+ let pools: { [chainId: string]: PoolData[] } = {}
60
+ Object.entries(fork ?? {}).forEach(([b2, data]: [string, any]) => {
61
+ // @ts-ignore
62
+ Object.entries(field ? data[field] : data).forEach(
63
+ ([chainId, address]: [string, any]) => {
64
+ if (!pools[chainId]) pools[chainId] = []
65
+ pools[chainId] = uniq([...pools[chainId], { address, pool: b2 }])
66
+ },
67
+ )
68
+ })
69
+ return pools
49
70
  }
50
71
 
72
+ export const RELEVANT_BALANCER_V2_FORKS =
73
+ createSimpleArrayPerChain(BALANCER_V2_FORKS)
51
74
 
52
- export const RELEVANT_BALANCER_V2_FORKS = createSimpleArrayPerChain(BALANCER_V2_FORKS)
53
-
54
-
55
- export const RELEVANT_MORPHOB_FORKS = createSimpleArrayPerChain(MORPHO_BLUE_POOL_DATA)
56
-
57
-
58
- export const RELEVANT_BALANCER_V3_FORKS = createSimpleArrayPerChain(BALANCER_V3_FORKS, "vault")
75
+ export const RELEVANT_MORPHOB_FORKS = createSimpleArrayPerChain(morphoPools())
59
76
 
77
+ export const RELEVANT_BALANCER_V3_FORKS = createSimpleArrayPerChain(
78
+ BALANCER_V3_FORKS,
79
+ 'vault',
80
+ )
60
81
 
61
- export const RELEVANT_UNISWAP_V4_FORKS = createSimpleArrayPerChain(UNISWAP_V4_FORKS, "pm")
82
+ export const RELEVANT_UNISWAP_V4_FORKS = createSimpleArrayPerChain(
83
+ UNISWAP_V4_FORKS,
84
+ 'pm',
85
+ )
@@ -1,9 +1,5 @@
1
- import {
2
- getAaveStyleProtocolTokenMap,
3
- getAaveTypePoolAddress,
4
- getAssetMeta,
5
- } from '../assets'
6
- import { AAVES_PER_CHAIN } from '../utils'
1
+ import { getAaveStyleProtocolTokenMap, getAaveTypePoolAddress } from '../assets'
2
+ import { getAavesForChain } from '../utils'
7
3
  import {
8
4
  RELEVANT_BALANCER_V2_FORKS,
9
5
  RELEVANT_BALANCER_V3_FORKS,
@@ -12,12 +8,12 @@ import {
12
8
  RELEVANT_UNISWAP_V4_FORKS,
13
9
  } from './assets'
14
10
  import { Call } from '../utils/multicall'
15
- import { MulticallRetryFunction } from '../types'
11
+ import { MulticallRetryFunction, TokenList } from '../types'
16
12
  import { FlashAbi } from '../abis/flashloan-united/flashAbi'
17
13
  import { FlashLiquiditiesOnChain, FlashLoanIds } from './types'
18
14
  import { FLASH_LOAN_IDS } from '@1delta/dex-registry'
19
15
  import { formatUnits, zeroAddress } from 'viem'
20
- import { AAVE_V2_LENDERS, AAVE_V3_LENDERS } from '@1delta/asset-registry'
16
+ import { AAVE_V2_LENDERS, AAVE_V3_LENDERS } from '@1delta/lender-registry'
21
17
  import _ from 'lodash'
22
18
  import { MULTICALL_ADDRESS } from '../utils/constants'
23
19
 
@@ -39,13 +35,16 @@ function getFlashLoanEnabled(data: bigint): boolean {
39
35
  export async function fetchFlashLiquidityForChain(
40
36
  chain: string,
41
37
  multicallRetry: MulticallRetryFunction,
38
+ list: TokenList = {},
42
39
  ) {
43
40
  let callLengths: { [l: string]: number } = {}
44
41
  let aaveAssets: { [l: string]: string[] } = {}
45
42
 
46
43
  let aaveCalls: Call[] = []
47
44
 
48
- const aaveProtocols = AAVES_PER_CHAIN[chain] ?? []
45
+ const aaves = getAavesForChain()
46
+
47
+ const aaveProtocols = aaves[chain] ?? []
49
48
 
50
49
  // we only ned to check aave flash liquidity for aave assets
51
50
  aaveProtocols.forEach((aaveFork) => {
@@ -205,7 +204,7 @@ export async function fetchFlashLiquidityForChain(
205
204
  currentOffset += callLen
206
205
 
207
206
  aaveAssets[aave].forEach((asset, i) => {
208
- const decimals = getAssetMeta(chain, asset)?.decimals
207
+ const decimals = list[asset]?.decimals
209
208
  const rawAmount = data[2 * i]
210
209
 
211
210
  const config = data[2 * i + 1]
@@ -237,7 +236,7 @@ export async function fetchFlashLiquidityForChain(
237
236
  currentOffset += callLen
238
237
 
239
238
  otherAssets.forEach((asset, i) => {
240
- const decimals = getAssetMeta(chain, asset)?.decimals
239
+ const decimals = list[asset]?.decimals
241
240
  const rawAmount = data[i]
242
241
  if (rawAmount > 0n) {
243
242
  if (!liquidity[asset]) liquidity[asset] = []
@@ -266,7 +265,7 @@ export async function fetchFlashLiquidityForChain(
266
265
  const rawAmount = data[i]
267
266
  if (rawAmount > 0n) {
268
267
  if (!liquidity[asset]) liquidity[asset] = []
269
- const decimals = getAssetMeta(chain, asset)?.decimals
268
+ const decimals = list[asset]?.decimals
270
269
  liquidity[asset].push({
271
270
  id: FLASH_LOAN_IDS[morpho.pool],
272
271
  name: morpho.pool,
@@ -289,7 +288,7 @@ export async function fetchFlashLiquidityForChain(
289
288
  currentOffset += callLen
290
289
 
291
290
  otherAssets.forEach((asset, i) => {
292
- const decimals = getAssetMeta(chain, asset)?.decimals
291
+ const decimals = list[asset]?.decimals
293
292
  const rawAmount = data[i]
294
293
  if (rawAmount > 0n) {
295
294
  if (!liquidity[asset]) liquidity[asset] = []
@@ -315,7 +314,7 @@ export async function fetchFlashLiquidityForChain(
315
314
  currentOffset += callLen
316
315
 
317
316
  otherAssets.forEach((asset, i) => {
318
- const decimals = getAssetMeta(chain, asset)?.decimals
317
+ const decimals = list[asset]?.decimals
319
318
  const rawAmount = data[i]
320
319
  if (rawAmount > 0n) {
321
320
  if (!liquidity[asset]) liquidity[asset] = []