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

impl Client {
    /// List all assets for the given account.
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    /// Mirrors `ProtoOASymbolsListReq`.
    pub async fn asset_list(
        &self,
        ctid_trader_account_id: i64,
    ) -> Result<ProtoOaSymbolsListRes, Error> {
        let req = ProtoOaAssetListReq {
            ctid_trader_account_id,
            payload_type: Some(payload::OA_ASSET_LIST_REQ as i32),
        };

        self.command(payload::OA_ASSET_LIST_REQ, req, payload::OA_ASSET_LIST_RES)
            .await
    }

    /// List all symbols for the given account.
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    ///
    /// Mirrors `ProtoOASymbolsListReq`.
    pub async fn asset_class_list(
        &self,
        ctid_trader_account_id: i64,
    ) -> Result<ProtoOaAssetClassListRes, Error> {
        let req = ProtoOaAssetClassListReq {
            ctid_trader_account_id,
            payload_type: Some(payload::OA_ASSET_CLASS_LIST_REQ as i32),
        };

        self.command(
            payload::OA_ASSET_CLASS_LIST_REQ,
            req,
            payload::OA_ASSET_CLASS_LIST_RES,
        )
        .await
    }
}

#[cfg(test)]
mod tests {

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