dydx_v3_blocking/
dydx_client.rs

1use self::types::ApiKeyCredentials;
2
3pub use super::types;
4use crate::modules::eth_private::EthPrivate;
5use crate::modules::onboarding::Onboarding;
6use crate::modules::private::Private;
7use crate::modules::public::Public;
8
9#[derive(Debug)]
10pub struct ClientOptions<'a> {
11    pub network_id: Option<usize>,
12    pub api_timeout: Option<u64>,
13    pub api_key_credentials: Option<ApiKeyCredentials<'a>>,
14    pub stark_private_key: Option<&'a str>,
15    pub eth_private_key: Option<&'a str>,
16}
17
18#[readonly::make]
19#[derive(Debug, Clone)]
20pub struct DydxClient<'a> {
21    #[readonly]
22    pub api_timeout: Option<u64>,
23    pub public: Public<'a>,
24    pub private: Option<Private<'a>>,
25    pub eth_private: Option<EthPrivate<'a>>,
26    pub onboarding: Option<Onboarding<'a>>,
27}
28
29impl DydxClient<'_> {
30    pub fn new<'a>(host: &'a str, _options: ClientOptions<'a>) -> DydxClient<'a> {
31        let network_id = _options.network_id.unwrap_or(1);
32        let api_timeout = _options.api_timeout.unwrap_or(10);
33        DydxClient {
34            api_timeout: None,
35            
36            public: Public::new(host, api_timeout),
37            private: match _options.api_key_credentials {
38                Some(v) => Some(Private::new(
39                    host,
40                    network_id,
41                    api_timeout,
42                    v,
43                    _options.stark_private_key,
44                )),
45                None => None,
46            },
47            eth_private: match _options.eth_private_key {
48                Some(v) => Some(EthPrivate::new(
49                    host, network_id, api_timeout,v,
50                )),
51                None => None,
52            },
53            onboarding: match _options.eth_private_key {
54                Some(r) => Some(Onboarding::new(host, network_id, api_timeout, r)),
55                None => None,
56            },
57        }
58    }
59}