lit_rust_sdk/client/
mod.rs

1use crate::config::LitNodeClientConfig;
2use alloy::providers::{DynProvider, Provider as ProviderTrait, ProviderBuilder};
3use dashmap::DashMap;
4use eyre::Result;
5use reqwest::Client;
6use std::sync::Arc;
7
8mod connect;
9mod decrypt;
10mod encrypt;
11mod execute;
12mod pkp;
13mod session_sigs;
14mod state;
15
16use crate::blockchain::staking::LibStakingStorage::Epoch;
17use crate::blockchain::Staking;
18
19pub struct LitNodeClient<P = DynProvider>
20where
21    P: ProviderTrait,
22{
23    pub(crate) config: LitNodeClientConfig,
24    pub(crate) http_client: Client,
25    pub(crate) connection_state: Arc<DashMap<String, crate::types::NodeConnectionInfo>>,
26    pub(crate) ready: bool,
27    pub(crate) subnet_pub_key: Option<String>,
28    pub(crate) network_pub_key: Option<String>,
29    pub(crate) network_pub_key_set: Option<String>,
30    pub(crate) hd_root_pubkeys: Option<Vec<String>>,
31    pub(crate) latest_blockhash: Option<String>,
32    pub(crate) staking: Staking::StakingInstance<P>,
33    pub(crate) min_node_count: Option<usize>,
34    pub(crate) epoch: Option<Epoch>,
35}
36
37impl LitNodeClient<DynProvider> {
38    pub async fn new(config: LitNodeClientConfig) -> Result<Self> {
39        let http_client = Client::builder().timeout(config.connect_timeout).build()?;
40
41        let rpc_url = config.lit_network.rpc_url();
42        let provider = ProviderBuilder::new().connect(rpc_url).await?;
43        let staking_address = config.lit_network.staking_contract_address()?;
44
45        let staking = Staking::new(staking_address, provider.erased());
46
47        Ok(Self {
48            config,
49            http_client,
50            connection_state: Arc::new(DashMap::new()),
51            ready: false,
52            subnet_pub_key: None,
53            network_pub_key: None,
54            network_pub_key_set: None,
55            hd_root_pubkeys: None,
56            latest_blockhash: None,
57            staking,
58            min_node_count: None,
59            epoch: None,
60        })
61    }
62}