use async_trait::async_trait;
use bsv::wallet::interfaces::AbortActionResult;
use crate::error::WalletResult;
use crate::signer::types::{
SignerCreateActionResult, SignerInternalizeActionResult, SignerSignActionResult,
ValidAbortActionArgs, ValidCreateActionArgs, ValidInternalizeActionArgs, ValidSignActionArgs,
};
#[async_trait]
pub trait WalletSigner: Send + Sync {
async fn create_action(
&self,
args: ValidCreateActionArgs,
) -> WalletResult<SignerCreateActionResult>;
async fn sign_action(&self, args: ValidSignActionArgs) -> WalletResult<SignerSignActionResult>;
async fn internalize_action(
&self,
args: ValidInternalizeActionArgs,
) -> WalletResult<SignerInternalizeActionResult>;
async fn abort_action(&self, args: ValidAbortActionArgs) -> WalletResult<AbortActionResult>;
}