@yuants/vendor-binance 0.14.4 → 0.14.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/client.js +32 -28
- package/dist/api/client.js.map +1 -1
- package/dist/api/private-api.js +82 -82
- package/dist/api/private-api.js.map +1 -1
- package/dist/api/public-api.js +26 -26
- package/dist/api/public-api.js.map +1 -1
- package/lib/api/client.d.ts +4 -1
- package/lib/api/client.d.ts.map +1 -1
- package/lib/api/client.js +32 -27
- package/lib/api/client.js.map +1 -1
- package/lib/api/private-api.d.ts.map +1 -1
- package/lib/api/private-api.js +81 -81
- package/lib/api/private-api.js.map +1 -1
- package/lib/api/public-api.d.ts.map +1 -1
- package/lib/api/public-api.js +25 -25
- package/lib/api/public-api.js.map +1 -1
- package/package.json +6 -6
- package/temp/build/typescript/ts_tQj2bmGB.json +1 -1
- package/temp/package-deps.json +8 -8
- package/temp/test/jest/haste-map-f37bc94525b36254e573de220443d250-dc922b21f2d35e7315abf4c3159e25a5-63b40dbcff306581344a73f9073894a1 +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private-api.js","sourceRoot":"","sources":["../../src/api/private-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { scopeError, tokenBucket } from '@yuants/utils';\n\nimport {\n buildTokenBucketKey,\n createRequestContext,\n getDefaultCredential,\n IApiError,\n ICredential,\n requestPrivate,\n} from './client';\nexport type { ICredential };\n\nexport interface IUnifiedAccountInfo {\n uniMMR: string;\n accountEquity: string;\n actualEquity: string;\n accountInitialMargin: string;\n accountMaintMargin: string;\n accountStatus: string;\n virtualMaxWithdrawAmount: string;\n totalAvailableBalance: string;\n totalMarginOpenLoss: string;\n updateTime: number;\n}\n\nexport interface IUnifiedUmAsset {\n asset: string;\n crossWalletBalance: string;\n crossUnPnl: string;\n maintMargin: string;\n initialMargin: string;\n positionInitialMargin: string;\n openOrderInitialMargin: string;\n updateTime: number;\n}\n\nexport interface IUnifiedUmPosition {\n symbol: string;\n initialMargin: string;\n maintMargin: string;\n unrealizedProfit: string;\n positionInitialMargin: string;\n openOrderInitialMargin: string;\n leverage: string;\n entryPrice: string;\n maxNotional: string;\n bidNotional: string;\n askNotional: string;\n positionSide: string;\n positionAmt: string;\n updateTime: number;\n}\n\nexport interface IUnifiedUmAccount {\n assets: IUnifiedUmAsset[];\n positions: IUnifiedUmPosition[];\n}\n\nexport interface IUnifiedUmOpenOrder {\n avgPrice: string;\n clientOrderId: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n origQty: string;\n origType: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n time: number;\n timeInForce: string;\n type: string;\n updateTime: number;\n selfTradePreventionMode: string;\n goodTillDate: number;\n}\n\nexport interface IUnifiedAccountBalanceEntry {\n asset: string;\n totalWalletBalance: string;\n crossMarginAsset: string;\n crossMarginBorrowed: string;\n crossMarginFree: string;\n crossMarginInterest: string;\n crossMarginLocked: string;\n umWalletBalance: string;\n umUnrealizedPNL: string;\n cmWalletBalance: string;\n cmUnrealizedPNL: string;\n updateTime: number;\n}\n\nexport interface ISpotAccountInfo {\n makerCommission: number;\n takerCommission: number;\n buyerCommission: number;\n sellerCommission: number;\n commissionRates: {\n maker: string;\n taker: string;\n buyer: string;\n seller: string;\n };\n canTrade: boolean;\n canWithdraw: boolean;\n canDeposit: boolean;\n brokered: boolean;\n requireSelfTradePrevention: boolean;\n preventSor: boolean;\n updateTime: number;\n balances: {\n asset: string;\n free: string;\n locked: string;\n }[];\n permissions: string[];\n uid: number;\n}\n\nexport interface ISpotOrder {\n symbol: string;\n orderId: number;\n orderListId: number;\n clientOrderId: string;\n price: string;\n origQty: string;\n executedQty: string;\n origQuoteOrderQty: string;\n cummulativeQuoteQty: string;\n status: string;\n timeInForce: string;\n type: string;\n side: string;\n stopPrice: string;\n icebergQty: string;\n time: number;\n updateTime: number;\n isWorking: boolean;\n}\n\nexport interface ISpotNewOrderResponse {\n symbol: string;\n orderId: number;\n clientOrderId: string;\n transactTime: number;\n}\n\nexport interface IAssetTransferResponse {\n tranId: number;\n}\n\nexport interface IDepositAddress {\n address: string;\n coin: string;\n tag: string;\n url: string;\n}\n\nexport interface ISubAccountSummary {\n email: string;\n isFreeze: boolean;\n createTime: number;\n isManagedSubAccount: boolean;\n isAssetManagementSubAccount: boolean;\n}\n\nexport interface ISubAccountListResponse {\n subAccounts: ISubAccountSummary[];\n}\n\nexport interface IWithdrawRecord {\n id: string;\n amount: string;\n transactionFee: string;\n coin: string;\n status: number;\n address: string;\n txId: string;\n applyTime: Date;\n network: string;\n transferType: number;\n info: string;\n confirmNo: number;\n walletType: number;\n txKey: string;\n completeTime: Date;\n}\n\nexport interface IDepositRecord {\n id: string;\n amount: string;\n coin: string;\n network: string;\n status: number;\n address: string;\n addressTag: string;\n txId: string;\n insertTime: number;\n transferType: number;\n confirmTimes: string;\n unlockConfirm: number;\n walletType: number;\n}\n\nexport interface IUnifiedUmOrderResponse {\n clientOrderId: string;\n cumQty: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n avgPrice: string;\n origQty: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n timeInForce: string;\n type: string;\n selfTradePreventionMode: string;\n goodTillDate: number;\n updateTime: number;\n}\n\nexport interface IUMIncomeRecord {\n symbol: string;\n incomeType: string;\n income: string;\n asset: string;\n info: string;\n time: number;\n tranId: string;\n tradeId: string;\n}\n\nexport interface IAccountIncomeRecord {\n symbol: string;\n incomeType: string;\n income: string;\n asset: string;\n info: string;\n time: number;\n tranId: string;\n tradeId: string;\n}\n\n/**\n * 查询账户信息(USER_DATA)\n *\n * 查询账户信息\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Account-Information\n */\nexport const getUnifiedAccountInfo = (credential: ICredential): Promise<IUnifiedAccountInfo | IApiError> => {\n const endpoint = 'https://papi.binance.com/papi/v1/account';\n const url = new URL(endpoint);\n const weight = 20;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IUnifiedAccountInfo | IApiError>(\n credential,\n 'GET',\n endpoint,\n undefined,\n requestContext,\n );\n};\n\n/**\n * 获取UM账户信息\n *\n * 现有UM账户资产和仓位信息\n *\n * 权重: 5\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Get-UM-Account-Detail\n */\nexport const getUnifiedUmAccount = (credential: ICredential): Promise<IUnifiedUmAccount | IApiError> => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/account';\n const url = new URL(endpoint);\n const weight = 5;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IUnifiedUmAccount | IApiError>(\n credential,\n 'GET',\n endpoint,\n undefined,\n requestContext,\n );\n};\n\n/**\n * 查看当前全部UM挂单(USER_DATA)\n *\n * 查看当前全部UM挂单,请小心使用不带symbol参数的调用\n *\n * 权重: 带symbol 1 - 不带 40\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/trade/Query-All-Current-UM-Open-Orders\n */\nexport const getUnifiedUmOpenOrders = (\n credential: ICredential,\n params?: {\n symbol?: string;\n },\n): Promise<IUnifiedUmOpenOrder[]> => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/openOrders';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 1 : 40;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IUnifiedUmOpenOrder[]>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * 查询账户余额(USER_DATA)\n *\n * 查询账户余额\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Account-Balance\n */\nexport const getUnifiedAccountBalance = (\n credential: ICredential,\n params?: {\n assets?: string;\n },\n): Promise<IUnifiedAccountBalanceEntry[] | IApiError> => {\n const endpoint = 'https://papi.binance.com/papi/v1/balance';\n const url = new URL(endpoint);\n const weight = 20;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IUnifiedAccountBalanceEntry[] | IApiError>(\n credential,\n 'GET',\n endpoint,\n params,\n requestContext,\n );\n};\n\n/**\n * 账户信息 (USER_DATA)\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api#%E8%B4%A6%E6%88%B7%E4%BF%A1%E6%81%AF-user_data\n */\nexport const getSpotAccountInfo = (\n credential: ICredential,\n params?: {\n omitZeroBalances?: boolean;\n },\n): Promise<ISpotAccountInfo | IApiError> => {\n const endpoint = 'https://api.binance.com/api/v3/account';\n const url = new URL(endpoint);\n const weight = 20;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<ISpotAccountInfo | IApiError>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * Current open orders (USER_DATA)\n *\n * 权重: 带symbol: 6 不带: 80\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/account-endpoints#%E6%9F%A5%E7%9C%8B%E8%B4%A6%E6%88%B7%E5%BD%93%E5%89%8D%E6%8C%82%E5%8D%95-user_data\n */\nexport const getSpotOpenOrders = (\n credential: ICredential,\n params?: {\n symbol?: string;\n },\n): Promise<ISpotOrder[] | IApiError> => {\n const endpoint = 'https://api.binance.com/api/v3/openOrders';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 6 : 80;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<ISpotOrder[] | IApiError>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * New order (TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/trading-endpoints#%E4%B8%8B%E5%8D%95-trade\n */\nexport const postSpotOrder = (\n credential: ICredential,\n params: {\n symbol: string;\n side: string;\n type: string;\n timeInForce?: string;\n quantity?: number;\n quoteOrderQty?: number;\n price?: number;\n newClientOrderId?: string;\n strategyId?: number;\n strategyType?: number;\n stopPrice?: number;\n trailingDelta?: number;\n icebergQty?: number;\n newOrderRespType?: string;\n selfTradePreventionMode?: string;\n pegPriceType?: string;\n pegOffsetValue?: number;\n pegOffsetType?: string;\n },\n): Promise<ISpotNewOrderResponse | IApiError> => {\n const endpoint = 'https://api.binance.com/api/v3/order';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<ISpotNewOrderResponse | IApiError>(\n credential,\n 'POST',\n endpoint,\n params,\n requestContext,\n );\n};\n\n/**\n * Cancel order (TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/trading-endpoints#%E6%92%A4%E9%94%80%E8%AE%A2%E5%8D%95-trade\n */\nexport const deleteSpotOrder = (\n credential: ICredential,\n params: {\n symbol: string;\n orderId?: string | number;\n origClientOrderId?: string;\n newClientOrderId?: string;\n cancelRestrictions?: string;\n },\n): Promise<ISpotOrder | IApiError> => {\n const endpoint = 'https://api.binance.com/api/v3/order';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'DELETE', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<ISpotOrder | IApiError>(credential, 'DELETE', endpoint, params, requestContext);\n};\n\n/**\n * 用户万向划转(USER_DATA)\n *\n * 用户万向划转\n *\n * 您需要开通api key 允许万向划转权限来调用此接口。\n *\n * 权重: 900\n *\n * https://developers.binance.com/docs/zh-CN/wallet/asset/user-universal-transfer\n */\nexport const postAssetTransfer = (\n credential: ICredential,\n params: {\n type: string;\n asset: string;\n amount: number;\n fromSymbol?: string;\n toSymbol?: string;\n },\n): Promise<IAssetTransferResponse | IApiError> => {\n const endpoint = 'https://api.binance.com/sapi/v1/asset/transfer';\n const url = new URL(endpoint);\n const weight = 900;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IAssetTransferResponse | IApiError>(\n credential,\n 'POST',\n endpoint,\n params,\n requestContext,\n );\n};\n\n/**\n * 统一账户资金归集(TRADE)\n *\n * 资金归集到统一账户钱包\n *\n * 权重: 750\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Fund-Auto-collection\n *\n * ISSUE(2024-07-18): 目前这是唯一能够将资金从原 U 本位合约账户转入统一账户的接口。\n */\nexport const postUnifiedAccountAutoCollection = (credential: ICredential): Promise<{ msg: string }> => {\n const endpoint = 'https://papi.binance.com/papi/v1/auto-collection';\n const url = new URL(endpoint);\n const weight = 750;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<{ msg: string }>(credential, 'POST', endpoint, undefined, requestContext);\n};\n\n/**\n * 获取充值地址(支持多网络)(USER_DATA)\n *\n * 获取充值地址\n *\n * 权重: 10\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/deposite-address\n */\nexport const getDepositAddress = (\n credential: ICredential,\n params: {\n coin: string;\n network?: string;\n amount?: number;\n },\n): Promise<IDepositAddress> => {\n const endpoint = 'https://api.binance.com/sapi/v1/capital/deposit/address';\n const url = new URL(endpoint);\n const weight = 10;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IDepositAddress>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * 查询子账户列表(适用主账户)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/sub_account/account-management/Query-Sub-account-List\n */\nexport const getSubAccountList = (\n credential: ICredential,\n params?: {\n email?: string;\n isFreeze?: number;\n page?: number;\n limit?: number;\n },\n): Promise<ISubAccountListResponse | IApiError> => {\n const endpoint = 'https://api.binance.com/sapi/v1/sub-account/list';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<ISubAccountListResponse | IApiError>(\n credential,\n 'GET',\n endpoint,\n params,\n requestContext,\n );\n};\n\n/**\n * 提币(USER_DATA)\n *\n * 权重: 600\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/withdraw\n */\nexport const postWithdraw = (\n credential: ICredential,\n params: {\n coin: string;\n withdrawOrderId?: string;\n network?: string;\n address: string;\n addressTag?: string;\n amount: number;\n transactionFeeFlag?: boolean;\n name?: string;\n walletType?: number;\n },\n): Promise<{ id: string } | IApiError> => {\n const endpoint = 'https://api.binance.com/sapi/v1/capital/withdraw/apply';\n const url = new URL(endpoint);\n const weight = 600;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<{ id: string } | IApiError>(credential, 'POST', endpoint, params, requestContext);\n};\n\n/**\n * 获取提币历史(支持多网络)(USER_DATA)\n *\n * 获取提币历史 (支持多网络)\n *\n * 请求权重(IP)#\n * 18000 请求限制: 每秒10次\n *\n * 本接口特别采用每秒UID速率限制,用户的总秒级 UID 速率限制为180000/秒。从该接口收到的响应包含key X-SAPI-USED-UID-WEIGHT-1S,该key定义了当前 UID 使用的权重\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/withdraw-history\n */\nexport const getWithdrawHistory = (\n credential: ICredential,\n params?: {\n coin?: string;\n withdrawOrderId?: string;\n status?: number;\n offset?: number;\n limit?: number;\n startTime?: number;\n endTime?: number;\n },\n): Promise<IWithdrawRecord[]> => {\n const endpoint = 'https://api.binance.com/sapi/v1/capital/withdraw/history';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IWithdrawRecord[]>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * 获取充值历史(支持多网络)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/deposite-history\n */\nexport const getDepositHistory = (\n credential: ICredential,\n params?: {\n includeSource?: boolean;\n coin?: string;\n status?: number;\n startTime?: number;\n endTime?: number;\n offset?: number;\n limit?: number;\n txId?: string;\n },\n): Promise<IDepositRecord[]> => {\n const endpoint = 'https://api.binance.com/sapi/v1/capital/deposit/hisrec';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IDepositRecord[]>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * UM下单(TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/trade/New-UM-Order\n */\nexport const postUmOrder = (\n credential: ICredential,\n params: {\n symbol: string;\n side: string;\n positionSide?: string;\n type: string;\n timeInForce?: string;\n quantity: number;\n reduceOnly?: string;\n price?: number;\n newClientOrderId?: string;\n newOrderRespType?: string;\n selfTradePreventionMode?: string;\n goodTillDate?: number;\n },\n): Promise<IUnifiedUmOrderResponse | IApiError> => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/order';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey('order/unified/minute', requestContext.ip);\n scopeError(\n 'BINANCE_UNIFIED_ORDER_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IUnifiedUmOrderResponse | IApiError>(\n credential,\n 'POST',\n endpoint,\n params,\n requestContext,\n );\n};\n\nexport const deleteUmOrder = (\n credential: ICredential,\n params: {\n symbol: string;\n orderId?: string | number;\n origClientOrderId?: string;\n },\n): Promise<IUnifiedUmOrderResponse | IApiError> => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/order';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey('order/unified/minute', requestContext.ip);\n scopeError(\n 'BINANCE_UNIFIED_ORDER_API_RATE_LIMIT',\n { method: 'DELETE', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IUnifiedUmOrderResponse | IApiError>(\n credential,\n 'DELETE',\n endpoint,\n params,\n requestContext,\n );\n};\n\n/**\n * 获取UM损益资金流水(USER_DATA)\n *\n * 权重: 30\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Get-UM-Income-History\n */\nexport const getUMIncome = (\n credential: ICredential,\n params?: {\n symbol?: string;\n incomeType?: string;\n startTime?: number;\n endTime?: number;\n recvWindow?: number;\n limit?: number;\n timestamp?: number;\n },\n): Promise<IUMIncomeRecord[]> => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/income';\n const url = new URL(endpoint);\n const weight = 30;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IUMIncomeRecord[]>(credential, 'GET', endpoint, params, requestContext);\n};\n/**\n * 获取账户损益资金流水(USER_DATA)\n *\n * 权重: 30\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/account/rest-api/Get-Income-History\n */\nexport const getAccountIncome = (\n credential: ICredential,\n params?: {\n symbol?: string;\n incomeType?: string;\n startTime?: number;\n endTime?: number;\n page?: number;\n recvWindow?: number;\n limit?: number;\n timestamp?: number;\n },\n): Promise<IAccountIncomeRecord[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/income';\n const url = new URL(endpoint);\n const weight = 30;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IAccountIncomeRecord[]>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * Cancel an Existing Order and Send a New Order (TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/trading-endpoints#%E6%92%A4%E9%94%80%E5%B9%B6%E9%87%8D%E6%96%B0%E4%B8%8B%E5%8D%95-trade\n */\nexport const postSpotOrderCancelReplace = (\n credential: ICredential,\n params: {\n symbol: string;\n side: string;\n type: string;\n cancelReplaceMode: string;\n timeInForce?: string;\n quantity?: number;\n quoteOrderQty?: number;\n price?: number;\n cancelNewClientOrderId?: string;\n cancelOrigClientOrderId?: string;\n cancelOrderId?: number;\n newClientOrderId?: string;\n strategyId?: number;\n strategyType?: number;\n stopPrice?: number;\n trailingDelta?: number;\n icebergQty?: number;\n newOrderRespType?: string;\n selfTradePreventionMode?: string;\n pegPriceType?: string;\n pegOffsetValue?: number;\n pegOffsetType?: string;\n },\n): Promise<ISpotNewOrderResponse | IApiError> => {\n const endpoint = 'https://api.binance.com/api/v3/order/cancelReplace';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<ISpotNewOrderResponse | IApiError>(\n credential,\n 'POST',\n endpoint,\n params,\n requestContext,\n );\n};\n\n/**\n * Modify Order (TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/trade/Modify-UM-Order\n */\nexport const putUmOrder = (\n credential: ICredential,\n params: {\n orderId?: number;\n origClientOrderId?: string;\n symbol: string;\n side: string;\n quantity?: number;\n price?: number;\n priceMatch?: string;\n recvWindow?: number;\n timestamp?: number;\n },\n): Promise<IUnifiedUmOrderResponse | IApiError> => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/order';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'PUT', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IUnifiedUmOrderResponse | IApiError>(\n credential,\n 'PUT',\n endpoint,\n params,\n requestContext,\n );\n};\nexport interface IMarginPair {\n id: string;\n symbol: string;\n base: string;\n quote: string;\n isMarginTrade: boolean;\n isBuyAllowed: boolean;\n isSellAllowed: boolean;\n}\n\n/**\n * 获取所有全仓杠杆交易对(MARKET_DATA)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/margin_trading/market-data/Get-All-Cross-Margin-Pairs\n */\nexport const getMarginAllPairs = (params?: { symbol?: string }): Promise<IMarginPair[]> => {\n const credential = getDefaultCredential();\n const endpoint = 'https://api.binance.com/sapi/v1/margin/allPairs';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<IMarginPair[]>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * Get a future hourly interest rate\n *\n * https://developers.binance.com/docs/zh-CN/margin_trading/borrow-and-repay/Get-a-future-hourly-interest-rate\n */\nexport const getMarginNextHourlyInterestRate = (params: {\n assets: string;\n isIsolated: boolean;\n}): Promise<\n {\n asset: string;\n nextHourlyInterestRate: string;\n }[]\n> => {\n const credential = getDefaultCredential();\n const endpoint = 'https://api.binance.com/sapi/v1/margin/next-hourly-interest-rate';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<\n {\n asset: string;\n nextHourlyInterestRate: string;\n }[]\n >(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * Query Margin Interest Rate History\n *\n * https://developers.binance.com/docs/zh-CN/margin_trading/borrow-and-repay/Query-Margin-Interest-Rate-History\n */\nexport const getMarginInterestRateHistory = (params: {\n asset: string;\n vipLevel?: number;\n startTime?: number;\n endTime?: number;\n limit?: number;\n}): Promise<\n {\n asset: string;\n dailyInterestRate: string;\n timestamp: number;\n vipLevel: number;\n }[]\n> => {\n const credential = getDefaultCredential();\n const endpoint = 'https://api.binance.com/sapi/v1/margin/interestRateHistory';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<\n {\n asset: string;\n dailyInterestRate: string;\n timestamp: number;\n vipLevel: number;\n }[]\n >(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n *获取用户持仓\n * @param credential\n * https://developers.binance.com/docs/zh-CN/wallet/asset/user-assets#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0\n * @param params\n * @returns\n */\nexport const getUserAsset = (\n credential: ICredential,\n params: {\n timestamp: number;\n asset?: string;\n needBtcValuation?: boolean;\n recvWindow?: number;\n },\n) => {\n const endpoint = 'https://api.binance.com/sapi/v3/asset/getUserAsset';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<\n | {\n asset: string;\n free: string;\n locked: string;\n freeze: string;\n withdrawing: string;\n ipoable: string;\n btcValuation: string;\n }[]\n | IApiError\n >(credential, 'POST', endpoint, params, requestContext);\n};\n\n/**\n * 查询资金账户\n * @param credential\n * https://developers.binance.com/docs/zh-CN/wallet/asset/funding-wallet?utm_source=chatgpt.com\n * @param params\n * @returns\n */\nexport const getFundingAsset = (\n credential: ICredential,\n params: {\n timestamp: number;\n asset?: string;\n needBtcValuation?: boolean;\n recvWindow?: number;\n },\n) => {\n const endpoint = 'https://api.binance.com/sapi/v1/asset/get-funding-asset';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<\n | {\n asset: string;\n free: string;\n locked: string;\n freeze: string;\n withdrawing: string;\n ipoable: string;\n btcValuation: string;\n }[]\n | IApiError\n >(credential, 'POST', endpoint, params, requestContext);\n};\n\n/**\n * UM账户成交历史 (USER_DATA)\n * @param credential\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/trade/UM-Account-Trade-List\n * @param params\n * @returns\n */\nexport const getUmAccountTradeList = (\n credential: ICredential,\n params: {\n symbol: string;\n timestamp: number;\n fromId?: number;\n startTime?: number;\n endTime?: number;\n limit?: number;\n recvWindow?: number;\n },\n) => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/userTrades';\n const url = new URL(endpoint);\n const weight = 5;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPrivate<\n | {\n symbol: string;\n id: number;\n orderId: number;\n side: string;\n price: string;\n qty: string;\n realizedPnl: string;\n quoteQty: string;\n commission: string;\n commissionAsset: string;\n time: number;\n buyer: boolean;\n maker: boolean;\n positionSide: string;\n }[]\n | IApiError\n >(credential, 'GET', endpoint, params, requestContext);\n};\n"]}
|
|
1
|
+
{"version":3,"file":"private-api.js","sourceRoot":"","sources":["../../src/api/private-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { scopeError, tokenBucket } from '@yuants/utils';\n\nimport {\n buildTokenBucketKey,\n createRequestContext,\n getDefaultCredential,\n getTokenBucketOptions,\n IApiError,\n ICredential,\n requestPrivate,\n} from './client';\nexport type { ICredential };\n\nexport interface IUnifiedAccountInfo {\n uniMMR: string;\n accountEquity: string;\n actualEquity: string;\n accountInitialMargin: string;\n accountMaintMargin: string;\n accountStatus: string;\n virtualMaxWithdrawAmount: string;\n totalAvailableBalance: string;\n totalMarginOpenLoss: string;\n updateTime: number;\n}\n\nexport interface IUnifiedUmAsset {\n asset: string;\n crossWalletBalance: string;\n crossUnPnl: string;\n maintMargin: string;\n initialMargin: string;\n positionInitialMargin: string;\n openOrderInitialMargin: string;\n updateTime: number;\n}\n\nexport interface IUnifiedUmPosition {\n symbol: string;\n initialMargin: string;\n maintMargin: string;\n unrealizedProfit: string;\n positionInitialMargin: string;\n openOrderInitialMargin: string;\n leverage: string;\n entryPrice: string;\n maxNotional: string;\n bidNotional: string;\n askNotional: string;\n positionSide: string;\n positionAmt: string;\n updateTime: number;\n}\n\nexport interface IUnifiedUmAccount {\n assets: IUnifiedUmAsset[];\n positions: IUnifiedUmPosition[];\n}\n\nexport interface IUnifiedUmOpenOrder {\n avgPrice: string;\n clientOrderId: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n origQty: string;\n origType: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n time: number;\n timeInForce: string;\n type: string;\n updateTime: number;\n selfTradePreventionMode: string;\n goodTillDate: number;\n}\n\nexport interface IUnifiedAccountBalanceEntry {\n asset: string;\n totalWalletBalance: string;\n crossMarginAsset: string;\n crossMarginBorrowed: string;\n crossMarginFree: string;\n crossMarginInterest: string;\n crossMarginLocked: string;\n umWalletBalance: string;\n umUnrealizedPNL: string;\n cmWalletBalance: string;\n cmUnrealizedPNL: string;\n updateTime: number;\n}\n\nexport interface ISpotAccountInfo {\n makerCommission: number;\n takerCommission: number;\n buyerCommission: number;\n sellerCommission: number;\n commissionRates: {\n maker: string;\n taker: string;\n buyer: string;\n seller: string;\n };\n canTrade: boolean;\n canWithdraw: boolean;\n canDeposit: boolean;\n brokered: boolean;\n requireSelfTradePrevention: boolean;\n preventSor: boolean;\n updateTime: number;\n balances: {\n asset: string;\n free: string;\n locked: string;\n }[];\n permissions: string[];\n uid: number;\n}\n\nexport interface ISpotOrder {\n symbol: string;\n orderId: number;\n orderListId: number;\n clientOrderId: string;\n price: string;\n origQty: string;\n executedQty: string;\n origQuoteOrderQty: string;\n cummulativeQuoteQty: string;\n status: string;\n timeInForce: string;\n type: string;\n side: string;\n stopPrice: string;\n icebergQty: string;\n time: number;\n updateTime: number;\n isWorking: boolean;\n}\n\nexport interface ISpotNewOrderResponse {\n symbol: string;\n orderId: number;\n clientOrderId: string;\n transactTime: number;\n}\n\nexport interface IAssetTransferResponse {\n tranId: number;\n}\n\nexport interface IDepositAddress {\n address: string;\n coin: string;\n tag: string;\n url: string;\n}\n\nexport interface ISubAccountSummary {\n email: string;\n isFreeze: boolean;\n createTime: number;\n isManagedSubAccount: boolean;\n isAssetManagementSubAccount: boolean;\n}\n\nexport interface ISubAccountListResponse {\n subAccounts: ISubAccountSummary[];\n}\n\nexport interface IWithdrawRecord {\n id: string;\n amount: string;\n transactionFee: string;\n coin: string;\n status: number;\n address: string;\n txId: string;\n applyTime: Date;\n network: string;\n transferType: number;\n info: string;\n confirmNo: number;\n walletType: number;\n txKey: string;\n completeTime: Date;\n}\n\nexport interface IDepositRecord {\n id: string;\n amount: string;\n coin: string;\n network: string;\n status: number;\n address: string;\n addressTag: string;\n txId: string;\n insertTime: number;\n transferType: number;\n confirmTimes: string;\n unlockConfirm: number;\n walletType: number;\n}\n\nexport interface IUnifiedUmOrderResponse {\n clientOrderId: string;\n cumQty: string;\n cumQuote: string;\n executedQty: string;\n orderId: number;\n avgPrice: string;\n origQty: string;\n price: string;\n reduceOnly: boolean;\n side: string;\n positionSide: string;\n status: string;\n symbol: string;\n timeInForce: string;\n type: string;\n selfTradePreventionMode: string;\n goodTillDate: number;\n updateTime: number;\n}\n\nexport interface IUMIncomeRecord {\n symbol: string;\n incomeType: string;\n income: string;\n asset: string;\n info: string;\n time: number;\n tranId: string;\n tradeId: string;\n}\n\nexport interface IAccountIncomeRecord {\n symbol: string;\n incomeType: string;\n income: string;\n asset: string;\n info: string;\n time: number;\n tranId: string;\n tradeId: string;\n}\n\n/**\n * 查询账户信息(USER_DATA)\n *\n * 查询账户信息\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Account-Information\n */\nexport const getUnifiedAccountInfo = async (\n credential: ICredential,\n): Promise<IUnifiedAccountInfo | IApiError> => {\n const endpoint = 'https://papi.binance.com/papi/v1/account';\n const url = new URL(endpoint);\n const weight = 20;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions('order/unified/minute')).acquireSync(weight),\n );\n return requestPrivate<IUnifiedAccountInfo | IApiError>(\n credential,\n 'GET',\n endpoint,\n undefined,\n requestContext,\n );\n};\n\n/**\n * 获取UM账户信息\n *\n * 现有UM账户资产和仓位信息\n *\n * 权重: 5\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Get-UM-Account-Detail\n */\nexport const getUnifiedUmAccount = async (\n credential: ICredential,\n): Promise<IUnifiedUmAccount | IApiError> => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/account';\n const url = new URL(endpoint);\n const weight = 5;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions('order/unified/minute')).acquireSync(weight),\n );\n return requestPrivate<IUnifiedUmAccount | IApiError>(\n credential,\n 'GET',\n endpoint,\n undefined,\n requestContext,\n );\n};\n\n/**\n * 查看当前全部UM挂单(USER_DATA)\n *\n * 查看当前全部UM挂单,请小心使用不带symbol参数的调用\n *\n * 权重: 带symbol 1 - 不带 40\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/trade/Query-All-Current-UM-Open-Orders\n */\nexport const getUnifiedUmOpenOrders = async (\n credential: ICredential,\n params?: {\n symbol?: string;\n },\n): Promise<IUnifiedUmOpenOrder[]> => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/openOrders';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 1 : 40;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<IUnifiedUmOpenOrder[]>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * 查询账户余额(USER_DATA)\n *\n * 查询账户余额\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Account-Balance\n */\nexport const getUnifiedAccountBalance = async (\n credential: ICredential,\n params?: {\n assets?: string;\n },\n): Promise<IUnifiedAccountBalanceEntry[] | IApiError> => {\n const endpoint = 'https://papi.binance.com/papi/v1/balance';\n const url = new URL(endpoint);\n const weight = 20;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<IUnifiedAccountBalanceEntry[] | IApiError>(\n credential,\n 'GET',\n endpoint,\n params,\n requestContext,\n );\n};\n\n/**\n * 账户信息 (USER_DATA)\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api#%E8%B4%A6%E6%88%B7%E4%BF%A1%E6%81%AF-user_data\n */\nexport const getSpotAccountInfo = async (\n credential: ICredential,\n params?: {\n omitZeroBalances?: boolean;\n },\n): Promise<ISpotAccountInfo | IApiError> => {\n const endpoint = 'https://api.binance.com/api/v3/account';\n const url = new URL(endpoint);\n const weight = 20;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<ISpotAccountInfo | IApiError>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * Current open orders (USER_DATA)\n *\n * 权重: 带symbol: 6 不带: 80\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/account-endpoints#%E6%9F%A5%E7%9C%8B%E8%B4%A6%E6%88%B7%E5%BD%93%E5%89%8D%E6%8C%82%E5%8D%95-user_data\n */\nexport const getSpotOpenOrders = async (\n credential: ICredential,\n params?: {\n symbol?: string;\n },\n): Promise<ISpotOrder[] | IApiError> => {\n const endpoint = 'https://api.binance.com/api/v3/openOrders';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 6 : 80;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<ISpotOrder[] | IApiError>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * New order (TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/trading-endpoints#%E4%B8%8B%E5%8D%95-trade\n */\nexport const postSpotOrder = async (\n credential: ICredential,\n params: {\n symbol: string;\n side: string;\n type: string;\n timeInForce?: string;\n quantity?: number;\n quoteOrderQty?: number;\n price?: number;\n newClientOrderId?: string;\n strategyId?: number;\n strategyType?: number;\n stopPrice?: number;\n trailingDelta?: number;\n icebergQty?: number;\n newOrderRespType?: string;\n selfTradePreventionMode?: string;\n pegPriceType?: string;\n pegOffsetValue?: number;\n pegOffsetType?: string;\n },\n): Promise<ISpotNewOrderResponse | IApiError> => {\n const endpoint = 'https://api.binance.com/api/v3/order';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<ISpotNewOrderResponse | IApiError>(\n credential,\n 'POST',\n endpoint,\n params,\n requestContext,\n );\n};\n\n/**\n * Cancel order (TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/trading-endpoints#%E6%92%A4%E9%94%80%E8%AE%A2%E5%8D%95-trade\n */\nexport const deleteSpotOrder = async (\n credential: ICredential,\n params: {\n symbol: string;\n orderId?: string | number;\n origClientOrderId?: string;\n newClientOrderId?: string;\n cancelRestrictions?: string;\n },\n): Promise<ISpotOrder | IApiError> => {\n const endpoint = 'https://api.binance.com/api/v3/order';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'DELETE', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<ISpotOrder | IApiError>(credential, 'DELETE', endpoint, params, requestContext);\n};\n\n/**\n * 用户万向划转(USER_DATA)\n *\n * 用户万向划转\n *\n * 您需要开通api key 允许万向划转权限来调用此接口。\n *\n * 权重: 900\n *\n * https://developers.binance.com/docs/zh-CN/wallet/asset/user-universal-transfer\n */\nexport const postAssetTransfer = async (\n credential: ICredential,\n params: {\n type: string;\n asset: string;\n amount: number;\n fromSymbol?: string;\n toSymbol?: string;\n },\n): Promise<IAssetTransferResponse | IApiError> => {\n const endpoint = 'https://api.binance.com/sapi/v1/asset/transfer';\n const url = new URL(endpoint);\n const weight = 900;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<IAssetTransferResponse | IApiError>(\n credential,\n 'POST',\n endpoint,\n params,\n requestContext,\n );\n};\n\n/**\n * 统一账户资金归集(TRADE)\n *\n * 资金归集到统一账户钱包\n *\n * 权重: 750\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Fund-Auto-collection\n *\n * ISSUE(2024-07-18): 目前这是唯一能够将资金从原 U 本位合约账户转入统一账户的接口。\n */\nexport const postUnifiedAccountAutoCollection = async (credential: ICredential): Promise<{ msg: string }> => {\n const endpoint = 'https://papi.binance.com/papi/v1/auto-collection';\n const url = new URL(endpoint);\n const weight = 750;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<{ msg: string }>(credential, 'POST', endpoint, undefined, requestContext);\n};\n\n/**\n * 获取充值地址(支持多网络)(USER_DATA)\n *\n * 获取充值地址\n *\n * 权重: 10\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/deposite-address\n */\nexport const getDepositAddress = async (\n credential: ICredential,\n params: {\n coin: string;\n network?: string;\n amount?: number;\n },\n): Promise<IDepositAddress> => {\n const endpoint = 'https://api.binance.com/sapi/v1/capital/deposit/address';\n const url = new URL(endpoint);\n const weight = 10;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<IDepositAddress>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * 查询子账户列表(适用主账户)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/sub_account/account-management/Query-Sub-account-List\n */\nexport const getSubAccountList = async (\n credential: ICredential,\n params?: {\n email?: string;\n isFreeze?: number;\n page?: number;\n limit?: number;\n },\n): Promise<ISubAccountListResponse | IApiError> => {\n const endpoint = 'https://api.binance.com/sapi/v1/sub-account/list';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<ISubAccountListResponse | IApiError>(\n credential,\n 'GET',\n endpoint,\n params,\n requestContext,\n );\n};\n\n/**\n * 提币(USER_DATA)\n *\n * 权重: 600\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/withdraw\n */\nexport const postWithdraw = async (\n credential: ICredential,\n params: {\n coin: string;\n withdrawOrderId?: string;\n network?: string;\n address: string;\n addressTag?: string;\n amount: number;\n transactionFeeFlag?: boolean;\n name?: string;\n walletType?: number;\n },\n): Promise<{ id: string } | IApiError> => {\n const endpoint = 'https://api.binance.com/sapi/v1/capital/withdraw/apply';\n const url = new URL(endpoint);\n const weight = 600;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<{ id: string } | IApiError>(credential, 'POST', endpoint, params, requestContext);\n};\n\n/**\n * 获取提币历史(支持多网络)(USER_DATA)\n *\n * 获取提币历史 (支持多网络)\n *\n * 请求权重(IP)#\n * 18000 请求限制: 每秒10次\n *\n * 本接口特别采用每秒UID速率限制,用户的总秒级 UID 速率限制为180000/秒。从该接口收到的响应包含key X-SAPI-USED-UID-WEIGHT-1S,该key定义了当前 UID 使用的权重\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/withdraw-history\n */\nexport const getWithdrawHistory = async (\n credential: ICredential,\n params?: {\n coin?: string;\n withdrawOrderId?: string;\n status?: number;\n offset?: number;\n limit?: number;\n startTime?: number;\n endTime?: number;\n },\n): Promise<IWithdrawRecord[]> => {\n const endpoint = 'https://api.binance.com/sapi/v1/capital/withdraw/history';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<IWithdrawRecord[]>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * 获取充值历史(支持多网络)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/wallet/capital/deposite-history\n */\nexport const getDepositHistory = async (\n credential: ICredential,\n params?: {\n includeSource?: boolean;\n coin?: string;\n status?: number;\n startTime?: number;\n endTime?: number;\n offset?: number;\n limit?: number;\n txId?: string;\n },\n): Promise<IDepositRecord[]> => {\n const endpoint = 'https://api.binance.com/sapi/v1/capital/deposit/hisrec';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<IDepositRecord[]>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * UM下单(TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/trade/New-UM-Order\n */\nexport const postUmOrder = async (\n credential: ICredential,\n params: {\n symbol: string;\n side: string;\n positionSide?: string;\n type: string;\n timeInForce?: string;\n quantity: number;\n reduceOnly?: string;\n price?: number;\n newClientOrderId?: string;\n newOrderRespType?: string;\n selfTradePreventionMode?: string;\n goodTillDate?: number;\n },\n): Promise<IUnifiedUmOrderResponse | IApiError> => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/order';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey('order/unified/minute', requestContext.ip);\n scopeError(\n 'BINANCE_UNIFIED_ORDER_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<IUnifiedUmOrderResponse | IApiError>(\n credential,\n 'POST',\n endpoint,\n params,\n requestContext,\n );\n};\n\nexport const deleteUmOrder = async (\n credential: ICredential,\n params: {\n symbol: string;\n orderId?: string | number;\n origClientOrderId?: string;\n },\n): Promise<IUnifiedUmOrderResponse | IApiError> => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/order';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey('order/unified/minute', requestContext.ip);\n scopeError(\n 'BINANCE_UNIFIED_ORDER_API_RATE_LIMIT',\n { method: 'DELETE', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<IUnifiedUmOrderResponse | IApiError>(\n credential,\n 'DELETE',\n endpoint,\n params,\n requestContext,\n );\n};\n\n/**\n * 获取UM损益资金流水(USER_DATA)\n *\n * 权重: 30\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/account/Get-UM-Income-History\n */\nexport const getUMIncome = async (\n credential: ICredential,\n params?: {\n symbol?: string;\n incomeType?: string;\n startTime?: number;\n endTime?: number;\n recvWindow?: number;\n limit?: number;\n timestamp?: number;\n },\n): Promise<IUMIncomeRecord[]> => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/income';\n const url = new URL(endpoint);\n const weight = 30;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<IUMIncomeRecord[]>(credential, 'GET', endpoint, params, requestContext);\n};\n/**\n * 获取账户损益资金流水(USER_DATA)\n *\n * 权重: 30\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/account/rest-api/Get-Income-History\n */\nexport const getAccountIncome = async (\n credential: ICredential,\n params?: {\n symbol?: string;\n incomeType?: string;\n startTime?: number;\n endTime?: number;\n page?: number;\n recvWindow?: number;\n limit?: number;\n timestamp?: number;\n },\n): Promise<IAccountIncomeRecord[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/income';\n const url = new URL(endpoint);\n const weight = 30;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<IAccountIncomeRecord[]>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * Cancel an Existing Order and Send a New Order (TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/trading-endpoints#%E6%92%A4%E9%94%80%E5%B9%B6%E9%87%8D%E6%96%B0%E4%B8%8B%E5%8D%95-trade\n */\nexport const postSpotOrderCancelReplace = async (\n credential: ICredential,\n params: {\n symbol: string;\n side: string;\n type: string;\n cancelReplaceMode: string;\n timeInForce?: string;\n quantity?: number;\n quoteOrderQty?: number;\n price?: number;\n cancelNewClientOrderId?: string;\n cancelOrigClientOrderId?: string;\n cancelOrderId?: number;\n newClientOrderId?: string;\n strategyId?: number;\n strategyType?: number;\n stopPrice?: number;\n trailingDelta?: number;\n icebergQty?: number;\n newOrderRespType?: string;\n selfTradePreventionMode?: string;\n pegPriceType?: string;\n pegOffsetValue?: number;\n pegOffsetType?: string;\n },\n): Promise<ISpotNewOrderResponse | IApiError> => {\n const endpoint = 'https://api.binance.com/api/v3/order/cancelReplace';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<ISpotNewOrderResponse | IApiError>(\n credential,\n 'POST',\n endpoint,\n params,\n requestContext,\n );\n};\n\n/**\n * Modify Order (TRADE)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/trade/Modify-UM-Order\n */\nexport const putUmOrder = async (\n credential: ICredential,\n params: {\n orderId?: number;\n origClientOrderId?: string;\n symbol: string;\n side: string;\n quantity?: number;\n price?: number;\n priceMatch?: string;\n recvWindow?: number;\n timestamp?: number;\n },\n): Promise<IUnifiedUmOrderResponse | IApiError> => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/order';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'PUT', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<IUnifiedUmOrderResponse | IApiError>(\n credential,\n 'PUT',\n endpoint,\n params,\n requestContext,\n );\n};\nexport interface IMarginPair {\n id: string;\n symbol: string;\n base: string;\n quote: string;\n isMarginTrade: boolean;\n isBuyAllowed: boolean;\n isSellAllowed: boolean;\n}\n\n/**\n * 获取所有全仓杠杆交易对(MARKET_DATA)\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/margin_trading/market-data/Get-All-Cross-Margin-Pairs\n */\nexport const getMarginAllPairs = async (params?: { symbol?: string }): Promise<IMarginPair[]> => {\n const credential = getDefaultCredential();\n const endpoint = 'https://api.binance.com/sapi/v1/margin/allPairs';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<IMarginPair[]>(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * Get a future hourly interest rate\n *\n * https://developers.binance.com/docs/zh-CN/margin_trading/borrow-and-repay/Get-a-future-hourly-interest-rate\n */\nexport const getMarginNextHourlyInterestRate = async (params: {\n assets: string;\n isIsolated: boolean;\n}): Promise<\n {\n asset: string;\n nextHourlyInterestRate: string;\n }[]\n> => {\n const credential = getDefaultCredential();\n const endpoint = 'https://api.binance.com/sapi/v1/margin/next-hourly-interest-rate';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<\n {\n asset: string;\n nextHourlyInterestRate: string;\n }[]\n >(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n * Query Margin Interest Rate History\n *\n * https://developers.binance.com/docs/zh-CN/margin_trading/borrow-and-repay/Query-Margin-Interest-Rate-History\n */\nexport const getMarginInterestRateHistory = async (params: {\n asset: string;\n vipLevel?: number;\n startTime?: number;\n endTime?: number;\n limit?: number;\n}): Promise<\n {\n asset: string;\n dailyInterestRate: string;\n timestamp: number;\n vipLevel: number;\n }[]\n> => {\n const credential = getDefaultCredential();\n const endpoint = 'https://api.binance.com/sapi/v1/margin/interestRateHistory';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<\n {\n asset: string;\n dailyInterestRate: string;\n timestamp: number;\n vipLevel: number;\n }[]\n >(credential, 'GET', endpoint, params, requestContext);\n};\n\n/**\n *获取用户持仓\n * @param credential\n * https://developers.binance.com/docs/zh-CN/wallet/asset/user-assets#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0\n * @param params\n * @returns\n */\nexport const getUserAsset = async (\n credential: ICredential,\n params: {\n timestamp: number;\n asset?: string;\n needBtcValuation?: boolean;\n recvWindow?: number;\n },\n) => {\n const endpoint = 'https://api.binance.com/sapi/v3/asset/getUserAsset';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<\n | {\n asset: string;\n free: string;\n locked: string;\n freeze: string;\n withdrawing: string;\n ipoable: string;\n btcValuation: string;\n }[]\n | IApiError\n >(credential, 'POST', endpoint, params, requestContext);\n};\n\n/**\n * 查询资金账户\n * @param credential\n * https://developers.binance.com/docs/zh-CN/wallet/asset/funding-wallet?utm_source=chatgpt.com\n * @param params\n * @returns\n */\nexport const getFundingAsset = async (\n credential: ICredential,\n params: {\n timestamp: number;\n asset?: string;\n needBtcValuation?: boolean;\n recvWindow?: number;\n },\n) => {\n const endpoint = 'https://api.binance.com/sapi/v1/asset/get-funding-asset';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'POST', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<\n | {\n asset: string;\n free: string;\n locked: string;\n freeze: string;\n withdrawing: string;\n ipoable: string;\n btcValuation: string;\n }[]\n | IApiError\n >(credential, 'POST', endpoint, params, requestContext);\n};\n\n/**\n * UM账户成交历史 (USER_DATA)\n * @param credential\n * https://developers.binance.com/docs/zh-CN/derivatives/portfolio-margin/trade/UM-Account-Trade-List\n * @param params\n * @returns\n */\nexport const getUmAccountTradeList = async (\n credential: ICredential,\n params: {\n symbol: string;\n timestamp: number;\n fromId?: number;\n startTime?: number;\n endTime?: number;\n limit?: number;\n recvWindow?: number;\n },\n) => {\n const endpoint = 'https://papi.binance.com/papi/v1/um/userTrades';\n const url = new URL(endpoint);\n const weight = 5;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPrivate<\n | {\n symbol: string;\n id: number;\n orderId: number;\n side: string;\n price: string;\n qty: string;\n realizedPnl: string;\n quoteQty: string;\n commission: string;\n commissionAsset: string;\n time: number;\n buyer: boolean;\n maker: boolean;\n positionSide: string;\n }[]\n | IApiError\n >(credential, 'GET', endpoint, params, requestContext);\n};\n"]}
|
package/dist/api/public-api.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { scopeError, tokenBucket } from '@yuants/utils';
|
|
2
|
-
import { buildTokenBucketKey, createRequestContext, requestPublic } from './client';
|
|
2
|
+
import { buildTokenBucketKey, createRequestContext, getTokenBucketOptions, requestPublic } from './client';
|
|
3
3
|
/**
|
|
4
4
|
* 获取交易规则和交易对
|
|
5
5
|
*
|
|
@@ -7,13 +7,13 @@ import { buildTokenBucketKey, createRequestContext, requestPublic } from './clie
|
|
|
7
7
|
*
|
|
8
8
|
* https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Exchange-Information
|
|
9
9
|
*/
|
|
10
|
-
export const getFutureExchangeInfo = () => {
|
|
10
|
+
export const getFutureExchangeInfo = async () => {
|
|
11
11
|
const endpoint = 'https://fapi.binance.com/fapi/v1/exchangeInfo';
|
|
12
12
|
const url = new URL(endpoint);
|
|
13
13
|
const weight = 1;
|
|
14
|
-
const requestContext = createRequestContext();
|
|
14
|
+
const requestContext = await createRequestContext();
|
|
15
15
|
const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);
|
|
16
|
-
scopeError('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => tokenBucket(bucketKey).acquireSync(weight));
|
|
16
|
+
scopeError('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight));
|
|
17
17
|
return requestPublic('GET', endpoint, undefined, requestContext);
|
|
18
18
|
};
|
|
19
19
|
/**
|
|
@@ -23,11 +23,11 @@ export const getFutureExchangeInfo = () => {
|
|
|
23
23
|
*
|
|
24
24
|
* https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Get-Funding-Rate-History
|
|
25
25
|
*/
|
|
26
|
-
export const getFutureFundingRate = (params) => {
|
|
26
|
+
export const getFutureFundingRate = async (params) => {
|
|
27
27
|
const endpoint = 'https://fapi.binance.com/fapi/v1/fundingRate';
|
|
28
28
|
const url = new URL(endpoint);
|
|
29
29
|
const weight = 1;
|
|
30
|
-
const requestContext = createRequestContext();
|
|
30
|
+
const requestContext = await createRequestContext();
|
|
31
31
|
const bucketKey = buildTokenBucketKey(url.host + 'fundingRate', requestContext.ip);
|
|
32
32
|
scopeError('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => tokenBucket(bucketKey, {
|
|
33
33
|
capacity: 500,
|
|
@@ -43,11 +43,11 @@ export const getFutureFundingRate = (params) => {
|
|
|
43
43
|
*
|
|
44
44
|
* https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Get-Funding-Rate-Info
|
|
45
45
|
*/
|
|
46
|
-
export const getFutureFundingInfo = () => {
|
|
46
|
+
export const getFutureFundingInfo = async () => {
|
|
47
47
|
const endpoint = 'https://fapi.binance.com/fapi/v1/fundingInfo';
|
|
48
48
|
const url = new URL(endpoint);
|
|
49
49
|
const weight = 1;
|
|
50
|
-
const requestContext = createRequestContext();
|
|
50
|
+
const requestContext = await createRequestContext();
|
|
51
51
|
const bucketKey = buildTokenBucketKey(url.host + 'fundingRate', requestContext.ip);
|
|
52
52
|
scopeError('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => tokenBucket(bucketKey, {
|
|
53
53
|
capacity: 500,
|
|
@@ -65,11 +65,11 @@ export const getFutureFundingInfo = () => {
|
|
|
65
65
|
*
|
|
66
66
|
* https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Mark-Price
|
|
67
67
|
*/
|
|
68
|
-
export const getFuturePremiumIndex = (params) => {
|
|
68
|
+
export const getFuturePremiumIndex = async (params) => {
|
|
69
69
|
const endpoint = 'https://fapi.binance.com/fapi/v1/premiumIndex';
|
|
70
70
|
const url = new URL(endpoint);
|
|
71
71
|
const weight = (params === null || params === void 0 ? void 0 : params.symbol) ? 1 : 10;
|
|
72
|
-
const requestContext = createRequestContext();
|
|
72
|
+
const requestContext = await createRequestContext();
|
|
73
73
|
const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);
|
|
74
74
|
scopeError('BINANCE_API_RATE_LIMIT', {
|
|
75
75
|
method: 'GET',
|
|
@@ -79,7 +79,7 @@ export const getFuturePremiumIndex = (params) => {
|
|
|
79
79
|
bucketId: bucketKey,
|
|
80
80
|
weight,
|
|
81
81
|
hasSymbol: !!(params === null || params === void 0 ? void 0 : params.symbol),
|
|
82
|
-
}, () => tokenBucket(bucketKey).acquireSync(weight));
|
|
82
|
+
}, () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight));
|
|
83
83
|
return requestPublic('GET', endpoint, params, requestContext);
|
|
84
84
|
};
|
|
85
85
|
/**
|
|
@@ -91,11 +91,11 @@ export const getFuturePremiumIndex = (params) => {
|
|
|
91
91
|
*
|
|
92
92
|
* https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Symbol-Order-Book-Ticker
|
|
93
93
|
*/
|
|
94
|
-
export const getFutureBookTicker = (params) => {
|
|
94
|
+
export const getFutureBookTicker = async (params) => {
|
|
95
95
|
const endpoint = 'https://fapi.binance.com/fapi/v1/ticker/bookTicker';
|
|
96
96
|
const url = new URL(endpoint);
|
|
97
97
|
const weight = (params === null || params === void 0 ? void 0 : params.symbol) ? 2 : 5;
|
|
98
|
-
const requestContext = createRequestContext();
|
|
98
|
+
const requestContext = await createRequestContext();
|
|
99
99
|
const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);
|
|
100
100
|
scopeError('BINANCE_API_RATE_LIMIT', {
|
|
101
101
|
method: 'GET',
|
|
@@ -105,7 +105,7 @@ export const getFutureBookTicker = (params) => {
|
|
|
105
105
|
bucketId: bucketKey,
|
|
106
106
|
weight,
|
|
107
107
|
hasSymbol: !!(params === null || params === void 0 ? void 0 : params.symbol),
|
|
108
|
-
}, () => tokenBucket(bucketKey).acquireSync(weight));
|
|
108
|
+
}, () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight));
|
|
109
109
|
return requestPublic('GET', endpoint, params, requestContext);
|
|
110
110
|
};
|
|
111
111
|
/**
|
|
@@ -117,13 +117,13 @@ export const getFutureBookTicker = (params) => {
|
|
|
117
117
|
*
|
|
118
118
|
* https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Open-Interest
|
|
119
119
|
*/
|
|
120
|
-
export const getFutureOpenInterest = (params) => {
|
|
120
|
+
export const getFutureOpenInterest = async (params) => {
|
|
121
121
|
const endpoint = 'https://fapi.binance.com/fapi/v1/openInterest';
|
|
122
122
|
const url = new URL(endpoint);
|
|
123
123
|
const weight = 1;
|
|
124
|
-
const requestContext = createRequestContext();
|
|
124
|
+
const requestContext = await createRequestContext();
|
|
125
125
|
const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);
|
|
126
|
-
scopeError('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => tokenBucket(bucketKey).acquireSync(weight));
|
|
126
|
+
scopeError('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight));
|
|
127
127
|
return requestPublic('GET', endpoint, params, requestContext);
|
|
128
128
|
};
|
|
129
129
|
/**
|
|
@@ -133,11 +133,11 @@ export const getFutureOpenInterest = (params) => {
|
|
|
133
133
|
*
|
|
134
134
|
* https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/market-data-endpoints#%E6%9C%80%E4%BC%98%E6%8C%82%E5%8D%95%E6%8E%A5%E5%8F%A3
|
|
135
135
|
*/
|
|
136
|
-
export const getSpotBookTicker = (params) => {
|
|
136
|
+
export const getSpotBookTicker = async (params) => {
|
|
137
137
|
const endpoint = 'https://api.binance.com/api/v3/ticker/bookTicker';
|
|
138
138
|
const url = new URL(endpoint);
|
|
139
139
|
const weight = (params === null || params === void 0 ? void 0 : params.symbol) ? 2 : 4;
|
|
140
|
-
const requestContext = createRequestContext();
|
|
140
|
+
const requestContext = await createRequestContext();
|
|
141
141
|
const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);
|
|
142
142
|
scopeError('BINANCE_API_RATE_LIMIT', {
|
|
143
143
|
method: 'GET',
|
|
@@ -147,7 +147,7 @@ export const getSpotBookTicker = (params) => {
|
|
|
147
147
|
bucketId: bucketKey,
|
|
148
148
|
weight,
|
|
149
149
|
hasSymbol: !!(params === null || params === void 0 ? void 0 : params.symbol),
|
|
150
|
-
}, () => tokenBucket(bucketKey).acquireSync(weight));
|
|
150
|
+
}, () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight));
|
|
151
151
|
return requestPublic('GET', endpoint, params, requestContext);
|
|
152
152
|
};
|
|
153
153
|
/**
|
|
@@ -157,13 +157,13 @@ export const getSpotBookTicker = (params) => {
|
|
|
157
157
|
*
|
|
158
158
|
* https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/general-endpoints#%E4%BA%A4%E6%98%93%E8%A7%84%E8%8C%83%E4%BF%A1%E6%81%AF
|
|
159
159
|
*/
|
|
160
|
-
export const getSpotExchangeInfo = () => {
|
|
160
|
+
export const getSpotExchangeInfo = async () => {
|
|
161
161
|
const endpoint = 'https://api.binance.com/api/v3/exchangeInfo';
|
|
162
162
|
const url = new URL(endpoint);
|
|
163
163
|
const weight = 20;
|
|
164
|
-
const requestContext = createRequestContext();
|
|
164
|
+
const requestContext = await createRequestContext();
|
|
165
165
|
const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);
|
|
166
|
-
scopeError('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => tokenBucket(bucketKey).acquireSync(weight));
|
|
166
|
+
scopeError('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight));
|
|
167
167
|
return requestPublic('GET', endpoint, undefined, requestContext);
|
|
168
168
|
};
|
|
169
169
|
/**
|
|
@@ -173,13 +173,13 @@ export const getSpotExchangeInfo = () => {
|
|
|
173
173
|
*
|
|
174
174
|
* https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/market-data-endpoints#%E6%9C%80%E6%96%B0%E4%BB%B7%E6%A0%BC%E6%8E%A5%E5%8F%A3
|
|
175
175
|
*/
|
|
176
|
-
export const getSpotTickerPrice = (params) => {
|
|
176
|
+
export const getSpotTickerPrice = async (params) => {
|
|
177
177
|
const endpoint = 'https://api.binance.com/api/v3/ticker/price';
|
|
178
178
|
const url = new URL(endpoint);
|
|
179
179
|
const weight = (params === null || params === void 0 ? void 0 : params.symbol) ? 2 : 4;
|
|
180
|
-
const requestContext = createRequestContext();
|
|
180
|
+
const requestContext = await createRequestContext();
|
|
181
181
|
const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);
|
|
182
|
-
scopeError('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => tokenBucket(bucketKey).acquireSync(weight));
|
|
182
|
+
scopeError('BINANCE_API_RATE_LIMIT', { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight }, () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight));
|
|
183
183
|
return requestPublic('GET', endpoint, params, requestContext);
|
|
184
184
|
};
|
|
185
185
|
//# sourceMappingURL=public-api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../../src/api/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAwGpF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAiC,EAAE;IACtE,MAAM,QAAQ,GAAG,+CAA+C,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,CAAC;IACjB,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACnE,UAAU,CACR,wBAAwB,EACxB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAC5F,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CACjD,CAAC;IACF,OAAO,aAAa,CAAsB,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AACxF,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAKpC,EAAsC,EAAE;IACvC,MAAM,QAAQ,GAAG,8CAA8C,CAAC;IAChE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,CAAC;IACjB,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,GAAG,aAAa,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACnF,UAAU,CACR,wBAAwB,EACxB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAC5F,GAAG,EAAE,CACH,WAAW,CAAC,SAAS,EAAE;QACrB,QAAQ,EAAE,GAAG;QACb,YAAY,EAAE,GAAG;QACjB,cAAc,EAAE,MAAO;KACxB,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CACzB,CAAC;IACF,OAAO,aAAa,CAA4B,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AAC3F,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAuC,EAAE;IAC3E,MAAM,QAAQ,GAAG,8CAA8C,CAAC;IAChE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,CAAC;IACjB,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,GAAG,aAAa,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACnF,UAAU,CACR,wBAAwB,EACxB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAC5F,GAAG,EAAE,CACH,WAAW,CAAC,SAAS,EAAE;QACrB,QAAQ,EAAE,GAAG;QACb,YAAY,EAAE,GAAG;QACjB,cAAc,EAAE,MAAO;KACxB,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CACzB,CAAC;IACF,OAAO,aAAa,CAA4B,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAC9F,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAA2B,EAAuC,EAAE;IACxG,MAAM,QAAQ,GAAG,+CAA+C,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACnE,UAAU,CACR,wBAAwB,EACxB;QACE,MAAM,EAAE,KAAK;QACb,QAAQ;QACR,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,QAAQ;QAClB,QAAQ,EAAE,SAAS;QACnB,MAAM;QACN,SAAS,EAAE,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA;KAC5B,EACD,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CACjD,CAAC;IACF,OAAO,aAAa,CAA6B,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AAC5F,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAA4B,EAAqC,EAAE;IACrG,MAAM,QAAQ,GAAG,oDAAoD,CAAC;IACtE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACnE,UAAU,CACR,wBAAwB,EACxB;QACE,MAAM,EAAE,KAAK;QACb,QAAQ;QACR,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,QAAQ;QAClB,QAAQ,EAAE,SAAS;QACnB,MAAM;QACN,SAAS,EAAE,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA;KAC5B,EACD,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CACjD,CAAC;IACF,OAAO,aAAa,CAA2B,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AAC1F,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAA0B,EAAgC,EAAE;IAChG,MAAM,QAAQ,GAAG,+CAA+C,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,CAAC;IACjB,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACnE,UAAU,CACR,wBAAwB,EACxB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAC5F,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CACjD,CAAC;IACF,OAAO,aAAa,CAAsB,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AACrF,CAAC,CAAC;AASF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAA4B,EAAmC,EAAE;IACjG,MAAM,QAAQ,GAAG,kDAAkD,CAAC;IACpE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACnE,UAAU,CACR,wBAAwB,EACxB;QACE,MAAM,EAAE,KAAK;QACb,QAAQ;QACR,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,QAAQ;QAClB,QAAQ,EAAE,SAAS;QACnB,MAAM;QACN,SAAS,EAAE,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA;KAC5B,EACD,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CACjD,CAAC;IACF,OAAO,aAAa,CAAyB,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AACxF,CAAC,CAAC;AAwCF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAA+B,EAAE;IAClE,MAAM,QAAQ,GAAG,6CAA6C,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACnE,UAAU,CACR,wBAAwB,EACxB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAC5F,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CACjD,CAAC;IACF,OAAO,aAAa,CAAoB,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AACtF,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAIlC,EAKC,EAAE;IACF,MAAM,QAAQ,GAAG,6CAA6C,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACnE,UAAU,CACR,wBAAwB,EACxB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAC5F,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CACjD,CAAC;IACF,OAAO,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AAChE,CAAC,CAAC","sourcesContent":["import { scopeError, tokenBucket } from '@yuants/utils';\nimport { buildTokenBucketKey, createRequestContext, requestPublic } from './client';\n\nexport interface IFutureExchangeFilter extends Record<string, string | number | boolean | undefined> {\n filterType: string;\n}\n\nexport interface IFutureExchangeSymbol {\n symbol: string;\n pair: string;\n contractType: string;\n deliveryDate: number;\n onboardDate: number;\n status: string;\n maintMarginPercent: string;\n requiredMarginPercent: string;\n baseAsset: string;\n quoteAsset: string;\n marginAsset: string;\n pricePrecision: number;\n quantityPrecision: number;\n baseAssetPrecision: number;\n quotePrecision: number;\n underlyingType: string;\n underlyingSubType: string[];\n settlePlan: number;\n triggerProtect: string;\n liquidationFee: string;\n marketTakeBound: string;\n maxMoveOrderLimit: number;\n filters: IFutureExchangeFilter[];\n orderTypes: string[];\n timeInForce: string[];\n}\n\nexport interface IFutureExchangeInfo {\n timezone: string;\n serverTime: number;\n futuresType: string;\n rateLimits: {\n rateLimitType: string;\n interval: string;\n intervalNum: number;\n limit: number;\n }[];\n exchangeFilters: unknown[];\n assets: {\n asset: string;\n marginAvailable: boolean;\n autoAssetExchange: string;\n }[];\n symbols: IFutureExchangeSymbol[];\n}\n\nexport interface IFutureFundingRateEntry {\n symbol: string;\n fundingTime: number;\n fundingRate: string;\n markPrice: string;\n}\n\nexport interface IFutureFundingInfoEntry {\n symbol: string;\n adjustedFundingRateCap: string;\n adjustedFundingRateFloor: string;\n fundingIntervalHours: number;\n disclaimer: boolean;\n}\n\nexport interface IFuturePremiumIndexEntry {\n symbol: string;\n markPrice: string;\n indexPrice: string;\n estimatedSettlePrice: string;\n lastFundingRate: string;\n interestRate: string;\n nextFundingTime: number;\n time: number;\n}\n\nexport interface IFutureBookTickerEntry {\n symbol: string;\n bidPrice: string;\n bidQty: string;\n askPrice: string;\n askQty: string;\n time: number;\n}\n\nexport interface IFutureOpenInterest {\n openInterest: string;\n symbol: string;\n time: number;\n}\n\nexport interface IMarginPair {\n id: string;\n symbol: string;\n base: string;\n quote: string;\n isMarginTrade: boolean;\n isBuyAllowed: boolean;\n isSellAllowed: boolean;\n}\n\n/**\n * 获取交易规则和交易对\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Exchange-Information\n */\nexport const getFutureExchangeInfo = (): Promise<IFutureExchangeInfo> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/exchangeInfo';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic<IFutureExchangeInfo>('GET', endpoint, undefined, requestContext);\n};\n\n/**\n * 查询资金费率历史\n *\n * 权重: /fapi/v1/fundingInfo共享500/5min/IP\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Get-Funding-Rate-History\n */\nexport const getFutureFundingRate = (params: {\n symbol?: string;\n startTime?: number;\n endTime?: number;\n limit?: number;\n}): Promise<IFutureFundingRateEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/fundingRate';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host + 'fundingRate', requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () =>\n tokenBucket(bucketKey, {\n capacity: 500,\n refillAmount: 500,\n refillInterval: 300_000,\n }).acquireSync(weight),\n );\n return requestPublic<IFutureFundingRateEntry[]>('GET', endpoint, params, requestContext);\n};\n\n/**\n * 查询资金费率信息\n *\n * 权重: /fapi/v1/fundingRate共享500/5min/IP\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Get-Funding-Rate-Info\n */\nexport const getFutureFundingInfo = (): Promise<IFutureFundingInfoEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/fundingInfo';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host + 'fundingRate', requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () =>\n tokenBucket(bucketKey, {\n capacity: 500,\n refillAmount: 500,\n refillInterval: 300_000,\n }).acquireSync(weight),\n );\n return requestPublic<IFutureFundingInfoEntry[]>('GET', endpoint, undefined, requestContext);\n};\n\n/**\n * 最新标记价格和资金费率\n *\n * 采集各大交易所数据加权平均\n *\n * 权重: 带symbol为1;不带symbol为10\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Mark-Price\n */\nexport const getFuturePremiumIndex = (params: { symbol?: string }): Promise<IFuturePremiumIndexEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/premiumIndex';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 1 : 10;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic<IFuturePremiumIndexEntry[]>('GET', endpoint, params, requestContext);\n};\n\n/**\n * 当前最优挂单\n *\n * 返回当前最优的挂单(最高买单,最低卖单)\n *\n * 权重: 单交易对2,无交易对5\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Symbol-Order-Book-Ticker\n */\nexport const getFutureBookTicker = (params?: { symbol?: string }): Promise<IFutureBookTickerEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/ticker/bookTicker';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 2 : 5;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic<IFutureBookTickerEntry[]>('GET', endpoint, params, requestContext);\n};\n\n/**\n * 获取未平仓合约数\n *\n * 权重: 1\n *\n * 更新速率: 3s\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Open-Interest\n */\nexport const getFutureOpenInterest = (params: { symbol: string }): Promise<IFutureOpenInterest> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/openInterest';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic<IFutureOpenInterest>('GET', endpoint, params, requestContext);\n};\nexport interface ISpotBookTickerEntry {\n symbol: string;\n bidPrice: string;\n bidQty: string;\n askPrice: string;\n askQty: string;\n}\n\n/**\n * 当前最优挂单 (Spot)\n *\n * 权重: 单交易对 2,不带 symbol 4\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/market-data-endpoints#%E6%9C%80%E4%BC%98%E6%8C%82%E5%8D%95%E6%8E%A5%E5%8F%A3\n */\nexport const getSpotBookTicker = (params?: { symbol?: string }): Promise<ISpotBookTickerEntry[]> => {\n const endpoint = 'https://api.binance.com/api/v3/ticker/bookTicker';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 2 : 4;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic<ISpotBookTickerEntry[]>('GET', endpoint, params, requestContext);\n};\n\nexport interface ISpotExchangeFilter extends Record<string, string | number | boolean | undefined> {\n filterType: string;\n}\n\nexport interface ISpotExchangeSymbol {\n symbol: string;\n status: string;\n baseAsset: string;\n baseAssetPrecision: number;\n quoteAsset: string;\n quotePrecision: number;\n baseCommissionPrecision: number;\n quoteCommissionPrecision: number;\n orderTypes: string[];\n icebergAllowed: boolean;\n ocoAllowed: boolean;\n quoteOrderQtyMarketAllowed: boolean;\n allowTrailingStop: boolean;\n cancelReplaceAllowed: boolean;\n isSpotTradingAllowed: boolean;\n isMarginTradingAllowed: boolean;\n filters: ISpotExchangeFilter[];\n permissions: string[];\n}\n\nexport interface ISpotExchangeInfo {\n timezone: string;\n serverTime: number;\n rateLimits: {\n rateLimitType: string;\n interval: string;\n intervalNum: number;\n limit: number;\n }[];\n exchangeFilters: unknown[];\n symbols: ISpotExchangeSymbol[];\n}\n\n/**\n * 获取现货交易规则和交易对\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/general-endpoints#%E4%BA%A4%E6%98%93%E8%A7%84%E8%8C%83%E4%BF%A1%E6%81%AF\n */\nexport const getSpotExchangeInfo = (): Promise<ISpotExchangeInfo> => {\n const endpoint = 'https://api.binance.com/api/v3/exchangeInfo';\n const url = new URL(endpoint);\n const weight = 20;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic<ISpotExchangeInfo>('GET', endpoint, undefined, requestContext);\n};\n\n/**\n * 获取当前现货报价\n *\n * 权重: 单交易对 2,不带 symbol 4\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/market-data-endpoints#%E6%9C%80%E6%96%B0%E4%BB%B7%E6%A0%BC%E6%8E%A5%E5%8F%A3\n */\nexport const getSpotTickerPrice = (params?: {\n symbol?: string;\n symbols?: string;\n symbolStatus?: string;\n}): Promise<\n {\n symbol: string;\n price: string;\n }[]\n> => {\n const endpoint = 'https://api.binance.com/api/v3/ticker/price';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 2 : 4;\n const requestContext = createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey).acquireSync(weight),\n );\n return requestPublic('GET', endpoint, params, requestContext);\n};\n"]}
|
|
1
|
+
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../../src/api/public-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { scopeError, tokenBucket } from '@yuants/utils';\nimport { buildTokenBucketKey, createRequestContext, getTokenBucketOptions, requestPublic } from './client';\n\nexport interface IFutureExchangeFilter extends Record<string, string | number | boolean | undefined> {\n filterType: string;\n}\n\nexport interface IFutureExchangeSymbol {\n symbol: string;\n pair: string;\n contractType: string;\n deliveryDate: number;\n onboardDate: number;\n status: string;\n maintMarginPercent: string;\n requiredMarginPercent: string;\n baseAsset: string;\n quoteAsset: string;\n marginAsset: string;\n pricePrecision: number;\n quantityPrecision: number;\n baseAssetPrecision: number;\n quotePrecision: number;\n underlyingType: string;\n underlyingSubType: string[];\n settlePlan: number;\n triggerProtect: string;\n liquidationFee: string;\n marketTakeBound: string;\n maxMoveOrderLimit: number;\n filters: IFutureExchangeFilter[];\n orderTypes: string[];\n timeInForce: string[];\n}\n\nexport interface IFutureExchangeInfo {\n timezone: string;\n serverTime: number;\n futuresType: string;\n rateLimits: {\n rateLimitType: string;\n interval: string;\n intervalNum: number;\n limit: number;\n }[];\n exchangeFilters: unknown[];\n assets: {\n asset: string;\n marginAvailable: boolean;\n autoAssetExchange: string;\n }[];\n symbols: IFutureExchangeSymbol[];\n}\n\nexport interface IFutureFundingRateEntry {\n symbol: string;\n fundingTime: number;\n fundingRate: string;\n markPrice: string;\n}\n\nexport interface IFutureFundingInfoEntry {\n symbol: string;\n adjustedFundingRateCap: string;\n adjustedFundingRateFloor: string;\n fundingIntervalHours: number;\n disclaimer: boolean;\n}\n\nexport interface IFuturePremiumIndexEntry {\n symbol: string;\n markPrice: string;\n indexPrice: string;\n estimatedSettlePrice: string;\n lastFundingRate: string;\n interestRate: string;\n nextFundingTime: number;\n time: number;\n}\n\nexport interface IFutureBookTickerEntry {\n symbol: string;\n bidPrice: string;\n bidQty: string;\n askPrice: string;\n askQty: string;\n time: number;\n}\n\nexport interface IFutureOpenInterest {\n openInterest: string;\n symbol: string;\n time: number;\n}\n\nexport interface IMarginPair {\n id: string;\n symbol: string;\n base: string;\n quote: string;\n isMarginTrade: boolean;\n isBuyAllowed: boolean;\n isSellAllowed: boolean;\n}\n\n/**\n * 获取交易规则和交易对\n *\n * 权重: 1\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Exchange-Information\n */\nexport const getFutureExchangeInfo = async (): Promise<IFutureExchangeInfo> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/exchangeInfo';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic<IFutureExchangeInfo>('GET', endpoint, undefined, requestContext);\n};\n\n/**\n * 查询资金费率历史\n *\n * 权重: /fapi/v1/fundingInfo共享500/5min/IP\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Get-Funding-Rate-History\n */\nexport const getFutureFundingRate = async (params: {\n symbol?: string;\n startTime?: number;\n endTime?: number;\n limit?: number;\n}): Promise<IFutureFundingRateEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/fundingRate';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host + 'fundingRate', requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () =>\n tokenBucket(bucketKey, {\n capacity: 500,\n refillAmount: 500,\n refillInterval: 300_000,\n }).acquireSync(weight),\n );\n return requestPublic<IFutureFundingRateEntry[]>('GET', endpoint, params, requestContext);\n};\n\n/**\n * 查询资金费率信息\n *\n * 权重: /fapi/v1/fundingRate共享500/5min/IP\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Get-Funding-Rate-Info\n */\nexport const getFutureFundingInfo = async (): Promise<IFutureFundingInfoEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/fundingInfo';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host + 'fundingRate', requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () =>\n tokenBucket(bucketKey, {\n capacity: 500,\n refillAmount: 500,\n refillInterval: 300_000,\n }).acquireSync(weight),\n );\n return requestPublic<IFutureFundingInfoEntry[]>('GET', endpoint, undefined, requestContext);\n};\n\n/**\n * 最新标记价格和资金费率\n *\n * 采集各大交易所数据加权平均\n *\n * 权重: 带symbol为1;不带symbol为10\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Mark-Price\n */\nexport const getFuturePremiumIndex = async (params: {\n symbol?: string;\n}): Promise<IFuturePremiumIndexEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/premiumIndex';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 1 : 10;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic<IFuturePremiumIndexEntry[]>('GET', endpoint, params, requestContext);\n};\n\n/**\n * 当前最优挂单\n *\n * 返回当前最优的挂单(最高买单,最低卖单)\n *\n * 权重: 单交易对2,无交易对5\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Symbol-Order-Book-Ticker\n */\nexport const getFutureBookTicker = async (params?: {\n symbol?: string;\n}): Promise<IFutureBookTickerEntry[]> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/ticker/bookTicker';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 2 : 5;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic<IFutureBookTickerEntry[]>('GET', endpoint, params, requestContext);\n};\n\n/**\n * 获取未平仓合约数\n *\n * 权重: 1\n *\n * 更新速率: 3s\n *\n * https://developers.binance.com/docs/zh-CN/derivatives/usds-margined-futures/market-data/rest-api/Open-Interest\n */\nexport const getFutureOpenInterest = async (params: { symbol: string }): Promise<IFutureOpenInterest> => {\n const endpoint = 'https://fapi.binance.com/fapi/v1/openInterest';\n const url = new URL(endpoint);\n const weight = 1;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic<IFutureOpenInterest>('GET', endpoint, params, requestContext);\n};\nexport interface ISpotBookTickerEntry {\n symbol: string;\n bidPrice: string;\n bidQty: string;\n askPrice: string;\n askQty: string;\n}\n\n/**\n * 当前最优挂单 (Spot)\n *\n * 权重: 单交易对 2,不带 symbol 4\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/market-data-endpoints#%E6%9C%80%E4%BC%98%E6%8C%82%E5%8D%95%E6%8E%A5%E5%8F%A3\n */\nexport const getSpotBookTicker = async (params?: { symbol?: string }): Promise<ISpotBookTickerEntry[]> => {\n const endpoint = 'https://api.binance.com/api/v3/ticker/bookTicker';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 2 : 4;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n {\n method: 'GET',\n endpoint,\n host: url.host,\n path: url.pathname,\n bucketId: bucketKey,\n weight,\n hasSymbol: !!params?.symbol,\n },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic<ISpotBookTickerEntry[]>('GET', endpoint, params, requestContext);\n};\n\nexport interface ISpotExchangeFilter extends Record<string, string | number | boolean | undefined> {\n filterType: string;\n}\n\nexport interface ISpotExchangeSymbol {\n symbol: string;\n status: string;\n baseAsset: string;\n baseAssetPrecision: number;\n quoteAsset: string;\n quotePrecision: number;\n baseCommissionPrecision: number;\n quoteCommissionPrecision: number;\n orderTypes: string[];\n icebergAllowed: boolean;\n ocoAllowed: boolean;\n quoteOrderQtyMarketAllowed: boolean;\n allowTrailingStop: boolean;\n cancelReplaceAllowed: boolean;\n isSpotTradingAllowed: boolean;\n isMarginTradingAllowed: boolean;\n filters: ISpotExchangeFilter[];\n permissions: string[];\n}\n\nexport interface ISpotExchangeInfo {\n timezone: string;\n serverTime: number;\n rateLimits: {\n rateLimitType: string;\n interval: string;\n intervalNum: number;\n limit: number;\n }[];\n exchangeFilters: unknown[];\n symbols: ISpotExchangeSymbol[];\n}\n\n/**\n * 获取现货交易规则和交易对\n *\n * 权重: 20\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/general-endpoints#%E4%BA%A4%E6%98%93%E8%A7%84%E8%8C%83%E4%BF%A1%E6%81%AF\n */\nexport const getSpotExchangeInfo = async (): Promise<ISpotExchangeInfo> => {\n const endpoint = 'https://api.binance.com/api/v3/exchangeInfo';\n const url = new URL(endpoint);\n const weight = 20;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic<ISpotExchangeInfo>('GET', endpoint, undefined, requestContext);\n};\n\n/**\n * 获取当前现货报价\n *\n * 权重: 单交易对 2,不带 symbol 4\n *\n * https://developers.binance.com/docs/zh-CN/binance-spot-api-docs/rest-api/market-data-endpoints#%E6%9C%80%E6%96%B0%E4%BB%B7%E6%A0%BC%E6%8E%A5%E5%8F%A3\n */\nexport const getSpotTickerPrice = async (params?: {\n symbol?: string;\n symbols?: string;\n symbolStatus?: string;\n}): Promise<\n {\n symbol: string;\n price: string;\n }[]\n> => {\n const endpoint = 'https://api.binance.com/api/v3/ticker/price';\n const url = new URL(endpoint);\n const weight = params?.symbol ? 2 : 4;\n const requestContext = await createRequestContext();\n const bucketKey = buildTokenBucketKey(url.host, requestContext.ip);\n scopeError(\n 'BINANCE_API_RATE_LIMIT',\n { method: 'GET', endpoint, host: url.host, path: url.pathname, bucketId: bucketKey, weight },\n () => tokenBucket(bucketKey, getTokenBucketOptions(url.host)).acquireSync(weight),\n );\n return requestPublic('GET', endpoint, params, requestContext);\n};\n"]}
|
package/lib/api/client.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type TokenBucketOptions } from '@yuants/utils';
|
|
1
2
|
type HttpMethod = 'GET' | 'POST' | 'DELETE' | 'PUT';
|
|
2
3
|
type RequestParams = Record<string, string | number | boolean | undefined>;
|
|
3
4
|
export interface IRequestContext {
|
|
@@ -11,12 +12,14 @@ export interface IApiError {
|
|
|
11
12
|
code: number;
|
|
12
13
|
msg: string;
|
|
13
14
|
}
|
|
15
|
+
export declare const BINANCE_TOKEN_BUCKET_OPTIONS_BY_ID: Record<string, TokenBucketOptions>;
|
|
16
|
+
export declare const getTokenBucketOptions: (baseKey: string) => TokenBucketOptions | undefined;
|
|
14
17
|
export declare const spotAPIBucket: import("@yuants/utils").ITokenBucket;
|
|
15
18
|
export declare const futureAPIBucket: import("@yuants/utils").ITokenBucket;
|
|
16
19
|
export declare const unifiedAPIBucket: import("@yuants/utils").ITokenBucket;
|
|
17
20
|
export declare const unifiedOrderAPIBucket: import("@yuants/utils").ITokenBucket;
|
|
18
21
|
export declare const buildTokenBucketKey: (baseKey: string, ip: string) => string;
|
|
19
|
-
export declare const createRequestContext: () => IRequestContext
|
|
22
|
+
export declare const createRequestContext: () => Promise<IRequestContext>;
|
|
20
23
|
export declare const isApiError: <T>(value: T | IApiError) => value is IApiError;
|
|
21
24
|
export declare const requestPublic: <T>(method: HttpMethod, endpoint: string, params?: RequestParams, requestContext?: IRequestContext) => Promise<T>;
|
|
22
25
|
export declare const requestPrivate: <T>(credential: ICredential, method: HttpMethod, endpoint: string, params?: RequestParams, requestContext?: IRequestContext) => Promise<T>;
|
package/lib/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AAcvB,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEpD,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAE3E,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,kCAAkC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAqBjF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,KAAG,kBAAkB,GAAG,SAChC,CAAC;AAE9C,eAAO,MAAM,aAAa,sCAGzB,CAAC;AAEF,eAAO,MAAM,eAAe,sCAG3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,sCAG5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,sCAGjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,IAAI,MAAM,KAAG,MAAmC,CAAC;AActG,eAAO,MAAM,oBAAoB,QAAa,OAAO,CAAC,eAAe,CAMpE,CAAC;AAKF,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,OAAO,CAAC,GAAG,SAAS,KAAG,KAAK,IAAI,SACmC,CAAC;AA+GlG,eAAO,MAAM,aAAa,GAAI,CAAC,EAC7B,QAAQ,UAAU,EAClB,UAAU,MAAM,EAChB,SAAS,aAAa,EACtB,iBAAiB,eAAe,eACkC,CAAC;AAErE,eAAO,MAAM,cAAc,GAAI,CAAC,EAC9B,YAAY,WAAW,EACvB,QAAQ,UAAU,EAClB,UAAU,MAAM,EAChB,SAAS,aAAa,EACtB,iBAAiB,eAAe,eACmC,CAAC;AAEtE,eAAO,MAAM,oBAAoB,QAAO,WAOvC,CAAC"}
|