use serde::{Deserialize, Serialize};
use crate::{BindIdentity, RouteTarget};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ConfigTier {
pub tier: String,
pub source: String,
pub doc: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(tag = "op")]
pub enum ModuleControlRequest {
#[serde(rename = "route.bind")]
RouteBind {
route_channel: u16,
target: RouteTarget,
identity: BindIdentity,
#[serde(default)]
config: Vec<ConfigTier>,
},
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(tag = "op")]
pub enum ModuleControlResponse {
#[serde(rename = "route.bind")]
RouteBindAck {},
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(tag = "op")]
pub enum ModuleControlPush {
#[serde(rename = "route.status")]
RouteStatus { route_channel: u16, status: String },
}