bark_json/exit/
package.rs1use bitcoin::{Transaction, Txid};
2#[cfg(feature = "utoipa")]
3use utoipa::ToSchema;
4
5use crate::exit::states::ExitTxOrigin;
6
7#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
8#[cfg_attr(feature = "utoipa", derive(ToSchema))]
9pub struct ExitTransactionPackage {
10 pub exit: TransactionInfo,
12 pub child: Option<ChildTransactionInfo>,
14}
15
16impl From<bark::exit::models::ExitTransactionPackage> for ExitTransactionPackage {
17 fn from(v: bark::exit::models::ExitTransactionPackage) -> Self {
18 ExitTransactionPackage {
19 exit: v.exit.into(),
20 child: v.child.map(|x| x.into()),
21 }
22 }
23}
24
25#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
28#[cfg_attr(feature = "utoipa", derive(ToSchema))]
29pub struct TransactionInfo {
30 #[cfg_attr(feature = "utoipa", schema(value_type = String))]
31 pub txid: Txid,
32 #[serde(with = "bitcoin::consensus::serde::With::<bitcoin::consensus::serde::Hex>")]
33 #[cfg_attr(feature = "utoipa", schema(value_type = String))]
34 pub tx: Transaction,
35}
36
37impl From<bark::exit::models::TransactionInfo> for TransactionInfo {
38 fn from(v: bark::exit::models::TransactionInfo) -> Self {
39 TransactionInfo { txid: v.txid, tx: v.tx }
40 }
41}
42#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
45#[cfg_attr(feature = "utoipa", derive(ToSchema))]
46pub struct ChildTransactionInfo {
47 pub info: TransactionInfo,
48 pub origin: ExitTxOrigin,
49}
50
51impl From<bark::exit::models::ChildTransactionInfo> for ChildTransactionInfo {
52 fn from(v: bark::exit::models::ChildTransactionInfo) -> Self {
53 ChildTransactionInfo { info: v.info.into(), origin: v.origin.into() }
54 }
55}