Skip to content

Commit 1fd3585

Browse files
committed
Add constructors for batch msgs
1 parent 585e111 commit 1fd3585

File tree

1 file changed

+140
-84
lines changed

1 file changed

+140
-84
lines changed

pyinjective/composer.py

Lines changed: 140 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,80 @@ def Coin(amount: int, denom: str):
1515
denom=denom
1616
)
1717

18+
@staticmethod
19+
def OrderData(market_id: str, subaccount_id: str, order_hash: str):
20+
return injective_exchange_tx_pb.OrderData(
21+
market_id=market_id,
22+
subaccount_id=subaccount_id,
23+
order_hash=order_hash
24+
)
25+
26+
@staticmethod
27+
def SpotOrder(
28+
market_id: str,
29+
subaccount_id: str,
30+
fee_recipient: str,
31+
price: float,
32+
quantity: float,
33+
isBuy: bool
34+
):
35+
# load denom metadata
36+
denom = Denoms.load_market(market_id)
37+
print('loaded market metadata for', denom.description)
38+
39+
# prepare values
40+
quantity = spot_quantity_to_backend(quantity, denom)
41+
price = spot_price_to_backend(price, denom)
42+
trigger_price = spot_price_to_backend(0, denom)
43+
order_type = injective_exchange_pb.OrderType.BUY if isBuy else injective_exchange_pb.OrderType.SELL
44+
45+
return injective_exchange_pb.SpotOrder(
46+
market_id=market_id,
47+
order_info=injective_exchange_pb.OrderInfo(
48+
subaccount_id=subaccount_id,
49+
fee_recipient=fee_recipient,
50+
price=price,
51+
quantity=quantity
52+
),
53+
order_type=order_type,
54+
trigger_price=trigger_price
55+
)
56+
57+
@staticmethod
58+
def DerivativeOrder(
59+
market_id: str,
60+
subaccount_id: str,
61+
fee_recipient: str,
62+
price: float,
63+
quantity: float,
64+
leverage: float,
65+
isBuy: bool
66+
):
67+
# load denom metadata
68+
denom = Denoms.load_market(market_id)
69+
print('loaded market metadata for', denom.description)
70+
71+
# prepare values
72+
margin = derivative_margin_to_backend(price, quantity, leverage, denom)
73+
price = derivative_price_to_backend(price, denom)
74+
trigger_price = derivative_price_to_backend(0, denom)
75+
quantity = derivative_quantity_to_backend(quantity, denom)
76+
order_type = injective_exchange_pb.OrderType.BUY if isBuy else injective_exchange_pb.OrderType.SELL
77+
78+
return injective_exchange_pb.DerivativeOrder(
79+
market_id=market_id,
80+
order_info=injective_exchange_pb.OrderInfo(
81+
subaccount_id=subaccount_id,
82+
fee_recipient=fee_recipient,
83+
price=price,
84+
quantity=quantity
85+
),
86+
margin=margin,
87+
order_type=order_type,
88+
trigger_price=trigger_price
89+
)
90+
91+
1892
@staticmethod
1993
def MsgSend(from_address: str, to_address: str, amount: int, denom: str):
2094
return cosmos_bank_tx_pb.MsgSend(
@@ -41,29 +115,15 @@ def MsgCreateSpotLimitOrder(
41115
quantity: float,
42116
isBuy: bool
43117
):
44-
# load denom metadata
45-
denom = Denoms.load_market(market_id)
46-
print('loaded market metadata for', denom.description)
47-
48-
# prepare values
49-
quantity = spot_quantity_to_backend(quantity, denom)
50-
price = spot_price_to_backend(price, denom)
51-
trigger_price = spot_price_to_backend(0, denom)
52-
order_type = injective_exchange_pb.OrderType.BUY if isBuy else injective_exchange_pb.OrderType.SELL
53-
54-
# compose proto msg
55118
return injective_exchange_tx_pb.MsgCreateSpotLimitOrder(
56119
sender=sender,
57-
order=injective_exchange_pb.SpotOrder(
120+
order=Composer.SpotOrder(
58121
market_id=market_id,
59-
order_info=injective_exchange_pb.OrderInfo(
60-
subaccount_id=subaccount_id,
61-
fee_recipient=fee_recipient,
62-
price=price,
63-
quantity=quantity
64-
),
65-
order_type=order_type,
66-
trigger_price=trigger_price
122+
subaccount_id=subaccount_id,
123+
fee_recipient=fee_recipient,
124+
price=price,
125+
quantity=quantity,
126+
isBuy=isBuy
67127
)
68128
)
69129

@@ -77,29 +137,15 @@ def MsgCreateSpotMarketOrder(
77137
quantity: float,
78138
isBuy: bool
79139
):
80-
# load denom metadata
81-
denom = Denoms.load_market(market_id)
82-
print('loaded market metadata for', denom.description)
83-
84-
# prepare values
85-
quantity = spot_quantity_to_backend(quantity, denom)
86-
price = spot_price_to_backend(price, denom)
87-
trigger_price = spot_price_to_backend(0, denom)
88-
order_type = injective_exchange_pb.OrderType.BUY if isBuy else injective_exchange_pb.OrderType.SELL
89-
90-
# compose proto msg
91140
return injective_exchange_tx_pb.MsgCreateSpotMarketOrder(
92141
sender=sender,
93-
order=injective_exchange_pb.SpotOrder(
142+
order=Composer.SpotOrder(
94143
market_id=market_id,
95-
order_info=injective_exchange_pb.OrderInfo(
96-
subaccount_id=subaccount_id,
97-
fee_recipient=fee_recipient,
98-
price=price,
99-
quantity=quantity
100-
),
101-
order_type=order_type,
102-
trigger_price=trigger_price
144+
subaccount_id=subaccount_id,
145+
fee_recipient=fee_recipient,
146+
price=price,
147+
quantity=quantity,
148+
isBuy=isBuy
103149
)
104150
)
105151

@@ -117,6 +163,26 @@ def MsgCancelSpotOrder(
117163
order_hash=order_hash
118164
)
119165

166+
@staticmethod
167+
def MsgBatchCreateSpotLimitOrders(
168+
sender: str,
169+
orders: list
170+
):
171+
return injective_exchange_tx_pb.MsgBatchCreateSpotLimitOrders(
172+
sender=sender,
173+
orders=orders
174+
)
175+
176+
@staticmethod
177+
def MsgBatchCancelSpotOrders(
178+
sender: str,
179+
data: list
180+
):
181+
return injective_exchange_tx_pb.MsgBatchCancelSpotOrders(
182+
sender=sender,
183+
data=data
184+
)
185+
120186
@staticmethod
121187
def MsgCreateDerivativeLimitOrder(
122188
market_id: str,
@@ -128,31 +194,16 @@ def MsgCreateDerivativeLimitOrder(
128194
leverage: float,
129195
isBuy: bool
130196
):
131-
# load denom metadata
132-
denom = Denoms.load_market(market_id)
133-
print('loaded market metadata for', denom.description)
134-
135-
# prepare values
136-
margin = derivative_margin_to_backend(price, quantity, leverage, denom)
137-
price = derivative_price_to_backend(price, denom)
138-
trigger_price = derivative_price_to_backend(0, denom)
139-
quantity = derivative_quantity_to_backend(quantity, denom)
140-
order_type = injective_exchange_pb.OrderType.BUY if isBuy else injective_exchange_pb.OrderType.SELL
141-
142-
# compose proto msg
143197
return injective_exchange_tx_pb.MsgCreateDerivativeLimitOrder(
144198
sender=sender,
145-
order=injective_exchange_pb.DerivativeOrder(
199+
order=Composer.DerivativeOrder(
146200
market_id=market_id,
147-
order_info=injective_exchange_pb.OrderInfo(
148-
subaccount_id=subaccount_id,
149-
fee_recipient=fee_recipient,
150-
price=price,
151-
quantity=quantity,
152-
),
153-
order_type=order_type,
154-
margin=margin,
155-
trigger_price=trigger_price
201+
subaccount_id=subaccount_id,
202+
fee_recipient=fee_recipient,
203+
price=price,
204+
quantity=quantity,
205+
leverage=leverage,
206+
isBuy=isBuy
156207
)
157208
)
158209

@@ -167,31 +218,16 @@ def MsgCreateDerivativeMarketOrder(
167218
leverage: float,
168219
isBuy: bool
169220
):
170-
# load denom metadata
171-
denom = Denoms.load_market(market_id)
172-
print('loaded market metadata for', denom.description)
173-
174-
# prepare values
175-
margin = derivative_margin_to_backend(price, quantity, leverage, denom)
176-
price = derivative_price_to_backend(price, denom)
177-
trigger_price = derivative_price_to_backend(0, denom)
178-
quantity = derivative_quantity_to_backend(quantity, denom)
179-
order_type = injective_exchange_pb.OrderType.BUY if isBuy else injective_exchange_pb.OrderType.SELL
180-
181-
# compose proto msg
182221
return injective_exchange_tx_pb.MsgCreateDerivativeMarketOrder(
183222
sender=sender,
184-
order=injective_exchange_pb.DerivativeOrder(
223+
order=Composer.DerivativeOrder(
185224
market_id=market_id,
186-
order_info=injective_exchange_pb.OrderInfo(
187-
subaccount_id=subaccount_id,
188-
fee_recipient=fee_recipient,
189-
price=price,
190-
quantity=quantity,
191-
),
192-
order_type=order_type,
193-
margin=margin,
194-
trigger_price=trigger_price
225+
subaccount_id=subaccount_id,
226+
fee_recipient=fee_recipient,
227+
price=price,
228+
quantity=quantity,
229+
leverage=leverage,
230+
isBuy=isBuy
195231
)
196232
)
197233

@@ -208,3 +244,23 @@ def MsgCancelDerivativeOrder(
208244
subaccount_id=subaccount_id,
209245
order_hash=order_hash
210246
)
247+
248+
@staticmethod
249+
def MsgBatchCreateDerivativeLimitOrders(
250+
sender: str,
251+
orders: list
252+
):
253+
return injective_exchange_tx_pb.MsgBatchCreateDerivativeLimitOrders(
254+
sender=sender,
255+
orders=orders
256+
)
257+
258+
@staticmethod
259+
def MsgBatchCancelDerivativeOrders(
260+
sender: str,
261+
data: list
262+
):
263+
return injective_exchange_tx_pb.MsgBatchCancelDerivativeOrders(
264+
sender=sender,
265+
data=data
266+
)

0 commit comments

Comments
 (0)