use super::*;
#[derive(Debug, Snafu)]
#[snafu(context(suffix(false)), visibility(pub))]
pub enum Error {
#[snafu(display("Failed to parse address `{address}`"))]
AddressParse {
address: String,
},
#[snafu(display("Failed to parse private key"))]
PrivateKeyParse {},
#[snafu(display("Unsuported address `{address}`, only P2TR, P2WPKH and P2SH-P2WPKH allowed"))]
UnsupportedAddress { address: String },
#[snafu(display("Decode error for signature `{signature}`"))]
SignatureDecode {
source: base64::DecodeError,
signature: String,
},
#[snafu(display("Transaction encode error"))]
TransactionEncode {},
#[snafu(display("Transaction extract error"))]
TransactionExtract {
},
#[snafu(display("To sign transaction invalid"))]
ToSignInvalid,
#[snafu(display("PSBT extract error"))]
PsbtExtract {},
#[snafu(display("Base64 decode error for transaction `{transaction}`"))]
TransactionBase64Decode {
transaction: String,
},
#[snafu(display("Consensus decode error for transaction `{transaction}`"))]
TransactionConsensusDecode {
transaction: String,
},
#[snafu(display("Witness malformed"))]
WitnessMalformed {
},
#[snafu(display("Witness empty"))]
WitnessEmpty,
#[snafu(display("Encode witness error"))]
WitnessEncoding {},
#[snafu(display("Signature of wrong length `{length}`"))]
SignatureLength {
length: usize,
encoded_signature: Vec<u8>,
},
#[snafu(display("Invalid signature"))]
SignatureInvalid {},
#[snafu(display("Invalid sighash"))]
SigHashTypeInvalid {
},
#[snafu(display("Unsupported sighash type `{sighash_type}`"))]
SigHashTypeUnsupported { sighash_type: String },
#[snafu(display("Not key path spend"))]
NotKeyPathSpend,
#[snafu(display("Invalid public key"))]
InvalidPublicKey,
#[snafu(display("Invalid witness"))]
InvalidWitness,
#[snafu(display("Public key does not match"))]
PublicKeyMismatch,
}