Skip to content

Commit 5f48fde

Browse files
committed
feat: new methods and typings
1 parent d47ea8f commit 5f48fde

23 files changed

+5246
-4321
lines changed

index.d.ts

+46-2,532
Large diffs are not rendered by default.

package.json

+6-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
"lint": "eslint src",
1717
"prettier": "prettier --write '{src,test}/**/*.{ts,js}'",
1818
"prettier:check": "prettier -l '{src,test}/**/*.{ts,js}'",
19-
"ci": "yarn lint && yarn prettier:check && yarn test"
19+
"ci": "yarn lint && yarn prettier:check && yarn test",
20+
"typecheck": "tsc --noEmit"
2021
},
2122
"dependencies": {
2223
"https-proxy-agent": "^5.0.0",
@@ -33,6 +34,7 @@
3334
"@babel/polyfill": "^7.7.0",
3435
"@babel/preset-env": "^7.7.4",
3536
"@babel/register": "^7.7.4",
37+
"@types/node": "^18.0.0",
3638
"ava": "^4.1.0",
3739
"babel-eslint": "^10.0.3",
3840
"babel-plugin-module-resolver": "^3.2.0",
@@ -42,7 +44,9 @@
4244
"eslint-config-prettier": "^6.7.0",
4345
"eslint-config-zavatta": "^6.0.3",
4446
"nyc": "^14.1.1",
45-
"prettier": "^1.19.1"
47+
"prettier": "^1.19.1",
48+
"ts-node": "^10.9.1",
49+
"typescript": "^4.9.5"
4650
},
4751
"resolutions": {
4852
"isomorphic-fetch/node-fetch": "2.6.1"

src/http-client.js

+72-61
Original file line numberDiff line numberDiff line change
@@ -336,61 +336,48 @@ export default opts => {
336336
const kCall = keyCall({ ...opts, pubCall })
337337

338338
return {
339+
// Generic endpoints
339340
getInfo: () => info,
340341
ping: () => pubCall('/api/v3/ping').then(() => true),
341342
time: () => pubCall('/api/v3/time').then(r => r.serverTime),
342343
exchangeInfo: payload => pubCall('/api/v3/exchangeInfo', payload),
343344

345+
// Market Data endpoints
344346
book: payload => book(pubCall, payload),
345347
aggTrades: payload => aggTrades(pubCall, payload),
346348
candles: payload => candles(pubCall, payload),
347-
348349
trades: payload =>
349350
checkParams('trades', payload, ['symbol']) && pubCall('/api/v3/trades', payload),
350351
tradesHistory: payload =>
351352
checkParams('tradesHitory', payload, ['symbol']) &&
352353
kCall('/api/v3/historicalTrades', payload),
353-
354354
dailyStats: payload => pubCall('/api/v3/ticker/24hr', payload),
355355
prices: payload =>
356356
pubCall('/api/v3/ticker/price', payload).then(r =>
357357
(Array.isArray(r) ? r : [r]).reduce((out, cur) => ((out[cur.symbol] = cur.price), out), {}),
358358
),
359-
360359
avgPrice: payload => pubCall('/api/v3/avgPrice', payload),
361-
362360
allBookTickers: () =>
363361
pubCall('/api/v3/ticker/bookTicker').then(r =>
364362
(Array.isArray(r) ? r : [r]).reduce((out, cur) => ((out[cur.symbol] = cur), out), {}),
365363
),
366364

367-
/**
368-
* Call unmanaged private call to Binance api; you need a key and secret
369-
*/
370-
privateRequest: (method, url, payload) => privCall(url, payload, method),
371-
372-
/**
373-
* Call unmanaged public call to Binance api
374-
*/
375-
publicRequest: (method, url, payload) => pubCall(url, payload, method),
376-
365+
// Order endpoints
377366
order: payload => order(privCall, payload, '/api/v3/order'),
378367
orderOco: payload => orderOco(privCall, payload, '/api/v3/order/oco'),
379368
orderTest: payload => order(privCall, payload, '/api/v3/order/test'),
380369
getOrder: payload => privCall('/api/v3/order', payload),
381370
getOrderOco: payload => privCall('/api/v3/orderList', payload),
382371
cancelOrder: payload => privCall('/api/v3/order', payload, 'DELETE'),
383372
cancelOrderOco: payload => privCall('/api/v3/orderList', payload, 'DELETE'),
384-
385373
cancelOpenOrders: payload => privCall('/api/v3/openOrders', payload, 'DELETE'),
386374
openOrders: payload => privCall('/api/v3/openOrders', payload),
387375
allOrders: payload => privCall('/api/v3/allOrders', payload),
388-
389376
allOrdersOCO: payload => privCall('/api/v3/allOrderList', payload),
390377

378+
// Account endpoints
391379
accountInfo: payload => privCall('/api/v3/account', payload),
392380
myTrades: payload => privCall('/api/v3/myTrades', payload),
393-
394381
withdraw: payload => privCall('/sapi/v1/capital/withdraw/apply', payload, 'POST'),
395382
withdrawHistory: payload => privCall('/sapi/v1/capital/withdraw/history', payload),
396383
depositHistory: payload => privCall('/sapi/v1/capital/deposit/hisrec', payload),
@@ -400,65 +387,33 @@ export default opts => {
400387
accountSnapshot: payload => privCall('/sapi/v1/accountSnapshot', payload),
401388
universalTransfer: payload => privCall('/sapi/v1/asset/transfer', payload, 'POST'),
402389
universalTransferHistory: payload => privCall('/sapi/v1/asset/transfer', payload),
403-
404390
dustLog: payload => privCall('/sapi/v1/asset/dribblet', payload),
405391
dustTransfer: payload => privCall('/sapi/v1/asset/dust', payload, 'POST'),
406392
accountCoins: payload => privCall('/sapi/v1/capital/config/getall', payload),
407-
408393
getBnbBurn: payload => privCall('/sapi/v1/bnbBurn', payload),
409394
setBnbBurn: payload => privCall('/sapi/v1/bnbBurn', payload, 'POST'),
410-
411395
capitalConfigs: () => privCall('/sapi/v1/capital/config/getall'),
412396

397+
// User Data Stream endpoints
413398
getDataStream: () => privCall('/api/v3/userDataStream', null, 'POST', true),
414399
keepDataStream: payload => privCall('/api/v3/userDataStream', payload, 'PUT', false, true),
415400
closeDataStream: payload => privCall('/api/v3/userDataStream', payload, 'DELETE', false, true),
416-
417401
marginGetDataStream: () => privCall('/sapi/v1/userDataStream', null, 'POST', true),
418402
marginKeepDataStream: payload =>
419403
privCall('/sapi/v1/userDataStream', payload, 'PUT', false, true),
420404
marginCloseDataStream: payload =>
421405
privCall('/sapi/v1/userDataStream', payload, 'DELETE', false, true),
422-
423406
futuresGetDataStream: () => privCall('/fapi/v1/listenKey', null, 'POST', true),
424407
futuresKeepDataStream: payload => privCall('/fapi/v1/listenKey', payload, 'PUT', false, true),
425408
futuresCloseDataStream: payload =>
426409
privCall('/fapi/v1/listenKey', payload, 'DELETE', false, true),
427-
428410
deliveryGetDataStream: () => privCall('/dapi/v1/listenKey', null, 'POST', true),
429411
deliveryKeepDataStream: payload => privCall('/dapi/v1/listenKey', payload, 'PUT', false, true),
430412
deliveryCloseDataStream: payload =>
431413
privCall('/dapi/v1/listenKey', payload, 'DELETE', false, true),
432414

433-
marginAllOrders: payload => privCall('/sapi/v1/margin/allOrders', payload),
434-
marginOrder: payload => order(privCall, payload, '/sapi/v1/margin/order'),
435-
marginOrderOco: payload => orderOco(privCall, payload, '/sapi/v1/margin/order/oco'),
436-
marginGetOrder: payload => privCall('/sapi/v1/margin/order', payload),
437-
marginGetOrderOco: payload => privCall('/sapi/v1/margin/orderList', payload),
438-
marginCancelOrder: payload => privCall('/sapi/v1/margin/order', payload, 'DELETE'),
439-
marginOpenOrders: payload => privCall('/sapi/v1/margin/openOrders', payload),
440-
marginCancelOpenOrders: payload => privCall('/sapi/v1/margin/openOrders', payload, 'DELETE'),
441-
marginAccountInfo: payload => privCall('/sapi/v1/margin/account', payload),
442-
marginMyTrades: payload => privCall('/sapi/v1/margin/myTrades', payload),
443-
marginRepay: payload => privCall('/sapi/v1/margin/repay', payload, 'POST'),
444-
marginLoan: payload => privCall('/sapi/v1/margin/loan', payload, 'POST'),
445-
marginIsolatedAccount: payload => privCall('/sapi/v1/margin/isolated/account', payload),
446-
marginMaxBorrow: payload => privCall('/sapi/v1/margin/maxBorrowable', payload),
447-
marginCreateIsolated: payload => privCall('/sapi/v1/margin/isolated/create', payload, 'POST'),
448-
marginIsolatedTransfer: payload =>
449-
privCall('/sapi/v1/margin/isolated/transfer', payload, 'POST'),
450-
marginIsolatedTransferHistory: payload =>
451-
privCall('/sapi/v1/margin/isolated/transfer', payload),
452-
disableMarginAccount: payload =>
453-
privCall('/sapi/v1/margin/isolated/account', payload, 'DELETE'),
454-
enableMarginAccount: payload => privCall('/sapi/v1/margin/isolated/account', payload, 'POST'),
455-
portfolioMarginAccountInfo: () => privCall('/sapi/v1/portfolio/account'),
456-
portfolioMarginCollateralRate: () => privCall('/sapi/v1/portfolio/collateralRate'),
457-
portfolioMarginLoan: payload => privCall('/sapi/v1/portfolio/pmLoan', payload),
458-
portfolioMarginLoanRepay: payload => privCall('/sapi/v1/portfolio/repay', payload, 'POST'),
459-
portfolioMarginInterestHistory: payload =>
460-
privCall('/sapi/v1/portfolio/interest-history', payload),
461415

416+
// Futures endpoints
462417
futuresPing: () => pubCall('/fapi/v1/ping').then(() => true),
463418
futuresTime: () => pubCall('/fapi/v1/time').then(r => r.serverTime),
464419
futuresExchangeInfo: () => pubCall('/fapi/v1/exchangeInfo'),
@@ -483,7 +438,6 @@ export default opts => {
483438
),
484439
futuresFundingRate: payload =>
485440
checkParams('fundingRate', payload, ['symbol']) && pubCall('/fapi/v1/fundingRate', payload),
486-
487441
futuresOrder: payload => order(privCall, payload, '/fapi/v1/order'),
488442
futuresBatchOrders: payload => privCall('/fapi/v1/batchOrders', payload, 'POST'),
489443
futuresGetOrder: payload => privCall('/fapi/v1/order', payload),
@@ -504,7 +458,10 @@ export default opts => {
504458
futuresPositionMargin: payload => privCall('/fapi/v1/positionMargin', payload, 'POST'),
505459
futuresMarginHistory: payload => privCall('/fapi/v1/positionMargin/history', payload),
506460
futuresIncome: payload => privCall('/fapi/v1/income', payload),
461+
getMultiAssetsMargin: payload => privCall('/fapi/v1/multiAssetsMargin', payload),
462+
setMultiAssetsMargin: payload => privCall('/fapi/v1/multiAssetsMargin', payload, 'POST'),
507463

464+
// Delivery endpoints
508465
deliveryPing: () => pubCall('/dapi/v1/ping').then(() => true),
509466
deliveryTime: () => pubCall('/dapi/v1/time').then(r => r.serverTime),
510467
deliveryExchangeInfo: () => pubCall('/dapi/v1/exchangeInfo'),
@@ -530,7 +487,6 @@ export default opts => {
530487
),
531488
deliveryFundingRate: payload =>
532489
checkParams('fundingRate', payload, ['symbol']) && pubCall('/dapi/v1/fundingRate', payload),
533-
534490
deliveryOrder: payload => order(privCall, payload, '/dapi/v1/order'),
535491
deliveryBatchOrders: payload => privCall('/dapi/v1/batchOrders', payload, 'POST'),
536492
deliveryGetOrder: payload => privCall('/dapi/v1/order', payload),
@@ -552,15 +508,11 @@ export default opts => {
552508
deliveryMarginHistory: payload => privCall('/dapi/v1/positionMargin/history', payload),
553509
deliveryIncome: payload => privCall('/dapi/v1/income', payload),
554510

555-
getMultiAssetsMargin: payload => privCall('/fapi/v1/multiAssetsMargin', payload),
556-
setMultiAssetsMargin: payload => privCall('/fapi/v1/multiAssetsMargin', payload, 'POST'),
557-
lendingAccount: payload => privCall('/sapi/v1/lending/union/account', payload),
558-
fundingWallet: payload => privCall('/sapi/v1/asset/get-funding-asset', payload, 'POST'),
559-
apiPermission: payload => privCall('/sapi/v1/account/apiRestrictions', payload),
560-
561511
// PAPI endpoints
562-
papiPing: () => pubCall('/papi/v1/ping').then(() => true),
563-
papiUmOrder: payload => privCall('/papi/v1/um/order', payload, 'POST'),
512+
papiPing: () => privCall('/papi/v1/ping'),
513+
papiAccount: () => privCall('/papi/v1/account'),
514+
papiBalance: (payload) => privCall('/papi/v1/balance', payload),
515+
papiUmOrder: (payload) => privCall('/papi/v1/um/order', payload),
564516
papiUmConditionalOrder: payload => privCall('/papi/v1/um/conditional/order', payload, 'POST'),
565517
papiCmOrder: payload => privCall('/papi/v1/cm/order', payload, 'POST'),
566518
papiCmConditionalOrder: payload => privCall('/papi/v1/cm/conditional/order', payload, 'POST'),
@@ -629,5 +581,64 @@ export default opts => {
629581
papiMarginGetOpenOrderList: payload => privCall('/papi/v1/margin/openOrderList', payload),
630582
papiMarginGetMyTrades: payload => privCall('/papi/v1/margin/myTrades', payload),
631583
papiMarginRepayDebt: payload => privCall('/papi/v1/margin/repay-debt', payload, 'POST'),
584+
585+
// Margin endpoints
586+
marginAllOrders: payload => privCall('/sapi/v1/margin/allOrders', payload),
587+
marginOrder: payload => order(privCall, payload, '/sapi/v1/margin/order'),
588+
marginOrderOco: payload => orderOco(privCall, payload, '/sapi/v1/margin/order/oco'),
589+
marginGetOrder: payload => privCall('/sapi/v1/margin/order', payload),
590+
marginGetOrderOco: payload => privCall('/sapi/v1/margin/orderList', payload),
591+
marginCancelOrder: payload => privCall('/sapi/v1/margin/order', payload, 'DELETE'),
592+
marginOpenOrders: payload => privCall('/sapi/v1/margin/openOrders', payload),
593+
marginCancelOpenOrders: payload => privCall('/sapi/v1/margin/openOrders', payload, 'DELETE'),
594+
marginAccountInfo: payload => privCall('/sapi/v1/margin/account', payload),
595+
marginMyTrades: payload => privCall('/sapi/v1/margin/myTrades', payload),
596+
marginRepay: payload => privCall('/sapi/v1/margin/repay', payload, 'POST'),
597+
marginLoan: payload => privCall('/sapi/v1/margin/loan', payload, 'POST'),
598+
marginIsolatedAccount: payload => privCall('/sapi/v1/margin/isolated/account', payload),
599+
marginMaxBorrow: payload => privCall('/sapi/v1/margin/maxBorrowable', payload),
600+
marginCreateIsolated: payload => privCall('/sapi/v1/margin/isolated/create', payload, 'POST'),
601+
marginIsolatedTransfer: payload =>
602+
privCall('/sapi/v1/margin/isolated/transfer', payload, 'POST'),
603+
marginIsolatedTransferHistory: payload =>
604+
privCall('/sapi/v1/margin/isolated/transfer', payload),
605+
disableMarginAccount: payload =>
606+
privCall('/sapi/v1/margin/isolated/account', payload, 'DELETE'),
607+
enableMarginAccount: payload => privCall('/sapi/v1/margin/isolated/account', payload, 'POST'),
608+
marginAccount: () => privCall('/sapi/v1/margin/account'),
609+
610+
// Portfolio Margin endpoints
611+
portfolioMarginAccountInfo: () => privCall('/sapi/v1/portfolio/account'),
612+
portfolioMarginCollateralRate: () => privCall('/sapi/v1/portfolio/collateralRate'),
613+
portfolioMarginLoan: payload => privCall('/sapi/v1/portfolio/pmLoan', payload),
614+
portfolioMarginLoanRepay: payload => privCall('/sapi/v1/portfolio/repay', payload, 'POST'),
615+
portfolioMarginInterestHistory: payload =>
616+
privCall('/sapi/v1/portfolio/interest-history', payload),
617+
618+
// Savings endpoints
619+
savingsAccount: (payload) => privCall('/sapi/v1/lending/union/account'),
620+
savingsPurchase: (payload) =>
621+
privCall('/sapi/v1/lending/union/purchase', payload, 'POST'),
622+
savingsRedeem: (payload) =>
623+
privCall('/sapi/v1/lending/union/redeem', payload, 'POST'),
624+
fundingWallet: payload => privCall('/sapi/v1/asset/get-funding-asset', payload, 'POST'),
625+
convertTradeFlow: (payload) =>
626+
privCall('/sapi/v1/convert/tradeFlow', payload),
627+
rebateTaxQuery: () => privCall('/sapi/v1/rebate/taxQuery'),
628+
payTradeHistory: (payload) =>
629+
privCall('/sapi/v1/pay/transactions', payload),
630+
apiRestrictions: payload => privCall('/sapi/v1/account/apiRestrictions', payload),
631+
632+
// Mining endpoints
633+
miningHashrateResaleRequest: (payload) =>
634+
privCall('/sapi/v1/mining/hash-transfer/config', payload, 'POST'),
635+
miningHashrateResaleCancel: (payload) =>
636+
privCall('/sapi/v1/mining/hash-transfer/config/cancel', payload, 'POST'),
637+
miningStatistics: (payload) =>
638+
privCall('/sapi/v1/mining/statistics/user/status', payload),
639+
640+
// Utility endpoints
641+
privateRequest: (method, url, payload) => privCall(url, payload, method),
642+
publicRequest: (method, url, payload) => pubCall(url, payload, method),
632643
}
633644
}

src/index.js

+36
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,39 @@ export const WithdrawStatus = {
8282
FAILURE: 5,
8383
COMPLETED: 6,
8484
}
85+
86+
export const SavingsStatus = {
87+
HOLDING: 'HOLDING',
88+
REDEEMED: 'REDEEMED',
89+
TRANSFERRED: 'TRANSFERRED',
90+
}
91+
92+
export const SavingsType = {
93+
FAST: 'FAST',
94+
NORMAL: 'NORMAL',
95+
}
96+
97+
export const MiningAlgo = {
98+
SHA256: 'sha256',
99+
SCRYPT: 'scrypt',
100+
ETHASH: 'ethash',
101+
X11: 'x11',
102+
}
103+
104+
export const MiningStatus = {
105+
HASH_RATE: 'hash_rate',
106+
REJECTED: 'rejected',
107+
EARNINGS: 'earnings',
108+
}
109+
110+
export const ConvertStatus = {
111+
PROCESSING: 'PROCESSING',
112+
SUCCESS: 'SUCCESS',
113+
FAILURE: 'FAILURE',
114+
}
115+
116+
export const PayStatus = {
117+
PENDING: 'PENDING',
118+
SUCCESS: 'SUCCESS',
119+
FAILED: 'FAILED',
120+
}

src/websocket.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -933,13 +933,12 @@ const futuresAllMarkPrices = (payload, cb, transform = true) => {
933933
}
934934

935935
export default opts => {
936-
if (opts && opts.wsBase) {
936+
if (opts && opts.wsBase)
937937
endpoints.base = opts.wsBase
938-
}
939-
940-
if (opts && opts.wsFutures) {
938+
if (opts && opts.wsFutures)
941939
endpoints.futures = opts.wsFutures
942-
}
940+
if (opts && opts.wsDelivery)
941+
endpoints.delivery = opts.wsDelivery
943942

944943
if (opts && opts.proxy) {
945944
wsOptions.proxy = opts.proxy

0 commit comments

Comments
 (0)