@nexex/orderbook
Version:
61 lines (60 loc) • 2.38 kB
TypeScript
import { Dex } from '@nexex/api';
import { OrderbookEvent, OrderbookOrder, OrderSide, PlainDexOrder } from '@nexex/types';
import { Market, OrderAggregate, OrderbookAggregate } from '@nexex/types/orderbook';
import BigNumber from 'bignumber.js';
import { Subject } from 'rxjs';
import { ObConfig } from '../global/global.model';
import { OrderService } from '../order/order.service';
import { Orderbook } from './orderbook.types';
export declare class OrderbookService {
private orderService;
private dex;
private config;
private events$;
private ready;
private orderbookMap;
constructor(orderService: OrderService, dex: Dex, config: ObConfig, events$: Subject<OrderbookEvent>);
whenReady(): Promise<void>;
/**
*
* @param baseTokenAddr
* @param quoteTokenAddr
* @throws error
*/
getOrderbook(baseTokenAddr: string, quoteTokenAddr: string): Orderbook;
/**
*
* @param marketId
* @throws error
*/
getOrderbookById(marketId: string): Orderbook;
getOrderbooks(): Orderbook[];
getMarkets(): Promise<Market[]>;
/**
*
* @param order
* @throws OrderbookNotExist
*/
addOrder(order: OrderbookOrder): string;
findOrderMarket(makerTokenAddress: string, takerTokenAddress: string): Orderbook;
updateBalance(marketId: string, orderHash: string, side: OrderSide, baseAmount: BigNumber, quoteAmount: BigNumber, lastUpdate: Date): void;
delistOrder(marketId: string, orderHash: string, side: OrderSide): void;
validateOrder(plainOrder: PlainDexOrder): Promise<OrderbookOrder>;
getSnapshot(marketId: string, limit: number, minimal: boolean): Promise<{
bids: unknown[];
asks: unknown[];
}>;
queryOrderAggregateByPrice(marketId: string, side: OrderSide, price: string | BigNumber, decimals: number): Promise<OrderAggregate>;
buildFillUpToTx(marketId: string, side: OrderSide, orderHashs: string[]): Promise<PlainDexOrder[]>;
topOrders(marketId: string, limit: number, decimals?: number): Promise<OrderbookAggregate>;
/**
* 1) get market list from config
* 2) load orders of each market from db
* 3) register listener of ipfs for each market
*/
protected init(): Promise<void>;
private topBidOrders;
private topAskOrders;
private loadOrderbook;
private getTokenAddress;
}