use serde::{Deserialize, Serialize};
use rust_decimal::Decimal;
use chrono::{DateTime, Utc};
use std::collections::HashMap;
use super::{TradingPartnerInformation, CurrencyAmounts, PageDetails, ApiErrorDetail, misc::BasicSuccessResponse};
#[derive(Debug, Deserialize, Serialize)]
pub struct MyTradeDetails {
#[serde(rename = "trade_id")]
pub trade_id: String, #[serde(rename = "is_external_wallet_trade")]
pub is_external_wallet_trade: bool, #[serde(rename = "trading_pair")]
pub trading_pair: String, #[serde(rename = "type")] pub trade_type: String, #[serde(rename = "amount_currency_to_trade")]
#[serde(with = "rust_decimal::serde::str")]
pub amount_currency_to_trade: Decimal, #[serde(with = "rust_decimal::serde::str")]
pub price: Decimal, #[serde(rename = "volume_currency_to_pay")]
#[serde(with = "rust_decimal::serde::str")]
pub volume_currency_to_pay: Decimal, #[serde(rename = "amount_currency_to_trade_after_fee")]
#[serde(with = "rust_decimal::serde::str")]
pub amount_currency_to_trade_after_fee: Decimal, #[serde(rename = "volume_currency_to_pay_after_fee")]
#[serde(with = "rust_decimal::serde::str")]
pub volume_currency_to_pay_after_fee: Decimal, #[serde(rename = "fee_currency_to_pay")]
#[serde(with = "rust_decimal::serde::str")]
pub fee_currency_to_pay: Decimal, #[serde(rename = "fee_currency_to_trade")]
#[serde(with = "rust_decimal::serde::str")]
pub fee_currency_to_trade: Decimal, #[serde(rename = "new_order_id_for_remaining_amount")]
pub new_order_id_for_remaining_amount: Option<String>, pub state: i32, #[serde(rename = "is_trade_marked_as_paid")]
pub is_trade_marked_as_paid: Option<bool>, #[serde(rename = "trade_marked_as_paid_at")]
pub trade_marked_as_paid_at: Option<DateTime<Utc>>, #[serde(rename = "my_rating_for_trading_partner")]
pub my_rating_for_trading_partner: Option<String>, #[serde(rename = "trading_partner_information")]
pub trading_partner_information: TradingPartnerInformation, #[serde(rename = "created_at")]
pub created_at: DateTime<Utc>,
#[serde(rename = "successfully_finished_at")]
pub successfully_finished_at: Option<DateTime<Utc>>, #[serde(rename = "cancelled_at")]
pub cancelled_at: Option<DateTime<Utc>>, #[serde(rename = "payment_method")]
pub payment_method: i32,
#[serde(rename = "primary_currency")]
pub primary_currency: Option<HashMap<String, CurrencyAmounts>>, #[serde(rename = "secondary_currency")]
pub secondary_currency: Option<HashMap<String, CurrencyAmounts>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ShowMyTradesResponse {
pub trades: Vec<MyTradeDetails>, pub page: PageDetails, pub errors: Vec<ApiErrorDetail>, pub credits: i32,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ShowMyTradeDetailsResponse {
pub trade: MyTradeDetails, pub errors: Vec<ApiErrorDetail>, pub credits: i32,
}
pub type ExecuteTradeResponse = BasicSuccessResponse;
pub type MarkTradeAsPaidResponse = BasicSuccessResponse;
pub type MarkTradeAsPaymentReceivedResponse = BasicSuccessResponse;
pub type AddTradeRatingResponse = BasicSuccessResponse;