Data Structures, Constants and Errors
Data and Event Structures
type Order struct {
OrderIndex int64 `json:"i"`
ClientOrderIndex int64 `json:"u"`
OwnerAccountId int64 `json:"a"`
InitialBaseAmount int64 `json:"is"`
Price uint32 `json:"p"`
RemainingBaseAmount int64 `json:"rs"`
IsAsk uint8 `json:"ia"`
Type uint8 `json:"ot"`
TimeInForce uint8 `json:"f"`
ReduceOnly uint8 `json:"ro"`
TriggerPrice uint32 `json:"tp"`
Expiry int64 `json:"e"`
Status uint8 `json:"st"`
TriggerStatus uint8 `json:"ts"`
ToTriggerOrderIndex0 int64 `json:"t0"`
ToTriggerOrderIndex1 int64 `json:"t1"`
ToCancelOrderIndex0 int64 `json:"c0"`
}
type CancelOrder struct {
AccountId int64 `json:"a"`
OrderIndex int64 `json:"i"`
ClientOrderIndex int64 `json:"u"`
AppError string `json:"ae"`
}
type ModifyOrder struct {
MarketId uint8 `json:"m"`
OldOrder *Order `json:"oo"`
NewOrder *Order `json:"no"`
AppError string `json:"ae"`
}
type Trade struct {
Price uint32 `json:"p"`
Size int64 `json:"s"`
TakerFee int32 `json:"tf"`
MakerFee int32 `json:"mf"`
}
Constants
TxTypeL2ChangePubKey = 8
TxTypeL2CreateSubAccount = 9
TxTypeL2CreatePublicPool = 10
TxTypeL2UpdatePublicPool = 11
TxTypeL2Transfer = 12
TxTypeL2Withdraw = 13
TxTypeL2CreateOrder = 14
TxTypeL2CancelOrder = 15
TxTypeL2CancelAllOrders = 16
TxTypeL2ModifyOrder = 17
TxTypeL2MintShares = 18
TxTypeL2BurnShares = 19
TxTypeL2UpdateLeverage = 20Transaction Status Mapping
0: Failed
1: Pending
2: Executed
3: Pending - Final StateError Codes
// Tx
AppErrTxNotFound = NewBusinessError(21500, "transaction not found")
AppErrInvalidTxInfo = NewBusinessError(21501, "invalid tx info")
AppErrMarshalTxFailed = NewBusinessError(21502, "marshal tx failed")
AppErrMarshalEventsFailed = NewBusinessError(21503, "marshal event failed")
AppErrFailToL1Signature = NewBusinessError(21504, "fail to l1 signature")
AppErrUnsupportedTxType = NewBusinessError(21505, "unsupported tx type")
AppErrTooManyTxs = NewBusinessError(21506, "too many pending txs. Please try again later")
AppErrAccountBelowMaintenanceMargin = NewBusinessError(21507, "account is below maintenance margin, can't execute transaction")
AppErrAccountBelowInitialMargin = NewBusinessError(21508, "account is below initial margin, can't execute transaction")
AppErrInvalidTxTypeForAccount = NewBusinessError(21511, "invalid tx type for account")
AppErrInvalidL1RequestId = NewBusinessError(21512, "invalid l1 request id")
// OrderBook
AppErrInactiveCancel = NewBusinessError(21600, "given order is not an active limit order")
AppErrOrderBookFull = NewBusinessError(21601, "order book is full")
AppErrInvalidMarketIndex = NewBusinessError(21602, "invalid market index")
AppErrInvalidMinAmountsForMarket = NewBusinessError(21603, "invalid min amounts for market")
AppErrInvalidMarginFractionsForMarket = NewBusinessError(21604, "invalid margin fractions for market")
AppErrInvalidMarketStatus = NewBusinessError(21605, "invalid market status")
AppErrMarketAlreadyExist = NewBusinessError(21606, "market already exist for given index")
AppErrInvalidMarketFees = NewBusinessError(21607, "invalid market fees")
AppErrInvalidQuoteMultiplier = NewBusinessError(21608, "invalid quote multiplier")
AppErrInvalidInterestRate = NewBusinessError(21611, "invalid interest rate")
AppErrInvalidOpenInterest = NewBusinessError(21612, "invalid open interest")
AppErrInvalidMarginMode = NewBusinessError(21613, "invalid margin mode")
AppErrNoPositionFound = NewBusinessError(21614, "no position found")
// Order
AppErrInvalidOrderIndex = NewBusinessError(21700, "invalid order index")
AppErrInvalidBaseAmount = NewBusinessError(21701, "invalid base amount")
AppErrInvalidPrice = NewBusinessError(21702, "invalid price")
AppErrInvalidIsAsk = NewBusinessError(21703, "invalid isAsk")
AppErrInvalidOrderType = NewBusinessError(21704, "invalid OrderType")
AppErrInvalidOrderTimeInForce = NewBusinessError(21705, "invalid OrderTimeInForce")
AppErrInvalidOrderAmount = NewBusinessError(21706, "invalid order base or quote amount")
AppErrInvalidOrderOwner = NewBusinessError(21707, "account is not owner of the order")
AppErrEmptyOrder = NewBusinessError(21708, "order is empty")
AppErrInactiveOrder = NewBusinessError(21709, "order is inactive")
AppErrUnsupportedOrderType = NewBusinessError(21710, "unsupported order type")
AppErrInvalidOrderExpiry = NewBusinessError(21711, "invalid expiry")
AppErrAccountHasAQueuedCancelAllOrdersRequest = NewBusinessError(21712, "account has a queued cancel all orders request")
AppErrInvalidCancelAllTimeInForce = NewBusinessError(21713, "invalid cancel all time in force")
AppErrInvalidCancelAllTime = NewBusinessError(21714, "invalid cancel all time")
AppErrInctiveOrder = NewBusinessError(21715, "given order is not an active order")
AppErrOrderNotExpired = NewBusinessError(21716, "order is not expired")
AppErrMaxOrdersPerAccount = NewBusinessError(21717, "maximum active limit order count reached")
AppErrMaxOrdersPerAccountPerMarket = NewBusinessError(21718, "maximum active limit order count per market reached")
AppErrMaxPendingOrdersPerAccount = NewBusinessError(21719, "maximum pending order count reached")
AppErrMaxPendingOrdersPerAccountPerMarket = NewBusinessError(21720, "maximum pending order count per market reached")
AppErrMaxTWAPOrdersInExchange = NewBusinessError(21721, "maximum twap order count reached")
AppErrMaxConditionalOrdersInExchange = NewBusinessError(21722, "maximum conditional order count reached")
AppErrInvalidAccountHealth = NewBusinessError(21723, "invalid account health")
AppErrInvalidLiquidationSize = NewBusinessError(21724, "invalid liquidation size")
AppErrInvalidLiquidationPrice = NewBusinessError(21725, "invalid liquidation price")
AppErrInsuranceFundCannotBePartiallyLiquidated = NewBusinessError(21726, "insurance fund cannot be partially liquidated")
AppErrInvalidClientOrderIndex = NewBusinessError(21727, "invalid client order index")
AppErrClientOrderIndexExists = NewBusinessError(21728, "client order index already exists")
AppErrInvalidOrderTriggerPrice = NewBusinessError(21729, "invalid order trigger price")
AppOrderStatusIsNotPending = NewBusinessError(21730, "order status is not pending")
AppPendingOrderCanNotBeTriggered = NewBusinessError(21731, "order can not be triggered")
AppReduceOnlyIncreasesPosition = NewBusinessError(21732, "reduce only increases position")
AppErrFatFingerPrice = NewBusinessError(21733, "order price flagged as an accidental price")
AppErrPriceTooFarFromMarkPrice = NewBusinessError(21734, "limit order price is too far from the mark price")
AppErrPriceTooFarFromTrigger = NewBusinessError(21735, "SL/TP order price is too far from the trigger price")
AppErrInvalidOrderTriggerStatus = NewBusinessError(21736, "invalid order trigger status")
AppErrInvalidOrderStatus = NewBusinessError(21737, "invalid order status")
AppErrInvalidReduceOnlyDirection = NewBusinessError(21738, "invalid reduce only direction")
AppErrNotEnoughOrderMargin = NewBusinessError(21739, "not enough margin to create the order")
AppErrInvalidReduceOnlyMode = NewBusinessError(21740, "invalid reduce only mode")
// Deleverage
AppErrDeleverageAgainstItself = NewBusinessError(21901, "deleverage against itself")
AppErrDeleverageDoesNotMatchLiquidationStatus = NewBusinessError(21902, "deleverage does not match liquidation status")
AppErrDeleverageWithOpenOrders = NewBusinessError(21903, "deleverage with open orders")
AppErrInvalidDeleverageSize = NewBusinessError(21904, "invalid deleverage size")
AppErrInvalidDeleveragePrice = NewBusinessError(21905, "invalid deleverage price")
AppErrInvalidDeleverageSide = NewBusinessError(21906, "invalid deleverage side")
// RateLimit
AppErrTooManyRequest = NewBusinessError(23000, "Too Many Requests!")
AppErrTooManySubscriptions = NewBusinessError(23001, "Too Many Subscriptions!")
AppErrTooManyDifferentAccounts = NewBusinessError(23002, "Too Many Different Accounts!")
AppErrTooManyConnections = NewBusinessError(23003, "Too Many Connections!")
Updated about 1 month ago
