UNPKG

chart-0714

Version:

Professional trading chart library with advanced customization for trading journal apps

243 lines (242 loc) 7.84 kB
import { ChartOptions, Candle, Theme, ChartType, DrawingOptions, DrawingToolType } from '../types'; import { StopLossOptions, StopLossLine } from '../types/stopLoss'; import { IndicatorConfig } from '../plugins/IndicatorPlugin'; import { Marker } from '../types/marker'; import { DataManager } from './DataManager'; import { LineSeriesOptions } from './LineSeriesManager'; import { UnifiedCoordinateSystem } from './UnifiedCoordinateSystem'; import { ChartEventHandler } from './chart/ChartEventHandler'; export declare class Chart { private container; private dataManager; private interactionManager; private renderingManager; private pluginManager; private theme; private options; private eventHandler; private lifecycle; private lineSeriesHelper; private stopLossHelper; private styleHelper; private viewportHelper; private dataHelper; private drawingHelper; private markerHelper; private exportHelper; private uiHelper; private indicatorHelper; private animationFrameId; private isDirty; private debugMode; private debugCallbacks; private zoomMode; private pendingData; private pendingDataTimeout; constructor(options: ChartOptions); /** * 디버그 로깅 */ debugLog(message: string): void; startRenderLoop(): void; stopRenderLoop(): void; private render; /** * 데이터 설정 * @param candles 캔들 데이터 * @param immediateRender 즉시 렌더링 여부 (React 환경에서 유용) */ setData(candles: Candle[], immediateRender?: boolean): void; resampleData(groupSize: number): void; resampleDataByTime(targetMinutes: number, sourceMinutes?: number): void; convertTo65Min(): void; restoreOriginalData(): void; isDataResampled(): boolean; getOriginalData(): Candle[] | null; /** * 차트 크기 조정 */ resize(): void; /** * 초기화 완료 대기 */ waitUntilReady(): Promise<void>; /** * 리소스 정리 */ dispose(): void; getContainer(): HTMLElement; getDataManager(): DataManager; getTheme(): Theme; getOptions(): ChartOptions; getEventHandler(): ChartEventHandler; getZoomMode(): 'mouse' | 'latest'; getPendingData(): { candles: Candle[]; immediateRender: boolean; } | null; clearPendingData(): void; setDirty(value: boolean): void; isReady(): boolean; getState(): string; on(event: 'stateChange', callback: (state: string) => void): void; off(event: 'stateChange', callback: (state: string) => void): void; addIndicator(config: IndicatorConfig): string; removeIndicator(id: string): void; clearIndicators(): void; toggleIndicator(id: string): void; getIndicators(): IndicatorConfig[]; updateIndicator(id: string, updates: Partial<IndicatorConfig>): void; addSMA(period: number, options?: { color?: string; lineWidth?: number; source?: 'open' | 'high' | 'low' | 'close'; }): string; addEMA(period: number, options?: { color?: string; lineWidth?: number; source?: 'open' | 'high' | 'low' | 'close'; }): string; addBollingerBands(period?: number, stdDev?: number, options?: { upperColor?: string; lowerColor?: string; middleColor?: string; }): string; toggleAllMA(): void; applyTimeframeMA(customConfigs?: Record<string, Array<{ type: 'SMA' | 'EMA'; period: number; color: string; }>>): void; clearTimeframeMA(): void; getTimeframeMAInfo(): { timeframe: string | null; indicatorIds: string[]; }; addDrawing(type: string, options?: DrawingOptions): void; exportDrawings(): string; importDrawings(jsonData: string): void; clearDrawings(): void; setDrawingTool(tool: DrawingToolType | null): void; getDrawingTool(): DrawingToolType | null; setMagneticMode(enabled: boolean): void; getMagneticMode(): boolean; addMarker(marker: Marker): string; setMarkers(markers: Marker[]): void; removeMarker(id: string): void; clearMarkers(): void; getMarkers(): Marker[]; toImage(format?: 'png' | 'jpeg', quality?: number, scaleFactor?: number): Promise<Blob>; /** * 차트를 고화질(QHD+) 이미지로 내보내기 */ toHighResImage(format?: 'png' | 'jpeg', quality?: number): Promise<Blob>; /** * 차트를 지정된 해상도로 내보내기 */ toCustomResolution(targetWidth: number, format?: 'png' | 'jpeg', quality?: number): Promise<Blob>; setChartType(type: ChartType): void; setTheme(theme: 'dark' | 'light'): void; setCursorType(type: 'default' | 'crosshair' | 'dot'): void; setZoomMode(mode: 'mouse' | 'latest'): void; updateSettings(settings: Partial<ChartOptions>): void; getViewport(): UnifiedCoordinateSystem | null; addLineSeries(options: LineSeriesOptions): string; updateLineSeries(id: string, data: Array<{ time: number; value: number; }>): void; removeLineSeries(id: string): void; toggleLineSeriesVisibility(id: string): void; updateLineSeriesStyle(id: string, style: { color?: string; lineWidth?: number; }): void; getAllLineSeries(): import('../types').LineSeriesData[]; clearLineSeries(): void; addStopLossLine(price: number, options?: StopLossOptions): string; removeStopLossLine(id: string): boolean; clearStopLossLines(): void; updateStopLossLine(id: string, updates: Partial<StopLossOptions & { price?: number; }>): boolean; getStopLossLines(): StopLossLine[]; updateCandleColors(colors: { upColor?: string; downColor?: string; borderUpColor?: string; borderDownColor?: string; wickColor?: string; }): void; updateVolumeColors(colors: { up?: string; down?: string; maColor?: string; }): void; updateMovingAverageStyle(id: string, style: { color?: string; lineWidth?: number; lineStyle?: 'solid' | 'dashed' | 'dotted'; opacity?: number; }): void; updateAllMovingAveragesStyle(style: { color?: string; lineWidth?: number; lineStyle?: 'solid' | 'dashed' | 'dotted'; opacity?: number; }): void; updateMarkerStyle(id: string, style: { color?: string; text?: string; size?: number; }): void; updateMarkersStyleByType(type: 'buy' | 'sell', style: { color?: string; text?: string; size?: number; shape?: 'arrowUp' | 'arrowDown' | 'circle' | 'square'; }): void; updateStopLossStyle(id: string, style: { color?: string; lineWidth?: number; label?: string; opacity?: number; }): void; addAveragePriceLine(price: number, options?: { label?: string; color?: string; lineWidth?: number; dashed?: boolean; }): string; updateAveragePriceLine(id: string, updates: { price?: number; label?: string; color?: string; lineWidth?: number; }): boolean; updatePriceRangeForVisibleData(): void; /** * 차트뷰를 초기 설정대로 리셋 */ applyInitialView(): void; /** * 설정값으로 뷰 적용 (헬퍼 메서드) */ private applySettingsView; /** * 차트뷰 고정/해제 토글 */ toggleViewLock(): void; /** * 드로잉 기본 스타일 설정 */ setDefaultDrawingStyle(style: { color?: string; lineWidth?: number; opacity?: number; }): void; /** * 텍스트 기본 스타일 설정 */ setTextDefaults(textDefaults: any): void; }