@gearbox-protocol/sdk 15.1.0-next.6 → 15.1.0-next.8

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 (147) hide show
  1. package/dist/cjs/common-utils/utils/apy/get-single-quota-borrow-rate.js +2 -0
  2. package/dist/cjs/common-utils/utils/creditAccount/calc-health-factor.js +24 -22
  3. package/dist/cjs/common-utils/utils/creditAccount/calc-quota-borrow-rate.js +2 -0
  4. package/dist/cjs/common-utils/utils/creditAccount/get-time-to-liquidation.js +5 -4
  5. package/dist/cjs/common-utils/utils/creditAccount/liquidation-price.js +21 -11
  6. package/dist/cjs/model/charts.js +147 -0
  7. package/dist/cjs/model/charts.schema.js +240 -0
  8. package/dist/cjs/model/index.js +28 -22
  9. package/dist/cjs/model/liquidations.schema.js +1 -1
  10. package/dist/cjs/model/opportunities.schema.js +1 -1
  11. package/dist/cjs/model/positions.schema.js +15 -2
  12. package/dist/cjs/new-sdk/opportunities/OpportunitiesNamespace.js +2 -6
  13. package/dist/cjs/new-sdk/positions/PositionsNamespace.js +2 -6
  14. package/dist/cjs/new-sdk/utils/index.js +0 -1
  15. package/dist/cjs/offchain/AbstractOffchainNamespace.js +10 -7
  16. package/dist/cjs/offchain/opportunities/OffchainOpportunities.js +4 -8
  17. package/dist/cjs/offchain/positions/OffchainPositions.js +8 -11
  18. package/dist/cjs/preview/preview/CreditAccountState.js +14 -1
  19. package/dist/cjs/preview/preview/buildDelayedPreview.js +16 -6
  20. package/dist/cjs/preview/preview/previewAdjustCreditAccount.js +9 -2
  21. package/dist/cjs/preview/preview/previewOpenCreditAccount.js +11 -3
  22. package/dist/cjs/preview/preview/previewOperation.js +1 -1
  23. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +0 -6
  24. package/dist/cjs/sdk/accounts/credit-account-compressor/CreditAccountCompressor.js +2 -90
  25. package/dist/cjs/sdk/accounts/intents/testing/sdk-mock.js +31 -4
  26. package/dist/cjs/sdk/accounts/intents/utils/adjust-state-to-snapshot.js +18 -0
  27. package/dist/cjs/sdk/accounts/intents/utils/index.js +2 -0
  28. package/dist/cjs/sdk/accounts/liquidations/LiquidationsService.js +0 -3
  29. package/dist/cjs/sdk/index.js +12 -0
  30. package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +10 -3
  31. package/dist/cjs/sdk/positions/PositionsService.js +206 -1
  32. package/dist/cjs/sdk/positions/calcBorrowRate.js +43 -0
  33. package/dist/cjs/sdk/positions/calcHealthFactor.js +44 -0
  34. package/dist/cjs/sdk/positions/calcLiquidationPrice.js +23 -0
  35. package/dist/cjs/sdk/positions/calcLiquidationPriceForTarget.js +30 -0
  36. package/dist/cjs/sdk/positions/calcTimeToLiquidationMs.js +18 -0
  37. package/dist/cjs/sdk/positions/index.js +12 -1
  38. package/dist/cjs/sdk/positions/types.js +31 -0
  39. package/dist/esm/common-utils/utils/apy/get-single-quota-borrow-rate.js +2 -0
  40. package/dist/esm/common-utils/utils/creditAccount/calc-health-factor.js +24 -22
  41. package/dist/esm/common-utils/utils/creditAccount/calc-quota-borrow-rate.js +2 -0
  42. package/dist/esm/common-utils/utils/creditAccount/get-time-to-liquidation.js +5 -4
  43. package/dist/esm/common-utils/utils/creditAccount/liquidation-price.js +21 -11
  44. package/dist/esm/dev/AccountOpener.js +1 -1
  45. package/dist/esm/dev/withdrawalUtils.js +1 -1
  46. package/dist/esm/model/charts.js +140 -0
  47. package/dist/esm/model/charts.schema.js +226 -0
  48. package/dist/esm/model/index.js +7 -7
  49. package/dist/esm/model/liquidations.schema.js +1 -1
  50. package/dist/esm/model/opportunities.schema.js +1 -1
  51. package/dist/esm/model/positions.schema.js +16 -4
  52. package/dist/esm/new-sdk/opportunities/OpportunitiesNamespace.js +2 -6
  53. package/dist/esm/new-sdk/positions/PositionsNamespace.js +2 -6
  54. package/dist/esm/new-sdk/utils/index.js +0 -1
  55. package/dist/esm/offchain/AbstractOffchainNamespace.js +10 -7
  56. package/dist/esm/offchain/opportunities/OffchainOpportunities.js +4 -8
  57. package/dist/esm/offchain/positions/OffchainPositions.js +8 -11
  58. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +1 -1
  59. package/dist/esm/preview/preview/CreditAccountState.js +14 -1
  60. package/dist/esm/preview/preview/buildDelayedPreview.js +16 -6
  61. package/dist/esm/preview/preview/previewAdjustCreditAccount.js +9 -2
  62. package/dist/esm/preview/preview/previewOpenCreditAccount.js +11 -3
  63. package/dist/esm/preview/preview/previewOperation.js +1 -1
  64. package/dist/esm/preview/simulate/simulatePoolOperation.js +1 -1
  65. package/dist/esm/preview/trace/extractTransfers.js +1 -1
  66. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +2 -8
  67. package/dist/esm/sdk/accounts/credit-account-compressor/CreditAccountCompressor.js +2 -90
  68. package/dist/esm/sdk/accounts/intents/testing/sdk-mock.js +31 -4
  69. package/dist/esm/sdk/accounts/intents/utils/adjust-state-to-snapshot.js +17 -0
  70. package/dist/esm/sdk/accounts/intents/utils/index.js +2 -1
  71. package/dist/esm/sdk/accounts/liquidations/LiquidationsService.js +1 -4
  72. package/dist/esm/sdk/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
  73. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
  74. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
  75. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
  76. package/dist/esm/sdk/base/TokensMeta.js +3 -3
  77. package/dist/esm/sdk/chain/detectNetwork.js +1 -1
  78. package/dist/esm/sdk/core/createAddressProvider.js +1 -1
  79. package/dist/esm/sdk/index.js +7 -1
  80. package/dist/esm/sdk/market/credit/CreditFacadeV310BaseContract.js +1 -1
  81. package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +10 -3
  82. package/dist/esm/sdk/market/pool/PoolV310Contract.js +1 -1
  83. package/dist/esm/sdk/market/zapper/IETHZapperContract.js +1 -1
  84. package/dist/esm/sdk/market/zapper/ZapperContract.js +1 -1
  85. package/dist/esm/sdk/pools/PoolService.js +1 -1
  86. package/dist/esm/sdk/positions/PositionsService.js +206 -1
  87. package/dist/esm/sdk/positions/calcBorrowRate.js +42 -0
  88. package/dist/esm/sdk/positions/calcHealthFactor.js +43 -0
  89. package/dist/esm/sdk/positions/calcLiquidationPrice.js +22 -0
  90. package/dist/esm/sdk/positions/calcLiquidationPriceForTarget.js +29 -0
  91. package/dist/esm/sdk/positions/calcTimeToLiquidationMs.js +17 -0
  92. package/dist/esm/sdk/positions/index.js +7 -2
  93. package/dist/esm/sdk/positions/types.js +31 -1
  94. package/dist/esm/sdk/utils/viem/simulateWithPriceUpdates.js +1 -1
  95. package/dist/types/common-utils/utils/apy/get-single-quota-borrow-rate.d.ts +2 -0
  96. package/dist/types/common-utils/utils/creditAccount/calc-health-factor.d.ts +3 -0
  97. package/dist/types/common-utils/utils/creditAccount/calc-quota-borrow-rate.d.ts +2 -0
  98. package/dist/types/common-utils/utils/creditAccount/get-time-to-liquidation.d.ts +3 -0
  99. package/dist/types/common-utils/utils/creditAccount/liquidation-price.d.ts +3 -0
  100. package/dist/types/model/charts.d.ts +349 -0
  101. package/dist/types/model/charts.schema.d.ts +364 -0
  102. package/dist/types/model/index.d.ts +6 -6
  103. package/dist/types/model/positions.d.ts +85 -2
  104. package/dist/types/model/positions.schema.d.ts +26 -1
  105. package/dist/types/new-sdk/index.d.ts +1 -2
  106. package/dist/types/new-sdk/opportunities/OpportunitiesNamespace.d.ts +4 -5
  107. package/dist/types/new-sdk/opportunities/types.d.ts +9 -7
  108. package/dist/types/new-sdk/positions/PositionsNamespace.d.ts +4 -5
  109. package/dist/types/new-sdk/positions/types.d.ts +9 -9
  110. package/dist/types/new-sdk/utils/index.d.ts +1 -2
  111. package/dist/types/offchain/AbstractOffchainNamespace.d.ts +5 -21
  112. package/dist/types/offchain/index.d.ts +2 -2
  113. package/dist/types/offchain/opportunities/OffchainOpportunities.d.ts +8 -4
  114. package/dist/types/offchain/positions/OffchainPositions.d.ts +11 -5
  115. package/dist/types/preview/preview/CreditAccountState.d.ts +6 -0
  116. package/dist/types/preview/preview/buildDelayedPreview.d.ts +5 -1
  117. package/dist/types/preview/preview/types.d.ts +4 -2
  118. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -7
  119. package/dist/types/sdk/accounts/credit-account-compressor/CreditAccountCompressor.d.ts +3 -12
  120. package/dist/types/sdk/accounts/credit-account-compressor/index.d.ts +2 -2
  121. package/dist/types/sdk/accounts/credit-account-compressor/types.d.ts +1 -19
  122. package/dist/types/sdk/accounts/index.d.ts +2 -2
  123. package/dist/types/sdk/accounts/intents/testing/sdk-mock.d.ts +6 -0
  124. package/dist/types/sdk/accounts/intents/utils/adjust-state-to-snapshot.d.ts +13 -0
  125. package/dist/types/sdk/accounts/intents/utils/index.d.ts +2 -1
  126. package/dist/types/sdk/accounts/types.d.ts +1 -12
  127. package/dist/types/sdk/index.d.ts +8 -3
  128. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +4 -0
  129. package/dist/types/sdk/market/oracle/types.d.ts +8 -0
  130. package/dist/types/sdk/positions/PositionsService.d.ts +31 -2
  131. package/dist/types/sdk/positions/calcBorrowRate.d.ts +40 -0
  132. package/dist/types/sdk/positions/calcHealthFactor.d.ts +45 -0
  133. package/dist/types/sdk/positions/calcLiquidationPrice.d.ts +12 -0
  134. package/dist/types/sdk/positions/calcLiquidationPriceForTarget.d.ts +43 -0
  135. package/dist/types/sdk/positions/calcTimeToLiquidationMs.d.ts +15 -0
  136. package/dist/types/sdk/positions/index.d.ts +7 -2
  137. package/dist/types/sdk/positions/types.d.ts +58 -1
  138. package/package.json +1 -1
  139. package/dist/cjs/model/history.js +0 -53
  140. package/dist/cjs/model/history.schema.js +0 -128
  141. package/dist/cjs/new-sdk/utils/history.js +0 -1
  142. package/dist/esm/model/history.js +0 -49
  143. package/dist/esm/model/history.schema.js +0 -116
  144. package/dist/esm/new-sdk/utils/history.js +0 -1
  145. package/dist/types/model/history.d.ts +0 -153
  146. package/dist/types/model/history.schema.d.ts +0 -95
  147. package/dist/types/new-sdk/utils/history.d.ts +0 -18
@@ -0,0 +1,364 @@
1
+ import { ChartBundle, ChartMetric, ChartRange } from "./charts.js";
2
+ import { z } from "zod/v4";
3
+ //#region src/model/charts.schema.d.ts
4
+ /**
5
+ * Runtime schemas for {@link ./charts.js}, see the note in
6
+ * `primitives.schema.ts` on why they are written by hand.
7
+ *
8
+ * Metric schemas are shared with the backend, while
9
+ * {@link chartBundleSchemaFor} builds the response schema for one concrete
10
+ * request. Component schemas remain available for consumers that validate
11
+ * model fragments.
12
+ **/
13
+ /**
14
+ * {@link ChartRange}
15
+ **/
16
+ declare const chartRangeSchema: z.ZodEnum<{
17
+ "1d": "1d";
18
+ "1m": "1m";
19
+ "1w": "1w";
20
+ "1y": "1y";
21
+ max: "max";
22
+ }>;
23
+ /**
24
+ * {@link PoolOpportunityChartMetric}
25
+ **/
26
+ declare const poolOpportunityChartMetricSchema: z.ZodEnum<{
27
+ availableLiquidity: "availableLiquidity";
28
+ borrowApy: "borrowApy";
29
+ borrowed: "borrowed";
30
+ depositApy: "depositApy";
31
+ dieselRate: "dieselRate";
32
+ supplied: "supplied";
33
+ }>;
34
+ /**
35
+ * {@link StrategyOpportunityChartMetric}
36
+ **/
37
+ declare const strategyOpportunityChartMetricSchema: z.ZodEnum<{
38
+ borrowApy: "borrowApy";
39
+ collateralApy: "collateralApy";
40
+ collateralPrice: "collateralPrice";
41
+ collateralUsdPrice: "collateralUsdPrice";
42
+ netApy: "netApy";
43
+ tvl: "tvl";
44
+ underlyingUsdPrice: "underlyingUsdPrice";
45
+ }>;
46
+ /**
47
+ * {@link PoolPositionChartMetric}
48
+ **/
49
+ declare const poolPositionChartMetricSchema: z.ZodEnum<{
50
+ apy: "apy";
51
+ mwr: "mwr";
52
+ pnl: "pnl";
53
+ twr: "twr";
54
+ underlyingPrice: "underlyingPrice";
55
+ value: "value";
56
+ }>;
57
+ /**
58
+ * {@link StrategyPositionChartMetric}
59
+ **/
60
+ declare const strategyPositionChartMetricSchema: z.ZodEnum<{
61
+ borrowApy: "borrowApy";
62
+ debt: "debt";
63
+ healthFactor: "healthFactor";
64
+ leverage: "leverage";
65
+ mwr: "mwr";
66
+ pnl: "pnl";
67
+ totalValueUnderlying: "totalValueUnderlying";
68
+ totalValueUsd: "totalValueUsd";
69
+ trailingApy30d: "trailingApy30d";
70
+ trailingApy7d: "trailingApy7d";
71
+ twr: "twr";
72
+ twrApy: "twrApy";
73
+ underlyingPrice: "underlyingPrice";
74
+ }>;
75
+ /**
76
+ * {@link ChartMetric}, every metric either kind of subject can chart.
77
+ **/
78
+ declare const chartMetricSchema: z.ZodUnion<readonly [z.ZodEnum<{
79
+ availableLiquidity: "availableLiquidity";
80
+ borrowApy: "borrowApy";
81
+ borrowed: "borrowed";
82
+ depositApy: "depositApy";
83
+ dieselRate: "dieselRate";
84
+ supplied: "supplied";
85
+ }>, z.ZodEnum<{
86
+ borrowApy: "borrowApy";
87
+ collateralApy: "collateralApy";
88
+ collateralPrice: "collateralPrice";
89
+ collateralUsdPrice: "collateralUsdPrice";
90
+ netApy: "netApy";
91
+ tvl: "tvl";
92
+ underlyingUsdPrice: "underlyingUsdPrice";
93
+ }>, z.ZodEnum<{
94
+ apy: "apy";
95
+ mwr: "mwr";
96
+ pnl: "pnl";
97
+ twr: "twr";
98
+ underlyingPrice: "underlyingPrice";
99
+ value: "value";
100
+ }>, z.ZodEnum<{
101
+ borrowApy: "borrowApy";
102
+ debt: "debt";
103
+ healthFactor: "healthFactor";
104
+ leverage: "leverage";
105
+ mwr: "mwr";
106
+ pnl: "pnl";
107
+ totalValueUnderlying: "totalValueUnderlying";
108
+ totalValueUsd: "totalValueUsd";
109
+ trailingApy30d: "trailingApy30d";
110
+ trailingApy7d: "trailingApy7d";
111
+ twr: "twr";
112
+ twrApy: "twrApy";
113
+ underlyingPrice: "underlyingPrice";
114
+ }>]>;
115
+ /**
116
+ * {@link ChartQuery}
117
+ **/
118
+ declare const chartQuerySchema: z.ZodObject<{
119
+ metrics: z.ZodReadonly<z.ZodArray<z.ZodUnion<readonly [z.ZodEnum<{
120
+ availableLiquidity: "availableLiquidity";
121
+ borrowApy: "borrowApy";
122
+ borrowed: "borrowed";
123
+ depositApy: "depositApy";
124
+ dieselRate: "dieselRate";
125
+ supplied: "supplied";
126
+ }>, z.ZodEnum<{
127
+ borrowApy: "borrowApy";
128
+ collateralApy: "collateralApy";
129
+ collateralPrice: "collateralPrice";
130
+ collateralUsdPrice: "collateralUsdPrice";
131
+ netApy: "netApy";
132
+ tvl: "tvl";
133
+ underlyingUsdPrice: "underlyingUsdPrice";
134
+ }>, z.ZodEnum<{
135
+ apy: "apy";
136
+ mwr: "mwr";
137
+ pnl: "pnl";
138
+ twr: "twr";
139
+ underlyingPrice: "underlyingPrice";
140
+ value: "value";
141
+ }>, z.ZodEnum<{
142
+ borrowApy: "borrowApy";
143
+ debt: "debt";
144
+ healthFactor: "healthFactor";
145
+ leverage: "leverage";
146
+ mwr: "mwr";
147
+ pnl: "pnl";
148
+ totalValueUnderlying: "totalValueUnderlying";
149
+ totalValueUsd: "totalValueUsd";
150
+ trailingApy30d: "trailingApy30d";
151
+ trailingApy7d: "trailingApy7d";
152
+ twr: "twr";
153
+ twrApy: "twrApy";
154
+ underlyingPrice: "underlyingPrice";
155
+ }>]>>>;
156
+ range: z.ZodEnum<{
157
+ "1d": "1d";
158
+ "1m": "1m";
159
+ "1w": "1w";
160
+ "1y": "1y";
161
+ max: "max";
162
+ }>;
163
+ }, z.core.$strip>;
164
+ /**
165
+ * {@link ChartQuery} as a URL can carry it: the metrics comma-joined, since
166
+ * repeated `?metrics=` entries would order differently between clients and give
167
+ * one request two cache keys.
168
+ **/
169
+ declare const chartQueryParamsSchema: z.ZodObject<{
170
+ metrics: z.ZodString;
171
+ range: z.ZodEnum<{
172
+ "1d": "1d";
173
+ "1m": "1m";
174
+ "1w": "1w";
175
+ "1y": "1y";
176
+ max: "max";
177
+ }>;
178
+ }, z.core.$strip>;
179
+ /**
180
+ * Codec for {@link ChartQuery} to encode/decode to/from url query parameters.
181
+ *
182
+ * The one place the wire form of a chart request is decided. The SDK encodes
183
+ * with it, the backend decodes with it, and the checks that a read names at
184
+ * least one metric and names none of them twice ride along in both directions —
185
+ * so a bad request fails before it is issued, not after a round trip.
186
+ **/
187
+ declare const chartQueryCodec: z.ZodCodec<z.ZodObject<{
188
+ metrics: z.ZodString;
189
+ range: z.ZodEnum<{
190
+ "1d": "1d";
191
+ "1m": "1m";
192
+ "1w": "1w";
193
+ "1y": "1y";
194
+ max: "max";
195
+ }>;
196
+ }, z.core.$strip>, z.ZodObject<{
197
+ metrics: z.ZodReadonly<z.ZodArray<z.ZodUnion<readonly [z.ZodEnum<{
198
+ availableLiquidity: "availableLiquidity";
199
+ borrowApy: "borrowApy";
200
+ borrowed: "borrowed";
201
+ depositApy: "depositApy";
202
+ dieselRate: "dieselRate";
203
+ supplied: "supplied";
204
+ }>, z.ZodEnum<{
205
+ borrowApy: "borrowApy";
206
+ collateralApy: "collateralApy";
207
+ collateralPrice: "collateralPrice";
208
+ collateralUsdPrice: "collateralUsdPrice";
209
+ netApy: "netApy";
210
+ tvl: "tvl";
211
+ underlyingUsdPrice: "underlyingUsdPrice";
212
+ }>, z.ZodEnum<{
213
+ apy: "apy";
214
+ mwr: "mwr";
215
+ pnl: "pnl";
216
+ twr: "twr";
217
+ underlyingPrice: "underlyingPrice";
218
+ value: "value";
219
+ }>, z.ZodEnum<{
220
+ borrowApy: "borrowApy";
221
+ debt: "debt";
222
+ healthFactor: "healthFactor";
223
+ leverage: "leverage";
224
+ mwr: "mwr";
225
+ pnl: "pnl";
226
+ totalValueUnderlying: "totalValueUnderlying";
227
+ totalValueUsd: "totalValueUsd";
228
+ trailingApy30d: "trailingApy30d";
229
+ trailingApy7d: "trailingApy7d";
230
+ twr: "twr";
231
+ twrApy: "twrApy";
232
+ underlyingPrice: "underlyingPrice";
233
+ }>]>>>;
234
+ range: z.ZodEnum<{
235
+ "1d": "1d";
236
+ "1m": "1m";
237
+ "1w": "1w";
238
+ "1y": "1y";
239
+ max: "max";
240
+ }>;
241
+ }, z.core.$strip>>;
242
+ /**
243
+ * {@link ChartDenomination}
244
+ **/
245
+ declare const chartDenominationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
246
+ unit: z.ZodLiteral<"bps">;
247
+ }, z.core.$strip>, z.ZodObject<{
248
+ unit: z.ZodLiteral<"usd">;
249
+ }, z.core.$strip>, z.ZodObject<{
250
+ unit: z.ZodLiteral<"scalar">;
251
+ }, z.core.$strip>, z.ZodObject<{
252
+ unit: z.ZodLiteral<"token">;
253
+ base: z.ZodObject<{
254
+ chainId: z.ZodNumber;
255
+ address: z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>;
256
+ symbol: z.ZodString;
257
+ name: z.ZodString;
258
+ decimals: z.ZodNumber;
259
+ assetType: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"Stable">, z.ZodLiteral<"ETH">, z.ZodLiteral<"BTC">]>>;
260
+ }, z.core.$strip>;
261
+ }, z.core.$strip>, z.ZodObject<{
262
+ unit: z.ZodLiteral<"ratio">;
263
+ base: z.ZodObject<{
264
+ chainId: z.ZodNumber;
265
+ address: z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>;
266
+ symbol: z.ZodString;
267
+ name: z.ZodString;
268
+ decimals: z.ZodNumber;
269
+ assetType: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"Stable">, z.ZodLiteral<"ETH">, z.ZodLiteral<"BTC">]>>;
270
+ }, z.core.$strip>;
271
+ quote: z.ZodObject<{
272
+ chainId: z.ZodNumber;
273
+ address: z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>;
274
+ symbol: z.ZodString;
275
+ name: z.ZodString;
276
+ decimals: z.ZodNumber;
277
+ assetType: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"Stable">, z.ZodLiteral<"ETH">, z.ZodLiteral<"BTC">]>>;
278
+ }, z.core.$strip>;
279
+ }, z.core.$strip>], "unit">;
280
+ /**
281
+ * {@link ChartValue}. `null` is a gap, never a zero.
282
+ **/
283
+ declare const chartValueSchema: z.ZodNullable<z.ZodNumber>;
284
+ /**
285
+ * {@link ChartSeries}
286
+ **/
287
+ declare const chartSeriesSchema: z.ZodUnion<readonly [z.ZodIntersection<z.ZodObject<{
288
+ status: z.ZodLiteral<"ok">;
289
+ values: z.ZodArray<z.ZodNullable<z.ZodNumber>>;
290
+ }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
291
+ unit: z.ZodLiteral<"bps">;
292
+ }, z.core.$strip>, z.ZodObject<{
293
+ unit: z.ZodLiteral<"usd">;
294
+ }, z.core.$strip>, z.ZodObject<{
295
+ unit: z.ZodLiteral<"scalar">;
296
+ }, z.core.$strip>, z.ZodObject<{
297
+ unit: z.ZodLiteral<"token">;
298
+ base: z.ZodObject<{
299
+ chainId: z.ZodNumber;
300
+ address: z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>;
301
+ symbol: z.ZodString;
302
+ name: z.ZodString;
303
+ decimals: z.ZodNumber;
304
+ assetType: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"Stable">, z.ZodLiteral<"ETH">, z.ZodLiteral<"BTC">]>>;
305
+ }, z.core.$strip>;
306
+ }, z.core.$strip>, z.ZodObject<{
307
+ unit: z.ZodLiteral<"ratio">;
308
+ base: z.ZodObject<{
309
+ chainId: z.ZodNumber;
310
+ address: z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>;
311
+ symbol: z.ZodString;
312
+ name: z.ZodString;
313
+ decimals: z.ZodNumber;
314
+ assetType: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"Stable">, z.ZodLiteral<"ETH">, z.ZodLiteral<"BTC">]>>;
315
+ }, z.core.$strip>;
316
+ quote: z.ZodObject<{
317
+ chainId: z.ZodNumber;
318
+ address: z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>;
319
+ symbol: z.ZodString;
320
+ name: z.ZodString;
321
+ decimals: z.ZodNumber;
322
+ assetType: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"Stable">, z.ZodLiteral<"ETH">, z.ZodLiteral<"BTC">]>>;
323
+ }, z.core.$strip>;
324
+ }, z.core.$strip>], "unit">>, z.ZodObject<{
325
+ status: z.ZodLiteral<"unavailable">;
326
+ reason: z.ZodObject<{
327
+ code: z.ZodEnum<{
328
+ internal: "internal";
329
+ no_price_feed: "no_price_feed";
330
+ not_indexed: "not_indexed";
331
+ unknown_subject: "unknown_subject";
332
+ unsupported_metric: "unsupported_metric";
333
+ }>;
334
+ message: z.ZodOptional<z.ZodString>;
335
+ }, z.core.$strip>;
336
+ }, z.core.$strip>]>;
337
+ /**
338
+ * {@link ChartWindow}
339
+ **/
340
+ declare const chartWindowSchema: z.ZodObject<{
341
+ range: z.ZodEnum<{
342
+ "1d": "1d";
343
+ "1m": "1m";
344
+ "1w": "1w";
345
+ "1y": "1y";
346
+ max: "max";
347
+ }>;
348
+ from: z.ZodNumber;
349
+ to: z.ZodNumber;
350
+ }, z.core.$strip>;
351
+ /**
352
+ * The schema one chart read is decoded with: a {@link ChartBundle} keyed by the
353
+ * requested distinct metrics, all of them and nothing else, for the requested
354
+ * range.
355
+ *
356
+ * Pinning the metrics is what upholds the `ChartBundle<Metrics>` a caller gets
357
+ * back — a response that answers a different question fails validation rather
358
+ * than being cast into the requested shape. The declared return type is the one
359
+ * the key schema actually enforces, which the compiler cannot see through a
360
+ * schema built from a runtime list.
361
+ **/
362
+ declare function chartBundleSchemaFor<const Metrics extends readonly ChartMetric[]>(metrics: Metrics, range: ChartRange): z.ZodType<ChartBundle<Metrics>>;
363
+ //#endregion
364
+ export { chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, poolOpportunityChartMetricSchema, poolPositionChartMetricSchema, strategyOpportunityChartMetricSchema, strategyPositionChartMetricSchema };
@@ -1,17 +1,17 @@
1
1
  import { Amount, AssetType, Bps, ChainId, Leverage, Timestamp, Token, TokenAmount, TxCall } from "./primitives.js";
2
2
  import { Curator, CuratorName } from "./curators.js";
3
+ import { CHART_METRIC_UNITS, CHART_RANGES, CHART_UNAVAILABLE_CODES, ChartBundle, ChartDenomination, ChartMetric, ChartQuery, ChartRange, ChartSeries, ChartSeriesOk, ChartSeriesUnavailable, ChartUnavailableCode, ChartUnit, ChartValue, ChartWindow, GridSampling, OpportunityChartMetric, POOL_OPPORTUNITY_CHART_METRICS, POOL_POSITION_CHART_METRICS, PoolOpportunityChartMetric, PoolPositionChartMetric, PositionChartMetric, STRATEGY_OPPORTUNITY_CHART_METRICS, STRATEGY_POSITION_CHART_METRICS, StrategyOpportunityChartMetric, StrategyPositionChartMetric } from "./charts.js";
4
+ import { chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, poolOpportunityChartMetricSchema, poolPositionChartMetricSchema, strategyOpportunityChartMetricSchema, strategyPositionChartMetricSchema } from "./charts.schema.js";
3
5
  import { curatorNameSchema, curatorSchema } from "./curators.schema.js";
4
6
  import { ChainScopedFilter, FILTER_ALL, FilterAll, Filterable, isFilterSet } from "./filters.js";
5
7
  import { booleanParamSchema, encodeFlag, filterAllSchema, filterable } from "./filters.schema.js";
6
- import { ApyBreakdown, Opportunity, OpportunityBase, OpportunityDetail, OpportunityFilter, OpportunityId, OpportunityKey, OpportunityKind, PointRewards, PointsProgram, PoolOpportunity, PoolOpportunityDetail, PoolOpportunityKey, PoolOpportunityRef, PriceFeedData, PriceFeedSummary, QuotaAsset, RateCurve, RateCurvePoint, Rewards, StrategyOpportunity, StrategyOpportunityDetail, StrategyOpportunityKey, StrategyOpportunityRef, TokenRewards, matchesOpportunityFilter, opportunityId, poolOpportunityId, strategyOpportunityId } from "./opportunities.js";
7
8
  import { DelayedReceivedAsset, InstantReceivedAsset, LiquidatableAccount, LiquidatableAccountFilter, LiquidationApproval, LiquidationDetails, LiquidationPosition, ReceivedAsset, matchesLiquidatableAccountFilter } from "./liquidations.js";
8
- import { PnlBreakdown, PointsProgramPnL, PointsRewardsPnL, PoolPosition, PoolPositionKey, PoolPositionRef, Position, PositionCollateral, PositionFilter, PositionId, PositionKey, PositionKind, RewardsPnL, StrategyPosition, StrategyPositionKey, StrategyPositionRef, TokenRewardsPnL, liquidationPositionId, matchesPositionFilter, poolPositionId, positionId, strategyPositionId } from "./positions.js";
9
- import { HistoryChartMetadata, HistoryMetric, HistoryPoint, HistoryRange, HistorySeries, OpportunityHistoryQuery, POOL_HISTORY_METRICS, POOL_POSITION_HISTORY_METRICS, PoolHistoryMetric, PoolPositionHistoryMetric, PositionHistoryMetric, PositionHistoryQuery, STRATEGY_HISTORY_METRICS, STRATEGY_POSITION_HISTORY_METRICS, StrategyHistoryMetric, StrategyPositionHistoryMetric } from "./history.js";
10
- import { historyChartMetadataSchema, historyMetricSchema, historyPointSchema, historyRangeSchema, historySeriesSchema, opportunityHistoryQuerySchema, poolHistoryMetricSchema, poolPositionHistoryMetricSchema, positionHistoryMetricSchema, positionHistoryQuerySchema, strategyHistoryMetricSchema, strategyPositionHistoryMetricSchema } from "./history.schema.js";
11
9
  import { delayedReceivedAssetSchema, instantReceivedAssetSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionSchema, receivedAssetSchema } from "./liquidations.schema.js";
10
+ import { ApyBreakdown, Opportunity, OpportunityBase, OpportunityDetail, OpportunityFilter, OpportunityId, OpportunityKey, OpportunityKind, PointRewards, PointsProgram, PoolOpportunity, PoolOpportunityDetail, PoolOpportunityKey, PoolOpportunityRef, PriceFeedData, PriceFeedSummary, QuotaAsset, RateCurve, RateCurvePoint, Rewards, StrategyOpportunity, StrategyOpportunityDetail, StrategyOpportunityKey, StrategyOpportunityRef, TokenRewards, matchesOpportunityFilter, opportunityId, poolOpportunityId, strategyOpportunityId } from "./opportunities.js";
12
11
  import { apyBreakdownSchema, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterQueryParamsSchema, opportunityFilterQuerySchema, opportunityFilterSchema, opportunityKeySchema, opportunityKindSchema, opportunitySchema, pointRewardsSchema, pointsProgramSchema, poolOpportunityDetailSchema, poolOpportunityKeySchema, poolOpportunitySchema, priceFeedDataSchema, priceFeedSummarySchema, quotaAssetSchema, rateCurvePointSchema, rateCurveSchema, rewardsSchema, strategyOpportunityDetailSchema, strategyOpportunityKeySchema, strategyOpportunitySchema, tokenRewardsSchema } from "./opportunities.schema.js";
13
- import { pnlBreakdownSchema, pointsProgramPnLSchema, pointsRewardsPnLSchema, poolPositionKeySchema, poolPositionSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionKeySchema, positionKindSchema, positionSchema, rewardsPnLSchema, strategyPositionKeySchema, strategyPositionSchema, tokenRewardsPnLSchema } from "./positions.schema.js";
12
+ import { BorrowRateBreakdown, PnlBreakdown, PointsProgramPnL, PointsRewardsPnL, PoolPosition, PoolPositionKey, PoolPositionRef, Position, PositionCollateral, PositionFilter, PositionId, PositionKey, PositionKind, PositionMetrics, RewardsPnL, StrategyPosition, StrategyPositionKey, StrategyPositionRef, TokenRewardsPnL, liquidationPositionId, matchesPositionFilter, poolPositionId, positionId, strategyPositionId } from "./positions.js";
13
+ import { borrowRateBreakdownSchema, pnlBreakdownSchema, pointsProgramPnLSchema, pointsRewardsPnLSchema, poolPositionKeySchema, poolPositionSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionKeySchema, positionKindSchema, positionSchema, rewardsPnLSchema, strategyPositionKeySchema, strategyPositionSchema, tokenRewardsPnLSchema } from "./positions.schema.js";
14
14
  import { amountSchema, assetTypeSchema, bpsSchema, chainIdSchema, leverageSchema, timestampSchema, tokenAmountSchema, tokenSchema, txCallSchema } from "./primitives.schema.js";
15
15
  import { ChainFailed, ChainMetadata, ChainScoped, ChainSucceeded, DataResponse, DataSource, ResponseMetadata } from "./response.js";
16
16
  import { chainFailedSchema, chainMetadataSchema, chainSucceededSchema, dataSourceSchema, responseMetadataSchema, responseSchema } from "./response.schema.js";
17
- export { Amount, ApyBreakdown, AssetType, Bps, ChainFailed, ChainId, ChainMetadata, ChainScoped, ChainScopedFilter, ChainSucceeded, Curator, CuratorName, DataResponse, DataSource, DelayedReceivedAsset, FILTER_ALL, FilterAll, Filterable, HistoryChartMetadata, HistoryMetric, HistoryPoint, HistoryRange, HistorySeries, InstantReceivedAsset, Leverage, LiquidatableAccount, LiquidatableAccountFilter, LiquidationApproval, LiquidationDetails, LiquidationPosition, Opportunity, OpportunityBase, OpportunityDetail, OpportunityFilter, OpportunityHistoryQuery, OpportunityId, OpportunityKey, OpportunityKind, POOL_HISTORY_METRICS, POOL_POSITION_HISTORY_METRICS, PnlBreakdown, PointRewards, PointsProgram, PointsProgramPnL, PointsRewardsPnL, PoolHistoryMetric, PoolOpportunity, PoolOpportunityDetail, PoolOpportunityKey, PoolOpportunityRef, PoolPosition, PoolPositionHistoryMetric, PoolPositionKey, PoolPositionRef, Position, PositionCollateral, PositionFilter, PositionHistoryMetric, PositionHistoryQuery, PositionId, PositionKey, PositionKind, PriceFeedData, PriceFeedSummary, QuotaAsset, RateCurve, RateCurvePoint, ReceivedAsset, ResponseMetadata, Rewards, RewardsPnL, STRATEGY_HISTORY_METRICS, STRATEGY_POSITION_HISTORY_METRICS, StrategyHistoryMetric, StrategyOpportunity, StrategyOpportunityDetail, StrategyOpportunityKey, StrategyOpportunityRef, StrategyPosition, StrategyPositionHistoryMetric, StrategyPositionKey, StrategyPositionRef, Timestamp, Token, TokenAmount, TokenRewards, TokenRewardsPnL, TxCall, amountSchema, apyBreakdownSchema, assetTypeSchema, booleanParamSchema, bpsSchema, chainFailedSchema, chainIdSchema, chainMetadataSchema, chainSucceededSchema, curatorNameSchema, curatorSchema, dataSourceSchema, delayedReceivedAssetSchema, encodeFlag, filterAllSchema, filterable, historyChartMetadataSchema, historyMetricSchema, historyPointSchema, historyRangeSchema, historySeriesSchema, instantReceivedAssetSchema, isFilterSet, leverageSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionId, liquidationPositionSchema, matchesLiquidatableAccountFilter, matchesOpportunityFilter, matchesPositionFilter, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterQueryParamsSchema, opportunityFilterQuerySchema, opportunityFilterSchema, opportunityHistoryQuerySchema, opportunityId, opportunityKeySchema, opportunityKindSchema, opportunitySchema, pnlBreakdownSchema, pointRewardsSchema, pointsProgramPnLSchema, pointsProgramSchema, pointsRewardsPnLSchema, poolHistoryMetricSchema, poolOpportunityDetailSchema, poolOpportunityId, poolOpportunityKeySchema, poolOpportunitySchema, poolPositionHistoryMetricSchema, poolPositionId, poolPositionKeySchema, poolPositionSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionHistoryMetricSchema, positionHistoryQuerySchema, positionId, positionKeySchema, positionKindSchema, positionSchema, priceFeedDataSchema, priceFeedSummarySchema, quotaAssetSchema, rateCurvePointSchema, rateCurveSchema, receivedAssetSchema, responseMetadataSchema, responseSchema, rewardsPnLSchema, rewardsSchema, strategyHistoryMetricSchema, strategyOpportunityDetailSchema, strategyOpportunityId, strategyOpportunityKeySchema, strategyOpportunitySchema, strategyPositionHistoryMetricSchema, strategyPositionId, strategyPositionKeySchema, strategyPositionSchema, timestampSchema, tokenAmountSchema, tokenRewardsPnLSchema, tokenRewardsSchema, tokenSchema, txCallSchema };
17
+ export { Amount, ApyBreakdown, AssetType, BorrowRateBreakdown, Bps, CHART_METRIC_UNITS, CHART_RANGES, CHART_UNAVAILABLE_CODES, ChainFailed, ChainId, ChainMetadata, ChainScoped, ChainScopedFilter, ChainSucceeded, ChartBundle, ChartDenomination, ChartMetric, ChartQuery, ChartRange, ChartSeries, ChartSeriesOk, ChartSeriesUnavailable, ChartUnavailableCode, ChartUnit, ChartValue, ChartWindow, Curator, CuratorName, DataResponse, DataSource, DelayedReceivedAsset, FILTER_ALL, FilterAll, Filterable, GridSampling, InstantReceivedAsset, Leverage, LiquidatableAccount, LiquidatableAccountFilter, LiquidationApproval, LiquidationDetails, LiquidationPosition, Opportunity, OpportunityBase, OpportunityChartMetric, OpportunityDetail, OpportunityFilter, OpportunityId, OpportunityKey, OpportunityKind, POOL_OPPORTUNITY_CHART_METRICS, POOL_POSITION_CHART_METRICS, PnlBreakdown, PointRewards, PointsProgram, PointsProgramPnL, PointsRewardsPnL, PoolOpportunity, PoolOpportunityChartMetric, PoolOpportunityDetail, PoolOpportunityKey, PoolOpportunityRef, PoolPosition, PoolPositionChartMetric, PoolPositionKey, PoolPositionRef, Position, PositionChartMetric, PositionCollateral, PositionFilter, PositionId, PositionKey, PositionKind, PositionMetrics, PriceFeedData, PriceFeedSummary, QuotaAsset, RateCurve, RateCurvePoint, ReceivedAsset, ResponseMetadata, Rewards, RewardsPnL, STRATEGY_OPPORTUNITY_CHART_METRICS, STRATEGY_POSITION_CHART_METRICS, StrategyOpportunity, StrategyOpportunityChartMetric, StrategyOpportunityDetail, StrategyOpportunityKey, StrategyOpportunityRef, StrategyPosition, StrategyPositionChartMetric, StrategyPositionKey, StrategyPositionRef, Timestamp, Token, TokenAmount, TokenRewards, TokenRewardsPnL, TxCall, amountSchema, apyBreakdownSchema, assetTypeSchema, booleanParamSchema, borrowRateBreakdownSchema, bpsSchema, chainFailedSchema, chainIdSchema, chainMetadataSchema, chainSucceededSchema, chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, curatorNameSchema, curatorSchema, dataSourceSchema, delayedReceivedAssetSchema, encodeFlag, filterAllSchema, filterable, instantReceivedAssetSchema, isFilterSet, leverageSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionId, liquidationPositionSchema, matchesLiquidatableAccountFilter, matchesOpportunityFilter, matchesPositionFilter, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterQueryParamsSchema, opportunityFilterQuerySchema, opportunityFilterSchema, opportunityId, opportunityKeySchema, opportunityKindSchema, opportunitySchema, pnlBreakdownSchema, pointRewardsSchema, pointsProgramPnLSchema, pointsProgramSchema, pointsRewardsPnLSchema, poolOpportunityChartMetricSchema, poolOpportunityDetailSchema, poolOpportunityId, poolOpportunityKeySchema, poolOpportunitySchema, poolPositionChartMetricSchema, poolPositionId, poolPositionKeySchema, poolPositionSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionId, positionKeySchema, positionKindSchema, positionSchema, priceFeedDataSchema, priceFeedSummarySchema, quotaAssetSchema, rateCurvePointSchema, rateCurveSchema, receivedAssetSchema, responseMetadataSchema, responseSchema, rewardsPnLSchema, rewardsSchema, strategyOpportunityChartMetricSchema, strategyOpportunityDetailSchema, strategyOpportunityId, strategyOpportunityKeySchema, strategyOpportunitySchema, strategyPositionChartMetricSchema, strategyPositionId, strategyPositionKeySchema, strategyPositionSchema, timestampSchema, tokenAmountSchema, tokenRewardsPnLSchema, tokenRewardsSchema, tokenSchema, txCallSchema };
@@ -1,7 +1,7 @@
1
1
  import { AssetType, Bps, ChainId, Leverage, Token, TokenAmount } from "./primitives.js";
2
2
  import { ChainScopedFilter, Filterable } from "./filters.js";
3
- import { ApyBreakdown, PointsProgram } from "./opportunities.js";
4
3
  import { DelayedReceivedAsset, LiquidationPosition } from "./liquidations.js";
4
+ import { ApyBreakdown, PointsProgram } from "./opportunities.js";
5
5
  import { Address } from "viem";
6
6
  //#region src/model/positions.d.ts
7
7
  /**
@@ -131,6 +131,67 @@ interface PoolPosition {
131
131
  **/
132
132
  pnl?: PnlBreakdown;
133
133
  }
134
+ /**
135
+ * Cost of a position's debt broken down by source.
136
+ *
137
+ * The base rate is what the pool charges on the debt; each quoted collateral
138
+ * adds its own quota rate on top. Rates are reported in two normalizations:
139
+ * relative to the position's total value and relative to its debt.
140
+ **/
141
+ interface BorrowRateBreakdown {
142
+ /**
143
+ * Base rate plus quota rates, relative to the position's total value.
144
+ **/
145
+ total: Bps;
146
+ /**
147
+ * Base rate plus quota rates, relative to the debt. This is the rate the
148
+ * debt itself grows at, so it feeds {@link PositionMetrics.timeToLiquidation}.
149
+ **/
150
+ totalOnDebt: Bps;
151
+ /**
152
+ * Annual cost of the borrowed underlying itself: the pool's base rate plus
153
+ * the credit manager's interest fee. Same value `borrowApy` reports.
154
+ **/
155
+ base: Bps;
156
+ /**
157
+ * Per-token quota rate contribution, relative to the position's total value.
158
+ **/
159
+ quotas: Record<Address, Bps>;
160
+ }
161
+ /**
162
+ * Health and cost metrics of a credit account's state, actual or projected.
163
+ *
164
+ * Previews and operation states carry the whole group; on-chain positions
165
+ * report only the fields they lack natively, see {@link StrategyPosition}.
166
+ **/
167
+ interface PositionMetrics {
168
+ /**
169
+ * Health factor in basis points: below `10000` the account is liquidatable.
170
+ *
171
+ * @example `12500` for a health factor of 1.25
172
+ **/
173
+ healthFactor: Bps;
174
+ /**
175
+ * Net rate the whole position earns, collateral yield minus borrow cost.
176
+ **/
177
+ overallApy: Bps;
178
+ /**
179
+ * Cost of the debt, broken down by source.
180
+ **/
181
+ borrowRate: BorrowRateBreakdown;
182
+ /**
183
+ * Estimated milliseconds until the health factor decays to `10000` under
184
+ * the current borrow rate, or `null` when the debt carries no rate (or the
185
+ * account is already liquidatable).
186
+ **/
187
+ timeToLiquidation: bigint | null;
188
+ /**
189
+ * Price of the single non-underlying collateral at which the account
190
+ * becomes liquidatable, in the oracle's 8-decimal fixed point, or `null`
191
+ * when the account holds zero or several non-underlying assets.
192
+ **/
193
+ liquidationPrice: bigint | null;
194
+ }
134
195
  /**
135
196
  * An open credit account of a wallet.
136
197
  **/
@@ -200,6 +261,28 @@ interface StrategyPosition {
200
261
  * @example `12500` for a health factor of 1.25
201
262
  **/
202
263
  healthFactor: Bps;
264
+ /**
265
+ * Cost of the debt broken down into the pool's base rate and per-token
266
+ * quota rates.
267
+ *
268
+ * @mode onchain
269
+ **/
270
+ borrowRate?: BorrowRateBreakdown;
271
+ /**
272
+ * Estimated milliseconds until the health factor decays to `10000` under
273
+ * the current borrow rate, or `null` when it cannot be estimated.
274
+ *
275
+ * @mode onchain
276
+ **/
277
+ timeToLiquidation?: bigint | null;
278
+ /**
279
+ * Price of the single non-underlying collateral at which the account
280
+ * becomes liquidatable, in the oracle's 8-decimal fixed point, or `null`
281
+ * when the account holds zero or several non-underlying assets.
282
+ *
283
+ * @mode onchain
284
+ **/
285
+ liquidationPrice?: bigint | null;
203
286
  /**
204
287
  * What the position has earned so far.
205
288
  *
@@ -343,4 +426,4 @@ interface StrategyPositionRef extends StrategyPositionKey {
343
426
  **/
344
427
  type PositionKey = PoolPositionRef | StrategyPositionRef;
345
428
  //#endregion
346
- export { PnlBreakdown, PointsProgramPnL, PointsRewardsPnL, PoolPosition, PoolPositionKey, PoolPositionRef, Position, PositionCollateral, PositionFilter, PositionId, PositionKey, PositionKind, RewardsPnL, StrategyPosition, StrategyPositionKey, StrategyPositionRef, TokenRewardsPnL, liquidationPositionId, matchesPositionFilter, poolPositionId, positionId, strategyPositionId };
429
+ export { BorrowRateBreakdown, PnlBreakdown, PointsProgramPnL, PointsRewardsPnL, PoolPosition, PoolPositionKey, PoolPositionRef, Position, PositionCollateral, PositionFilter, PositionId, PositionKey, PositionKind, PositionMetrics, RewardsPnL, StrategyPosition, StrategyPositionKey, StrategyPositionRef, TokenRewardsPnL, liquidationPositionId, matchesPositionFilter, poolPositionId, positionId, strategyPositionId };
@@ -255,6 +255,15 @@ declare const poolPositionSchema: z.ZodObject<{
255
255
  }, z.core.$strip>], "kind">>;
256
256
  }, z.core.$strip>>;
257
257
  }, z.core.$strip>;
258
+ /**
259
+ * {@link BorrowRateBreakdown}
260
+ **/
261
+ declare const borrowRateBreakdownSchema: z.ZodObject<{
262
+ total: z.ZodNumber;
263
+ totalOnDebt: z.ZodNumber;
264
+ base: z.ZodNumber;
265
+ quotas: z.ZodRecord<z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>, z.ZodNumber>;
266
+ }, z.core.$strip>;
258
267
  /**
259
268
  * {@link StrategyPosition}
260
269
  **/
@@ -323,6 +332,14 @@ declare const strategyPositionSchema: z.ZodObject<{
323
332
  }, z.core.$strip>;
324
333
  }, z.core.$strip>;
325
334
  healthFactor: z.ZodNumber;
335
+ borrowRate: z.ZodOptional<z.ZodObject<{
336
+ total: z.ZodNumber;
337
+ totalOnDebt: z.ZodNumber;
338
+ base: z.ZodNumber;
339
+ quotas: z.ZodRecord<z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>, z.ZodNumber>;
340
+ }, z.core.$strip>>;
341
+ timeToLiquidation: z.ZodOptional<z.ZodNullable<z.ZodCodec<z.ZodUnion<[z.ZodString, z.ZodBigInt]>, z.ZodBigInt>>>;
342
+ liquidationPrice: z.ZodOptional<z.ZodNullable<z.ZodCodec<z.ZodUnion<[z.ZodString, z.ZodBigInt]>, z.ZodBigInt>>>;
326
343
  pnl: z.ZodOptional<z.ZodObject<{
327
344
  organic: z.ZodObject<{
328
345
  value: z.ZodCodec<z.ZodUnion<[z.ZodString, z.ZodBigInt]>, z.ZodBigInt>;
@@ -568,6 +585,14 @@ declare const positionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
568
585
  }, z.core.$strip>;
569
586
  }, z.core.$strip>;
570
587
  healthFactor: z.ZodNumber;
588
+ borrowRate: z.ZodOptional<z.ZodObject<{
589
+ total: z.ZodNumber;
590
+ totalOnDebt: z.ZodNumber;
591
+ base: z.ZodNumber;
592
+ quotas: z.ZodRecord<z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>, z.ZodNumber>;
593
+ }, z.core.$strip>>;
594
+ timeToLiquidation: z.ZodOptional<z.ZodNullable<z.ZodCodec<z.ZodUnion<[z.ZodString, z.ZodBigInt]>, z.ZodBigInt>>>;
595
+ liquidationPrice: z.ZodOptional<z.ZodNullable<z.ZodCodec<z.ZodUnion<[z.ZodString, z.ZodBigInt]>, z.ZodBigInt>>>;
571
596
  pnl: z.ZodOptional<z.ZodObject<{
572
597
  organic: z.ZodObject<{
573
598
  value: z.ZodCodec<z.ZodUnion<[z.ZodString, z.ZodBigInt]>, z.ZodBigInt>;
@@ -756,4 +781,4 @@ declare const positionKeySchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
756
781
  kind: z.ZodLiteral<"strategy">;
757
782
  }, z.core.$strip>], "kind">;
758
783
  //#endregion
759
- export { pnlBreakdownSchema, pointsProgramPnLSchema, pointsRewardsPnLSchema, poolPositionKeySchema, poolPositionSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionKeySchema, positionKindSchema, positionSchema, rewardsPnLSchema, strategyPositionKeySchema, strategyPositionSchema, tokenRewardsPnLSchema };
784
+ export { borrowRateBreakdownSchema, pnlBreakdownSchema, pointsProgramPnLSchema, pointsRewardsPnLSchema, poolPositionKeySchema, poolPositionSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionKeySchema, positionKindSchema, positionSchema, rewardsPnLSchema, strategyPositionKeySchema, strategyPositionSchema, tokenRewardsPnLSchema };
@@ -1,7 +1,6 @@
1
1
  import { GearboxSDKOptions, Mode, NamespaceOptions, OffchainByMode, OffchainSource, OnchainByMode, OnchainSource, PlainMultichainSDKOptions } from "./types.js";
2
2
  import { EntityMerger, FilterResult, ListMerger, MergeListResult } from "./utils/types.js";
3
3
  import { filterResponse } from "./utils/filterResponse.js";
4
- import { HistoryReader } from "./utils/history.js";
5
4
  import { DEFAULT_MAX_OFFCHAIN_LAG, mergeChainList, mergeChainOne } from "./utils/mergeChains.js";
6
5
  import "./utils/index.js";
7
6
  import { AbstractNamespace, MergedQuery } from "./AbstractNamespace.js";
@@ -20,4 +19,4 @@ import { SourceUnavailableError } from "./errors/SourceUnavailableError.js";
20
19
  import { assertSameChains } from "./errors/assertSameChains.js";
21
20
  import { everyChainFailed } from "./errors/everyChainFailed.js";
22
21
  import "./errors/index.js";
23
- export { AbstractNamespace, AllSourcesFailedError, ChainRef, DEFAULT_MAX_OFFCHAIN_LAG, type EntityMerger, type FilterResult, GearboxSDK, GearboxSDKOptions, HistoryReader, type ListMerger, type MergeListResult, MergedQuery, MissingSourceError, Mode, NamespaceOptions, NoSourceServedError, OffchainByMode, OffchainSource, OnchainByMode, OnchainSource, Opportunities, OpportunitiesBase, OpportunitiesByMode, OpportunitiesMerged, OpportunitiesNamespace, OpportunitiesOffchainBranch, OpportunitiesOffchainOnly, OpportunitiesOnchainBranch, OpportunitiesOnchainOnly, OpportunityMergers, PlainMultichainSDKOptions, PositionMergers, Positions, PositionsBase, PositionsByMode, PositionsMerged, PositionsNamespace, PositionsOffchainBranch, PositionsOffchainOnly, PositionsOnchainBranch, PositionsOnchainOnly, SourceChainMismatchError, SourceUnavailableError, assertSameChains, everyChainFailed, filterResponse, mergeChainList, mergeChainOne };
22
+ export { AbstractNamespace, AllSourcesFailedError, ChainRef, DEFAULT_MAX_OFFCHAIN_LAG, type EntityMerger, type FilterResult, GearboxSDK, GearboxSDKOptions, type ListMerger, type MergeListResult, MergedQuery, MissingSourceError, Mode, NamespaceOptions, NoSourceServedError, OffchainByMode, OffchainSource, OnchainByMode, OnchainSource, Opportunities, OpportunitiesBase, OpportunitiesByMode, OpportunitiesMerged, OpportunitiesNamespace, OpportunitiesOffchainBranch, OpportunitiesOffchainOnly, OpportunitiesOnchainBranch, OpportunitiesOnchainOnly, OpportunityMergers, PlainMultichainSDKOptions, PositionMergers, Positions, PositionsBase, PositionsByMode, PositionsMerged, PositionsNamespace, PositionsOffchainBranch, PositionsOffchainOnly, PositionsOnchainBranch, PositionsOnchainOnly, SourceChainMismatchError, SourceUnavailableError, assertSameChains, everyChainFailed, filterResponse, mergeChainList, mergeChainOne };
@@ -1,5 +1,5 @@
1
+ import { ChartBundle, ChartRange, PoolOpportunityChartMetric, StrategyOpportunityChartMetric } from "../../model/charts.js";
1
2
  import { Opportunity, OpportunityFilter, PoolOpportunityDetail, PoolOpportunityKey, PoolOpportunityRef, StrategyOpportunityDetail, StrategyOpportunityKey, StrategyOpportunityRef } from "../../model/opportunities.js";
2
- import { PoolHistoryMetric, StrategyHistoryMetric } from "../../model/history.js";
3
3
  import { DataResponse } from "../../model/response.js";
4
4
  import "../../model/index.js";
5
5
  import { MultichainSDK } from "../../sdk/MultichainSDK.js";
@@ -8,7 +8,6 @@ import { GearboxAPI } from "../../offchain/GearboxAPI.js";
8
8
  import "../../offchain/index.js";
9
9
  import { NamespaceOptions } from "../types.js";
10
10
  import { FilterResult } from "../utils/types.js";
11
- import { HistoryReader } from "../utils/history.js";
12
11
  import "../utils/index.js";
13
12
  import { AbstractNamespace } from "../AbstractNamespace.js";
14
13
  import { OpportunitiesBase, OpportunitiesOffchainOnly, OpportunityMergers } from "./types.js";
@@ -40,10 +39,10 @@ declare class OpportunitiesNamespace extends AbstractNamespace<MultichainSDK["op
40
39
  **/
41
40
  filter<R extends DataResponse<Opportunity[]> | undefined>(response: R, filter?: OpportunityFilter): FilterResult<R, Opportunity>;
42
41
  /**
43
- * {@inheritDoc OpportunitiesOffchainOnly.history}
42
+ * {@inheritDoc OpportunitiesOffchainOnly.charts}
44
43
  **/
45
- history(key: PoolOpportunityRef): HistoryReader<PoolHistoryMetric>;
46
- history(key: StrategyOpportunityRef): HistoryReader<StrategyHistoryMetric>;
44
+ charts<const Metrics extends readonly PoolOpportunityChartMetric[]>(key: PoolOpportunityRef, metrics: Metrics, range: ChartRange): Promise<DataResponse<ChartBundle<Metrics>>>;
45
+ charts<const Metrics extends readonly StrategyOpportunityChartMetric[]>(key: StrategyOpportunityRef, metrics: Metrics, range: ChartRange): Promise<DataResponse<ChartBundle<Metrics>>>;
47
46
  }
48
47
  //#endregion
49
48
  export { OpportunitiesNamespace };
@@ -1,5 +1,5 @@
1
+ import { ChartBundle, ChartRange, PoolOpportunityChartMetric, StrategyOpportunityChartMetric } from "../../model/charts.js";
1
2
  import { Opportunity, OpportunityFilter, PoolOpportunityDetail, PoolOpportunityKey, PoolOpportunityRef, StrategyOpportunityDetail, StrategyOpportunityKey, StrategyOpportunityRef } from "../../model/opportunities.js";
2
- import { PoolHistoryMetric, StrategyHistoryMetric } from "../../model/history.js";
3
3
  import { DataResponse } from "../../model/response.js";
4
4
  import "../../model/index.js";
5
5
  import { MultichainOpportunitiesService } from "../../sdk/opportunities/MultichainOpportunitiesService.js";
@@ -8,7 +8,6 @@ import { OffchainOpportunities } from "../../offchain/opportunities/OffchainOppo
8
8
  import "../../offchain/index.js";
9
9
  import { Mode } from "../types.js";
10
10
  import { EntityMerger, FilterResult, ListMerger } from "../utils/types.js";
11
- import { HistoryReader } from "../utils/history.js";
12
11
  import "../utils/index.js";
13
12
  //#region src/new-sdk/opportunities/types.d.ts
14
13
  /**
@@ -56,12 +55,15 @@ interface OpportunitiesBase {
56
55
  **/
57
56
  interface OpportunitiesOffchainOnly {
58
57
  /**
59
- * Historical charts of one opportunity, one metric and one range at a time:
60
- * `history(key).chart("depositApy", "1m")`. The key's kind decides which
61
- * metrics exist, so asking a pool for a strategy series does not compile.
58
+ * Historical charts of one opportunity, one series per metric on a shared
59
+ * axis: `charts(key, ["depositApy", "borrowApy"], "1m")`.
60
+ *
61
+ * The key's kind decides which metrics exist, so asking a pool for a strategy
62
+ * chart does not compile, and the bundle is keyed by exactly the metrics
63
+ * named — one of them is a bundle of one, not a different call.
62
64
  **/
63
- history(key: PoolOpportunityRef): HistoryReader<PoolHistoryMetric>;
64
- history(key: StrategyOpportunityRef): HistoryReader<StrategyHistoryMetric>;
65
+ charts<const Metrics extends readonly PoolOpportunityChartMetric[]>(key: PoolOpportunityRef, metrics: Metrics, range: ChartRange): Promise<DataResponse<ChartBundle<Metrics>>>;
66
+ charts<const Metrics extends readonly StrategyOpportunityChartMetric[]>(key: StrategyOpportunityRef, metrics: Metrics, range: ChartRange): Promise<DataResponse<ChartBundle<Metrics>>>;
65
67
  }
66
68
  /**
67
69
  * Reads only the chain can answer. Empty for now.