1use ethers_abirpc::prelude::*;
2
3abigen!(Erc20Token, "./tests/abi/Erc20Token.json");
4abirpc!(Erc20Token);
5
6const WS_PROVIDER: &str = "wss://ethereum-rpc.publicnode.com";
7const WETH_ADDRESS: &str = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2";
8const WBTC_ADDRESS: &str = "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599";
9
10#[tokio::main]
11async fn main() -> Result<(), Box<dyn std::error::Error>> {
12 let registry =
13 Erc20TokenRegistry::<WsProvider>::new(String::from(WS_PROVIDER), Chain::from_id(1));
14
15 let provider = registry.provider().await?;
16
17 let weth_address = address_from!(WETH_ADDRESS)?;
18 let wbtc_address = address_from!(WBTC_ADDRESS)?;
19
20 let weth_instance = registry.register(provider.clone(), weth_address);
21 let wbtc_instance = registry.register(provider.clone(), wbtc_address);
22
23 let res = weth_instance.decimals().await?;
24 println!("decimals (weth): {res:}");
25
26 let res = wbtc_instance.decimals().await?;
27 println!("decimals (wbtc): {res:}");
28
29 Ok(())
30}