use crate::Client;
use crate::networking::{NetworkError, PeerQuoteWithStorageProof};
use crate::networking::version::PackageVersion;
use ant_protocol::NetworkAddress;
use ant_protocol::storage::DataTypes;
use libp2p::PeerId;
use libp2p::kad::{PeerInfo, Quorum, Record};
impl Client {
pub async fn get_closest_to_address(
&self,
network_address: impl Into<NetworkAddress>,
count: Option<usize>,
) -> Result<Vec<PeerInfo>, NetworkError> {
self.network
.get_closest_peers_with_retries(network_address.into(), count)
.await
}
pub async fn get_record_from_peer(
&self,
network_address: impl Into<NetworkAddress>,
peer: PeerInfo,
) -> Result<Option<Record>, NetworkError> {
self.network
.get_record_from_peer(network_address.into(), peer)
.await
}
pub async fn get_record_and_holders(
&self,
network_address: impl Into<NetworkAddress>,
quorum: Quorum,
) -> Result<(Option<Record>, Vec<PeerId>), NetworkError> {
self.network
.get_record_and_holders(network_address.into(), quorum)
.await
}
pub async fn get_storage_proofs_from_peer(
&self,
network_address: impl Into<NetworkAddress>,
peer: PeerInfo,
nonce: u64,
difficulty: usize,
data_type: DataTypes,
data_size: usize,
) -> Result<PeerQuoteWithStorageProof, NetworkError> {
self.network
.get_storage_proofs_from_peer(network_address.into(), peer, nonce, difficulty, data_type, data_size)
.await
}
pub async fn get_node_version(&self, peer: PeerInfo) -> Result<PackageVersion, String> {
self.network.get_node_version(peer).await
}
}