binance
Version:
Professional Node.js & JavaScript SDK for Binance REST APIs & WebSockets, with TypeScript & end-to-end tests.
64 lines (63 loc) • 2.81 kB
TypeScript
import { AxiosRequestConfig, Method } from 'axios';
import { BinanceBaseUrlKey } from '../types/shared';
import { GenericAPIResponse, RestClientOptions } from './requestUtils';
type ApiLimitHeader = 'x-mbx-used-weight' | 'x-mbx-used-weight-1m' | 'x-sapi-used-ip-weight-1m' | 'x-mbx-order-count-1s' | 'x-mbx-order-count-10s' | 'x-mbx-order-count-1m' | 'x-mbx-order-count-1h' | 'x-mbx-order-count-1d';
export default abstract class BaseRestClient {
private timeOffset;
private syncTimePromise;
private options;
private baseUrl;
private globalRequestOptions;
private key;
private secret;
private baseUrlKey;
private beautifier;
apiLimitTrackers: Record<ApiLimitHeader, number>;
apiLimitLastUpdated: number;
constructor(baseUrlKey: BinanceBaseUrlKey, options?: RestClientOptions, requestOptions?: AxiosRequestConfig);
abstract getServerTime(baseUrlKeyOverride?: BinanceBaseUrlKey): Promise<number>;
getBaseUrlKey(): BinanceBaseUrlKey;
getRateLimitStates(): {
lastUpdated: number;
"x-mbx-used-weight": number;
"x-mbx-used-weight-1m": number;
"x-sapi-used-ip-weight-1m": number;
"x-mbx-order-count-1s": number;
"x-mbx-order-count-10s": number;
"x-mbx-order-count-1m": number;
"x-mbx-order-count-1h": number;
"x-mbx-order-count-1d": number;
};
/**
* Return time sync offset, automatically set if time sync is enabled. A higher offset means system clock is behind server time.
*/
getTimeOffset(): number;
setTimeOffset(value: number): void;
get(endpoint: string, params?: any): GenericAPIResponse;
getForBaseUrl(endpoint: string, baseUrlKey: BinanceBaseUrlKey, params?: any): GenericAPIResponse;
getPrivate(endpoint: string, params?: any): GenericAPIResponse;
post(endpoint: string, params?: any): GenericAPIResponse;
postPrivate(endpoint: string, params?: any): GenericAPIResponse;
put(endpoint: string, params?: any): GenericAPIResponse;
putPrivate(endpoint: string, params?: any): GenericAPIResponse;
delete(endpoint: string, params?: any): GenericAPIResponse;
deletePrivate(endpoint: string, params?: any): GenericAPIResponse;
/**
* @private Make a HTTP request to a specific endpoint. Private endpoints are automatically signed.
*/
_call(method: Method, endpoint: string, params?: any, isPrivate?: boolean, baseUrlOverride?: string): GenericAPIResponse;
/**
* @private generic handler to parse request exceptions
*/
private parseException;
private updateApiLimitState;
/**
* Trigger time sync and store promise
*/
syncTime(): Promise<void>;
/**
* Estimate drift based on client<->server latency
*/
fetchTimeOffset(): Promise<number>;
}
export {};