siera_agent/modules/
feature.rs1use async_trait::async_trait;
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4
5use crate::error::Result;
6
7#[derive(Debug, Serialize, Deserialize)]
9pub struct DiscoverFeaturesResponse {
10 pub query_msg: Value,
12
13 pub disclose: Disclose,
15}
16
17#[derive(Debug, Serialize, Deserialize)]
19pub struct Disclose {
20 #[serde(rename = "@type")]
22 pub type_field: String,
23
24 #[serde(rename = "@id")]
26 pub id: String,
27
28 pub protocols: Vec<Protocol>,
30}
31
32#[derive(Debug, Serialize, Deserialize)]
34pub struct Protocol {
35 pub pid: String,
37}
38
39#[async_trait]
41pub trait FeatureModule {
42 async fn discover_features(&self) -> Result<DiscoverFeaturesResponse>;
44}