Skip to content

Transfer Personal Circles Tokens to Different Avatar

Human avatars now support both path-based and direct transfer helpers.

Use:

  • plan_transfer / transfer when pathfinding is needed
  • plan_direct_transfer / direct_transfer when you already know the token
  • plan_replenish / replenish when the goal is to top up a specific token

Example: plan a path-based transfer without submitting it yet

use alloy_primitives::{U256, address};
use circles_sdk::{Avatar, Sdk, config};
 
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let sdk = Sdk::new(config::gnosis_mainnet(), None)?;
    let from = address!("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
    let to = address!("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
 
    if let Avatar::Human(human) = sdk.get_avatar(from).await? {
        let prepared = human
            .plan_transfer(to, U256::from(1_000_000_000_000_000_000u128), None)
            .await?;
        println!("prepared {} tx(s)", prepared.len());
    }
 
    Ok(())
}

Attach a runner and swap to transfer(...) when you want the SDK to submit the prepared transactions for you.