import Emitter from 'tiny-emitter'; import type { DatafeedConfiguration, IBasicDataFeed } from '../charting_library'; import type { Store } from '../store/store.interface'; import type { Candle, ExchangeAccount, ExchangeOptions, OHLCVOptions, Order, OrderBook, PlaceOrderOpts, UpdateOrderOpts } from '../types'; import { LogSeverity } from '../types'; export interface Exchange { name: string; store: Store; emitter: Emitter.TinyEmitter; options: ExchangeOptions; isDisposed: boolean; on: Emitter.TinyEmitter['on']; once: Emitter.TinyEmitter['once']; off: Emitter.TinyEmitter['off']; dispose: () => void; getAccount: () => Promise; validateAccount: () => Promise; start: () => Promise; nuke: (tries?: number) => Promise; changePositionMode: (hedged: boolean) => Promise; setLeverage: (symbol: string, leverage: number) => Promise; setAllLeverage: (leverage: number) => Promise; placeOrder: (opts: PlaceOrderOpts) => Promise; placeOrders: (orders: PlaceOrderOpts[]) => Promise; updateOrder: (opts: UpdateOrderOpts) => Promise; cancelOrders: (orders: Order[]) => Promise; cancelSymbolOrders: (symbol: string) => Promise; cancelAllOrders: () => Promise; fetchOHLCV: (opts: OHLCVOptions) => Promise; listenOHLCV: (o: OHLCVOptions, c: (c: Candle) => void) => () => void; listenOrderBook: (s: string, c: (o: OrderBook) => void) => () => void; getDatafeedAPI: (customConfig?: DatafeedConfiguration) => IBasicDataFeed; } export declare class BaseExchange implements Exchange { name: string; store: Store; options: ExchangeOptions; emitter: Emitter.TinyEmitter; isDisposed: boolean; isNuking: boolean; on: Emitter.TinyEmitter['on']; once: Emitter.TinyEmitter['once']; off: Emitter.TinyEmitter['off']; constructor(opts: ExchangeOptions, store: Store); onWSPublicClose: () => void; getAccount: () => Promise; validateAccount: () => Promise; log: (message: string, severity?: LogSeverity) => void; start: () => Promise; setLeverage: (_symbol: string, _leverage: number) => Promise; changePositionMode: (_hedged: boolean) => Promise; setAllLeverage: (inputLeverage: number) => Promise; placeOrder: (_opts: PlaceOrderOpts) => Promise; placeOrders: (orders: PlaceOrderOpts[]) => Promise; updateOrder: ({ order, update }: UpdateOrderOpts) => Promise; cancelOrders: (_orders: Order[]) => Promise; cancelSymbolOrders: (_symbol: string) => Promise; cancelAllOrders: () => Promise; fetchOHLCV: (_opts: OHLCVOptions) => Promise; listenOHLCV: (_opts: OHLCVOptions, _callback: (candle: Candle) => void) => () => void; listenOrderBook: (_symbol: string, _callback: (orderBook: OrderBook) => void) => () => void; deriveAlgoOrdersFromNormalOrdersOpts: (opts: PlaceOrderOpts[]) => PlaceOrderOpts[]; nuke: (tries?: number) => Promise; getDatafeedAPI: (customConfig?: DatafeedConfiguration) => IBasicDataFeed; dispose(): void; }