1use alloy::{
2 network::Ethereum, providers::PendingTransactionBuilder, rpc::types::TransactionReceipt,
3};
4use anyhow::{bail, Result};
5
6pub(crate) trait ReceiptExt {
7 async fn assert_success(self) -> Result<TransactionReceipt>;
8}
9
10impl ReceiptExt for PendingTransactionBuilder<Ethereum> {
11 async fn assert_success(self) -> Result<TransactionReceipt> {
12 let receipt = self.get_receipt().await?;
13 if !receipt.status() {
14 bail!("transaction failed: hash={:?}", receipt.transaction_hash);
15 }
16 Ok(receipt)
17 }
18}