mirror_protocol/
limit_order.rs1use 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 SubmitOrder {
22 offer_asset: Asset,
23 ask_asset: Asset,
24 },
25 CancelOrder {
26 order_id: u64,
27 },
28
29 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 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#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
86pub struct MigrateMsg {}