#![allow(clippy::print_stdout)]
mod common;
use alloy_primitives::Address;
use trident_sdk::TridentClientBuilder;
use trident_sdk::evm::abi::TridentDeposits;
use common::{
ExampleResult, deposit_contract_for_domain, env_parse, grpc_endpoint, provider_from_env,
signer_from_env,
};
#[tokio::main(flavor = "current_thread")]
async fn main() -> ExampleResult {
let domain: u32 = env_parse("TRIDENT_DOMAIN")?;
let token: Address = env_parse("TRIDENT_TOKEN")?;
let signer = signer_from_env()?;
let address = signer.address();
let provider = provider_from_env("TRIDENT_RPC_URL", &signer).await?;
let mut client = TridentClientBuilder::new(grpc_endpoint()?)
.with_evm_chain(domain, provider.clone(), signer)
.connect()
.await?;
let delivery_balance = client.get_balance(domain, address, token).await?;
let deposit_contract = deposit_contract_for_domain(domain).await?;
let deposits = TridentDeposits::new(deposit_contract, &provider);
let onchain_deposited_amount = deposits.depositedAmount(address, token).call().await?;
println!(
"delivery-service available balance: {}",
delivery_balance.available_balance
);
println!("TridentDeposits::depositedAmount: {onchain_deposited_amount}");
println!(
"these values come from different systems and should not be treated as interchangeable"
);
Ok(())
}