1use cosmwasm_std::Decimal;
2use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4use serde_repr::{Deserialize_repr, Serialize_repr};
5
6#[derive(Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, JsonSchema)]
8pub struct Metadata {
9 pub description: String,
10 pub denom_units: Vec<DenomUnit>,
11 pub base: String,
12 pub display: String,
13 pub name: String,
14 pub symbol: String,
15}
16
17#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
18#[serde(rename_all = "snake_case")]
19pub struct DenomAuthorityMetadata {
20 pub admin: String,
21}
22
23#[derive(Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, JsonSchema)]
25pub struct DenomUnit {
26 pub denom: String,
27 pub exponent: u32,
28 pub aliases: Vec<String>,
29}
30
31#[derive(Serialize_repr, Deserialize_repr, Copy, Clone, Debug, PartialEq, Eq, Hash, JsonSchema)]
32#[repr(i32)]
33pub enum PositionDirection {
34 Long = 0,
35 Short = 1,
36}
37
38#[derive(Serialize_repr, Deserialize_repr, Copy, Clone, Debug, PartialEq, Eq, Hash, JsonSchema)]
39#[repr(i32)]
40pub enum OrderType {
41 Limit = 0,
42 Market = 1,
43}
44
45#[derive(Serialize_repr, Deserialize_repr, Copy, Clone, Debug, PartialEq, Eq, Hash, JsonSchema)]
46#[repr(i32)]
47pub enum OrderStatus {
48 Placed = 0,
49 FailedToPlace = 1,
50 Cancelled = 2,
51 Fulfilled = 3,
52}
53
54#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
55#[serde(rename_all = "snake_case")]
56pub struct Order {
57 pub price: Decimal,
58 pub quantity: Decimal,
59 pub price_denom: String,
60 pub asset_denom: String,
61 pub order_type: OrderType,
62 pub position_direction: PositionDirection,
63 pub data: String, pub status_description: String,
65 pub nominal: Decimal, }
67
68#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
69#[serde(rename_all = "snake_case")]
70pub struct Cancellation {
71 pub id: u64,
72 pub contract_address: String,
73 pub price_denom: String,
74 pub asset_denom: String,
75 pub order_type: OrderType,
76 pub position_direction: PositionDirection,
77 pub price: Decimal,
78}
79
80#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
81#[serde(rename_all = "snake_case")]
82pub struct OrderResponse {
83 pub id: u64,
84 pub status: OrderStatus,
85 pub account: String,
86 pub contract_address: String,
87 pub price: Decimal,
88 pub quantity: Decimal,
89 pub price_denom: String,
90 pub asset_denom: String,
91 pub order_type: OrderType,
92 pub position_direction: PositionDirection,
93 pub data: String,
94 pub status_description: String,
95}
96
97#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
98pub struct SettlementEntry {
99 pub account: String,
100 pub price_denom: String,
101 pub asset_denom: String,
102 pub quantity: Decimal,
103 pub execution_cost_or_proceed: Decimal,
104 pub expected_cost_or_proceed: Decimal,
105 pub position_direction: PositionDirection,
106 pub order_type: OrderType,
107 pub order_id: u64,
108 pub timestamp: u64,
109 pub height: u64,
110 pub settlement_id: u64,
111}
112
113#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
114pub struct DepositInfo {
115 pub account: String,
116 pub denom: String,
117 pub amount: Decimal,
118}
119
120#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema)]
121pub struct BulkOrderPlacementsResponse {
122 pub unsuccessful_orders: Vec<UnsuccessfulOrder>,
123}
124
125#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema)]
126pub struct UnsuccessfulOrder {
127 pub id: u64,
128 pub reason: String,
129}