1use ethers_abirpc::prelude::*;
2
3abigen!(Erc20Token, "./tests/abi/Erc20Token.json");
4abirpc!(Erc20Token);
5
6const WETH_ADDRESS: &str = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2";
7const LOCAL_WALLET: &str = "380eb0f3d505f087e438eca80bc4df9a7faa24f868e69fc0440261a0fc0567dc";
8
9#[tokio::main]
10async fn main() -> Result<(), Box<dyn std::error::Error>> {
11 let registry = Erc20TokenRegistry::<MockProvider>::mock();
12
13 let weth_address = address_from!(WETH_ADDRESS)?;
14
15 let provider = registry.provider().await?;
16 let instance = registry.register(provider.clone(), weth_address);
17
18 let wallet: LocalWallet = LOCAL_WALLET.parse()?;
19 let weth_amount = U256::from(10u64.pow(15));
20 let tx = instance
21 .approve(wallet.address(), weth_amount)
22 .value(0_u64)
23 .tx;
24
25 let signer = SignerMiddleware::new(provider, wallet);
26 let signed_tx = signer.sign_transaction(&tx, weth_address).await?;
27
28 println!("{:?}", tx);
29 println!("{:?}", signed_tx);
30
31 Ok(())
32}