use std::io;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("DHT error: {0}")]
Dht(#[from] hyperdht::Error),
#[error("RPC error: {0}")]
Rpc(#[from] dht_rpc::Error),
#[error("IO error: {0}")]
Io(#[from] io::Error),
#[error("Swarm has been destroyed")]
Destroyed,
#[error("Topic is required and must be a 32-byte buffer")]
InvalidTopic,
#[error("Peer is banned")]
PeerBanned,
#[error("Connection failed: {0}")]
ConnectionFailed(String),
#[error("Channel error: {0}")]
ChannelRecv(#[from] tokio::sync::oneshot::error::RecvError),
}
pub type Result<T> = std::result::Result<T, Error>;