2021-06-19 22:53:26 -07:00
|
|
|
use bdk::Error;
|
2021-10-11 23:04:18 -07:00
|
|
|
use thiserror::Error;
|
2021-06-19 22:53:26 -07:00
|
|
|
|
2021-10-11 23:04:18 -07:00
|
|
|
#[derive(Error, Debug)]
|
2021-07-03 20:40:08 -07:00
|
|
|
pub enum FfiError {
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
None,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
InvalidU32Bytes,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
Generic,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
ScriptDoesntHaveAddressForm,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
NoRecipients,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
NoUtxosSelected,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
OutputBelowDustLimit,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
InsufficientFunds,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
BnBTotalTriesExceeded,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
BnBNoExactMatch,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
UnknownUtxo,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
TransactionNotFound,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
TransactionConfirmed,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
IrreplaceableTransaction,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
FeeRateTooLow,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
FeeTooLow,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-09-25 21:17:40 -07:00
|
|
|
FeeRateUnavailable,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
MissingKeyOrigin,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
Key,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
ChecksumMismatch,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
SpendingPolicyRequired,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
InvalidPolicyPathError,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
Signer,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-09-25 21:17:40 -07:00
|
|
|
InvalidNetwork,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
InvalidProgressValue,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
ProgressUpdateError,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
InvalidOutpoint,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
Descriptor,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
AddressValidator,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
Encode,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
Miniscript,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
Bip32,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
Secp256k1,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
Json,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
Hex,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
Psbt,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-09-25 21:17:40 -07:00
|
|
|
PsbtParse,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
Electrum,
|
|
|
|
// Esplora,
|
|
|
|
// CompactFilters,
|
2021-10-11 23:04:18 -07:00
|
|
|
#[error("data store disconnected")]
|
2021-07-03 20:40:08 -07:00
|
|
|
Sled,
|
|
|
|
}
|
|
|
|
|
2021-10-11 23:04:18 -07:00
|
|
|
impl From<bdk::Error> for FfiError {
|
|
|
|
fn from(error: bdk::Error) -> Self {
|
2021-07-03 20:40:08 -07:00
|
|
|
match error {
|
|
|
|
Error::InvalidU32Bytes(_) => FfiError::InvalidU32Bytes,
|
|
|
|
Error::Generic(_) => FfiError::Generic,
|
|
|
|
Error::ScriptDoesntHaveAddressForm => FfiError::ScriptDoesntHaveAddressForm,
|
|
|
|
Error::NoRecipients => FfiError::NoRecipients,
|
|
|
|
Error::NoUtxosSelected => FfiError::NoUtxosSelected,
|
|
|
|
Error::OutputBelowDustLimit(_) => FfiError::OutputBelowDustLimit,
|
|
|
|
Error::InsufficientFunds { .. } => FfiError::InsufficientFunds,
|
|
|
|
Error::BnBTotalTriesExceeded => FfiError::BnBTotalTriesExceeded,
|
|
|
|
Error::BnBNoExactMatch => FfiError::BnBNoExactMatch,
|
|
|
|
Error::UnknownUtxo => FfiError::UnknownUtxo,
|
|
|
|
Error::TransactionNotFound => FfiError::TransactionNotFound,
|
|
|
|
Error::TransactionConfirmed => FfiError::TransactionConfirmed,
|
|
|
|
Error::IrreplaceableTransaction => FfiError::IrreplaceableTransaction,
|
|
|
|
Error::FeeRateTooLow { .. } => FfiError::FeeRateTooLow,
|
|
|
|
Error::FeeTooLow { .. } => FfiError::FeeTooLow,
|
2021-09-25 21:17:40 -07:00
|
|
|
Error::FeeRateUnavailable => FfiError::FeeRateUnavailable,
|
2021-07-03 20:40:08 -07:00
|
|
|
Error::MissingKeyOrigin(_) => FfiError::MissingKeyOrigin,
|
|
|
|
Error::Key(_) => FfiError::Key,
|
|
|
|
Error::ChecksumMismatch => FfiError::ChecksumMismatch,
|
|
|
|
Error::SpendingPolicyRequired(_) => FfiError::SpendingPolicyRequired,
|
|
|
|
Error::InvalidPolicyPathError(_) => FfiError::InvalidPolicyPathError,
|
|
|
|
Error::Signer(_) => FfiError::Signer,
|
2021-09-25 21:17:40 -07:00
|
|
|
Error::InvalidNetwork { .. } => FfiError::InvalidNetwork,
|
2021-07-03 20:40:08 -07:00
|
|
|
Error::InvalidProgressValue(_) => FfiError::InvalidProgressValue,
|
|
|
|
Error::ProgressUpdateError => FfiError::ProgressUpdateError,
|
|
|
|
Error::InvalidOutpoint(_) => FfiError::InvalidOutpoint,
|
|
|
|
Error::Descriptor(_) => FfiError::Descriptor,
|
|
|
|
Error::AddressValidator(_) => FfiError::AddressValidator,
|
|
|
|
Error::Encode(_) => FfiError::Encode,
|
|
|
|
Error::Miniscript(_) => FfiError::Miniscript,
|
|
|
|
Error::Bip32(_) => FfiError::Bip32,
|
|
|
|
Error::Secp256k1(_) => FfiError::Secp256k1,
|
|
|
|
Error::Json(_) => FfiError::Json,
|
|
|
|
Error::Hex(_) => FfiError::Hex,
|
|
|
|
Error::Psbt(_) => FfiError::Psbt,
|
2021-09-25 21:17:40 -07:00
|
|
|
Error::PsbtParse(_) => FfiError::PsbtParse,
|
2021-07-03 20:40:08 -07:00
|
|
|
Error::Electrum(_) => FfiError::Electrum,
|
|
|
|
// Error::Esplora(_) => JniError::Esplora,
|
|
|
|
// Error::CompactFilters(_) => JniError::CompactFilters,
|
2021-09-25 21:17:40 -07:00
|
|
|
// Error::Rpc(_) => JniError::Rpc,
|
2021-07-03 20:40:08 -07:00
|
|
|
Error::Sled(_) => FfiError::Sled,
|
|
|
|
}
|
2021-06-19 22:53:26 -07:00
|
|
|
}
|
|
|
|
}
|