Documentation
// // Copyright 2024 MaidSafe.net limited.
// //
// // This SAFE Network Software is licensed to you under The General Public License (GPL), version 3.
// // Unless required by applicable law or agreed to in writing, the SAFE Network Software distributed
// // under the GPL Licence is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// // KIND, either express or implied. Please review the Licences for the specific language governing
// // permissions and limitations relating to use of the SAFE Network Software.

// mod common;

// use assert_fs::TempDir;
// use common::client::{get_client_and_funded_wallet, get_wallet};
// use eyre::Result;
// use sn_client::send;
// use sn_logging::LogBuilder;
// use sn_transfers::NanoTokens;
// use tracing::info;

// #[tokio::test]
// async fn cash_note_transfer_multiple_sequential_succeed() -> Result<()> {
//     let _log_guards = LogBuilder::init_single_threaded_tokio_test("sequential_transfer", true);

//     let first_wallet_dir = TempDir::new()?;

//     let (client, first_wallet) = get_client_and_funded_wallet(first_wallet_dir.path()).await?;
//     let first_wallet_balance:NanoTokens = first_wallet.balance();

//     let second_wallet_balance = first_wallet_balance / 2;
//     info!("Transferring from first wallet to second wallet: {second_wallet_balance}.");
//     let second_wallet_dir = TempDir::new()?;
//     let mut second_wallet = get_wallet(second_wallet_dir.path());

//     assert_eq!(second_wallet.balance(), NanoTokens::zero());

//     let tokens = send(
//         first_wallet,
//         second_wallet_balance,
//         second_wallet.address(),
//         &client,
//         true,
//     )
//     .await?;
//     info!("Verifying the transfer from first wallet...");

//     client.verify_cashnote(&tokens).await?;
//     second_wallet.deposit_and_store_to_disk(&vec![tokens])?;
//     assert_eq!(second_wallet.balance(), second_wallet_balance);
//     info!("CashNotes deposited to second wallet: {second_wallet_balance}.");

//     let first_wallet = get_wallet(&first_wallet_dir);
//     assert!(second_wallet_balance.as_atto() == first_wallet.balance().as_atto());

//     Ok(())
// }