#![expect(
clippy::print_stdout,
reason = "example demonstrates output via stdout"
)]
use alloy::{
network::EthereumWallet, providers::ProviderBuilder, signers::local::PrivateKeySigner,
};
use erc8004::{Erc8004, Network};
use serde as _;
use serde_json as _;
use thiserror as _;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let signer: PrivateKeySigner = std::env::var("PRIVATE_KEY")?.parse()?;
let wallet = EthereumWallet::from(signer);
let provider = ProviderBuilder::new()
.wallet(wallet)
.connect_http("https://sepolia.base.org".parse()?);
let client = Erc8004::new(provider).with_network(Network::BaseSepolia);
let agent_uri = "https://weather-bot.example.com/erc8004.json";
let agent_id = client.identity()?.register_with_uri(agent_uri).await?;
println!("Registered agent #{agent_id}");
let stored_uri = client.identity()?.token_uri(agent_id).await?;
println!("Stored URI: {stored_uri}");
Ok(())
}