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

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 (225) 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 +64 -0
  16. package/dist/cjs/model/liquidations.js +23 -0
  17. package/dist/cjs/model/liquidations.schema.js +91 -0
  18. package/dist/cjs/model/opportunities.js +55 -0
  19. package/dist/cjs/model/opportunities.schema.js +220 -0
  20. package/dist/cjs/model/package.json +1 -0
  21. package/dist/cjs/model/positions.js +1 -0
  22. package/dist/cjs/model/primitives.js +1 -0
  23. package/dist/cjs/model/primitives.schema.js +85 -0
  24. package/dist/cjs/new-sdk/AbstractNamespace.js +158 -0
  25. package/dist/cjs/new-sdk/GearboxSDK.js +122 -0
  26. package/dist/cjs/new-sdk/index.js +11 -0
  27. package/dist/cjs/new-sdk/opportunities/OpportunitiesNamespace.js +122 -0
  28. package/dist/cjs/new-sdk/opportunities/index.js +4 -0
  29. package/dist/cjs/new-sdk/opportunities/types.js +1 -0
  30. package/dist/cjs/new-sdk/package.json +1 -0
  31. package/dist/cjs/new-sdk/types.js +22 -0
  32. package/dist/cjs/new-sdk/utils/history.js +1 -0
  33. package/dist/cjs/new-sdk/utils/index.js +2 -0
  34. package/dist/cjs/offchain/GearboxAPI.js +33 -0
  35. package/dist/cjs/offchain/index.js +8 -0
  36. package/dist/cjs/offchain/opportunities/OffchainOpportunities.js +97 -0
  37. package/dist/cjs/offchain/opportunities/index.js +4 -0
  38. package/dist/cjs/offchain/package.json +1 -0
  39. package/dist/cjs/offchain/types.js +1 -0
  40. package/dist/cjs/preview/preview/buildDelayedPreview.js +5 -5
  41. package/dist/cjs/rewards/rewards/api.js +2 -2
  42. package/dist/cjs/rewards/rewards/extra-apy.js +2 -2
  43. package/dist/cjs/sdk/MultichainSDK.js +18 -2
  44. package/dist/cjs/sdk/OnchainSDK.js +8 -1
  45. package/dist/cjs/sdk/accounts/index.js +2 -0
  46. package/dist/cjs/sdk/accounts/liquidations/LiquidationsService.js +150 -106
  47. package/dist/cjs/sdk/accounts/liquidations/MultichainLiquidationsService.js +32 -38
  48. package/dist/cjs/sdk/accounts/liquidations/constants.js +13 -0
  49. package/dist/cjs/sdk/accounts/liquidations/index.js +2 -0
  50. package/dist/cjs/sdk/base/MultichainConstruct.js +80 -0
  51. package/dist/cjs/sdk/base/TokensMeta.js +51 -0
  52. package/dist/cjs/sdk/base/index.js +2 -0
  53. package/dist/cjs/sdk/chain/chains.js +76 -0
  54. package/dist/cjs/sdk/chain/index.js +4 -0
  55. package/dist/cjs/sdk/core/errors.js +13 -0
  56. package/dist/cjs/sdk/core/index.js +2 -1
  57. package/dist/cjs/sdk/index.js +25 -1
  58. package/dist/cjs/sdk/market/MarketConfiguratorContract.js +14 -0
  59. package/dist/cjs/sdk/market/MarketSuite.js +163 -0
  60. package/dist/cjs/sdk/market/credit/CreditManagerV310Contract.js +26 -0
  61. package/dist/cjs/sdk/market/credit/CreditSuite.js +102 -0
  62. package/dist/cjs/sdk/market/math.js +104 -0
  63. package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +52 -0
  64. package/dist/cjs/sdk/market/pool/LinearInterestRateModelContract.js +30 -0
  65. package/dist/cjs/sdk/market/pool/PoolQuotaKeeperV310Contract.js +26 -0
  66. package/dist/cjs/sdk/market/pool/PoolSuite.js +28 -0
  67. package/dist/cjs/sdk/market/pool/PoolV310Contract.js +27 -0
  68. package/dist/cjs/sdk/market/pool/math.js +44 -0
  69. package/dist/cjs/sdk/market/pricefeeds/AbstractPriceFeed.js +17 -0
  70. package/dist/cjs/sdk/opportunities/MultichainOpportunitiesService.js +60 -0
  71. package/dist/cjs/sdk/opportunities/OpportunitiesService.js +103 -0
  72. package/dist/cjs/sdk/opportunities/index.js +12 -0
  73. package/dist/cjs/sdk/types/multichain.js +1 -0
  74. package/dist/cjs/{common-utils → sdk}/utils/bigint-math.js +11 -11
  75. package/dist/cjs/sdk/utils/index.js +3 -0
  76. package/dist/cjs/sdk/utils/zod.js +12 -0
  77. package/dist/esm/common-utils/index.js +1 -1
  78. package/dist/esm/common-utils/utils/apy/calculate-safe-borrow-rate.js +1 -1
  79. package/dist/esm/common-utils/utils/assets-math.js +1 -1
  80. package/dist/esm/common-utils/utils/creditAccount/calc-health-factor.js +1 -1
  81. package/dist/esm/common-utils/utils/creditAccount/debt.js +1 -1
  82. package/dist/esm/common-utils/utils/creditAccount/quota-utils.js +1 -1
  83. package/dist/esm/common-utils/utils/index.js +1 -1
  84. package/dist/esm/common-utils/utils/strategies/leverage/calculate-max-leverage-factor.js +1 -1
  85. package/dist/esm/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.js +1 -1
  86. package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-points.js +1 -1
  87. package/dist/esm/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.js +1 -1
  88. package/dist/esm/common-utils/utils/validation/validate-open-account-pool-status.js +1 -1
  89. package/dist/esm/model/history.js +26 -0
  90. package/dist/esm/model/history.schema.js +76 -0
  91. package/dist/esm/model/index.js +9 -0
  92. package/dist/esm/model/liquidations.js +22 -0
  93. package/dist/esm/model/liquidations.schema.js +83 -0
  94. package/dist/esm/model/opportunities.js +51 -0
  95. package/dist/esm/model/opportunities.schema.js +198 -0
  96. package/dist/esm/model/package.json +1 -0
  97. package/dist/esm/model/positions.js +1 -0
  98. package/dist/esm/model/primitives.js +1 -0
  99. package/dist/esm/model/primitives.schema.js +75 -0
  100. package/dist/esm/new-sdk/AbstractNamespace.js +157 -0
  101. package/dist/esm/new-sdk/GearboxSDK.js +121 -0
  102. package/dist/esm/new-sdk/index.js +7 -0
  103. package/dist/esm/new-sdk/opportunities/OpportunitiesNamespace.js +121 -0
  104. package/dist/esm/new-sdk/opportunities/index.js +3 -0
  105. package/dist/esm/new-sdk/opportunities/types.js +1 -0
  106. package/dist/esm/new-sdk/package.json +1 -0
  107. package/dist/esm/new-sdk/types.js +21 -0
  108. package/dist/esm/new-sdk/utils/history.js +1 -0
  109. package/dist/esm/new-sdk/utils/index.js +2 -0
  110. package/dist/esm/offchain/GearboxAPI.js +32 -0
  111. package/dist/esm/offchain/index.js +5 -0
  112. package/dist/esm/offchain/opportunities/OffchainOpportunities.js +95 -0
  113. package/dist/esm/offchain/opportunities/index.js +2 -0
  114. package/dist/esm/offchain/package.json +1 -0
  115. package/dist/esm/offchain/types.js +1 -0
  116. package/dist/esm/preview/preview/buildDelayedPreview.js +1 -1
  117. package/dist/esm/rewards/rewards/api.js +1 -1
  118. package/dist/esm/rewards/rewards/extra-apy.js +1 -1
  119. package/dist/esm/sdk/MultichainSDK.js +18 -2
  120. package/dist/esm/sdk/OnchainSDK.js +8 -1
  121. package/dist/esm/sdk/accounts/index.js +2 -2
  122. package/dist/esm/sdk/accounts/liquidations/LiquidationsService.js +152 -108
  123. package/dist/esm/sdk/accounts/liquidations/MultichainLiquidationsService.js +32 -38
  124. package/dist/esm/sdk/accounts/liquidations/constants.js +12 -1
  125. package/dist/esm/sdk/accounts/liquidations/index.js +2 -2
  126. package/dist/esm/sdk/base/MultichainConstruct.js +79 -0
  127. package/dist/esm/sdk/base/TokensMeta.js +51 -0
  128. package/dist/esm/sdk/base/index.js +2 -1
  129. package/dist/esm/sdk/chain/chains.js +74 -2
  130. package/dist/esm/sdk/chain/index.js +2 -2
  131. package/dist/esm/sdk/core/errors.js +13 -1
  132. package/dist/esm/sdk/core/index.js +2 -2
  133. package/dist/esm/sdk/index.js +11 -5
  134. package/dist/esm/sdk/market/MarketConfiguratorContract.js +14 -0
  135. package/dist/esm/sdk/market/MarketSuite.js +163 -0
  136. package/dist/esm/sdk/market/credit/CreditManagerV310Contract.js +26 -0
  137. package/dist/esm/sdk/market/credit/CreditSuite.js +102 -0
  138. package/dist/esm/sdk/market/math.js +98 -0
  139. package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +52 -0
  140. package/dist/esm/sdk/market/pool/LinearInterestRateModelContract.js +30 -0
  141. package/dist/esm/sdk/market/pool/PoolQuotaKeeperV310Contract.js +26 -0
  142. package/dist/esm/sdk/market/pool/PoolSuite.js +28 -0
  143. package/dist/esm/sdk/market/pool/PoolV310Contract.js +27 -0
  144. package/dist/esm/sdk/market/pool/math.js +41 -0
  145. package/dist/esm/sdk/market/pricefeeds/AbstractPriceFeed.js +17 -0
  146. package/dist/esm/sdk/opportunities/MultichainOpportunitiesService.js +59 -0
  147. package/dist/esm/sdk/opportunities/OpportunitiesService.js +102 -0
  148. package/dist/esm/sdk/opportunities/index.js +4 -0
  149. package/dist/esm/sdk/types/multichain.js +1 -0
  150. package/dist/esm/{common-utils → sdk}/utils/bigint-math.js +11 -11
  151. package/dist/esm/sdk/utils/index.js +3 -2
  152. package/dist/esm/sdk/utils/zod.js +13 -2
  153. package/dist/types/common-utils/index.d.ts +1 -1
  154. package/dist/types/common-utils/utils/index.d.ts +1 -1
  155. package/dist/types/model/history.d.ts +105 -0
  156. package/dist/types/model/history.schema.d.ts +66 -0
  157. package/dist/types/model/index.d.ts +9 -0
  158. package/dist/types/model/liquidations.d.ts +230 -0
  159. package/dist/types/model/liquidations.schema.d.ts +292 -0
  160. package/dist/types/model/opportunities.d.ts +543 -0
  161. package/dist/types/model/opportunities.schema.d.ts +1066 -0
  162. package/dist/types/model/positions.d.ts +11 -0
  163. package/dist/types/model/primitives.d.ts +193 -0
  164. package/dist/types/model/primitives.schema.d.ts +81 -0
  165. package/dist/types/new-sdk/AbstractNamespace.d.ts +119 -0
  166. package/dist/types/new-sdk/GearboxSDK.d.ts +78 -0
  167. package/dist/types/new-sdk/index.d.ts +9 -0
  168. package/dist/types/new-sdk/opportunities/OpportunitiesNamespace.d.ts +69 -0
  169. package/dist/types/new-sdk/opportunities/index.d.ts +3 -0
  170. package/dist/types/new-sdk/opportunities/types.d.ts +66 -0
  171. package/dist/types/new-sdk/types.d.ts +149 -0
  172. package/dist/types/new-sdk/utils/history.d.ts +44 -0
  173. package/dist/types/new-sdk/utils/index.d.ts +2 -0
  174. package/dist/types/offchain/GearboxAPI.d.ts +31 -0
  175. package/dist/types/offchain/index.d.ts +5 -0
  176. package/dist/types/offchain/opportunities/OffchainOpportunities.d.ts +69 -0
  177. package/dist/types/offchain/opportunities/index.d.ts +2 -0
  178. package/dist/types/offchain/types.d.ts +50 -0
  179. package/dist/types/sdk/MultichainSDK.d.ts +15 -2
  180. package/dist/types/sdk/OnchainSDK.d.ts +9 -3
  181. package/dist/types/sdk/accounts/index.d.ts +3 -3
  182. package/dist/types/sdk/accounts/liquidations/LiquidationsService.d.ts +24 -16
  183. package/dist/types/sdk/accounts/liquidations/MultichainLiquidationsService.d.ts +26 -20
  184. package/dist/types/sdk/accounts/liquidations/constants.d.ts +12 -1
  185. package/dist/types/sdk/accounts/liquidations/index.d.ts +3 -3
  186. package/dist/types/sdk/accounts/liquidations/types.d.ts +34 -309
  187. package/dist/types/sdk/base/MultichainConstruct.d.ts +57 -0
  188. package/dist/types/sdk/base/TokensMeta.d.ts +26 -0
  189. package/dist/types/sdk/base/index.d.ts +2 -1
  190. package/dist/types/sdk/chain/chains.d.ts +68 -1
  191. package/dist/types/sdk/chain/index.d.ts +2 -2
  192. package/dist/types/sdk/core/errors.d.ts +10 -1
  193. package/dist/types/sdk/core/index.d.ts +2 -2
  194. package/dist/types/sdk/index.d.ts +15 -8
  195. package/dist/types/sdk/market/MarketConfiguratorContract.d.ts +9 -0
  196. package/dist/types/sdk/market/MarketSuite.d.ts +109 -1
  197. package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +14 -0
  198. package/dist/types/sdk/market/credit/CreditSuite.d.ts +47 -0
  199. package/dist/types/sdk/market/credit/types.d.ts +22 -0
  200. package/dist/types/sdk/market/index.d.ts +2 -2
  201. package/dist/types/sdk/market/math.d.ts +74 -0
  202. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +23 -0
  203. package/dist/types/sdk/market/oracle/types.d.ts +46 -0
  204. package/dist/types/sdk/market/pool/LinearInterestRateModelContract.d.ts +12 -0
  205. package/dist/types/sdk/market/pool/PoolQuotaKeeperV310Contract.d.ts +22 -1
  206. package/dist/types/sdk/market/pool/PoolSuite.d.ts +23 -0
  207. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +18 -0
  208. package/dist/types/sdk/market/pool/math.d.ts +57 -0
  209. package/dist/types/sdk/market/pool/types.d.ts +23 -0
  210. package/dist/types/sdk/market/pricefeeds/AbstractPriceFeed.d.ts +6 -0
  211. package/dist/types/sdk/market/pricefeeds/types.d.ts +10 -0
  212. package/dist/types/sdk/opportunities/MultichainOpportunitiesService.d.ts +40 -0
  213. package/dist/types/sdk/opportunities/OpportunitiesService.d.ts +47 -0
  214. package/dist/types/sdk/opportunities/index.d.ts +4 -0
  215. package/dist/types/sdk/types/index.d.ts +2 -1
  216. package/dist/types/sdk/types/multichain.d.ts +65 -0
  217. package/dist/types/sdk/types/state.d.ts +1 -1
  218. package/dist/types/sdk/types/transactions.d.ts +3 -0
  219. package/dist/types/{common-utils → sdk}/utils/bigint-math.d.ts +7 -11
  220. package/dist/types/sdk/utils/index.d.ts +3 -2
  221. package/dist/types/sdk/utils/zod.d.ts +6 -2
  222. package/package.json +16 -1
  223. package/dist/cjs/sdk/accounts/liquidations/helpers.js +0 -201
  224. package/dist/esm/sdk/accounts/liquidations/helpers.js +0 -192
  225. package/dist/types/sdk/accounts/liquidations/helpers.d.ts +0 -140
@@ -0,0 +1,12 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_sdk_market_math = require("../market/math.js");
3
+ const require_sdk_opportunities_MultichainOpportunitiesService = require("./MultichainOpportunitiesService.js");
4
+ const require_sdk_opportunities_OpportunitiesService = require("./OpportunitiesService.js");
5
+ exports.MultichainOpportunitiesService = require_sdk_opportunities_MultichainOpportunitiesService.MultichainOpportunitiesService;
6
+ exports.OpportunitiesService = require_sdk_opportunities_OpportunitiesService.OpportunitiesService;
7
+ exports.additionalBorrowApyBps = require_sdk_market_math.additionalBorrowApyBps;
8
+ exports.borrowApyBps = require_sdk_market_math.borrowApyBps;
9
+ exports.maxLeverage = require_sdk_market_math.maxLeverage;
10
+ exports.rayToBps = require_sdk_market_math.rayToBps;
11
+ exports.usdToNumber = require_sdk_market_math.usdToNumber;
12
+ exports.utilizationBps = require_sdk_market_math.utilizationBps;
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- //#region src/common-utils/utils/bigint-math.ts
2
+ //#region src/sdk/utils/bigint-math.ts
3
3
  /**
4
4
  * Utility namespace for common `bigint` operations.
5
5
  *
@@ -17,20 +17,20 @@ var BigIntMath = class {
17
17
  static abs = (x) => x < 0n ? -x : x;
18
18
  /**
19
19
  * Returns the greater of two bigint values.
20
- *
21
- * @param a First candidate value.
22
- * @param b Second candidate value.
23
- * @returns The larger value between `a` and `b`.
20
+ * @param values - The values to find the maximum of.
21
+ * @returns The maximum value.
24
22
  */
25
- static max = (a, b) => a > b ? a : b;
23
+ static max = (...values) => {
24
+ return values.reduce((max, v) => v > max ? v : max);
25
+ };
26
26
  /**
27
27
  * Returns the smaller of two bigint values.
28
- *
29
- * @param a First candidate value.
30
- * @param b Second candidate value.
31
- * @returns The smaller value between `a` and `b`.
28
+ * @param values - The values to find the minimum of.
29
+ * @returns The minimum value.
32
30
  */
33
- static min = (a, b) => a < b ? a : b;
31
+ static min = (...values) => {
32
+ return values.reduce((min, v) => v < min ? v : min);
33
+ };
34
34
  /**
35
35
  * Returns the negative form of a bigint if it is currently positive.
36
36
  *
@@ -4,6 +4,7 @@ const require_sdk_utils_AddressSet = require("./AddressSet.js");
4
4
  const require_sdk_utils_AssetsMap = require("./AssetsMap.js");
5
5
  const require_sdk_utils_json = require("./json.js");
6
6
  const require_sdk_utils_abi_decode = require("./abi-decode.js");
7
+ const require_sdk_utils_bigint_math = require("./bigint-math.js");
7
8
  const require_sdk_utils_bytes32ToString = require("./bytes32ToString.js");
8
9
  const require_sdk_utils_childLogger = require("./childLogger.js");
9
10
  const require_sdk_utils_createRawTx = require("./createRawTx.js");
@@ -20,8 +21,10 @@ const require_sdk_utils_zod = require("./zod.js");
20
21
  exports.AddressMap = require_sdk_utils_AddressMap.AddressMap;
21
22
  exports.AddressSet = require_sdk_utils_AddressSet.AddressSet;
22
23
  exports.AssetsMap = require_sdk_utils_AssetsMap.AssetsMap;
24
+ exports.BigIntMath = require_sdk_utils_bigint_math.BigIntMath;
23
25
  exports.TypedObjectUtils = require_sdk_utils_mappers.TypedObjectUtils;
24
26
  exports.ZodAddress = require_sdk_utils_zod.ZodAddress;
27
+ exports.ZodHex = require_sdk_utils_zod.ZodHex;
25
28
  exports.bytes32ToString = require_sdk_utils_bytes32ToString.bytes32ToString;
26
29
  exports.childLogger = require_sdk_utils_childLogger.childLogger;
27
30
  exports.createRawTx = require_sdk_utils_createRawTx.createRawTx;
@@ -13,5 +13,17 @@ const ZodAddress = () => zod_v4.z.string().transform((val, ctx) => {
13
13
  });
14
14
  return (0, viem.getAddress)(val);
15
15
  });
16
+ /**
17
+ * A `0x`-prefixed hex string, as viem's Hex.
18
+ */
19
+ const ZodHex = () => zod_v4.z.string().transform((val, ctx) => {
20
+ if (!(0, viem.isHex)(val)) ctx.issues.push({
21
+ code: "custom",
22
+ message: `invalid hex string ${val}`,
23
+ input: ctx.value
24
+ });
25
+ return val;
26
+ });
16
27
  //#endregion
17
28
  exports.ZodAddress = ZodAddress;
29
+ exports.ZodHex = ZodHex;
@@ -1,5 +1,6 @@
1
1
  import { AxiosCache } from "./axios-cache/AxiosCache.js";
2
2
  import "./axios-cache/index.js";
3
+ import { BigIntMath } from "../sdk/utils/bigint-math.js";
3
4
  import { ChartsCreditManagerData } from "./charts/credit-manager.js";
4
5
  import { CREDIT_SESSION_ID_BY_STATUS, CREDIT_SESSION_STATUS_BY_ID, CreditSession, CreditSessionFiltered, UserCreditSessionsBuilder } from "./charts/credit-session.js";
5
6
  import { ChartsPoolData, UserPoolData } from "./charts/pool.js";
@@ -11,7 +12,6 @@ import { calculateBorrowRateFromUtilization } from "./utils/apy/calculate-borrow
11
12
  import { PriceUtils } from "./utils/price-math.js";
12
13
  import { calculateEarnings } from "./utils/apy/calculate-earnings.js";
13
14
  import { calculateEffectiveBorrowRate } from "./utils/apy/calculate-effective-borrow-rate.js";
14
- import { BigIntMath } from "./utils/bigint-math.js";
15
15
  import { calculateSafeBorrowRate } from "./utils/apy/calculate-safe-borrow-rate.js";
16
16
  import { getComplexAPYList } from "./utils/apy/get-complex-apy-list.js";
17
17
  import { getRateWithFee } from "./utils/apy/get-rate-with-fee.js";
@@ -1,6 +1,6 @@
1
+ import { BigIntMath } from "../../../sdk/utils/bigint-math.js";
1
2
  import { PERCENTAGE_DECIMALS, PERCENTAGE_FACTOR } from "../../../sdk/constants/math.js";
2
3
  import { calculateBorrowRateFromUtilization } from "./calculate-borrow-rate-from-utilization.js";
3
- import { BigIntMath } from "../bigint-math.js";
4
4
  //#region src/common-utils/utils/apy/calculate-safe-borrow-rate.ts
5
5
  /**
6
6
  * Returns borrow rate multiplied by feeInterest
@@ -1,5 +1,5 @@
1
+ import { BigIntMath } from "../../sdk/utils/bigint-math.js";
1
2
  import { PriceUtils } from "./price-math.js";
2
- import { BigIntMath } from "./bigint-math.js";
3
3
  import { sortBalances } from "./creditAccount/sort.js";
4
4
  //#region src/common-utils/utils/assets-math.ts
5
5
  /**
@@ -1,7 +1,7 @@
1
+ import { BigIntMath } from "../../../sdk/utils/bigint-math.js";
1
2
  import { PERCENTAGE_FACTOR, PRICE_DECIMALS } from "../../../sdk/constants/math.js";
2
3
  import "../../../sdk/index.js";
3
4
  import { PriceUtils } from "../price-math.js";
4
- import { BigIntMath } from "../bigint-math.js";
5
5
  //#region src/common-utils/utils/creditAccount/calc-health-factor.ts
6
6
  const MAX_UINT16 = 65535;
7
7
  /**
@@ -1,7 +1,7 @@
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
4
  import { PriceUtils } from "../price-math.js";
4
- import { BigIntMath } from "../bigint-math.js";
5
5
  //#region src/common-utils/utils/creditAccount/debt.ts
6
6
  /**
7
7
  * Calculates additional debt that can be borrowed while targeting
@@ -1,6 +1,6 @@
1
+ import { BigIntMath } from "../../../sdk/utils/bigint-math.js";
1
2
  import { MIN_INT96, PERCENTAGE_FACTOR } from "../../../sdk/constants/math.js";
2
3
  import "../../../sdk/index.js";
3
- import { BigIntMath } from "../bigint-math.js";
4
4
  //#region src/common-utils/utils/creditAccount/quota-utils.ts
5
5
  /**
6
6
  * Rounds quota deltas to protocol precision step (`PERCENTAGE_FACTOR`).
@@ -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) {
@@ -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,9 @@
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 "./primitives.js";
9
+ 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, pointRewardsSchema, pointsProgramSchema, poolHistoryMetricSchema, poolOpportunityDetailSchema, poolOpportunityId, poolOpportunityKeySchema, poolOpportunitySchema, priceFeedDataSchema, priceFeedSummarySchema, quotaAssetSchema, rateCurvePointSchema, rateCurveSchema, receivedAssetSchema, rewardsSchema, strategyHistoryMetricSchema, strategyOpportunityDetailSchema, strategyOpportunityId, strategyOpportunityKeySchema, strategyOpportunitySchema, timestampSchema, tokenAmountSchema, 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,83 @@
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
+ redeemerAddress: 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
+ chainId: chainIdSchema,
63
+ sourceToken: tokenSchema,
64
+ output: tokenAmountSchema,
65
+ claimableAt: timestampSchema.optional(),
66
+ claimTx: txCallSchema.optional(),
67
+ redeemer: ZodAddress().optional()
68
+ });
69
+ /**
70
+ * {@link LiquidationDetails}
71
+ **/
72
+ const liquidationDetailsSchema = z.object({
73
+ ...liquidatableAccountSchema.shape,
74
+ repaymentAmount: tokenAmountSchema,
75
+ receivedAssets: z.array(receivedAssetSchema),
76
+ isLiquidatorEligible: z.boolean(),
77
+ isCreditAccountFrozen: z.boolean(),
78
+ kycProtocol: z.string().optional(),
79
+ kycToken: tokenSchema.optional(),
80
+ approve: liquidationApprovalSchema.optional()
81
+ });
82
+ //#endregion
83
+ 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 };