use hiero_sdk_proto::services;
use crate::{
AccountId,
FromProtobuf,
Hbar,
};
pub type AllProxyStakers = Vec<ProxyStaker>;
#[derive(Debug, Clone)]
pub struct ProxyStaker {
pub account_id: AccountId,
pub amount: Hbar,
}
impl FromProtobuf<services::response::Response> for AllProxyStakers {
fn from_protobuf(pb: services::response::Response) -> crate::Result<Self>
where
Self: Sized,
{
let response = pb_getv!(pb, CryptoGetProxyStakers, services::response::Response);
let stakers = pb_getf!(response, stakers)?;
AllProxyStakers::from_protobuf(stakers.proxy_staker)
}
}
impl FromProtobuf<services::ProxyStaker> for ProxyStaker {
fn from_protobuf(pb: services::ProxyStaker) -> crate::Result<Self>
where
Self: Sized,
{
let account_id = pb_getf!(pb, account_id)?;
Ok(Self {
account_id: AccountId::from_protobuf(account_id)?,
amount: Hbar::from_tinybars(pb.amount),
})
}
}