dydx_v3_blocking/
dydx_client.rs1use 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}