use crate::clarity;
use crate::crypto;
pub use crate::transaction::auth::Auth;
pub use crate::transaction::auth::Modification;
pub use crate::transaction::auth::SpendingCondition;
pub use crate::transaction::auth::SpendingConditionMultiSig;
pub use crate::transaction::auth::SpendingConditionStandard;
pub use crate::transaction::base::AnchorMode;
pub use crate::transaction::base::Transaction;
pub use crate::transaction::builder::STXContractCall;
pub use crate::transaction::builder::STXTokenTransfer;
pub use crate::transaction::condition::AssetInfo;
pub use crate::transaction::condition::Condition;
pub use crate::transaction::condition::ConditionCode;
pub use crate::transaction::condition::FungiblePostCondition;
pub use crate::transaction::condition::NonFungiblePostCondition;
pub use crate::transaction::condition::PostConditionMode;
pub use crate::transaction::condition::PostConditions;
pub use crate::transaction::condition::STXPostCondition;
pub use crate::transaction::network::ChainID;
pub use crate::transaction::network::Network;
pub use crate::transaction::network::StacksMainnet;
pub use crate::transaction::network::StacksMocknet;
pub use crate::transaction::network::StacksTestnet;
pub use crate::transaction::network::TransactionVersion;
pub use crate::transaction::payload::ContractCallPayload;
pub use crate::transaction::payload::Payload;
pub use crate::transaction::payload::TokenTransferPayload;
pub use crate::transaction::signer::TransactionSigner;
pub(crate) mod auth;
pub(crate) mod base;
pub(crate) mod builder;
pub(crate) mod condition;
pub(crate) mod network;
pub(crate) mod payload;
pub(crate) mod signer;
#[derive(Debug, Clone, thiserror::Error)]
pub enum Error {
#[error("Attempted to sign origin with too many signatures")]
OriginOversign,
#[error("Attempted to sign origin after sponsor key")]
OriginPostSponsorSign,
#[error("Attempted to append public key to origin after sponsor key")]
OriginPostSponsorAppend,
#[error("Attempted to sign sponsor with too many signatures")]
SponsorOversign,
#[error("Invalid signer hash, expected {0} - got: {1}")]
BadSigner(String, String),
#[error("Invalid signature count, expected {0} - got: {1}")]
BadSignatureCount(u8, u8),
#[error("Attempted to modify a spending condition with an incompatible action")]
BadSpendingConditionModification,
#[error(transparent)]
Hex(#[from] crypto::hex::Error),
#[error(transparent)]
Hash(#[from] crypto::hash::Error),
#[error(transparent)]
Clarity(#[from] clarity::Error),
#[error(transparent)]
Secp256k1(#[from] secp256k1::Error),
#[error(transparent)]
TryFromInt(#[from] std::num::TryFromIntError),
}