export type IsoString = string;
export type ClientParams = {
    symbol: string;
    ccy: string;
    account: any;
    options: any;
};
export declare enum ClientSettings {
    MaxFills = 200,
    OrderbookLength = 20,
    GTT = 300,
    ListLenths = 120,
    GoodTillTime = 2419200,
    OrderInterval = 1,
    OrderInterval2 = 2
}
export type DydxAccount = {
    address: string;
    subaccount: number;
    privateKey?: string;
    mnemonic: string;
};
export type OkxAccount = {
    apiKey: string;
    passphrase: string;
    secretKey: string;
    formally: boolean;
};
export type PriceLevel = {
    price: number;
    size: number;
};
export interface Orderbook {
    bids: PriceLevel[];
    asks: PriceLevel[];
}
export declare enum CandleResolution {
    MIN1 = "1MIN",
    MIN5 = "5MINS",
    MIN15 = "15MINS",
    MIN30 = "30MINS",
    HOUR1 = "1HOUR",
    HOUR4 = "4HOURS",
    DAY1 = "1DAY"
}
export interface Candle {
    startedAt: string;
    ticker: string;
    resolution: CandleResolution;
    low: number;
    high: number;
    open: number;
    close: number;
    baseTokenVolume: number;
    usdVolume: number;
    trades: string;
    startingOpenInterest: number;
    id: string;
}
export declare enum PositionSide {
    LONG = "LONG",
    SHORT = "SHORT"
}
export interface PositionData {
    symbol: string;
    side: PositionSide | null;
    size: number;
}
export declare enum PositionStatus {
    OPEN = "OPEN",
    CLOSED = "CLOSED",
    LIQUIDATED = "LIQUIDATED"
}
export declare enum OrderSide {
    BUY = "BUY",
    SELL = "SELL"
}
export declare enum OrderType {
    LIMIT = "LIMIT",
    MARKET = "MARKET",
    STOP_LIMIT = "STOP_LIMIT",
    TAKE_PROFIT_LIMIT = "TAKE_PROFIT",
    STOP_MARKET = "STOP_MARKET",
    TAKE_PROFIT_MARKET = "TAKE_PROFIT_MARKET"
}
export declare enum OrderTimeInForce {
    GTT = "GTT",
    IOC = "IOC",
    FOK = "FOK"
}
export declare enum OrderStatus {
    BEST_EFFORT_OPENED = "BEST_EFFORT_OPENED",
    OPEN = "OPEN",
    PARTIAL = "PARTIALLY_FILLED",
    FILLED = "FILLED",
    BEST_EFFORT_CANCELED = "BEST_EFFORT_CANCELED",
    CANCELED = "CANCELED"
}
export interface Order {
    id: string;
    account: string;
    subaccountId: string;
    clientId: number;
    side: OrderSide;
    size: number;
    ticker: string;
    price: number;
    type: OrderType;
    timeInForce: OrderTimeInForce;
    postOnly?: boolean;
    reduceOnly: boolean;
    status: OrderStatus;
    orderFlags: string;
    totalFilled?: number;
    filledPrice?: number;
    fee: number;
    goodTilBlock?: number;
    goodTilBlockTime?: number;
    createdAtHeight?: number;
    clientMetadata: string;
    triggerPrice?: string;
    updatedAt?: IsoString;
    updatedAtHeight?: number;
}
export interface Fill {
    id: string;
    account: string;
    subaccountId: string;
    orderId: string;
    side: OrderSide;
    size: number;
    type: OrderType;
    ticker: string;
    price: number;
    fee: number;
    createdAt?: IsoString;
    quoteAmount: number;
}
export declare enum SubTypes {
    Account = "account",
    Position = "position",
    Order = "order",
    Deal = "deal",
    Tick = "tick",
    Candles = "candles",
    Orderbook = "orderbook",
    Trades = "trades"
}
export type CallBackFuncs = {
    accountFunc?: (accountInfo: AccountInfo) => Promise<void>;
    positionFunc?: (positions: PositionData[]) => Promise<void>;
    orderFunc?: (order: Order) => Promise<void>;
    fillFunc?: (fill: Fill) => Promise<void>;
    tickFunc?: (price: number) => Promise<void>;
    candleFunc?: (candle: Candle, resolution: CandleResolution) => Promise<void>;
    orderBookFunc?: () => Promise<void>;
    tradesFunc?: () => Promise<void>;
};
export interface AccountInfo {
    account: string;
    subaccount: number;
    equity: number;
    balance: number;
    positions: PositionData[];
    asset: number;
}
