defuse_core/payload/
sep53.rs

1use crate::payload::{DefusePayload, ExtractDefusePayload};
2use defuse_sep53::{Sep53Payload, SignedSep53Payload};
3use near_sdk::{serde::de::DeserializeOwned, serde_json};
4
5impl<T> ExtractDefusePayload<T> for SignedSep53Payload
6where
7    T: DeserializeOwned,
8{
9    type Error = serde_json::Error;
10
11    #[inline]
12    fn extract_defuse_payload(self) -> Result<DefusePayload<T>, Self::Error> {
13        self.payload.extract_defuse_payload()
14    }
15}
16
17impl<T> ExtractDefusePayload<T> for Sep53Payload
18where
19    T: DeserializeOwned,
20{
21    type Error = serde_json::Error;
22
23    fn extract_defuse_payload(self) -> Result<DefusePayload<T>, Self::Error> {
24        serde_json::from_str(&self.payload)
25    }
26}