miden_node_proto/domain/
transaction.rs1use miden_objects::{crypto::hash::rpo::RpoDigest, transaction::TransactionId};
2
3use crate::{errors::ConversionError, generated as proto};
4
5impl From<&TransactionId> for proto::digest::Digest {
9 fn from(value: &TransactionId) -> Self {
10 (*value).inner().into()
11 }
12}
13
14impl From<TransactionId> for proto::digest::Digest {
15 fn from(value: TransactionId) -> Self {
16 value.inner().into()
17 }
18}
19
20impl From<&TransactionId> for proto::transaction::TransactionId {
21 fn from(value: &TransactionId) -> Self {
22 proto::transaction::TransactionId { id: Some(value.into()) }
23 }
24}
25
26impl From<TransactionId> for proto::transaction::TransactionId {
27 fn from(value: TransactionId) -> Self {
28 (&value).into()
29 }
30}
31
32impl TryFrom<proto::digest::Digest> for TransactionId {
36 type Error = ConversionError;
37
38 fn try_from(value: proto::digest::Digest) -> Result<Self, Self::Error> {
39 let digest: RpoDigest = value.try_into()?;
40 Ok(digest.into())
41 }
42}
43
44impl TryFrom<proto::transaction::TransactionId> for TransactionId {
45 type Error = ConversionError;
46
47 fn try_from(value: proto::transaction::TransactionId) -> Result<Self, Self::Error> {
48 value
49 .id
50 .ok_or(ConversionError::MissingFieldInProtobufRepresentation {
51 entity: "TransactionId",
52 field_name: "id",
53 })?
54 .try_into()
55 }
56}