celestia_types/block/
data.rs1use celestia_proto::tendermint_celestia_mods::types::Data as RawData;
2#[cfg(all(target_arch = "wasm32", feature = "wasm-bindgen"))]
3use js_sys::Uint8Array;
4use serde::{Deserialize, Serialize};
5use tendermint_proto::Protobuf;
6#[cfg(all(target_arch = "wasm32", feature = "wasm-bindgen"))]
7use wasm_bindgen::prelude::*;
8
9use crate::Error;
10
11#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
15#[serde(try_from = "RawData", into = "RawData")]
16#[cfg_attr(
17 all(target_arch = "wasm32", feature = "wasm-bindgen"),
18 wasm_bindgen(getter_with_clone)
19)]
20pub struct Data {
21 #[cfg_attr(
23 all(target_arch = "wasm32", feature = "wasm-bindgen"),
24 wasm_bindgen(skip)
25 )]
26 pub txs: Vec<Vec<u8>>,
27
28 pub square_size: u64,
30
31 pub hash: Vec<u8>,
35}
36
37#[cfg(all(target_arch = "wasm32", feature = "wasm-bindgen"))]
38#[wasm_bindgen]
39impl Data {
40 #[wasm_bindgen(getter)]
42 pub fn transactions(&self) -> Vec<Uint8Array> {
43 self.txs
44 .iter()
45 .map(|tx| Uint8Array::from(&tx[..]))
46 .collect()
47 }
48}
49
50impl Protobuf<RawData> for Data {}
51
52impl TryFrom<RawData> for Data {
53 type Error = Error;
54
55 fn try_from(value: RawData) -> Result<Self, Self::Error> {
56 Ok(Data {
57 txs: value.txs,
58 square_size: value.square_size,
59 hash: value.hash,
60 })
61 }
62}
63
64impl From<Data> for RawData {
65 fn from(value: Data) -> RawData {
66 RawData {
67 txs: value.txs,
68 square_size: value.square_size,
69 hash: value.hash,
70 }
71 }
72}
73
74#[cfg(feature = "uniffi")]
75mod uniffi_types {
76 use super::Data as BlockData;
77
78 #[uniffi::remote(Record)]
80 pub struct BlockData {
81 pub txs: Vec<Vec<u8>>,
83
84 pub square_size: u64,
86
87 pub hash: Vec<u8>,
91 }
92}