1use serde::{Deserialize, Serialize};
2use serde_json::Value as JsonValue;
3use std::collections::HashMap;
4
5#[derive(Serialize, Deserialize, Debug, Clone)]
6#[serde(rename_all = "camelCase")]
7pub struct LocalProfile {
8 pub profile_id: u64,
9 pub display_name: String,
10 pub full_name: String,
11 pub image: Option<String>,
12 pub contact_link: Option<String>,
13 pub local_alias: String,
14 #[serde(flatten)]
15 pub _unknown_fields: HashMap<String, JsonValue>,
16}
17
18#[derive(Serialize, Deserialize, Debug, Clone)]
19#[serde(rename_all = "camelCase")]
20pub struct User {
21 pub user_id: u64,
22 pub agent_user_id: String,
23 pub user_contact_id: u64,
24 pub local_display_name: String,
25 pub profile: LocalProfile,
26 pub active_user: bool,
27 pub show_ntfs: bool,
29 #[serde(flatten)]
30 pub _unknown_fields: HashMap<String, JsonValue>,
31}
32
33#[derive(Serialize, Deserialize, Debug, Clone)]
34#[serde(rename_all = "camelCase")]
35pub struct UserInfo {
36 pub user: User,
37 pub unread_count: u64,
38 #[serde(flatten)]
39 pub _unknown_fields: HashMap<String, JsonValue>,
40}
41
42#[derive(Serialize, Deserialize, Debug, Clone)]
43#[serde(rename_all = "camelCase")]
44pub struct Contact {
45 pub contact_id: u64,
46 pub local_display_name: String,
47 pub via_group: Option<u64>,
50 #[serde(flatten)]
52 pub _unknown_fields: HashMap<String, JsonValue>,
53}
54
55#[derive(Serialize, Deserialize, Debug, Clone)]
56#[serde(rename_all = "camelCase", rename_all_fields = "camelCase")]
57#[serde(tag = "type")]
58pub enum ChatInfo {
59 Direct {
60 contact: Contact,
61 #[serde(flatten)]
62 _unknown_fields: HashMap<String, JsonValue>,
63 },
64 Group {
65 group_info: GroupInfo,
66 #[serde(flatten)]
67 _unknown_fields: HashMap<String, JsonValue>,
68 },
69 ContactRequest {
70 #[serde(flatten)]
71 _unknown_fields: HashMap<String, JsonValue>,
72 },
73 #[serde(untagged)]
74 Unknown(JsonValue),
75}
76
77#[derive(Serialize, Deserialize, Debug, Clone)]
78#[serde(rename_all = "camelCase")]
79pub struct GroupInfo {
80 pub group_id: u64,
81 pub local_display_name: String,
82 pub group_profile: GroupProfile,
83 pub membership: GroupMember,
84 #[serde(flatten)]
86 pub _unknown_fields: HashMap<String, JsonValue>,
87}
88
89#[derive(Serialize, Deserialize, Debug, Clone)]
90#[serde(rename_all = "camelCase")]
91pub struct GroupProfile {
92 pub display_name: String,
93 pub full_name: String,
94 pub image: Option<String>,
95 #[serde(flatten)]
96 pub _unknown_fields: HashMap<String, JsonValue>,
97}
98
99#[derive(Serialize, Deserialize, Debug, Clone)]
100#[serde(rename_all = "camelCase")]
101pub struct GroupMember {
102 pub group_member_id: u64,
103 pub member_id: String,
104 pub member_role: GroupMemberRole,
105 pub local_display_name: String,
106 pub member_profile: Profile,
107 pub member_contact_id: Option<u64>,
108 pub active_conn: Option<Connection>,
109 #[serde(flatten)]
110 pub _unknown_fields: HashMap<String, JsonValue>,
111}
112
113#[derive(Serialize, Deserialize, Debug, Clone)]
114#[serde(rename_all = "camelCase", rename_all_fields = "camelCase")]
115pub enum GroupMemberRole {
116 Member,
117 Admin,
118 Owner,
119}
120
121#[derive(Serialize, Deserialize, Debug, Clone)]
122#[serde(rename_all = "camelCase")]
123pub struct Profile {
124 display_name: String,
125 full_name: String,
126 image: Option<String>,
127 contact_link: Option<String>,
128 #[serde(flatten)]
129 pub _unknown_fields: HashMap<String, JsonValue>,
130}
131
132#[derive(Serialize, Deserialize, Debug, Clone)]
133#[serde(rename_all = "camelCase")]
134pub struct AChatItem {
135 pub chat_info: ChatInfo,
136 pub chat_item: ChatItem,
137 #[serde(flatten)]
138 pub _unknown_fields: HashMap<String, JsonValue>,
139}
140
141#[derive(Serialize, Deserialize, Debug, Clone)]
142#[serde(rename_all = "camelCase")]
143pub struct ChatItem {
144 pub chat_dir: Direction,
145 pub meta: Meta,
146 #[serde(flatten)]
150 pub _unknown_fields: HashMap<String, JsonValue>,
151}
152
153#[derive(Serialize, Deserialize, Debug, Clone)]
154#[serde(rename_all = "camelCase", rename_all_fields = "camelCase")]
155#[serde(tag = "type")]
156pub enum Direction {
157 DirectSnd,
158 DirectRcv,
159 GroupSnd,
160 GroupRcv {
161 group_member: GroupMember,
162 },
163 #[serde(untagged)]
164 Unknown(JsonValue),
165}
166
167#[derive(Serialize, Deserialize, Debug, Clone)]
168#[serde(rename_all = "camelCase")]
169pub struct Meta {
170 pub item_id: u64,
171 pub item_text: String,
173 pub item_edited: bool,
177 pub editable: bool,
178 #[serde(flatten)]
179 pub _unknown_fields: HashMap<String, JsonValue>,
180}
181
182#[derive(Serialize, Deserialize, Debug, Clone)]
183#[serde(rename_all = "camelCase")]
184pub struct Chat {
185 pub chat_info: ChatInfo,
186 #[serde(flatten)]
189 pub _unknown_fields: HashMap<String, JsonValue>,
190}
191
192#[derive(Serialize, Deserialize, Debug, Clone)]
193#[serde(rename_all = "camelCase")]
194pub struct UserContactLink {
195 pub conn_req_contact: String,
196 pub auto_accept: Option<AutoAccept>,
197 #[serde(flatten)]
198 pub _unknown_fields: HashMap<String, JsonValue>,
199}
200
201#[derive(Serialize, Deserialize, Debug, Clone)]
202#[serde(rename_all = "camelCase")]
203pub struct AutoAccept {
204 pub accept_incognito: bool,
205 pub auto_reply: Option<MsgContent>,
206 #[serde(flatten)]
207 pub _unknown_fields: HashMap<String, JsonValue>,
208}
209
210#[derive(Serialize, Deserialize, Debug, Clone)]
211#[serde(rename_all = "camelCase", rename_all_fields = "camelCase")]
212pub enum MsgContent {
213 Text {
214 text: String,
215 #[serde(flatten)]
216 _unknown_fields: HashMap<String, JsonValue>,
217 },
218 Link {
219 text: String,
220 #[serde(flatten)]
221 _unknown_fields: HashMap<String, JsonValue>,
222 },
223 Image {
224 image: String, #[serde(flatten)]
226 _unknown_fields: HashMap<String, JsonValue>,
227 },
228 File {
229 text: String,
230 #[serde(flatten)]
231 _unknown_fields: HashMap<String, JsonValue>,
232 },
233 Unknown(JsonValue),
234}
235
236#[derive(Serialize, Deserialize, Debug, Clone)]
237#[serde(rename_all = "camelCase", rename_all_fields = "camelCase")]
238#[serde(tag = "type")]
239pub enum ChatError {
240 Error {
241 error_type: ChatErrorType,
242 #[serde(flatten)]
243 _unknown_fields: HashMap<String, JsonValue>,
244 },
245 ErrorAgent {
246 agent_error: JsonValue,
247 #[serde(flatten)]
248 _unknown_fields: HashMap<String, JsonValue>,
249 },
250 ErrorStore {
251 store_error: JsonValue,
252 },
253 Unknown(JsonValue),
254}
255
256#[derive(Serialize, Deserialize, Debug, Clone)]
257#[serde(rename_all = "camelCase", rename_all_fields = "camelCase")]
258pub enum ChatErrorType {
259 NoActiveUser,
260 ActiveUserExists,
261}
262
263#[derive(Serialize, Deserialize, Debug, Clone)]
264#[serde(rename_all = "camelCase")]
265pub struct Connection {
266 pub conn_id: u64,
267}