use async_trait::async_trait; use ethers::types::{Address, EIP1186ProofResponse, Transaction, TransactionReceipt, H256}; use eyre::Result; pub mod http_rpc; pub mod mock_rpc; #[async_trait] pub trait Rpc: Send + Clone + 'static { fn new(rpc: &str) -> Result where Self: Sized; async fn get_proof( &self, address: &Address, slots: &[H256], block: u64, ) -> Result; async fn get_code(&self, address: &Address, block: u64) -> Result>; async fn send_raw_transaction(&self, bytes: &Vec) -> Result; async fn get_transaction_receipt(&self, tx_hash: &H256) -> Result>; async fn get_transaction(&self, tx_hash: &H256) -> Result>; }