mirror_protocol/
limit_order.rs

1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use cosmwasm_std::Uint128;
5use cw20::Cw20ReceiveMsg;
6use terraswap::asset::Asset;
7
8use crate::common::OrderBy;
9
10#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
11pub struct InstantiateMsg {}
12
13#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
14#[serde(rename_all = "snake_case")]
15pub enum ExecuteMsg {
16    Receive(Cw20ReceiveMsg),
17
18    ///////////////////////
19    /// User Operations ///
20    ///////////////////////
21    SubmitOrder {
22        offer_asset: Asset,
23        ask_asset: Asset,
24    },
25    CancelOrder {
26        order_id: u64,
27    },
28
29    /// Arbitrager execute order to get profit
30    ExecuteOrder {
31        execute_asset: Asset,
32        order_id: u64,
33    },
34}
35
36#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
37#[serde(rename_all = "snake_case")]
38pub enum Cw20HookMsg {
39    SubmitOrder {
40        ask_asset: Asset,
41    },
42
43    /// Arbitrager execute order to get profit
44    ExecuteOrder {
45        order_id: u64,
46    },
47}
48
49#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
50#[serde(rename_all = "snake_case")]
51pub enum QueryMsg {
52    Order {
53        order_id: u64,
54    },
55    Orders {
56        bidder_addr: Option<String>,
57        start_after: Option<u64>,
58        limit: Option<u32>,
59        order_by: Option<OrderBy>,
60    },
61    LastOrderId {},
62}
63
64#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
65pub struct OrderResponse {
66    pub order_id: u64,
67    pub bidder_addr: String,
68    pub offer_asset: Asset,
69    pub ask_asset: Asset,
70    pub filled_offer_amount: Uint128,
71    pub filled_ask_amount: Uint128,
72}
73
74#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
75pub struct OrdersResponse {
76    pub orders: Vec<OrderResponse>,
77}
78
79#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
80pub struct LastOrderIdResponse {
81    pub last_order_id: u64,
82}
83
84/// We currently take no arguments for migrations
85#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
86pub struct MigrateMsg {}