sfccxt
Version:
A JavaScript / Python / PHP cryptocurrency trading library with support for 130+ exchanges
754 lines (720 loc) • 28.2 kB
TypeScript
declare module 'ccxt' {
/**
* Represents an associative array of a same type.
*/
interface Dictionary<T> {
[key: string]: T;
}
// errors.js -----------------------------------------
export class BaseError extends Error {
constructor(message: string);
}
export class ExchangeError extends BaseError {}
export class AuthenticationError extends ExchangeError {}
export class PermissionDenied extends AuthenticationError {}
export class AccountNotEnabled extends PermissionDenied {}
export class AccountSuspended extends AuthenticationError {}
export class ArgumentsRequired extends ExchangeError {}
export class BadRequest extends ExchangeError {}
export class BadSymbol extends BadRequest {}
export class MarginModeAlreadySet extends BadRequest {}
export class BadResponse extends ExchangeError {}
export class NullResponse extends BadResponse {}
export class InsufficientFunds extends ExchangeError {}
export class InvalidAddress extends ExchangeError {}
export class AddressPending extends InvalidAddress {}
export class InvalidOrder extends ExchangeError {}
export class OrderNotFound extends InvalidOrder {}
export class OrderNotCached extends InvalidOrder {}
export class CancelPending extends InvalidOrder {}
export class OrderImmediatelyFillable extends InvalidOrder {}
export class OrderNotFillable extends InvalidOrder {}
export class DuplicateOrderId extends InvalidOrder {}
export class NotSupported extends ExchangeError {}
export class NetworkError extends BaseError {}
export class DDoSProtection extends NetworkError {}
export class RateLimitExceeded extends DDoSProtection {}
export class ExchangeNotAvailable extends NetworkError {}
export class OnMaintenance extends ExchangeNotAvailable {}
export class InvalidNonce extends NetworkError {}
export class RequestTimeout extends NetworkError {}
// -----------------------------------------------
export const version: string;
export const exchanges: string[];
export interface MinMax {
min: number | undefined;
max: number | undefined;
}
export interface Market {
id: string;
symbol: string;
base: string;
quote: string;
baseId: string;
quoteId: string;
active?: boolean | undefined;
type?: string;
spot?: boolean;
margin?: boolean;
swap?: boolean;
future?: boolean;
option?: boolean;
contract?: boolean;
settle?: string | undefined;
settleId?: string | undefined;
contractSize?: number | undefined;
linear?: boolean | undefined;
inverse?: boolean | undefined;
expiry?: number | undefined;
expiryDatetime?: string | undefined;
strike?: number | undefined;
optionType?: string | undefined;
taker?: number | undefined;
maker?: number | undefined;
percentage?: boolean | undefined;
tierBased?: boolean | undefined;
feeSide?: string | undefined;
precision: {
amount: number | undefined,
price: number | undefined
};
limits: {
amount?: MinMax,
cost?: MinMax,
leverage?: MinMax,
price?: MinMax,
};
info: any;
}
export interface Order {
id: string;
clientOrderId: string;
datetime: string;
timestamp: number;
lastTradeTimestamp: number;
status: 'open' | 'closed' | 'canceled';
symbol: string;
type: string;
timeInForce?: string;
side: 'buy' | 'sell';
price: number;
average?: number;
amount: number;
filled: number;
remaining: number;
cost: number;
trades: Trade[];
fee: Fee;
info: any;
}
export interface OrderBook {
asks: [number, number][];
bids: [number, number][];
datetime: string;
timestamp: number;
nonce: number;
}
export interface Trade {
amount: number; // amount of base currency
datetime: string; // ISO8601 datetime with milliseconds;
id: string; // string trade id
info: any; // the original decoded JSON as is
order?: string; // string order id or undefined/None/null
price: number; // float price in quote currency
timestamp: number; // Unix timestamp in milliseconds
type?: string; // order type, 'market', 'limit', ... or undefined/None/null
side: 'buy' | 'sell'; // direction of the trade, 'buy' or 'sell'
symbol: string; // symbol in CCXT format
takerOrMaker: 'taker' | 'maker'; // string, 'taker' or 'maker'
cost: number; // total cost (including fees), `price * amount`
fee: Fee;
}
export interface Ticker {
symbol: string;
info: any;
timestamp: number;
datetime: string;
high: number;
low: number;
bid: number;
bidVolume?: number;
ask: number;
askVolume?: number;
vwap?: number;
open?: number;
close?: number;
last?: number;
previousClose?: number;
change?: number;
percentage?: number;
average?: number;
quoteVolume?: number;
baseVolume?: number;
}
export interface Transaction {
info: any;
id: string;
txid?: string;
timestamp: number;
datetime: string;
address: string;
type: "deposit" | "withdrawal";
amount: number;
currency: string;
status: "pending" | "ok";
updated: number;
fee: Fee;
}
export interface Tickers extends Dictionary<Ticker> {
info: any;
}
export interface Currency {
id: string;
code: string;
numericId?: number;
precision: number;
}
export interface Balance {
free: number;
used: number;
total: number;
}
export interface PartialBalances extends Dictionary<number> {
}
export interface Balances extends Dictionary<Balance> {
info: any;
}
export interface DepositAddress {
currency: string;
address: string;
status: string;
info: any;
}
export interface Fee {
type: 'taker' | 'maker';
currency: string;
rate: number;
cost: number;
}
export interface WithdrawalResponse {
info: any;
id: string;
}
export interface DepositAddressResponse {
currency: string;
address: string;
info: any;
tag?: string;
}
/** [ timestamp, open, high, low, close, volume ] */
export type OHLCV = [number, number, number, number, number, number];
/** Request parameters */
type Params = Dictionary<string | number | boolean | string[]>;
export class Exchange {
constructor(config?: {[key in keyof Exchange]?: Exchange[key]});
// allow dynamic keys
[key: string]: any;
// properties
version: string;
apiKey: string;
secret: string;
password: string;
uid: string;
requiredCredentials: {
apiKey: boolean;
secret: boolean;
uid: boolean;
login: boolean;
password: boolean;
twofa: boolean;
privateKey: boolean;
walletAddress: boolean;
token: boolean;
};
options: {
[key: string]: any;
};
urls: {
logo: string;
api: string | Dictionary<string>;
test: string | Dictionary<string>;
www: string;
doc: string[];
api_management?: string;
fees: string;
referral: string;
};
precisionMode: number;
hash: any;
hmac: any;
jwt: any;
binaryConcat: any;
stringToBinary: any;
stringToBase64: any;
base64ToBinary: any;
base64ToString: any;
binaryToString: any;
utf16ToBase64: any;
urlencode: any;
pluck: any;
unique: any;
extend: any;
deepExtend: any;
flatten: any;
groupBy: any;
indexBy: any;
sortBy: any;
keysort: any;
decimal: any;
safeFloat: any;
safeString: any;
safeInteger: any;
safeValue: any;
capitalize: any;
json: JSON["stringify"]
sum: any;
ordered: any;
aggregate: any;
truncate: any;
name: string;
// nodeVersion: string;
fees: object;
enableRateLimit: boolean;
countries: string[];
// set by loadMarkets
markets: Dictionary<Market>;
markets_by_id: Dictionary<Market>;
currencies: Dictionary<Currency>;
ids: string[];
symbols: string[];
id: string;
proxy: string;
parse8601: typeof Date.parse
milliseconds: typeof Date.now;
rateLimit: number; // milliseconds = seconds * 1000
timeout: number; // milliseconds
verbose: boolean;
twofa: boolean;// two-factor authentication
substituteCommonCurrencyCodes: boolean;
timeframes: Dictionary<number | string>;
has: Dictionary<boolean | 'emulated'>; // https://github.com/ccxt/ccxt/pull/1984
balance: object;
orderbooks: object;
orders: object;
trades: object;
userAgent: { 'User-Agent': string } | false;
limits: { amount: MinMax, price: MinMax, cost: MinMax };
hasCancelAllOrders: boolean;
hasCancelOrder: boolean;
hasCancelOrders: boolean;
hasCORS: boolean;
hasCreateDepositAddress: boolean;
hasCreateLimitOrder: boolean;
hasCreateMarketOrder: boolean;
hasCreateOrder: boolean;
hasDeposit: boolean;
hasEditOrder: boolean;
hasFetchBalance: boolean;
hasFetchBidsAsks: boolean;
hasFetchClosedOrders: boolean;
hasFetchCurrencies: boolean;
hasFetchDepositAddress: boolean;
hasFetchDeposits: boolean;
hasFetchFundingFees: boolean;
hasFetchL2OrderBook: boolean;
hasFetchLedger: boolean;
hasFetchMarkets: boolean;
hasFetchMyTrades: boolean;
hasFetchOHLCV: boolean;
hasFetchOpenOrders: boolean;
hasFetchOrder: boolean;
hasFetchOrderBook: boolean;
hasFetchOrderBooks: boolean;
hasFetchOrders: boolean;
hasFetchStatus: boolean;
hasFetchTicker: boolean;
hasFetchTickers: boolean;
hasFetchTime: boolean;
hasFetchTrades: boolean;
hasFetchTradingFee: boolean;
hasFetchTradingFees: boolean;
hasFetchTradingLimits: boolean;
hasFetchTransactions: boolean;
hasFetchWithdrawals: boolean;
hasPrivateAPI: boolean;
hasPublicAPI: boolean;
hasWithdraw: boolean;
// methods
account (): Balance;
cancelAllOrders (...args: any): Promise<any>; // TODO: add function signatures
cancelOrder (id: string, symbol?: string, params?: Params): Promise<Order>;
cancelOrders (...args: any): Promise<any>; // TODO: add function signatures
checkRequiredCredentials (): void;
commonCurrencyCode (currency: string): string;
createDepositAddress (currency: string, params?: Params): Promise<DepositAddressResponse>;
createLimitOrder (symbol: string, side: Order['side'], amount: number, price: number, params?: Params): Promise<Order>;
createLimitBuyOrder (symbol: string, amount: number, price: number, params?: Params): Promise<Order>;
createLimitSellOrder (symbol: string, amount: number, price: number, params?: Params): Promise<Order>;
createMarketOrder (symbol: string, side: Order['side'], amount: number, price?: number, params?: Params): Promise<Order>;
createMarketBuyOrder (symbol: string, amount: number, params?: Params): Promise<Order>;
createMarketSellOrder (symbol: string, amount: number, params?: Params): Promise<Order>;
createOrder (symbol: string, type: Order['type'], side: Order['side'], amount: number, price?: number, params?: Params): Promise<Order>;
decode (str: string): string;
defaults (): any;
defineRestApi (api: any, methodName: any, options?: Dictionary<any>): void;
deposit (...args: any): Promise<any>; // TODO: add function signatures
describe (): any;
editOrder (id: string, symbol: string, type: Order['type'], side: Order['side'], amount: number, price?: number, params?: Params): Promise<Order>;
encode (str: string): string;
encodeURIComponent (...args: any[]): string;
extractParams (str: string): string[];
fetch (url: string, method?: string, headers?: any, body?: any): Promise<any>;
fetch2 (path: any, api?: string, method?: string, params?: Params, headers?: any, body?: any): Promise<any>;
fetchBalance (params?: Params): Promise<Balances>;
fetchBidsAsks (symbols?: string[], params?: Params): Promise<any>;
fetchClosedOrders (symbol?: string, since?: number, limit?: number, params?: Params): Promise<Order[]>;
fetchCurrencies (params?: Params): Promise<Dictionary<Currency>>;
fetchDepositAddress (currency: string, params?: Params): Promise<DepositAddressResponse>;
fetchDeposits (currency?: string, since?: number, limit?: number, params?: Params): Promise<Transaction[]>;
fetchFreeBalance (params?: Params): Promise<PartialBalances>;
fetchFundingFees (...args: any): Promise<any>; // TODO: add function signatures
fetchL2OrderBook (...args: any): Promise<any>; // TODO: add function signatures
fetchLedger (...args: any): Promise<any>; // TODO: add function signatures
fetchMarkets (params?: Params): Promise<Market[]>;
fetchMyTrades (symbol?: string, since?: any, limit?: any, params?: Params): Promise<Trade[]>;
fetchOHLCV (symbol: string, timeframe?: string, since?: number, limit?: number, params?: Params): Promise<OHLCV[]>;
fetchOpenOrders (symbol?: string, since?: number, limit?: number, params?: Params): Promise<Order[]>;
fetchOrder (id: string, symbol: string, params?: Params): Promise<Order>;
fetchOrderBook (symbol: string, limit?: number, params?: Params): Promise<OrderBook>;
fetchOrderBooks (...args: any): Promise<any>; // TODO: add function signatures
fetchOrders (symbol?: string, since?: number, limit?: number, params?: Params): Promise<Order[]>;
fetchOrderStatus (id: string, market: string): Promise<string>;
fetchPosition (symbol: string, params?: Params): Promise<any>; // TODO: add function signatures
fetchPositions (symbols?: string[], params?: Params): Promise<any>; // TODO: add function signatures
fetchPositionsRisk (symbols?: string[], params?: Params): Promise<any>; // TODO: add function signatures
fetchStatus (...args: any): Promise<any>; // TODO: add function signatures
fetchTicker (symbol: string, params?: Params): Promise<Ticker>;
fetchTickers (symbols?: string[], params?: Params): Promise<Dictionary<Ticker>>;
fetchTime (params?: Params): Promise<number>;
fetchTotalBalance (params?: Params): Promise<PartialBalances>;
fetchTrades (symbol: string, since?: number, limit?: number, params?: Params): Promise<Trade[]>;
fetchTradingFee (...args: any): Promise<any>; // TODO: add function signatures
fetchTradingFees (...args: any): Promise<any>; // TODO: add function signatures
fetchTradingLimits (...args: any): Promise<any>; // TODO: add function signatures
fetchTransactions (currency?: string, since?: number, limit?: number, params?: Params): Promise<Transaction[]>;
fetchUsedBalance (params?: Params): Promise<PartialBalances>;
fetchWithdrawals (currency?: string, since?: number, limit?: number, params?: Params): Promise<Transaction[]>;
getMarket (symbol: string): Market;
initRestRateLimiter (): void;
iso8601 (timestamp: number | string): string;
loadMarkets (reload?: boolean): Promise<Dictionary<Market>>;
market (symbol: string): Market;
marketId (symbol: string): string;
marketIds (symbols: string[]): string[];
microseconds (): number;
nonce (): number;
parseTimeframe (timeframe: string): number;
purgeCachedOrders (timestamp: number): void;
request (path: string, api?: string, method?: string, params?: Params, headers?: any, body?: any): Promise<any>;
seconds (): number;
setMarkets (markets: Market[], currencies?: Currency[]): Dictionary<Market>;
symbol (symbol: string): string;
withdraw (currency: string, amount: number, address: string, tag?: string, params?: Params): Promise<WithdrawalResponse>;
YmdHMS (timestamp: string, infix: string) : string;
}
/* tslint:disable */
export class alpaca extends Exchange {}
export class ascendex extends Exchange {}
export class bequant extends hitbtc {}
export class bigone extends Exchange {}
export class binance extends Exchange {}
export class binancecoinm extends binance {}
export class binanceus extends binance {}
export class binanceusdm extends binance {}
export class bit2c extends Exchange {}
export class bitbank extends Exchange {}
export class bitbay extends zonda {}
export class bitbns extends Exchange {}
export class bitcoincom extends fmfwio {}
export class bitfinex extends Exchange {}
export class bitfinex2 extends Exchange {}
export class bitflyer extends Exchange {}
export class bitforex extends Exchange {}
export class bitget extends Exchange {}
export class bithumb extends Exchange {}
export class bitmart extends Exchange {}
export class bitmex extends Exchange {}
export class bitopro extends Exchange {}
export class bitpanda extends Exchange {}
export class bitrue extends Exchange {}
export class bitso extends Exchange {}
export class bitstamp extends Exchange {}
export class bitstamp1 extends Exchange {}
export class bittrex extends Exchange {}
export class bitvavo extends Exchange {}
export class bkex extends Exchange {}
export class bl3p extends Exchange {}
export class blockchaincom extends Exchange {}
export class btcalpha extends Exchange {}
export class btcbox extends Exchange {}
export class btcex extends Exchange {}
export class btcmarkets extends Exchange {}
export class btctradeua extends Exchange {}
export class btcturk extends Exchange {}
export class buda extends Exchange {}
export class bybit extends Exchange {}
export class cex extends Exchange {}
export class coinbase extends Exchange {}
export class coinbaseprime extends coinbasepro {}
export class coinbasepro extends Exchange {}
export class coincheck extends Exchange {}
export class coinex extends Exchange {}
export class coinfalcon extends Exchange {}
export class coinmate extends Exchange {}
export class coinone extends Exchange {}
export class coinspot extends Exchange {}
export class cryptocom extends Exchange {}
export class currencycom extends Exchange {}
export class delta extends Exchange {}
export class deribit extends Exchange {}
export class digifinex extends Exchange {}
export class egera extends Exchange {}
export class exmo extends Exchange {}
export class flowbtc extends ndax {}
export class fmfwio extends hitbtc {}
export class gate extends Exchange {}
export class gateio extends gate {}
export class gemini extends Exchange {}
export class hitbtc extends Exchange {}
export class hitbtc3 extends Exchange {}
export class hollaex extends Exchange {}
export class huobi extends Exchange {}
export class huobijp extends Exchange {}
export class huobipro extends huobi {}
export class idex extends Exchange {}
export class independentreserve extends Exchange {}
export class indodax extends Exchange {}
export class itbit extends Exchange {}
export class kraken extends Exchange {}
export class kucoin extends Exchange {}
export class kucoinfutures extends kucoin {}
export class kuna extends Exchange {}
export class latoken extends Exchange {}
export class lbank extends Exchange {}
export class lbank2 extends Exchange {}
export class luno extends Exchange {}
export class lykke extends Exchange {}
export class mercado extends Exchange {}
export class mexc extends Exchange {}
export class mexc3 extends Exchange {}
export class ndax extends Exchange {}
export class novadax extends Exchange {}
export class oceanex extends Exchange {}
export class okcoin extends Exchange {}
export class okex extends okx {}
export class okex5 extends okex {}
export class okx extends Exchange {}
export class paymium extends Exchange {}
export class phemex extends Exchange {}
export class poloniex extends Exchange {}
export class probit extends Exchange {}
export class qtrade extends Exchange {}
export class ripio extends Exchange {}
export class stex extends Exchange {}
export class therock extends Exchange {}
export class tidex extends Exchange {}
export class timex extends Exchange {}
export class tokocrypto extends Exchange {}
export class upbit extends Exchange {}
export class wavesexchange extends Exchange {}
export class wazirx extends Exchange {}
export class whitebit extends Exchange {}
export class woo extends Exchange {}
export class yobit extends Exchange {}
export class zaif extends Exchange {}
export class zb extends Exchange {}
export class zipmex extends ndax {}
export class zonda extends Exchange {}
/* tslint:enable */
export type ExchangeId =
| 'alpaca'
| 'ascendex'
| 'bequant'
| 'bigone'
| 'binance'
| 'binancecoinm'
| 'binanceus'
| 'binanceusdm'
| 'bit2c'
| 'bitbank'
| 'bitbay'
| 'bitbns'
| 'bitcoincom'
| 'bitfinex'
| 'bitfinex2'
| 'bitflyer'
| 'bitforex'
| 'bitget'
| 'bithumb'
| 'bitmart'
| 'bitmex'
| 'bitopro'
| 'bitpanda'
| 'bitrue'
| 'bitso'
| 'bitstamp'
| 'bitstamp1'
| 'bittrex'
| 'bitvavo'
| 'bkex'
| 'bl3p'
| 'blockchaincom'
| 'btcalpha'
| 'btcbox'
| 'btcex'
| 'btcmarkets'
| 'btctradeua'
| 'btcturk'
| 'buda'
| 'bybit'
| 'cex'
| 'coinbase'
| 'coinbaseprime'
| 'coinbasepro'
| 'coincheck'
| 'coinex'
| 'coinfalcon'
| 'coinmate'
| 'coinone'
| 'coinspot'
| 'cryptocom'
| 'currencycom'
| 'delta'
| 'deribit'
| 'digifinex'
| 'egera'
| 'exmo'
| 'flowbtc'
| 'fmfwio'
| 'gate'
| 'gateio'
| 'gemini'
| 'hitbtc'
| 'hitbtc3'
| 'hollaex'
| 'huobi'
| 'huobijp'
| 'huobipro'
| 'idex'
| 'independentreserve'
| 'indodax'
| 'itbit'
| 'kraken'
| 'kucoin'
| 'kucoinfutures'
| 'kuna'
| 'latoken'
| 'lbank'
| 'lbank2'
| 'luno'
| 'lykke'
| 'mercado'
| 'mexc'
| 'mexc3'
| 'ndax'
| 'novadax'
| 'oceanex'
| 'okcoin'
| 'okex'
| 'okex5'
| 'okx'
| 'paymium'
| 'phemex'
| 'poloniex'
| 'probit'
| 'qtrade'
| 'ripio'
| 'stex'
| 'therock'
| 'tidex'
| 'timex'
| 'tokocrypto'
| 'upbit'
| 'wavesexchange'
| 'wazirx'
| 'whitebit'
| 'woo'
| 'yobit'
| 'zaif'
| 'zb'
| 'zipmex'
| 'zonda'
// Pro related exports
class ExchangePro extends Exchange {
watchTicker (symbol: string, params?: Params): Promise<Ticker>;
watchTickers (symbols?: string[], params?: Params): Promise<Dictionary<Ticker>>;
watchOrderBook (symbol: string, limit?: number, params?: Params): Promise<OrderBook>;
watchOHLCV (symbol: string, timeframe?: string, since?: number, limit?: number, params?: Params): Promise<OHLCV[]>;
watchTrades (symbol: string, since?: number, limit?: number, params?: Params): Promise<Trade[]>;
watchBalance (params?: Params): Promise<Balances>;
watchOrder (id: string, symbol: string, params?: Params): Promise<Order>;
watchOrders (symbol?: string, since?: number, limit?: number, params?: Params): Promise<Order[]>;
watchOpenOrders (symbol?: string, since?: number, limit?: number, params?: Params): Promise<Order[]>;
watchClosedOrders (symbol?: string, since?: number, limit?: number, params?: Params): Promise<Order[]>;
watchMyTrades (symbol?: string, since?: any, limit?: any, params?: Params): Promise<Trade[]>;
}
export namespace pro {
export const exchanges: string[]
class Exchange extends ExchangePro {}
class ascendex extends Exchange {}
class bequant extends Exchange {}
class binance extends Exchange {}
class binancecoinm extends Exchange {}
class binanceus extends Exchange {}
class binanceusdm extends Exchange {}
class bitcoincom extends Exchange {}
class bitfinex extends Exchange {}
class bitfinex2 extends Exchange {}
class bitget extends Exchange {}
class bitmart extends Exchange {}
class bitmex extends Exchange {}
class bitopro extends Exchange {}
class bitrue extends Exchange {}
class bitstamp extends Exchange {}
class bittrex extends Exchange {}
class bitvavo extends Exchange {}
class bybit extends Exchange {}
class cex extends Exchange {}
class coinbaseprime extends Exchange {}
class coinbasepro extends Exchange {}
class coinex extends Exchange {}
class cryptocom extends Exchange {}
class currencycom extends Exchange {}
class deribit extends Exchange {}
class exmo extends Exchange {}
class gate extends Exchange {}
class gateio extends Exchange {}
class hitbtc extends Exchange {}
class hollaex extends Exchange {}
class huobi extends Exchange {}
class huobijp extends Exchange {}
class huobipro extends Exchange {}
class idex extends Exchange {}
class kraken extends Exchange {}
class kucoin extends Exchange {}
class luno extends Exchange {}
class mexc extends Exchange {}
class ndax extends Exchange {}
class okcoin extends Exchange {}
class okex extends Exchange {}
class okx extends Exchange {}
class phemex extends Exchange {}
class ripio extends Exchange {}
class upbit extends Exchange {}
class wazirx extends Exchange {}
class whitebit extends Exchange {}
class woo extends Exchange {}
class zb extends Exchange {}
class zipmex extends Exchange {}
}
}