1pub mod error;
2pub mod package;
3pub mod states;
4
5#[cfg(feature = "utoipa")]
6use utoipa::ToSchema;
7
8use crate::exit::states::{
9 ExitAwaitingDeltaState, ExitProcessingState, ExitClaimInProgressState, ExitClaimableState,
10 ExitClaimedState, ExitStartState, ExitTx
11};
12
13#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
16#[cfg_attr(feature = "utoipa", derive(ToSchema))]
17#[serde(tag = "type", rename_all = "kebab-case")]
18pub enum ExitState {
19 Start(ExitStartState),
20 Processing(ExitProcessingState),
21 AwaitingDelta(ExitAwaitingDeltaState),
22 Claimable(ExitClaimableState),
23 ClaimInProgress(ExitClaimInProgressState),
24 Claimed(ExitClaimedState),
25}
26
27impl From<bark::exit::ExitState> for ExitState {
28 fn from(v: bark::exit::ExitState) -> Self {
29 match v {
30 bark::exit::ExitState::Start(s) => ExitState::Start(ExitStartState {
31 tip_height: s.tip_height,
32 }),
33 bark::exit::ExitState::Processing(s) => ExitState::Processing(ExitProcessingState {
34 tip_height: s.tip_height,
35 transactions: s.transactions.into_iter().map(|t| ExitTx { txid: t.txid, status: t.status.into() }).collect(),
36 }),
37 bark::exit::ExitState::AwaitingDelta(s) => ExitState::AwaitingDelta(ExitAwaitingDeltaState {
38 tip_height: s.tip_height,
39 confirmed_block: s.confirmed_block.into(),
40 claimable_height: s.claimable_height,
41 }),
42 bark::exit::ExitState::Claimable(s) => ExitState::Claimable(ExitClaimableState {
43 tip_height: s.tip_height,
44 claimable_since: s.claimable_since.into(),
45 last_scanned_block: s.last_scanned_block.map(Into::into),
46 }),
47 bark::exit::ExitState::ClaimInProgress(s) => ExitState::ClaimInProgress(ExitClaimInProgressState {
48 tip_height: s.tip_height,
49 claimable_since: s.claimable_since.into(),
50 claim_txid: s.claim_txid,
51 }),
52 bark::exit::ExitState::Claimed(s) => ExitState::Claimed(ExitClaimedState {
53 tip_height: s.tip_height,
54 txid: s.txid,
55 block: s.block.into(),
56 }),
57 }
58 }
59}