UNPKG

binance-api-client

Version:

A wrapper which can be used to interact with Binance's API. Entirely developed in TypeScript.

144 lines (121 loc) 4.01 kB
import { SymbolStatus } from "../../enums/SymbolStatus"; import { OrderType } from "../../enums/OrderType"; import { PriceFilter } from "../filter/PriceFilter"; import { FilterType } from "../../enums/FilterType"; import { LotSizeFilter } from "../filter/LotSizeFilter"; import { MinimumNotionalFilter } from "../filter/MinimumNotionalFilter"; import { MaxOrdersFilter } from "../filter/MaxOrdersFilter"; import { MaxAlgoOrdersFilter } from "../filter/MaxAlgoOrdersFilter"; import { SymbolFilter } from "../filter/abstraction/SymbolFilter"; /** * Represents a single symbol. */ export class Symbol { private _name: string; private _status: SymbolStatus; private _baseAsset: string; private _baseAssetPrecision: number; private _quoteAsset: string; private _quoteAssetPrecision: number; private _orderTypes: OrderType[]; private _icebergAllowed: boolean; private _filters: SymbolFilter[]; constructor(json: any) { this._name = json.symbol; this._status = SymbolStatus[json.status as keyof typeof SymbolStatus]; this._baseAsset = json.baseAsset; this._baseAssetPrecision = json.baseAssetPrecision; this._quoteAsset = json.quoteAsset; this._quoteAssetPrecision = json.quotePrecision; this._icebergAllowed = json.icebergAllowed; this._orderTypes = []; for (const orderType of json.orderTypes) { this._orderTypes.push( OrderType[orderType as keyof typeof OrderType] ); } this._filters = []; for (const jsonFilter of json.filters) { let filter: SymbolFilter; switch ( FilterType[jsonFilter.filterType as keyof typeof FilterType] ) { case FilterType.PRICE_FILTER: { filter = new PriceFilter(jsonFilter); break; } case FilterType.LOT_SIZE: { filter = new LotSizeFilter(jsonFilter); break; } case FilterType.MIN_NOTIONAL: { filter = new MinimumNotionalFilter(jsonFilter); break; } case FilterType.MAX_NUM_ORDERS: { filter = new MaxOrdersFilter(jsonFilter); break; } case FilterType.MAX_ALGO_ORDERS: { filter = new MaxAlgoOrdersFilter(jsonFilter); break; } } this._filters.push(filter); } } get name(): string { return this._name; } set name(value: string) { this._name = value; } get status(): SymbolStatus { return this._status; } set status(value: SymbolStatus) { this._status = value; } get baseAsset(): string { return this._baseAsset; } set baseAsset(value: string) { this._baseAsset = value; } get baseAssetPrecision(): number { return this._baseAssetPrecision; } set baseAssetPrecision(value: number) { this._baseAssetPrecision = value; } get quoteAsset(): string { return this._quoteAsset; } set quoteAsset(value: string) { this._quoteAsset = value; } get quoteAssetPrecision(): number { return this._quoteAssetPrecision; } set quoteAssetPrecision(value: number) { this._quoteAssetPrecision = value; } get orderTypes(): OrderType[] { return this._orderTypes; } set orderTypes(value: OrderType[]) { this._orderTypes = value; } get icebergAllowed(): boolean { return this._icebergAllowed; } set icebergAllowed(value: boolean) { this._icebergAllowed = value; } get filters(): SymbolFilter[] { return this._filters; } set filters(value: SymbolFilter[]) { this._filters = value; } }