use std::sync::Arc;
use amico::a2a::network::NetworkDyn;
use solana_sdk::pubkey::Pubkey;
use super::error::NetworkError;
#[derive(Clone)]
pub struct A2aNetwork {
pub network:
Arc<dyn NetworkDyn<Message = String, Address = Pubkey, Error = NetworkError> + Send + Sync>,
}
impl A2aNetwork {
pub fn new<N>(network: N) -> Self
where
N: NetworkDyn<Message = String, Address = Pubkey, Error = NetworkError>
+ Send
+ Sync
+ 'static,
{
Self {
network: Arc::new(network),
}
}
pub async fn connect(&self) -> Result<(), NetworkError> {
self.network.connect_dyn().await
}
}
#[cfg(test)]
mod tests {
use amico::resource::Resource;
use nostr::key::Keys;
use crate::{a2a::network::dephy::DephyNetwork, web3::wallet::Wallet};
use super::*;
#[test]
fn simulate_a2a_use() {
let keys = Keys::generate();
let wallet = Wallet::new().unwrap();
let wallet_resource = Resource::new("Test wallet", wallet);
let dephy_network = DephyNetwork::new(keys, wallet_resource);
let _network_resource = Resource::new("Test network", A2aNetwork::new(dephy_network));
}
}