breez_sdk_liquid/chain/bitcoin/
mod.rspub(crate) mod electrum;
pub(crate) mod esplora;
use anyhow::Result;
use bitcoin::{Address, Script, Transaction, Txid};
use maybe_sync::{MaybeSend, MaybeSync};
use crate::{
bitcoin,
model::{BtcHistory, BtcScriptBalance, RecommendedFees, Utxo},
};
pub(crate) type History = BtcHistory;
#[sdk_macros::async_trait]
pub trait BitcoinChainService: MaybeSend + MaybeSync {
async fn tip(&self) -> Result<u32>;
async fn broadcast(&self, tx: &Transaction) -> Result<Txid>;
async fn get_transactions(&self, txids: &[Txid]) -> Result<Vec<Transaction>>;
async fn get_script_history(&self, script: &Script) -> Result<Vec<History>>;
async fn get_scripts_history(&self, scripts: &[&Script]) -> Result<Vec<Vec<History>>>;
async fn get_script_history_with_retry(
&self,
script: &Script,
retries: u64,
) -> Result<Vec<History>>;
async fn get_script_utxos(&self, script: &Script) -> Result<Vec<Utxo>>;
async fn get_scripts_utxos(&self, scripts: &[&Script]) -> Result<Vec<Vec<Utxo>>>;
async fn script_get_balance(&self, script: &Script) -> Result<BtcScriptBalance>;
async fn scripts_get_balance(&self, scripts: &[&Script]) -> Result<Vec<BtcScriptBalance>>;
async fn script_get_balance_with_retry(
&self,
script: &Script,
retries: u64,
) -> Result<BtcScriptBalance>;
async fn verify_tx(
&self,
address: &Address,
tx_id: &str,
tx_hex: &str,
verify_confirmation: bool,
) -> Result<Transaction>;
async fn recommended_fees(&self) -> Result<RecommendedFees>;
}