use bitcoin::bip32::DerivationPath;
use bitcoin::secp256k1::PublicKey;
use bitcoin::{Address, Network, ScriptBuf};
use crate::util::status::Status;
pub trait Wallet {
fn can_spend(
&self,
child_path: &DerivationPath,
script_pubkey: &ScriptBuf,
) -> Result<bool, Status>;
fn allowlist_contains_payee(&self, payee: PublicKey) -> bool;
fn allowlist_contains(&self, script_pubkey: &ScriptBuf, path: &DerivationPath) -> bool;
fn network(&self) -> Network;
fn get_native_address(&self, child_path: &DerivationPath) -> Result<Address, Status>;
fn get_taproot_address(&self, child_path: &DerivationPath) -> Result<Address, Status>;
#[deprecated(since = "0.9.0", note = "Use native addresses instead")]
fn get_wrapped_address(&self, child_path: &DerivationPath) -> Result<Address, Status>;
}