substrate_stellar_sdk/xdr/impls/
claimable_balance_id.rs1use crate::{
2 lib::{String, ToString},
3 AsBinary, ClaimableBalanceId, StellarSdkError, XdrCodec,
4};
5
6pub trait IntoClaimbleBalanceId {
7 fn into_claimable_balance_id(self) -> Result<ClaimableBalanceId, StellarSdkError>;
8}
9
10impl IntoClaimbleBalanceId for ClaimableBalanceId {
11 fn into_claimable_balance_id(self) -> Result<ClaimableBalanceId, StellarSdkError> {
12 Ok(self)
13 }
14}
15
16impl<T: AsRef<[u8]>> IntoClaimbleBalanceId for AsBinary<T> {
17 fn into_claimable_balance_id(self) -> Result<ClaimableBalanceId, StellarSdkError> {
18 let balance_id: [u8; 4 + 32] = self.as_binary()?;
19
20 ClaimableBalanceId::from_xdr(balance_id).map_err(|_| StellarSdkError::InvalidBalanceId)
21 }
22}
23
24impl<E: From<sp_std::str::Utf8Error>> crate::StellarTypeToString<Self, E> for ClaimableBalanceId {
25 fn as_encoded_string(&self) -> Result<String, E> {
26 let xdr = self.to_xdr();
27 Ok(hex::encode(xdr))
28 }
29}
30
31impl<E: From<sp_std::str::Utf8Error>> crate::StellarTypeToString<ClaimableBalanceId, E> for &str {
32 fn as_encoded_string(&self) -> Result<String, E> {
33 Ok(self.to_string())
34 }
35}