use crate::{client::OfflineClientT, error::ConstantError, Config};
use derive_where::derive_where;
use pezkuwi_subxt_core::constants::address::Address;
#[derive_where(Clone; Client)]
pub struct ConstantsClient<T, Client> {
client: Client,
_marker: std::marker::PhantomData<T>,
}
impl<T, Client> ConstantsClient<T, Client> {
pub fn new(client: Client) -> Self {
Self { client, _marker: std::marker::PhantomData }
}
}
impl<T: Config, Client: OfflineClientT<T>> ConstantsClient<T, Client> {
pub fn validate<Addr: Address>(&self, address: Addr) -> Result<(), ConstantError> {
let metadata = self.client.metadata();
pezkuwi_subxt_core::constants::validate(address, &metadata)
}
pub fn at<Addr: Address>(&self, address: Addr) -> Result<Addr::Target, ConstantError> {
let metadata = self.client.metadata();
pezkuwi_subxt_core::constants::get(address, &metadata)
}
pub fn bytes_at<Addr: Address>(&self, address: Addr) -> Result<Vec<u8>, ConstantError> {
let metadata = self.client.metadata();
pezkuwi_subxt_core::constants::get_bytes(address, &metadata)
}
}