use monoloop_contracts::{
CleanupStatus, TerminalEventDelivery, TransactionCompletion, TransactionEndEvent,
TransactionEndKind, TransactionId,
};
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct TerminalDecision {
pub kind: TransactionEndKind,
}
impl TerminalDecision {
pub fn new(kind: TransactionEndKind) -> Self {
Self { kind }
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct TerminalProposal {
pub kind: TransactionEndKind,
}
impl TerminalProposal {
pub fn new(kind: TransactionEndKind) -> Self {
Self { kind }
}
}
pub fn build_completion(
end: TransactionEndEvent,
terminal_event_delivery: TerminalEventDelivery,
cleanup: CleanupStatus,
) -> TransactionCompletion {
TransactionCompletion {
end,
terminal_event_delivery,
cleanup,
}
}
pub fn end_event(
transaction_id: TransactionId,
channel_id: monoloop_contracts::ChannelId,
session_id: Option<monoloop_contracts::SessionId>,
kind: TransactionEndKind,
emitted_events: u64,
) -> TransactionEndEvent {
TransactionEndEvent {
transaction_id,
session_id,
channel_id,
kind,
emitted_events,
usage: monoloop_contracts::TransactionUsage::default(),
diagnostics: Vec::new(),
}
}