@gearbox-protocol/sdk 16.0.0 → 16.1.0

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 (56) hide show
  1. package/dist/cjs/model/analytics.schema.js +44 -1
  2. package/dist/cjs/model/charts.js +15 -1
  3. package/dist/cjs/model/charts.schema.js +9 -3
  4. package/dist/cjs/model/index.js +9 -4
  5. package/dist/cjs/model/liquidations.schema.js +1 -1
  6. package/dist/cjs/model/opportunities.schema.js +2 -2
  7. package/dist/cjs/model/positions.schema.js +2 -2
  8. package/dist/cjs/offchain/analytics/OffchainAnalytics.js +25 -2
  9. package/dist/cjs/sdk/analytics/AnalyticsNamespace.js +6 -0
  10. package/dist/esm/dev/AccountOpener.js +1 -1
  11. package/dist/esm/dev/withdrawalUtils.js +1 -1
  12. package/dist/esm/model/analytics.schema.js +42 -2
  13. package/dist/esm/model/charts.js +15 -2
  14. package/dist/esm/model/charts.schema.js +9 -4
  15. package/dist/esm/model/index.js +6 -6
  16. package/dist/esm/model/liquidations.schema.js +1 -1
  17. package/dist/esm/model/opportunities.schema.js +2 -2
  18. package/dist/esm/model/positions.schema.js +2 -2
  19. package/dist/esm/offchain/analytics/OffchainAnalytics.js +25 -2
  20. package/dist/esm/onchain/accounts/CreditAccountsServiceV310.js +2 -2
  21. package/dist/esm/onchain/accounts/liquidations/LiquidationsService.js +1 -1
  22. package/dist/esm/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
  23. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
  24. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
  25. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
  26. package/dist/esm/onchain/base/TokensMeta.js +3 -3
  27. package/dist/esm/onchain/core/createAddressProvider.js +1 -1
  28. package/dist/esm/onchain/market/adapters/contracts/AccountMigratorAdapterContract.js +1 -1
  29. package/dist/esm/onchain/market/adapters/contracts/ERC4626AdapterContract.js +1 -1
  30. package/dist/esm/onchain/market/credit/CreditFacadeV310BaseContract.js +1 -1
  31. package/dist/esm/onchain/market/pool/PoolV310Contract.js +1 -1
  32. package/dist/esm/onchain/market/zapper/IETHZapperContract.js +1 -1
  33. package/dist/esm/onchain/market/zapper/ZapperContract.js +1 -1
  34. package/dist/esm/onchain/utils/viem/simulateWithPriceUpdates.js +1 -1
  35. package/dist/esm/preview/simulate/simulatePoolOperation.js +1 -1
  36. package/dist/esm/preview/trace/extractTransfers.js +1 -1
  37. package/dist/esm/sdk/analytics/AnalyticsNamespace.js +6 -0
  38. package/dist/types/model/analytics.d.ts +22 -1
  39. package/dist/types/model/analytics.schema.d.ts +65 -1
  40. package/dist/types/model/charts.d.ts +20 -2
  41. package/dist/types/model/charts.schema.d.ts +14 -2
  42. package/dist/types/model/index.d.ts +5 -5
  43. package/dist/types/offchain/AbstractOffchainNamespace.d.ts +1 -1
  44. package/dist/types/offchain/analytics/OffchainAnalytics.d.ts +14 -2
  45. package/dist/types/offchain/analytics/types.d.ts +11 -0
  46. package/dist/types/offchain/opportunities/OffchainOpportunities.d.ts +1 -1
  47. package/dist/types/offchain/opportunities/types.d.ts +1 -1
  48. package/dist/types/offchain/positions/OffchainPositions.d.ts +1 -1
  49. package/dist/types/offchain/positions/types.d.ts +1 -1
  50. package/dist/types/sdk/analytics/AnalyticsNamespace.d.ts +6 -0
  51. package/dist/types/sdk/analytics/types.d.ts +16 -0
  52. package/dist/types/sdk/opportunities/OpportunitiesNamespace.d.ts +1 -1
  53. package/dist/types/sdk/opportunities/types.d.ts +1 -1
  54. package/dist/types/sdk/positions/PositionsNamespace.d.ts +1 -1
  55. package/dist/types/sdk/positions/types.d.ts +1 -1
  56. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import { AbstractAdapterContract } from "./AbstractAdapter.js";
2
1
  import { accountMigratorAbi } from "../../../../abi/AccountMigrator.js";
2
+ import { AbstractAdapterContract } from "./AbstractAdapter.js";
3
3
  //#region src/onchain/market/adapters/contracts/AccountMigratorAdapterContract.ts
4
4
  const abi = accountMigratorAbi;
5
5
  const protocolAbi = accountMigratorAbi;
@@ -1,6 +1,6 @@
1
+ import { ierc4626AdapterAbi } from "../../../../abi/ierc4626Adapter.js";
1
2
  import { MissingSerializedParamsError } from "../../../base/errors.js";
2
3
  import "../../../base/index.js";
3
- import { ierc4626AdapterAbi } from "../../../../abi/ierc4626Adapter.js";
4
4
  import { iERC4626Abi } from "../abi/targetContractAbi.js";
5
5
  import { fnSigToName, swapFromTransfers } from "../transferHelpers.js";
6
6
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
@@ -1,7 +1,7 @@
1
+ import { iPausableAbi } from "../../../abi/iPausable.js";
1
2
  import { iCreditFacadeMulticallV310Abi, iCreditFacadeV310Abi } from "../../../abi/310/generated.js";
2
3
  import { BaseContract } from "../../base/BaseContract.js";
3
4
  import "../../base/index.js";
4
- import { iPausableAbi } from "../../../abi/iPausable.js";
5
5
  //#region src/onchain/market/credit/CreditFacadeV310BaseContract.ts
6
6
  const abi = [
7
7
  ...iCreditFacadeV310Abi,
@@ -1,3 +1,4 @@
1
+ import { iPausableAbi } from "../../../abi/iPausable.js";
1
2
  import { iPoolV310Abi } from "../../../abi/310/generated.js";
2
3
  import { AddressMap } from "../../utils/AddressMap.js";
3
4
  import { RAY } from "../../constants/math.js";
@@ -7,7 +8,6 @@ import "../../utils/index.js";
7
8
  import { SdkRWADataNotLoadedError } from "../../core/errors.js";
8
9
  import { BaseContract } from "../../base/BaseContract.js";
9
10
  import "../../base/index.js";
10
- import { iPausableAbi } from "../../../abi/iPausable.js";
11
11
  //#region src/onchain/market/pool/PoolV310Contract.ts
12
12
  const abi = [...iPoolV310Abi, ...iPausableAbi];
13
13
  var PoolV310Contract = class extends BaseContract {
@@ -1,5 +1,5 @@
1
- import { ZapperContract } from "./ZapperContract.js";
2
1
  import { iethZapperAbi } from "../../../abi/iETHZapper.js";
2
+ import { ZapperContract } from "./ZapperContract.js";
3
3
  //#region src/onchain/market/zapper/IETHZapperContract.ts
4
4
  const abi = iethZapperAbi;
5
5
  var IETHZapperContract = class extends ZapperContract {
@@ -1,8 +1,8 @@
1
+ import { iZapperAbi } from "../../../abi/iZapper.js";
1
2
  import { BaseContract } from "../../base/BaseContract.js";
2
3
  import "../../base/index.js";
3
4
  import { sdkErr, sdkOk } from "../../../model/result.js";
4
5
  import "../../../model/index.js";
5
- import { iZapperAbi } from "../../../abi/iZapper.js";
6
6
  //#region src/onchain/market/zapper/ZapperContract.ts
7
7
  /**
8
8
  * Base contract for every Gearbox zapper. Specialized zappers (e.g.
@@ -1,6 +1,6 @@
1
1
  import { errorAbis } from "../../../abi/errors.js";
2
- import { generateCastTraceCall } from "./cast.js";
3
2
  import { iUpdatablePriceFeedAbi } from "../../../abi/iUpdatablePriceFeed.js";
3
+ import { generateCastTraceCall } from "./cast.js";
4
4
  import { simulateMulticall } from "./simulateMulticall.js";
5
5
  import { BaseError, CallExecutionError, ContractFunctionRevertedError, decodeFunctionData, decodeFunctionResult, encodeFunctionData, parseAbi } from "viem";
6
6
  import { getAction, parseAccount } from "viem/utils";
@@ -1,7 +1,7 @@
1
+ import { iZapperAbi } from "../../abi/iZapper.js";
1
2
  import { iPoolV310Abi } from "../../abi/310/generated.js";
2
3
  import { sdkErr, sdkOk } from "../../model/result.js";
3
4
  import "../../model/index.js";
4
- import { iZapperAbi } from "../../abi/iZapper.js";
5
5
  import { asPreviewSimulationError } from "./errors.js";
6
6
  //#region src/preview/simulate/simulatePoolOperation.ts
7
7
  function previewRead(operation) {
@@ -1,5 +1,5 @@
1
- import { iCreditFacadeV310Abi } from "../../abi/310/generated.js";
2
1
  import { ierc20Abi } from "../../abi/iERC20.js";
2
+ import { iCreditFacadeV310Abi } from "../../abi/310/generated.js";
3
3
  import { AddressMap } from "../../onchain/utils/AddressMap.js";
4
4
  import "../../onchain/index.js";
5
5
  import { UnexpectedFacadeEventOrderError } from "./errors.js";
@@ -2,9 +2,15 @@
2
2
  /** Backend-only protocol analytics exposed by {@link GearboxSDK}. */
3
3
  var AnalyticsNamespace = class {
4
4
  positions;
5
+ #backend;
5
6
  constructor(backend) {
7
+ this.#backend = backend;
6
8
  this.positions = backend.analytics.positions;
7
9
  }
10
+ /** {@inheritDoc IAnalytics.charts} */
11
+ async charts(metrics, range, filter) {
12
+ return this.#backend.analytics.getCharts(metrics, range, filter);
13
+ }
8
14
  };
9
15
  //#endregion
10
16
  export { AnalyticsNamespace };
@@ -1,3 +1,5 @@
1
+ import { ChartRange, ProtocolChartMetric } from "./charts.js";
2
+ import { ChainScopedFilter } from "./filters.js";
1
3
  import { PoolPosition, PositionFilter, StrategyPosition } from "./positions.js";
2
4
  import { LiquidationPosition } from "./liquidations.js";
3
5
  import { Address } from "viem";
@@ -58,5 +60,24 @@ interface AnalyticsPositionPage {
58
60
  /** Effective maximum number of rows returned. */
59
61
  limit: number;
60
62
  }
63
+ /**
64
+ * What one protocol-wide chart read asks for.
65
+ *
66
+ * A {@link ChartQuery} that also carries its chain scope: the series is a sum
67
+ * over chains rather than a property of one subject, so which chains are in it
68
+ * is part of the question and not something a path segment already answered.
69
+ * Omitting `chainIds` asks for every chain the backend serves.
70
+ **/
71
+ interface AnalyticsChartQuery extends ChainScopedFilter {
72
+ /**
73
+ * Metrics to chart, at least one and each named once. They become the keys of
74
+ * {@link ChartBundle.series}.
75
+ **/
76
+ metrics: readonly ProtocolChartMetric[];
77
+ /**
78
+ * Window to cover, echoed back in {@link ChartWindow.range}.
79
+ **/
80
+ range: ChartRange;
81
+ }
61
82
  //#endregion
62
- export { AnalyticsLiquidationPosition, AnalyticsPoolPosition, AnalyticsPosition, AnalyticsPositionListOptions, AnalyticsPositionOwner, AnalyticsPositionPage, AnalyticsPositionSortField, AnalyticsSortDirection, AnalyticsStrategyPosition };
83
+ export { AnalyticsChartQuery, AnalyticsLiquidationPosition, AnalyticsPoolPosition, AnalyticsPosition, AnalyticsPositionListOptions, AnalyticsPositionOwner, AnalyticsPositionPage, AnalyticsPositionSortField, AnalyticsSortDirection, AnalyticsStrategyPosition };
@@ -145,5 +145,69 @@ declare const analyticsPositionPageSchema: z.ZodObject<{
145
145
  offset: z.ZodNumber;
146
146
  limit: z.ZodNumber;
147
147
  }, z.core.$strip>;
148
+ /**
149
+ * {@link AnalyticsChartQuery}
150
+ *
151
+ * The metric list is narrowed to {@link ProtocolChartMetric} here rather than
152
+ * on the route, so asking the protocol chart for an opportunity metric is
153
+ * rejected by the one codec both sides share instead of by a check only the
154
+ * backend runs.
155
+ **/
156
+ declare const analyticsChartQueryOptionsSchema: z.ZodObject<{
157
+ metrics: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
158
+ tvlUsd: "tvlUsd";
159
+ }>>>;
160
+ range: z.ZodEnum<{
161
+ "1d": "1d";
162
+ "1m": "1m";
163
+ "1w": "1w";
164
+ "1y": "1y";
165
+ max: "max";
166
+ }>;
167
+ chainIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
168
+ }, z.core.$strip>;
169
+ /**
170
+ * {@link AnalyticsChartQuery} as URL query parameters: the metrics comma-joined
171
+ * like every other chart read, and the chains comma-joined like every other
172
+ * analytics read.
173
+ **/
174
+ declare const analyticsChartQueryParamsSchema: z.ZodObject<{
175
+ metrics: z.ZodString;
176
+ range: z.ZodEnum<{
177
+ "1d": "1d";
178
+ "1m": "1m";
179
+ "1w": "1w";
180
+ "1y": "1y";
181
+ max: "max";
182
+ }>;
183
+ chainIds: z.ZodOptional<z.ZodString>;
184
+ }, z.core.$strip>;
185
+ /**
186
+ * Codec for a protocol-wide chart query. It is shared by the SDK client and
187
+ * backend controller so both sides interpret every parameter identically.
188
+ **/
189
+ declare const analyticsChartQuerySchema: z.ZodCodec<z.ZodObject<{
190
+ metrics: z.ZodString;
191
+ range: z.ZodEnum<{
192
+ "1d": "1d";
193
+ "1m": "1m";
194
+ "1w": "1w";
195
+ "1y": "1y";
196
+ max: "max";
197
+ }>;
198
+ chainIds: z.ZodOptional<z.ZodString>;
199
+ }, z.core.$strip>, z.ZodObject<{
200
+ metrics: z.ZodReadonly<z.ZodArray<z.ZodEnum<{
201
+ tvlUsd: "tvlUsd";
202
+ }>>>;
203
+ range: z.ZodEnum<{
204
+ "1d": "1d";
205
+ "1m": "1m";
206
+ "1w": "1w";
207
+ "1y": "1y";
208
+ max: "max";
209
+ }>;
210
+ chainIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
211
+ }, z.core.$strip>>;
148
212
  //#endregion
149
- export { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema };
213
+ export { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, analyticsChartQueryOptionsSchema, analyticsChartQueryParamsSchema, analyticsChartQuerySchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema };
@@ -74,6 +74,23 @@ declare const STRATEGY_POSITION_CHART_METRICS: readonly ["totalValueUnderlying",
74
74
  * token or a token argument on the read.
75
75
  **/
76
76
  type StrategyPositionChartMetric = (typeof STRATEGY_POSITION_CHART_METRICS)[number];
77
+ /**
78
+ * Every metric the protocol as a whole can chart.
79
+ *
80
+ * Protocol-wide rather than per subject: the series describes Gearbox itself
81
+ * over every chain the read covers, so it has no address to hang off and is
82
+ * read from the analytics namespace rather than from an opportunity.
83
+ *
84
+ * `tvlUsd` is deliberately not spelled `tvl`: that key is already the credit
85
+ * manager's TVL in whole underlying tokens, and one metric has exactly one
86
+ * unit in {@link CHART_METRIC_UNITS}.
87
+ **/
88
+ declare const PROTOCOL_CHART_METRICS: readonly ["tvlUsd"];
89
+ /**
90
+ * Metric the protocol as a whole can chart, derived from
91
+ * {@link PROTOCOL_CHART_METRICS}.
92
+ **/
93
+ type ProtocolChartMetric = (typeof PROTOCOL_CHART_METRICS)[number];
77
94
  /**
78
95
  * Any metric an opportunity can chart.
79
96
  **/
@@ -89,7 +106,7 @@ type PositionChartMetric = PoolPositionChartMetric | StrategyPositionChartMetric
89
106
  * the same rate whether an opportunity or a position charts it — so one metric
90
107
  * has one unit in {@link CHART_METRIC_UNITS} no matter who asks for it.
91
108
  **/
92
- type ChartMetric = OpportunityChartMetric | PositionChartMetric;
109
+ type ChartMetric = OpportunityChartMetric | PositionChartMetric | ProtocolChartMetric;
93
110
  /**
94
111
  * What one chart read asks for, beyond the subject its route names.
95
112
  *
@@ -181,6 +198,7 @@ declare const CHART_METRIC_UNITS: {
181
198
  readonly debt: "token";
182
199
  readonly healthFactor: "bps";
183
200
  readonly netApy7d: "bps";
201
+ readonly tvlUsd: "usd";
184
202
  };
185
203
  /**
186
204
  * A unit together with what it is denominated in.
@@ -341,4 +359,4 @@ interface ChartBundle<Metrics extends readonly ChartMetric[]> {
341
359
  }
342
360
  type ChartSeriesMap<Metrics extends readonly ChartMetric[]> = number extends Metrics["length"] ? Partial<Record<Metrics[number], ChartSeries>> : Record<Metrics[number], ChartSeries>;
343
361
  //#endregion
344
- export { 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 };
362
+ export { 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, PROTOCOL_CHART_METRICS, PoolOpportunityChartMetric, PoolPositionChartMetric, PositionChartMetric, ProtocolChartMetric, STRATEGY_OPPORTUNITY_CHART_METRICS, STRATEGY_POSITION_CHART_METRICS, StrategyOpportunityChartMetric, StrategyPositionChartMetric };
@@ -68,7 +68,13 @@ declare const strategyPositionChartMetricSchema: z.ZodEnum<{
68
68
  totalValueUnderlying: "totalValueUnderlying";
69
69
  }>;
70
70
  /**
71
- * {@link ChartMetric}, every metric either kind of subject can chart.
71
+ * {@link ProtocolChartMetric}
72
+ **/
73
+ declare const protocolChartMetricSchema: z.ZodEnum<{
74
+ tvlUsd: "tvlUsd";
75
+ }>;
76
+ /**
77
+ * {@link ChartMetric}, every metric any subject can chart.
72
78
  **/
73
79
  declare const chartMetricSchema: z.ZodUnion<readonly [z.ZodEnum<{
74
80
  borrowed: "borrowed";
@@ -101,6 +107,8 @@ declare const chartMetricSchema: z.ZodUnion<readonly [z.ZodEnum<{
101
107
  netApy7d: "netApy7d";
102
108
  pnl: "pnl";
103
109
  totalValueUnderlying: "totalValueUnderlying";
110
+ }>, z.ZodEnum<{
111
+ tvlUsd: "tvlUsd";
104
112
  }>]>;
105
113
  /**
106
114
  * {@link ChartQuery}
@@ -137,6 +145,8 @@ declare const chartQuerySchema: z.ZodObject<{
137
145
  netApy7d: "netApy7d";
138
146
  pnl: "pnl";
139
147
  totalValueUnderlying: "totalValueUnderlying";
148
+ }>, z.ZodEnum<{
149
+ tvlUsd: "tvlUsd";
140
150
  }>]>>>;
141
151
  range: z.ZodEnum<{
142
152
  "1d": "1d";
@@ -210,6 +220,8 @@ declare const chartQueryCodec: z.ZodCodec<z.ZodObject<{
210
220
  netApy7d: "netApy7d";
211
221
  pnl: "pnl";
212
222
  totalValueUnderlying: "totalValueUnderlying";
223
+ }>, z.ZodEnum<{
224
+ tvlUsd: "tvlUsd";
213
225
  }>]>>>;
214
226
  range: z.ZodEnum<{
215
227
  "1d": "1d";
@@ -341,4 +353,4 @@ declare const chartWindowSchema: z.ZodObject<{
341
353
  **/
342
354
  declare function chartBundleSchemaFor<const Metrics extends readonly ChartMetric[]>(metrics: Metrics, range: ChartRange): z.ZodType<ChartBundle<Metrics>>;
343
355
  //#endregion
344
- export { chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, poolOpportunityChartMetricSchema, poolPositionChartMetricSchema, strategyOpportunityChartMetricSchema, strategyPositionChartMetricSchema };
356
+ export { chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, poolOpportunityChartMetricSchema, poolPositionChartMetricSchema, protocolChartMetricSchema, strategyOpportunityChartMetricSchema, strategyPositionChartMetricSchema };
@@ -1,4 +1,5 @@
1
1
  import { Amount, Asset, AssetType, Bps, ChainId, Leverage, Timestamp, Token, TokenAmount, TxCall, UnderlyingToken } from "./primitives.js";
2
+ 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, PROTOCOL_CHART_METRICS, PoolOpportunityChartMetric, PoolPositionChartMetric, PositionChartMetric, ProtocolChartMetric, STRATEGY_OPPORTUNITY_CHART_METRICS, STRATEGY_POSITION_CHART_METRICS, StrategyOpportunityChartMetric, StrategyPositionChartMetric } from "./charts.js";
2
3
  import { ChainScopedFilter, FILTER_ALL, FilterAll, Filterable, isFilterSet } from "./filters.js";
3
4
  import { IGearboxError } from "./errors.js";
4
5
  import { Curator, CuratorName } from "./curators.js";
@@ -7,10 +8,9 @@ import { ApyBreakdown, Opportunity, OpportunityBase, OpportunityDetail, Opportun
7
8
  import { BorrowRateBreakdown, PnlBreakdown, PointsProgramPnL, PointsRewardsPnL, PoolPosition, PoolPositionKey, PoolPositionRef, Position, PositionCollateral, PositionFilter, PositionId, PositionKey, PositionKind, PositionTransaction, PositionTransactionKind, PositionsTotals, RewardsPnL, STRATEGY_POSITION_COLLATERAL_ERROR, StrategyPosition, StrategyPositionKey, StrategyPositionRef, TokenQuotaRate, TokenRewardsPnL, liquidationPositionId, matchesPositionFilter, poolPositionId, positionId, strategyPositionId } from "./positions.js";
8
9
  import { AccountHoldings, AccountMetrics, AccountProjection, AccountStateChange, AdapterCallOutsideBracketError, AdjustStrategyPositionPreview, CreditOperationMarket, DelayedStrategyPositionOperationPreview, Estimated, EstimatedProjection, ExitStrategyPositionPreview, InstantStrategyPositionOperationPreview, InvalidTransactionValueError, MalformedBracketError, MalformedBracketKind, MalformedPreviewError, NonAdapterCallInBracketError, OpenStrategyPositionPreview, OperationPreview, OperationPreviewError, PoolOperationType, PoolPositionOperationPreview, PreviewOperationInput, PreviewOperationOptions, RepayStrategyPositionPreview, RoutedField, UnpreviewableAdapterCallError, UnsupportedOutOfBracketCallError, asEstimated } from "./previews.js";
9
10
  import { DelayedReceivedAsset, InstantReceivedAsset, LiquidatableAccount, LiquidatableAccountFilter, LiquidationApproval, LiquidationDetails, LiquidationPosition, ReceivedAsset, matchesLiquidatableAccountFilter } from "./liquidations.js";
10
- import { AnalyticsLiquidationPosition, AnalyticsPoolPosition, AnalyticsPosition, AnalyticsPositionListOptions, AnalyticsPositionOwner, AnalyticsPositionPage, AnalyticsPositionSortField, AnalyticsSortDirection, AnalyticsStrategyPosition } from "./analytics.js";
11
- import { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema } from "./analytics.schema.js";
12
- 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";
13
- import { chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, poolOpportunityChartMetricSchema, poolPositionChartMetricSchema, strategyOpportunityChartMetricSchema, strategyPositionChartMetricSchema } from "./charts.schema.js";
11
+ import { AnalyticsChartQuery, AnalyticsLiquidationPosition, AnalyticsPoolPosition, AnalyticsPosition, AnalyticsPositionListOptions, AnalyticsPositionOwner, AnalyticsPositionPage, AnalyticsPositionSortField, AnalyticsSortDirection, AnalyticsStrategyPosition } from "./analytics.js";
12
+ import { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, analyticsChartQueryOptionsSchema, analyticsChartQueryParamsSchema, analyticsChartQuerySchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema } from "./analytics.schema.js";
13
+ import { chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, poolOpportunityChartMetricSchema, poolPositionChartMetricSchema, protocolChartMetricSchema, strategyOpportunityChartMetricSchema, strategyPositionChartMetricSchema } from "./charts.schema.js";
14
14
  import { CompareTag, CompareTolerance, ToleranceCompareTag, backendPreferred, compareTagOf, offchainOnly, onchainOnly, tolerance } from "./compare.schema.js";
15
15
  import { curatorNameSchema, curatorSchema } from "./curators.schema.js";
16
16
  import { booleanParamSchema, encodeFlag, filterAllSchema, filterable } from "./filters.schema.js";
@@ -25,4 +25,4 @@ import { chainFailedSchema, chainMetadataSchema, chainSucceededSchema, dataSourc
25
25
  import { SDKError, SDKResult, SDKReturn, SafeValue, isSDKError, safeValue, sdkErr, sdkOk } from "./result.js";
26
26
  import { PositionClaimableWithdrawal, PositionPendingWithdrawal, PositionWithdrawals, WithdrawalOutputAmount } from "./withdrawals.js";
27
27
  import { positionClaimableWithdrawalSchema, positionPendingWithdrawalSchema, positionWithdrawalsSchema, withdrawalOutputAmountSchema } from "./withdrawals.schema.js";
28
- export { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, AccountHoldings, AccountMetrics, AccountProjection, AccountStateChange, AdapterCallOutsideBracketError, AdjustStrategyPositionPreview, Amount, AnalyticsLiquidationPosition, AnalyticsPoolPosition, AnalyticsPosition, AnalyticsPositionListOptions, AnalyticsPositionOwner, AnalyticsPositionPage, AnalyticsPositionSortField, AnalyticsSortDirection, AnalyticsStrategyPosition, ApyBreakdown, Asset, 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, CompareTag, CompareTolerance, CreditOperationMarket, Curator, CuratorName, DataResponse, DataSource, DelayedAddCollateralIntent, DelayedCloseAccountIntent, DelayedDecreaseLeverageIntent, DelayedDepositAndIncreaseLeverageIntent, DelayedDepositIntent, DelayedIncreaseLeverageIntent, DelayedIntent, DelayedReceivedAsset, DelayedStrategyPositionOperationPreview, DelayedWithdrawCollateralIntent, Estimated, EstimatedProjection, ExitStrategyPositionPreview, FILTER_ALL, FilterAll, Filterable, GridSampling, IGearboxError, InstantReceivedAsset, InstantStrategyPositionOperationPreview, InvalidTransactionValueError, Leverage, LiquidatableAccount, LiquidatableAccountFilter, LiquidationApproval, LiquidationDetails, LiquidationPosition, MalformedBracketError, MalformedBracketKind, MalformedPreviewError, NonAdapterCallInBracketError, Notice, NoticeKind, NoticeSubject, OpenStrategyPositionPreview, OperationPreview, OperationPreviewError, Opportunity, OpportunityBase, OpportunityChartMetric, OpportunityDetail, OpportunityFilter, OpportunityId, OpportunityKey, OpportunityKind, OpportunityTotals, POOL_OPPORTUNITY_CHART_METRICS, POOL_POSITION_CHART_METRICS, PnlBreakdown, PointRewards, PointsProgram, PointsProgramPnL, PointsRewardsPnL, PoolOperationType, PoolOpportunity, PoolOpportunityChartMetric, PoolOpportunityDetail, PoolOpportunityKey, PoolOpportunityRef, PoolPosition, PoolPositionChartMetric, PoolPositionKey, PoolPositionOperationPreview, PoolPositionRef, Position, PositionChartMetric, PositionClaimableWithdrawal, PositionCollateral, PositionFilter, PositionId, PositionKey, PositionKind, PositionPendingWithdrawal, PositionTransaction, PositionTransactionKind, PositionWithdrawals, PositionsTotals, PreviewOperationInput, PreviewOperationOptions, PriceFeedData, PriceFeedSummary, QuotaAsset, RateCurve, RateCurvePoint, ReceivedAsset, RepayStrategyPositionPreview, ResponseMetadata, Rewards, RewardsPnL, RoutedField, SDKError, SDKResult, SDKReturn, STRATEGY_OPPORTUNITY_CHART_METRICS, STRATEGY_POSITION_CHART_METRICS, STRATEGY_POSITION_COLLATERAL_ERROR, SafeValue, StrategyOpportunity, StrategyOpportunityChartMetric, StrategyOpportunityDetail, StrategyOpportunityKey, StrategyOpportunityRef, StrategyPosition, StrategyPositionChartMetric, StrategyPositionKey, StrategyPositionRef, Timestamp, Token, TokenAmount, TokenQuotaRate, TokenRewards, TokenRewardsPnL, ToleranceCompareTag, TxCall, UnderlyingToken, UnpreviewableAdapterCallError, UnsupportedOutOfBracketCallError, WithdrawalOutputAmount, amountSchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema, apyBreakdownSchema, asEstimated, assetTypeSchema, backendPreferred, booleanParamSchema, borrowRateBreakdownSchema, bpsSchema, chainFailedSchema, chainIdSchema, chainMetadataSchema, chainSucceededSchema, chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, compareTagOf, curatorNameSchema, curatorSchema, dataSourceSchema, delayedReceivedAssetSchema, encodeFlag, filterAllSchema, filterable, instantReceivedAssetSchema, isFilterSet, isSDKError, leverageSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionId, liquidationPositionSchema, matchesLiquidatableAccountFilter, matchesOpportunityFilter, matchesPositionFilter, noticeKindSchema, noticeSchema, offchainOnly, onchainOnly, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterQueryParamsSchema, opportunityFilterQuerySchema, opportunityFilterSchema, opportunityId, opportunityKeySchema, opportunityKindSchema, opportunitySchema, opportunityTotalsSchema, pnlBreakdownSchema, pointRewardsSchema, pointsProgramPnLSchema, pointsProgramSchema, pointsRewardsPnLSchema, poolOpportunityChartMetricSchema, poolOpportunityDetailSchema, poolOpportunityId, poolOpportunityKeySchema, poolOpportunitySchema, poolPositionChartMetricSchema, poolPositionId, poolPositionKeySchema, poolPositionSchema, positionClaimableWithdrawalSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionId, positionKeySchema, positionKindSchema, positionPendingWithdrawalSchema, positionSchema, positionTransactionKindSchema, positionTransactionSchema, positionWithdrawalsSchema, positionsTotalsSchema, priceFeedDataSchema, priceFeedSummarySchema, quotaAssetSchema, rateCurvePointSchema, rateCurveSchema, receivedAssetSchema, responseMetadataSchema, responseSchema, rewardsPnLSchema, rewardsSchema, safeValue, sdkErr, sdkOk, strategyOpportunityChartMetricSchema, strategyOpportunityDetailSchema, strategyOpportunityId, strategyOpportunityKeySchema, strategyOpportunitySchema, strategyPositionChartMetricSchema, strategyPositionId, strategyPositionKeySchema, strategyPositionSchema, timestampSchema, tokenAmountSchema, tokenQuotaRateSchema, tokenRewardsPnLSchema, tokenRewardsSchema, tokenSchema, tolerance, txCallSchema, underlyingTokenSchema, withdrawalOutputAmountSchema };
28
+ export { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, AccountHoldings, AccountMetrics, AccountProjection, AccountStateChange, AdapterCallOutsideBracketError, AdjustStrategyPositionPreview, Amount, AnalyticsChartQuery, AnalyticsLiquidationPosition, AnalyticsPoolPosition, AnalyticsPosition, AnalyticsPositionListOptions, AnalyticsPositionOwner, AnalyticsPositionPage, AnalyticsPositionSortField, AnalyticsSortDirection, AnalyticsStrategyPosition, ApyBreakdown, Asset, 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, CompareTag, CompareTolerance, CreditOperationMarket, Curator, CuratorName, DataResponse, DataSource, DelayedAddCollateralIntent, DelayedCloseAccountIntent, DelayedDecreaseLeverageIntent, DelayedDepositAndIncreaseLeverageIntent, DelayedDepositIntent, DelayedIncreaseLeverageIntent, DelayedIntent, DelayedReceivedAsset, DelayedStrategyPositionOperationPreview, DelayedWithdrawCollateralIntent, Estimated, EstimatedProjection, ExitStrategyPositionPreview, FILTER_ALL, FilterAll, Filterable, GridSampling, IGearboxError, InstantReceivedAsset, InstantStrategyPositionOperationPreview, InvalidTransactionValueError, Leverage, LiquidatableAccount, LiquidatableAccountFilter, LiquidationApproval, LiquidationDetails, LiquidationPosition, MalformedBracketError, MalformedBracketKind, MalformedPreviewError, NonAdapterCallInBracketError, Notice, NoticeKind, NoticeSubject, OpenStrategyPositionPreview, OperationPreview, OperationPreviewError, Opportunity, OpportunityBase, OpportunityChartMetric, OpportunityDetail, OpportunityFilter, OpportunityId, OpportunityKey, OpportunityKind, OpportunityTotals, POOL_OPPORTUNITY_CHART_METRICS, POOL_POSITION_CHART_METRICS, PROTOCOL_CHART_METRICS, PnlBreakdown, PointRewards, PointsProgram, PointsProgramPnL, PointsRewardsPnL, PoolOperationType, PoolOpportunity, PoolOpportunityChartMetric, PoolOpportunityDetail, PoolOpportunityKey, PoolOpportunityRef, PoolPosition, PoolPositionChartMetric, PoolPositionKey, PoolPositionOperationPreview, PoolPositionRef, Position, PositionChartMetric, PositionClaimableWithdrawal, PositionCollateral, PositionFilter, PositionId, PositionKey, PositionKind, PositionPendingWithdrawal, PositionTransaction, PositionTransactionKind, PositionWithdrawals, PositionsTotals, PreviewOperationInput, PreviewOperationOptions, PriceFeedData, PriceFeedSummary, ProtocolChartMetric, QuotaAsset, RateCurve, RateCurvePoint, ReceivedAsset, RepayStrategyPositionPreview, ResponseMetadata, Rewards, RewardsPnL, RoutedField, SDKError, SDKResult, SDKReturn, STRATEGY_OPPORTUNITY_CHART_METRICS, STRATEGY_POSITION_CHART_METRICS, STRATEGY_POSITION_COLLATERAL_ERROR, SafeValue, StrategyOpportunity, StrategyOpportunityChartMetric, StrategyOpportunityDetail, StrategyOpportunityKey, StrategyOpportunityRef, StrategyPosition, StrategyPositionChartMetric, StrategyPositionKey, StrategyPositionRef, Timestamp, Token, TokenAmount, TokenQuotaRate, TokenRewards, TokenRewardsPnL, ToleranceCompareTag, TxCall, UnderlyingToken, UnpreviewableAdapterCallError, UnsupportedOutOfBracketCallError, WithdrawalOutputAmount, amountSchema, analyticsChartQueryOptionsSchema, analyticsChartQueryParamsSchema, analyticsChartQuerySchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema, apyBreakdownSchema, asEstimated, assetTypeSchema, backendPreferred, booleanParamSchema, borrowRateBreakdownSchema, bpsSchema, chainFailedSchema, chainIdSchema, chainMetadataSchema, chainSucceededSchema, chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, compareTagOf, curatorNameSchema, curatorSchema, dataSourceSchema, delayedReceivedAssetSchema, encodeFlag, filterAllSchema, filterable, instantReceivedAssetSchema, isFilterSet, isSDKError, leverageSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionId, liquidationPositionSchema, matchesLiquidatableAccountFilter, matchesOpportunityFilter, matchesPositionFilter, noticeKindSchema, noticeSchema, offchainOnly, onchainOnly, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterQueryParamsSchema, opportunityFilterQuerySchema, opportunityFilterSchema, opportunityId, opportunityKeySchema, opportunityKindSchema, opportunitySchema, opportunityTotalsSchema, pnlBreakdownSchema, pointRewardsSchema, pointsProgramPnLSchema, pointsProgramSchema, pointsRewardsPnLSchema, poolOpportunityChartMetricSchema, poolOpportunityDetailSchema, poolOpportunityId, poolOpportunityKeySchema, poolOpportunitySchema, poolPositionChartMetricSchema, poolPositionId, poolPositionKeySchema, poolPositionSchema, positionClaimableWithdrawalSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionId, positionKeySchema, positionKindSchema, positionPendingWithdrawalSchema, positionSchema, positionTransactionKindSchema, positionTransactionSchema, positionWithdrawalsSchema, positionsTotalsSchema, priceFeedDataSchema, priceFeedSummarySchema, protocolChartMetricSchema, quotaAssetSchema, rateCurvePointSchema, rateCurveSchema, receivedAssetSchema, responseMetadataSchema, responseSchema, rewardsPnLSchema, rewardsSchema, safeValue, sdkErr, sdkOk, strategyOpportunityChartMetricSchema, strategyOpportunityDetailSchema, strategyOpportunityId, strategyOpportunityKeySchema, strategyOpportunitySchema, strategyPositionChartMetricSchema, strategyPositionId, strategyPositionKeySchema, strategyPositionSchema, timestampSchema, tokenAmountSchema, tokenQuotaRateSchema, tokenRewardsPnLSchema, tokenRewardsSchema, tokenSchema, tolerance, txCallSchema, underlyingTokenSchema, withdrawalOutputAmountSchema };
@@ -1,7 +1,7 @@
1
1
  import { ILogger } from "../onchain/types/logger.js";
2
2
  import { ChainId } from "../model/primitives.js";
3
- import { ChainScopedFilter } from "../model/filters.js";
4
3
  import { ChartBundle, ChartMetric, ChartRange } from "../model/charts.js";
4
+ import { ChainScopedFilter } from "../model/filters.js";
5
5
  import { DataResponse } from "../model/response.js";
6
6
  import { GearboxAPIOptions } from "./types.js";
7
7
  import { z } from "zod/v4";
@@ -1,11 +1,23 @@
1
+ import { ChartBundle, ChartRange, ProtocolChartMetric } from "../../model/charts.js";
2
+ import { ChainScopedFilter } from "../../model/filters.js";
3
+ import { DataResponse } from "../../model/response.js";
1
4
  import { GearboxAPIOptions } from "../types.js";
5
+ import { AbstractOffchainNamespace } from "../AbstractOffchainNamespace.js";
2
6
  import { IOffchainAnalytics } from "./types.js";
3
7
  import { OffchainAnalyticsPositions } from "./OffchainAnalyticsPositions.js";
4
8
  //#region src/offchain/analytics/OffchainAnalytics.d.ts
5
- /** Backend-only protocol analytics, grouped by subject. */
6
- declare class OffchainAnalytics implements IOffchainAnalytics {
9
+ /**
10
+ * Backend-only protocol analytics, grouped by subject.
11
+ *
12
+ * It owns the protocol-wide charts itself rather than through a sub-namespace:
13
+ * their subject is Gearbox as a whole, so there is nothing narrower for them to
14
+ * hang off.
15
+ **/
16
+ declare class OffchainAnalytics extends AbstractOffchainNamespace implements IOffchainAnalytics {
7
17
  readonly positions: OffchainAnalyticsPositions;
8
18
  constructor(options: GearboxAPIOptions);
19
+ /** {@inheritDoc IOffchainAnalytics.getCharts} */
20
+ getCharts<const Metrics extends readonly ProtocolChartMetric[]>(metrics: Metrics, range: ChartRange, filter?: ChainScopedFilter): Promise<DataResponse<ChartBundle<Metrics>>>;
9
21
  }
10
22
  //#endregion
11
23
  export { OffchainAnalytics };
@@ -1,3 +1,5 @@
1
+ import { ChartBundle, ChartRange, ProtocolChartMetric } from "../../model/charts.js";
2
+ import { ChainScopedFilter } from "../../model/filters.js";
1
3
  import { AnalyticsPositionListOptions, AnalyticsPositionPage } from "../../model/analytics.js";
2
4
  import { DataResponse } from "../../model/response.js";
3
5
  //#region src/offchain/analytics/types.d.ts
@@ -12,6 +14,15 @@ interface IOffchainAnalyticsPositions {
12
14
  /** Backend-only protocol analytics, grouped by subject. */
13
15
  interface IOffchainAnalytics {
14
16
  readonly positions: IOffchainAnalyticsPositions;
17
+ /**
18
+ * Charts of the protocol as a whole: one series per metric named, onto the
19
+ * one grid that lets them be compared at an index.
20
+ *
21
+ * The series sums the chains the read covers, which are the client's own
22
+ * narrowed by `filter` — so a client built for one chain charts that chain,
23
+ * not the protocol.
24
+ **/
25
+ getCharts<const Metrics extends readonly ProtocolChartMetric[]>(metrics: Metrics, range: ChartRange, filter?: ChainScopedFilter): Promise<DataResponse<ChartBundle<Metrics>>>;
15
26
  }
16
27
  //#endregion
17
28
  export { IOffchainAnalytics, IOffchainAnalyticsPositions };
@@ -1,5 +1,5 @@
1
- import { Opportunity, OpportunityFilter, OpportunityKey, OpportunityTotals, PoolOpportunityDetail, PoolOpportunityKey, StrategyOpportunityDetail, StrategyOpportunityKey } from "../../model/opportunities.js";
2
1
  import { ChartBundle, ChartRange } from "../../model/charts.js";
2
+ import { Opportunity, OpportunityFilter, OpportunityKey, OpportunityTotals, PoolOpportunityDetail, PoolOpportunityKey, StrategyOpportunityDetail, StrategyOpportunityKey } from "../../model/opportunities.js";
3
3
  import { DataResponse } from "../../model/response.js";
4
4
  import { GearboxAPIOptions } from "../types.js";
5
5
  import { AbstractOffchainNamespace } from "../AbstractOffchainNamespace.js";
@@ -1,5 +1,5 @@
1
- import { Opportunity, OpportunityFilter, OpportunityKey, OpportunityTotals, PoolOpportunityDetail, PoolOpportunityKey, StrategyOpportunityDetail, StrategyOpportunityKey } from "../../model/opportunities.js";
2
1
  import { ChartBundle, ChartRange, PoolOpportunityChartMetric, StrategyOpportunityChartMetric } from "../../model/charts.js";
2
+ import { Opportunity, OpportunityFilter, OpportunityKey, OpportunityTotals, PoolOpportunityDetail, PoolOpportunityKey, StrategyOpportunityDetail, StrategyOpportunityKey } from "../../model/opportunities.js";
3
3
  import { DataResponse } from "../../model/response.js";
4
4
  //#region src/offchain/opportunities/types.d.ts
5
5
  type OpportunityChartMetricFor<K extends OpportunityKey> = {
@@ -1,5 +1,5 @@
1
- import { Position, PositionKey, PositionTransaction, PositionsTotals, StrategyPositionKey } from "../../model/positions.js";
2
1
  import { ChartBundle, ChartRange } from "../../model/charts.js";
2
+ import { Position, PositionKey, PositionTransaction, PositionsTotals, StrategyPositionKey } from "../../model/positions.js";
3
3
  import { DataResponse } from "../../model/response.js";
4
4
  import { ListPositionsPropsBase } from "../../onchain/positions/types.js";
5
5
  import { GearboxAPIOptions } from "../types.js";
@@ -1,5 +1,5 @@
1
- import { Position, PositionKey, PositionTransaction, PositionsTotals, StrategyPositionKey } from "../../model/positions.js";
2
1
  import { ChartBundle, ChartRange, PoolPositionChartMetric, StrategyPositionChartMetric } from "../../model/charts.js";
2
+ import { Position, PositionKey, PositionTransaction, PositionsTotals, StrategyPositionKey } from "../../model/positions.js";
3
3
  import { DataResponse } from "../../model/response.js";
4
4
  import { ListPositionsPropsBase } from "../../onchain/positions/types.js";
5
5
  import { Address } from "viem";
@@ -1,11 +1,17 @@
1
+ import { ChartBundle, ChartRange, ProtocolChartMetric } from "../../model/charts.js";
2
+ import { ChainScopedFilter } from "../../model/filters.js";
3
+ import { DataResponse } from "../../model/response.js";
1
4
  import { GearboxAPI } from "../../offchain/GearboxAPI.js";
2
5
  import "../../offchain/index.js";
3
6
  import { IAnalytics } from "./types.js";
4
7
  //#region src/sdk/analytics/AnalyticsNamespace.d.ts
5
8
  /** Backend-only protocol analytics exposed by {@link GearboxSDK}. */
6
9
  declare class AnalyticsNamespace implements IAnalytics {
10
+ #private;
7
11
  readonly positions: GearboxAPI["analytics"]["positions"];
8
12
  constructor(backend: GearboxAPI);
13
+ /** {@inheritDoc IAnalytics.charts} */
14
+ charts<const Metrics extends readonly ProtocolChartMetric[]>(metrics: Metrics, range: ChartRange, filter?: ChainScopedFilter): Promise<DataResponse<ChartBundle<Metrics>>>;
9
15
  }
10
16
  //#endregion
11
17
  export { AnalyticsNamespace };
@@ -1,9 +1,25 @@
1
+ import { ChartBundle, ChartRange, ProtocolChartMetric } from "../../model/charts.js";
2
+ import { ChainScopedFilter } from "../../model/filters.js";
3
+ import { DataResponse } from "../../model/response.js";
1
4
  import { IOffchainAnalyticsPositions } from "../../offchain/analytics/types.js";
2
5
  import "../../offchain/index.js";
3
6
  //#region src/sdk/analytics/types.d.ts
4
7
  /** Backend-only protocol analytics, grouped by subject. */
5
8
  interface IAnalytics {
6
9
  readonly positions: IOffchainAnalyticsPositions;
10
+ /**
11
+ * Charts of the protocol as a whole: one series per metric named, onto the
12
+ * one grid that lets them be compared at an index.
13
+ *
14
+ * ```ts
15
+ * const { data } = await sdk.analytics.charts(["tvlUsd"], "1m");
16
+ * ```
17
+ *
18
+ * The series sums the chains the read covers, which are this instance's own
19
+ * narrowed by `filter` — so an SDK built for one chain charts that chain,
20
+ * not the protocol.
21
+ **/
22
+ charts<const Metrics extends readonly ProtocolChartMetric[]>(metrics: Metrics, range: ChartRange, filter?: ChainScopedFilter): Promise<DataResponse<ChartBundle<Metrics>>>;
7
23
  }
8
24
  /** `sdk.analytics` per mode: absent when the SDK has no backend source. */
9
25
  interface IAnalyticsByMode {
@@ -1,5 +1,5 @@
1
- import { Opportunity, OpportunityFilter, OpportunityTotals, PoolOpportunityDetail, PoolOpportunityKey, PoolOpportunityRef, StrategyOpportunityDetail, StrategyOpportunityKey, StrategyOpportunityRef } from "../../model/opportunities.js";
2
1
  import { ChartBundle, ChartRange, PoolOpportunityChartMetric, StrategyOpportunityChartMetric } from "../../model/charts.js";
2
+ import { Opportunity, OpportunityFilter, OpportunityTotals, PoolOpportunityDetail, PoolOpportunityKey, PoolOpportunityRef, StrategyOpportunityDetail, StrategyOpportunityKey, StrategyOpportunityRef } from "../../model/opportunities.js";
3
3
  import { DataResponse } from "../../model/response.js";
4
4
  import "../../model/index.js";
5
5
  import { MultichainSDK } from "../../onchain/MultichainSDK.js";
@@ -1,5 +1,5 @@
1
- import { Opportunity, OpportunityFilter, OpportunityTotals, PoolOpportunityDetail, PoolOpportunityKey, PoolOpportunityRef, StrategyOpportunityDetail, StrategyOpportunityKey, StrategyOpportunityRef } from "../../model/opportunities.js";
2
1
  import { ChartBundle, ChartRange, PoolOpportunityChartMetric, StrategyOpportunityChartMetric } from "../../model/charts.js";
2
+ import { Opportunity, OpportunityFilter, OpportunityTotals, PoolOpportunityDetail, PoolOpportunityKey, PoolOpportunityRef, StrategyOpportunityDetail, StrategyOpportunityKey, StrategyOpportunityRef } from "../../model/opportunities.js";
3
3
  import { DataResponse } from "../../model/response.js";
4
4
  import "../../model/index.js";
5
5
  import { IMultichainOpportunitiesService } from "../../onchain/opportunities/types.js";
@@ -1,5 +1,5 @@
1
- import { PoolPositionRef, Position, PositionFilter, PositionTransaction, PositionsTotals, StrategyPositionRef } from "../../model/positions.js";
2
1
  import { ChartBundle, ChartRange, PoolPositionChartMetric, StrategyPositionChartMetric } from "../../model/charts.js";
2
+ import { PoolPositionRef, Position, PositionFilter, PositionTransaction, PositionsTotals, StrategyPositionRef } from "../../model/positions.js";
3
3
  import { DataResponse } from "../../model/response.js";
4
4
  import { PositionWithdrawals } from "../../model/withdrawals.js";
5
5
  import "../../model/index.js";
@@ -1,5 +1,5 @@
1
- import { PoolPositionRef, Position, PositionFilter, PositionTransaction, PositionsTotals, StrategyPositionRef } from "../../model/positions.js";
2
1
  import { ChartBundle, ChartRange, PoolPositionChartMetric, StrategyPositionChartMetric } from "../../model/charts.js";
2
+ import { PoolPositionRef, Position, PositionFilter, PositionTransaction, PositionsTotals, StrategyPositionRef } from "../../model/positions.js";
3
3
  import { DataResponse } from "../../model/response.js";
4
4
  import { PositionWithdrawals } from "../../model/withdrawals.js";
5
5
  import "../../model/index.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "16.0.0",
3
+ "version": "16.1.0",
4
4
  "description": "Gearbox SDK",
5
5
  "license": "MIT",
6
6
  "repository": {