use serde::{Deserialize, Serialize};
pub type QueryBrokerAccountInfoResponse = BrokerAccountInfoResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BrokerAccountInfoResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub sub_acct_qty: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_sub_acct_qty: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub base_fee_rebate_rate: Option<BaseFeeRebateRate>,
#[serde(skip_serializing_if = "Option::is_none")]
pub markup_fee_rebate_rate: Option<MarkupFeeRebateRate>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ts: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BaseFeeRebateRate {
#[serde(skip_serializing_if = "Option::is_none")]
pub spot: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub derivatives: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MarkupFeeRebateRate {
#[serde(skip_serializing_if = "Option::is_none")]
pub spot: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub derivatives: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub convert: Option<String>,
}
pub type QueryBrokerAllUidDetailsResponse = QueryBrokerAllUidResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct QueryBrokerAllUidResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_cursor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<ApiLimitInfo>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ApiLimitInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub uids: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub biz_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rate: Option<i64>,
}
pub type QueryBrokerCapResponse = QueryBrokerCapResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct QueryBrokerCapResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<BrokerCapInfo>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BrokerCapInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub biz_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_rate: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eb_cap: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub uid_cap: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SetBrokerApiLimitParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<ApiLimitInfoRequest>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ApiLimitInfoRequest {
pub uids: String,
pub biz_type: String,
pub rate: i64,
}
pub type SetBrokerApiLimitResponse = SetApiLimitResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SetApiLimitResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub list: Option<Vec<ApiLimitInfoResult>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ApiLimitInfoResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub uids: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub biz_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rate: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub success: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub msg: Option<String>,
}
pub type QueryBrokerEarningResponse = BrokerEarningResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BrokerEarningResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub total_earning_cat: Option<TotalEarningCat>,
#[serde(skip_serializing_if = "Option::is_none")]
pub details: Option<Vec<RebateDetail>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TotalEarningCat {
#[serde(skip_serializing_if = "Option::is_none")]
pub spot: Option<Vec<TotalEarning>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub derivatives: Option<Vec<TotalEarning>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub options: Option<Vec<TotalEarning>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub convert: Option<Vec<TotalEarning>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total: Option<Vec<TotalEarning>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TotalEarning {
#[serde(skip_serializing_if = "Option::is_none")]
pub coin: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub earning: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RebateDetail {
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub biz_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub coin: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub earning: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub markup_earning: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub base_fee_earning: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exec_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exec_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetAwardInfoParams {
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetAwardInfoResponse {
#[serde(default)]
pub id: String,
#[serde(default)]
pub coin: String,
#[serde(default)]
pub amount_unit: String,
#[serde(default)]
pub product_line: String,
#[serde(default)]
pub sub_product_line: String,
#[serde(default)]
pub total_amount: String,
#[serde(default)]
pub used_amount: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DistributeAwardParams {
pub account_id: String,
pub award_id: String,
pub spec_code: String,
pub amount: String,
pub broker_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetDistributionRecordParams {
pub account_id: String,
pub award_id: String,
pub spec_code: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub with_used_amount: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetDistributionRecordResponse {
#[serde(default)]
pub account_id: String,
#[serde(default)]
pub award_id: String,
#[serde(default)]
pub spec_code: String,
#[serde(default)]
pub amount: String,
#[serde(default)]
pub is_claimed: bool,
#[serde(default)]
pub start_at: String,
#[serde(default)]
pub end_at: String,
#[serde(default)]
pub effective_at: String,
#[serde(default)]
pub ineffective_at: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub used_amount: Option<String>,
}