1use serde::{Deserialize, Serialize};
9
10use crate::{BindIdentity, Principal, RouteTarget};
11
12#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
14#[serde(tag = "op")]
15pub enum ModuleControlRequest {
16 #[serde(rename = "route.bind")]
17 RouteBind {
18 route_channel: u16,
19 target: RouteTarget,
20 identity: BindIdentity,
21 #[serde(default, skip_serializing_if = "Option::is_none")]
22 principal: Option<Principal>,
23 },
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
28#[serde(tag = "op")]
29pub enum ModuleControlResponse {
30 #[serde(rename = "route.bind")]
32 RouteBindAck {},
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
37#[serde(tag = "op")]
38pub enum ModuleControlPush {
39 #[serde(rename = "route.status")]
40 RouteStatus { route_channel: u16, status: String },
41}