substrate-stellar-sdk 0.3.0

A Substrate compatible SDK for Stellar
Documentation
use crate::{
    lib::{String, ToString},
    AsBinary, ClaimableBalanceId, StellarSdkError, XdrCodec,
};

pub trait IntoClaimbleBalanceId {
    fn into_claimable_balance_id(self) -> Result<ClaimableBalanceId, StellarSdkError>;
}

impl IntoClaimbleBalanceId for ClaimableBalanceId {
    fn into_claimable_balance_id(self) -> Result<ClaimableBalanceId, StellarSdkError> {
        Ok(self)
    }
}

impl<T: AsRef<[u8]>> IntoClaimbleBalanceId for AsBinary<T> {
    fn into_claimable_balance_id(self) -> Result<ClaimableBalanceId, StellarSdkError> {
        let balance_id: [u8; 4 + 32] = self.as_binary()?;

        ClaimableBalanceId::from_xdr(balance_id).map_err(|_| StellarSdkError::InvalidBalanceId)
    }
}

impl<E: From<sp_std::str::Utf8Error>> crate::StellarTypeToString<Self, E> for ClaimableBalanceId {
    fn as_encoded_string(&self) -> Result<String, E> {
        let xdr = self.to_xdr();
        Ok(hex::encode(xdr))
    }
}

impl<E: From<sp_std::str::Utf8Error>> crate::StellarTypeToString<ClaimableBalanceId, E> for &str {
    fn as_encoded_string(&self) -> Result<String, E> {
        Ok(self.to_string())
    }
}