package okx

import "errors"

// ErrorCodes and their corresponding error messages
var (
	ErrorCodes = map[string]error{
		"60001": errors.New("\"OK_ACCESS_KEY\" can not be empty"),
		"60002": errors.New("\"OK_ACCESS_SIGN\" can not be empty"),
		"60003": errors.New("\"OK_ACCESS_PASSPHRASE\" can not be empty"),
		"60004": errors.New("invalid OK_ACCESS_TIMESTAMP"),
		"60005": errors.New("invalid OK_ACCESS_KEY"),
		"60006": errors.New("timestamp request expired"),
		"60007": errors.New("invalid sign"),
		"60008": errors.New("public websocket services do not support subscribing to private channels"),
		"60009": errors.New("login failed"),
		"60011": errors.New("please log in"),
		"60012": errors.New("illegal request"),
		"60013": errors.New("invalid args"),
		"60014": errors.New("requests too frequent"),
		"60015": errors.New("connection closed as there was no data transmission in the last 30 seconds"),
		"60016": errors.New("buffer is full, cannot write data"),
		"60017": errors.New("invalid url path"),
		"60018": errors.New("the {0} {1} {2} {3} {4} does not exist"),
		"60019": errors.New("invalid op {op}"),
		"60020": errors.New("apikey subscription amount exceeds the limit {0}"),
		"60021": errors.New("this operation does not support multiple accounts login"),
		"60022": errors.New("bulk login partially succeeded"),
		"60023": errors.New("bulk login requests too frequent"),
		"60024": errors.New("wrong passphrase"),
		"60025": errors.New("token subscription amount exceeds the limit {0}"),
		"60026": errors.New("batch login by apikey and token simultaneously is not supported"),
		"60027": errors.New("parameter {0} can not be empty"),
		"60028": errors.New("private websocket services do not support subscribing to public channels"),
		"60029": errors.New("only users who're VIP5 and above can subscribe to books-l2-tbt order book channels"),
		"60030": errors.New("only users who're VIP4 and above can subscribe to books50-l2-tbt order book channels"),
		"63999": errors.New("internal system error"),
		"70000": errors.New("rFQ does not exist"),
		"70001": errors.New("quote does not exist"),
		"70002": errors.New("block trade does not exist"),
		"70003": errors.New("public block trade does not exist"),
		"70004": errors.New("invalid instrument {0}"),
		"70005": errors.New("the number of legs in RFQ cannot exceed maximum value"),
		"70006": errors.New("does not meet the minimum asset requirement"),
		"70007": errors.New("underlying index {0} does not exist under instType {1}"),
		"70008": errors.New("operation failed under MMP status, the frozen window is {0} seconds"),
		"70009": errors.New("data must have at least 1 valid element"),
		"70011": errors.New("duplicate setting for instType {0}"),
		"70100": errors.New("duplicate instruments in legs array"),
		"70101": errors.New("duplicate clRfqId"),
		"70102": errors.New("no counterparties specified"),
		"70103": errors.New("invalid counterparty"),
		"70105": errors.New("the total value should be greater than the min notional value {0}"),
		"70106": errors.New("the trading amount does not meet the min tradable amount requirement"),
		"70107": errors.New("the number of counterparties cannot exceed maximum value"),
		"70109": errors.New("counterparties for selected instruments are currently unavailable"),
		"70200": errors.New("the RFQ with {0} status cannot be canceled"),
		"70203": errors.New("cancellation failed as rfq count exceeds the limit {0}"),
		"70207": errors.New("cancellation failed as you do not have any active RFQs"),
		"70208": errors.New("cancellation failed as service is unavailable now, please try again later"),
		"70301": errors.New("duplicate clQuoteId"),
		"70303": errors.New("the RFQ with {0} status cannot be quoted"),
		"70304": errors.New("price should be an integer multiple of the tick size"),
		"70305": errors.New("bid price cannot be higher than offer price"),
		"70306": errors.New("the legs of quote do not match the legs of {0}"),
		"70307": errors.New("size should be in integral multiples of the lot size"),
		"70308": errors.New("quote to your own RFQ is not allowed"),
		"70309": errors.New("quote to the same RFQ with the same side is not allowed"),
		"70310": errors.New("quoted price of instId {0} cannot exceed your preset price limit"),
		"70400": errors.New("the quote with {0} status cannot be canceled"),
		"70408": errors.New("cancellation failed as quote count exceeds the limit {0}"),
		"70409": errors.New("cancellation failed as you do not have any active quotes"),
		"70501": errors.New("RFQ {0} is not quoted by {1}"),
		"70502": errors.New("the legs do not match the legs of {0}"),
		"70503": errors.New("the legs of execution do not match the legs of {0}"),
		"70504": errors.New("execution failed as the RFQ status is {0}"),
		"70505": errors.New("execution failed as the quote status is {0}"),
		"70511": errors.New("execution is being processed"),
		"56000": errors.New("block trade does not exist"),
		"56001": errors.New("the number of multi-legs cannot exceed {0}"),
		"56002": errors.New("the number of multi-legs does not match with the verified one"),
		"56003": errors.New("duplicated clBlockTdId"),
		"56004": errors.New("trade with yourself is not allowed"),
		"56005": errors.New("\"clBlockTdId\" should be the same as the verified one"),
		"56006": errors.New("the role should be different from the verified one"),
		"56007": errors.New("leg no.{0} does not match with the verified one"),
		"56008": errors.New("duplicate instruments in legs array"),
		"59000": errors.New("your settings failed as you have positions or open orders"),
		"59001": errors.New("switching unavailable as you have borrowings"),
		"59004": errors.New("only IDs with the same instrument type are supported"),
		"59005": errors.New("when users transfer the margin by themselves in isolated mode, the value of the asset allocated to the position for the first time must be greater than 10,000 USDT"),
		"59100": errors.New("you have open positions. please cancel all open positions before changing the leverage"),
		"59101": errors.New("you have pending orders with isolated positions. please cancel all the pending isolated margin orders and adjust the leverage"),
		"59102": errors.New("leverage exceeds the maximum leverage. please adjust the leverage"),
		"59103": errors.New("leverage is too low and no sufficient margin in your account. please adjust the leverage"),
		"59104": errors.New("the leverage is too high. the borrowed position has exceeded the maximum position of this leverage. please adjust the leverage"),
		"59105": errors.New("leverage can not be less than {0}. please adjust the leverage"),
		"59106": errors.New("the max available margin corresponding to your order tier please adjust your margin and place a new order"),
		"59107": errors.New("you have pending cross margin orders under the service, please modify the leverage after canceling all pending cross margin orders"),
		"59108": errors.New("low leverage and insufficient margin, please adjust the leverage"),
		"59109": errors.New("account equity less than the required margin amount after adjustment. please adjust the leverage "),
		"59110": errors.New("the instrument type corresponding to this {0} does not support the tgtCcy parameter"),
		"59111": errors.New("you cannot query the leverage of cross derivatives positions under a PM account"),
		"59112": errors.New("you have isolated/cross pending orders. please cancel them before adjusting your leverage"),
		"59200": errors.New("insufficient account balance"),
		"59201": errors.New("negative account balance"),
		"59300": errors.New("margin call failed. position does not exist"),
		"59301": errors.New("margin adjustment failed for exceeding the max limit"),
		"59302": errors.New("you have pending close orders, please modify the margin after canceling the orders"),
		"59303": errors.New("insufficient available margin, add margin or reduce the borrowing amount"),
		"59304": errors.New("insufficient equity for borrowing, keep enough funds to pay interest for at least one day"),
		"59305": errors.New("use VIP loan first to set the VIP loan priority"),
		"59306": errors.New("your borrowing amount exceeds the max limit"),
		"59307": errors.New("you are not eligible for VIP loans"),
		"59308": errors.New("unable to repay VIP loan due to insufficient borrow limit"),
		"59309": errors.New("unable to repay an amount that exceeds the borrowed amount"),
		"59310": errors.New("your account does not support VIP loan"),
		"59311": errors.New("unable to set up as there is VIP loan"),
		"59312": errors.New("{currency} does not support VIP loans"),
		"59401": errors.New("holdings already reached the limit"),
		"59402": errors.New("none of the passed instId is in live state, please check them separately"),
		"59500": errors.New("only the APIKey of the main account has permission"),
		"59501": errors.New("only 50 APIKeys can be created per account"),
		"59502": errors.New("note name cannot be duplicate with the currently created APIKey note name"),
		"59503": errors.New("each APIKey can bind up to 20 IP addresses"),
		"59504": errors.New("the sub account does not support the withdrawal function"),
		"59505": errors.New("the passphrase format is incorrect"),
		"59506": errors.New("apikey does not exist"),
		"59507": errors.New("the two accounts involved in a transfer must be two different sub accounts under the same parent account"),
		"59508": errors.New("the sub account of {0} is suspended"),
		"59509": errors.New("account does not have permission to reset MMP status"),
		"59510": errors.New("sub-account does not exist"),
		"59512": errors.New("unable to set up this permission for 'ND' brokers sub accounts"),
		"59601": errors.New("this sub-account name already exists, try another name"),
		"59602": errors.New("number of API keys exceeds the limit"),
		"59603": errors.New("number of sub accounts exceeds the limit"),
		"59604": errors.New("only the main account APIkey can access this API"),
		"59605": errors.New("this API key does not exist in your sub-account, try another API key"),
		"59606": errors.New("transfer funds to your main account before deleting your sub-account"),
		"59608": errors.New("only the broker account has permission to operate this API"),
		"59609": errors.New("broker already exists"),
		"59610": errors.New("broker does not exist"),
		"59611": errors.New("broker unverified"),
		"59612": errors.New("cannot convert time format"),
		"59613": errors.New("there is currently no escrow relationship established with the sub account"),
		"59614": errors.New("managed sub account do not support this operation"),
		"59615": errors.New("the time interval between the begin date and end date cannot exceed 180 days"),
		"59616": errors.New("begin date cannot be greater than end date"),
		"59617": errors.New("sub-account created. failed to set up account level"),
		"59618": errors.New("failed to create sub-account"),
		"58000": errors.New("account type {0} does not supported when getting the sub-account balance"),
		"58001": errors.New("incorrect trade password"),
		"58002": errors.New("please activate savings account first"),
		"58003": errors.New("currency type is not supported by savings account"),
		"58004": errors.New("account blocked (transfer & withdrawal endpoint: either end of the account does not authorize the transfer)"),
		"58005": errors.New("the purchase/redeemed amount must be no greater than {0}"),
		"58006": errors.New("service unavailable for token {0}"),
		"58007": errors.New("abnormal assets interface. please try again later"),
		"58008": errors.New("you do not have assets in this currency"),
		"58009": errors.New("currency pair do not exist"),
		"58010": errors.New("the chain {0} is not supported"),
		"58011": errors.New("sorry, we are unable to provide services to unverified users in {Region} due to local laws and regulations. please verify your account in order to use the services"),
		"58012": errors.New("sorry, you can't transfer assets to this recipient as OKX are unable to provide services to unverified users in {region} due to local laws and regulations"),
		"58100": errors.New("the trading product triggers risk control, and the platform has suspended the fund transfer-out function with related users. please wait patiently"),
		"58101": errors.New("transfer suspended (transfer endpoint: either end of the account does not authorize the transfer)"),
		"58102": errors.New("too frequent transfer (transfer too frequently)"),
		"58104": errors.New("since your P2P transaction is abnormal, you are restricted from making fund transfers. please contact customer support to remove the restriction"),
		"58105": errors.New(`since your P2P transaction is abnormal, you are restricted from making fund transfers. please transfer funds on our website or app to complete identity verification`),
		"58106": errors.New("please enable the account for spot contract"),
		"58107": errors.New("please enable the account for futures contract"),
		"58108": errors.New("please enable the account for option contract"),
		"58109": errors.New("please enable the account for swap contract"),
		"58110": errors.New("the contract triggers risk control, and the platform has suspended the fund transfer function of it. please wait patiently"),
		"58111": errors.New("funds transfer unavailable as the perpetual contract is charging the funding fee. please try again later"),
		"58112": errors.New("your fund transfer failed. please try again later"),
		"58114": errors.New("transfer amount must be more than 0"),
		"58115": errors.New("sub-account does not exist"),
		"58116": errors.New("transfer amount exceeds the limit"),
		"58117": errors.New("account assets are abnormal, please deal with negative assets before transferring"),
		"58119": errors.New("{0} sub-account has no permission to transfer out, please set first"),
		"58120": errors.New("the transfer service is temporarily unavailable, please try again later"),
		"58121": errors.New("this transfer will result in a high-risk level of your position, which may lead to forced liquidation. You need to re-adjust the transfer amount to make sure the position is at a safe level before proceeding with the transfer"),
		"58122": errors.New("a portion of your spot is being used for delta offset between positions. if the transfer amount exceeds the available amount, it may affect current spot-derivatives risk offset structure, which will result in an increased maintenance margin requirement (MMR) rate. please be aware of your risk level"),
		"58123": errors.New("parameter from can not equal to parameter to"),
		"58200": errors.New("withdrawal from {0} to {1} is unavailable for this currency"),
		"58201": errors.New("withdrawal amount exceeds the daily limit"),
		"58202": errors.New("the minimum withdrawal amount for NEO is 1, and the amount must be an integer"),
		"58203": errors.New("please add a withdrawal address"),
		"58204": errors.New("withdrawal suspended"),
		"58205": errors.New("withdrawal amount exceeds the upper limit"),
		"58206": errors.New("withdrawal amount is lower than the lower limit"),
		"58207": errors.New("withdrawal address is not in the verification-free whitelist"),
		"58208": errors.New("withdrawal failed. please link your email"),
		"58209": errors.New("sub-accounts cannot be deposits or withdrawals"),
		"58210": errors.New("withdrawal fee exceeds the upper limit"),
		"58211": errors.New("withdrawal fee is lower than the lower limit (withdrawal endpoint: incorrect fee)"),
		"58212": errors.New("withdrawal fee should be {0} of the withdrawal amount"),
		"58214": errors.New("withdrawals suspended due to {chainName} maintenance"),
		"58215": errors.New("withdrawal ID does not exist"),
		"58216": errors.New("operation not allowed"),
		"58217": errors.New("you cannot withdraw your asset at the moment due to a risk detected in your withdrawal address, contact customer support for details"),
		"58218": errors.New("your saved withdrawal account has expired"),
		"58220": errors.New("the withdrawal order is already canceled"),
		"58221": errors.New("missing label of withdrawal address"),
		"58222": errors.New("illegal withdrawal address"),
		"58224": errors.New("this type of crypto does not support on-chain withdrawing to OKX addresses. please withdraw through internal transfers"),
		"58225": errors.New("sorry, you can't transfer assets to this recipient as OKX are unable to provide services to unverified users in {region} due to local laws and regulations"),
		"58300": errors.New("deposit-address count exceeds the limit"),
		"58301": errors.New("deposit-address not exist"),
		"58302": errors.New("deposit-address needs tag"),
		"58303": errors.New("deposit for the chain {0} is closed now"),
		"58304": errors.New("failed to create invoice"),
		"58350": errors.New("insufficient balance"),
		"58351": errors.New("invoice expired"),
		"58352": errors.New("invalid invoice"),
		"58353": errors.New("deposit amount must be within limits"),
		"58354": errors.New("you have reached the limit of 10000 invoices per day"),
		"58355": errors.New("permission denied. please contact your account manager"),
		"58356": errors.New("the accounts of the same node do not support the lightning network deposit or withdrawal"),
		"58357": errors.New("{0} is not allowed to create a deposit address"),
		"58358": errors.New("fromCcy should not be the same as toCcy"),
		"58370": errors.New("the daily usage of small assets convert exceeds the limit"),
		"58371": errors.New("small assets exceed the maximum limit"),
		"58372": errors.New("insufficient small assets"),
		"55000": errors.New("cannot be transferred out within 30 minutes after delivery"),
		"54000": errors.New("margin transactions unavailable"),
		"54001": errors.New("only multi-currency margin account can be set to borrow coins automatically"),
		"52900": errors.New("general Invalid request"),
		"52901": errors.New("invalid base asset"),
		"52902": errors.New("invalid quote asset"),
		"52903": errors.New("invalid quote amount"),
		"52904": errors.New("invalid quote side"),
		"52905": errors.New("invalid quote price"),
		"52907": errors.New("order not found"),
		"52908": errors.New("invalid order ID"),
		"52909": errors.New("duplicated client order ID"),
		"52910": errors.New("service unavailable, please try again later"),
		"52911": errors.New("RFQ service unavailable, please try again later"),
		"52912": errors.New("server timeout"),
		"52913": errors.New("trade rejected"),
		"52915": errors.New("cannot quote due to large amounts of RFQ and insufficient liquidity, please try again later"),
		"52916": errors.New("insufficient balance in funding account"),
		"52917": errors.New("RFQ quantity cannot be less than the lower limit"),
		"52918": errors.New("insufficient balance in funding account"),
		"52919": errors.New("parameter {param} of convert trading is inconsistent with the quotation"),
		"52920": errors.New("quantity of convert trading cannot exceed the quotation quantity"),
		"52921": errors.New("quote traded, please ask for quote again"),
		"52922": errors.New("quote expired, please ask for quote again"),
		"52923": errors.New("service unavailable, please try again later"),
		"51720": errors.New("redeem error"),
		"51721": errors.New("cancel redeem error"),
		"51722": errors.New("redeem already complete"),
		"51723": errors.New("early redemption is not supported"),
		"51724": errors.New("redemption is currently not supported"),
		"51725": errors.New("cancellation is currently not supported"),
		"51726": errors.New("cancellation of subscriptions/redemptions is not supported"),
		"51727": errors.New("the subscription quantity is below the minimum requirement"),
		"51728": errors.New("the subscription quantity is above the maximum limit"),
		"51729": errors.New("this project has not reached the redemption date"),
		"51730": errors.New("sold out"),
		"52000": errors.New("no market data found"),
		"51000": errors.New("parameter {0} error"),
		"51001": errors.New("instrument ID does not exist"),
		"51002": errors.New("instrument ID does not match underlying index"),
		"51003": errors.New("either client order ID or order ID is required"),
		"51004": errors.New("order amount exceeds current tier limit, please lower the leverage"),
		"51005": errors.New("order amount exceeds the limit"),
		"51006": errors.New("order price is not within the price limit (max buy price: {0} min sell price: {1})"),
		"51007": errors.New("order placement failed. order amount should be at least 1 contract (showing up when placing an order with less than 1 contract)"),
		"51008": errors.New("delegate failed. Insufficient {0} balance in account"),
		"51009": errors.New("order placement function is blocked by the platform"),
		"51010": errors.New("operation is not supported under the current account mode"),
		"51011": errors.New("duplicated order ID"),
		"51012": errors.New("token does not exist"),
		"51014": errors.New("index does not exist"),
		"51015": errors.New("instrument ID does not match instrument type"),
		"51016": errors.New("duplicated client order ID"),
		"51017": errors.New("borrow amount exceeds the limit"),
		"51018": errors.New("user with option account can not hold net short positions"),
		"51019": errors.New("no net long positions can be held under cross margin mode in options"),
		"51020": errors.New("order amount should be greater than the min available amount"),
		"51021": errors.New("contract to be listed"),
		"51022": errors.New("contract suspended"),
		"51023": errors.New("position does not exist"),
		"51024": errors.New("trading account is blocked"),
		"51025": errors.New("order count exceeds the limit"),
		"51026": errors.New("instrument type does not match underlying index"),
		"51027": errors.New("contract expired"),
		"51028": errors.New("contract under delivery"),
		"51029": errors.New("contract is being settled"),
		"51030": errors.New("funding fee is being settled"),
		"51031": errors.New("this order price is not within the closing price range"),
		"51032": errors.New("closing all positions at market price"),
		"51033": errors.New("the total amount per order for this pair has reached the upper limit"),
		"51037": errors.New("the current account risk status only supports you to place IOC orders that can reduce the risk of your account"),
		"51038": errors.New("there is already an IOC order under the current risk module that reduces the risk of the account"),
		"51039": errors.New("leverage cannot be adjusted for the cross positions of futures and perpetual swap under the PM account"),
		"51040": errors.New("cannot adjust margins for long isolated options positions"),
		"51041": errors.New("portfolio margin account only supports net mode"),
		"51044": errors.New("the order type {0}, {1} is not allowed to set stop loss and take profit"),
		"51046": errors.New("the take profit trigger price should be higher than the order price"),
		"51047": errors.New("the stop loss trigger price should be lower than the order price"),
		"51048": errors.New("the take profit trigger price should be lower than the order price"),
		"51049": errors.New("the stop loss trigger price should be higher than the order price"),
		"51050": errors.New("the take profit trigger price should be higher than the best ask price"),
		"51051": errors.New("the stop loss trigger price should be lower than the best ask price"),
		"51052": errors.New("the take profit trigger price should be lower than the best bid price"),
		"51053": errors.New("the stop loss trigger price should be higher than the best bid price"),
		"51054": errors.New("getting information timed out, please try again later"),
		"51055": errors.New("futures grid is not available in portfolio margin mode"),
		"51056": errors.New("action not allowed"),
		"51057": errors.New("futures grid is not available in simple trading mode"),
		"51058": errors.New("no position"),
		"51059": errors.New("strategy for the current state does not support this operation"),
		"51101": errors.New("entered amount exceeds the max pending order amount per transaction"),
		"51102": errors.New("entered amount exceeds the max pending count"),
		"51103": errors.New("entered amount exceeds the max pending order count of the underlying asset"),
		"51104": errors.New("entered amount exceeds the max pending order amount of the underlying asset"),
		"51105": errors.New("entered amount exceeds the max order amount of the contract"),
		"51106": errors.New("entered amount exceeds the max order amount of the underlying asset"),
		"51107": errors.New("entered amount exceeds the max holding amount"),
		"51108": errors.New("positions exceed the limit for closing out with the market price"),
		"51109": errors.New("no available offer"),
		"51110": errors.New("you can only place a limit order after call auction has started"),
		"51111": errors.New("maximum {0} orders can be placed in bulk"),
		"51112": errors.New("close order size exceeds your available size"),
		"51113": errors.New("market-price liquidation requests too frequent"),
		"51115": errors.New("cancel all pending close-orders before liquidation"),
		"51116": errors.New("order price or trigger price exceeds {0}"),
		"51117": errors.New("pending close-orders count exceeds limit"),
		"51120": errors.New("order quantity is less than {0}, please try again"),
		"51121": errors.New("order count should be the integer multiples of the lot size"),
		"51122": errors.New("order price should be higher than the min price {0}"),
		"51124": errors.New("you can only place limit orders during call auction"),
		"51125": errors.New("currently there are reduce + reverse position pending orders in margin trading. please cancel all reduce + reverse position pending orders and continue"),
		"51126": errors.New("currently there are reduce only pending orders in margin trading. please cancel all reduce only pending orders and continue"),
		"51127": errors.New("available balance is 0"),
		"51128": errors.New("multi-currency margin account can not do cross-margin trading"),
		"51129": errors.New("the value of the position and buy order has reached the position limit, and no further buying is allowed"),
		"51130": errors.New("fixed margin currency error"),
		"51131": errors.New("insufficient balance"),
		"51132": errors.New("your position amount is negative and less than the minimum trading amount"),
		"51133": errors.New("reduce-only feature is unavailable for the spot transactions by multi-currency margin account"),
		"51134": errors.New("closing failed. please check your holdings and pending orders"),
		"51135": errors.New("your closing price has triggered the limit price, and the max buy price is {0}"),
		"51136": errors.New("your closing price has triggered the limit price, and the min sell price is {0}"),
		"51137": errors.New("your opening price has triggered the limit price, and the max buy price is {0}"),
		"51138": errors.New("your opening price has triggered the limit price, and the min sell price is {0}"),
		"51139": errors.New("reduce-only feature is unavailable for the spot transactions by simple account"),
		"51145": errors.New("when users transfer the margin by themselves in isolated mode, it’s not supported to place orders in advance"),
		"51147": errors.New("the total value of assets in your trading account needs to be greater than 50,000 USD to trade options"),
		"51148": errors.New("reduceOnly cannot increase the position quantity"),
		"51149": errors.New("order timed out, please try again later"),
		"51150": errors.New("the precision of the number of trades or the price exceeds the limit"),
		"51201": errors.New("value of per market order cannot exceed 1,000,000 USDT"),
		"51202": errors.New("market - order amount exceeds the max amount"),
		"51203": errors.New("order amount exceeds the limit {0}"),
		"51204": errors.New("the price for the limit order can not be empty"),
		"51205": errors.New("reduce-only is not available"),
		"51206": errors.New("please cancel the reduce only order before placing the current {0} order to avoid opening a reverse position"),
		"51250": errors.New("algo order price is out of the available range"),
		"51251": errors.New("algo order type error (when user place an iceberg order)"),
		"51252": errors.New("algo order price is out of the available range"),
		"51253": errors.New("average amount exceeds the limit of per iceberg order"),
		"51254": errors.New("iceberg average amount error (when user place an iceberg order)"),
		"51255": errors.New("limit of per iceberg order: total amount/1000 < x <= total amount"),
		"51256": errors.New("iceberg order price variance error"),
		"51257": errors.New("trail order callback rate error"),
		"51258": errors.New("trail - order placement failed. the trigger price of a sell order should be higher than the last transaction price"),
		"51259": errors.New("trail - order placement failed. the trigger price of a buy order should be lower than the last transaction price"),
		"51260": errors.New("maximum {0} pending trail - orders can be held at the same time"),
		"51261": errors.New("each user can hold up to {0} pending stop - orders at the same time"),
		"51262": errors.New("maximum {0} pending iceberg orders can be held at the same time"),
		"51263": errors.New("maximum {0} pending time-weighted orders can be held at the same time"),
		"51264": errors.New("average amount exceeds the limit of per time-weighted order"),
		"51265": errors.New("time-weighted order limit error"),
		"51267": errors.New("time-weighted order strategy initiative rate error"),
		"51268": errors.New("time-weighted order strategy initiative range error"),
		"51269": errors.New("time-weighted order interval error, the interval should be {0}<= x<={1}"),
		"51270": errors.New("the limit of time-weighted order price variance is 0 < x <= 1%"),
		"51271": errors.New("sweep ratio should be 0 < x <= 100%"),
		"51272": errors.New("price variance should be 0 < x <= 1%"),
		"51273": errors.New("total amount should be more than {0}"),
		"51274": errors.New("total quantity of time-weighted order must be larger than single order limit"),
		"51275": errors.New("the amount of single stop-market order can not exceed the upper limit"),
		"51276": errors.New("stop - market orders cannot specify a price"),
		"51277": errors.New("TP trigger price can not be higher than the last price"),
		"51278": errors.New("SL trigger price can not be lower than the last price"),
		"51279": errors.New("TP trigger price can not be lower than the last price"),
		"51280": errors.New("SL trigger price can not be higher than the last price"),
		"51281": errors.New("trigger not support the tgtCcy parameter"),
		"51282": errors.New("the range of price variance is {0}~{1}"),
		"51283": errors.New("the range of time interval is {0}~{1}"),
		"51284": errors.New("the range of average amount is {0}~{1}"),
		"51285": errors.New("the range of total amount is {0}~{1}"),
		"51286": errors.New("the total amount should not be less than {0}"),
		"51287": errors.New("contract not supported"),
		"51288": errors.New("we are stopping the bot. please do not click it multiple times"),
		"51289": errors.New("bot configuration does not exist. please try again later"),
		"51290": errors.New("the bot engine is being upgraded. please try again later"),
		"51291": errors.New("this bot does not exist or has been stopped"),
		"51292": errors.New("this bot type does not exist"),
		"51293": errors.New("this bot does not exist"),
		"51294": errors.New("this bot cannot be created temporarily. please try again later"),
		"51295": errors.New("portfolio margin account does not support ordType {0} in trading bot mode"),
		"51298": errors.New("trigger orders are not available in the net mode of futures and perpetual swaps"),
		"51299": errors.New("order did not go through. you can hold maximum {0} orders of this type"),
		"51300": errors.New("TP trigger price can not be higher than the mark price"),
		"51302": errors.New("SL trigger price can not be lower than the mark price"),
		"51303": errors.New("TP trigger price can not be lower than the mark price"),
		"51304": errors.New("SL trigger price can not be higher than the mark price"),
		"51305": errors.New("TP trigger price can not be higher than the index price"),
		"51306": errors.New("SL trigger price can not be lower than the index price"),
		"51307": errors.New("TP trigger price can not be lower than the index price"),
		"51308": errors.New("SL trigger price can not be higher than the index price"),
		"51309": errors.New("cannot create trading bot during call auction"),
		"51310": errors.New("when users transfer the margin by themselves in isolated mode, strategic orders with ordType iceberg and twap will not be supported"),
		"51311": errors.New("failed to place trailing stop order. callback rate should be within {0}<x<={1}"),
		"51312": errors.New("failed to place trailing stop order. order amount should be within {0}<x<={1}"),
		"51313": errors.New("manual transfer in isolated mode does not support bot trading"),
		"51317": errors.New("trigger orders are not available by margin"),
		"51340": errors.New("used margin must be greater than {0}{1}"),
		"51341": errors.New("position closing not allowed"),
		"51342": errors.New("closing order already exists.please try again later"),
		"51343": errors.New("TP price must be less than the lower price"),
		"51344": errors.New("SL price must be greater than the upper price"),
		"51345": errors.New("policy type is not grid policy"),
		"51346": errors.New("the highest price cannot be lower than the lowest price"),
		"51347": errors.New("no profit available"),
		"51348": errors.New("stop price should be less than the lowest price in the range"),
		"51349": errors.New("stop profit price should be greater than the highest price in the range"),
		"51350": errors.New("no recommended parameters"),
		"51351": errors.New("single income must be greater than 0"),
		"51370": errors.New("the range of lever is {0}~{1}"),
		"51400": errors.New("cancellation failed as the order does not exist"),
		"51401": errors.New("cancellation failed as the order is already canceled"),
		"51402": errors.New("cancellation failed as the order is already completed"),
		"51403": errors.New("cancellation failed as the order type does not support cancellation"),
		"51404": errors.New("order cancellation unavailable during the second phase of call auction"),
		"51405": errors.New("cancellation failed as you do not have any pending orders"),
		"51406": errors.New("canceled - order count exceeds the limit {0}"),
		"51407": errors.New("either order ID or client order ID is required"),
		"51408": errors.New("pair ID or name does not match the order info"),
		"51409": errors.New("either pair ID or pair name ID is required"),
		"51410": errors.New("cancellation failed as the order is already under cancelling status"),
		"51411": errors.New("account does not have permission for mass cancellation"),
		"51412": errors.New("the order has been triggered and cannot be cancelled"),
		"51413": errors.New("cancellation failed as the order type is not supported by endpoint"),
		"51415": errors.New("unable to place order. spot trading only supports using the last price as trigger price. please select \"Last\" and try again"),
		"51500": errors.New("either order price or amount is required"),
		"51501": errors.New("maximum {0} orders can be modified"),
		"51502": errors.New("order modification failed for insufficient margin"),
		"51503": errors.New("order modification failed as the order does not exist"),
		"51506": errors.New("order modification unavailable for the order type"),
		"51508": errors.New("orders are not allowed to be modified during the call auction"),
		"51509": errors.New("modification failed as the order has been canceled"),
		"51510": errors.New("modification failed as the order has been completed"),
		"51511": errors.New("operation failed as the order price did not meet the requirement for post only"),
		"51512": errors.New("failed to amend bulk orders. you cannot add duplicate batch orders in your portfolio margin account"),
		"51513": errors.New("number of modification requests that are currently in progress for an order cannot exceed 3"),
		"51600": errors.New("status not found"),
		"51601": errors.New("order status and order ID cannot exist at the same time"),
		"51602": errors.New("either order status or order ID is required"),
		"51603": errors.New("order does not exist"),
		"51607": errors.New("the file is generating"),
		"50100": errors.New("API frozen, please contact customer service"),
		"50101": errors.New("APIKey does not match current environment"),
		"50102": errors.New("timestamp request expired"),
		"50103": errors.New("request header \"OK_ACCESS_KEY\" can not be empty"),
		"50104": errors.New("request header \"OK_ACCESS_PASSPHRASE\" can not be empty"),
		"50105": errors.New("request header \"OK_ACCESS_PASSPHRASE\" incorrect"),
		"50106": errors.New("request header \"OK_ACCESS_SIGN\" can not be empty"),
		"50107": errors.New("request header \"OK_ACCESS_TIMESTAMP\" can not be empty"),
		"50108": errors.New("exchange ID does not exist"),
		"50109": errors.New("exchange domain does not exist"),
		"50110": errors.New("your IP {0} is not in linking trusted IP addresses.(You can add your IP in linking trusted IP addresses)"),
		"50111": errors.New("invalid OK_ACCESS_KEY"),
		"50112": errors.New("invalid OK_ACCESS_TIMESTAMP"),
		"50113": errors.New("invalid signature"),
		"50114": errors.New("invalid authorization"),
		"50115": errors.New("invalid request method"),
		"1":     errors.New("operation failed"),
		"2":     errors.New("bulk operation partially succeeded"),
		"50000": errors.New("body can not be empty"),
		"50001": errors.New("service temporarily unavailable, please try again later"),
		"50002": errors.New("json data format error"),
		"50004": errors.New("endpoint request timeout (does not mean that the request was successful or failed, please check the request result)"),
		"50005": errors.New("API is offline or unavailable"),
		"50006": errors.New("invalid Content_Type, please use \"application/json\" format"),
		"50007": errors.New("account blocked"),
		"50008": errors.New("user does not exist"),
		"50009": errors.New("account is suspended due to ongoing liquidation"),
		"50010": errors.New("user ID can not be empty"),
		"50011": errors.New("requests too frequent"),
		"50012": errors.New("account status invalid"),
		"50013": errors.New("system is busy, please try again later"),
		"50014": errors.New("parameter {0} can not be empty"),
		"50015": errors.New("either parameter {0} or {1} is required"),
		"50016": errors.New("parameter {0} does not match parameter {1}"),
		"50017": errors.New("the position is frozen due to ADL. operation restricted"),
		"50018": errors.New("currency {0} is frozen due to ADL. operation restricted"),
		"50019": errors.New("the account is frozen due to ADL. operation restricted"),
		"50020": errors.New("the position is frozen due to liquidation. operation restricted"),
		"50021": errors.New("currency {0} is frozen due to liquidation. operation restricted"),
		"50022": errors.New("the account is frozen due to liquidation. operation restricted"),
		"50023": errors.New("funding fee frozen. operation restricted"),
		"50024": errors.New("parameter {0} and {1} can not exist at the same time"),
		"50025": errors.New("parameter {0} count exceeds the limit {1}"),
		"50026": errors.New("system error, please try again later"),
		"50027": errors.New("the account is restricted from trading"),
		"50028": errors.New("unable to take the order, please reach out to support center for details"),
		"50029": errors.New(`this instrument ({0}) is unavailable at present due to risk management. please contact customer service for help`),
		"50030": errors.New("no permission to use this API"),
		"50031": errors.New("amount cannot exceed 100"),
		"50032": errors.New("this asset is blocked, allow its trading and try again"),
		"50033": errors.New("this instrument is blocked, allow its trading and try again"),
		"50034": errors.New("you are not currently on the whitelist, please contact customer service"),
		"50035": errors.New("this endpoint requires that APIKey must be bound to IP"),
		"50036": errors.New("invalid expTime"),
		"50037": errors.New("order expired"),
		"50038": errors.New("this feature is temporarily unavailable in demo trading"),
		"50039": errors.New("the before parameter is not available for implementing timestamp pagination"),
	}
)
