@liberfi.io/ui-tradingview 0.1.1
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/README.md +232 -0
- package/dist/index.d.mts +938 -0
- package/dist/index.d.ts +938 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +41 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,938 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { PropsWithChildren, ReactNode } from 'react';
|
|
3
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
+
import { Store } from 'jotai/vanilla/store';
|
|
5
|
+
import * as jotai_vanilla_utils_atomFamily from 'jotai/vanilla/utils/atomFamily';
|
|
6
|
+
import * as jotai from 'jotai';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Minimal TradingView Charting Library type declarations.
|
|
10
|
+
* These mirror the official TradingView API so that this package
|
|
11
|
+
* can compile without bundling the proprietary library.
|
|
12
|
+
* Consumers must provide the actual charting_library at runtime.
|
|
13
|
+
*/
|
|
14
|
+
type ResolutionString = string & {
|
|
15
|
+
__brand?: "ResolutionString";
|
|
16
|
+
};
|
|
17
|
+
type Timezone = string;
|
|
18
|
+
type TimezoneId = string;
|
|
19
|
+
type LanguageCode = string;
|
|
20
|
+
type ThemeName = "Light" | "Dark";
|
|
21
|
+
type LayoutType = string;
|
|
22
|
+
type ChartingLibraryFeatureset = string;
|
|
23
|
+
interface Bar {
|
|
24
|
+
time: number;
|
|
25
|
+
open: number;
|
|
26
|
+
high: number;
|
|
27
|
+
low: number;
|
|
28
|
+
close: number;
|
|
29
|
+
volume?: number;
|
|
30
|
+
}
|
|
31
|
+
interface Mark {
|
|
32
|
+
id: string | number;
|
|
33
|
+
time: number;
|
|
34
|
+
color: string | MarkColor;
|
|
35
|
+
text: string;
|
|
36
|
+
label: string;
|
|
37
|
+
labelFontColor: string;
|
|
38
|
+
minSize: number;
|
|
39
|
+
}
|
|
40
|
+
type MarkColor = "red" | "green" | "blue" | "yellow";
|
|
41
|
+
interface LibrarySymbolInfo {
|
|
42
|
+
name: string;
|
|
43
|
+
full_name: string;
|
|
44
|
+
ticker?: string;
|
|
45
|
+
description: string;
|
|
46
|
+
type: string;
|
|
47
|
+
session: string;
|
|
48
|
+
exchange: string;
|
|
49
|
+
listed_exchange: string;
|
|
50
|
+
timezone: Timezone;
|
|
51
|
+
format: string;
|
|
52
|
+
pricescale: number;
|
|
53
|
+
minmov: number;
|
|
54
|
+
has_intraday?: boolean;
|
|
55
|
+
has_seconds?: boolean;
|
|
56
|
+
has_ticks?: boolean;
|
|
57
|
+
has_no_volume?: boolean;
|
|
58
|
+
supported_resolutions?: ResolutionString[];
|
|
59
|
+
currency_code?: string;
|
|
60
|
+
[key: string]: any;
|
|
61
|
+
}
|
|
62
|
+
interface SymbolResolveExtension {
|
|
63
|
+
currencyCode?: string;
|
|
64
|
+
unitId?: string;
|
|
65
|
+
}
|
|
66
|
+
interface PeriodParams {
|
|
67
|
+
from: number;
|
|
68
|
+
to: number;
|
|
69
|
+
countBack: number;
|
|
70
|
+
firstDataRequest: boolean;
|
|
71
|
+
}
|
|
72
|
+
interface HistoryMetaInfo {
|
|
73
|
+
noData?: boolean;
|
|
74
|
+
nextTime?: number;
|
|
75
|
+
}
|
|
76
|
+
type HistoryCallback = (bars: Bar[], meta: HistoryMetaInfo) => void;
|
|
77
|
+
type ResolveCallback = (symbolInfo: LibrarySymbolInfo) => void;
|
|
78
|
+
type SubscribeBarsCallback = (bar: Bar) => void;
|
|
79
|
+
type GetMarksCallback<T> = (marks: T[]) => void;
|
|
80
|
+
type SeriesType = number;
|
|
81
|
+
interface SeriesFormatterFactory {
|
|
82
|
+
(symbolInfo: LibrarySymbolInfo | null, minTick: string): {
|
|
83
|
+
format: (price: number) => string;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
interface ChartingLibraryWidgetOptions {
|
|
87
|
+
container: string | HTMLElement;
|
|
88
|
+
autosize?: boolean;
|
|
89
|
+
debug?: boolean;
|
|
90
|
+
load_last_chart?: boolean;
|
|
91
|
+
auto_save_delay?: number;
|
|
92
|
+
timezone?: Timezone;
|
|
93
|
+
library_path?: string;
|
|
94
|
+
custom_css_url?: string;
|
|
95
|
+
theme?: ThemeName;
|
|
96
|
+
custom_font_family?: string;
|
|
97
|
+
symbol?: string;
|
|
98
|
+
interval?: ResolutionString;
|
|
99
|
+
locale?: LanguageCode;
|
|
100
|
+
datafeed: any;
|
|
101
|
+
save_load_adapter?: any;
|
|
102
|
+
settings_adapter?: any;
|
|
103
|
+
custom_formatters?: any;
|
|
104
|
+
overrides?: Record<string, any>;
|
|
105
|
+
studies_overrides?: Record<string, any>;
|
|
106
|
+
disabled_features?: ChartingLibraryFeatureset[];
|
|
107
|
+
enabled_features?: ChartingLibraryFeatureset[];
|
|
108
|
+
broker_config?: any;
|
|
109
|
+
[key: string]: any;
|
|
110
|
+
}
|
|
111
|
+
type TradingTerminalWidgetOptions = ChartingLibraryWidgetOptions;
|
|
112
|
+
interface VisibleTimeRange {
|
|
113
|
+
from: number;
|
|
114
|
+
to: number;
|
|
115
|
+
}
|
|
116
|
+
interface CrossHairMovedEventParams {
|
|
117
|
+
time: number;
|
|
118
|
+
price: number;
|
|
119
|
+
}
|
|
120
|
+
interface ISubscription<T = void> {
|
|
121
|
+
subscribe(obj: any, handler: (value: T) => void): void;
|
|
122
|
+
unsubscribe(obj: any, handler: (value: T) => void): void;
|
|
123
|
+
}
|
|
124
|
+
interface ITimeScaleApi {
|
|
125
|
+
rightOffset(): number;
|
|
126
|
+
setRightOffset(offset: number): void;
|
|
127
|
+
barSpacing(): number;
|
|
128
|
+
setBarSpacing(spacing: number): void;
|
|
129
|
+
width(): number;
|
|
130
|
+
rightOffsetChanged(): ISubscription<number>;
|
|
131
|
+
barSpacingChanged(): ISubscription<number>;
|
|
132
|
+
}
|
|
133
|
+
interface IPaneApi {
|
|
134
|
+
getMainSourcePriceScale(): {
|
|
135
|
+
setAutoScale(auto: boolean): void;
|
|
136
|
+
} | null;
|
|
137
|
+
}
|
|
138
|
+
interface IChartWidgetApi {
|
|
139
|
+
symbol(): string;
|
|
140
|
+
resolution(): ResolutionString;
|
|
141
|
+
setSymbol(symbol: string, options?: any): void;
|
|
142
|
+
setResolution(resolution: ResolutionString, options?: any): Promise<void>;
|
|
143
|
+
setChartType(type: SeriesType): void;
|
|
144
|
+
chartType(): SeriesType;
|
|
145
|
+
getTimeScale(): ITimeScaleApi;
|
|
146
|
+
getVisibleRange(): VisibleTimeRange;
|
|
147
|
+
onSymbolChanged(): ISubscription;
|
|
148
|
+
onIntervalChanged(): ISubscription<ResolutionString>;
|
|
149
|
+
onVisibleRangeChanged(): ISubscription<VisibleTimeRange>;
|
|
150
|
+
crossHairMoved(): ISubscription<CrossHairMovedEventParams>;
|
|
151
|
+
dataReady(callback: () => void): void;
|
|
152
|
+
getPanes(): IPaneApi[];
|
|
153
|
+
priceFormatter(): {
|
|
154
|
+
format(price: number): string;
|
|
155
|
+
} | null;
|
|
156
|
+
executeActionById(actionId: string): void;
|
|
157
|
+
getTimezoneApi(): {
|
|
158
|
+
setTimezone(timezone: TimezoneId): void;
|
|
159
|
+
} | null;
|
|
160
|
+
resetData(): void;
|
|
161
|
+
getAllStudies(): any[];
|
|
162
|
+
}
|
|
163
|
+
interface IChartingLibraryWidget {
|
|
164
|
+
onChartReady(callback: () => void): void;
|
|
165
|
+
chart(index?: number): IChartWidgetApi;
|
|
166
|
+
activeChart(): IChartWidgetApi;
|
|
167
|
+
activeChartIndex(): number | undefined;
|
|
168
|
+
chartsCount(): number;
|
|
169
|
+
setActiveChart(index: number): void;
|
|
170
|
+
layout(): LayoutType;
|
|
171
|
+
setLayout(layout: LayoutType): void;
|
|
172
|
+
saveChartToServer(onComplete?: () => void, onFail?: () => void, options?: {
|
|
173
|
+
defaultChartName?: string;
|
|
174
|
+
}): void;
|
|
175
|
+
changeTheme(theme: ThemeName, options?: {
|
|
176
|
+
disableUndo?: boolean;
|
|
177
|
+
}): Promise<void>;
|
|
178
|
+
applyOverrides(overrides: Record<string, any>): void;
|
|
179
|
+
applyStudiesOverrides(overrides: Record<string, any>): void;
|
|
180
|
+
setCSSCustomProperty(key: string, value: string): void;
|
|
181
|
+
subscribe(event: string, callback: (...args: any[]) => void): void;
|
|
182
|
+
unsubscribe(event: string, callback: (...args: any[]) => void): void;
|
|
183
|
+
onContextMenu(callback: (...args: any[]) => any): void;
|
|
184
|
+
takeClientScreenshot(): Promise<HTMLCanvasElement>;
|
|
185
|
+
symbolSync(): {
|
|
186
|
+
setValue(v: boolean): void;
|
|
187
|
+
} | null;
|
|
188
|
+
intervalSync(): {
|
|
189
|
+
setValue(v: boolean): void;
|
|
190
|
+
} | null;
|
|
191
|
+
unloadUnusedCharts(): void;
|
|
192
|
+
remove(): void;
|
|
193
|
+
}
|
|
194
|
+
type WidgetConstructor = new (options: ChartingLibraryWidgetOptions | TradingTerminalWidgetOptions) => IChartingLibraryWidget;
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Persists chart settings, shapes, and drawing data to localStorage.
|
|
198
|
+
* All keys are scoped by `storageId` to support multiple instances.
|
|
199
|
+
*/
|
|
200
|
+
declare class ChartSettingsStore {
|
|
201
|
+
private storageId;
|
|
202
|
+
constructor(storageId: string);
|
|
203
|
+
private get settingsKey();
|
|
204
|
+
private get shapesKey();
|
|
205
|
+
getSettings(): any;
|
|
206
|
+
getChartStoreData(): any;
|
|
207
|
+
setChartStoreData(data: any): void;
|
|
208
|
+
saveSettings(data: any): Promise<void>;
|
|
209
|
+
getShapes(key: string): Promise<any[]>;
|
|
210
|
+
saveShapes(key: string, updated: any): Promise<void>;
|
|
211
|
+
private getLocalData;
|
|
212
|
+
private setLocalData;
|
|
213
|
+
private getLocalSettingsData;
|
|
214
|
+
private getLocalShapesData;
|
|
215
|
+
private setLocalShapesData;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Manages chart-level settings via jotai atoms (keyed by prefix).
|
|
220
|
+
* Replaces the BehaviorSubject-based TvChartSettings.
|
|
221
|
+
*/
|
|
222
|
+
declare class ChartSettings {
|
|
223
|
+
readonly prefix: string;
|
|
224
|
+
private store;
|
|
225
|
+
supportedResolutions: ResolutionString[];
|
|
226
|
+
supportedLayouts: TvChartLayout[];
|
|
227
|
+
supportedChartTypes: TvChartType[];
|
|
228
|
+
chartNames: Record<string, string>;
|
|
229
|
+
priceFormatterFactory: SeriesFormatterFactory | null;
|
|
230
|
+
saveLoadAdapter: ChartSettingsStore;
|
|
231
|
+
constructor(prefix: string, store: Store);
|
|
232
|
+
get layout(): TvChartLayout;
|
|
233
|
+
get chartType(): TvChartType;
|
|
234
|
+
get theme(): string;
|
|
235
|
+
get reverseColor(): boolean;
|
|
236
|
+
get locale(): string;
|
|
237
|
+
get timezone(): string;
|
|
238
|
+
get tickerSymbol(): string;
|
|
239
|
+
get storageId(): string;
|
|
240
|
+
get backgroundColor(): string | null;
|
|
241
|
+
get enabledFeatures(): string[];
|
|
242
|
+
get disabledFeatures(): string[];
|
|
243
|
+
updateValue(key: string, value: any): void;
|
|
244
|
+
isFeatureEnabled(feature: TvChartFeature): boolean;
|
|
245
|
+
setFeature(feature: string, enabled: boolean): void;
|
|
246
|
+
resetFeature(feature: string): void;
|
|
247
|
+
get enableMultiCharts(): boolean;
|
|
248
|
+
get enableCreateVolumeIndicatorByDefault(): boolean;
|
|
249
|
+
get enableHideDrawingToolsByDefault(): boolean;
|
|
250
|
+
get enableLegendSeriesTitle(): boolean;
|
|
251
|
+
get enableLegendVolume(): boolean;
|
|
252
|
+
get enableTimeframesToolbar(): boolean;
|
|
253
|
+
get enableVolumeForceOverlay(): boolean;
|
|
254
|
+
/**
|
|
255
|
+
* Subscribe to a specific atom change. Returns unsubscribe function.
|
|
256
|
+
*/
|
|
257
|
+
sub(key: string, callback: () => void): () => void;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
type Listener<T = any> = (value: T) => void;
|
|
261
|
+
/**
|
|
262
|
+
* Lightweight typed event emitter for internal bridge-level events.
|
|
263
|
+
* Replaces rxjs Subject for non-React event passing.
|
|
264
|
+
*/
|
|
265
|
+
declare class EventEmitter<TEvents extends Record<string, any> = Record<string, any>> {
|
|
266
|
+
private listeners;
|
|
267
|
+
on<K extends keyof TEvents>(event: K, listener: Listener<TEvents[K]>): () => void;
|
|
268
|
+
emit<K extends keyof TEvents>(event: K, value: TEvents[K]): void;
|
|
269
|
+
off<K extends keyof TEvents>(event: K, listener: Listener<TEvents[K]>): void;
|
|
270
|
+
clear(): void;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
interface BridgeEvents {
|
|
274
|
+
symbolChanged: [number, string];
|
|
275
|
+
resolutionChanged: [number, string];
|
|
276
|
+
visibleRangeChanged: [number, VisibleTimeRange];
|
|
277
|
+
crosshairMoved: [number, CrossHairMovedEventParams];
|
|
278
|
+
domEvent: [number, string, Event];
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Bridge between our React/jotai layer and the TradingView charting library widget.
|
|
282
|
+
* Manages widget lifecycle, chart subscriptions, and module orchestration.
|
|
283
|
+
*/
|
|
284
|
+
declare class ChartWidgetBridge {
|
|
285
|
+
readonly settings: ChartSettings;
|
|
286
|
+
readonly chartManager: ChartManager;
|
|
287
|
+
private WidgetCtor;
|
|
288
|
+
private moduleInstances;
|
|
289
|
+
private symbolIntervalSubs;
|
|
290
|
+
private abortController;
|
|
291
|
+
private widgetReadyPromise;
|
|
292
|
+
private readyPromise;
|
|
293
|
+
widget: IChartingLibraryWidget | null;
|
|
294
|
+
container: HTMLDivElement | null;
|
|
295
|
+
ready: boolean;
|
|
296
|
+
layoutReady: boolean;
|
|
297
|
+
readonly events: EventEmitter<BridgeEvents>;
|
|
298
|
+
private libraryPath;
|
|
299
|
+
private customCssUrl;
|
|
300
|
+
constructor(settings: ChartSettings, chartManager: ChartManager, widgetConstructor: WidgetConstructor, options?: {
|
|
301
|
+
libraryPath?: string;
|
|
302
|
+
customCssUrl?: string;
|
|
303
|
+
});
|
|
304
|
+
getWidget(): IChartingLibraryWidget | null;
|
|
305
|
+
init(container: HTMLDivElement): Promise<void>;
|
|
306
|
+
destroy(): Promise<void>;
|
|
307
|
+
onReady(): Promise<void>;
|
|
308
|
+
asyncWidgetMethodContext(callback: (widget: IChartingLibraryWidget, done: () => void) => void): Promise<void>;
|
|
309
|
+
getModule(name: string): any;
|
|
310
|
+
applyColorPaletteOverrides(): void;
|
|
311
|
+
private getWidgetOptions;
|
|
312
|
+
private handleChartReady;
|
|
313
|
+
private onAutoSaveNeeded;
|
|
314
|
+
private activeChartChanged;
|
|
315
|
+
private layoutWillChange;
|
|
316
|
+
private layoutChanged;
|
|
317
|
+
private syncChartsChanges;
|
|
318
|
+
private subscribeChartsChanges;
|
|
319
|
+
private installEventHooks;
|
|
320
|
+
private resetTimezone;
|
|
321
|
+
private get localTimezone();
|
|
322
|
+
private waitForLayout;
|
|
323
|
+
private getSettingsOverrides;
|
|
324
|
+
private getColorPaletteOverrides;
|
|
325
|
+
private getColorPaletteStudiesOverrides;
|
|
326
|
+
private initModules;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Per-area widget wrapper that proxies operations to the TradingView chart API.
|
|
331
|
+
*/
|
|
332
|
+
declare class ChartWidget {
|
|
333
|
+
private settings;
|
|
334
|
+
private chartManager;
|
|
335
|
+
private bridge;
|
|
336
|
+
readonly chartIndex: number;
|
|
337
|
+
constructor(settings: ChartSettings, chartManager: ChartManager, bridge: ChartWidgetBridge, index: number);
|
|
338
|
+
get chartAreaManager(): ChartAreaManager | null;
|
|
339
|
+
get widget(): IChartingLibraryWidget | null;
|
|
340
|
+
get chartWidget(): IChartWidgetApi | null;
|
|
341
|
+
setChartStyle(chartType: SeriesType): void;
|
|
342
|
+
getChartStyle(): SeriesType;
|
|
343
|
+
handleSymbolChange(symbol: string, _prevSymbol: string): Promise<void>;
|
|
344
|
+
handleResolutionChange(resolution: TvChartResolution, _prevResolution: string): Promise<void>;
|
|
345
|
+
setPrecision(precision: number | null): void;
|
|
346
|
+
dataReady(): Promise<void>;
|
|
347
|
+
timeScaleWidth(): number;
|
|
348
|
+
rightOffset(): number;
|
|
349
|
+
setRightOffset(offset: number): void;
|
|
350
|
+
barSpacing(): number;
|
|
351
|
+
setBarSpacing(spacing: number): void;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Manages the state of a single chart area (pane).
|
|
356
|
+
* Reads/writes the corresponding index in chartAreasFamily(prefix).
|
|
357
|
+
*/
|
|
358
|
+
declare class ChartAreaManager {
|
|
359
|
+
readonly settings: ChartSettings;
|
|
360
|
+
readonly chartManager: ChartManager;
|
|
361
|
+
readonly chartIndex: number;
|
|
362
|
+
private store;
|
|
363
|
+
private prefix;
|
|
364
|
+
pendingTickerSymbol: string | null;
|
|
365
|
+
pendingResolution: string | null;
|
|
366
|
+
constructor(settings: ChartSettings, manager: ChartManager, index: number, store: Store, prefix: string, areaSettings?: Partial<ChartAreaState>);
|
|
367
|
+
get state(): ChartAreaState;
|
|
368
|
+
private patchArea;
|
|
369
|
+
setState(key: keyof ChartAreaState, value: any): void;
|
|
370
|
+
get tickerSymbol(): string;
|
|
371
|
+
get symbol(): string;
|
|
372
|
+
get resolution(): TvChartResolution;
|
|
373
|
+
get chartStyle(): SeriesType;
|
|
374
|
+
get rightOffset(): number;
|
|
375
|
+
get barSpacing(): number;
|
|
376
|
+
get dataReady(): boolean;
|
|
377
|
+
get internalChartWidget(): ChartWidget | undefined;
|
|
378
|
+
setChartStyle(chartStyle: SeriesType): void;
|
|
379
|
+
setSymbol(symbol: string): Promise<void>;
|
|
380
|
+
setResolution(resolution: TvChartResolution): Promise<void>;
|
|
381
|
+
toJSON(): ChartAreaState;
|
|
382
|
+
widgetReady(): void;
|
|
383
|
+
get active(): boolean;
|
|
384
|
+
get selected(): boolean;
|
|
385
|
+
get symbolInfo(): LibrarySymbolInfo | null;
|
|
386
|
+
destroy(): void;
|
|
387
|
+
private handleChartReady;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* High-level wrapper around the TradingView IChartingLibraryWidget.
|
|
392
|
+
* Provides convenience methods for theme, layout, screenshots, etc.
|
|
393
|
+
*/
|
|
394
|
+
declare class ChartLibraryWidget {
|
|
395
|
+
private settings;
|
|
396
|
+
private chartManager;
|
|
397
|
+
readonly bridge: ChartWidgetBridge;
|
|
398
|
+
constructor(settings: ChartSettings, chartManager: ChartManager, bridge: ChartWidgetBridge);
|
|
399
|
+
get widget(): IChartingLibraryWidget | null;
|
|
400
|
+
chartByIndex(index: number): ChartWidget;
|
|
401
|
+
activeChart(): ChartWidget | undefined;
|
|
402
|
+
openIndicatorSettingsDialog(): void;
|
|
403
|
+
openSettingsDialog(): void;
|
|
404
|
+
takeClientScreenshot(): Promise<HTMLCanvasElement> | undefined;
|
|
405
|
+
onLayoutChange(layout: TvChartLayout): void;
|
|
406
|
+
onThemeChange(theme: string, _reverseColor: boolean): Promise<void>;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* Core chart manager that orchestrates areas, settings, and widget lifecycle.
|
|
411
|
+
* State is backed by jotai atoms keyed by prefix (storageId).
|
|
412
|
+
*/
|
|
413
|
+
declare class ChartManager {
|
|
414
|
+
readonly prefix: string;
|
|
415
|
+
readonly settings: ChartSettings;
|
|
416
|
+
private store;
|
|
417
|
+
initialized: boolean;
|
|
418
|
+
focused: boolean;
|
|
419
|
+
reloadId: number;
|
|
420
|
+
internalWidget: ChartLibraryWidget | null;
|
|
421
|
+
datafeed: ITvChartDataFeedModule | null;
|
|
422
|
+
symbolResolver: ITvChartSymbolResolver | null;
|
|
423
|
+
private unsubAutoSave;
|
|
424
|
+
constructor(prefix: string, store: Store, settings: ChartSettings);
|
|
425
|
+
get loading(): boolean;
|
|
426
|
+
get fullscreen(): boolean;
|
|
427
|
+
set fullscreen(v: boolean);
|
|
428
|
+
get selectedIndex(): number;
|
|
429
|
+
set selectedIndex(idx: number);
|
|
430
|
+
get pinnedResolutions(): TvChartResolution[];
|
|
431
|
+
set pinnedResolutions(v: TvChartResolution[]);
|
|
432
|
+
get showDrawingToolbar(): boolean;
|
|
433
|
+
get chartCount(): number;
|
|
434
|
+
get areas(): ChartAreaManager[];
|
|
435
|
+
private _areaManagers;
|
|
436
|
+
areaByIndex(index: number): ChartAreaManager | null;
|
|
437
|
+
get activeArea(): ChartAreaManager | null;
|
|
438
|
+
init(): Promise<void>;
|
|
439
|
+
destroy(): void;
|
|
440
|
+
setLoading(loading: boolean): void;
|
|
441
|
+
setLocale(locale: string): void;
|
|
442
|
+
setTimezone(timezone: string): void;
|
|
443
|
+
setFocused(focused: boolean): void;
|
|
444
|
+
setShowDrawingToolbar(show: boolean): void;
|
|
445
|
+
setInternalWidget(widget: ChartLibraryWidget | null): void;
|
|
446
|
+
onInternalWidgetReady(): void;
|
|
447
|
+
setChartType(chartType: string): void;
|
|
448
|
+
setTheme(theme: string): void;
|
|
449
|
+
setReverseColor(reverseColor: boolean): void;
|
|
450
|
+
setLayout(layout: TvChartLayout): void;
|
|
451
|
+
reloadChart(): void;
|
|
452
|
+
updateChartContents(): void;
|
|
453
|
+
get settingsData(): {
|
|
454
|
+
layout: TvChartLayout;
|
|
455
|
+
chartType: TvChartType;
|
|
456
|
+
selectedIndex: number;
|
|
457
|
+
pinnedResolutions: TvChartResolution[];
|
|
458
|
+
showDrawingToolbar: boolean;
|
|
459
|
+
areaContents: ChartAreaState[];
|
|
460
|
+
};
|
|
461
|
+
getAllCharts(): ChartAreaManager[];
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
declare enum TvChartType {
|
|
465
|
+
TradingView = "TradingView",
|
|
466
|
+
Original = "Original"
|
|
467
|
+
}
|
|
468
|
+
declare enum TvChartPriceType {
|
|
469
|
+
Price = "price",
|
|
470
|
+
MarketCap = "market_cap"
|
|
471
|
+
}
|
|
472
|
+
declare enum TvChartQuoteType {
|
|
473
|
+
USD = "USD",
|
|
474
|
+
SOL = "SOL",
|
|
475
|
+
ETH = "ETH",
|
|
476
|
+
TRX = "TRX",
|
|
477
|
+
BNB = "BNB"
|
|
478
|
+
}
|
|
479
|
+
type TvChartResolution = "1s" | "5s" | "15s" | "30s" | "1m" | "5m" | "15m" | "30m" | "1h" | "4h" | "12h" | "1d";
|
|
480
|
+
declare enum TvChartKlineStyle {
|
|
481
|
+
Bars = 0,
|
|
482
|
+
Candles = 1,
|
|
483
|
+
Line = 2,
|
|
484
|
+
Area = 3,
|
|
485
|
+
HeikenAshi = 8,
|
|
486
|
+
HollowCandles = 9,
|
|
487
|
+
Baseline = 10,
|
|
488
|
+
HiLo = 12,
|
|
489
|
+
Column = 13,
|
|
490
|
+
LineWithMarkers = 14,
|
|
491
|
+
Stepline = 15,
|
|
492
|
+
HLCArea = 16,
|
|
493
|
+
VolCandle = 19,
|
|
494
|
+
Renko = 4,
|
|
495
|
+
Kagi = 5,
|
|
496
|
+
PointAndFigure = 6,
|
|
497
|
+
LineBreak = 7
|
|
498
|
+
}
|
|
499
|
+
declare enum TvChartTheme {
|
|
500
|
+
Light = "light",
|
|
501
|
+
Dark = "dark"
|
|
502
|
+
}
|
|
503
|
+
declare enum TvChartFeature {
|
|
504
|
+
HeaderWidget = "header_widget",
|
|
505
|
+
HeaderCandleStyleMenu = "header_candle_style_menu",
|
|
506
|
+
HeaderFullscreenButton = "header_fullscreen_button",
|
|
507
|
+
MultiCharts = "multi_charts",
|
|
508
|
+
CreateVolumeIndicatorByDefault = "create_volume_indicator_by_default",
|
|
509
|
+
VolumeForceOverlay = "volume_force_overlay",
|
|
510
|
+
HideDrawingToolsByDefault = "hide_drawing_tools_by_default",
|
|
511
|
+
LegendSeriesTitle = "legend_series_title",
|
|
512
|
+
LegendVolume = "legend_volume",
|
|
513
|
+
TimeframesToolbar = "timeframes_toolbar",
|
|
514
|
+
SaveDrawingToServer = "save_drawing_to_server"
|
|
515
|
+
}
|
|
516
|
+
declare enum TvChartLayout {
|
|
517
|
+
Layout1A = "1A",
|
|
518
|
+
Layout2A = "2A",
|
|
519
|
+
Layout2B = "2B",
|
|
520
|
+
Layout3A = "3A",
|
|
521
|
+
Layout3B = "3B",
|
|
522
|
+
Layout3C = "3C",
|
|
523
|
+
Layout3D = "3D",
|
|
524
|
+
Layout3E = "3E",
|
|
525
|
+
Layout3F = "3F",
|
|
526
|
+
Layout4A = "4A",
|
|
527
|
+
Layout4B = "4B",
|
|
528
|
+
Layout4C = "4C",
|
|
529
|
+
Layout4D = "4D",
|
|
530
|
+
Layout4E = "4E",
|
|
531
|
+
Layout4F = "4F",
|
|
532
|
+
Layout5A = "5A",
|
|
533
|
+
Layout5B = "5B",
|
|
534
|
+
Layout5C = "5C",
|
|
535
|
+
Layout5D = "5D",
|
|
536
|
+
Layout6A = "6A",
|
|
537
|
+
Layout6B = "6B",
|
|
538
|
+
Layout6C = "6C",
|
|
539
|
+
Layout7A = "7A",
|
|
540
|
+
Layout8A = "8A",
|
|
541
|
+
Layout8B = "8B",
|
|
542
|
+
Layout8C = "8C"
|
|
543
|
+
}
|
|
544
|
+
interface TvChartSymbol {
|
|
545
|
+
chain: string;
|
|
546
|
+
address: string;
|
|
547
|
+
quote?: TvChartQuoteType;
|
|
548
|
+
priceType?: TvChartPriceType;
|
|
549
|
+
}
|
|
550
|
+
interface TvChartSymbolChange {
|
|
551
|
+
index?: number;
|
|
552
|
+
tickerSymbol: string;
|
|
553
|
+
libTickerSymbol: string;
|
|
554
|
+
}
|
|
555
|
+
interface TvChartSymbolInfo extends LibrarySymbolInfo {
|
|
556
|
+
symbol: string;
|
|
557
|
+
full_name: string;
|
|
558
|
+
address: string;
|
|
559
|
+
priceType: TvChartPriceType;
|
|
560
|
+
quote: TvChartQuoteType;
|
|
561
|
+
precision: number;
|
|
562
|
+
}
|
|
563
|
+
interface ITvChartDataFeedModule {
|
|
564
|
+
onReady(options: {
|
|
565
|
+
setting: ChartSettings;
|
|
566
|
+
chartManager: ChartManager;
|
|
567
|
+
instance: ChartWidgetBridge;
|
|
568
|
+
}): Promise<void>;
|
|
569
|
+
onDestroy(): void;
|
|
570
|
+
resolveSymbol(symbolName: string, extension?: SymbolResolveExtension): Promise<LibrarySymbolInfo | null>;
|
|
571
|
+
getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, periodParams: PeriodParams): Promise<Bar[]>;
|
|
572
|
+
subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: SubscribeBarsCallback, listenerGuid: string, onResetCacheNeededCallback: () => void): void;
|
|
573
|
+
unsubscribeBars(listenerGuid: string): void;
|
|
574
|
+
getMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback<Mark>, resolution: ResolutionString): void;
|
|
575
|
+
getFirstBarTime?(symbolInfo: LibrarySymbolInfo, resolution: string, options: {
|
|
576
|
+
timezone: Timezone;
|
|
577
|
+
}): Promise<void>;
|
|
578
|
+
}
|
|
579
|
+
interface ITvChartSymbolResolver {
|
|
580
|
+
resolveSymbolInfo(symbol: string): Promise<LibrarySymbolInfo | null>;
|
|
581
|
+
resolveSymbolInfos(symbols: string[]): Promise<LibrarySymbolInfo[]>;
|
|
582
|
+
getSymbolInfo(symbol: string): LibrarySymbolInfo | null;
|
|
583
|
+
}
|
|
584
|
+
interface ChartAreaState {
|
|
585
|
+
tickerSymbol: string;
|
|
586
|
+
symbol: string;
|
|
587
|
+
resolution: TvChartResolution;
|
|
588
|
+
chartStyle: TvChartKlineStyle;
|
|
589
|
+
rightOffset: number;
|
|
590
|
+
barSpacing: number;
|
|
591
|
+
dataReady: boolean;
|
|
592
|
+
crosshair?: {
|
|
593
|
+
time: number;
|
|
594
|
+
price: number;
|
|
595
|
+
};
|
|
596
|
+
firstBarTime?: number;
|
|
597
|
+
}
|
|
598
|
+
declare enum TvChartErrorResetType {
|
|
599
|
+
None = 0,
|
|
600
|
+
ResetData = 1,
|
|
601
|
+
ResetChart = 2
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
interface TvChartConfig {
|
|
605
|
+
storageId: string;
|
|
606
|
+
tickerSymbol: string;
|
|
607
|
+
datafeed: ITvChartDataFeedModule;
|
|
608
|
+
resolution: TvChartResolution;
|
|
609
|
+
supportedResolutions?: TvChartResolution[];
|
|
610
|
+
layout: TvChartLayout;
|
|
611
|
+
supportedLayouts?: TvChartLayout[];
|
|
612
|
+
chartType: TvChartType;
|
|
613
|
+
supportedChartTypes?: TvChartType[];
|
|
614
|
+
chartNames?: Record<string, string>;
|
|
615
|
+
kLineStyle: TvChartKlineStyle;
|
|
616
|
+
theme: TvChartTheme;
|
|
617
|
+
reverseColor?: boolean;
|
|
618
|
+
backgroundColor?: string;
|
|
619
|
+
timezone: Timezone;
|
|
620
|
+
locale: LanguageCode;
|
|
621
|
+
enabledFeatures?: TvChartFeature[];
|
|
622
|
+
disabledFeatures?: TvChartFeature[];
|
|
623
|
+
priceFormatterFactory?: SeriesFormatterFactory;
|
|
624
|
+
}
|
|
625
|
+
interface TradingViewConfigProps {
|
|
626
|
+
initConfig: TvChartConfig;
|
|
627
|
+
widgetConstructor: WidgetConstructor;
|
|
628
|
+
libraryPath?: string;
|
|
629
|
+
customCssUrl?: string;
|
|
630
|
+
}
|
|
631
|
+
declare const TradingViewConfig: ({ initConfig, children, }: PropsWithChildren<{
|
|
632
|
+
initConfig: TvChartConfig;
|
|
633
|
+
}>) => react_jsx_runtime.JSX.Element | null;
|
|
634
|
+
|
|
635
|
+
interface TvChartContextValue {
|
|
636
|
+
prefix: string;
|
|
637
|
+
chartSettings: ChartSettings;
|
|
638
|
+
chartManager: ChartManager;
|
|
639
|
+
widgetConstructor: WidgetConstructor;
|
|
640
|
+
libraryPath?: string;
|
|
641
|
+
customCssUrl?: string;
|
|
642
|
+
}
|
|
643
|
+
declare function useTvChartContext(): TvChartContextValue;
|
|
644
|
+
declare function useTvChartManager(): ChartManager;
|
|
645
|
+
declare function useTvChartPrefix(): string;
|
|
646
|
+
declare class TvChartHandle {
|
|
647
|
+
readonly setting: ChartSettings;
|
|
648
|
+
readonly chartManager: ChartManager;
|
|
649
|
+
constructor(setting: ChartSettings, chartManager: ChartManager);
|
|
650
|
+
get internalWidget(): ChartLibraryWidget | null;
|
|
651
|
+
chartCount(): number;
|
|
652
|
+
setActiveChart(index: number): void;
|
|
653
|
+
layout(): TvChartLayout;
|
|
654
|
+
setLayout(layout: TvChartLayout): void;
|
|
655
|
+
theme(): string;
|
|
656
|
+
setTheme(theme: string): void;
|
|
657
|
+
setChartType(chartType: TvChartType): void;
|
|
658
|
+
getSetting(): ChartSettings;
|
|
659
|
+
getChartManager(): ChartManager;
|
|
660
|
+
}
|
|
661
|
+
interface TradingViewProviderProps extends PropsWithChildren<TradingViewConfigProps> {
|
|
662
|
+
}
|
|
663
|
+
declare const TradingViewProvider: react.ForwardRefExoticComponent<TradingViewProviderProps & react.RefAttributes<TvChartHandle>>;
|
|
664
|
+
|
|
665
|
+
interface TradingViewToolbarProps {
|
|
666
|
+
/** Extra elements to render before the default toolbar items */
|
|
667
|
+
prefix?: ReactNode;
|
|
668
|
+
/** Extra elements to render after the default toolbar items */
|
|
669
|
+
suffix?: ReactNode;
|
|
670
|
+
/** Override the default toolbar items entirely */
|
|
671
|
+
children?: ReactNode;
|
|
672
|
+
/** Show/hide resolution buttons (default: true) */
|
|
673
|
+
showResolutions?: boolean;
|
|
674
|
+
/** Show/hide kline style selector (default: true) */
|
|
675
|
+
showKlineStyleSelect?: boolean;
|
|
676
|
+
/** Show/hide indicator button (default: true) */
|
|
677
|
+
showOpenIndicator?: boolean;
|
|
678
|
+
/** Show/hide settings button (default: true) */
|
|
679
|
+
showOpenSettings?: boolean;
|
|
680
|
+
/** Show/hide fullscreen button (default: true) */
|
|
681
|
+
showFullscreen?: boolean;
|
|
682
|
+
/** Show/hide snapshot button (default: true) */
|
|
683
|
+
showSnapshot?: boolean;
|
|
684
|
+
}
|
|
685
|
+
declare const TradingViewToolbar: react.MemoExoticComponent<({ children, prefix: prefixSlot, suffix, showResolutions, showKlineStyleSelect, showOpenIndicator, showOpenSettings, showFullscreen, showSnapshot, }: TradingViewToolbarProps) => react_jsx_runtime.JSX.Element>;
|
|
686
|
+
|
|
687
|
+
interface TradingViewInstance {
|
|
688
|
+
handle: TvChartHandle;
|
|
689
|
+
}
|
|
690
|
+
interface TradingViewProps {
|
|
691
|
+
/** Chart configuration */
|
|
692
|
+
initConfig: TvChartConfig;
|
|
693
|
+
/** TradingView Widget constructor (injected by consumer) */
|
|
694
|
+
widgetConstructor: WidgetConstructor;
|
|
695
|
+
/** Path to charting library static files */
|
|
696
|
+
libraryPath?: string;
|
|
697
|
+
/** Custom CSS URL for the charting library */
|
|
698
|
+
customCssUrl?: string;
|
|
699
|
+
/** Toolbar configuration; pass false to hide */
|
|
700
|
+
toolbar?: TradingViewToolbarProps | false;
|
|
701
|
+
/** Optional loading overlay */
|
|
702
|
+
loadingOverlay?: ReactNode;
|
|
703
|
+
/** Called when chart widget is ready */
|
|
704
|
+
onReady?: () => void;
|
|
705
|
+
/** Additional children rendered below the chart */
|
|
706
|
+
children?: ReactNode;
|
|
707
|
+
/** Class name for the outer container */
|
|
708
|
+
className?: string;
|
|
709
|
+
}
|
|
710
|
+
/**
|
|
711
|
+
* Main TradingView K-line chart component.
|
|
712
|
+
* Wraps the TradingView Charting Library with jotai-based state management
|
|
713
|
+
* and multi-instance support via storageId.
|
|
714
|
+
*/
|
|
715
|
+
declare const TradingView: react.ForwardRefExoticComponent<TradingViewProps & react.RefAttributes<TvChartHandle>>;
|
|
716
|
+
|
|
717
|
+
interface TradingViewWidgetProviderProps {
|
|
718
|
+
onReady?: () => void;
|
|
719
|
+
}
|
|
720
|
+
declare const TradingViewWidgetProvider: react.MemoExoticComponent<({ onReady }: TradingViewWidgetProviderProps) => react_jsx_runtime.JSX.Element>;
|
|
721
|
+
|
|
722
|
+
interface TradingViewWidgetContainerProps {
|
|
723
|
+
onReady?: () => void;
|
|
724
|
+
}
|
|
725
|
+
declare const TradingViewWidgetContainer: react.ForwardRefExoticComponent<TradingViewWidgetContainerProps & react.RefAttributes<ChartLibraryWidget | undefined>>;
|
|
726
|
+
|
|
727
|
+
interface TvChartToolbarContextValue {
|
|
728
|
+
activeAreaManager: ChartAreaManager | null;
|
|
729
|
+
symbolInfo: LibrarySymbolInfo | null;
|
|
730
|
+
}
|
|
731
|
+
declare function useTvChartToolbarContext(): TvChartToolbarContextValue;
|
|
732
|
+
declare const TradingViewToolbarProvider: ({ children }: PropsWithChildren) => react_jsx_runtime.JSX.Element;
|
|
733
|
+
|
|
734
|
+
declare const TradingViewResolutions: react.MemoExoticComponent<() => react_jsx_runtime.JSX.Element>;
|
|
735
|
+
|
|
736
|
+
declare const TradingViewKlineStyleSelect: react.MemoExoticComponent<() => react_jsx_runtime.JSX.Element>;
|
|
737
|
+
|
|
738
|
+
declare const TradingViewOpenIndicator: react.MemoExoticComponent<() => react_jsx_runtime.JSX.Element>;
|
|
739
|
+
|
|
740
|
+
declare const TradingViewOpenSettings: react.MemoExoticComponent<() => react_jsx_runtime.JSX.Element>;
|
|
741
|
+
|
|
742
|
+
declare const TradingViewFullscreen: react.MemoExoticComponent<() => react_jsx_runtime.JSX.Element>;
|
|
743
|
+
|
|
744
|
+
declare const TradingViewSnapshot: react.MemoExoticComponent<() => react_jsx_runtime.JSX.Element>;
|
|
745
|
+
|
|
746
|
+
/**
|
|
747
|
+
* Placeholder for multi-chart layout area title injection.
|
|
748
|
+
* The TradingView charting library renders charts into its own iframes,
|
|
749
|
+
* so layout-level customization is done via the bridge's installEventHooks.
|
|
750
|
+
*
|
|
751
|
+
* This component can be extended to inject custom UI above or around
|
|
752
|
+
* individual chart panes when multi-chart layouts are active.
|
|
753
|
+
*/
|
|
754
|
+
declare const TradingViewLayout: react.MemoExoticComponent<() => null>;
|
|
755
|
+
|
|
756
|
+
interface TradingViewAreaTitleProps {
|
|
757
|
+
index?: number;
|
|
758
|
+
}
|
|
759
|
+
/**
|
|
760
|
+
* Displays the symbol/resolution title for a chart area.
|
|
761
|
+
* Useful when rendering custom headers in multi-chart layouts.
|
|
762
|
+
*/
|
|
763
|
+
declare const TradingViewAreaTitle: react.MemoExoticComponent<({ index }: TradingViewAreaTitleProps) => react_jsx_runtime.JSX.Element | null>;
|
|
764
|
+
|
|
765
|
+
/**
|
|
766
|
+
* Returns the ChartManager instance for the current TradingView context.
|
|
767
|
+
*/
|
|
768
|
+
declare function useChartManager(): ChartManager;
|
|
769
|
+
|
|
770
|
+
/**
|
|
771
|
+
* Returns the ChartAreaManager for the currently active chart area.
|
|
772
|
+
*/
|
|
773
|
+
declare function useActiveAreaManager(): ChartAreaManager | null;
|
|
774
|
+
|
|
775
|
+
/**
|
|
776
|
+
* Returns the resolved symbol info for the active chart area.
|
|
777
|
+
*/
|
|
778
|
+
declare function useSymbolInfo(): LibrarySymbolInfo | null;
|
|
779
|
+
|
|
780
|
+
/**
|
|
781
|
+
* DataFeed adapter that conforms to the TradingView Datafeed API.
|
|
782
|
+
* Delegates actual data fetching to the injectable ITvChartDataFeedModule.
|
|
783
|
+
*/
|
|
784
|
+
declare class ChartDataFeed {
|
|
785
|
+
private settings;
|
|
786
|
+
private chartManager;
|
|
787
|
+
private bridge;
|
|
788
|
+
private abortController;
|
|
789
|
+
constructor(settings: ChartSettings, chartManager: ChartManager, bridge: ChartWidgetBridge);
|
|
790
|
+
onReady(callback: (data: any) => void): Promise<void>;
|
|
791
|
+
destroy(): void;
|
|
792
|
+
resolveSymbol(symbolName: string, onResolve: ResolveCallback, onError: ErrorCallback, extension?: SymbolResolveExtension): Promise<void>;
|
|
793
|
+
getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, periodParams: PeriodParams, onResult: HistoryCallback, onError: ErrorCallback): Promise<void>;
|
|
794
|
+
subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: SubscribeBarsCallback, listenerGuid: string, onResetCacheNeededCallback: () => void): void;
|
|
795
|
+
unsubscribeBars(listenerGuid: string): void;
|
|
796
|
+
getMarks(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback<Mark>, resolution: ResolutionString): Promise<void>;
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
/**
|
|
800
|
+
* Resolves and caches symbol info via the injected DataFeedModule.
|
|
801
|
+
*/
|
|
802
|
+
declare class ChartSymbolResolver implements ITvChartSymbolResolver {
|
|
803
|
+
private datafeed;
|
|
804
|
+
private cache;
|
|
805
|
+
private pendingRequests;
|
|
806
|
+
constructor(datafeed: ITvChartDataFeedModule);
|
|
807
|
+
resolveSymbolInfo(symbol: string): Promise<LibrarySymbolInfo | null>;
|
|
808
|
+
resolveSymbolInfos(symbols: string[]): Promise<LibrarySymbolInfo[]>;
|
|
809
|
+
getSymbolInfo(symbol: string): LibrarySymbolInfo | null;
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
/**
|
|
813
|
+
* Adapter for TradingView save_load_adapter — persists chart layout and
|
|
814
|
+
* drawing data to localStorage, keyed by storageId for multi-instance support.
|
|
815
|
+
*/
|
|
816
|
+
declare class ChartSaveLoadAdapter {
|
|
817
|
+
private settings;
|
|
818
|
+
private chartManager;
|
|
819
|
+
private bridge;
|
|
820
|
+
private data;
|
|
821
|
+
private drawings;
|
|
822
|
+
constructor(settings: ChartSettings, chartManager: ChartManager, bridge: ChartWidgetBridge);
|
|
823
|
+
get layoutId(): string;
|
|
824
|
+
get shouldResetColorPalette(): boolean;
|
|
825
|
+
getAllCharts(): Promise<any[]>;
|
|
826
|
+
removeChart(_index: number): void;
|
|
827
|
+
saveChart(chart: any): Promise<string>;
|
|
828
|
+
getChartContent(_: any): Promise<string>;
|
|
829
|
+
saveLineToolsAndGroups(_storageId: string, chartIndex: string, data: any): Promise<void>;
|
|
830
|
+
loadLineToolsAndGroups(_storageId: string, chartIndex: string, _tool: string, symbolToLoad?: {
|
|
831
|
+
symbol?: string;
|
|
832
|
+
}): Promise<any | null>;
|
|
833
|
+
private getLayoutKey;
|
|
834
|
+
private getDrawingKey;
|
|
835
|
+
private loadDataFromLocalStorage;
|
|
836
|
+
private saveDataToLocalStorage;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
/**
|
|
840
|
+
* Adapter for TradingView settings_adapter — reads/writes per-instance
|
|
841
|
+
* chart settings to localStorage with a scoped prefix.
|
|
842
|
+
*/
|
|
843
|
+
declare class ChartSettingsAdapter {
|
|
844
|
+
private storagePrefix;
|
|
845
|
+
initialSettings: Record<string, any>;
|
|
846
|
+
constructor(settings: ChartSettings, _chartManager: ChartManager, _bridge: ChartWidgetBridge);
|
|
847
|
+
toJSON(): null;
|
|
848
|
+
removeValue(key: string): void;
|
|
849
|
+
setValue(key: string, value: any): void;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
declare const chartLoadingFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<boolean> & {
|
|
853
|
+
init: boolean;
|
|
854
|
+
}>;
|
|
855
|
+
declare const chartFullscreenFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<boolean> & {
|
|
856
|
+
init: boolean;
|
|
857
|
+
}>;
|
|
858
|
+
declare const chartSelectedIndexFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<number> & {
|
|
859
|
+
init: number;
|
|
860
|
+
}>;
|
|
861
|
+
declare const chartPinnedResolutionsFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<TvChartResolution[]> & {
|
|
862
|
+
init: TvChartResolution[];
|
|
863
|
+
}>;
|
|
864
|
+
declare const chartAreasFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<ChartAreaState[]> & {
|
|
865
|
+
init: ChartAreaState[];
|
|
866
|
+
}>;
|
|
867
|
+
declare const chartShowDrawingToolbarFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<boolean> & {
|
|
868
|
+
init: boolean;
|
|
869
|
+
}>;
|
|
870
|
+
declare const settingsLayoutFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<TvChartLayout> & {
|
|
871
|
+
init: TvChartLayout;
|
|
872
|
+
}>;
|
|
873
|
+
declare const settingsChartTypeFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<TvChartType> & {
|
|
874
|
+
init: TvChartType;
|
|
875
|
+
}>;
|
|
876
|
+
declare const settingsThemeFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<string> & {
|
|
877
|
+
init: string;
|
|
878
|
+
}>;
|
|
879
|
+
declare const settingsLocaleFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<string> & {
|
|
880
|
+
init: string;
|
|
881
|
+
}>;
|
|
882
|
+
declare const settingsTimezoneFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<string> & {
|
|
883
|
+
init: string;
|
|
884
|
+
}>;
|
|
885
|
+
declare const settingsTickerSymbolFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<string> & {
|
|
886
|
+
init: string;
|
|
887
|
+
}>;
|
|
888
|
+
declare const settingsStorageIdFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<string> & {
|
|
889
|
+
init: string;
|
|
890
|
+
}>;
|
|
891
|
+
declare const settingsReverseColorFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<boolean> & {
|
|
892
|
+
init: boolean;
|
|
893
|
+
}>;
|
|
894
|
+
declare const settingsBackgroundColorFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<string | null> & {
|
|
895
|
+
init: string | null;
|
|
896
|
+
}>;
|
|
897
|
+
declare const settingsEnabledFeaturesFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<string[]> & {
|
|
898
|
+
init: string[];
|
|
899
|
+
}>;
|
|
900
|
+
declare const settingsDisabledFeaturesFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<string[]> & {
|
|
901
|
+
init: string[];
|
|
902
|
+
}>;
|
|
903
|
+
declare const widgetReadyFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.PrimitiveAtom<boolean> & {
|
|
904
|
+
init: boolean;
|
|
905
|
+
}>;
|
|
906
|
+
declare const settingsDataFamily: jotai_vanilla_utils_atomFamily.AtomFamily<string, jotai.Atom<{
|
|
907
|
+
layout: TvChartLayout;
|
|
908
|
+
chartType: TvChartType;
|
|
909
|
+
selectedIndex: number;
|
|
910
|
+
pinnedResolutions: TvChartResolution[];
|
|
911
|
+
showDrawingToolbar: boolean;
|
|
912
|
+
areaContents: ChartAreaState[];
|
|
913
|
+
}>>;
|
|
914
|
+
|
|
915
|
+
declare const ENABLED_TV_CHART_FEATURES: TvChartFeature[];
|
|
916
|
+
declare const DEFAULT_TV_CHART_RESOLUTIONS: TvChartResolution[];
|
|
917
|
+
declare const ALL_TV_CHART_RESOLUTIONS: TvChartResolution[];
|
|
918
|
+
declare const SUPPORTED_TV_CHART_LAYOUTS: TvChartLayout[];
|
|
919
|
+
declare const TV_CHART_THEME_COLORS: {
|
|
920
|
+
decrease: string;
|
|
921
|
+
increase: string;
|
|
922
|
+
chartBg: string;
|
|
923
|
+
card: string;
|
|
924
|
+
};
|
|
925
|
+
|
|
926
|
+
declare function parseSymbol(symbol: string): TvChartSymbol;
|
|
927
|
+
declare function stringifySymbol(symbol: TvChartSymbol): string;
|
|
928
|
+
declare function stringifySymbolShort(symbol: TvChartSymbol): string;
|
|
929
|
+
declare function getTvChartLibraryTheme(theme: string): ThemeName;
|
|
930
|
+
declare function getTvChartLibraryResolution(resolution?: TvChartResolution): ResolutionString;
|
|
931
|
+
declare function getTvChartResolutionReverse(resolution: string): TvChartResolution;
|
|
932
|
+
declare function getTvChartLibraryLocale(locale: string): LanguageCode;
|
|
933
|
+
declare function getTvChartLibraryLayout(layout: TvChartLayout): LayoutType;
|
|
934
|
+
declare function getTvChartLayoutReverse(layout: LayoutType): TvChartLayout;
|
|
935
|
+
declare function getTvChartResolutionFrame(resolution: TvChartResolution): number;
|
|
936
|
+
declare function getTvChartTickTimestamp(time: number, timeframe: number): number;
|
|
937
|
+
|
|
938
|
+
export { ALL_TV_CHART_RESOLUTIONS, type Bar, ChartAreaManager, type ChartAreaState, ChartDataFeed, ChartLibraryWidget, ChartManager, ChartSaveLoadAdapter, ChartSettings, ChartSettingsAdapter, ChartSettingsStore, ChartSymbolResolver, ChartWidget, ChartWidgetBridge, type ChartingLibraryWidgetOptions, DEFAULT_TV_CHART_RESOLUTIONS, ENABLED_TV_CHART_FEATURES, EventEmitter, type HistoryMetaInfo, type IChartWidgetApi, type IChartingLibraryWidget, type ITvChartDataFeedModule, type ITvChartSymbolResolver, type LanguageCode, type LibrarySymbolInfo, type Mark, type PeriodParams, type ResolutionString, SUPPORTED_TV_CHART_LAYOUTS, type SeriesFormatterFactory, type SubscribeBarsCallback, type SymbolResolveExtension, TV_CHART_THEME_COLORS, type ThemeName, type Timezone, TradingView, TradingViewAreaTitle, TradingViewConfig, type TradingViewConfigProps, TradingViewFullscreen, type TradingViewInstance, TradingViewKlineStyleSelect, TradingViewLayout, TradingViewOpenIndicator, TradingViewOpenSettings, type TradingViewProps, TradingViewProvider, type TradingViewProviderProps, TradingViewResolutions, TradingViewSnapshot, TradingViewToolbar, type TradingViewToolbarProps, TradingViewToolbarProvider, TradingViewWidgetContainer, TradingViewWidgetProvider, type TvChartConfig, type TvChartContextValue, TvChartErrorResetType, TvChartFeature, TvChartHandle, TvChartKlineStyle, TvChartLayout, TvChartPriceType, TvChartQuoteType, type TvChartResolution, type TvChartSymbol, type TvChartSymbolChange, type TvChartSymbolInfo, TvChartTheme, TvChartType, type WidgetConstructor, chartAreasFamily, chartFullscreenFamily, chartLoadingFamily, chartPinnedResolutionsFamily, chartSelectedIndexFamily, chartShowDrawingToolbarFamily, getTvChartLayoutReverse, getTvChartLibraryLayout, getTvChartLibraryLocale, getTvChartLibraryResolution, getTvChartLibraryTheme, getTvChartResolutionFrame, getTvChartResolutionReverse, getTvChartTickTimestamp, parseSymbol, settingsBackgroundColorFamily, settingsChartTypeFamily, settingsDataFamily, settingsDisabledFeaturesFamily, settingsEnabledFeaturesFamily, settingsLayoutFamily, settingsLocaleFamily, settingsReverseColorFamily, settingsStorageIdFamily, settingsThemeFamily, settingsTickerSymbolFamily, settingsTimezoneFamily, stringifySymbol, stringifySymbolShort, useActiveAreaManager, useChartManager, useSymbolInfo, useTvChartContext, useTvChartManager, useTvChartPrefix, useTvChartToolbarContext, widgetReadyFamily };
|