staking_cli/
receipt.rs

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}