use std::fmt::Debug; use async_trait::async_trait; use hyperlane_core::{ ChainResult, Checkpoint, HyperlaneChain, HyperlaneContract, HyperlaneDomain, HyperlaneMessage, Indexer, LogMeta, Mailbox, MailboxIndexer, TxCostEstimate, TxOutcome, H256, U256, }; /// A reference to a Mailbox contract on some Fuel chain #[derive(Debug)] pub struct FuelMailbox {} impl HyperlaneContract for FuelMailbox { fn address(&self) -> H256 { todo!() } } impl HyperlaneChain for FuelMailbox { fn domain(&self) -> &HyperlaneDomain { todo!() } } #[async_trait] impl Mailbox for FuelMailbox { async fn count(&self) -> ChainResult { todo!() } async fn delivered(&self, id: H256) -> ChainResult { todo!() } async fn latest_checkpoint(&self, lag: Option) -> ChainResult { todo!() } async fn default_ism(&self) -> ChainResult { todo!() } async fn recipient_ism(&self, recipient: H256) -> ChainResult { todo!() } async fn process( &self, message: &HyperlaneMessage, metadata: &[u8], tx_gas_limit: Option, ) -> ChainResult { todo!() } async fn process_estimate_costs( &self, message: &HyperlaneMessage, metadata: &[u8], ) -> ChainResult { todo!() } fn process_calldata(&self, message: &HyperlaneMessage, metadata: &[u8]) -> Vec { todo!() } } /// Struct that retrieves event data for a Fuel Mailbox contract #[derive(Debug)] pub struct FuelMailboxIndexer {} #[async_trait] impl Indexer for FuelMailboxIndexer { async fn get_finalized_block_number(&self) -> ChainResult { todo!() } } #[async_trait] impl MailboxIndexer for FuelMailboxIndexer { async fn fetch_sorted_messages( &self, from: u32, to: u32, ) -> ChainResult> { todo!() } async fn fetch_delivered_messages( &self, from: u32, to: u32, ) -> ChainResult> { todo!() } }