#![allow(missing_docs)]
#[allow(unused_imports)]
use crate::common::{AnyValue, JsonObject, StringOrMarkdown, Uri};
#[allow(unused_imports)]
use serde::{Deserialize, Serialize};
#[allow(unused_imports)]
use serde_repr::{Deserialize_repr, Serialize_repr};
use crate::actions::ActionEnvelope;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct JsonRpcRequest {
pub jsonrpc: JsonRpcVersion,
pub id: u64,
pub method: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub params: Option<AnyValue>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct JsonRpcSuccessResponse {
pub jsonrpc: JsonRpcVersion,
pub id: u64,
pub result: AnyValue,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct JsonRpcErrorResponse {
pub jsonrpc: JsonRpcVersion,
pub id: u64,
pub error: JsonRpcError,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct JsonRpcError {
pub code: i32,
pub message: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub data: Option<AnyValue>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct JsonRpcNotification {
pub jsonrpc: JsonRpcVersion,
pub method: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub params: Option<AnyValue>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, Default)]
pub enum JsonRpcVersion {
#[default]
#[serde(rename = "2.0")]
V2,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum JsonRpcMessage {
Request(JsonRpcRequest),
SuccessResponse(JsonRpcSuccessResponse),
ErrorResponse(JsonRpcErrorResponse),
Notification(JsonRpcNotification),
}
pub type ActionNotificationParams = ActionEnvelope;