use crate::RpcId;
use crate::mcp::{GenericMeta, IntoMcpNotification, McpNotification};
use serde::{Deserialize, Serialize};
#[serde_with::skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CancelledNotificationParams {
#[serde(rename = "_meta")]
pub meta: Option<GenericMeta>,
pub request_id: RpcId,
pub reason: Option<String>,
}
impl CancelledNotificationParams {
pub fn new(request_id: RpcId) -> Self {
Self {
meta: None,
request_id,
reason: None,
}
}
pub fn with_meta(mut self, meta: GenericMeta) -> Self {
self.meta = Some(meta);
self
}
pub fn with_reason(mut self, reason: impl Into<String>) -> Self {
self.reason = Some(reason.into());
self
}
}
impl IntoMcpNotification for CancelledNotificationParams {
const METHOD: &'static str = "notifications/cancelled";
}
pub type CancelledNotification = McpNotification<CancelledNotificationParams>;
#[serde_with::skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct InitializedNotificationParams {
#[serde(rename = "_meta")]
pub meta: Option<GenericMeta>,
}
impl InitializedNotificationParams {
pub fn new() -> Self {
Self::default()
}
pub fn with_meta(mut self, meta: GenericMeta) -> Self {
self.meta = Some(meta);
self
}
}
impl IntoMcpNotification for InitializedNotificationParams {
const METHOD: &'static str = "notifications/initialized";
}
pub type InitializedNotification = McpNotification<InitializedNotificationParams>;