// @generated
// This file is @generated by prost-build.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MarginAccountSummary {
    /// The margin account currently acts as the isolated bucket for a live position.
    #[prost(string, tag="1")]
    pub margin_account_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub account_state: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub equity: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub initial_margin_required: ::prost::alloc::string::String,
    #[prost(string, tag="5")]
    pub maintenance_margin_required: ::prost::alloc::string::String,
    #[prost(string, tag="6")]
    pub free_collateral: ::prost::alloc::string::String,
    #[prost(string, tag="7")]
    pub withdrawable_collateral: ::prost::alloc::string::String,
    #[prost(string, tag="8")]
    pub total_position_notional: ::prost::alloc::string::String,
    #[prost(string, tag="9")]
    pub unrealized_pnl: ::prost::alloc::string::String,
    #[prost(string, tag="10")]
    pub realized_pnl: ::prost::alloc::string::String,
    #[prost(string, tag="11")]
    pub updated_at: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetMarginAccountSummaryRequest {
    /// Margin account UUID for the current isolated bucket.
    #[prost(string, tag="1")]
    pub margin_account_id: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetMarginAccountSummaryResponse {
    #[prost(string, tag="1")]
    pub margin_account_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub account_state: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub equity: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub initial_margin_required: ::prost::alloc::string::String,
    #[prost(string, tag="5")]
    pub maintenance_margin_required: ::prost::alloc::string::String,
    #[prost(string, tag="6")]
    pub free_collateral: ::prost::alloc::string::String,
    #[prost(string, tag="7")]
    pub withdrawable_collateral: ::prost::alloc::string::String,
    #[prost(string, tag="8")]
    pub total_position_notional: ::prost::alloc::string::String,
    #[prost(string, tag="9")]
    pub unrealized_pnl: ::prost::alloc::string::String,
    #[prost(string, tag="10")]
    pub realized_pnl: ::prost::alloc::string::String,
    #[prost(string, tag="11")]
    pub updated_at: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ListMarginAccountsRequest {
    #[prost(uint32, optional, tag="1")]
    pub page: ::core::option::Option<u32>,
    #[prost(uint32, optional, tag="2")]
    pub page_size: ::core::option::Option<u32>,
    #[prost(string, optional, tag="3")]
    pub state: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListMarginAccountsResponse {
    #[prost(message, repeated, tag="1")]
    pub accounts: ::prost::alloc::vec::Vec<MarginAccountSummary>,
    #[prost(uint32, tag="2")]
    pub total: u32,
    #[prost(uint32, tag="3")]
    pub page: u32,
    #[prost(uint32, tag="4")]
    pub page_size: u32,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CreateMarginAccountRequest {
    /// Optional UI label for the margin account.
    #[prost(string, optional, tag="1")]
    pub label: ::core::option::Option<::prost::alloc::string::String>,
    /// Collateral asset for the margin account. USDC is the current v1 path.
    #[prost(string, optional, tag="2")]
    pub collateral_asset: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CreateMarginAccountResponse {
    /// Current implementation note:
    /// CreateMarginAccount creates a new isolated bucket for the user.
    #[prost(string, tag="1")]
    pub margin_account_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub account_state: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub collateral_asset: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub created_at: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetAvailableCollateralRequest {
    #[prost(string, optional, tag="1")]
    pub asset: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetAvailableCollateralResponse {
    #[prost(string, tag="1")]
    pub asset: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub wallet_available: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub wallet_locked: ::prost::alloc::string::String,
    #[prost(string, optional, tag="4")]
    pub margin_transferable: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct TransferCollateralToMarginAccountRequest {
    /// Margin account UUID whose current isolated bucket receives collateral.
    #[prost(string, tag="1")]
    pub margin_account_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub asset: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub amount: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct TransferCollateralToMarginAccountResponse {
    #[prost(string, tag="1")]
    pub movement_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub margin_account_id: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub asset: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub amount: ::prost::alloc::string::String,
    #[prost(string, tag="5")]
    pub status: ::prost::alloc::string::String,
    #[prost(string, tag="6")]
    pub new_equity: ::prost::alloc::string::String,
    #[prost(string, tag="7")]
    pub new_total_collateral_value: ::prost::alloc::string::String,
    #[prost(string, tag="8")]
    pub new_withdrawable_collateral: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct TransferCollateralFromMarginAccountRequest {
    /// Margin account UUID whose current isolated bucket releases collateral.
    #[prost(string, tag="1")]
    pub margin_account_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub asset: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub amount: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct TransferCollateralFromMarginAccountResponse {
    #[prost(string, tag="1")]
    pub movement_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub margin_account_id: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub asset: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub amount: ::prost::alloc::string::String,
    #[prost(string, tag="5")]
    pub status: ::prost::alloc::string::String,
    #[prost(string, tag="6")]
    pub new_equity: ::prost::alloc::string::String,
    #[prost(string, tag="7")]
    pub new_total_collateral_value: ::prost::alloc::string::String,
    #[prost(string, tag="8")]
    pub new_withdrawable_collateral: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MarginAccountMovement {
    #[prost(string, tag="1")]
    pub id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub movement_type: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub asset: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub amount: ::prost::alloc::string::String,
    #[prost(string, tag="5")]
    pub status: ::prost::alloc::string::String,
    #[prost(string, tag="6")]
    pub created_at: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetMarginAccountMovementsRequest {
    /// Margin account UUID for the current isolated bucket.
    #[prost(string, tag="1")]
    pub margin_account_id: ::prost::alloc::string::String,
    #[prost(string, optional, tag="2")]
    pub movement_type: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(uint32, optional, tag="3")]
    pub page: ::core::option::Option<u32>,
    #[prost(uint32, optional, tag="4")]
    pub page_size: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetMarginAccountMovementsResponse {
    #[prost(message, repeated, tag="1")]
    pub movements: ::prost::alloc::vec::Vec<MarginAccountMovement>,
    #[prost(uint32, tag="2")]
    pub total: u32,
    #[prost(uint32, tag="3")]
    pub page: u32,
    #[prost(uint32, tag="4")]
    pub page_size: u32,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SimulateOrderRiskRequest {
    /// Margin account UUID for the isolated bucket being simulated.
    #[prost(string, tag="1")]
    pub margin_account_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub trading_pair_id: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub side: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub position_side: ::prost::alloc::string::String,
    #[prost(string, tag="5")]
    pub order_type: ::prost::alloc::string::String,
    #[prost(string, optional, tag="6")]
    pub price: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, tag="7")]
    pub quantity: ::prost::alloc::string::String,
    #[prost(string, tag="8")]
    pub leverage: ::prost::alloc::string::String,
    #[prost(bool, optional, tag="9")]
    pub reduce_only: ::core::option::Option<bool>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SimulateOrderRiskResponse {
    #[prost(bool, tag="1")]
    pub accepted: bool,
    #[prost(string, optional, tag="2")]
    pub reject_reason: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, tag="3")]
    pub equity_after: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub initial_margin_required_after: ::prost::alloc::string::String,
    #[prost(string, tag="5")]
    pub maintenance_margin_required_after: ::prost::alloc::string::String,
    #[prost(string, tag="6")]
    pub free_collateral_after: ::prost::alloc::string::String,
    #[prost(string, optional, tag="7")]
    pub estimated_fee: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag="8")]
    pub estimated_liquidation_price: ::core::option::Option<::prost::alloc::string::String>,
}
include!("monaco.api.margin_accounts.tonic.rs");
// @@protoc_insertion_point(module)