monedero_solana_instructor/
lib.rs

1mod error;
2mod lookup;
3mod memo;
4pub use error::Error;
5use {
6    monedero_jup_ag::JupiterInstructor,
7    monedero_solana_stake::StakeClient,
8    monedero_solana_tokens::TokenClient,
9};
10pub type Result<T> = std::result::Result<T, Error>;
11pub use {
12    monedero_jup_ag as jup_ag,
13    monedero_solana_stake as stake,
14    monedero_solana_tokens as token,
15};
16use {solana_pubkey::Pubkey, wasm_client_solana::SolanaRpcClient};
17
18#[derive(Clone)]
19pub struct Instructor {
20    token_client: TokenClient,
21    stake_client: StakeClient,
22    jup_client: JupiterInstructor,
23}
24
25impl Instructor {
26    pub fn jup_client(&self) -> &JupiterInstructor {
27        &self.jup_client
28    }
29
30    pub fn token_client(&self) -> &TokenClient {
31        &self.token_client
32    }
33
34    pub fn stake_client(&self) -> &StakeClient {
35        &self.stake_client
36    }
37
38    pub fn rpc(&self) -> &SolanaRpcClient {
39        self.token_client.rpc()
40    }
41
42    pub fn payer(&self) -> &Pubkey {
43        self.token_client.owner()
44    }
45
46    pub fn new(payer: &Pubkey, rpc: &SolanaRpcClient) -> Self {
47        let token_client = TokenClient::new(payer, rpc);
48        let stake_client = StakeClient::new(payer, rpc);
49        Self {
50            token_client,
51            stake_client,
52            jup_client: JupiterInstructor::new(payer),
53        }
54    }
55}