rsbit 0.5.4

This is a library for the Bybit API.
Documentation
use crate::v5::api::{
    BybitApi,
    get::Get,
};

use serde::{
    Serialize,
    Deserialize,
};
use serde_json::Value;
use anyhow::Result;

const PATH: &'static str = "/v5/asset/deposit/query-sub-member-address";

impl BybitApi {
    pub async fn get_sub_deposit_address(&self, params: GetSubDepositAddressParameters) -> Result<GetSubDepositAddressResponse> {
        self.get(PATH, Some(params), true).await
    }
}

#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GetSubDepositAddressParameters {
    coin: String,
    chain_type: String,
    sub_member_id: String,
}

impl GetSubDepositAddressParameters {
    pub fn new(coin: String, chain_type: String, sub_member_id: String) -> Self {
        Self {
            coin,
            chain_type,
            sub_member_id,
        }
    }
}

#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetSubDepositAddressResponse {
    ret_code: i32,
    ret_msg: String,
    result: SubDepositAddressResult,
    ret_ext_info: Value,
    time: u64,
}
impl GetSubDepositAddressResponse {
    pub fn ret_code(&self) -> i32 {
        self.ret_code
    }

    pub fn set_ret_code(&mut self, ret_code: i32) {
        self.ret_code = ret_code;
    }

    pub fn ret_msg(&self) -> &str {
        &self.ret_msg
    }

    pub fn set_ret_msg(&mut self, ret_msg: String) {
        self.ret_msg = ret_msg;
    }

    pub fn result(&self) -> &SubDepositAddressResult {
        &self.result
    }

    pub fn set_result(&mut self, result: SubDepositAddressResult) {
        self.result = result;
    }

    pub fn ret_ext_info(&self) -> &Value {
        &self.ret_ext_info
    }

    pub fn set_ret_ext_info(&mut self, ret_ext_info: Value) {
        self.ret_ext_info = ret_ext_info;
    }

    pub fn time(&self) -> u64 {
        self.time
    }

    pub fn set_time(&mut self, time: u64) {
        self.time = time;
    }
}

#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SubDepositAddressResult {
    coin: String,
    chains: SubDepositAddress
}
impl SubDepositAddressResult {
    pub fn coin(&self) -> &str {
        &self.coin
    }

    pub fn set_coin(&mut self, coin: String) {
        self.coin = coin;
    }

    pub fn chains(&self) -> &SubDepositAddress {
        &self.chains
    }

    pub fn set_chains(&mut self, chains: SubDepositAddress) {
        self.chains = chains;
    }
}

#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SubDepositAddress {
    chain_type: String,
    address_deposit: String,
    tag_deposit: String,
    chain: String,
    batch_release_limit: String,
}

impl SubDepositAddress {
    pub fn chain_type(&self) -> &str {
        &self.chain_type
    }

    pub fn set_chain_type(&mut self, chain_type: String) {
        self.chain_type = chain_type;
    }

    pub fn address_deposit(&self) -> &str {
        &self.address_deposit
    }

    pub fn set_address_deposit(&mut self, address_deposit: String) {
        self.address_deposit = address_deposit;
    }

    pub fn tag_deposit(&self) -> &str {
        &self.tag_deposit
    }

    pub fn set_tag_deposit(&mut self, tag_deposit: String) {
        self.tag_deposit = tag_deposit;
    }

    pub fn chain(&self) -> &str {
        &self.chain
    }

    pub fn set_chain(&mut self, chain: String) {
        self.chain = chain;
    }

    pub fn batch_release_limit(&self) -> &str {
        &self.batch_release_limit
    }

    pub fn set_batch_release_limit(&mut self, batch_release_limit: String) {
        self.batch_release_limit = batch_release_limit;
    }
}