brk_core/structs/
locktime.rs

1use serde::Serialize;
2use zerocopy::{Immutable, IntoBytes, KnownLayout, TryFromBytes};
3
4use super::{Height, Timestamp};
5
6#[derive(Debug, Immutable, Clone, Copy, IntoBytes, KnownLayout, TryFromBytes, Serialize)]
7#[repr(C)]
8#[allow(warnings)]
9pub enum LockTime {
10    Height(Height),
11    Timestamp(Timestamp),
12}
13
14impl From<bitcoin::absolute::LockTime> for LockTime {
15    fn from(value: bitcoin::absolute::LockTime) -> Self {
16        match value {
17            bitcoin::absolute::LockTime::Blocks(h) => LockTime::Height(h.into()),
18            bitcoin::absolute::LockTime::Seconds(t) => LockTime::Timestamp(t.into()),
19        }
20    }
21}
22
23impl From<LockTime> for bitcoin::absolute::LockTime {
24    fn from(value: LockTime) -> Self {
25        match value {
26            LockTime::Height(h) => bitcoin::absolute::LockTime::Blocks(h.into()),
27            LockTime::Timestamp(t) => bitcoin::absolute::LockTime::Seconds(t.into()),
28        }
29    }
30}