1use serde::{Deserialize, Serialize};
2use serde_json::value::RawValue;
3
4#[derive(Debug, Clone, Deserialize)]
7pub struct SessionStatus {
8 pub connected: bool,
9 pub phone: Option<String>,
10}
11
12#[derive(Debug, Clone, Deserialize)]
13pub struct QRCode {
14 pub qr: Option<String>,
15}
16
17#[derive(Debug, Clone, Deserialize)]
18pub struct PairPhoneResult {
19 pub pair_code: Option<String>,
20}
21
22#[derive(Debug, Clone, Deserialize)]
23pub struct MessageResponse {
24 #[serde(rename = "messageId")]
25 pub message_id: String,
26 pub id: String,
27}
28
29#[derive(Debug, Clone, Serialize, Default)]
32pub struct SendTextParams {
33 pub to: String,
34 pub text: String,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub quoted: Option<String>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub mentions: Option<Vec<String>>,
39}
40
41#[derive(Debug, Clone, Serialize, Default)]
42pub struct SendImageParams {
43 pub to: String,
44 pub url: String,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub caption: Option<String>,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub quoted: Option<String>,
49}
50
51#[derive(Debug, Clone, Serialize, Default)]
52pub struct SendAudioParams {
53 pub to: String,
54 pub url: String,
55 #[serde(skip_serializing_if = "Option::is_none")]
57 pub ptt: Option<bool>,
58}
59
60#[derive(Debug, Clone, Serialize, Default)]
61pub struct SendVideoParams {
62 pub to: String,
63 pub url: String,
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub caption: Option<String>,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub quoted: Option<String>,
68}
69
70#[derive(Debug, Clone, Serialize, Default)]
71pub struct SendDocumentParams {
72 pub to: String,
73 pub url: String,
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub filename: Option<String>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub caption: Option<String>,
78}
79
80#[derive(Debug, Clone, Serialize, Default)]
81pub struct SendLocationParams {
82 pub to: String,
83 pub latitude: f64,
84 pub longitude: f64,
85 #[serde(skip_serializing_if = "Option::is_none")]
86 pub title: Option<String>,
87 #[serde(skip_serializing_if = "Option::is_none")]
88 pub address: Option<String>,
89}
90
91#[derive(Debug, Clone, Serialize, Default)]
92pub struct SendContactParams {
93 pub to: String,
94 pub contact_name: String,
95 pub contact_number: String,
96}
97
98#[derive(Debug, Clone, Serialize, Default)]
99pub struct SendStickerParams {
100 pub to: String,
101 pub url: String,
102}
103
104#[derive(Debug, Clone, Serialize, Default)]
105pub struct SendPollParams {
106 pub to: String,
107 pub question: String,
108 pub options: Vec<String>,
109 #[serde(skip_serializing_if = "Option::is_none")]
110 pub multiple_answers: Option<bool>,
111}
112
113#[derive(Debug, Clone, Serialize, Default)]
114pub struct SendReactionParams {
115 pub to: String,
116 pub message_id: String,
117 pub emoji: String,
119}
120
121#[derive(Debug, Clone, Serialize, Default)]
124pub struct MarkReadParams {
125 pub chat_id: String,
126 #[serde(skip_serializing_if = "Option::is_none")]
127 pub last_message_id: Option<String>,
128}
129
130#[derive(Debug, Clone, Serialize, Default)]
131pub struct PresenceParams {
132 pub chat_id: String,
133 pub presence: String,
135}
136
137#[derive(Debug, Clone, Deserialize)]
140pub struct Event {
141 pub event: String,
142 pub session_id: String,
143 pub data: Box<RawValue>,
144 pub timestamp: String,
145}
146
147#[derive(Debug, Clone, Deserialize)]
148pub struct IncomingMessage {
149 pub id: String,
150 pub chat: String,
151 pub from: String,
152 pub from_me: bool,
153 #[serde(rename = "type")]
154 pub msg_type: String,
155 pub text: Option<String>,
156 pub caption: Option<String>,
157 pub media_url: Option<String>,
158 pub mimetype: Option<String>,
159 pub filename: Option<String>,
160 pub latitude: Option<f64>,
161 pub longitude: Option<f64>,
162 pub timestamp: i64,
163}