@gearbox-protocol/sdk 14.12.0-next.66 → 14.12.0-next.68

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 (244) hide show
  1. package/dist/cjs/common-utils/index.js +2 -2
  2. package/dist/cjs/common-utils/utils/apy/calculate-safe-borrow-rate.js +3 -3
  3. package/dist/cjs/common-utils/utils/assets-math.js +7 -7
  4. package/dist/cjs/common-utils/utils/creditAccount/calc-health-factor.js +2 -2
  5. package/dist/cjs/common-utils/utils/creditAccount/debt.js +2 -2
  6. package/dist/cjs/common-utils/utils/creditAccount/quota-utils.js +5 -5
  7. package/dist/cjs/common-utils/utils/index.js +2 -2
  8. package/dist/cjs/common-utils/utils/strategies/leverage/calculate-max-leverage-factor.js +2 -2
  9. package/dist/cjs/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.js +5 -5
  10. package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-points.js +2 -2
  11. package/dist/cjs/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.js +2 -2
  12. package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-status.js +4 -4
  13. package/dist/cjs/model/history.js +28 -0
  14. package/dist/cjs/model/history.schema.js +84 -0
  15. package/dist/cjs/model/index.js +77 -0
  16. package/dist/cjs/model/liquidations.js +23 -0
  17. package/dist/cjs/model/liquidations.schema.js +93 -0
  18. package/dist/cjs/model/opportunities.js +55 -0
  19. package/dist/cjs/model/opportunities.schema.js +223 -0
  20. package/dist/cjs/model/package.json +1 -0
  21. package/dist/cjs/model/positions.js +1 -0
  22. package/dist/cjs/model/positions.schema.js +120 -0
  23. package/dist/cjs/model/primitives.js +1 -0
  24. package/dist/cjs/model/primitives.schema.js +85 -0
  25. package/dist/cjs/new-sdk/AbstractNamespace.js +158 -0
  26. package/dist/cjs/new-sdk/GearboxSDK.js +122 -0
  27. package/dist/cjs/new-sdk/index.js +11 -0
  28. package/dist/cjs/new-sdk/opportunities/OpportunitiesNamespace.js +122 -0
  29. package/dist/cjs/new-sdk/opportunities/index.js +4 -0
  30. package/dist/cjs/new-sdk/opportunities/types.js +1 -0
  31. package/dist/cjs/new-sdk/package.json +1 -0
  32. package/dist/cjs/new-sdk/types.js +22 -0
  33. package/dist/cjs/new-sdk/utils/history.js +1 -0
  34. package/dist/cjs/new-sdk/utils/index.js +2 -0
  35. package/dist/cjs/offchain/GearboxAPI.js +33 -0
  36. package/dist/cjs/offchain/index.js +8 -0
  37. package/dist/cjs/offchain/opportunities/OffchainOpportunities.js +97 -0
  38. package/dist/cjs/offchain/opportunities/index.js +4 -0
  39. package/dist/cjs/offchain/package.json +1 -0
  40. package/dist/cjs/offchain/types.js +1 -0
  41. package/dist/cjs/preview/preview/buildDelayedPreview.js +5 -5
  42. package/dist/cjs/rewards/rewards/api.js +2 -2
  43. package/dist/cjs/rewards/rewards/extra-apy.js +2 -2
  44. package/dist/cjs/sdk/MultichainSDK.js +18 -2
  45. package/dist/cjs/sdk/OnchainSDK.js +8 -1
  46. package/dist/cjs/sdk/accounts/index.js +2 -0
  47. package/dist/cjs/sdk/accounts/liquidations/LiquidationsService.js +161 -106
  48. package/dist/cjs/sdk/accounts/liquidations/MultichainLiquidationsService.js +32 -38
  49. package/dist/cjs/sdk/accounts/liquidations/constants.js +13 -0
  50. package/dist/cjs/sdk/accounts/liquidations/index.js +2 -0
  51. package/dist/cjs/sdk/base/MultichainConstruct.js +80 -0
  52. package/dist/cjs/sdk/base/TokensMeta.js +51 -0
  53. package/dist/cjs/sdk/base/index.js +2 -0
  54. package/dist/cjs/sdk/chain/chains.js +76 -0
  55. package/dist/cjs/sdk/chain/index.js +4 -0
  56. package/dist/cjs/sdk/core/errors.js +13 -0
  57. package/dist/cjs/sdk/core/index.js +2 -1
  58. package/dist/cjs/sdk/index.js +25 -1
  59. package/dist/cjs/sdk/market/MarketConfiguratorContract.js +14 -0
  60. package/dist/cjs/sdk/market/MarketSuite.js +159 -0
  61. package/dist/cjs/sdk/market/credit/CreditManagerV310Contract.js +26 -0
  62. package/dist/cjs/sdk/market/credit/CreditSuite.js +92 -0
  63. package/dist/cjs/sdk/market/math.js +104 -0
  64. package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +52 -0
  65. package/dist/cjs/sdk/market/pool/LinearInterestRateModelContract.js +30 -0
  66. package/dist/cjs/sdk/market/pool/PoolQuotaKeeperV310Contract.js +26 -0
  67. package/dist/cjs/sdk/market/pool/PoolSuite.js +28 -0
  68. package/dist/cjs/sdk/market/pool/PoolV310Contract.js +27 -0
  69. package/dist/cjs/sdk/market/pool/math.js +44 -0
  70. package/dist/cjs/sdk/market/pricefeeds/AbstractPriceFeed.js +17 -0
  71. package/dist/cjs/sdk/opportunities/MultichainOpportunitiesService.js +60 -0
  72. package/dist/cjs/sdk/opportunities/OpportunitiesService.js +48 -0
  73. package/dist/cjs/sdk/opportunities/index.js +12 -0
  74. package/dist/cjs/sdk/types/multichain.js +1 -0
  75. package/dist/cjs/{common-utils → sdk}/utils/bigint-math.js +11 -11
  76. package/dist/cjs/sdk/utils/index.js +3 -0
  77. package/dist/cjs/sdk/utils/zod.js +12 -0
  78. package/dist/esm/common-utils/index.js +1 -1
  79. package/dist/esm/common-utils/utils/apy/calculate-safe-borrow-rate.js +1 -1
  80. package/dist/esm/common-utils/utils/assets-math.js +1 -1
  81. package/dist/esm/common-utils/utils/creditAccount/calc-health-factor.js +1 -1
  82. package/dist/esm/common-utils/utils/creditAccount/debt.js +1 -1
  83. package/dist/esm/common-utils/utils/creditAccount/quota-utils.js +1 -1
  84. package/dist/esm/common-utils/utils/index.js +1 -1
  85. package/dist/esm/common-utils/utils/strategies/leverage/calculate-max-leverage-factor.js +1 -1
  86. package/dist/esm/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.js +1 -1
  87. package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-points.js +1 -1
  88. package/dist/esm/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.js +1 -1
  89. package/dist/esm/common-utils/utils/validation/validate-open-account-pool-status.js +1 -1
  90. package/dist/esm/dev/AccountOpener.js +1 -1
  91. package/dist/esm/dev/withdrawalUtils.js +1 -1
  92. package/dist/esm/model/history.js +26 -0
  93. package/dist/esm/model/history.schema.js +76 -0
  94. package/dist/esm/model/index.js +11 -0
  95. package/dist/esm/model/liquidations.js +22 -0
  96. package/dist/esm/model/liquidations.schema.js +85 -0
  97. package/dist/esm/model/opportunities.js +51 -0
  98. package/dist/esm/model/opportunities.schema.js +201 -0
  99. package/dist/esm/model/package.json +1 -0
  100. package/dist/esm/model/positions.js +1 -0
  101. package/dist/esm/model/positions.schema.js +109 -0
  102. package/dist/esm/model/primitives.js +1 -0
  103. package/dist/esm/model/primitives.schema.js +75 -0
  104. package/dist/esm/new-sdk/AbstractNamespace.js +157 -0
  105. package/dist/esm/new-sdk/GearboxSDK.js +121 -0
  106. package/dist/esm/new-sdk/index.js +7 -0
  107. package/dist/esm/new-sdk/opportunities/OpportunitiesNamespace.js +121 -0
  108. package/dist/esm/new-sdk/opportunities/index.js +3 -0
  109. package/dist/esm/new-sdk/opportunities/types.js +1 -0
  110. package/dist/esm/new-sdk/package.json +1 -0
  111. package/dist/esm/new-sdk/types.js +21 -0
  112. package/dist/esm/new-sdk/utils/history.js +1 -0
  113. package/dist/esm/new-sdk/utils/index.js +2 -0
  114. package/dist/esm/offchain/GearboxAPI.js +32 -0
  115. package/dist/esm/offchain/index.js +5 -0
  116. package/dist/esm/offchain/opportunities/OffchainOpportunities.js +95 -0
  117. package/dist/esm/offchain/opportunities/index.js +2 -0
  118. package/dist/esm/offchain/package.json +1 -0
  119. package/dist/esm/offchain/types.js +1 -0
  120. package/dist/esm/preview/preview/buildDelayedPreview.js +1 -1
  121. package/dist/esm/preview/simulate/simulatePoolOperation.js +1 -1
  122. package/dist/esm/preview/trace/extractTransfers.js +1 -1
  123. package/dist/esm/rewards/rewards/api.js +1 -1
  124. package/dist/esm/rewards/rewards/extra-apy.js +1 -1
  125. package/dist/esm/sdk/MultichainSDK.js +18 -2
  126. package/dist/esm/sdk/OnchainSDK.js +8 -1
  127. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +2 -2
  128. package/dist/esm/sdk/accounts/index.js +2 -2
  129. package/dist/esm/sdk/accounts/liquidations/LiquidationsService.js +164 -109
  130. package/dist/esm/sdk/accounts/liquidations/MultichainLiquidationsService.js +32 -38
  131. package/dist/esm/sdk/accounts/liquidations/constants.js +12 -1
  132. package/dist/esm/sdk/accounts/liquidations/index.js +2 -2
  133. package/dist/esm/sdk/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
  134. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
  135. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
  136. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
  137. package/dist/esm/sdk/base/MultichainConstruct.js +79 -0
  138. package/dist/esm/sdk/base/TokensMeta.js +53 -2
  139. package/dist/esm/sdk/base/index.js +2 -1
  140. package/dist/esm/sdk/chain/chains.js +74 -2
  141. package/dist/esm/sdk/chain/detectNetwork.js +1 -1
  142. package/dist/esm/sdk/chain/index.js +2 -2
  143. package/dist/esm/sdk/core/createAddressProvider.js +1 -1
  144. package/dist/esm/sdk/core/errors.js +13 -1
  145. package/dist/esm/sdk/core/index.js +2 -2
  146. package/dist/esm/sdk/index.js +11 -5
  147. package/dist/esm/sdk/market/MarketConfiguratorContract.js +14 -0
  148. package/dist/esm/sdk/market/MarketSuite.js +159 -0
  149. package/dist/esm/sdk/market/credit/CreditFacadeV310BaseContract.js +1 -1
  150. package/dist/esm/sdk/market/credit/CreditManagerV310Contract.js +26 -0
  151. package/dist/esm/sdk/market/credit/CreditSuite.js +92 -0
  152. package/dist/esm/sdk/market/math.js +98 -0
  153. package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +52 -0
  154. package/dist/esm/sdk/market/pool/LinearInterestRateModelContract.js +30 -0
  155. package/dist/esm/sdk/market/pool/PoolQuotaKeeperV310Contract.js +26 -0
  156. package/dist/esm/sdk/market/pool/PoolSuite.js +28 -0
  157. package/dist/esm/sdk/market/pool/PoolV310Contract.js +28 -1
  158. package/dist/esm/sdk/market/pool/math.js +41 -0
  159. package/dist/esm/sdk/market/pricefeeds/AbstractPriceFeed.js +17 -0
  160. package/dist/esm/sdk/market/zapper/IETHZapperContract.js +1 -1
  161. package/dist/esm/sdk/market/zapper/ZapperContract.js +1 -1
  162. package/dist/esm/sdk/opportunities/MultichainOpportunitiesService.js +59 -0
  163. package/dist/esm/sdk/opportunities/OpportunitiesService.js +47 -0
  164. package/dist/esm/sdk/opportunities/index.js +4 -0
  165. package/dist/esm/sdk/pools/PoolService.js +1 -1
  166. package/dist/esm/sdk/types/multichain.js +1 -0
  167. package/dist/esm/{common-utils → sdk}/utils/bigint-math.js +11 -11
  168. package/dist/esm/sdk/utils/index.js +3 -2
  169. package/dist/esm/sdk/utils/viem/simulateWithPriceUpdates.js +1 -1
  170. package/dist/esm/sdk/utils/zod.js +13 -2
  171. package/dist/types/common-utils/index.d.ts +1 -1
  172. package/dist/types/common-utils/utils/index.d.ts +1 -1
  173. package/dist/types/model/history.d.ts +105 -0
  174. package/dist/types/model/history.schema.d.ts +66 -0
  175. package/dist/types/model/index.d.ts +11 -0
  176. package/dist/types/model/liquidations.d.ts +238 -0
  177. package/dist/types/model/liquidations.schema.d.ts +294 -0
  178. package/dist/types/model/opportunities.d.ts +584 -0
  179. package/dist/types/model/opportunities.schema.d.ts +1037 -0
  180. package/dist/types/model/positions.d.ts +247 -0
  181. package/dist/types/model/positions.schema.d.ts +701 -0
  182. package/dist/types/model/primitives.d.ts +194 -0
  183. package/dist/types/model/primitives.schema.d.ts +81 -0
  184. package/dist/types/new-sdk/AbstractNamespace.d.ts +119 -0
  185. package/dist/types/new-sdk/GearboxSDK.d.ts +78 -0
  186. package/dist/types/new-sdk/index.d.ts +9 -0
  187. package/dist/types/new-sdk/opportunities/OpportunitiesNamespace.d.ts +69 -0
  188. package/dist/types/new-sdk/opportunities/index.d.ts +3 -0
  189. package/dist/types/new-sdk/opportunities/types.d.ts +66 -0
  190. package/dist/types/new-sdk/types.d.ts +149 -0
  191. package/dist/types/new-sdk/utils/history.d.ts +44 -0
  192. package/dist/types/new-sdk/utils/index.d.ts +2 -0
  193. package/dist/types/offchain/GearboxAPI.d.ts +31 -0
  194. package/dist/types/offchain/index.d.ts +5 -0
  195. package/dist/types/offchain/opportunities/OffchainOpportunities.d.ts +69 -0
  196. package/dist/types/offchain/opportunities/index.d.ts +2 -0
  197. package/dist/types/offchain/types.d.ts +50 -0
  198. package/dist/types/sdk/MultichainSDK.d.ts +15 -2
  199. package/dist/types/sdk/OnchainSDK.d.ts +9 -3
  200. package/dist/types/sdk/accounts/index.d.ts +3 -3
  201. package/dist/types/sdk/accounts/liquidations/LiquidationsService.d.ts +24 -16
  202. package/dist/types/sdk/accounts/liquidations/MultichainLiquidationsService.d.ts +26 -20
  203. package/dist/types/sdk/accounts/liquidations/constants.d.ts +12 -1
  204. package/dist/types/sdk/accounts/liquidations/index.d.ts +3 -3
  205. package/dist/types/sdk/accounts/liquidations/types.d.ts +34 -309
  206. package/dist/types/sdk/base/MultichainConstruct.d.ts +57 -0
  207. package/dist/types/sdk/base/TokensMeta.d.ts +26 -0
  208. package/dist/types/sdk/base/index.d.ts +2 -1
  209. package/dist/types/sdk/chain/chains.d.ts +68 -1
  210. package/dist/types/sdk/chain/index.d.ts +2 -2
  211. package/dist/types/sdk/core/errors.d.ts +10 -1
  212. package/dist/types/sdk/core/index.d.ts +2 -2
  213. package/dist/types/sdk/index.d.ts +15 -8
  214. package/dist/types/sdk/market/MarketConfiguratorContract.d.ts +9 -0
  215. package/dist/types/sdk/market/MarketSuite.d.ts +98 -1
  216. package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +14 -0
  217. package/dist/types/sdk/market/credit/CreditSuite.d.ts +43 -0
  218. package/dist/types/sdk/market/credit/types.d.ts +22 -0
  219. package/dist/types/sdk/market/index.d.ts +2 -2
  220. package/dist/types/sdk/market/math.d.ts +74 -0
  221. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +23 -0
  222. package/dist/types/sdk/market/oracle/types.d.ts +46 -0
  223. package/dist/types/sdk/market/pool/LinearInterestRateModelContract.d.ts +12 -0
  224. package/dist/types/sdk/market/pool/PoolQuotaKeeperV310Contract.d.ts +22 -1
  225. package/dist/types/sdk/market/pool/PoolSuite.d.ts +23 -0
  226. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +18 -0
  227. package/dist/types/sdk/market/pool/math.d.ts +57 -0
  228. package/dist/types/sdk/market/pool/types.d.ts +23 -0
  229. package/dist/types/sdk/market/pricefeeds/AbstractPriceFeed.d.ts +6 -0
  230. package/dist/types/sdk/market/pricefeeds/types.d.ts +10 -0
  231. package/dist/types/sdk/opportunities/MultichainOpportunitiesService.d.ts +40 -0
  232. package/dist/types/sdk/opportunities/OpportunitiesService.d.ts +42 -0
  233. package/dist/types/sdk/opportunities/index.d.ts +4 -0
  234. package/dist/types/sdk/types/index.d.ts +2 -1
  235. package/dist/types/sdk/types/multichain.d.ts +65 -0
  236. package/dist/types/sdk/types/state.d.ts +1 -1
  237. package/dist/types/sdk/types/transactions.d.ts +3 -0
  238. package/dist/types/{common-utils → sdk}/utils/bigint-math.d.ts +7 -11
  239. package/dist/types/sdk/utils/index.d.ts +3 -2
  240. package/dist/types/sdk/utils/zod.d.ts +6 -2
  241. package/package.json +16 -1
  242. package/dist/cjs/sdk/accounts/liquidations/helpers.js +0 -201
  243. package/dist/esm/sdk/accounts/liquidations/helpers.js +0 -192
  244. package/dist/types/sdk/accounts/liquidations/helpers.d.ts +0 -140
@@ -1,9 +1,9 @@
1
+ import { BigIntMath } from "../../sdk/utils/bigint-math.js";
1
2
  import { BONUS_APY_FROM_POINTS } from "./apy/bonus-apy-from-points.js";
2
3
  import { calculateBorrowRateFromUtilization } from "./apy/calculate-borrow-rate-from-utilization.js";
3
4
  import { PriceUtils } from "./price-math.js";
4
5
  import { calculateEarnings } from "./apy/calculate-earnings.js";
5
6
  import { calculateEffectiveBorrowRate } from "./apy/calculate-effective-borrow-rate.js";
6
- import { BigIntMath } from "./bigint-math.js";
7
7
  import { calculateSafeBorrowRate } from "./apy/calculate-safe-borrow-rate.js";
8
8
  import { getComplexAPYList } from "./apy/get-complex-apy-list.js";
9
9
  import { getRateWithFee } from "./apy/get-rate-with-fee.js";
@@ -1,6 +1,6 @@
1
+ import { BigIntMath } from "../../../../sdk/utils/bigint-math.js";
1
2
  import { PERCENTAGE_FACTOR } from "../../../../sdk/constants/math.js";
2
3
  import "../../../../sdk/index.js";
3
- import { BigIntMath } from "../../bigint-math.js";
4
4
  import { calculateLossCoefficient } from "./calculate-loss-coefficient.js";
5
5
  import { maxLeverage } from "./max-leverage.js";
6
6
  //#region src/common-utils/utils/strategies/leverage/calculate-max-leverage-factor.ts
@@ -1,5 +1,5 @@
1
+ import { BigIntMath } from "../../../../sdk/utils/bigint-math.js";
1
2
  import { LEVERAGE_DECIMALS, PERCENTAGE_FACTOR } from "../../../../sdk/constants/math.js";
2
- import { BigIntMath } from "../../bigint-math.js";
3
3
  import { calculateLossCoefficient } from "./calculate-loss-coefficient.js";
4
4
  import { maxLeverage } from "./max-leverage.js";
5
5
  //#region src/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.ts
@@ -1,6 +1,6 @@
1
+ import { BigIntMath } from "../../../../sdk/utils/bigint-math.js";
1
2
  import { LEVERAGE_DECIMALS, PERCENTAGE_FACTOR, PRICE_DECIMALS } from "../../../../sdk/constants/math.js";
2
3
  import { PriceUtils } from "../../price-math.js";
3
- import { BigIntMath } from "../../bigint-math.js";
4
4
  import { getPointsRates } from "../points/get-points-rates.js";
5
5
  //#region src/common-utils/utils/strategies/strategy-info/calculate-total-points.ts
6
6
  const THRESHOLD_POINTS = 1e3;
@@ -1,9 +1,9 @@
1
+ import { BigIntMath } from "../../../../sdk/utils/bigint-math.js";
1
2
  import { LEVERAGE_DECIMALS } from "../../../../sdk/constants/math.js";
2
3
  import { formatBN, toBN, toBigInt } from "../../../../sdk/utils/formatter.js";
3
4
  import { PriceUtils } from "../../price-math.js";
4
5
  import { calculateEarnings } from "../../apy/calculate-earnings.js";
5
6
  import { calculateEffectiveBorrowRate } from "../../apy/calculate-effective-borrow-rate.js";
6
- import { BigIntMath } from "../../bigint-math.js";
7
7
  import { getComplexAPYList } from "../../apy/get-complex-apy-list.js";
8
8
  import { getSafeBaseBorrowRate } from "../../apy/get-safe-base-borrow-rate.js";
9
9
  import { getCollateralByDebt } from "../leverage/get-collateral-by-debt.js";
@@ -1,4 +1,4 @@
1
- import { BigIntMath } from "../bigint-math.js";
1
+ import { BigIntMath } from "../../../sdk/utils/bigint-math.js";
2
2
  import { validateOpenAccountPoolQuotaStatus } from "./validate-open-account-pool-quota-status.js";
3
3
  //#region src/common-utils/utils/validation/validate-open-account-pool-status.ts
4
4
  function validateOpenAccountPoolStatus(props) {
@@ -1,9 +1,9 @@
1
- import { ierc20Abi } from "../abi/iERC20.js";
2
1
  import { iCreditFacadeV310Abi } from "../abi/310/generated.js";
3
2
  import { AddressMap } from "../sdk/utils/AddressMap.js";
4
3
  import { AddressSet } from "../sdk/utils/AddressSet.js";
5
4
  import { AssetsMap } from "../sdk/utils/AssetsMap.js";
6
5
  import { childLogger } from "../sdk/utils/childLogger.js";
6
+ import { ierc20Abi } from "../abi/iERC20.js";
7
7
  import "../sdk/constants/addresses.js";
8
8
  import { MAX_UINT256, PERCENTAGE_FACTOR } from "../sdk/constants/math.js";
9
9
  import { SDKConstruct } from "../sdk/base/SDKConstruct.js";
@@ -1,6 +1,6 @@
1
- import { iWithdrawalCompressorV313Abi } from "../abi/IWithdrawalCompressorV313.js";
2
1
  import { getNetworkType } from "../sdk/chain/chains.js";
3
2
  import { getWithdrawalCompressorAddress } from "../sdk/accounts/withdrawal-compressor/addresses.js";
3
+ import { iWithdrawalCompressorV313Abi } from "../abi/IWithdrawalCompressorV313.js";
4
4
  import "../sdk/index.js";
5
5
  import { iMidasDataFeedAbi, iMidasRedemptionVaultAbi, midasGatewayAbi, midasRedeemerAbi, midasRedemptionVaultPhantomTokenAbi, securitizeRedeemerAbi, securitizeRedemptionGatewayAbi, securitizeRedemptionPhantomTokenAbi } from "./withdrawalAbi.js";
6
6
  import { erc20Abi, hexToString, parseAbi, parseEther } from "viem";
@@ -0,0 +1,26 @@
1
+ //#region src/model/history.ts
2
+ /**
3
+ * Every {@link PoolHistoryMetric}, for callers that enumerate them.
4
+ **/
5
+ const POOL_HISTORY_METRICS = [
6
+ "depositApy",
7
+ "borrowApy",
8
+ "dieselRate",
9
+ "supplied",
10
+ "borrowed",
11
+ "availableLiquidity"
12
+ ];
13
+ /**
14
+ * Every {@link StrategyHistoryMetric}, for callers that enumerate them.
15
+ **/
16
+ const STRATEGY_HISTORY_METRICS = [
17
+ "netApy",
18
+ "borrowApy",
19
+ "collateralApy",
20
+ "tvl",
21
+ "collateralPrice",
22
+ "collateralUsdPrice",
23
+ "underlyingUsdPrice"
24
+ ];
25
+ //#endregion
26
+ export { POOL_HISTORY_METRICS, STRATEGY_HISTORY_METRICS };
@@ -0,0 +1,76 @@
1
+ import { timestampSchema } from "./primitives.schema.js";
2
+ import { opportunityKeySchema } from "./opportunities.schema.js";
3
+ import { z } from "zod/v4";
4
+ //#region src/model/history.schema.ts
5
+ /**
6
+ * Runtime schemas for {@link ./history.js}, see the note in
7
+ * `primitives.schema.ts` on why they are written by hand.
8
+ **/
9
+ /**
10
+ * {@link HistoryRange}
11
+ **/
12
+ const historyRangeSchema = z.union([
13
+ z.literal("1d"),
14
+ z.literal("1w"),
15
+ z.literal("1m"),
16
+ z.literal("1y"),
17
+ z.literal("max")
18
+ ]);
19
+ /**
20
+ * {@link PoolHistoryMetric}
21
+ **/
22
+ const poolHistoryMetricSchema = z.union([
23
+ z.literal("depositApy"),
24
+ z.literal("borrowApy"),
25
+ z.literal("dieselRate"),
26
+ z.literal("supplied"),
27
+ z.literal("borrowed"),
28
+ z.literal("availableLiquidity")
29
+ ]);
30
+ /**
31
+ * {@link StrategyHistoryMetric}
32
+ **/
33
+ const strategyHistoryMetricSchema = z.union([
34
+ z.literal("netApy"),
35
+ z.literal("borrowApy"),
36
+ z.literal("collateralApy"),
37
+ z.literal("tvl"),
38
+ z.literal("collateralPrice"),
39
+ z.literal("collateralUsdPrice"),
40
+ z.literal("underlyingUsdPrice")
41
+ ]);
42
+ /**
43
+ * {@link HistoryMetric}
44
+ **/
45
+ const historyMetricSchema = z.union([poolHistoryMetricSchema, strategyHistoryMetricSchema]);
46
+ /**
47
+ * {@link HistoryPoint}
48
+ **/
49
+ const historyPointSchema = z.object({
50
+ timestamp: timestampSchema,
51
+ value: z.number()
52
+ });
53
+ /**
54
+ * {@link HistoryChartMetadata}
55
+ *
56
+ * TODO: empty until the backend specifies the payload.
57
+ **/
58
+ const historyChartMetadataSchema = z.object({});
59
+ /**
60
+ * {@link HistorySeries}
61
+ **/
62
+ const historySeriesSchema = z.object({
63
+ metric: historyMetricSchema,
64
+ points: z.array(historyPointSchema),
65
+ metadata: historyChartMetadataSchema
66
+ });
67
+ /**
68
+ * {@link OpportunityHistoryQuery}
69
+ **/
70
+ const opportunityHistoryQuerySchema = z.object({
71
+ opportunity: opportunityKeySchema,
72
+ range: historyRangeSchema,
73
+ metric: historyMetricSchema
74
+ });
75
+ //#endregion
76
+ export { historyChartMetadataSchema, historyMetricSchema, historyPointSchema, historyRangeSchema, historySeriesSchema, opportunityHistoryQuerySchema, poolHistoryMetricSchema, strategyHistoryMetricSchema };
@@ -0,0 +1,11 @@
1
+ import { POOL_HISTORY_METRICS, STRATEGY_HISTORY_METRICS } from "./history.js";
2
+ import { amountSchema, assetTypeSchema, bpsSchema, chainIdSchema, curatorSchema, leverageSchema, timestampSchema, tokenAmountSchema, tokenSchema, txCallSchema } from "./primitives.schema.js";
3
+ import { apyBreakdownSchema, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterSchema, opportunityKeySchema, opportunityKindSchema, opportunitySchema, pointRewardsSchema, pointsProgramSchema, poolOpportunityDetailSchema, poolOpportunityKeySchema, poolOpportunitySchema, priceFeedDataSchema, priceFeedSummarySchema, quotaAssetSchema, rateCurvePointSchema, rateCurveSchema, rewardsSchema, strategyOpportunityDetailSchema, strategyOpportunityKeySchema, strategyOpportunitySchema, tokenRewardsSchema } from "./opportunities.schema.js";
4
+ import { historyChartMetadataSchema, historyMetricSchema, historyPointSchema, historyRangeSchema, historySeriesSchema, opportunityHistoryQuerySchema, poolHistoryMetricSchema, strategyHistoryMetricSchema } from "./history.schema.js";
5
+ import { matchesLiquidatableAccountFilter } from "./liquidations.js";
6
+ import { delayedReceivedAssetSchema, instantReceivedAssetSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionSchema, receivedAssetSchema } from "./liquidations.schema.js";
7
+ import { matchesOpportunityFilter, opportunityId, poolOpportunityId, strategyOpportunityId } from "./opportunities.js";
8
+ import "./positions.js";
9
+ import { pnlBreakdownSchema, pointsProgramPnLSchema, pointsRewardsPnLSchema, poolPositionSchema, positionCollateralSchema, positionFilterSchema, positionKindSchema, positionSchema, rewardsPnLSchema, strategyPositionSchema, tokenRewardsPnLSchema } from "./positions.schema.js";
10
+ import "./primitives.js";
11
+ export { POOL_HISTORY_METRICS, STRATEGY_HISTORY_METRICS, amountSchema, apyBreakdownSchema, assetTypeSchema, bpsSchema, chainIdSchema, curatorSchema, delayedReceivedAssetSchema, historyChartMetadataSchema, historyMetricSchema, historyPointSchema, historyRangeSchema, historySeriesSchema, instantReceivedAssetSchema, leverageSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionSchema, matchesLiquidatableAccountFilter, matchesOpportunityFilter, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterSchema, opportunityHistoryQuerySchema, opportunityId, opportunityKeySchema, opportunityKindSchema, opportunitySchema, pnlBreakdownSchema, pointRewardsSchema, pointsProgramPnLSchema, pointsProgramSchema, pointsRewardsPnLSchema, poolHistoryMetricSchema, poolOpportunityDetailSchema, poolOpportunityId, poolOpportunityKeySchema, poolOpportunitySchema, poolPositionSchema, positionCollateralSchema, positionFilterSchema, positionKindSchema, positionSchema, priceFeedDataSchema, priceFeedSummarySchema, quotaAssetSchema, rateCurvePointSchema, rateCurveSchema, receivedAssetSchema, rewardsPnLSchema, rewardsSchema, strategyHistoryMetricSchema, strategyOpportunityDetailSchema, strategyOpportunityId, strategyOpportunityKeySchema, strategyOpportunitySchema, strategyPositionSchema, timestampSchema, tokenAmountSchema, tokenRewardsPnLSchema, tokenRewardsSchema, tokenSchema, txCallSchema };
@@ -0,0 +1,22 @@
1
+ //#region src/model/liquidations.ts
2
+ /**
3
+ * Whether a liquidatable account satisfies every criterion of a filter.
4
+ *
5
+ * This is the single definition of what each criterion means: every source
6
+ * builds its rows first and runs them through here, so the chain and the
7
+ * backend cannot disagree on what a filter selects.
8
+ *
9
+ * @param account - Row to test.
10
+ * @param filter - Criteria to test against. An absent filter matches anything.
11
+ **/
12
+ function matchesLiquidatableAccountFilter(account, filter) {
13
+ if (!filter) return true;
14
+ if (filter.chainIds && !filter.chainIds.includes(account.chainId)) return false;
15
+ if (filter.underlyingType && account.totalValue.token.assetType !== filter.underlyingType) return false;
16
+ if (filter.paused !== void 0 && account.paused !== filter.paused) return false;
17
+ if (filter.rwa !== void 0 && account.rwa !== filter.rwa) return false;
18
+ if (filter.delayed !== void 0 && account.isDelayed !== filter.delayed) return false;
19
+ return true;
20
+ }
21
+ //#endregion
22
+ export { matchesLiquidatableAccountFilter };
@@ -0,0 +1,85 @@
1
+ import { ZodAddress } from "../sdk/utils/zod.js";
2
+ import { assetTypeSchema, chainIdSchema, timestampSchema, tokenAmountSchema, tokenSchema, txCallSchema } from "./primitives.schema.js";
3
+ import { z } from "zod/v4";
4
+ //#region src/model/liquidations.schema.ts
5
+ /**
6
+ * Runtime schemas for {@link ./liquidations.js}, see the note in
7
+ * `primitives.schema.ts` on why they are written by hand.
8
+ **/
9
+ /**
10
+ * {@link LiquidatableAccountFilter}
11
+ **/
12
+ const liquidatableAccountFilterSchema = z.object({
13
+ chainIds: z.array(chainIdSchema).optional(),
14
+ underlyingType: assetTypeSchema.optional(),
15
+ paused: z.boolean().optional(),
16
+ rwa: z.boolean().optional(),
17
+ delayed: z.boolean().optional()
18
+ });
19
+ /**
20
+ * {@link LiquidatableAccount}
21
+ **/
22
+ const liquidatableAccountSchema = z.object({
23
+ chainId: chainIdSchema,
24
+ creditAccount: ZodAddress(),
25
+ creditManager: ZodAddress(),
26
+ asset: tokenSchema,
27
+ totalValue: tokenAmountSchema,
28
+ repaymentAmount: tokenAmountSchema,
29
+ estimatedProfit: tokenAmountSchema,
30
+ isDelayed: z.boolean(),
31
+ paused: z.boolean(),
32
+ rwa: z.boolean()
33
+ });
34
+ /**
35
+ * {@link InstantReceivedAsset}
36
+ **/
37
+ const instantReceivedAssetSchema = z.object({
38
+ ...tokenAmountSchema.shape,
39
+ isDelayed: z.literal(false)
40
+ });
41
+ /**
42
+ * {@link DelayedReceivedAsset}
43
+ **/
44
+ const delayedReceivedAssetSchema = z.object({
45
+ ...tokenAmountSchema.shape,
46
+ isDelayed: z.literal(true),
47
+ redeemer: ZodAddress().optional(),
48
+ claimableAt: timestampSchema.optional()
49
+ });
50
+ /**
51
+ * {@link ReceivedAsset}
52
+ **/
53
+ const receivedAssetSchema = z.discriminatedUnion("isDelayed", [instantReceivedAssetSchema, delayedReceivedAssetSchema]);
54
+ /**
55
+ * {@link LiquidationApproval}
56
+ **/
57
+ const liquidationApprovalSchema = tokenAmountSchema.extend({ spender: ZodAddress() });
58
+ /**
59
+ * {@link LiquidationPosition}
60
+ **/
61
+ const liquidationPositionSchema = z.object({
62
+ kind: z.literal("liquidation"),
63
+ name: z.string(),
64
+ chainId: chainIdSchema,
65
+ sourceToken: tokenSchema,
66
+ output: tokenAmountSchema,
67
+ claimableAt: timestampSchema.optional(),
68
+ claimTx: txCallSchema.optional(),
69
+ redeemer: ZodAddress().optional()
70
+ });
71
+ /**
72
+ * {@link LiquidationDetails}
73
+ **/
74
+ const liquidationDetailsSchema = z.object({
75
+ ...liquidatableAccountSchema.shape,
76
+ repaymentAmount: tokenAmountSchema,
77
+ receivedAssets: z.array(receivedAssetSchema),
78
+ isLiquidatorEligible: z.boolean(),
79
+ isCreditAccountFrozen: z.boolean(),
80
+ kycProtocol: z.string().optional(),
81
+ kycToken: tokenSchema.optional(),
82
+ approve: liquidationApprovalSchema.optional()
83
+ });
84
+ //#endregion
85
+ export { delayedReceivedAssetSchema, instantReceivedAssetSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionSchema, receivedAssetSchema };
@@ -0,0 +1,51 @@
1
+ //#region src/model/opportunities.ts
2
+ /**
3
+ * Builds the canonical id of a pool opportunity.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * poolOpportunityId(1, "0xda00...") // "1:0xda00..."
8
+ * ```
9
+ **/
10
+ function poolOpportunityId(chainId, pool) {
11
+ return `${chainId}:${pool.toLowerCase()}`;
12
+ }
13
+ /**
14
+ * Builds the canonical id of a strategy opportunity.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * strategyOpportunityId(1, "0x3eb9...", "0x7f39...") // "1:0x3eb9...:0x7f39..."
19
+ * ```
20
+ **/
21
+ function strategyOpportunityId(chainId, creditManager, targetCollateral) {
22
+ return `${chainId}:${creditManager.toLowerCase()}:${targetCollateral.toLowerCase()}`;
23
+ }
24
+ /**
25
+ * Canonical id of any opportunity, dispatching on {@link Opportunity.kind}.
26
+ **/
27
+ function opportunityId(opportunity) {
28
+ return opportunity.kind === "pool" ? poolOpportunityId(opportunity.chainId, opportunity.pool) : strategyOpportunityId(opportunity.chainId, opportunity.creditManager, opportunity.targetCollateral.address);
29
+ }
30
+ /**
31
+ * Whether an opportunity satisfies every criterion of a filter.
32
+ *
33
+ * This is the single definition of what each criterion means: every source
34
+ * builds its rows first and runs them through here, so the chain and the
35
+ * backend cannot disagree on what a filter selects.
36
+ *
37
+ * @param opportunity - Row to test.
38
+ * @param filter - Criteria to test against. An absent filter matches anything.
39
+ **/
40
+ function matchesOpportunityFilter(opportunity, filter) {
41
+ if (!filter) return true;
42
+ if (filter.kind && opportunity.kind !== filter.kind) return false;
43
+ if (filter.chainIds && !filter.chainIds.includes(opportunity.chainId)) return false;
44
+ if (filter.underlyingType && opportunity.underlyingToken.assetType !== filter.underlyingType) return false;
45
+ if (filter.paused !== void 0 && opportunity.paused !== filter.paused) return false;
46
+ if (filter.sunset !== void 0 && opportunity.sunset !== filter.sunset) return false;
47
+ if (filter.rwa !== void 0 && opportunity.rwa !== filter.rwa) return false;
48
+ return true;
49
+ }
50
+ //#endregion
51
+ export { matchesOpportunityFilter, opportunityId, poolOpportunityId, strategyOpportunityId };
@@ -0,0 +1,201 @@
1
+ import { ZodAddress } from "../sdk/utils/zod.js";
2
+ import { amountSchema, assetTypeSchema, bpsSchema, chainIdSchema, curatorSchema, leverageSchema, timestampSchema, tokenSchema } from "./primitives.schema.js";
3
+ import { z } from "zod/v4";
4
+ //#region src/model/opportunities.schema.ts
5
+ /**
6
+ * Runtime schemas for {@link ./opportunities.js}, see the note in
7
+ * `primitives.schema.ts` on why they are written by hand.
8
+ **/
9
+ /**
10
+ * {@link OpportunityKind}
11
+ **/
12
+ const opportunityKindSchema = z.union([z.literal("pool"), z.literal("strategy")]);
13
+ /**
14
+ * {@link PointsProgram}
15
+ **/
16
+ const pointsProgramSchema = z.object({
17
+ id: z.string(),
18
+ name: z.string(),
19
+ multiplier: z.number().nullable()
20
+ });
21
+ /**
22
+ * {@link TokenRewards}
23
+ **/
24
+ const tokenRewardsSchema = z.object({
25
+ kind: z.literal("token"),
26
+ token: tokenSchema,
27
+ supplyApr: bpsSchema.optional(),
28
+ borrowApr: bpsSchema.optional()
29
+ });
30
+ /**
31
+ * {@link PointRewards}
32
+ **/
33
+ const pointRewardsSchema = z.object({
34
+ kind: z.literal("point"),
35
+ points: z.array(pointsProgramSchema)
36
+ });
37
+ /**
38
+ * {@link Rewards}
39
+ **/
40
+ const rewardsSchema = z.discriminatedUnion("kind", [tokenRewardsSchema, pointRewardsSchema]);
41
+ /**
42
+ * {@link ApyBreakdown}
43
+ **/
44
+ const apyBreakdownSchema = z.object({
45
+ totalApy: bpsSchema.optional(),
46
+ organicApy: bpsSchema,
47
+ rewards: z.array(rewardsSchema).optional()
48
+ });
49
+ /**
50
+ * {@link OpportunityBase}
51
+ **/
52
+ const opportunityBaseSchema = z.object({
53
+ chainId: chainIdSchema,
54
+ name: z.string(),
55
+ curator: curatorSchema,
56
+ underlyingToken: tokenSchema,
57
+ totalBorrow: amountSchema,
58
+ collateralTokens: z.array(tokenSchema),
59
+ paused: z.boolean(),
60
+ rwa: z.boolean(),
61
+ sunset: z.boolean()
62
+ });
63
+ /**
64
+ * {@link PoolOpportunity}
65
+ **/
66
+ const poolOpportunitySchema = z.object({
67
+ ...opportunityBaseSchema.shape,
68
+ kind: z.literal("pool"),
69
+ pool: ZodAddress(),
70
+ totalSupply: amountSchema,
71
+ utilization: bpsSchema,
72
+ supplyApy: apyBreakdownSchema
73
+ });
74
+ /**
75
+ * {@link StrategyOpportunity}
76
+ **/
77
+ const strategyOpportunitySchema = z.object({
78
+ ...opportunityBaseSchema.shape,
79
+ kind: z.literal("strategy"),
80
+ creditManager: ZodAddress(),
81
+ targetCollateral: tokenSchema,
82
+ liquidationThreshold: bpsSchema,
83
+ liquidationPremium: bpsSchema,
84
+ liquidationFee: bpsSchema,
85
+ expirationDate: timestampSchema.nullable(),
86
+ collateralApy: apyBreakdownSchema.optional(),
87
+ maxLeverageApy: apyBreakdownSchema.optional(),
88
+ borrowApy: bpsSchema.optional(),
89
+ additionalBorrowApy: bpsSchema.optional(),
90
+ totalValue: amountSchema.optional(),
91
+ utilization: bpsSchema.optional(),
92
+ maxBorrowAmount: amountSchema,
93
+ maxLeverage: leverageSchema
94
+ });
95
+ /**
96
+ * {@link Opportunity}
97
+ **/
98
+ const opportunitySchema = z.discriminatedUnion("kind", [poolOpportunitySchema, strategyOpportunitySchema]);
99
+ /**
100
+ * {@link OpportunityFilter}
101
+ **/
102
+ const opportunityFilterSchema = z.object({
103
+ kind: opportunityKindSchema.optional(),
104
+ chainIds: z.array(chainIdSchema).optional(),
105
+ underlyingType: assetTypeSchema.optional(),
106
+ paused: z.boolean().optional(),
107
+ sunset: z.boolean().optional(),
108
+ rwa: z.boolean().optional()
109
+ });
110
+ /**
111
+ * {@link RateCurvePoint}
112
+ **/
113
+ const rateCurvePointSchema = z.object({
114
+ utilization: bpsSchema,
115
+ supplyApy: bpsSchema,
116
+ borrowApy: bpsSchema
117
+ });
118
+ /**
119
+ * {@link RateCurve}
120
+ **/
121
+ const rateCurveSchema = z.object({
122
+ points: z.array(rateCurvePointSchema),
123
+ borrowingLimitUtilization: bpsSchema.nullable()
124
+ });
125
+ /**
126
+ * {@link QuotaAsset}
127
+ **/
128
+ const quotaAssetSchema = z.object({
129
+ token: tokenSchema,
130
+ quotaRate: bpsSchema,
131
+ limit: amountSchema,
132
+ used: amountSchema
133
+ });
134
+ /**
135
+ * {@link PriceFeedData}. Recursive: a composite feed lists the feeds it reads.
136
+ **/
137
+ const priceFeedDataSchema = z.object({
138
+ name: z.string(),
139
+ type: z.string(),
140
+ feedAddress: ZodAddress(),
141
+ get dependencies() {
142
+ return z.array(priceFeedDataSchema);
143
+ }
144
+ });
145
+ /**
146
+ * {@link PriceFeedSummary}
147
+ **/
148
+ const priceFeedSummarySchema = z.object({
149
+ underlyingPriceInUsd: z.number(),
150
+ collateralPriceInUsd: z.number(),
151
+ collateralPriceInUnderlying: z.number(),
152
+ underlyingFeed: priceFeedDataSchema,
153
+ collateralFeed: priceFeedDataSchema
154
+ });
155
+ /**
156
+ * {@link PoolOpportunityDetail}
157
+ **/
158
+ const poolOpportunityDetailSchema = z.object({
159
+ ...poolOpportunitySchema.shape,
160
+ rateCurve: rateCurveSchema,
161
+ quotaAssets: z.array(quotaAssetSchema)
162
+ });
163
+ /**
164
+ * {@link StrategyOpportunityDetail}
165
+ **/
166
+ const strategyOpportunityDetailSchema = z.object({
167
+ ...strategyOpportunitySchema.shape,
168
+ rateCurve: rateCurveSchema,
169
+ priceFeeds: priceFeedSummarySchema
170
+ });
171
+ /**
172
+ * {@link OpportunityDetail}
173
+ **/
174
+ const opportunityDetailSchema = z.discriminatedUnion("kind", [poolOpportunityDetailSchema, strategyOpportunityDetailSchema]);
175
+ /**
176
+ * {@link PoolOpportunityKey}
177
+ **/
178
+ const poolOpportunityKeySchema = z.object({
179
+ chainId: chainIdSchema,
180
+ pool: ZodAddress()
181
+ });
182
+ /**
183
+ * {@link StrategyOpportunityKey}
184
+ **/
185
+ const strategyOpportunityKeySchema = z.object({
186
+ chainId: chainIdSchema,
187
+ creditManager: ZodAddress(),
188
+ targetCollateral: ZodAddress()
189
+ });
190
+ /**
191
+ * {@link OpportunityKey}
192
+ **/
193
+ const opportunityKeySchema = z.discriminatedUnion("kind", [z.object({
194
+ kind: z.literal("pool"),
195
+ ...poolOpportunityKeySchema.shape
196
+ }), z.object({
197
+ kind: z.literal("strategy"),
198
+ ...strategyOpportunityKeySchema.shape
199
+ })]);
200
+ //#endregion
201
+ export { apyBreakdownSchema, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterSchema, opportunityKeySchema, opportunityKindSchema, opportunitySchema, pointRewardsSchema, pointsProgramSchema, poolOpportunityDetailSchema, poolOpportunityKeySchema, poolOpportunitySchema, priceFeedDataSchema, priceFeedSummarySchema, quotaAssetSchema, rateCurvePointSchema, rateCurveSchema, rewardsSchema, strategyOpportunityDetailSchema, strategyOpportunityKeySchema, strategyOpportunitySchema, tokenRewardsSchema };
@@ -0,0 +1 @@
1
+ {"type": "module","sideEffects":false}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,109 @@
1
+ import { ZodAddress } from "../sdk/utils/zod.js";
2
+ import { assetTypeSchema, bpsSchema, chainIdSchema, leverageSchema, tokenAmountSchema, tokenSchema } from "./primitives.schema.js";
3
+ import { apyBreakdownSchema, pointsProgramSchema } from "./opportunities.schema.js";
4
+ import { delayedReceivedAssetSchema, liquidationPositionSchema } from "./liquidations.schema.js";
5
+ import { z } from "zod/v4";
6
+ //#region src/model/positions.schema.ts
7
+ /**
8
+ * Runtime schemas for {@link ./positions.js}, see the note in
9
+ * `primitives.schema.ts` on why they are written by hand.
10
+ **/
11
+ /**
12
+ * {@link PositionKind}
13
+ **/
14
+ const positionKindSchema = z.union([
15
+ z.literal("pool"),
16
+ z.literal("strategy"),
17
+ z.literal("liquidation")
18
+ ]);
19
+ /**
20
+ * {@link TokenRewardsPnL}
21
+ **/
22
+ const tokenRewardsPnLSchema = z.object({
23
+ ...tokenAmountSchema.shape,
24
+ kind: z.literal("token")
25
+ });
26
+ /**
27
+ * {@link PointsProgramPnL}
28
+ **/
29
+ const pointsProgramPnLSchema = z.object({
30
+ ...pointsProgramSchema.shape,
31
+ value: z.number()
32
+ });
33
+ /**
34
+ * {@link PointsRewardsPnL}
35
+ **/
36
+ const pointsRewardsPnLSchema = z.object({
37
+ kind: z.literal("point"),
38
+ points: z.array(pointsProgramPnLSchema)
39
+ });
40
+ /**
41
+ * {@link RewardsPnL}
42
+ **/
43
+ const rewardsPnLSchema = z.discriminatedUnion("kind", [tokenRewardsPnLSchema, pointsRewardsPnLSchema]);
44
+ /**
45
+ * {@link PnlBreakdown}
46
+ **/
47
+ const pnlBreakdownSchema = z.object({
48
+ organic: tokenAmountSchema,
49
+ total: tokenAmountSchema,
50
+ rewards: z.array(rewardsPnLSchema)
51
+ });
52
+ /**
53
+ * {@link PositionCollateral}
54
+ **/
55
+ const positionCollateralSchema = z.object({
56
+ collateral: tokenAmountSchema,
57
+ quota: tokenAmountSchema,
58
+ withdrawals: z.array(delayedReceivedAssetSchema)
59
+ });
60
+ /**
61
+ * {@link PoolPosition}
62
+ **/
63
+ const poolPositionSchema = z.object({
64
+ kind: z.literal("pool"),
65
+ name: z.string(),
66
+ chainId: chainIdSchema,
67
+ pool: ZodAddress(),
68
+ netValue: tokenAmountSchema,
69
+ apy: apyBreakdownSchema,
70
+ pnl: pnlBreakdownSchema.optional()
71
+ });
72
+ /**
73
+ * {@link StrategyPosition}
74
+ **/
75
+ const strategyPositionSchema = z.object({
76
+ kind: z.literal("strategy"),
77
+ name: z.string(),
78
+ chainId: chainIdSchema,
79
+ creditManager: ZodAddress(),
80
+ creditAccount: ZodAddress(),
81
+ targetCollateral: tokenSchema.nullable(),
82
+ leverage: leverageSchema,
83
+ borrowApy: bpsSchema,
84
+ netApy: apyBreakdownSchema.optional(),
85
+ totalDebt: tokenAmountSchema,
86
+ totalValue: tokenAmountSchema,
87
+ healthFactor: bpsSchema,
88
+ pnl: pnlBreakdownSchema.optional(),
89
+ collaterals: z.array(positionCollateralSchema)
90
+ });
91
+ /**
92
+ * {@link Position}
93
+ **/
94
+ const positionSchema = z.discriminatedUnion("kind", [
95
+ poolPositionSchema,
96
+ strategyPositionSchema,
97
+ liquidationPositionSchema
98
+ ]);
99
+ /**
100
+ * {@link PositionFilter}
101
+ **/
102
+ const positionFilterSchema = z.object({
103
+ kind: positionKindSchema.optional(),
104
+ isZeroDebt: z.boolean().optional(),
105
+ chainIds: z.array(chainIdSchema).optional(),
106
+ underlyingType: assetTypeSchema.optional()
107
+ });
108
+ //#endregion
109
+ export { pnlBreakdownSchema, pointsProgramPnLSchema, pointsRewardsPnLSchema, poolPositionSchema, positionCollateralSchema, positionFilterSchema, positionKindSchema, positionSchema, rewardsPnLSchema, strategyPositionSchema, tokenRewardsPnLSchema };
@@ -0,0 +1 @@
1
+ export {};