@@ -41,9 +41,37 @@ def __init__(self, network: str):
4141 def Coin (self , amount : int , denom : str ):
4242 return cosmos_base_coin_pb .Coin (amount = str (amount ), denom = denom )
4343
44- def OrderData (self , market_id : str , subaccount_id : str , order_hash : str ):
44+ def get_order_mask (self , ** kwargs ):
45+ order_mask = 0
46+
47+ if kwargs .get ("is_conditional" ):
48+ order_mask += injective_exchange_pb .OrderMask .CONDITIONAL
49+ else :
50+ order_mask += injective_exchange_pb .OrderMask .REGULAR
51+
52+ if kwargs .get ("order_direction" ) == "buy" :
53+ order_mask += injective_exchange_pb .OrderMask .DIRECTION_BUY_OR_HIGHER
54+
55+ elif kwargs .get ("order_direction" ) == "sell" :
56+ order_mask += injective_exchange_pb .OrderMask .DIRECTION_SELL_OR_LOWER
57+
58+ if kwargs .get ("order_type" ) == "market" :
59+ order_mask += injective_exchange_pb .OrderMask .TYPE_MARKET
60+
61+ elif kwargs .get ("order_type" ) == "limit" :
62+ order_mask += injective_exchange_pb .OrderMask .TYPE_LIMIT
63+
64+ if order_mask == 0 :
65+ order_mask = 1
66+
67+ return order_mask
68+
69+ def OrderData (self , market_id : str , subaccount_id : str , order_hash : str , ** kwargs ):
70+
71+ self .get_order_mask (** kwargs )
72+
4573 return injective_exchange_tx_pb .OrderData (
46- market_id = market_id , subaccount_id = subaccount_id , order_hash = order_hash
74+ market_id = market_id , subaccount_id = subaccount_id , order_hash = order_hash , order_mask = order_mask
4775 )
4876
4977 def SpotOrder (
@@ -95,6 +123,7 @@ def DerivativeOrder(
95123 fee_recipient : str ,
96124 price : float ,
97125 quantity : float ,
126+ trigger_price : float = 0 ,
98127 ** kwargs
99128 ):
100129 # load denom metadata
@@ -114,7 +143,7 @@ def DerivativeOrder(
114143
115144 # prepare values
116145 price = derivative_price_to_backend (price , denom )
117- trigger_price = derivative_price_to_backend (0 , denom )
146+ trigger_price = derivative_price_to_backend (trigger_price , denom )
118147 quantity = derivative_quantity_to_backend (quantity , denom )
119148
120149 if kwargs .get ("is_buy" ) and not kwargs .get ("is_po" ):
@@ -129,6 +158,18 @@ def DerivativeOrder(
129158 elif not kwargs .get ("is_buy" ) and kwargs .get ("is_po" ):
130159 order_type = injective_exchange_pb .OrderType .SELL_PO
131160
161+ elif kwargs .get ("stop_buy" ):
162+ order_type = injective_exchange_pb .OrderType .STOP_BUY
163+
164+ elif kwargs .get ("stop_sell" ):
165+ order_type = injective_exchange_pb .OrderType .STOP_SEll
166+
167+ elif kwargs .get ("take_buy" ):
168+ order_type = injective_exchange_pb .OrderType .TAKE_BUY
169+
170+ elif kwargs .get ("take_sell" ):
171+ order_type = injective_exchange_pb .OrderType .TAKE_SELL
172+
132173 return injective_exchange_pb .DerivativeOrder (
133174 market_id = market_id ,
134175 order_info = injective_exchange_pb .OrderInfo (
@@ -290,7 +331,7 @@ def MsgCancelSpotOrder(
290331 sender = sender ,
291332 market_id = market_id ,
292333 subaccount_id = subaccount_id ,
293- order_hash = order_hash ,
334+ order_hash = order_hash
294335 )
295336
296337 def MsgBatchCreateSpotLimitOrders (self , sender : str , orders : List ):
@@ -509,13 +550,16 @@ def MsgInstantBinaryOptionsMarketLaunch(
509550 )
510551
511552 def MsgCancelDerivativeOrder (
512- self , market_id : str , sender : str , subaccount_id : str , order_hash : str
553+ self , market_id : str , sender : str , subaccount_id : str , order_hash : str , ** kwargs
513554 ):
555+ order_mask = self .get_order_mask (** kwargs )
556+
514557 return injective_exchange_tx_pb .MsgCancelDerivativeOrder (
515- sender = sender ,
516- market_id = market_id ,
517- subaccount_id = subaccount_id ,
518- order_hash = order_hash ,
558+ sender = sender ,
559+ market_id = market_id ,
560+ subaccount_id = subaccount_id ,
561+ order_hash = order_hash ,
562+ order_mask = order_mask
519563 )
520564
521565 def MsgBatchCreateDerivativeLimitOrders (self , sender : str , orders : List ):
0 commit comments