bybit-rust-api 0.3.0

Complete Rust SDK for Bybit API V5 with all endpoints, comprehensive type safety and full test coverage
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize, Default)]
pub struct ModifyMmpParams {
    #[serde(rename = "baseCoin")]
    pub base_coin: String,
    pub window: i32,
    #[serde(rename = "frozenPeriod")]
    pub frozen_period: i32,
    #[serde(rename = "qtyLimit")]
    pub qty_limit: String,
    #[serde(rename = "deltaLimit")]
    pub delta_limit: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MmpStateDetails {
    #[serde(rename = "baseCoin")]
    pub base_coin: String,
    #[serde(rename = "mmpEnabled")]
    pub mmp_enabled: bool,
    pub window: i32,
    #[serde(rename = "frozenPeriod")]
    pub frozen_period: i32,
    #[serde(rename = "qtyLimit")]
    pub qty_limit: String,
    #[serde(rename = "deltaLimit")]
    pub delta_limit: String,
    #[serde(rename = "mmpFrozen")]
    pub mmp_frozen: bool,
    #[serde(rename = "mmpFrozenUntil")]
    pub mmp_frozen_until: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MmpStateResult {
    pub result: Vec<MmpStateDetails>,
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::rest::client::ServerResponse;
    use serde_json::from_str;

    #[test]
    fn test_deserialize_mmp_state() {
        let json_data = r#"
        {
            "retCode": 0,
            "retMsg": "OK",
            "result": {
                "result": [
                    {
                        "baseCoin": "BTC",
                        "mmpEnabled": true,
                        "window": 5000,
                        "frozenPeriod": 100000,
                        "qtyLimit": "100",
                        "deltaLimit": "10",
                        "mmpFrozen": false,
                        "mmpFrozenUntil": "0"
                    }
                ]
            },
            "retExtInfo": {},
            "time": 1690872862481
        }
        "#;
        let response: ServerResponse<MmpStateResult> =
            from_str(json_data).expect("Failed to deserialize MmpStateResult");
        assert_eq!(response.ret_code, 0);
        let result = response.result;
        assert_eq!(result.result.len(), 1);
        assert_eq!(result.result[0].base_coin, "BTC");
        assert_eq!(result.result[0].mmp_enabled, true);
    }
}