sei_cosmwasm/
sei_types.rs

1use cosmwasm_std::Decimal;
2use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4use serde_repr::{Deserialize_repr, Serialize_repr};
5
6/// Replicates the cosmos-sdk bank module Metadata type
7#[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/// Replicates the cosmos-sdk bank module DenomUnit type
24#[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, // serialized order data, defined by the specific target contract
64    pub status_description: String,
65    pub nominal: Decimal, // only needed for Fokmarketbyvalue order
66}
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}