use snarkos_node_network::{NodeType, PeerPoolHandling};
use snarkos_node_router::Routing;
use snarkos_utilities::SignalHandler;
use snarkvm::prelude::{Address, Network, PrivateKey, ViewKey};
#[async_trait]
pub trait NodeInterface<N: Network>: Routing<N> {
fn node_type(&self) -> NodeType {
self.router().node_type()
}
fn private_key(&self) -> &PrivateKey<N> {
self.router().private_key()
}
fn view_key(&self) -> &ViewKey<N> {
self.router().view_key()
}
fn address(&self) -> Address<N> {
self.router().address()
}
fn is_dev(&self) -> bool {
self.router().is_dev()
}
async fn wait_for_signals(&self, handler: &SignalHandler) {
handler.wait_for_signals().await;
self.shut_down().await;
}
async fn shut_down(&self);
}