Skip to content
Snippets Groups Projects
transfer.rs 945 B
Newer Older
use crate::{gdev, Client};

use anyhow::Result;
use sp_core::{crypto::AccountId32, sr25519::Pair};
use subxt::tx::{BaseExtrinsicParamsBuilder, PairSigner};

pub async fn transfer(
    pair: Pair,
    client: Client,
    balance: u64,
    dest: AccountId32,
    keep_alive: bool,
) -> Result<()> {
    if keep_alive {
        client
            .tx()
            .sign_and_submit_then_watch(
                &gdev::tx().balances().transfer(dest.into(), balance),
                &PairSigner::new(pair),
                BaseExtrinsicParamsBuilder::new(),
            )
            .await?;
    } else {
        client
            .tx()
            .sign_and_submit_then_watch(
                &gdev::tx()
                    .balances()
                    .transfer_keep_alive(dest.into(), balance),
                &PairSigner::new(pair),
                BaseExtrinsicParamsBuilder::new(),
            )
            .await?;
    }

    Ok(())
}