///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
use crate::{client::Client, error::Error, payload, proto::common::*};

impl Client {
    /// Get cash flow history (deposits, withdrawals) for a time range.
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    /// Max range: 1 week (604 800 000 ms). Timestamps in Unix milliseconds.
    pub async fn get_cash_flow_history(
        &self,
        ctid_trader_account_id: i64,
        from_timestamp: i64,
        to_timestamp: i64,
    ) -> Result<ProtoOaCashFlowHistoryListRes, Error> {
        let req = ProtoOaCashFlowHistoryListReq {
            payload_type: Some(payload::OA_CASH_FLOW_HISTORY_LIST_REQ as i32),
            ctid_trader_account_id,
            from_timestamp,
            to_timestamp,
        };
        self.command(
            payload::OA_CASH_FLOW_HISTORY_LIST_REQ,
            req,
            payload::OA_CASH_FLOW_HISTORY_LIST_RES,
        )
        .await
    }

    /// Get leverage details for a given leverage ID.
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    pub async fn get_dynamic_leverage(
        &self,
        ctid_trader_account_id: i64,
        leverage_id: i64,
    ) -> Result<ProtoOaGetDynamicLeverageByIdRes, Error> {
        let req = ProtoOaGetDynamicLeverageByIdReq {
            payload_type: Some(payload::OA_GET_DYNAMIC_LEVERAGE_REQ as i32),
            ctid_trader_account_id,
            leverage_id,
        };
        self.command(
            payload::OA_GET_DYNAMIC_LEVERAGE_REQ,
            req,
            payload::OA_GET_DYNAMIC_LEVERAGE_RES,
        )
        .await
    }
}

#[cfg(test)]
mod tests {

    #[async_std::test]
    async fn test() {}
}
