levana_perpswap_cosmos/
bridge.rs

1#![allow(missing_docs)]
2use crate::contracts::market::entry::{ExecuteMsg, QueryMsg};
3use crate::prelude::*;
4use cosmwasm_std::{Addr, Binary, Event};
5use serde::{Deserialize, Serialize};
6
7#[derive(Serialize, Deserialize, Debug, Clone)]
8pub struct ClientToBridgeWrapper {
9    pub msg_id: u64,
10    pub user: Addr,
11    pub msg: ClientToBridgeMsg,
12}
13
14#[allow(clippy::large_enum_variant)]
15#[derive(Serialize, Deserialize, Debug, Clone)]
16pub enum ClientToBridgeMsg {
17    QueryMarket {
18        query_msg: QueryMsg,
19    },
20    ExecMarket {
21        exec_msg: ExecuteMsg,
22        funds: Option<NumberGtZero>,
23    },
24    RefreshPrice,
25    Crank,
26    MintCollateral {
27        amount: NumberGtZero,
28    },
29    MintAndDepositLp {
30        amount: NumberGtZero,
31    },
32
33    TimeJumpSeconds {
34        seconds: i64,
35    },
36}
37
38#[derive(Serialize, Deserialize, Debug, Clone)]
39pub struct BridgeToClientWrapper {
40    pub msg_id: u64,
41    pub elapsed: f64,
42    pub msg: BridgeToClientMsg,
43}
44
45#[derive(Serialize, Deserialize, Debug, Clone)]
46pub enum BridgeToClientMsg {
47    MarketQueryResult { result: Binary },
48    MarketExecSuccess { events: Vec<Event> },
49    MarketExecFailure(ExecError),
50    TimeJumpResult {},
51}
52
53#[derive(Serialize, Deserialize, Debug, Clone)]
54pub enum ExecError {
55    PerpError(PerpError),
56    Unknown(String),
57}