import { BinanceApiClient, ExchangeInfo, RateLimit, RateLimitType } from "binance-api-client"; import { isNullOrUndefined } from "util"; import * as jsonContext from "./../input.json"; import { Context } from "../models/Context"; export class ResourcesManager { private static _apiClient: BinanceApiClient; private static _context: Context; private static _exchangeInfo: ExchangeInfo; public static get apiClient(): BinanceApiClient { if( isNullOrUndefined( this._apiClient ) ) { this._apiClient = new BinanceApiClient( process.env.BINANCE_API_KEY, process.env.BINANCE_API_SECRET ); } return this._apiClient; } public static get context(): Context { if( isNullOrUndefined( this._context ) ) { this._context = new Context( jsonContext ); } return this._context; } public static async getRequestsLimit(): Promise< RateLimit > { if( isNullOrUndefined( this._exchangeInfo ) ) { this._exchangeInfo = await this.apiClient.getExchangeInfo(); } return this._exchangeInfo.rateLimits.find( ( rateLimit: RateLimit ) => { return rateLimit.type === RateLimitType.REQUESTS; } ); } }