pub mod mock;
pub mod real;
use async_trait::async_trait;
use bitcoin::{Address, Transaction, Txid};
use fedimint_core::Amount;
use fedimint_core::txoproof::TxOutProof;
#[async_trait]
pub trait BitcoinTest {
async fn lock_exclusive(&self) -> Box<dyn BitcoinTest + Send + Sync>;
async fn mine_blocks(&self, block_num: u64) -> Vec<bitcoin::BlockHash>;
async fn prepare_funding_wallet(&self);
async fn send_and_mine_block(
&self,
address: &Address,
amount: bitcoin::Amount,
) -> (TxOutProof, Transaction);
async fn get_new_address(&self) -> Address;
async fn mine_block_and_get_received(&self, address: &Address) -> Amount;
async fn get_mempool_tx_fee(&self, txid: &Txid) -> Amount;
async fn get_tx_block_height(&self, txid: &Txid) -> Option<u64>;
async fn get_block_count(&self) -> u64;
async fn get_mempool_tx(&self, txid: &Txid) -> Option<bitcoin::Transaction>;
}