walletconnect_client/
watch.rs

1use crate::jwt::decode::Topic;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
5#[serde(rename_all = "lowercase")]
6pub enum WatchType {
7    Subscriber,
8    Publisher,
9}
10
11#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
12#[serde(rename_all = "lowercase")]
13pub enum WatchStatus {
14    Accepted,
15    Queued,
16    Delivered,
17}
18
19#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
20pub enum WatchAction {
21    #[serde(rename = "irn_watchRegister")]
22    Register,
23    #[serde(rename = "irn_watchUnregister")]
24    Unregister,
25    #[serde(rename = "irn_watchEvent")]
26    WatchEvent,
27}
28
29#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
30#[serde(rename_all = "camelCase")]
31pub struct WatchEventPayload {
32    /// Webhook status. Either `accepted`, `queued` or `delivered`.
33    pub status: WatchStatus,
34    /// Topic of the message that triggered the watch event.
35    pub topic: Topic,
36    /// The published message.
37    pub message: String,
38    /// Message publishing timestamp.
39    pub published_at: i64,
40    /// Message tag.
41    pub tag: u32,
42}
43
44#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
45#[serde(rename_all = "camelCase")]
46pub struct WatchWebhookPayload {
47    /// JWT with [`WatchEventClaims`] payload.
48    pub event_auth: String,
49}