1mod error;
2use algonaut::{algod::v2::Algod, kmd::v1::Kmd, transaction::account::Account};
3use error::SandboxError;
4
5pub async fn get_unencrypted_default_wallet(
6 algod: &Algod,
7 kmd: &Kmd,
8) -> Result<Account, SandboxError> {
9 let list_response = kmd.list_wallets().await?;
10
11 let wallet_id = list_response
12 .wallets
13 .into_iter()
14 .find(|wallet| wallet.name == "unencrypted-default-wallet")
15 .unwrap()
16 .id;
17
18 let handle = kmd
19 .init_wallet_handle(&wallet_id, "")
20 .await?
21 .wallet_handle_token;
22
23 let keys = kmd.list_keys(handle.as_str()).await?.addresses;
24
25 for addr in keys {
26 let info = algod.account_information(&addr.parse().unwrap()).await?;
27
28 if info.status == "Online" {
29 let pk = kmd
30 .export_key(handle.as_str(), "", &info.address)
31 .await?
32 .private_key;
33 let seed = pk[0..32].try_into().unwrap();
34
35 return Ok(Account::from_seed(seed));
36 }
37 }
38
39 Err(SandboxError::General("could not find wallet".into()))
40}