Skip to main content

bark_json/exit/
package.rs

1#[cfg(feature = "utoipa")]
2use utoipa::ToSchema;
3
4use crate::exit::states::ExitTxOrigin;
5use crate::primitives::TransactionInfo;
6
7#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
8#[cfg_attr(feature = "utoipa", derive(ToSchema))]
9pub struct ExitTransactionPackage {
10	/// The actual unilateral exit transaction containing an anchor output and a spendable amount
11	pub exit: TransactionInfo,
12	/// The child transaction used to spend, and thus confirm, the exit anchor output
13	pub child: Option<ChildTransactionInfo>,
14}
15
16impl From<bark::exit::ExitTransactionPackage> for ExitTransactionPackage {
17	fn from(v: bark::exit::ExitTransactionPackage) -> Self {
18		ExitTransactionPackage {
19			exit: v.exit.into(),
20			child: v.child.map(|x| x.into()),
21		}
22	}
23}
24/// Represents a child transaction for an exit transaction package with information about the origin
25/// of the transaction
26#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
27#[cfg_attr(feature = "utoipa", derive(ToSchema))]
28pub struct ChildTransactionInfo {
29	pub info: TransactionInfo,
30	pub origin: ExitTxOrigin,
31}
32
33impl From<bark::exit::ChildTransactionInfo> for ChildTransactionInfo {
34	fn from(v: bark::exit::ChildTransactionInfo) -> Self {
35		ChildTransactionInfo { info: v.info.into(), origin: v.origin.into() }
36	}
37}