import { AccountInfo, CallBackFuncs, Candle, CandleResolution, ClientParams, Fill, Order, Orderbook, OrderSide, SubTypes } from "./context";
export interface Client {
    running: boolean;
    getPrice(): number;
    getOrderbook(): Orderbook;
    getCandles(resolution: CandleResolution): Candle[];
    getAccountInfo(): AccountInfo;
    initialize(): void;
    subscribe(subTypes: SubTypes, callback: (price: number) => void): void;
    subscribe(subTypes: SubTypes, callback: (order: Order) => void): void;
    subscribe(subTypes: SubTypes, callback: (fill: Fill) => void): void;
    subscribeCandle(resolution: CandleResolution, callback: (candle: Candle, resolution: CandleResolution) => void): void;
    shortTermOrder?(clientId: number, side: OrderSide, price: number, size: number): void;
    buy(clientId: number, price: number, size: number): void;
    sell(clientId: number, price: number, size: number): void;
    close(clientId: number, side: OrderSide, price: number, size: number): void;
    buyLimit(clientId: number, price: number, size: number): void;
    sellLimit(clientId: number, price: number, size: number): void;
    closeLimit(clientId: number, side: OrderSide, price: number, size: number, goodTillTime: number): void;
    cancel(order: Order): void;
    destroy(): void;
}
export declare abstract class AbstractClient implements Client {
    running: boolean;
    protected symbol: string;
    protected ccy: string;
    protected clientCallBackFuncs: CallBackFuncs;
    protected clientCandleMap: Map<CandleResolution, number>;
    constructor(clientParams: ClientParams);
    abstract getPrice(): number;
    abstract getOrderbook(): Orderbook;
    abstract getCandles(resolution: CandleResolution): Candle[];
    abstract getAccountInfo(): AccountInfo;
    initialize(): Promise<void>;
    subscribe(subTypes: SubTypes, callback: any): void;
    subscribeCandle(resolution: any, callback: (candle: Candle, resolution: CandleResolution) => void): void;
    abstract buy(clientId: number, price: number, size: number): void;
    abstract sell(clientId: number, price: number, size: number): void;
    abstract close(clientId: number, side: OrderSide, price: number, size: number): void;
    abstract buyLimit(clientId: number, price: number, size: number): void;
    abstract sellLimit(clientId: number, price: number, size: number): void;
    abstract closeLimit(clientId: number, side: OrderSide, price: number, size: number, goodTillTime: number): void;
    abstract cancel(order: Order): void;
    destroy(): void;
}
export declare enum ClientSettings {
    MaxFills = 200,
    OrderbookLength = 20,
    GTT = 300,
    ListLenths = 120,
    GoodTillTime = 2419200,
    OrderInterval = 1,
    OrderInterval2 = 2
}
export declare const isoToEpochSeconds: (isoTime: string) => number;
export declare const isObjectEmpty: (obj: any) => boolean;
export declare const conlog: (...message: any[]) => Promise<void>;
export declare const conerr: (...message: any[]) => Promise<void>;
