From 0c431a55c686661d4dd7182bf0b7dc59f144332d Mon Sep 17 00:00:00 2001 From: carlosmiei <43336371+carlosmiei@users.noreply.github.com> Date: Wed, 22 Oct 2025 16:27:53 +0100 Subject: [PATCH 1/2] feat(client): add margin capital flow and interest history endpoints --- src/http-client.js | 4 ++ types/margin.d.ts | 130 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 134 insertions(+) diff --git a/src/http-client.js b/src/http-client.js index a3b8793f..243b8ea0 100644 --- a/src/http-client.js +++ b/src/http-client.js @@ -667,6 +667,8 @@ export default opts => { marginMyTrades: payload => privCall('/sapi/v1/margin/myTrades', payload), marginRepay: payload => privCall('/sapi/v1/margin/repay', payload, 'POST'), marginLoan: payload => privCall('/sapi/v1/margin/loan', payload, 'POST'), + marginCapitalFlow: payload => privCall('/sapi/v1/margin/capital-flow', payload), + marginInterestHistory: payload => privCall('/sapi/v1/margin/interestHistory', payload), marginIsolatedAccount: payload => privCall('/sapi/v1/margin/isolated/account', payload), marginMaxBorrow: payload => privCall('/sapi/v1/margin/maxBorrowable', payload), marginCreateIsolated: payload => @@ -679,6 +681,8 @@ export default opts => { privCall('/sapi/v1/margin/isolated/account', payload, 'DELETE'), enableMarginAccount: payload => privCall('/sapi/v1/margin/isolated/account', payload, 'POST'), + isolatedMarginAllPairs: payload => privCall('/sapi/v1/margin/isolated/allPairs', payload), + isolatedMarginAccount: payload => privCall('/sapi/v1/margin/isolated/account', payload), marginAccount: () => privCall('/sapi/v1/margin/account'), // Portfolio Margin endpoints diff --git a/types/margin.d.ts b/types/margin.d.ts index c873c21b..bd9f3ece 100644 --- a/types/margin.d.ts +++ b/types/margin.d.ts @@ -10,6 +10,25 @@ export interface MarginAsset { netAsset: string; } +export type CapitalFlowType = + | 'TRANSFER' + | 'BORROW' + | 'REPAY' + | 'BUY_INCOME' + | 'BUY_EXPENSE' + | 'SELL_INCOME' + | 'SELL_EXPENSE' + | 'TRADING_COMMISSION' + | 'BUY_LIQUIDATION' + | 'SELL_LIQUIDATION' + | 'REPAY_LIQUIDATION' + | 'OTHER_LIQUIDATION' + | 'LIQUIDATION_FEE' + | 'SMALL_BALANCE_CONVERT' + | 'COMMISSION_RETURN' + | 'SMALL_CONVERT' + + export interface MarginAccountInfo { borrowEnabled: boolean; marginLevel: string; @@ -93,11 +112,61 @@ export interface MarginOrderOcoParams extends Omit { limitTimeInForce?: TimeInForce; } +export interface MarginInterestHistory { + txId: string; + interestAccuredTime: number; + asset: string; + rawAsset?: string; + principal: string; + interest: string; + interestRate: string; + type: string; + isolatedSymbol: string; +} + export interface MarginEndpoints extends BinanceRestClient { // Account endpoints marginAccountInfo(): Promise; + marginCapitalFlow(params?: { + asset?: string; + /** + * Required when querying isolated data + */ + symbol?: string; + type?: CapitalFlowType; + /** + * Only supports querying the data of the last 90 days + */ + startTime?: number; + endTime?: number; + fromId?: number; + /** + * The number of data items returned each time is limited. Default 500; Max 1000. + */ + limit?: number; + recvWindow?: number; + }): Promise< + { + id: number; + tranId: number; + timestamp: number; + asset: string; + symbol: string; + type: CapitalFlowType; + amount: number; + }[] + >; marginIsolatedAccount(params: { symbols: string }): Promise; marginMaxBorrow(params: { asset: string; isolatedSymbol?: string }): Promise; + marginInterestHistory(params: { + asset?: string; + isolatedSymbol?: string; + startTime?: number; + endTime?: number; + current?: number; + size?: number; + timestamp?: number; + }): Promise<{ total: number; rows: MarginInterestHistory[] }>; marginCreateIsolated(params: { base: string; quote: string }): Promise<{ success: boolean; symbol: string }>; marginIsolatedTransfer(params: { asset: string; @@ -129,6 +198,67 @@ export interface MarginEndpoints extends BinanceRestClient { }>; disableMarginAccount(params: { symbol: string }): Promise<{ success: boolean; symbol: string }>; enableMarginAccount(params: { symbol: string }): Promise<{ success: boolean; symbol: string }>; + isolatedMarginAllPairs(params: { + symbol?: string + }): Promise< + { + base: string; + isBuyAllowed: boolean; + isMarginTrade: boolean; + isSellAllowed: boolean; + quote: string; + symbol: string; + }[] + >; + isolatedMarginAccount(params: { + /** + * Max 5 symbols can be sent; separated by ",". e.g. "BTCUSDT,BNBUSDT,ADAUSDT" + */ + symbols?: string; + recvWindow?: number; + }): Promise<{ + assets: { + baseAsset: { + asset: string; + borrowEnabled: boolean; + borrowed: number; + free: number; + interest: number; + locked: number; + netAsset: number; + netAssetOfBtc: number; + repayEnabled: boolean; + totalAsset: number; + }, + quoteAsset: { + asset: string; + borrowEnabled: boolean; + borrowed: number; + free: number; + interest: number; + locked: number; + netAsset: number; + netAssetOfBtc: number; + repayEnabled: boolean; + totalAsset: number; + }; + symbol: string; + isolatedCreated: boolean; + enabled: boolean; + marginLevel: number; + marginLevelStatus: + | 'EXCESSIVE' + | 'NORMAL' + | 'MARGIN_CALL' + | 'PRE_LIQUIDATION' + | 'FORCE_LIQUIDATION'; + marginRatio: number; + indexPrice: number; + liquidatePrice: number; + liquidateRate: number; + tradeEnabled: boolean; + }[] + }>; marginAccount(): Promise; // Order endpoints From 40c01255808f628715efea902545cf314c88a35f Mon Sep 17 00:00:00 2001 From: carlosmiei <43336371+carlosmiei@users.noreply.github.com> Date: Fri, 28 Nov 2025 12:49:46 +0000 Subject: [PATCH 2/2] export types --- index.d.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/index.d.ts b/index.d.ts index 085092b4..58a62dee 100644 --- a/index.d.ts +++ b/index.d.ts @@ -114,7 +114,9 @@ export { MarginMaxBorrow, MarginOrderParams, MarginOrderOcoParams, - MarginEndpoints + MarginEndpoints, + CapitalFlowType, + MarginInterestHistory } from './types/margin'; export * from './types/portfolio-margin';