use std::sync::Arc;
use notareum::{Notareum, ClientConfig, ContractAddresses, CreateNotaOptions};
use ethers::providers::{Http, Provider};
use ethers::signers::{LocalWallet, Signer};
let provider = Arc::new(Provider::<Http>::try_from(std::env::var("RPC_URL")?)?);
let wallet: LocalWallet = std::env::var("PRIVATE_KEY")?.parse()?;
let private_key_hex = std::env::var("PRIVATE_KEY")?;
let ntm = Notareum::new(ClientConfig {
provider,
signer: Some(wallet.clone()),
contracts: /* ContractAddresses { ... } */,
})?;
let signed = ntm.nota.create(CreateNotaOptions {
type_: "address".into(),
chain_name: "ethereum".into(),
chain_id: 1,
identifier: format!("{:#x}", wallet.address()),
name: Some("My Main Wallet".into()),
alias: Some("me.nota".into()),
..CreateNotaOptions::new("address", "ethereum", 1, format!("{:#x}", wallet.address()))
})?
.validate()?
.sign(&private_key_hex)?;
println!("{}", signed.serialize()?);