monedero_solana_instructor/
lib.rs1mod 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}