use async_trait::async_trait;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::error::Result;
#[derive(Debug, Serialize, Deserialize)]
pub struct DiscoverFeaturesResponse {
pub query_msg: Value,
pub disclose: Disclose,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Disclose {
#[serde(rename = "@type")]
pub type_field: String,
#[serde(rename = "@id")]
pub id: String,
pub protocols: Vec<Protocol>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Protocol {
pub pid: String,
}
#[async_trait]
pub trait FeatureModule {
async fn discover_features(&self) -> Result<DiscoverFeaturesResponse>;
}