use crate::schema_helpers::*;
use crate::serde_utils::Pubkey;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum TransportType {
Tcp,
Ws,
Wss,
}
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
pub struct ConnectPeerParams {
#[schemars(schema_with = "schema_as_string_optional")]
pub address: Option<String>,
pub pubkey: Option<Pubkey>,
pub save: Option<bool>,
pub addr_type: Option<TransportType>,
}
#[derive(Serialize, Deserialize, Debug, JsonSchema)]
pub struct DisconnectPeerParams {
pub pubkey: Pubkey,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct PeerInfo {
pub pubkey: Pubkey,
#[schemars(schema_with = "schema_as_string")]
pub address: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct ListPeersResult {
pub peers: Vec<PeerInfo>,
}