#![allow(missing_docs)]
use iroh::{endpoint::RemoteInfo, NodeAddr, NodeId, PublicKey, RelayUrl};
use nested_enum_utils::enum_conversions;
use quic_rpc_derive::rpc_requests;
use serde::{Deserialize, Serialize};
use super::{RpcResult, RpcService};
#[derive(strum::Display, Debug, Serialize, Deserialize)]
#[enum_conversions(super::Request)]
#[rpc_requests(RpcService)]
pub enum Request {
#[rpc(response = RpcResult<NodeId>)]
Id(IdRequest),
#[rpc(response = RpcResult<NodeAddr>)]
Addr(AddrRequest),
#[rpc(response = RpcResult<()>)]
AddAddr(AddAddrRequest),
#[rpc(response = RpcResult<Option<RelayUrl>>)]
Relay(RelayRequest),
#[server_streaming(response = RpcResult<RemoteInfosIterResponse>)]
RemoteInfosIter(RemoteInfosIterRequest),
#[rpc(response = RpcResult<RemoteInfoResponse>)]
RemoteInfo(RemoteInfoRequest),
#[server_streaming(response = WatchResponse)]
Watch(NodeWatchRequest),
}
#[allow(missing_docs)]
#[derive(strum::Display, Debug, Serialize, Deserialize)]
#[enum_conversions(super::Response)]
pub enum Response {
Id(RpcResult<NodeId>),
Addr(RpcResult<NodeAddr>),
Relay(RpcResult<Option<RelayUrl>>),
RemoteInfosIter(RpcResult<RemoteInfosIterResponse>),
RemoteInfo(RpcResult<RemoteInfoResponse>),
Watch(WatchResponse),
Unit(RpcResult<()>),
}
#[derive(Debug, Serialize, Deserialize)]
pub struct RemoteInfosIterRequest;
#[derive(Debug, Serialize, Deserialize)]
pub struct RemoteInfosIterResponse {
pub info: RemoteInfo,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RemoteInfoRequest {
pub node_id: PublicKey,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct RemoteInfoResponse {
pub info: Option<RemoteInfo>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct IdRequest;
#[derive(Serialize, Deserialize, Debug)]
pub struct AddrRequest;
#[derive(Serialize, Deserialize, Debug)]
pub struct AddAddrRequest {
pub addr: NodeAddr,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct RelayRequest;
#[derive(Serialize, Deserialize, Debug)]
pub struct NodeWatchRequest;
#[derive(Serialize, Deserialize, Debug)]
pub struct WatchResponse {
pub version: String,
}