fuels_types/
message_proof.rs1#![cfg(feature = "std")]
2
3use fuel_core_client::client::schema::message::MessageProof as ClientMessageProof;
4use fuel_tx::Bytes32;
5use fuel_types::Nonce;
6
7use crate::{bech32::Bech32Address, block::Header};
8
9#[derive(Debug)]
10pub struct MerkleProof {
11 pub proof_set: Vec<Bytes32>,
13 pub proof_index: u64,
15}
16
17#[derive(Debug)]
18pub struct MessageProof {
19 pub message_proof: MerkleProof,
21 pub block_proof: MerkleProof,
23 pub message_block_header: Header,
26 pub commit_block_header: Header,
29 pub sender: Bech32Address,
30 pub recipient: Bech32Address,
31 pub nonce: Nonce,
32 pub amount: u64,
33 pub data: Vec<u8>,
34}
35
36impl From<ClientMessageProof> for MessageProof {
37 fn from(client_message_proof: ClientMessageProof) -> Self {
38 let message_proof_set = client_message_proof
39 .message_proof
40 .proof_set
41 .iter()
42 .map(|proof| proof.0 .0)
43 .collect();
44 let block_proof_set = client_message_proof
45 .block_proof
46 .proof_set
47 .iter()
48 .map(|proof| proof.0 .0)
49 .collect();
50
51 Self {
52 message_proof: MerkleProof {
53 proof_set: message_proof_set,
54 proof_index: client_message_proof.message_proof.proof_index.0,
55 },
56 block_proof: MerkleProof {
57 proof_set: block_proof_set,
58 proof_index: client_message_proof.block_proof.proof_index.0,
59 },
60 message_block_header: client_message_proof.message_block_header.into(),
61 commit_block_header: client_message_proof.commit_block_header.into(),
62 sender: client_message_proof.sender.0 .0.into(),
63 recipient: client_message_proof.recipient.0 .0.into(),
64 nonce: client_message_proof.nonce.0 .0,
65 amount: client_message_proof.amount.0,
66 data: client_message_proof.data.0 .0,
67 }
68 }
69}