use bitcoin::{Transaction, Txid};
#[cfg(feature = "utoipa")]
use utoipa::ToSchema;
use crate::exit::states::ExitTxOrigin;
#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "utoipa", derive(ToSchema))]
pub struct ExitTransactionPackage {
pub exit: TransactionInfo,
pub child: Option<ChildTransactionInfo>,
}
impl From<bark::exit::models::ExitTransactionPackage> for ExitTransactionPackage {
fn from(v: bark::exit::models::ExitTransactionPackage) -> Self {
ExitTransactionPackage {
exit: v.exit.into(),
child: v.child.map(|x| x.into()),
}
}
}
#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "utoipa", derive(ToSchema))]
pub struct TransactionInfo {
#[cfg_attr(feature = "utoipa", schema(value_type = String))]
pub txid: Txid,
#[serde(with = "bitcoin::consensus::serde::With::<bitcoin::consensus::serde::Hex>")]
#[cfg_attr(feature = "utoipa", schema(value_type = String))]
pub tx: Transaction,
}
impl From<bark::exit::models::TransactionInfo> for TransactionInfo {
fn from(v: bark::exit::models::TransactionInfo) -> Self {
TransactionInfo { txid: v.txid, tx: v.tx }
}
}
#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
#[cfg_attr(feature = "utoipa", derive(ToSchema))]
pub struct ChildTransactionInfo {
pub info: TransactionInfo,
pub origin: ExitTxOrigin,
}
impl From<bark::exit::models::ChildTransactionInfo> for ChildTransactionInfo {
fn from(v: bark::exit::models::ChildTransactionInfo) -> Self {
ChildTransactionInfo { info: v.info.into(), origin: v.origin.into() }
}
}