binance
Version:
Professional Node.js & JavaScript SDK for Binance REST APIs & WebSockets, with TypeScript & end-to-end tests.
102 lines (101 loc) • 4.61 kB
TypeScript
import { AxiosRequestConfig } from 'axios';
import { ClientRequestArgs } from 'http';
import WebSocket from 'isomorphic-ws';
import { RestClientOptions } from '../../util/requestUtils';
import { WsKey } from '../../util/websockets/websocket-util';
export interface MessageEventLike {
target: WebSocket;
type: 'message';
data: string;
}
export declare function isMessageEvent(msg: unknown): msg is MessageEventLike;
export type WsMarket = 'spot' | 'spotTestnet' | 'crossMargin' | 'isolatedMargin' | 'riskDataMargin' | 'usdm' | 'usdmTestnet' | 'coinm' | 'coinmTestnet' | 'options' | 'optionsTestnet' | 'portfoliom';
export interface WsSharedBase {
wsMarket: WsMarket;
wsKey: WsKey;
streamName: string;
}
export interface WsResponse {
type: 'message';
data: {
result: boolean | string[] | null;
id: number;
isWSAPIResponse: boolean;
wsKey: WsKey;
};
}
export type WsPublicInverseTopic = 'orderBookL2_25' | 'orderBookL2_200' | 'trade' | 'insurance' | 'instrument_info' | 'klineV2';
export type WsPublicUSDTPerpTopic = 'orderBookL2_25' | 'orderBookL2_200' | 'trade' | 'insurance' | 'instrument_info' | 'kline';
export type WsPublicSpotV1Topic = 'trade' | 'realtimes' | 'kline' | 'depth' | 'mergedDepth' | 'diffDepth';
export type WsPublicSpotV2Topic = 'depth' | 'kline' | 'trade' | 'bookTicker' | 'realtimes';
export type WsPublicTopics = WsPublicInverseTopic | WsPublicUSDTPerpTopic | WsPublicSpotV1Topic | WsPublicSpotV2Topic | string;
export type WsPrivateInverseTopic = 'position' | 'execution' | 'order' | 'stop_order';
export type WsPrivateUSDTPerpTopic = 'position' | 'execution' | 'order' | 'stop_order' | 'wallet';
export type WsPrivateSpotTopic = 'outboundAccountInfo' | 'executionReport' | 'ticketInfo';
export type WsPrivateTopic = WsPrivateInverseTopic | WsPrivateUSDTPerpTopic | WsPrivateSpotTopic | string;
export type WsTopic = WsPublicTopics | WsPrivateTopic;
export interface WSClientConfigurableOptions {
/** Your API key */
api_key?: string;
/** Your API secret */
api_secret?: string;
beautify?: boolean;
/**
* If true, log a warning if the beautifier is missing anything for an event
*/
beautifyWarnIfMissing?: boolean;
/**
* Set to `true` to connect to Binance's testnet environment.
*
* Notes:
* - Not all WebSocket categories support testnet.
* - If testing a strategy, this is not recommended. Testnet market data is very different from real market conditions. More guidance here: https://github.com/tiagosiebler/awesome-crypto-examples/wiki/CEX-Testnets
*/
testnet?: boolean;
/**
* Default: false. If true, use market maker endpoints when available.
* Eligible for high-frequency trading users who have enrolled and qualified
* in at least one of the Futures Liquidity Provider Programs.
* More info: https://www.binance.com/en/support/faq/detail/7df7f3838c3b49e692d175374c3a3283
*/
useMMSubdomain?: boolean;
/** Define a recv window when preparing a private websocket signature. This is in milliseconds, so 5000 == 5 seconds */
recvWindow?: number;
disableHeartbeat?: boolean;
/** How often to check if the connection is alive */
pingInterval?: number;
/** How long to wait for a pong (heartbeat reply) before assuming the connection is dead */
pongTimeout?: number;
/** Delay in milliseconds before respawning the connection */
reconnectTimeout?: number;
restOptions?: RestClientOptions;
requestOptions?: AxiosRequestConfig;
wsOptions?: {
protocols?: string[];
agent?: any;
} & Partial<WebSocket.ClientOptions | ClientRequestArgs>;
wsUrl?: string;
/**
* Allows you to provide a custom "signMessage" function, e.g. to use node's much faster createHmac method
*
* Look in the examples folder for a demonstration on using node's createHmac instead.
*/
customSignMessageFn?: (message: string, secret: string) => Promise<string>;
/**
* Optional custom JSON parser used for incoming WS messages.
* Defaults to JSON.parse.
*/
customParseJSONFn?: (raw: string) => object;
}
/**
* WS configuration that's always defined, regardless of user configuration
* (usually comes from defaults if there's no user-provided values)
*/
export interface WebsocketClientOptions extends WSClientConfigurableOptions {
pongTimeout: number;
pingInterval: number;
reconnectTimeout: number;
recvWindow: number;
authPrivateConnectionsOnConnect: boolean;
authPrivateRequests: boolean;
}