Skip to main content

defuse_serde_utils/
base64.rs

1use derive_more::From;
2use serde::{Deserialize, Serialize};
3use serde_with::{base64::Base64, serde_as};
4
5#[serde_as]
6#[cfg_attr(
7    feature = "schemars-v0_8",
8    derive(::schemars::JsonSchema),
9    schemars(transparent)
10)]
11#[derive(Debug, Clone, Copy, Default, Serialize, Deserialize, From)]
12#[serde(bound(serialize = "T: AsRef<[u8]>", deserialize = "T: TryFrom<Vec<u8>>"))]
13/// Helper type to implement `#[derive(Serialize, Deserialize)]`,
14/// as `#[near_bindgen]` doesn't support `#[serde(...)]` attributes on method arguments
15#[repr(transparent)]
16pub struct AsBase64<T>(#[serde_as(as = "Base64")] pub T);
17
18impl<T> AsBase64<T> {
19    #[inline]
20    pub fn into_inner(self) -> T {
21        self.0
22    }
23}