Last active
May 15, 2024 05:20
-
-
Save mgild/5fca5c30a85013870c6f4c63c2c28528 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
async fn get_accounts(client: &RpcClient, keys: Vec<Pubkey>) -> Result<HashMap<Pubkey, Account>> { | |
let account_datas: Vec<Option<Account>> = client | |
.get_multiple_accounts(&keys.clone()) | |
.await | |
.map_err(|_| anyhow!("Failed to get inf SPool accounts"))?; | |
let mut data_map = HashMap::new(); | |
for i in 0..keys.len() { | |
let key = &keys[i]; | |
let account = &account_datas[i]; | |
if let Some(account) = account { | |
data_map.insert(key.clone(), account.clone()); | |
} else { | |
println!("Failed to get SPool required account {key}"); | |
} | |
} | |
Ok(data_map) | |
} | |
#[tokio::test] | |
async fn sanctum_spool_test_quote() -> Result<()> { | |
let url = "https://api.mainnet-beta.solana.com"; | |
let client = RpcClient::new(url.to_string()); | |
let lst_state_list_pubkey = s_controller_lib::program::LST_STATE_LIST_ID; | |
let lst_state_list_account = client.get_account(&lst_state_list_pubkey).await?; | |
let SanctumLstList { sanctum_lst_list } = SanctumLstList::load(); | |
let mut spool: SPoolJup = SPoolJup::from_lst_state_list_account(lst_state_list_pubkey, lst_state_list_account, &sanctum_lst_list)?; | |
let keys = spool.get_accounts_to_update(); | |
let data_map = get_accounts(&client, keys).await?; | |
spool.update_full(&data_map)?; | |
let keys = spool.get_accounts_to_update(); | |
let data_map = get_accounts(&client, keys).await?; | |
spool.update_full(&data_map)?; | |
let inf = Pubkey::from_str("5oVNBeEEQvYi1cX3ir8Dx5n1P7pdxydbGF2X4TxVusJm").unwrap(); | |
let sol = Pubkey::from_str("So11111111111111111111111111111111111111112").unwrap(); | |
let quote = spool.quote(&jupiter_amm_interface::QuoteParams { | |
amount: 1, | |
input_mint: inf, | |
output_mint: sol, | |
swap_mode: SwapMode::ExactIn, | |
})?; | |
println!("quote: {:#?}", quote); | |
Ok(()) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment