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