Files
gocryptotrader/exchanges/kucoin/kucoin_ratelimit.go
Samuael A. d94b8af3e1 exchanges: Kucoin Update (#1438)
* types and orderbook handling fix

* Minor types and endpoints update

* Minor fixes on Kucoin

* Add benchmarking test

* Unit tests update and minor endpoints update

* Adding updates and newly added endpoints

* Add and correct funding, withdrawal, and deposit endpoints

* linter and codespell fix

* Adding and correcting spot trading endpoints

* Completed Spot HF endpoints

* Minor fix

* Added OCO and Margin HF trade and other endpoints

* Adding missing endpoints

* Updating Isolated margin, margin v3, and v3market lending endpoints

* minor codespell fix

* Completed adding and fixing futures endpoints

* wrapper update and fix unit tests

* Updating endpoint ratelimits

* Complete ratelimiter setup and endpoint functions update

* Unit test configuration and update

* fix linter issue

* Added a ratelimiter test and heavy update on unit tests

* Adding websocket update based on ChangeLog

* Added newly added Earn General, Kucoin Earn and Staking endpoints

* Added VIP lending endpoints

* Minor linter and endpoints fix

* Added unit tests, publicised functions, and minor updates

* Update on wrapper funcs, unit tests, and other methods

* Enexport exchange specific websocket methods

* remove deprecated topic

* Update wrapper based on Type, add and fix unit tests

* Added a margin configuration endpoint and unit test

* Update methods, types, and unit tests

* Update error declaration and handling unit tests

* Update method parameters and error handling

* Updating unit tests and error handling

* Update methods arguments, added and update unit tests

* Fix unit tests and wrapper methods

* Resolving unit test issues and fix faulty endpoints

* Fix on unit tests and working on passphrase errors

* Minor fixed on websocket and endpoint url

* comment and wrapper filters issue fix

* Unit tests and other minor updates

* Update wrapper functions, endpoint methods, and unit tests

* change require to change on two unit tests

* Update unit tests, types, and endpoints

* Refine and update wrapper tempo for minor adjustments

* Remove code that enabled logging

* Update wrapper functions, missing endpoints, response and parameter values, and unit tests

* removed High-frequency orders from wrapper functions, and updated unit tests and types

* Added missing fields and minor update on wrapper

* Update types

* Update tests and websocket channels

* Update unit tests and methods error returns
2024-09-13 19:52:39 +10:00

424 lines
24 KiB
Go

package kucoin
import (
"time"
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
)
const (
thirtySecondsInterval = time.Second * 30
)
const (
accountSummaryInfoEPL request.EndpointLimit = iota
allAccountEPL
accountDetailEPL
accountLedgersEPL
hfAccountLedgersEPL
hfAccountLedgersMarginEPL
futuresAccountLedgersEPL
subAccountInfoV1EPL
allSubAccountsInfoV2EPL
createSubUserEPL
subAccountsEPL
subAccountBalancesEPL
allSubAccountBalancesV2EPL
subAccountSpotAPIListEPL
createSpotAPIForSubAccountEPL
modifySubAccountSpotAPIEPL
deleteSubAccountSpotAPIEPL
marginAccountDetailEPL
crossMarginAccountsDetailEPL
isolatedMarginAccountDetailEPL
futuresAccountsDetailEPL
tradingPairActualFeeEPL
allFuturesSubAccountBalancesEPL
futuresTradingPairFeeEPL
futuresPositionHistoryEPL
futuresMaxOpenPositionsSizeEPL
futuresAllTickersInfoEPL
createDepositAddressEPL
depositAddressesV2EPL
depositAddressesV1EPL
depositListEPL
historicDepositListEPL
withdrawalListEPL
retrieveV1HistoricalWithdrawalListEPL
withdrawalQuotaEPL
applyWithdrawalEPL
cancelWithdrawalsEPL
getTransferablesEPL
flexiTransferEPL
masterSubUserTransferEPL
innerTransferEPL
toMainOrTradeAccountEPL
toFuturesAccountEPL
futuresTransferOutRequestRecordsEPL
basicFeesEPL
tradeFeesEPL
spotCurrenciesV3EPL
spotCurrencyDetailEPL
symbolsEPL
tickersEPL
allTickersEPL
statistics24HrEPL
marketListEPL
partOrderbook20EPL
partOrderbook100EPL
fullOrderbookEPL
tradeHistoryEPL
klinesEPL
fiatPriceEPL
currentServerTimeEPL
serviceStatusEPL
hfPlaceOrderEPL
hfSyncPlaceOrderEPL
hfMultipleOrdersEPL
hfSyncPlaceMultipleHFOrdersEPL
hfModifyOrderEPL
cancelHFOrderEPL
hfSyncCancelOrderEPL
hfCancelOrderByClientOrderIDEPL
cancelSpecifiedNumberHFOrdersByOrderIDEPL
hfCancelAllOrdersBySymbolEPL
hfCancelAllOrdersEPL
hfGetAllActiveOrdersEPL
hfSymbolsWithActiveOrdersEPL
hfCompletedOrderListEPL
hfOrderDetailByOrderIDEPL
autoCancelHFOrderSettingEPL
autoCancelHFOrderSettingQueryEPL
hfFilledListEPL
placeOrderEPL
placeBulkOrdersEPL
cancelOrderEPL
cancelOrderByClientOrderIDEPL
cancelAllOrdersEPL
listOrdersEPL
recentOrdersEPL
orderDetailByIDEPL
getOrderByClientSuppliedOrderIDEPL
listFillsEPL
getRecentFillsEPL
placeStopOrderEPL
cancelStopOrderEPL
cancelStopOrderByClientIDEPL
cancelStopOrdersEPL
listStopOrdersEPL
getStopOrderDetailEPL
getStopOrderByClientIDEPL
placeOCOOrderEPL
cancelOCOOrderByIDEPL
cancelMultipleOCOOrdersEPL
getOCOOrderByIDEPL
getOCOOrderDetailsByOrderIDEPL
getOCOOrdersEPL
placeMarginOrderEPL
cancelMarginHFOrderByIDEPL
getMarginHFOrderDetailByID
cancelAllMarginHFOrdersBySymbolEPL
getActiveMarginHFOrdersEPL
getFilledHFMarginOrdersEPL
getMarginHFOrderDetailByOrderIDEPL
getMarginHFTradeFillsEPL
placeMarginOrdersEPL
leveragedTokenInfoEPL
getMarkPriceEPL
getAllMarginMarkPriceEPL
getMarginConfigurationEPL
crossIsolatedMarginRiskLimitCurrencyConfigEPL
isolatedMarginPairConfigEPL
isolatedMarginAccountInfoEPL
singleIsolatedMarginAccountInfoEPL
postMarginBorrowOrderEPL
postMarginRepaymentEPL
getCrossIsolatedMarginInterestRecordsEPL
marginBorrowingHistoryEPL
marginRepaymentHistoryEPL
lendingCurrencyInfoEPL
interestRateEPL
marginLendingSubscriptionEPL
redemptionEPL
modifySubscriptionEPL
getRedemptionOrdersEPL
getSubscriptionOrdersEPL
futuresOpenContractsEPL
futuresContractEPL
futuresTickerEPL
futuresOrderbookEPL
futuresPartOrderbookDepth20EPL
futuresPartOrderbookDepth100EPL
futuresTransactionHistoryEPL
futuresKlineEPL
futuresInterestRateEPL
futuresIndexListEPL
futuresCurrentMarkPriceEPL
futuresPremiumIndexEPL
futuresTransactionVolumeEPL
futuresServerTimeEPL
futuresServiceStatusEPL
multipleFuturesOrdersEPL
futuresCancelAnOrderEPL
futuresPlaceOrderEPL
futuresLimitOrderMassCancelationEPL
cancelUntriggeredFuturesStopOrdersEPL
futuresCancelMultipleLimitOrdersEPL
futuresRetrieveOrderListEPL
futuresRecentCompletedOrdersEPL
futuresOrdersByIDEPL
futuresRetrieveFillsEPL
futuresRecentFillsEPL
futuresOpenOrderStatsEPL
futuresPositionEPL
futuresPositionListEPL
setAutoDepositMarginEPL
maxWithdrawMarginEPL
removeMarginManuallyEPL
futuresAddMarginManuallyEPL
futuresRiskLimitLevelEPL
futuresUpdateRiskLimitLevelEPL
futuresCurrentFundingRateEPL
futuresPublicFundingRateEPL
futuresFundingHistoryEPL
spotAuthenticationEPL
futuresAuthenticationEPL
futuresOrderDetailsByClientOrderIDEPL
modifySubAccountAPIEPL
allSubAccountsBalanceEPL
allUserSubAccountsV2EPL
futuresRetrieveTransactionHistoryEPL
futuresAccountOverviewEPL
createSubAccountAPIKeyEPL
transferOutToMainEPL
transferFundToFuturesAccountEPL
futuresTransferOutListEPL
subscribeToEarnEPL
earnRedemptionEPL
earnRedemptionPreviewEPL
kucoinEarnSavingsProductsEPL
kucoinEarnFixedIncomeCurrentHoldingEPL
earnLimitedTimePromotionProductEPL
earnKCSStakingProductEPL
earnStakingProductEPL
vipLendingEPL
affilateUserRebateInfoEPL
marginPairsConfigurationEPL
modifyLeverageMultiplierEPL
marginActiveHFOrdersEPL
)
// GetRateLimit returns a RateLimit instance, which implements the request.Limiter interface.
func GetRateLimit() request.RateLimitDefinitions {
spotRate := request.NewRateLimit(thirtySecondsInterval, 4000)
futuresRate := request.NewRateLimit(thirtySecondsInterval, 2000)
managementRate := request.NewRateLimit(thirtySecondsInterval, 2000)
publicRate := request.NewRateLimit(thirtySecondsInterval, 2000)
return request.RateLimitDefinitions{
// spot specific rate limiters
accountSummaryInfoEPL: request.GetRateLimiterWithWeight(managementRate, 20),
allAccountEPL: request.GetRateLimiterWithWeight(managementRate, 5),
accountDetailEPL: request.GetRateLimiterWithWeight(managementRate, 5),
accountLedgersEPL: request.GetRateLimiterWithWeight(managementRate, 2),
hfAccountLedgersEPL: request.GetRateLimiterWithWeight(spotRate, 2),
hfAccountLedgersMarginEPL: request.GetRateLimiterWithWeight(spotRate, 2),
futuresAccountLedgersEPL: request.GetRateLimiterWithWeight(spotRate, 2),
subAccountInfoV1EPL: request.GetRateLimiterWithWeight(managementRate, 20),
allSubAccountsInfoV2EPL: request.GetRateLimiterWithWeight(managementRate, 20),
createSubUserEPL: request.GetRateLimiterWithWeight(managementRate, 20),
subAccountsEPL: request.GetRateLimiterWithWeight(managementRate, 15),
subAccountBalancesEPL: request.GetRateLimiterWithWeight(managementRate, 20),
allSubAccountBalancesV2EPL: request.GetRateLimiterWithWeight(managementRate, 20),
subAccountSpotAPIListEPL: request.GetRateLimiterWithWeight(managementRate, 20),
createSpotAPIForSubAccountEPL: request.GetRateLimiterWithWeight(managementRate, 20),
modifySubAccountSpotAPIEPL: request.GetRateLimiterWithWeight(managementRate, 30),
deleteSubAccountSpotAPIEPL: request.GetRateLimiterWithWeight(managementRate, 30),
marginAccountDetailEPL: request.GetRateLimiterWithWeight(spotRate, 40),
crossMarginAccountsDetailEPL: request.GetRateLimiterWithWeight(spotRate, 15),
isolatedMarginAccountDetailEPL: request.GetRateLimiterWithWeight(spotRate, 15),
futuresAccountsDetailEPL: request.GetRateLimiterWithWeight(futuresRate, 5),
tradingPairActualFeeEPL: request.GetRateLimiterWithWeight(spotRate, 3),
allFuturesSubAccountBalancesEPL: request.GetRateLimiterWithWeight(futuresRate, 6),
futuresTradingPairFeeEPL: request.GetRateLimiterWithWeight(futuresRate, 3),
futuresPositionHistoryEPL: request.GetRateLimiterWithWeight(futuresRate, 2),
futuresMaxOpenPositionsSizeEPL: request.GetRateLimiterWithWeight(futuresRate, 2),
futuresAllTickersInfoEPL: request.GetRateLimiterWithWeight(futuresRate, 5),
createDepositAddressEPL: request.GetRateLimiterWithWeight(managementRate, 20),
depositAddressesV2EPL: request.GetRateLimiterWithWeight(managementRate, 5),
depositAddressesV1EPL: request.GetRateLimiterWithWeight(managementRate, 5),
depositListEPL: request.GetRateLimiterWithWeight(managementRate, 5),
historicDepositListEPL: request.GetRateLimiterWithWeight(managementRate, 5),
withdrawalListEPL: request.GetRateLimiterWithWeight(managementRate, 20),
retrieveV1HistoricalWithdrawalListEPL: request.GetRateLimiterWithWeight(managementRate, 20),
withdrawalQuotaEPL: request.GetRateLimiterWithWeight(managementRate, 20),
applyWithdrawalEPL: request.GetRateLimiterWithWeight(managementRate, 5),
cancelWithdrawalsEPL: request.GetRateLimiterWithWeight(managementRate, 20),
getTransferablesEPL: request.GetRateLimiterWithWeight(managementRate, 20),
flexiTransferEPL: request.GetRateLimiterWithWeight(managementRate, 4),
masterSubUserTransferEPL: request.GetRateLimiterWithWeight(managementRate, 30),
innerTransferEPL: request.GetRateLimiterWithWeight(managementRate, 10),
toMainOrTradeAccountEPL: request.GetRateLimiterWithWeight(managementRate, 20),
toFuturesAccountEPL: request.GetRateLimiterWithWeight(managementRate, 20),
futuresTransferOutRequestRecordsEPL: request.GetRateLimiterWithWeight(managementRate, 20),
basicFeesEPL: request.GetRateLimiterWithWeight(spotRate, 3),
tradeFeesEPL: request.GetRateLimiterWithWeight(spotRate, 3),
spotCurrenciesV3EPL: request.GetRateLimiterWithWeight(publicRate, 3),
spotCurrencyDetailEPL: request.GetRateLimiterWithWeight(publicRate, 3),
symbolsEPL: request.GetRateLimiterWithWeight(publicRate, 4),
tickersEPL: request.GetRateLimiterWithWeight(publicRate, 2),
allTickersEPL: request.GetRateLimiterWithWeight(publicRate, 15),
statistics24HrEPL: request.GetRateLimiterWithWeight(publicRate, 15),
marketListEPL: request.GetRateLimiterWithWeight(publicRate, 3),
partOrderbook20EPL: request.GetRateLimiterWithWeight(publicRate, 2),
partOrderbook100EPL: request.GetRateLimiterWithWeight(publicRate, 4),
fullOrderbookEPL: request.GetRateLimiterWithWeight(spotRate, 3),
tradeHistoryEPL: request.GetRateLimiterWithWeight(publicRate, 3),
klinesEPL: request.GetRateLimiterWithWeight(publicRate, 3),
fiatPriceEPL: request.GetRateLimiterWithWeight(publicRate, 3),
currentServerTimeEPL: request.GetRateLimiterWithWeight(publicRate, 3),
serviceStatusEPL: request.GetRateLimiterWithWeight(publicRate, 3),
hfPlaceOrderEPL: request.GetRateLimiterWithWeight(spotRate, 1),
hfSyncPlaceOrderEPL: request.GetRateLimiterWithWeight(spotRate, 1),
hfMultipleOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 1),
hfSyncPlaceMultipleHFOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 1),
hfModifyOrderEPL: request.GetRateLimiterWithWeight(spotRate, 3),
cancelHFOrderEPL: request.GetRateLimiterWithWeight(spotRate, 1),
hfSyncCancelOrderEPL: request.GetRateLimiterWithWeight(spotRate, 1),
hfCancelOrderByClientOrderIDEPL: request.GetRateLimiterWithWeight(spotRate, 1),
cancelSpecifiedNumberHFOrdersByOrderIDEPL: request.GetRateLimiterWithWeight(spotRate, 2),
hfCancelAllOrdersBySymbolEPL: request.GetRateLimiterWithWeight(spotRate, 2),
hfCancelAllOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 30),
hfGetAllActiveOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 2),
hfSymbolsWithActiveOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 2),
hfCompletedOrderListEPL: request.GetRateLimiterWithWeight(spotRate, 2),
hfOrderDetailByOrderIDEPL: request.GetRateLimiterWithWeight(spotRate, 2),
autoCancelHFOrderSettingEPL: request.GetRateLimiterWithWeight(spotRate, 2),
autoCancelHFOrderSettingQueryEPL: request.GetRateLimiterWithWeight(spotRate, 2),
hfFilledListEPL: request.GetRateLimiterWithWeight(spotRate, 2),
placeOrderEPL: request.GetRateLimiterWithWeight(spotRate, 2),
placeBulkOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 3),
cancelOrderEPL: request.GetRateLimiterWithWeight(spotRate, 3),
cancelOrderByClientOrderIDEPL: request.GetRateLimiterWithWeight(spotRate, 5),
cancelAllOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 20),
listOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 2),
recentOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 3),
orderDetailByIDEPL: request.GetRateLimiterWithWeight(spotRate, 2),
getOrderByClientSuppliedOrderIDEPL: request.GetRateLimiterWithWeight(spotRate, 3),
listFillsEPL: request.GetRateLimiterWithWeight(spotRate, 10),
getRecentFillsEPL: request.GetRateLimiterWithWeight(spotRate, 20),
placeStopOrderEPL: request.GetRateLimiterWithWeight(spotRate, 2),
cancelStopOrderEPL: request.GetRateLimiterWithWeight(spotRate, 3),
cancelStopOrderByClientIDEPL: request.GetRateLimiterWithWeight(spotRate, 5),
cancelStopOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 3),
listStopOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 8),
getStopOrderDetailEPL: request.GetRateLimiterWithWeight(spotRate, 3),
getStopOrderByClientIDEPL: request.GetRateLimiterWithWeight(spotRate, 3),
placeOCOOrderEPL: request.GetRateLimiterWithWeight(spotRate, 2),
cancelOCOOrderByIDEPL: request.GetRateLimiterWithWeight(spotRate, 3),
cancelMultipleOCOOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 3),
getOCOOrderByIDEPL: request.GetRateLimiterWithWeight(spotRate, 2),
getOCOOrderDetailsByOrderIDEPL: request.GetRateLimiterWithWeight(spotRate, 2),
getOCOOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 2),
placeMarginOrderEPL: request.GetRateLimiterWithWeight(spotRate, 5),
cancelMarginHFOrderByIDEPL: request.GetRateLimiterWithWeight(spotRate, 5),
getMarginHFOrderDetailByID: request.GetRateLimiterWithWeight(spotRate, 5),
cancelAllMarginHFOrdersBySymbolEPL: request.GetRateLimiterWithWeight(spotRate, 10),
getActiveMarginHFOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 4),
getFilledHFMarginOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 10),
getMarginHFOrderDetailByOrderIDEPL: request.GetRateLimiterWithWeight(spotRate, 4),
getMarginHFTradeFillsEPL: request.GetRateLimiterWithWeight(spotRate, 5),
placeMarginOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 5),
leveragedTokenInfoEPL: request.GetRateLimiterWithWeight(spotRate, 25),
getMarkPriceEPL: request.GetRateLimiterWithWeight(publicRate, 2),
getAllMarginMarkPriceEPL: request.GetRateLimiterWithWeight(publicRate, 10),
getMarginConfigurationEPL: request.GetRateLimiterWithWeight(spotRate, 25),
crossIsolatedMarginRiskLimitCurrencyConfigEPL: request.GetRateLimiterWithWeight(spotRate, 20),
isolatedMarginPairConfigEPL: request.GetRateLimiterWithWeight(spotRate, 20),
isolatedMarginAccountInfoEPL: request.GetRateLimiterWithWeight(spotRate, 50),
singleIsolatedMarginAccountInfoEPL: request.GetRateLimiterWithWeight(spotRate, 50),
postMarginBorrowOrderEPL: request.GetRateLimiterWithWeight(spotRate, 15),
postMarginRepaymentEPL: request.GetRateLimiterWithWeight(spotRate, 10),
getCrossIsolatedMarginInterestRecordsEPL: request.GetRateLimiterWithWeight(spotRate, 20),
marginBorrowingHistoryEPL: request.GetRateLimiterWithWeight(spotRate, 15),
marginRepaymentHistoryEPL: request.GetRateLimiterWithWeight(spotRate, 15),
lendingCurrencyInfoEPL: request.GetRateLimiterWithWeight(spotRate, 10),
interestRateEPL: request.GetRateLimiterWithWeight(publicRate, 5),
marginLendingSubscriptionEPL: request.GetRateLimiterWithWeight(spotRate, 15),
redemptionEPL: request.GetRateLimiterWithWeight(spotRate, 15),
modifySubscriptionEPL: request.GetRateLimiterWithWeight(spotRate, 10),
getRedemptionOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 10),
getSubscriptionOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 10),
futuresOpenContractsEPL: request.GetRateLimiterWithWeight(publicRate, 3),
futuresContractEPL: request.GetRateLimiterWithWeight(publicRate, 3),
futuresTickerEPL: request.GetRateLimiterWithWeight(publicRate, 2),
futuresOrderbookEPL: request.GetRateLimiterWithWeight(publicRate, 3),
futuresPartOrderbookDepth20EPL: request.GetRateLimiterWithWeight(publicRate, 5),
futuresPartOrderbookDepth100EPL: request.GetRateLimiterWithWeight(publicRate, 10),
futuresTransactionHistoryEPL: request.GetRateLimiterWithWeight(publicRate, 5),
futuresKlineEPL: request.GetRateLimiterWithWeight(publicRate, 3),
futuresInterestRateEPL: request.GetRateLimiterWithWeight(publicRate, 5),
futuresIndexListEPL: request.GetRateLimiterWithWeight(publicRate, 2),
futuresCurrentMarkPriceEPL: request.GetRateLimiterWithWeight(publicRate, 3),
futuresPremiumIndexEPL: request.GetRateLimiterWithWeight(publicRate, 3),
futuresTransactionVolumeEPL: request.GetRateLimiterWithWeight(futuresRate, 3),
futuresServerTimeEPL: request.GetRateLimiterWithWeight(publicRate, 2),
futuresServiceStatusEPL: request.GetRateLimiterWithWeight(publicRate, 4),
multipleFuturesOrdersEPL: request.GetRateLimiterWithWeight(futuresRate, 20),
futuresCancelAnOrderEPL: request.GetRateLimiterWithWeight(futuresRate, 1),
futuresPlaceOrderEPL: request.GetRateLimiterWithWeight(futuresRate, 2),
futuresLimitOrderMassCancelationEPL: request.GetRateLimiterWithWeight(futuresRate, 30),
cancelUntriggeredFuturesStopOrdersEPL: request.GetRateLimiterWithWeight(futuresRate, 15),
futuresCancelMultipleLimitOrdersEPL: request.GetRateLimiterWithWeight(futuresRate, 30),
futuresRetrieveOrderListEPL: request.GetRateLimiterWithWeight(futuresRate, 2),
futuresRecentCompletedOrdersEPL: request.GetRateLimiterWithWeight(futuresRate, 5),
futuresOrdersByIDEPL: request.GetRateLimiterWithWeight(futuresRate, 5),
futuresRetrieveFillsEPL: request.GetRateLimiterWithWeight(futuresRate, 5),
futuresRecentFillsEPL: request.GetRateLimiterWithWeight(futuresRate, 3),
futuresOpenOrderStatsEPL: request.GetRateLimiterWithWeight(futuresRate, 10),
futuresPositionEPL: request.GetRateLimiterWithWeight(futuresRate, 2),
futuresPositionListEPL: request.GetRateLimiterWithWeight(futuresRate, 2),
setAutoDepositMarginEPL: request.GetRateLimiterWithWeight(futuresRate, 4),
maxWithdrawMarginEPL: request.GetRateLimiterWithWeight(futuresRate, 10),
removeMarginManuallyEPL: request.GetRateLimiterWithWeight(futuresRate, 10),
futuresAddMarginManuallyEPL: request.GetRateLimiterWithWeight(futuresRate, 4),
futuresRiskLimitLevelEPL: request.GetRateLimiterWithWeight(futuresRate, 5),
futuresUpdateRiskLimitLevelEPL: request.GetRateLimiterWithWeight(futuresRate, 4),
futuresCurrentFundingRateEPL: request.GetRateLimiterWithWeight(publicRate, 2),
futuresPublicFundingRateEPL: request.GetRateLimiterWithWeight(publicRate, 5),
futuresFundingHistoryEPL: request.GetRateLimiterWithWeight(futuresRate, 5),
spotAuthenticationEPL: request.GetRateLimiterWithWeight(spotRate, 10),
futuresAuthenticationEPL: request.GetRateLimiterWithWeight(futuresRate, 10),
futuresOrderDetailsByClientOrderIDEPL: request.GetRateLimiterWithWeight(futuresRate, 5),
modifySubAccountAPIEPL: request.GetRateLimiterWithWeight(managementRate, 30),
allSubAccountsBalanceEPL: request.GetRateLimiterWithWeight(managementRate, 20),
allUserSubAccountsV2EPL: request.GetRateLimiterWithWeight(managementRate, 20),
futuresRetrieveTransactionHistoryEPL: request.GetRateLimiterWithWeight(managementRate, 2),
futuresAccountOverviewEPL: request.GetRateLimiterWithWeight(futuresRate, 5),
createSubAccountAPIKeyEPL: request.GetRateLimiterWithWeight(managementRate, 20),
transferOutToMainEPL: request.GetRateLimiterWithWeight(managementRate, 20),
transferFundToFuturesAccountEPL: request.GetRateLimiterWithWeight(managementRate, 20),
futuresTransferOutListEPL: request.GetRateLimiterWithWeight(managementRate, 20),
subscribeToEarnEPL: request.GetRateLimiterWithWeight(spotRate, 5),
earnRedemptionEPL: request.GetRateLimiterWithWeight(spotRate, 5),
earnRedemptionPreviewEPL: request.GetRateLimiterWithWeight(spotRate, 5),
kucoinEarnSavingsProductsEPL: request.GetRateLimiterWithWeight(spotRate, 5),
kucoinEarnFixedIncomeCurrentHoldingEPL: request.GetRateLimiterWithWeight(spotRate, 5),
earnLimitedTimePromotionProductEPL: request.GetRateLimiterWithWeight(spotRate, 5),
earnKCSStakingProductEPL: request.GetRateLimiterWithWeight(spotRate, 5),
earnStakingProductEPL: request.GetRateLimiterWithWeight(spotRate, 5),
vipLendingEPL: request.GetRateLimiterWithWeight(spotRate, 1),
affilateUserRebateInfoEPL: request.GetRateLimiterWithWeight(spotRate, 30),
marginPairsConfigurationEPL: request.GetRateLimiterWithWeight(spotRate, 5),
modifyLeverageMultiplierEPL: request.GetRateLimiterWithWeight(spotRate, 5),
marginActiveHFOrdersEPL: request.GetRateLimiterWithWeight(spotRate, 2),
}
}