@tradejs/infra 1.0.9 → 1.0.11

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.
package/dist/redis.mjs CHANGED
@@ -1,29 +1,35 @@
1
1
  import {
2
2
  RedisWriteBlockedError,
3
+ closeRedisConnection,
3
4
  consumeScreenshotSessionToken,
4
5
  createScreenshotSessionToken,
5
6
  delKey,
6
7
  delKeyWithOptions,
7
8
  getData,
8
9
  getHashData,
10
+ getHashJsonField,
9
11
  getHashJsonValues,
10
12
  getKeys,
11
13
  incrHashFields,
14
+ publishData,
12
15
  redisKeys,
13
16
  setData,
14
17
  setHashJsonField
15
- } from "./chunk-MLVWC2I2.mjs";
18
+ } from "./chunk-XZQ6COOV.mjs";
16
19
  export {
17
20
  RedisWriteBlockedError,
21
+ closeRedisConnection,
18
22
  consumeScreenshotSessionToken,
19
23
  createScreenshotSessionToken,
20
24
  delKey,
21
25
  delKeyWithOptions,
22
26
  getData,
23
27
  getHashData,
28
+ getHashJsonField,
24
29
  getHashJsonValues,
25
30
  getKeys,
26
31
  incrHashFields,
32
+ publishData,
27
33
  redisKeys,
28
34
  setData,
29
35
  setHashJsonField
@@ -1,5 +1,5 @@
1
1
  import { Pool } from 'pg';
2
- import { DerivativesInterval, DerivativesRow, KlineChartData, SpreadRow } from '@tradejs/types';
2
+ import { DerivativesInterval, DerivativesRow, MarketFeatureInterval, MarketBreadthRow, MarketCmcExchangeLiquidityContextRow, MarketCmcFearGreedContextRow, MarketCmcIndexContextRow, MarketGlobalContextRow, MarketReferenceAssetContextRow, MarketTradeFlowRow, KlineChartData, SpreadRow } from '@tradejs/types';
3
3
 
4
4
  declare global {
5
5
  var __pgPool__: Pool | undefined;
@@ -15,7 +15,12 @@ type CandleRow = {
15
15
  close: number;
16
16
  volume?: number | null;
17
17
  turnover?: number | null;
18
+ takerBuyBaseVolume?: number | null;
19
+ takerBuyQuoteVolume?: number | null;
20
+ takerSellBaseVolume?: number | null;
21
+ takerSellQuoteVolume?: number | null;
18
22
  };
23
+ declare const closeTimescalePool: () => Promise<void>;
19
24
  declare const toRows: (provider: string, symbol: string, interval: number, data: KlineChartData) => CandleRow[];
20
25
  declare function upsertCandles(rows: CandleRow[]): Promise<void>;
21
26
  declare function upsertDerivatives(rows: DerivativesRow[]): Promise<void>;
@@ -24,18 +29,225 @@ declare function getDerivativesDataEdgesForSymbols(symbols: string[], interval:
24
29
  min?: number;
25
30
  max?: number;
26
31
  }>>;
32
+ declare function getDerivativesBackfillCoverage(params: {
33
+ source: string;
34
+ symbols: string[];
35
+ interval: DerivativesInterval;
36
+ fromMs: number;
37
+ toMs: number;
38
+ }): Promise<{
39
+ symbol: string;
40
+ interval: DerivativesInterval;
41
+ fromMs: number;
42
+ toMs: number;
43
+ rowsCount: number;
44
+ }[]>;
45
+ declare function upsertDerivativesBackfillCoverage(rows: Array<{
46
+ source: string;
47
+ symbol: string;
48
+ interval: DerivativesInterval;
49
+ fromMs: number;
50
+ toMs: number;
51
+ rowsCount: number;
52
+ }>): Promise<void>;
27
53
  declare function getDerivativesWindow(params: {
28
54
  symbol: string;
29
55
  intervals: DerivativesInterval[];
30
56
  endMs: number;
31
57
  lookbackMs: number;
32
58
  }): Promise<Partial<Record<DerivativesInterval, DerivativesRow[]>>>;
33
- declare function getDerivativesSummary(hours?: number, limit?: number): Promise<{
34
- rows: any[];
35
- aggregates: any[];
59
+ declare function getDerivativesSummary(hours?: number, limit?: number, symbols?: string[]): Promise<{
36
60
  hours: number;
61
+ items: {
62
+ symbol: string;
63
+ interval: string;
64
+ points: number;
65
+ last_ts: string | Date;
66
+ first_ts: string | Date;
67
+ latest_open_interest: number | null;
68
+ first_open_interest: number | null;
69
+ oi_change: number | null;
70
+ oi_change_pct: number | null;
71
+ latest_funding_rate: number | null;
72
+ first_funding_rate: number | null;
73
+ funding_change: number | null;
74
+ sum_liq_long: number | null;
75
+ sum_liq_short: number | null;
76
+ sum_liq_total: number | null;
77
+ }[];
37
78
  }>;
38
79
  declare function upsertSpreadRows(rows: SpreadRow[]): Promise<void>;
80
+ declare function upsertMarketTradeFlowRows(rows: MarketTradeFlowRow[]): Promise<void>;
81
+ declare function upsertMarketBreadthRows(rows: MarketBreadthRow[]): Promise<void>;
82
+ declare function upsertMarketGlobalContextRows(rows: MarketGlobalContextRow[]): Promise<void>;
83
+ declare function upsertMarketReferenceAssetContextRows(rows: MarketReferenceAssetContextRow[]): Promise<void>;
84
+ declare function upsertMarketCmcExchangeLiquidityContextRows(rows: MarketCmcExchangeLiquidityContextRow[]): Promise<void>;
85
+ declare function upsertMarketCmcFearGreedContextRows(rows: MarketCmcFearGreedContextRow[]): Promise<void>;
86
+ declare function upsertMarketCmcIndexContextRows(rows: MarketCmcIndexContextRow[]): Promise<void>;
87
+ declare function getMarketContextBackfillCoverage(params: {
88
+ source: string;
89
+ scopes: string[];
90
+ interval: string;
91
+ fromMs: number;
92
+ toMs: number;
93
+ }): Promise<Array<{
94
+ source: string;
95
+ scope: string;
96
+ interval: string;
97
+ fromMs: number;
98
+ toMs: number;
99
+ rowsCount: number;
100
+ checkedAtMs?: number;
101
+ }>>;
102
+ declare function upsertMarketContextBackfillCoverage(rows: Array<{
103
+ source: string;
104
+ scope: string;
105
+ interval: string;
106
+ fromMs: number;
107
+ toMs: number;
108
+ rowsCount: number;
109
+ }>): Promise<void>;
110
+ type MarketFeatureAsOf<T> = T & {
111
+ ageMs: number | null;
112
+ stale: boolean;
113
+ };
114
+ declare function getLatestMarketTradeFlow(params: {
115
+ symbol: string;
116
+ interval: MarketFeatureInterval;
117
+ atMs: number;
118
+ maxAgeMs?: number;
119
+ }): Promise<MarketFeatureAsOf<MarketTradeFlowRow> | null>;
120
+ declare function getLatestMarketBreadth(params: {
121
+ universe: string;
122
+ interval: MarketFeatureInterval;
123
+ atMs: number;
124
+ maxAgeMs?: number;
125
+ }): Promise<MarketFeatureAsOf<MarketBreadthRow> | null>;
126
+ declare function getLatestMarketGlobalContext(params: {
127
+ source?: MarketGlobalContextRow['source'];
128
+ atMs: number;
129
+ maxAgeMs?: number;
130
+ }): Promise<(MarketFeatureAsOf<MarketGlobalContextRow> & {
131
+ btcDominanceChange24hPct: number | null;
132
+ ethDominanceChange24hPct: number | null;
133
+ altMarketCapChange24hPct: number | null;
134
+ altVolumeChange24hPct: number | null;
135
+ }) | null>;
136
+ declare function getMarketGlobalContextCoverage(params: {
137
+ source: MarketGlobalContextRow['source'];
138
+ startMs: number;
139
+ endMs: number;
140
+ }): Promise<{
141
+ firstMs: number;
142
+ lastMs: number;
143
+ rows: number;
144
+ } | null>;
145
+ declare function getMarketReferenceAssetContextCoverage(params: {
146
+ source: MarketReferenceAssetContextRow['source'];
147
+ symbols: string[];
148
+ interval: MarketReferenceAssetContextRow['interval'];
149
+ startMs: number;
150
+ endMs: number;
151
+ }): Promise<Map<string, {
152
+ firstMs: number;
153
+ lastMs: number;
154
+ rows: number;
155
+ }>>;
156
+ declare function getLatestMarketReferenceAssetContexts(params: {
157
+ source?: MarketReferenceAssetContextRow['source'];
158
+ symbols: string[];
159
+ interval?: MarketReferenceAssetContextRow['interval'];
160
+ atMs: number;
161
+ maxAgeMs?: number;
162
+ }): Promise<Map<string, MarketFeatureAsOf<MarketReferenceAssetContextRow>>>;
163
+ declare function getLatestMarketCmcExchangeLiquidityContext(params: {
164
+ source?: MarketCmcExchangeLiquidityContextRow['source'];
165
+ interval?: MarketCmcExchangeLiquidityContextRow['interval'];
166
+ atMs: number;
167
+ maxAgeMs?: number;
168
+ }): Promise<(MarketFeatureAsOf<MarketCmcExchangeLiquidityContextRow> & {
169
+ totalVolumeChange24hPct: number | null;
170
+ }) | null>;
171
+ declare function getLatestMarketCmcIndexContexts(params: {
172
+ source?: MarketCmcIndexContextRow['source'];
173
+ indexSlugs: MarketCmcIndexContextRow['indexSlug'][];
174
+ interval?: MarketCmcIndexContextRow['interval'];
175
+ atMs: number;
176
+ maxAgeMs?: number;
177
+ }): Promise<Map<MarketCmcIndexContextRow['indexSlug'], MarketFeatureAsOf<MarketCmcIndexContextRow> & {
178
+ valueChange24hPct: number | null;
179
+ }>>;
180
+ declare function getLatestMarketCmcFearGreedContext(params: {
181
+ source?: MarketCmcFearGreedContextRow['source'];
182
+ interval?: MarketCmcFearGreedContextRow['interval'];
183
+ atMs: number;
184
+ maxAgeMs?: number;
185
+ }): Promise<(MarketFeatureAsOf<MarketCmcFearGreedContextRow> & {
186
+ valueChange24h: number | null;
187
+ valueChange7d: number | null;
188
+ }) | null>;
189
+ declare function getMarketCmcFearGreedContextCoverage(params: {
190
+ source: MarketCmcFearGreedContextRow['source'];
191
+ interval: MarketCmcFearGreedContextRow['interval'];
192
+ startMs: number;
193
+ endMs: number;
194
+ }): Promise<{
195
+ firstMs: number;
196
+ lastMs: number;
197
+ rows: number;
198
+ } | null>;
199
+ declare function getMarketCmcExchangeLiquidityContextCoverage(params: {
200
+ source: MarketCmcExchangeLiquidityContextRow['source'];
201
+ interval: MarketCmcExchangeLiquidityContextRow['interval'];
202
+ startMs: number;
203
+ endMs: number;
204
+ }): Promise<{
205
+ firstMs: number;
206
+ lastMs: number;
207
+ rows: number;
208
+ } | null>;
209
+ declare function getMarketCmcIndexContextCoverage(params: {
210
+ source: MarketCmcIndexContextRow['source'];
211
+ indexSlugs: MarketCmcIndexContextRow['indexSlug'][];
212
+ interval: MarketCmcIndexContextRow['interval'];
213
+ startMs: number;
214
+ endMs: number;
215
+ }): Promise<Map<MarketCmcIndexContextRow['indexSlug'], {
216
+ firstMs: number;
217
+ lastMs: number;
218
+ rows: number;
219
+ }>>;
220
+ declare function getMarketTradeFlowCoverage(params: {
221
+ symbols: string[];
222
+ interval: MarketFeatureInterval;
223
+ startMs: number;
224
+ endMs: number;
225
+ }): Promise<Map<string, {
226
+ firstMs: number;
227
+ lastMs: number;
228
+ rows: number;
229
+ }>>;
230
+ type DeprecatedMarketContextCleanupItem = {
231
+ kind: 'table' | 'rows';
232
+ name: string;
233
+ rows: number;
234
+ action: 'drop_table' | 'delete_rows';
235
+ applied: boolean;
236
+ };
237
+ declare function cleanupDeprecatedMarketContext(params?: {
238
+ apply?: boolean;
239
+ }): Promise<DeprecatedMarketContextCleanupItem[]>;
240
+ declare function getMarketBreadthCoverage(params: {
241
+ universe: string;
242
+ interval: MarketFeatureInterval;
243
+ startMs: number;
244
+ endMs: number;
245
+ }): Promise<{
246
+ firstMs: number;
247
+ lastMs: number;
248
+ rows: number;
249
+ btcAltMetricsRows: number;
250
+ } | null>;
39
251
  declare function getSpreadRangeForSymbols(symbols: string[], interval: DerivativesInterval, startMs: number, endMs: number): Promise<any[]>;
40
252
  declare function getSpreadSummary(hours?: number, limit?: number): Promise<{
41
253
  rows: any[];
@@ -47,6 +259,10 @@ declare function getDataEdges(provider: string, symbol: string, interval: number
47
259
  min: number | undefined;
48
260
  max: number | undefined;
49
261
  }>;
262
+ declare function getDataEdgesForSymbols(provider: string, symbols: string[], interval: number): Promise<Map<string, {
263
+ min?: number;
264
+ max?: number;
265
+ }>>;
50
266
  declare function waitForDbReady(attempts?: number, delayMs?: number): Promise<void>;
51
267
  declare function deleteCandles(provider: string, symbol: string, interval: number): Promise<void>;
52
268
  declare function findContinuityGap(provider: string, symbol: string, interval: number): Promise<{
@@ -55,4 +271,4 @@ declare function findContinuityGap(provider: string, symbol: string, interval: n
55
271
  diffSeconds: number;
56
272
  } | null>;
57
273
 
58
- export { type CandleRow, deleteCandles, findContinuityGap, getCandlesRange, getDataEdges, getDerivativesDataEdgesForSymbols, getDerivativesRangeForSymbols, getDerivativesSummary, getDerivativesWindow, getSpreadRangeForSymbols, getSpreadSummary, toRows, upsertCandles, upsertDerivatives, upsertSpreadRows, waitForDbReady };
274
+ export { type CandleRow, type DeprecatedMarketContextCleanupItem, type MarketFeatureAsOf, cleanupDeprecatedMarketContext, closeTimescalePool, deleteCandles, findContinuityGap, getCandlesRange, getDataEdges, getDataEdgesForSymbols, getDerivativesBackfillCoverage, getDerivativesDataEdgesForSymbols, getDerivativesRangeForSymbols, getDerivativesSummary, getDerivativesWindow, getLatestMarketBreadth, getLatestMarketCmcExchangeLiquidityContext, getLatestMarketCmcFearGreedContext, getLatestMarketCmcIndexContexts, getLatestMarketGlobalContext, getLatestMarketReferenceAssetContexts, getLatestMarketTradeFlow, getMarketBreadthCoverage, getMarketCmcExchangeLiquidityContextCoverage, getMarketCmcFearGreedContextCoverage, getMarketCmcIndexContextCoverage, getMarketContextBackfillCoverage, getMarketGlobalContextCoverage, getMarketReferenceAssetContextCoverage, getMarketTradeFlowCoverage, getSpreadRangeForSymbols, getSpreadSummary, toRows, upsertCandles, upsertDerivatives, upsertDerivativesBackfillCoverage, upsertMarketBreadthRows, upsertMarketCmcExchangeLiquidityContextRows, upsertMarketCmcFearGreedContextRows, upsertMarketCmcIndexContextRows, upsertMarketContextBackfillCoverage, upsertMarketGlobalContextRows, upsertMarketReferenceAssetContextRows, upsertMarketTradeFlowRows, upsertSpreadRows, waitForDbReady };
@@ -1,5 +1,5 @@
1
1
  import { Pool } from 'pg';
2
- import { DerivativesInterval, DerivativesRow, KlineChartData, SpreadRow } from '@tradejs/types';
2
+ import { DerivativesInterval, DerivativesRow, MarketFeatureInterval, MarketBreadthRow, MarketCmcExchangeLiquidityContextRow, MarketCmcFearGreedContextRow, MarketCmcIndexContextRow, MarketGlobalContextRow, MarketReferenceAssetContextRow, MarketTradeFlowRow, KlineChartData, SpreadRow } from '@tradejs/types';
3
3
 
4
4
  declare global {
5
5
  var __pgPool__: Pool | undefined;
@@ -15,7 +15,12 @@ type CandleRow = {
15
15
  close: number;
16
16
  volume?: number | null;
17
17
  turnover?: number | null;
18
+ takerBuyBaseVolume?: number | null;
19
+ takerBuyQuoteVolume?: number | null;
20
+ takerSellBaseVolume?: number | null;
21
+ takerSellQuoteVolume?: number | null;
18
22
  };
23
+ declare const closeTimescalePool: () => Promise<void>;
19
24
  declare const toRows: (provider: string, symbol: string, interval: number, data: KlineChartData) => CandleRow[];
20
25
  declare function upsertCandles(rows: CandleRow[]): Promise<void>;
21
26
  declare function upsertDerivatives(rows: DerivativesRow[]): Promise<void>;
@@ -24,18 +29,225 @@ declare function getDerivativesDataEdgesForSymbols(symbols: string[], interval:
24
29
  min?: number;
25
30
  max?: number;
26
31
  }>>;
32
+ declare function getDerivativesBackfillCoverage(params: {
33
+ source: string;
34
+ symbols: string[];
35
+ interval: DerivativesInterval;
36
+ fromMs: number;
37
+ toMs: number;
38
+ }): Promise<{
39
+ symbol: string;
40
+ interval: DerivativesInterval;
41
+ fromMs: number;
42
+ toMs: number;
43
+ rowsCount: number;
44
+ }[]>;
45
+ declare function upsertDerivativesBackfillCoverage(rows: Array<{
46
+ source: string;
47
+ symbol: string;
48
+ interval: DerivativesInterval;
49
+ fromMs: number;
50
+ toMs: number;
51
+ rowsCount: number;
52
+ }>): Promise<void>;
27
53
  declare function getDerivativesWindow(params: {
28
54
  symbol: string;
29
55
  intervals: DerivativesInterval[];
30
56
  endMs: number;
31
57
  lookbackMs: number;
32
58
  }): Promise<Partial<Record<DerivativesInterval, DerivativesRow[]>>>;
33
- declare function getDerivativesSummary(hours?: number, limit?: number): Promise<{
34
- rows: any[];
35
- aggregates: any[];
59
+ declare function getDerivativesSummary(hours?: number, limit?: number, symbols?: string[]): Promise<{
36
60
  hours: number;
61
+ items: {
62
+ symbol: string;
63
+ interval: string;
64
+ points: number;
65
+ last_ts: string | Date;
66
+ first_ts: string | Date;
67
+ latest_open_interest: number | null;
68
+ first_open_interest: number | null;
69
+ oi_change: number | null;
70
+ oi_change_pct: number | null;
71
+ latest_funding_rate: number | null;
72
+ first_funding_rate: number | null;
73
+ funding_change: number | null;
74
+ sum_liq_long: number | null;
75
+ sum_liq_short: number | null;
76
+ sum_liq_total: number | null;
77
+ }[];
37
78
  }>;
38
79
  declare function upsertSpreadRows(rows: SpreadRow[]): Promise<void>;
80
+ declare function upsertMarketTradeFlowRows(rows: MarketTradeFlowRow[]): Promise<void>;
81
+ declare function upsertMarketBreadthRows(rows: MarketBreadthRow[]): Promise<void>;
82
+ declare function upsertMarketGlobalContextRows(rows: MarketGlobalContextRow[]): Promise<void>;
83
+ declare function upsertMarketReferenceAssetContextRows(rows: MarketReferenceAssetContextRow[]): Promise<void>;
84
+ declare function upsertMarketCmcExchangeLiquidityContextRows(rows: MarketCmcExchangeLiquidityContextRow[]): Promise<void>;
85
+ declare function upsertMarketCmcFearGreedContextRows(rows: MarketCmcFearGreedContextRow[]): Promise<void>;
86
+ declare function upsertMarketCmcIndexContextRows(rows: MarketCmcIndexContextRow[]): Promise<void>;
87
+ declare function getMarketContextBackfillCoverage(params: {
88
+ source: string;
89
+ scopes: string[];
90
+ interval: string;
91
+ fromMs: number;
92
+ toMs: number;
93
+ }): Promise<Array<{
94
+ source: string;
95
+ scope: string;
96
+ interval: string;
97
+ fromMs: number;
98
+ toMs: number;
99
+ rowsCount: number;
100
+ checkedAtMs?: number;
101
+ }>>;
102
+ declare function upsertMarketContextBackfillCoverage(rows: Array<{
103
+ source: string;
104
+ scope: string;
105
+ interval: string;
106
+ fromMs: number;
107
+ toMs: number;
108
+ rowsCount: number;
109
+ }>): Promise<void>;
110
+ type MarketFeatureAsOf<T> = T & {
111
+ ageMs: number | null;
112
+ stale: boolean;
113
+ };
114
+ declare function getLatestMarketTradeFlow(params: {
115
+ symbol: string;
116
+ interval: MarketFeatureInterval;
117
+ atMs: number;
118
+ maxAgeMs?: number;
119
+ }): Promise<MarketFeatureAsOf<MarketTradeFlowRow> | null>;
120
+ declare function getLatestMarketBreadth(params: {
121
+ universe: string;
122
+ interval: MarketFeatureInterval;
123
+ atMs: number;
124
+ maxAgeMs?: number;
125
+ }): Promise<MarketFeatureAsOf<MarketBreadthRow> | null>;
126
+ declare function getLatestMarketGlobalContext(params: {
127
+ source?: MarketGlobalContextRow['source'];
128
+ atMs: number;
129
+ maxAgeMs?: number;
130
+ }): Promise<(MarketFeatureAsOf<MarketGlobalContextRow> & {
131
+ btcDominanceChange24hPct: number | null;
132
+ ethDominanceChange24hPct: number | null;
133
+ altMarketCapChange24hPct: number | null;
134
+ altVolumeChange24hPct: number | null;
135
+ }) | null>;
136
+ declare function getMarketGlobalContextCoverage(params: {
137
+ source: MarketGlobalContextRow['source'];
138
+ startMs: number;
139
+ endMs: number;
140
+ }): Promise<{
141
+ firstMs: number;
142
+ lastMs: number;
143
+ rows: number;
144
+ } | null>;
145
+ declare function getMarketReferenceAssetContextCoverage(params: {
146
+ source: MarketReferenceAssetContextRow['source'];
147
+ symbols: string[];
148
+ interval: MarketReferenceAssetContextRow['interval'];
149
+ startMs: number;
150
+ endMs: number;
151
+ }): Promise<Map<string, {
152
+ firstMs: number;
153
+ lastMs: number;
154
+ rows: number;
155
+ }>>;
156
+ declare function getLatestMarketReferenceAssetContexts(params: {
157
+ source?: MarketReferenceAssetContextRow['source'];
158
+ symbols: string[];
159
+ interval?: MarketReferenceAssetContextRow['interval'];
160
+ atMs: number;
161
+ maxAgeMs?: number;
162
+ }): Promise<Map<string, MarketFeatureAsOf<MarketReferenceAssetContextRow>>>;
163
+ declare function getLatestMarketCmcExchangeLiquidityContext(params: {
164
+ source?: MarketCmcExchangeLiquidityContextRow['source'];
165
+ interval?: MarketCmcExchangeLiquidityContextRow['interval'];
166
+ atMs: number;
167
+ maxAgeMs?: number;
168
+ }): Promise<(MarketFeatureAsOf<MarketCmcExchangeLiquidityContextRow> & {
169
+ totalVolumeChange24hPct: number | null;
170
+ }) | null>;
171
+ declare function getLatestMarketCmcIndexContexts(params: {
172
+ source?: MarketCmcIndexContextRow['source'];
173
+ indexSlugs: MarketCmcIndexContextRow['indexSlug'][];
174
+ interval?: MarketCmcIndexContextRow['interval'];
175
+ atMs: number;
176
+ maxAgeMs?: number;
177
+ }): Promise<Map<MarketCmcIndexContextRow['indexSlug'], MarketFeatureAsOf<MarketCmcIndexContextRow> & {
178
+ valueChange24hPct: number | null;
179
+ }>>;
180
+ declare function getLatestMarketCmcFearGreedContext(params: {
181
+ source?: MarketCmcFearGreedContextRow['source'];
182
+ interval?: MarketCmcFearGreedContextRow['interval'];
183
+ atMs: number;
184
+ maxAgeMs?: number;
185
+ }): Promise<(MarketFeatureAsOf<MarketCmcFearGreedContextRow> & {
186
+ valueChange24h: number | null;
187
+ valueChange7d: number | null;
188
+ }) | null>;
189
+ declare function getMarketCmcFearGreedContextCoverage(params: {
190
+ source: MarketCmcFearGreedContextRow['source'];
191
+ interval: MarketCmcFearGreedContextRow['interval'];
192
+ startMs: number;
193
+ endMs: number;
194
+ }): Promise<{
195
+ firstMs: number;
196
+ lastMs: number;
197
+ rows: number;
198
+ } | null>;
199
+ declare function getMarketCmcExchangeLiquidityContextCoverage(params: {
200
+ source: MarketCmcExchangeLiquidityContextRow['source'];
201
+ interval: MarketCmcExchangeLiquidityContextRow['interval'];
202
+ startMs: number;
203
+ endMs: number;
204
+ }): Promise<{
205
+ firstMs: number;
206
+ lastMs: number;
207
+ rows: number;
208
+ } | null>;
209
+ declare function getMarketCmcIndexContextCoverage(params: {
210
+ source: MarketCmcIndexContextRow['source'];
211
+ indexSlugs: MarketCmcIndexContextRow['indexSlug'][];
212
+ interval: MarketCmcIndexContextRow['interval'];
213
+ startMs: number;
214
+ endMs: number;
215
+ }): Promise<Map<MarketCmcIndexContextRow['indexSlug'], {
216
+ firstMs: number;
217
+ lastMs: number;
218
+ rows: number;
219
+ }>>;
220
+ declare function getMarketTradeFlowCoverage(params: {
221
+ symbols: string[];
222
+ interval: MarketFeatureInterval;
223
+ startMs: number;
224
+ endMs: number;
225
+ }): Promise<Map<string, {
226
+ firstMs: number;
227
+ lastMs: number;
228
+ rows: number;
229
+ }>>;
230
+ type DeprecatedMarketContextCleanupItem = {
231
+ kind: 'table' | 'rows';
232
+ name: string;
233
+ rows: number;
234
+ action: 'drop_table' | 'delete_rows';
235
+ applied: boolean;
236
+ };
237
+ declare function cleanupDeprecatedMarketContext(params?: {
238
+ apply?: boolean;
239
+ }): Promise<DeprecatedMarketContextCleanupItem[]>;
240
+ declare function getMarketBreadthCoverage(params: {
241
+ universe: string;
242
+ interval: MarketFeatureInterval;
243
+ startMs: number;
244
+ endMs: number;
245
+ }): Promise<{
246
+ firstMs: number;
247
+ lastMs: number;
248
+ rows: number;
249
+ btcAltMetricsRows: number;
250
+ } | null>;
39
251
  declare function getSpreadRangeForSymbols(symbols: string[], interval: DerivativesInterval, startMs: number, endMs: number): Promise<any[]>;
40
252
  declare function getSpreadSummary(hours?: number, limit?: number): Promise<{
41
253
  rows: any[];
@@ -47,6 +259,10 @@ declare function getDataEdges(provider: string, symbol: string, interval: number
47
259
  min: number | undefined;
48
260
  max: number | undefined;
49
261
  }>;
262
+ declare function getDataEdgesForSymbols(provider: string, symbols: string[], interval: number): Promise<Map<string, {
263
+ min?: number;
264
+ max?: number;
265
+ }>>;
50
266
  declare function waitForDbReady(attempts?: number, delayMs?: number): Promise<void>;
51
267
  declare function deleteCandles(provider: string, symbol: string, interval: number): Promise<void>;
52
268
  declare function findContinuityGap(provider: string, symbol: string, interval: number): Promise<{
@@ -55,4 +271,4 @@ declare function findContinuityGap(provider: string, symbol: string, interval: n
55
271
  diffSeconds: number;
56
272
  } | null>;
57
273
 
58
- export { type CandleRow, deleteCandles, findContinuityGap, getCandlesRange, getDataEdges, getDerivativesDataEdgesForSymbols, getDerivativesRangeForSymbols, getDerivativesSummary, getDerivativesWindow, getSpreadRangeForSymbols, getSpreadSummary, toRows, upsertCandles, upsertDerivatives, upsertSpreadRows, waitForDbReady };
274
+ export { type CandleRow, type DeprecatedMarketContextCleanupItem, type MarketFeatureAsOf, cleanupDeprecatedMarketContext, closeTimescalePool, deleteCandles, findContinuityGap, getCandlesRange, getDataEdges, getDataEdgesForSymbols, getDerivativesBackfillCoverage, getDerivativesDataEdgesForSymbols, getDerivativesRangeForSymbols, getDerivativesSummary, getDerivativesWindow, getLatestMarketBreadth, getLatestMarketCmcExchangeLiquidityContext, getLatestMarketCmcFearGreedContext, getLatestMarketCmcIndexContexts, getLatestMarketGlobalContext, getLatestMarketReferenceAssetContexts, getLatestMarketTradeFlow, getMarketBreadthCoverage, getMarketCmcExchangeLiquidityContextCoverage, getMarketCmcFearGreedContextCoverage, getMarketCmcIndexContextCoverage, getMarketContextBackfillCoverage, getMarketGlobalContextCoverage, getMarketReferenceAssetContextCoverage, getMarketTradeFlowCoverage, getSpreadRangeForSymbols, getSpreadSummary, toRows, upsertCandles, upsertDerivatives, upsertDerivativesBackfillCoverage, upsertMarketBreadthRows, upsertMarketCmcExchangeLiquidityContextRows, upsertMarketCmcFearGreedContextRows, upsertMarketCmcIndexContextRows, upsertMarketContextBackfillCoverage, upsertMarketGlobalContextRows, upsertMarketReferenceAssetContextRows, upsertMarketTradeFlowRows, upsertSpreadRows, waitForDbReady };