1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use cosmwasm_std::{Coin, CustomQuery};
5
6use crate::defund::{Fund, Broker, PageRequest};
7
8#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
10#[serde(rename_all = "snake_case")]
11pub enum DefundRoute {
12 Etf,
13 Broker,
14}
15
16impl CustomQuery for DefundQueryWrapper {}
18
19#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
21#[serde(rename_all = "snake_case")]
22pub enum DefundQuery {
23 GetFund { symbol: String },
26 GetFunds { pagination: PageRequest },
28 GetFundPrice { symbol: String },
30
31 GetBroker { broker: String },
34 GetBrokers { pagination: PageRequest }
36}
37
38#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
40#[serde(rename_all = "snake_case")]
41pub struct DefundQueryWrapper {
42 pub route: DefundRoute,
43 pub query_data: DefundQuery,
44}
45
46#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
48pub struct GetFundResponse {
49 pub fund: Fund,
50}
51
52#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
54pub struct GetFundsResponse {
55 pub funds: Vec<Fund>,
56}
57
58#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
60pub struct GetFundPriceResponse {
61 pub receive: Coin,
62}
63
64#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
66pub struct GetBrokerResponse {
67 pub broker: Broker,
68}
69
70#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
72pub struct GetBrokersResponse {
73 pub brokers: Vec<Broker>,
74}