/// export declare type LanguageCode = 'ar' | 'zh' | 'cs' | 'da_DK' | 'nl_NL' | 'en' | 'et_EE' | 'fr' | 'de' | 'el' | 'he_IL' | 'hu_HU' | 'id_ID' | 'it' | 'ja' | 'ko' | 'fa' | 'pl' | 'pt' | 'ro' | 'ru' | 'sk_SK' | 'es' | 'sv' | 'th' | 'tr' | 'vi'; export interface ISubscription { subscribe(obj: object | null, member: TFunc, singleshot?: boolean): void; unsubscribe(obj: object | null, member: TFunc): void; unsubscribeAll(obj: object | null): void; } export interface IDelegate extends ISubscription { fire: TFunc; } export interface IDestroyable { destroy(): void; } /** * This is the generic type useful for declaring a nominal type, * which does not structurally matches with the base type and * the other types declared over the same base type * * Usage: * @example * type Index = Nominal; * // let i: Index = 42; // this fails to compile * let i: Index = 42 as Index; // OK * @example * type TagName = Nominal; */ export declare type Nominal = T & { [Symbol.species]: Name; }; export interface FormatterParseResult { res: boolean; } export interface ErrorFormatterParseResult extends FormatterParseResult { error?: string; res: false; } export interface SuccessFormatterParseResult extends FormatterParseResult { res: true; suggest?: string; } export interface IFormatter { format(value: any): string; parse?(value: string): ErrorFormatterParseResult | SuccessFormatterParseResult; } export declare type StudyInputValueType = string | number | boolean; export declare type StudyOverrideValueType = string | number | boolean; export interface StudyOverrides { [key: string]: StudyOverrideValueType; } export interface WatchedValueSubscribeOptions { once?: boolean; callWithLast?: boolean; } export interface IWatchedValueReadonly { value(): T; subscribe(callback: (value: T) => void, options?: WatchedValueSubscribeOptions): void; unsubscribe(callback?: ((value: T) => void) | null): void; spawn(): IWatchedValueReadonlySpawn; } export interface IWatchedValueReadonlySpawn extends IWatchedValueReadonly, IDestroyable { } export declare type WatchedValueCallback = (value: T) => void; export interface IWatchedValue extends IWatchedValueReadonly { value(): T; setValue(value: T, forceUpdate?: boolean): void; subscribe(callback: WatchedValueCallback, options?: WatchedValueSubscribeOptions): void; unsubscribe(callback?: WatchedValueCallback | null): void; readonly(): IWatchedValueReadonly; spawn(): IWatchedValueSpawn; } export interface IWatchedValueSpawn extends IWatchedValueReadonlySpawn, IWatchedValue { spawn(): IWatchedValueSpawn; } export declare const enum ConnectionStatus { Connected = 1, Connecting = 2, Disconnected = 3, Error = 4, } export declare const enum OrderType { Limit = 1, Market = 2, Stop = 3, StopLimit = 4, } export declare const enum Side { Buy = 1, Sell = -1, } export declare const enum OrderStatus { Canceled = 1, Filled = 2, Inactive = 3, Placing = 4, Rejected = 5, Working = 6, } export declare const enum ParentType { Order = 1, Position = 2, Trade = 3, } export declare const enum OrderTicketFocusControl { StopLoss = 1, StopPrice = 2, TakeProfit = 3, } export declare const enum NotificationType { Error = 0, Success = 1, } export interface TableRow { priceFormatter?: IFormatter; [name: string]: any; } export interface TableFormatterInputs { value: number | string | Side | OrderType | OrderStatus; prevValue?: number | undefined; row: TableRow; $container: JQuery; priceFormatter?: IFormatter; } export declare type TableElementFormatFunction = (inputs: TableFormatterInputs) => string | JQuery; export interface TableElementFormatter { name: string; format: TableElementFormatFunction; } export declare type StandardFormatterName = 'date' | 'default' | 'fixed' | 'formatPrice' | 'formatPriceForexSup' | 'integerSeparated' | 'localDate' | 'percentage' | 'pips' | 'profit' | 'side' | 'status' | 'symbol' | 'type'; export interface DOMLevel { price: number; volume: number; } export interface DOMData { snapshot: boolean; asks: DOMLevel[]; bids: DOMLevel[]; } export interface QuantityMetainfo { min: number; max: number; step: number; default?: number; } export interface InstrumentInfo { qty: QuantityMetainfo; pipValue: number; pipSize: number; minTick: number; description: string; domVolumePrecision?: number; } export interface CustomFields { [key: string]: any; } export interface PreOrder { symbol: string; brokerSymbol?: string; type?: OrderType; side?: Side; qty: number; status?: OrderStatus; stopPrice?: number; limitPrice?: number; stopLoss?: number; takeProfit?: number; duration?: OrderDuration; } export interface PlacedOrder extends PreOrder, CustomFields { id: string; filledQty?: number; avgPrice?: number; updateTime?: number; takeProfit?: number; stopLoss?: number; type: OrderType; side: Side; status: OrderStatus; } export interface OrderWithParent extends PlacedOrder { parentId: string; parentType: ParentType; } export declare type Order = OrderWithParent | PlacedOrder; export interface Position { id: string; symbol: string; brokerSymbol?: string; qty: number; side: Side; avgPrice: number; [key: string]: any; } export interface Trade extends CustomFields { id: string; date: number; symbol: string; brokerSymbol?: string; qty: number; side: Side; price: number; } export interface Execution extends CustomFields { symbol: string; brokerSymbol?: string; price: number; qty: number; side: Side; time: number; } export interface AccountInfo { id: string; name: string; currency?: string; currencySign?: string; } export interface AccountManagerColumn { id?: string; label: string; className?: string; formatter?: StandardFormatterName | 'orderSettings' | 'posSettings' | string; property?: string; sortProp?: string; modificationProperty?: string; notSortable?: boolean; help?: string; highlightDiff?: boolean; fixedWidth?: boolean; notHideable?: boolean; hideByDefault?: boolean; } export interface SortingParameters { columnId: string; asc?: boolean; } export interface AccountManagerTable { id: string; title?: string; columns: AccountManagerColumn[]; initialSorting?: SortingParameters; changeDelegate: ISubscription<(data: {}) => void>; getData(): Promise<{}[]>; } export interface AccountManagerPage { id: string; title: string; tables: AccountManagerTable[]; } export interface AccountManagerInfo { accountTitle: string; accountsList?: AccountInfo[]; account?: IWatchedValue; summary: AccountManagerSummaryField[]; customFormatters?: TableElementFormatter[]; orderColumns: AccountManagerColumn[]; historyColumns?: AccountManagerColumn[]; positionColumns: AccountManagerColumn[]; tradeColumns?: AccountManagerColumn[]; pages: AccountManagerPage[]; possibleOrderStatuses?: OrderStatus[]; contextMenuActions?(contextMenuEvent: JQueryEventObject, activePageActions: ActionMetaInfo[]): Promise; } export interface TradingQuotes { trade?: number; size?: number; bid?: number; bid_size?: number; ask?: number; ask_size?: number; spread?: number; } export interface ActionDescription { text?: '-' | string; separator?: boolean; shortcut?: string; tooltip?: string; checked?: boolean; checkable?: boolean; enabled?: boolean; externalLink?: boolean; } export interface MenuSeparator extends ActionDescription { separator: boolean; } export interface ActionDescriptionWithCallback extends ActionDescription { action: (a: ActionDescription) => void; } export declare type ActionMetaInfo = ActionDescriptionWithCallback | MenuSeparator; export interface AccountManagerSummaryField { text: string; wValue: IWatchedValueReadonly; formatter?: string; } export interface OrderDurationMetaInfo { hasDatePicker?: boolean; hasTimePicker?: boolean; name: string; value: string; } export interface OrderDuration { /** * type is OrderDurationMetaInfo.value */ type: string; datetime?: number; } export interface BrokerConfigFlags { showQuantityInsteadOfAmount?: boolean; supportOrderBrackets?: boolean; supportPositionBrackets?: boolean; supportTradeBrackets?: boolean; supportTrades?: boolean; supportClosePosition?: boolean; supportCloseTrade?: boolean; supportEditAmount?: boolean; supportLevel2Data?: boolean; supportMultiposition?: boolean; supportPLUpdate?: boolean; supportReducePosition?: boolean; supportReversePosition?: boolean; supportStopLimitOrders?: boolean; supportDemoLiveSwitcher?: boolean; supportCustomPlaceOrderTradableCheck?: boolean; supportMarketBrackets?: boolean; supportSymbolSearch?: boolean; supportModifyDuration?: boolean; supportModifyOrder?: boolean; calculatePLUsingLast?: boolean; requiresFIFOCloseTrades?: boolean; supportBottomWidget?: boolean; /** * @deprecated */ supportBrackets?: boolean; } export interface SingleBrokerMetaInfo { configFlags: BrokerConfigFlags; customNotificationFields?: string[]; durations?: OrderDurationMetaInfo[]; } export interface Brackets { stopLoss?: number; takeProfit?: number; } export interface DefaultContextMenuActionsParams { } export interface DefaultDropdownActionsParams { showFloatingToolbar?: boolean; showDOM?: boolean; tradingProperties?: boolean; selectAnotherBroker?: boolean; disconnect?: boolean; showHowToUse?: boolean; } export interface ITradeContext { symbol: string; displaySymbol: string; value: number | null; formattedValue: string; last: number; } export interface QuotesBase { change: number; change_percent: number; last_price: number; fractional: number; minmov: number; minmove2: number; pricescale: number; description: string; } export interface OrderDialogOptions { customFields?: (TextWithCheckboxFieldMetaInfo | CustomInputFieldMetaInfo)[]; } export interface BaseInputFieldValidatorResult { valid: boolean; } export interface PositiveBaseInputFieldValidatorResult extends BaseInputFieldValidatorResult { valid: true; } export interface NegativeBaseInputFieldValidatorResult extends BaseInputFieldValidatorResult { valid: false; errorMessage: string; } export declare type InputFieldValidatorResult = PositiveBaseInputFieldValidatorResult | NegativeBaseInputFieldValidatorResult; export declare type InputFieldValidator = (value: any) => InputFieldValidatorResult; export interface CustomInputFieldMetaInfo { id: string; title: string; placeHolder: string; value: any; validator?: InputFieldValidator; customInfo?: any; } export interface TextWithCheckboxValue { text: string; checked: boolean; } export interface TextWithCheckboxFieldCustomInfo { checkboxTitle: string; asterix?: boolean; } export declare type TextInputFieldValidator = (value: string) => InputFieldValidatorResult; export interface TextWithCheckboxFieldMetaInfo extends CustomInputFieldMetaInfo { value: TextWithCheckboxValue; customInfo: TextWithCheckboxFieldCustomInfo; validator?: TextInputFieldValidator; } export interface CustomInputFieldsValues { [fieldId: string]: TextWithCheckboxValue | any; } export interface IBrokerCommon { chartContextMenuActions(context: ITradeContext, options?: DefaultContextMenuActionsParams): Promise; isTradable(symbol: string): Promise; connectionStatus(): ConnectionStatus; placeOrder(order: PreOrder, silently?: boolean): Promise; modifyOrder(order: Order, silently?: boolean, focus?: OrderTicketFocusControl): Promise; orders(): Promise; positions(): Promise; trades?(): Promise; executions(symbol: string): Promise; symbolInfo(symbol: string): Promise; accountInfo(): Promise; editPositionBrackets?(positionId: string, focus?: OrderTicketFocusControl, brackets?: Brackets, silently?: boolean): Promise; editTradeBrackets?(tradeId: string, focus?: OrderTicketFocusControl, brackets?: Brackets, silently?: boolean): Promise; accountManagerInfo(): AccountManagerInfo; formatter?(symbol: string): Promise; spreadFormatter?(symbol: string): Promise; } export interface SuggestedQuantity { changed: IDelegate<(symbol: string) => void>; value(symbol: string): Promise; setValue(symbol: string, value: number): void; } export interface IBrokerConnectionAdapterFactory { createDelegate(): IDelegate; createWatchedValue(value?: T): IWatchedValue; } export interface IBrokerConnectionAdapterHost { factory: IBrokerConnectionAdapterFactory; connectionStatusUpdate(status: ConnectionStatus, message?: string): void; defaultFormatter(symbol: string): Promise; numericFormatter(decimalPlaces: number): Promise; defaultContextMenuActions(context: ITradeContext, params?: DefaultContextMenuActionsParams): Promise; defaultDropdownMenuActions(options?: Partial): ActionMetaInfo[]; floatingTradingPanelVisibility(): IWatchedValue; domVisibility(): IWatchedValue; silentOrdersPlacement(): IWatchedValue; patchConfig(config: Partial): void; setDurations(durations: OrderDurationMetaInfo[]): void; orderUpdate(order: Order, isHistoryUpdate?: boolean): void; orderPartialUpdate(id: string, orderChanges: Partial): void; positionUpdate(position: Position, isHistoryUpdate?: boolean): void; positionPartialUpdate(id: string, positionChanges: Partial): void; tradeUpdate(trade: Trade, isHistoryUpdate?: boolean): void; tradePartialUpdate(id: string, tradeChanges: Partial): void; executionUpdate(execution: Execution, isHistoryUpdate?: boolean): void; fullUpdate(): void; realtimeUpdate(symbol: string, data: TradingQuotes): void; plUpdate(positionId: string, pl: number): void; tradePLUpdate(tradeId: string, pl: number): void; equityUpdate(equity: number): void; domeUpdate(symbol: string, equity: DOMData): void; showOrderDialog(order: T, handler: (order: T, customFieldsResult?: CustomInputFieldsValues) => Promise, focus?: OrderTicketFocusControl, options?: OrderDialogOptions): Promise; showCancelOrderDialog(orderId: string, handler: () => void): Promise; showCancelMultipleOrdersDialog(symbol: string, side: Side | undefined, qty: number, handler: () => void): Promise; showCancelBracketsDialog(orderId: string, handler: () => void): Promise; showCancelMultipleBracketsDialog(orderId: string, handler: () => void): Promise; showClosePositionDialog(positionId: string, handler: () => void): Promise; showReversePositionDialog(position: Position, handler: () => void): Promise; showPositionBracketsDialog(position: Position | Trade, brackets: Brackets, focus: OrderTicketFocusControl | null, handler: (brackets: Brackets) => void): Promise; showNotification(title: string, text: string, notificationType?: NotificationType): void; setButtonDropdownActions(descriptions: ActionMetaInfo[]): void; activateBottomWidget(): Promise; showTradingProperties(): void; suggestedQty(): SuggestedQuantity; symbolSnapshot(symbol: string): Promise; } export interface IBrokerWithoutRealtime extends IBrokerCommon { subscribeDOME?(symbol: string): void; unsubscribeDOME?(symbol: string): void; cancelOrder(orderId: string, silently: boolean): Promise; cancelOrders(symbol: string, side: Side | undefined, ordersIds: string[], silently: boolean): Promise; reversePosition?(positionId: string, silently?: boolean): Promise; closePosition(positionId: string, silently: boolean): Promise; closeTrade?(tradeId: string, silently: boolean): Promise; /** * @deprecated Brokers should always send PL and equity updates */ subscribePL?(positionId: string): void; subscribeEquity?(): void; /** * @deprecated */ unsubscribePL?(positionId: string): void; unsubscribeEquity?(): void; } export interface IBrokerTerminal extends IBrokerWithoutRealtime { subscribeRealtime(symbol: string): void; unsubscribeRealtime(symbol: string): void; } export declare type ResolutionString = string; export interface Exchange { value: string; name: string; desc: string; } export interface DatafeedSymbolType { name: string; value: string; } export interface DatafeedConfiguration { exchanges?: Exchange[]; supported_resolutions?: ResolutionString[]; supports_marks?: boolean; supports_time?: boolean; supports_timescale_marks?: boolean; symbols_types?: DatafeedSymbolType[]; } export declare type OnReadyCallback = (configuration: DatafeedConfiguration) => void; export interface IExternalDatafeed { onReady(callback: OnReadyCallback): void; } export interface DatafeedQuoteValues { ch?: number; chp?: number; short_name?: string; exchange?: string; description?: string; lp?: number; ask?: number; bid?: number; spread?: number; open_price?: number; high_price?: number; low_price?: number; prev_close_price?: number; volume?: number; original_name?: string; [valueName: string]: string | number | undefined; } export interface QuoteOkData { s: 'ok'; n: string; v: DatafeedQuoteValues; } export interface QuoteErrorData { s: 'error'; n: string; v: object; } export declare type QuoteData = QuoteOkData | QuoteErrorData; export declare type QuotesCallback = (data: QuoteData[]) => void; export interface IDatafeedQuotesApi { getQuotes(symbols: string[], onDataCallback: QuotesCallback, onErrorCallback: (msg: string) => void): void; subscribeQuotes(symbols: string[], fastSymbols: string[], onRealtimeCallback: QuotesCallback, listenerGUID: string): void; unsubscribeQuotes(listenerGUID: string): void; } export declare type CustomTimezones = 'America/New_York' | 'America/Los_Angeles' | 'America/Chicago' | 'America/Phoenix' | 'America/Toronto' | 'America/Vancouver' | 'America/Argentina/Buenos_Aires' | 'America/El_Salvador' | 'America/Sao_Paulo' | 'America/Bogota' | 'America/Caracas' | 'Europe/Moscow' | 'Europe/Athens' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/London' | 'Europe/Luxembourg' | 'Europe/Madrid' | 'Europe/Paris' | 'Europe/Rome' | 'Europe/Warsaw' | 'Europe/Istanbul' | 'Europe/Zurich' | 'Australia/Sydney' | 'Australia/Brisbane' | 'Australia/Adelaide' | 'Australia/ACT' | 'Asia/Almaty' | 'Asia/Ashkhabad' | 'Asia/Tokyo' | 'Asia/Taipei' | 'Asia/Singapore' | 'Asia/Shanghai' | 'Asia/Seoul' | 'Asia/Tehran' | 'Asia/Dubai' | 'Asia/Kolkata' | 'Asia/Hong_Kong' | 'Asia/Bangkok' | 'Asia/Chongqing' | 'Asia/Jerusalem' | 'Asia/Kuwait' | 'Asia/Muscat' | 'Asia/Qatar' | 'Asia/Riyadh' | 'Pacific/Auckland' | 'Pacific/Chatham' | 'Pacific/Fakaofo' | 'Pacific/Honolulu' | 'America/Mexico_City' | 'Africa/Cairo' | 'Africa/Johannesburg' | 'Asia/Kathmandu' | 'US/Mountain'; export declare type Timezone = 'Etc/UTC' | CustomTimezones; export interface LibrarySymbolInfo { /** * Symbol Name */ name: string; full_name: string; base_name?: [string]; /** * Unique symbol id */ ticker?: string; description: string; type: string; /** * @example "1700-0200" */ session: string; /** * Traded exchange * @example "NYSE" */ exchange: string; listed_exchange: string; timezone: Timezone; /** * Code (Tick) * @example 8/16/.../256 (1/8/100 1/16/100 ... 1/256/100) or 1/10/.../10000000 (1 0.1 ... 0.0000001) */ pricescale: number; /** * The number of units that make up one tick. * @example For example, U.S. equities are quotes in decimals, and tick in decimals, and can go up +/- .01. So the tick increment is 1. But the e-mini S&P futures contract, though quoted in decimals, goes up in .25 increments, so the tick increment is 25. (see also Tick Size) */ minmov: number; fractional?: boolean; /** * @example Quarters of 1/32: pricescale=128, minmovement=1, minmovement2=4 */ minmove2?: number; /** * false if DWM only */ has_intraday?: boolean; /** * An array of resolutions which should be enabled in resolutions picker for this symbol. */ supported_resolutions: ResolutionString[]; /** * @example (for ex.: "1,5,60") - only these resolutions will be requested, all others will be built using them if possible */ intraday_multipliers?: string[]; has_seconds?: boolean; /** * It is an array containing seconds resolutions (in seconds without a postfix) the datafeed builds by itself. */ seconds_multipliers?: string[]; has_daily?: boolean; has_weekly_and_monthly?: boolean; has_empty_bars?: boolean; force_session_rebuild?: boolean; has_no_volume?: boolean; /** * Integer showing typical volume value decimal places for this symbol */ volume_precision?: number; data_status?: 'streaming' | 'endofday' | 'pulsed' | 'delayed_streaming'; /** * Boolean showing whether this symbol is expired futures contract or not. */ expired?: boolean; /** * Unix timestamp of expiration date. */ expiration_date?: number; sector?: string; industry?: string; currency_code?: string; } export interface Bar { time: number; open: number; high: number; low: number; close: number; volume?: number; } export interface SearchSymbolResultItem { symbol: string; full_name: string; description: string; exchange: string; ticker: string; type: string; } export interface HistoryMetadata { noData: boolean; nextTime?: number | null; } export interface MarkCustomColor { color: string; background: string; } export declare type MarkConstColors = 'red' | 'green' | 'blue' | 'yellow'; export interface Mark { id: string | number; time: number; color: MarkConstColors | MarkCustomColor; text: string; label: string; labelFontColor: string; minSize: number; } export interface TimescaleMark { id: string | number; time: number; color: MarkConstColors | string; label: string; tooltip: string[]; } export declare type ResolutionBackValues = 'D' | 'M'; export interface HistoryDepth { resolutionBack: ResolutionBackValues; intervalBack: number; } export declare type SearchSymbolsCallback = (items: SearchSymbolResultItem[]) => void; export declare type ResolveCallback = (symbolInfo: LibrarySymbolInfo) => void; export declare type HistoryCallback = (bars: Bar[], meta: HistoryMetadata) => void; export declare type SubscribeBarsCallback = (bar: Bar) => void; export declare type GetMarksCallback = (marks: T[]) => void; export declare type ServerTimeCallback = (serverTime: number) => void; export declare type DomeCallback = (data: DOMData) => void; export declare type ErrorCallback = (reason: string) => void; export interface IDatafeedChartApi { calculateHistoryDepth?(resolution: ResolutionString, resolutionBack: ResolutionBackValues, intervalBack: number): HistoryDepth | undefined; getMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; getTimescaleMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; /** * This function is called if configuration flag supports_time is set to true when chart needs to know the server time. * The charting library expects callback to be called once. * The time is provided without milliseconds. Example: 1445324591. It is used to display Countdown on the price scale. */ getServerTime?(callback: ServerTimeCallback): void; searchSymbols(userInput: string, exchange: string, symbolType: string, onResult: SearchSymbolsCallback): void; resolveSymbol(symbolName: string, onResolve: ResolveCallback, onError: ErrorCallback): void; getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, rangeStartDate: number, rangeEndDate: number, onResult: HistoryCallback, onError: ErrorCallback, isFirstCall: boolean): void; subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: SubscribeBarsCallback, listenerGuid: string, onResetCacheNeededCallback: () => void): void; unsubscribeBars(listenerGuid: string): void; subscribeDepth?(symbolInfo: LibrarySymbolInfo, callback: DomeCallback): string; unsubscribeDepth?(subscriberUID: string): void; } export interface ChartMetaInfo { id: string; name: string; symbol: string; resolution: ResolutionString; timestamp: number; } export interface ChartData { id: string; name: string; symbol: string; resolution: ResolutionString; content: string; } export interface StudyTemplateMetaInfo { name: string; } export interface StudyTemplateData { name: string; content: string; } export interface IExternalSaveLoadAdapter { getAllCharts(): Promise; removeChart(chartId: string): Promise; saveChart(chartData: ChartData): Promise; getChartContent(chartId: string): Promise; getAllStudyTemplates(): Promise; removeStudyTemplate(studyTemplateInfo: StudyTemplateMetaInfo): Promise; saveStudyTemplate(studyTemplateData: StudyTemplateData): Promise; getStudyTemplateContent(studyTemplateInfo: StudyTemplateMetaInfo): Promise; } export interface RestBrokerMetaInfo { url: string; access_token: string; } export interface AccessListItem { name: string; grayed?: boolean; } export interface AccessList { type: 'black' | 'white'; tools: AccessListItem[]; } export interface NumericFormattingParams { decimal_sign: string; } export declare type AvailableSaveloadVersions = '1.0' | '1.1'; export interface Overrides { [key: string]: string | number | boolean; } export interface WidgetBarParams { details?: boolean; watchlist?: boolean; news?: boolean; watchlist_settings?: { default_symbols: string[]; readonly?: boolean; }; } export interface RssNewsFeedInfo { url: string; name: string; } export declare type RssNewsFeedItem = RssNewsFeedInfo | RssNewsFeedInfo[]; export interface RssNewsFeedParams { default: RssNewsFeedItem; [symbolType: string]: RssNewsFeedItem; } export interface NewsProvider { is_news_generic?: boolean; get_news(symbol: string, callback: (items: NewsItem[]) => void): void; } export interface CustomFormatter { format(date: Date): string; formatLocal(date: Date): string; } export interface CustomFormatters { timeFormatter: CustomFormatter; dateFormatter: CustomFormatter; } export interface TimeFrameItem { text: string; resolution: ResolutionString; description?: string; title?: string; } export interface Favorites { intervals: ResolutionString[]; chartTypes: string[]; } export interface NewsItem { fullDescription: string; link?: string; published: number; shortDescription?: string; source: string; title: string; } export interface LoadingScreenOptions { foregroundColor?: string; backgroundColor?: string; } export interface InitialSettingsMap { [key: string]: string; } export interface ISettingsAdapter { initialSettings?: InitialSettingsMap; setValue(key: string, value: string): void; removeValue(key: string): void; } export declare type IBasicDataFeed = IDatafeedChartApi & IExternalDatafeed; export declare type ThemeName = 'Light' | 'Dark'; export interface ChartingLibraryWidgetOptions { container_id: string; datafeed: IBasicDataFeed | (IBasicDataFeed & IDatafeedQuotesApi); interval: ResolutionString; symbol: string; auto_save_delay?: number; autosize?: boolean; debug?: boolean; disabled_features?: string[]; drawings_access?: AccessList; enabled_features?: string[]; fullscreen?: boolean; height?: number; library_path?: string; locale: LanguageCode; numeric_formatting?: NumericFormattingParams; saved_data?: object; studies_access?: AccessList; study_count_limit?: number; symbol_search_request_delay?: number; timeframe?: string; timezone?: 'exchange' | Timezone; toolbar_bg?: string; width?: number; charts_storage_url?: string; charts_storage_api_version?: AvailableSaveloadVersions; client_id?: string; user_id?: string; load_last_chart?: boolean; studies_overrides?: StudyOverrides; customFormatters?: CustomFormatters; overrides?: Overrides; snapshot_url?: string; indicators_file_name?: string; preset?: 'mobile'; time_frames?: TimeFrameItem[]; custom_css_url?: string; favorites?: Favorites; save_load_adapter?: IExternalSaveLoadAdapter; loading_screen?: LoadingScreenOptions; settings_adapter?: ISettingsAdapter; theme?: ThemeName; } export interface TradingTerminalWidgetOptions extends ChartingLibraryWidgetOptions { brokerConfig?: SingleBrokerMetaInfo; restConfig?: RestBrokerMetaInfo; widgetbar?: WidgetBarParams; rss_news_feed?: RssNewsFeedParams; news_provider?: NewsProvider; brokerFactory?(host: IBrokerConnectionAdapterHost): IBrokerWithoutRealtime | IBrokerTerminal; } export declare type LayoutType = 's' | '2h' | '2-1' | '2v' | '3h' | '3v' | '3s' | '4' | '6' | '8'; export declare type SupportedLineTools = 'text' | 'anchored_text' | 'note' | 'anchored_note' | 'double_curve' | 'arc' | 'icon' | 'arrow_up' | 'arrow_down' | 'arrow_left' | 'arrow_right' | 'price_label' | 'flag' | 'vertical_line' | 'horizontal_line' | 'horizontal_ray' | 'trend_line' | 'trend_angle' | 'arrow' | 'ray' | 'extended' | 'parallel_channel' | 'disjoint_angle' | 'flat_bottom' | 'pitchfork' | 'schiff_pitchfork_modified' | 'schiff_pitchfork' | 'balloon' | 'inside_pitchfork' | 'pitchfan' | 'gannbox' | 'gannbox_square' | 'gannbox_fixed' | 'gannbox_fan' | 'fib_retracement' | 'fib_trend_ext' | 'fib_speed_resist_fan' | 'fib_timezone' | 'fib_trend_time' | 'fib_circles' | 'fib_spiral' | 'fib_speed_resist_arcs' | 'fib_channel' | 'xabcd_pattern' | 'cypher_pattern' | 'abcd_pattern' | 'callout' | 'triangle_pattern' | '3divers_pattern' | 'head_and_shoulders' | 'fib_wedge' | 'elliott_impulse_wave' | 'elliott_triangle_wave' | 'elliott_triple_combo' | 'elliott_correction' | 'elliott_double_combo' | 'cyclic_lines' | 'time_cycles' | 'sine_line' | 'long_position' | 'short_position' | 'forecast' | 'date_range' | 'price_range' | 'date_and_price_range' | 'bars_pattern' | 'ghost_feed' | 'projection' | 'rectangle' | 'rotated_rectangle' | 'ellipse' | 'triangle' | 'polyline' | 'curve' | 'regression_trend' | 'cursor' | 'dot' | 'arrow_cursor' | 'eraser' | 'measure' | 'zoom' | 'brush'; export interface IOrderLineAdapter { remove(): void; onModify(callback: () => void): this; onModify(data: T, callback: (data: T) => void): this; onMove(callback: () => void): this; onMove(data: T, callback: (data: T) => void): this; getPrice(): number; setPrice(value: number): this; getText(): string; setText(value: string): this; getTooltip(): string; setTooltip(value: string): this; getQuantity(): string; setQuantity(value: string): this; getEditable(): boolean; setEditable(value: boolean): this; getExtendLeft(): boolean; setExtendLeft(value: boolean): this; getLineLength(): number; setLineLength(value: number): this; getLineStyle(): number; setLineStyle(value: number): this; getLineWidth(): number; setLineWidth(value: number): this; getBodyFont(): string; setBodyFont(value: string): this; getQuantityFont(): string; setQuantityFont(value: string): this; getLineColor(): string; setLineColor(value: string): this; getBodyBorderColor(): string; setBodyBorderColor(value: string): this; getBodyBackgroundColor(): string; setBodyBackgroundColor(value: string): this; getBodyTextColor(): string; setBodyTextColor(value: string): this; getQuantityBorderColor(): string; setQuantityBorderColor(value: string): this; getQuantityBackgroundColor(): string; setQuantityBackgroundColor(value: string): this; getQuantityTextColor(): string; setQuantityTextColor(value: string): this; getCancelButtonBorderColor(): string; setCancelButtonBorderColor(value: string): this; getCancelButtonBackgroundColor(): string; setCancelButtonBackgroundColor(value: string): this; getCancelButtonIconColor(): string; setCancelButtonIconColor(value: string): this; } export interface IPositionLineAdapter { remove(): void; onClose(callback: () => void): this; onClose(data: T, callback: (data: T) => void): this; onModify(callback: () => void): this; onModify(data: T, callback: (data: T) => void): this; onReverse(callback: () => void): this; onReverse(data: T, callback: (data: T) => void): this; getPrice(): number; setPrice(value: number): this; getText(): string; setText(value: string): this; getTooltip(): string; setTooltip(value: string): this; getQuantity(): string; setQuantity(value: string): this; getExtendLeft(): boolean; setExtendLeft(value: boolean): this; getLineLength(): number; setLineLength(value: number): this; getLineStyle(): number; setLineStyle(value: number): this; getLineWidth(): number; setLineWidth(value: number): this; getBodyFont(): string; setBodyFont(value: string): this; getQuantityFont(): string; setQuantityFont(value: string): this; getLineColor(): string; setLineColor(value: string): this; getBodyBorderColor(): string; setBodyBorderColor(value: string): this; getBodyBackgroundColor(): string; setBodyBackgroundColor(value: string): this; getBodyTextColor(): string; setBodyTextColor(value: string): this; getQuantityBorderColor(): string; setQuantityBorderColor(value: string): this; getQuantityBackgroundColor(): string; setQuantityBackgroundColor(value: string): this; getQuantityTextColor(): string; setQuantityTextColor(value: string): this; getReverseButtonBorderColor(): string; setReverseButtonBorderColor(value: string): this; getReverseButtonBackgroundColor(): string; setReverseButtonBackgroundColor(value: string): this; getReverseButtonIconColor(): string; setReverseButtonIconColor(value: string): this; getCloseButtonBorderColor(): string; setCloseButtonBorderColor(value: string): this; getCloseButtonBackgroundColor(): string; setCloseButtonBackgroundColor(value: string): this; getCloseButtonIconColor(): string; setCloseButtonIconColor(value: string): this; } export declare type Direction = 'buy' | 'sell'; export interface IExecutionLineAdapter { remove(): void; getPrice(): number; setPrice(value: number): this; getTime(): number; setTime(value: number): this; getDirection(): Direction; setDirection(value: Direction): this; getText(): string; setText(value: string): this; getTooltip(): string; setTooltip(value: string): this; getArrowHeight(): number; setArrowHeight(value: number): this; getArrowSpacing(): number; setArrowSpacing(value: number): this; getFont(): string; setFont(value: string): this; getTextColor(): string; setTextColor(value: string): this; getArrowColor(): string; setArrowColor(value: string): this; } export declare type StudyInputId = Nominal; export interface StudyInputInfo { id: StudyInputId; name: string; type: string; localizedName: string; } export interface StudyInputValueItem { id: StudyInputId; value: StudyInputValueType; } export declare type StudyPriceScale = 'left' | 'right' | 'no-scale' | 'as-series'; export interface IStudyApi { isUserEditEnabled(): boolean; setUserEditEnabled(enabled: boolean): void; getInputsInfo(): StudyInputInfo[]; getInputValues(): StudyInputValueItem[]; setInputValues(values: StudyInputValueItem[]): void; mergeUp(): void; mergeDown(): void; unmergeUp(): void; unmergeDown(): void; changePriceScale(newPriceScale: StudyPriceScale): void; isVisible(): boolean; setVisible(visible: boolean): void; bringToFront(): void; sendToBack(): void; applyOverrides(overrides: TOverrides): void; } export interface TimePoint { time: number; } export interface StickedPoint extends TimePoint { channel: 'open' | 'high' | 'low' | 'close'; } export interface PricedPoint extends TimePoint { price: number; } export declare type ShapePoint = StickedPoint | PricedPoint | TimePoint; export interface ILineDataSourceApi { isSelectionEnabled(): boolean; setSelectionEnabled(enable: boolean): void; isSavingEnabled(): boolean; setSavingEnabled(enable: boolean): void; isShowInObjectsTreeEnabled(): boolean; setShowInObjectsTreeEnabled(enabled: boolean): void; isUserEditEnabled(): boolean; setUserEditEnabled(enabled: boolean): void; bringToFront(): void; sendToBack(): void; getProperties(): object; setProperties(newProperties: object): void; getPoints(): PricedPoint[]; setPoints(points: ShapePoint[]): void; } export declare const enum PriceScaleMode { Normal = 0, Log = 1, Percentage = 2, } export interface IPriceScaleApi { getMode(): PriceScaleMode; setMode(newMode: PriceScaleMode): void; } export interface IPaneApi { hasMainSeries(): boolean; getLeftPriceScale(): IPriceScaleApi; getRightPriceScale(): IPriceScaleApi; getMainSourcePriceScale(): IPriceScaleApi | null; } export interface CrossHairMovedEventParams { time: number; price: number; } export interface VisibleTimeRange { from: number; to: number; } export interface VisiblePriceRange { from: number; to: number; } export declare type ChartActionId = 'chartProperties' | 'compareOrAdd' | 'scalesProperties' | 'tmzProperties' | 'paneObjectTree' | 'insertIndicator' | 'symbolSearch' | 'changeInterval' | 'timeScaleReset' | 'chartReset' | 'seriesHide' | 'studyHide' | 'lineToggleLock' | 'lineHide' | 'showLeftAxis' | 'showRightAxis' | 'scaleSeriesOnly' | 'drawingToolbarAction' | 'magnetAction' | 'stayInDrawingModeAction' | 'hideAllDrawingsAction' | 'hideAllMarks' | 'showCountdown' | 'showSeriesLastValue' | 'showSymbolLabelsAction' | 'showStudyLastValue' | 'showStudyPlotNamesAction' | 'undo' | 'redo' | 'paneRemoveAllStudiesDrawingTools'; export declare const enum SeriesStyle { Bars = 0, Candles = 1, Line = 2, Area = 3, HeikenAshi = 8, HollowCandles = 9, Renko = 4, Kagi = 5, PointAndFigure = 6, LineBreak = 7, } export declare type EntityId = Nominal; export interface EntityInfo { id: EntityId; name: string; } export interface CreateStudyOptions { checkLimit?: boolean; priceScale?: StudyPriceScale; } export interface CreateShapeOptions { shape?: 'arrow_up' | 'arrow_down' | 'flag' | 'vertical_line' | 'horizontal_line'; text?: string; lock?: boolean; disableSelection?: boolean; disableSave?: boolean; disableUndo?: boolean; overrides?: TOverrides; zOrder?: 'top' | 'bottom'; showInObjectsTree?: boolean; } export interface CreateStudyTemplateOptions { saveInterval?: boolean; } export interface SymbolExt { symbol: string; full_name: string; exchange: string; description: string; type: string; } export interface CreateTradingPrimitiveOptions { disableUndo?: boolean; } export interface IChartWidgetApi { onDataLoaded(): ISubscription<() => void>; onSymbolChanged(): ISubscription<() => void>; onIntervalChanged(): ISubscription<(interval: ResolutionString, timeFrameParameters: { timeframe?: string; }) => void>; onVisibleRangeChanged(): ISubscription<() => void>; dataReady(callback: () => void): boolean; crossHairMoved(callback: (params: CrossHairMovedEventParams) => void): void; setVisibleRange(range: VisibleTimeRange, callback: () => void): void; setSymbol(symbol: string, callback: () => void): void; setResolution(resolution: ResolutionString, callback: () => void): void; resetData(): void; executeActionById(actionId: ChartActionId): void; getCheckableActionState(actionId: ChartActionId): boolean; refreshMarks(): void; clearMarks(): void; setChartType(type: SeriesStyle): void; getAllShapes(): EntityInfo[]; getAllStudies(): EntityInfo[]; /** * @deprecated Use shape/study API instead ([getStudyById] / [getShapeById]) */ setEntityVisibility(entityId: EntityId, isVisible: boolean): void; createStudy(name: string, forceOverlay: boolean, lock?: boolean, inputs?: TStudyInputs[], callback?: (entityId: EntityId) => void, overrides?: TOverrides, options?: CreateStudyOptions): EntityId | null; getStudyById(entityId: EntityId): IStudyApi; createShape(point: ShapePoint, options: CreateShapeOptions): EntityId | null; createMultipointShape(points: ShapePoint[], options: CreateShapeOptions): EntityId | null; getShapeById(entityId: EntityId): ILineDataSourceApi; removeEntity(entityId: EntityId): void; removeAllShapes(): void; removeAllStudies(): void; createStudyTemplate(options: CreateStudyTemplateOptions): object; applyStudyTemplate(template: object): void; createOrderLine(options: CreateTradingPrimitiveOptions): IOrderLineAdapter; createPositionLine(options: CreateTradingPrimitiveOptions): IPositionLineAdapter; createExecutionShape(options: CreateTradingPrimitiveOptions): IExecutionLineAdapter; symbol(): string; symbolExt(): SymbolExt; resolution(): ResolutionString; getVisibleRange(): VisibleTimeRange; getVisiblePriceRange(): VisiblePriceRange; priceFormatter(): IFormatter; chartType(): SeriesStyle; setTimezone(timezone: 'exchange' | Timezone): void; getPanes(): IPaneApi[]; } export interface WatchListSymbolList extends WatchListSymbolListData { id: string; } export interface WatchListSymbolListData { symbols: string[]; title: string; } export interface WatchListSymbolListMap { [listId: string]: WatchListSymbolList; } export declare type WatchListSymbolListAddedCallback = (listId: string, symbols: string[]) => void; export declare type WatchListSymbolListRemovedCallback = (listId: string) => void; export declare type WatchListSymbolListRenamedCallback = (listId: string, oldName: string, newName: string) => void; export declare type EditObjectDialogObjectType = 'mainSeries' | 'drawing' | 'study' | 'other'; export interface EditObjectDialogEventParams { objectType: EditObjectDialogObjectType; scriptTitle: string; } export interface MouseEventParams { clientX: number; clientY: number; pageX: number; pageY: number; screenX: number; screenY: number; } export interface StudyOrDrawingAddedToChartEventParams { value: string; } export declare type EmptyCallback = () => void; export interface SubscribeEventsMap { toggle_sidebar: (isHidden: boolean) => void; indicators_dialog: EmptyCallback; toggle_header: (isHidden: boolean) => void; edit_object_dialog: (params: EditObjectDialogEventParams) => void; chart_load_requested: (savedData: object) => void; chart_loaded: EmptyCallback; mouse_down: (params: MouseEventParams) => void; mouse_up: (params: MouseEventParams) => void; drawing: (params: StudyOrDrawingAddedToChartEventParams) => void; study: (params: StudyOrDrawingAddedToChartEventParams) => void; undo: EmptyCallback; redo: EmptyCallback; reset_scales: EmptyCallback; compare_add: EmptyCallback; add_compare: EmptyCallback; 'load_study template': EmptyCallback; onTick: (tick: Bar) => void; onAutoSaveNeeded: EmptyCallback; onScreenshotReady: (url: string) => void; onMarkClick: (markId: Mark['id']) => void; onTimescaleMarkClick: (markId: TimescaleMark['id']) => void; onSelectedLineToolChanged: EmptyCallback; layout_about_to_be_changed: (newLayoutType: LayoutType) => void; layout_changed: EmptyCallback; activeChartChanged: (chartIndex: number) => void; } export interface SaveChartToServerOptions { chartName?: string; defaultChartName?: string; } export interface WatchListApi { defaultList(): string[]; getList(id?: string): string[] | null; getAllLists(): WatchListSymbolListMap | null; getActiveListId(): string | null; setList(symbols: string[]): void; updateList(listId: string, symbols: string[]): void; renameList(listId: string, newName: string): void; createList(listName?: string, symbols?: string[]): WatchListSymbolList | null; saveList(list: WatchListSymbolList): boolean; deleteList(listId: string): void; onListChanged(): ISubscription; onActiveListChanged(): ISubscription; onListAdded(): ISubscription; onListRemoved(): ISubscription; onListRenamed(): ISubscription; } export interface GrayedObject { type: 'drawing' | 'study'; name: string; } export interface ContextMenuItem { position: 'top' | 'bottom'; text: string; click: EmptyCallback; } export interface DialogParams { title: string; body: string; callback: CallbackType; } export interface SymbolIntervalResult { symbol: string; interval: ResolutionString; } export interface SaveLoadChartRecord { id: string; name: string; image_url: string; modified_iso: number; short_symbol: string; interval: ResolutionString; } export interface CreateButtonOptions { align: 'right' | 'left'; } export interface IChartingLibraryWidget { onChartReady(callback: EmptyCallback): void; onGrayedObjectClicked(callback: (obj: GrayedObject) => void): void; onShortcut(shortCut: string, callback: EmptyCallback): void; subscribe(event: EventName, callback: SubscribeEventsMap[EventName]): void; unsubscribe(event: EventName, callback: SubscribeEventsMap[EventName]): void; chart(index?: number): IChartWidgetApi; setLanguage(lang: LanguageCode): void; setSymbol(symbol: string, interval: ResolutionString, callback: EmptyCallback): void; remove(): void; closePopupsAndDialogs(): void; selectLineTool(linetool: SupportedLineTools): void; selectedLineTool(): SupportedLineTools; save(callback: (state: object) => void): void; load(state: object): void; getSavedCharts(callback: (chartRecords: SaveLoadChartRecord[]) => void): void; loadChartFromServer(chartRecord: SaveLoadChartRecord): void; saveChartToServer(onComplete?: EmptyCallback, onFail?: EmptyCallback, saveAsSnapshot?: false, options?: SaveChartToServerOptions): void; removeChartFromServer(chartId: string, onCompleteCallback: EmptyCallback): void; onContextMenu(callback: (unixTime: number, price: number) => ContextMenuItem[]): void; createButton(options?: CreateButtonOptions): JQuery; showNoticeDialog(params: DialogParams<() => void>): void; showConfirmDialog(params: DialogParams<(confirmed: boolean) => void>): void; showLoadChartDialog(): void; showSaveAsChartDialog(): void; symbolInterval(): SymbolIntervalResult; mainSeriesPriceFormatter(): IFormatter; getIntervals(): string[]; getStudiesList(): string[]; addCustomCSSFile(url: string): void; applyOverrides(overrides: TOverrides): void; applyStudiesOverrides(overrides: object): void; watchList(): WatchListApi; activeChart(): IChartWidgetApi; chartsCount(): number; layout(): LayoutType; setLayout(layout: LayoutType): void; changeTheme(themeName: ThemeName): void; takeScreenshot(): void; lockAllDrawingTools(): IWatchedValue; } export interface ChartingLibraryWidgetConstructor { new (options: ChartingLibraryWidgetOptions | TradingTerminalWidgetOptions): IChartingLibraryWidget; } export declare function version(): string; export declare function onready(callback: () => void): void; export declare const widget: ChartingLibraryWidgetConstructor; export as namespace TradingView;