simploxide_api_types/
events.rs

1use crate::{errors::*, *};
2
3#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4#[serde(tag = "type")]
5#[non_exhaustive]
6pub enum Event {
7    /// Contact connection events
8    #[serde(rename = "contactConnected")]
9    ContactConnected(ContactConnected),
10    /// Contact connection events
11    #[serde(rename = "contactUpdated")]
12    ContactUpdated(ContactUpdated),
13    /// Contact connection events
14    #[serde(rename = "contactDeletedByContact")]
15    ContactDeletedByContact(ContactDeletedByContact),
16    /// Contact connection events
17    #[serde(rename = "receivedContactRequest")]
18    ReceivedContactRequest(ReceivedContactRequest),
19    /// Contact connection events
20    #[serde(rename = "newMemberContactReceivedInv")]
21    NewMemberContactReceivedInv(NewMemberContactReceivedInv),
22    /// Contact connection events
23    #[serde(rename = "contactSndReady")]
24    ContactSndReady(ContactSndReady),
25    /// Message events
26    #[serde(rename = "newChatItems")]
27    NewChatItems(NewChatItems),
28    /// Message events
29    #[serde(rename = "chatItemReaction")]
30    ChatItemReaction(ChatItemReaction),
31    /// Message events
32    #[serde(rename = "chatItemsDeleted")]
33    ChatItemsDeleted(ChatItemsDeleted),
34    /// Message events
35    #[serde(rename = "chatItemUpdated")]
36    ChatItemUpdated(ChatItemUpdated),
37    /// Message events
38    #[serde(rename = "groupChatItemsDeleted")]
39    GroupChatItemsDeleted(GroupChatItemsDeleted),
40    /// Message events
41    #[serde(rename = "chatItemsStatusesUpdated")]
42    ChatItemsStatusesUpdated(ChatItemsStatusesUpdated),
43    /// Group events
44    #[serde(rename = "receivedGroupInvitation")]
45    ReceivedGroupInvitation(ReceivedGroupInvitation),
46    /// Group events
47    #[serde(rename = "userJoinedGroup")]
48    UserJoinedGroup(UserJoinedGroup),
49    /// Group events
50    #[serde(rename = "groupUpdated")]
51    GroupUpdated(GroupUpdated),
52    /// Group events
53    #[serde(rename = "joinedGroupMember")]
54    JoinedGroupMember(JoinedGroupMember),
55    /// Group events
56    #[serde(rename = "memberRole")]
57    MemberRole(MemberRole),
58    /// Group events
59    #[serde(rename = "deletedMember")]
60    DeletedMember(DeletedMember),
61    /// Group events
62    #[serde(rename = "leftMember")]
63    LeftMember(LeftMember),
64    /// Group events
65    #[serde(rename = "deletedMemberUser")]
66    DeletedMemberUser(DeletedMemberUser),
67    /// Group events
68    #[serde(rename = "groupDeleted")]
69    GroupDeleted(GroupDeleted),
70    /// Group events
71    #[serde(rename = "connectedToGroupMember")]
72    ConnectedToGroupMember(ConnectedToGroupMember),
73    /// Group events
74    #[serde(rename = "memberAcceptedByOther")]
75    MemberAcceptedByOther(MemberAcceptedByOther),
76    /// Group events
77    #[serde(rename = "memberBlockedForAll")]
78    MemberBlockedForAll(MemberBlockedForAll),
79    /// Group events
80    #[serde(rename = "groupMemberUpdated")]
81    GroupMemberUpdated(GroupMemberUpdated),
82    /// File events
83    #[serde(rename = "rcvFileDescrReady")]
84    RcvFileDescrReady(RcvFileDescrReady),
85    /// File events
86    #[serde(rename = "rcvFileComplete")]
87    RcvFileComplete(RcvFileComplete),
88    /// File events
89    #[serde(rename = "sndFileCompleteXFTP")]
90    SndFileCompleteXftp(SndFileCompleteXftp),
91    /// File events
92    #[serde(rename = "rcvFileStart")]
93    RcvFileStart(RcvFileStart),
94    /// File events
95    #[serde(rename = "rcvFileSndCancelled")]
96    RcvFileSndCancelled(RcvFileSndCancelled),
97    /// File events
98    #[serde(rename = "rcvFileAccepted")]
99    RcvFileAccepted(RcvFileAccepted),
100    /// File events
101    #[serde(rename = "rcvFileError")]
102    RcvFileError(RcvFileError),
103    /// File events
104    #[serde(rename = "rcvFileWarning")]
105    RcvFileWarning(RcvFileWarning),
106    /// File events
107    #[serde(rename = "sndFileError")]
108    SndFileError(SndFileError),
109    /// File events
110    #[serde(rename = "sndFileWarning")]
111    SndFileWarning(SndFileWarning),
112    /// Connection progress events
113    #[serde(rename = "acceptingContactRequest")]
114    AcceptingContactRequest(AcceptingContactRequest),
115    /// Connection progress events
116    #[serde(rename = "acceptingBusinessRequest")]
117    AcceptingBusinessRequest(AcceptingBusinessRequest),
118    /// Connection progress events
119    #[serde(rename = "contactConnecting")]
120    ContactConnecting(ContactConnecting),
121    /// Connection progress events
122    #[serde(rename = "businessLinkConnecting")]
123    BusinessLinkConnecting(BusinessLinkConnecting),
124    /// Connection progress events
125    #[serde(rename = "joinedGroupMemberConnecting")]
126    JoinedGroupMemberConnecting(JoinedGroupMemberConnecting),
127    /// Connection progress events
128    #[serde(rename = "sentGroupInvitation")]
129    SentGroupInvitation(SentGroupInvitation),
130    /// Connection progress events
131    #[serde(rename = "groupLinkConnecting")]
132    GroupLinkConnecting(GroupLinkConnecting),
133    /// Error events
134    #[serde(rename = "messageError")]
135    MessageError(MessageError),
136    /// Error events
137    #[serde(rename = "chatError")]
138    ChatError(ChatError),
139    /// Error events
140    #[serde(rename = "chatErrors")]
141    ChatErrors(ChatErrors),
142    #[serde(untagged)]
143    Undocumented(BTreeMap<String, JsonObject>),
144}
145
146/// ### Contact connection events
147///
148/// Bots must use these events to process connecting users.
149///
150/// Most bots enable auto-accept and don't need to accept connections via commands.
151///
152/// You may create bot SimpleX address manually via CLI or desktop app or from bot code with these commands:
153/// - [APIShowMyAddress](./COMMANDS.md#apishowmyaddress) to check if address exists,
154/// - [APICreateMyAddress](./COMMANDS.md#apicreatemyaddress) to create address,
155/// - [APISetAddressSettings](./COMMANDS.md#apisetaddresssettings) to enable auto-access.
156///
157/// ----
158///
159/// This event is sent after a user connects via bot SimpleX address (not a business address).
160#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
161#[cfg_attr(feature = "bon", derive(::bon::Builder))]
162#[cfg_attr(feature = "bon", builder(on(String, into)))]
163pub struct ContactConnected {
164    #[serde(rename = "user")]
165    pub user: User,
166
167    #[serde(rename = "contact")]
168    pub contact: Contact,
169
170    #[serde(rename = "userCustomProfile", skip_serializing_if = "Option::is_none")]
171    pub user_custom_profile: Option<Profile>,
172
173    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
174    #[cfg_attr(feature = "bon", builder(default))]
175    pub undocumented: BTreeMap<String, JsonObject>,
176}
177
178/// ### Contact connection events
179///
180/// Bots must use these events to process connecting users.
181///
182/// Most bots enable auto-accept and don't need to accept connections via commands.
183///
184/// You may create bot SimpleX address manually via CLI or desktop app or from bot code with these commands:
185/// - [APIShowMyAddress](./COMMANDS.md#apishowmyaddress) to check if address exists,
186/// - [APICreateMyAddress](./COMMANDS.md#apicreatemyaddress) to create address,
187/// - [APISetAddressSettings](./COMMANDS.md#apisetaddresssettings) to enable auto-access.
188///
189/// ----
190///
191/// Contact profile of another user is updated.
192#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
193#[cfg_attr(feature = "bon", derive(::bon::Builder))]
194#[cfg_attr(feature = "bon", builder(on(String, into)))]
195pub struct ContactUpdated {
196    #[serde(rename = "user")]
197    pub user: User,
198
199    #[serde(rename = "fromContact")]
200    pub from_contact: Contact,
201
202    #[serde(rename = "toContact")]
203    pub to_contact: Contact,
204
205    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
206    #[cfg_attr(feature = "bon", builder(default))]
207    pub undocumented: BTreeMap<String, JsonObject>,
208}
209
210/// ### Contact connection events
211///
212/// Bots must use these events to process connecting users.
213///
214/// Most bots enable auto-accept and don't need to accept connections via commands.
215///
216/// You may create bot SimpleX address manually via CLI or desktop app or from bot code with these commands:
217/// - [APIShowMyAddress](./COMMANDS.md#apishowmyaddress) to check if address exists,
218/// - [APICreateMyAddress](./COMMANDS.md#apicreatemyaddress) to create address,
219/// - [APISetAddressSettings](./COMMANDS.md#apisetaddresssettings) to enable auto-access.
220///
221/// ----
222///
223/// Bot user's connection with another contact is deleted (conversation is kept).
224#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
225#[cfg_attr(feature = "bon", derive(::bon::Builder))]
226#[cfg_attr(feature = "bon", builder(on(String, into)))]
227pub struct ContactDeletedByContact {
228    #[serde(rename = "user")]
229    pub user: User,
230
231    #[serde(rename = "contact")]
232    pub contact: Contact,
233
234    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
235    #[cfg_attr(feature = "bon", builder(default))]
236    pub undocumented: BTreeMap<String, JsonObject>,
237}
238
239/// ### Contact connection events
240///
241/// Bots must use these events to process connecting users.
242///
243/// Most bots enable auto-accept and don't need to accept connections via commands.
244///
245/// You may create bot SimpleX address manually via CLI or desktop app or from bot code with these commands:
246/// - [APIShowMyAddress](./COMMANDS.md#apishowmyaddress) to check if address exists,
247/// - [APICreateMyAddress](./COMMANDS.md#apicreatemyaddress) to create address,
248/// - [APISetAddressSettings](./COMMANDS.md#apisetaddresssettings) to enable auto-access.
249///
250/// ----
251///
252/// Contact request received.
253///
254/// This event is only sent when auto-accept is disabled.
255///
256/// The request needs to be accepted using [APIAcceptContact](./COMMANDS.md#apiacceptcontact) command
257#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
258#[cfg_attr(feature = "bon", derive(::bon::Builder))]
259#[cfg_attr(feature = "bon", builder(on(String, into)))]
260pub struct ReceivedContactRequest {
261    #[serde(rename = "user")]
262    pub user: User,
263
264    #[serde(rename = "contactRequest")]
265    pub contact_request: UserContactRequest,
266
267    #[serde(rename = "chat_", skip_serializing_if = "Option::is_none")]
268    pub chat: Option<AChat>,
269
270    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
271    #[cfg_attr(feature = "bon", builder(default))]
272    pub undocumented: BTreeMap<String, JsonObject>,
273}
274
275/// ### Contact connection events
276///
277/// Bots must use these events to process connecting users.
278///
279/// Most bots enable auto-accept and don't need to accept connections via commands.
280///
281/// You may create bot SimpleX address manually via CLI or desktop app or from bot code with these commands:
282/// - [APIShowMyAddress](./COMMANDS.md#apishowmyaddress) to check if address exists,
283/// - [APICreateMyAddress](./COMMANDS.md#apicreatemyaddress) to create address,
284/// - [APISetAddressSettings](./COMMANDS.md#apisetaddresssettings) to enable auto-access.
285///
286/// ----
287///
288/// Received invitation to connect directly with a group member.
289///
290/// This event only needs to be processed to associate contact with group, the connection will proceed automatically.
291#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
292#[cfg_attr(feature = "bon", derive(::bon::Builder))]
293#[cfg_attr(feature = "bon", builder(on(String, into)))]
294pub struct NewMemberContactReceivedInv {
295    #[serde(rename = "user")]
296    pub user: User,
297
298    #[serde(rename = "contact")]
299    pub contact: Contact,
300
301    #[serde(rename = "groupInfo")]
302    pub group_info: GroupInfo,
303
304    #[serde(rename = "member")]
305    pub member: GroupMember,
306
307    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
308    #[cfg_attr(feature = "bon", builder(default))]
309    pub undocumented: BTreeMap<String, JsonObject>,
310}
311
312/// ### Contact connection events
313///
314/// Bots must use these events to process connecting users.
315///
316/// Most bots enable auto-accept and don't need to accept connections via commands.
317///
318/// You may create bot SimpleX address manually via CLI or desktop app or from bot code with these commands:
319/// - [APIShowMyAddress](./COMMANDS.md#apishowmyaddress) to check if address exists,
320/// - [APICreateMyAddress](./COMMANDS.md#apicreatemyaddress) to create address,
321/// - [APISetAddressSettings](./COMMANDS.md#apisetaddresssettings) to enable auto-access.
322///
323/// ----
324///
325/// Connecting via 1-time invitation or after accepting contact request.
326///
327/// After this event bot can send messages to this contact.
328#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
329#[cfg_attr(feature = "bon", derive(::bon::Builder))]
330#[cfg_attr(feature = "bon", builder(on(String, into)))]
331pub struct ContactSndReady {
332    #[serde(rename = "user")]
333    pub user: User,
334
335    #[serde(rename = "contact")]
336    pub contact: Contact,
337
338    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
339    #[cfg_attr(feature = "bon", builder(default))]
340    pub undocumented: BTreeMap<String, JsonObject>,
341}
342
343/// ### Message events
344///
345/// Bots must use these events to process received messages.
346///
347/// ----
348///
349/// Received message(s).
350#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
351#[cfg_attr(feature = "bon", derive(::bon::Builder))]
352#[cfg_attr(feature = "bon", builder(on(String, into)))]
353pub struct NewChatItems {
354    #[serde(rename = "user")]
355    pub user: User,
356
357    #[serde(rename = "chatItems")]
358    pub chat_items: Vec<AChatItem>,
359
360    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
361    #[cfg_attr(feature = "bon", builder(default))]
362    pub undocumented: BTreeMap<String, JsonObject>,
363}
364
365/// ### Message events
366///
367/// Bots must use these events to process received messages.
368///
369/// ----
370///
371/// Received message reaction.
372#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
373#[cfg_attr(feature = "bon", derive(::bon::Builder))]
374#[cfg_attr(feature = "bon", builder(on(String, into)))]
375pub struct ChatItemReaction {
376    #[serde(rename = "user")]
377    pub user: User,
378
379    #[serde(rename = "added")]
380    pub added: bool,
381
382    #[serde(rename = "reaction")]
383    pub reaction: ACIReaction,
384
385    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
386    #[cfg_attr(feature = "bon", builder(default))]
387    pub undocumented: BTreeMap<String, JsonObject>,
388}
389
390/// ### Message events
391///
392/// Bots must use these events to process received messages.
393///
394/// ----
395///
396/// Message was deleted by another user.
397#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
398#[cfg_attr(feature = "bon", derive(::bon::Builder))]
399#[cfg_attr(feature = "bon", builder(on(String, into)))]
400pub struct ChatItemsDeleted {
401    #[serde(rename = "user")]
402    pub user: User,
403
404    #[serde(rename = "chatItemDeletions")]
405    pub chat_item_deletions: Vec<ChatItemDeletion>,
406
407    #[serde(rename = "byUser")]
408    pub by_user: bool,
409
410    #[serde(rename = "timed")]
411    pub timed: bool,
412
413    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
414    #[cfg_attr(feature = "bon", builder(default))]
415    pub undocumented: BTreeMap<String, JsonObject>,
416}
417
418/// ### Message events
419///
420/// Bots must use these events to process received messages.
421///
422/// ----
423///
424/// Message was updated by another user.
425#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
426#[cfg_attr(feature = "bon", derive(::bon::Builder))]
427#[cfg_attr(feature = "bon", builder(on(String, into)))]
428pub struct ChatItemUpdated {
429    #[serde(rename = "user")]
430    pub user: User,
431
432    #[serde(rename = "chatItem")]
433    pub chat_item: AChatItem,
434
435    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
436    #[cfg_attr(feature = "bon", builder(default))]
437    pub undocumented: BTreeMap<String, JsonObject>,
438}
439
440/// ### Message events
441///
442/// Bots must use these events to process received messages.
443///
444/// ----
445///
446/// Group messages are deleted or moderated.
447#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
448#[cfg_attr(feature = "bon", derive(::bon::Builder))]
449#[cfg_attr(feature = "bon", builder(on(String, into)))]
450pub struct GroupChatItemsDeleted {
451    #[serde(rename = "user")]
452    pub user: User,
453
454    #[serde(rename = "groupInfo")]
455    pub group_info: GroupInfo,
456
457    #[serde(rename = "chatItemIDs")]
458    pub chat_item_i_ds: Vec<i64>,
459
460    #[serde(rename = "byUser")]
461    pub by_user: bool,
462
463    #[serde(rename = "member_", skip_serializing_if = "Option::is_none")]
464    pub member: Option<GroupMember>,
465
466    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
467    #[cfg_attr(feature = "bon", builder(default))]
468    pub undocumented: BTreeMap<String, JsonObject>,
469}
470
471/// ### Message events
472///
473/// Bots must use these events to process received messages.
474///
475/// ----
476///
477/// Message delivery status updates.
478#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
479#[cfg_attr(feature = "bon", derive(::bon::Builder))]
480#[cfg_attr(feature = "bon", builder(on(String, into)))]
481pub struct ChatItemsStatusesUpdated {
482    #[serde(rename = "user")]
483    pub user: User,
484
485    #[serde(rename = "chatItems")]
486    pub chat_items: Vec<AChatItem>,
487
488    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
489    #[cfg_attr(feature = "bon", builder(default))]
490    pub undocumented: BTreeMap<String, JsonObject>,
491}
492
493/// ### Group events
494///
495/// Bots may use these events to manage users' groups and business address groups.
496///
497/// *Please note*: programming groups is more complex than programming direct connections
498///
499/// ----
500///
501/// Received group invitation.
502#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
503#[cfg_attr(feature = "bon", derive(::bon::Builder))]
504#[cfg_attr(feature = "bon", builder(on(String, into)))]
505pub struct ReceivedGroupInvitation {
506    #[serde(rename = "user")]
507    pub user: User,
508
509    #[serde(rename = "groupInfo")]
510    pub group_info: GroupInfo,
511
512    #[serde(rename = "contact")]
513    pub contact: Contact,
514
515    #[serde(rename = "fromMemberRole")]
516    pub from_member_role: GroupMemberRole,
517
518    #[serde(rename = "memberRole")]
519    pub member_role: GroupMemberRole,
520
521    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
522    #[cfg_attr(feature = "bon", builder(default))]
523    pub undocumented: BTreeMap<String, JsonObject>,
524}
525
526/// ### Group events
527///
528/// Bots may use these events to manage users' groups and business address groups.
529///
530/// *Please note*: programming groups is more complex than programming direct connections
531///
532/// ----
533///
534/// Bot user joined group. Received when connection via group link completes.
535#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
536#[cfg_attr(feature = "bon", derive(::bon::Builder))]
537#[cfg_attr(feature = "bon", builder(on(String, into)))]
538pub struct UserJoinedGroup {
539    #[serde(rename = "user")]
540    pub user: User,
541
542    #[serde(rename = "groupInfo")]
543    pub group_info: GroupInfo,
544
545    #[serde(rename = "hostMember")]
546    pub host_member: GroupMember,
547
548    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
549    #[cfg_attr(feature = "bon", builder(default))]
550    pub undocumented: BTreeMap<String, JsonObject>,
551}
552
553/// ### Group events
554///
555/// Bots may use these events to manage users' groups and business address groups.
556///
557/// *Please note*: programming groups is more complex than programming direct connections
558///
559/// ----
560///
561/// Group profile or preferences updated.
562#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
563#[cfg_attr(feature = "bon", derive(::bon::Builder))]
564#[cfg_attr(feature = "bon", builder(on(String, into)))]
565pub struct GroupUpdated {
566    #[serde(rename = "user")]
567    pub user: User,
568
569    #[serde(rename = "fromGroup")]
570    pub from_group: GroupInfo,
571
572    #[serde(rename = "toGroup")]
573    pub to_group: GroupInfo,
574
575    #[serde(rename = "member_", skip_serializing_if = "Option::is_none")]
576    pub member: Option<GroupMember>,
577
578    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
579    #[cfg_attr(feature = "bon", builder(default))]
580    pub undocumented: BTreeMap<String, JsonObject>,
581}
582
583/// ### Group events
584///
585/// Bots may use these events to manage users' groups and business address groups.
586///
587/// *Please note*: programming groups is more complex than programming direct connections
588///
589/// ----
590///
591/// Another member joined group.
592#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
593#[cfg_attr(feature = "bon", derive(::bon::Builder))]
594#[cfg_attr(feature = "bon", builder(on(String, into)))]
595pub struct JoinedGroupMember {
596    #[serde(rename = "user")]
597    pub user: User,
598
599    #[serde(rename = "groupInfo")]
600    pub group_info: GroupInfo,
601
602    #[serde(rename = "member")]
603    pub member: GroupMember,
604
605    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
606    #[cfg_attr(feature = "bon", builder(default))]
607    pub undocumented: BTreeMap<String, JsonObject>,
608}
609
610/// ### Group events
611///
612/// Bots may use these events to manage users' groups and business address groups.
613///
614/// *Please note*: programming groups is more complex than programming direct connections
615///
616/// ----
617///
618/// Member (or bot user's) group role changed.
619#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
620#[cfg_attr(feature = "bon", derive(::bon::Builder))]
621#[cfg_attr(feature = "bon", builder(on(String, into)))]
622pub struct MemberRole {
623    #[serde(rename = "user")]
624    pub user: User,
625
626    #[serde(rename = "groupInfo")]
627    pub group_info: GroupInfo,
628
629    #[serde(rename = "byMember")]
630    pub by_member: GroupMember,
631
632    #[serde(rename = "member")]
633    pub member: GroupMember,
634
635    #[serde(rename = "fromRole")]
636    pub from_role: GroupMemberRole,
637
638    #[serde(rename = "toRole")]
639    pub to_role: GroupMemberRole,
640
641    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
642    #[cfg_attr(feature = "bon", builder(default))]
643    pub undocumented: BTreeMap<String, JsonObject>,
644}
645
646/// ### Group events
647///
648/// Bots may use these events to manage users' groups and business address groups.
649///
650/// *Please note*: programming groups is more complex than programming direct connections
651///
652/// ----
653///
654/// Another member is removed from the group.
655#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
656#[cfg_attr(feature = "bon", derive(::bon::Builder))]
657#[cfg_attr(feature = "bon", builder(on(String, into)))]
658pub struct DeletedMember {
659    #[serde(rename = "user")]
660    pub user: User,
661
662    #[serde(rename = "groupInfo")]
663    pub group_info: GroupInfo,
664
665    #[serde(rename = "byMember")]
666    pub by_member: GroupMember,
667
668    #[serde(rename = "deletedMember")]
669    pub deleted_member: GroupMember,
670
671    #[serde(rename = "withMessages")]
672    pub with_messages: bool,
673
674    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
675    #[cfg_attr(feature = "bon", builder(default))]
676    pub undocumented: BTreeMap<String, JsonObject>,
677}
678
679/// ### Group events
680///
681/// Bots may use these events to manage users' groups and business address groups.
682///
683/// *Please note*: programming groups is more complex than programming direct connections
684///
685/// ----
686///
687/// Another member left the group.
688#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
689#[cfg_attr(feature = "bon", derive(::bon::Builder))]
690#[cfg_attr(feature = "bon", builder(on(String, into)))]
691pub struct LeftMember {
692    #[serde(rename = "user")]
693    pub user: User,
694
695    #[serde(rename = "groupInfo")]
696    pub group_info: GroupInfo,
697
698    #[serde(rename = "member")]
699    pub member: GroupMember,
700
701    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
702    #[cfg_attr(feature = "bon", builder(default))]
703    pub undocumented: BTreeMap<String, JsonObject>,
704}
705
706/// ### Group events
707///
708/// Bots may use these events to manage users' groups and business address groups.
709///
710/// *Please note*: programming groups is more complex than programming direct connections
711///
712/// ----
713///
714/// Bot user was removed from the group.
715#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
716#[cfg_attr(feature = "bon", derive(::bon::Builder))]
717#[cfg_attr(feature = "bon", builder(on(String, into)))]
718pub struct DeletedMemberUser {
719    #[serde(rename = "user")]
720    pub user: User,
721
722    #[serde(rename = "groupInfo")]
723    pub group_info: GroupInfo,
724
725    #[serde(rename = "member")]
726    pub member: GroupMember,
727
728    #[serde(rename = "withMessages")]
729    pub with_messages: bool,
730
731    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
732    #[cfg_attr(feature = "bon", builder(default))]
733    pub undocumented: BTreeMap<String, JsonObject>,
734}
735
736/// ### Group events
737///
738/// Bots may use these events to manage users' groups and business address groups.
739///
740/// *Please note*: programming groups is more complex than programming direct connections
741///
742/// ----
743///
744/// Group was deleted by the owner (not bot user).
745#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
746#[cfg_attr(feature = "bon", derive(::bon::Builder))]
747#[cfg_attr(feature = "bon", builder(on(String, into)))]
748pub struct GroupDeleted {
749    #[serde(rename = "user")]
750    pub user: User,
751
752    #[serde(rename = "groupInfo")]
753    pub group_info: GroupInfo,
754
755    #[serde(rename = "member")]
756    pub member: GroupMember,
757
758    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
759    #[cfg_attr(feature = "bon", builder(default))]
760    pub undocumented: BTreeMap<String, JsonObject>,
761}
762
763/// ### Group events
764///
765/// Bots may use these events to manage users' groups and business address groups.
766///
767/// *Please note*: programming groups is more complex than programming direct connections
768///
769/// ----
770///
771/// Connected to another group member.
772#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
773#[cfg_attr(feature = "bon", derive(::bon::Builder))]
774#[cfg_attr(feature = "bon", builder(on(String, into)))]
775pub struct ConnectedToGroupMember {
776    #[serde(rename = "user")]
777    pub user: User,
778
779    #[serde(rename = "groupInfo")]
780    pub group_info: GroupInfo,
781
782    #[serde(rename = "member")]
783    pub member: GroupMember,
784
785    #[serde(rename = "memberContact", skip_serializing_if = "Option::is_none")]
786    pub member_contact: Option<Contact>,
787
788    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
789    #[cfg_attr(feature = "bon", builder(default))]
790    pub undocumented: BTreeMap<String, JsonObject>,
791}
792
793/// ### Group events
794///
795/// Bots may use these events to manage users' groups and business address groups.
796///
797/// *Please note*: programming groups is more complex than programming direct connections
798///
799/// ----
800///
801/// Another group owner, admin or moderator accepted member to the group after review ("knocking").
802#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
803#[cfg_attr(feature = "bon", derive(::bon::Builder))]
804#[cfg_attr(feature = "bon", builder(on(String, into)))]
805pub struct MemberAcceptedByOther {
806    #[serde(rename = "user")]
807    pub user: User,
808
809    #[serde(rename = "groupInfo")]
810    pub group_info: GroupInfo,
811
812    #[serde(rename = "acceptingMember")]
813    pub accepting_member: GroupMember,
814
815    #[serde(rename = "member")]
816    pub member: GroupMember,
817
818    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
819    #[cfg_attr(feature = "bon", builder(default))]
820    pub undocumented: BTreeMap<String, JsonObject>,
821}
822
823/// ### Group events
824///
825/// Bots may use these events to manage users' groups and business address groups.
826///
827/// *Please note*: programming groups is more complex than programming direct connections
828///
829/// ----
830///
831/// Another member blocked for all members.
832#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
833#[cfg_attr(feature = "bon", derive(::bon::Builder))]
834#[cfg_attr(feature = "bon", builder(on(String, into)))]
835pub struct MemberBlockedForAll {
836    #[serde(rename = "user")]
837    pub user: User,
838
839    #[serde(rename = "groupInfo")]
840    pub group_info: GroupInfo,
841
842    #[serde(rename = "byMember")]
843    pub by_member: GroupMember,
844
845    #[serde(rename = "member")]
846    pub member: GroupMember,
847
848    #[serde(rename = "blocked")]
849    pub blocked: bool,
850
851    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
852    #[cfg_attr(feature = "bon", builder(default))]
853    pub undocumented: BTreeMap<String, JsonObject>,
854}
855
856/// ### Group events
857///
858/// Bots may use these events to manage users' groups and business address groups.
859///
860/// *Please note*: programming groups is more complex than programming direct connections
861///
862/// ----
863///
864/// Another group member profile updated.
865#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
866#[cfg_attr(feature = "bon", derive(::bon::Builder))]
867#[cfg_attr(feature = "bon", builder(on(String, into)))]
868pub struct GroupMemberUpdated {
869    #[serde(rename = "user")]
870    pub user: User,
871
872    #[serde(rename = "groupInfo")]
873    pub group_info: GroupInfo,
874
875    #[serde(rename = "fromMember")]
876    pub from_member: GroupMember,
877
878    #[serde(rename = "toMember")]
879    pub to_member: GroupMember,
880
881    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
882    #[cfg_attr(feature = "bon", builder(default))]
883    pub undocumented: BTreeMap<String, JsonObject>,
884}
885
886/// ### File events
887///
888/// Bots that send or receive files may process these events to track delivery status and to process completion.
889///
890/// Bots that need to receive or moderate files (e.g., based on name, size or extension), can use relevant commands (e.g., [ReceiveFile](./COMMANDS.md#receivefile) or [APIDeleteMemberChatItem](./COMMANDS.md#apideletememberchatitem)) when processing [NewChatItems](#newchatitems) event.
891///
892/// Bots that need to send files should use [APISendMessages](./COMMANDS.md#apisendmessages) command.
893///
894/// ----
895///
896/// File is ready to be received.
897///
898/// This event is useful for processing sender file servers and monitoring file reception progress.
899///
900/// [ReceiveFile](./COMMANDS.md#receivefile) command can be used before this event.
901#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
902#[cfg_attr(feature = "bon", derive(::bon::Builder))]
903#[cfg_attr(feature = "bon", builder(on(String, into)))]
904pub struct RcvFileDescrReady {
905    #[serde(rename = "user")]
906    pub user: User,
907
908    #[serde(rename = "chatItem")]
909    pub chat_item: AChatItem,
910
911    #[serde(rename = "rcvFileTransfer")]
912    pub rcv_file_transfer: RcvFileTransfer,
913
914    #[serde(rename = "rcvFileDescr")]
915    pub rcv_file_descr: RcvFileDescr,
916
917    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
918    #[cfg_attr(feature = "bon", builder(default))]
919    pub undocumented: BTreeMap<String, JsonObject>,
920}
921
922/// ### File events
923///
924/// Bots that send or receive files may process these events to track delivery status and to process completion.
925///
926/// Bots that need to receive or moderate files (e.g., based on name, size or extension), can use relevant commands (e.g., [ReceiveFile](./COMMANDS.md#receivefile) or [APIDeleteMemberChatItem](./COMMANDS.md#apideletememberchatitem)) when processing [NewChatItems](#newchatitems) event.
927///
928/// Bots that need to send files should use [APISendMessages](./COMMANDS.md#apisendmessages) command.
929///
930/// ----
931///
932/// File reception is competed.
933#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
934#[cfg_attr(feature = "bon", derive(::bon::Builder))]
935#[cfg_attr(feature = "bon", builder(on(String, into)))]
936pub struct RcvFileComplete {
937    #[serde(rename = "user")]
938    pub user: User,
939
940    #[serde(rename = "chatItem")]
941    pub chat_item: AChatItem,
942
943    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
944    #[cfg_attr(feature = "bon", builder(default))]
945    pub undocumented: BTreeMap<String, JsonObject>,
946}
947
948/// ### File events
949///
950/// Bots that send or receive files may process these events to track delivery status and to process completion.
951///
952/// Bots that need to receive or moderate files (e.g., based on name, size or extension), can use relevant commands (e.g., [ReceiveFile](./COMMANDS.md#receivefile) or [APIDeleteMemberChatItem](./COMMANDS.md#apideletememberchatitem)) when processing [NewChatItems](#newchatitems) event.
953///
954/// Bots that need to send files should use [APISendMessages](./COMMANDS.md#apisendmessages) command.
955///
956/// ----
957///
958/// File upload is competed.
959#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
960#[cfg_attr(feature = "bon", derive(::bon::Builder))]
961#[cfg_attr(feature = "bon", builder(on(String, into)))]
962pub struct SndFileCompleteXftp {
963    #[serde(rename = "user")]
964    pub user: User,
965
966    #[serde(rename = "chatItem")]
967    pub chat_item: AChatItem,
968
969    #[serde(rename = "fileTransferMeta")]
970    pub file_transfer_meta: FileTransferMeta,
971
972    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
973    #[cfg_attr(feature = "bon", builder(default))]
974    pub undocumented: BTreeMap<String, JsonObject>,
975}
976
977/// ### File events
978///
979/// Bots that send or receive files may process these events to track delivery status and to process completion.
980///
981/// Bots that need to receive or moderate files (e.g., based on name, size or extension), can use relevant commands (e.g., [ReceiveFile](./COMMANDS.md#receivefile) or [APIDeleteMemberChatItem](./COMMANDS.md#apideletememberchatitem)) when processing [NewChatItems](#newchatitems) event.
982///
983/// Bots that need to send files should use [APISendMessages](./COMMANDS.md#apisendmessages) command.
984///
985/// ----
986///
987/// File reception started. This event will be sent after [CEvtRcvFileDescrReady](#rcvfiledescrready) event.
988#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
989#[cfg_attr(feature = "bon", derive(::bon::Builder))]
990#[cfg_attr(feature = "bon", builder(on(String, into)))]
991pub struct RcvFileStart {
992    #[serde(rename = "user")]
993    pub user: User,
994
995    #[serde(rename = "chatItem")]
996    pub chat_item: AChatItem,
997
998    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
999    #[cfg_attr(feature = "bon", builder(default))]
1000    pub undocumented: BTreeMap<String, JsonObject>,
1001}
1002
1003/// ### File events
1004///
1005/// Bots that send or receive files may process these events to track delivery status and to process completion.
1006///
1007/// Bots that need to receive or moderate files (e.g., based on name, size or extension), can use relevant commands (e.g., [ReceiveFile](./COMMANDS.md#receivefile) or [APIDeleteMemberChatItem](./COMMANDS.md#apideletememberchatitem)) when processing [NewChatItems](#newchatitems) event.
1008///
1009/// Bots that need to send files should use [APISendMessages](./COMMANDS.md#apisendmessages) command.
1010///
1011/// ----
1012///
1013/// File was cancelled by the sender. This event may be sent instead of [CEvtRcvFileDescrReady](#rcvfiledescrready) event.
1014#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1015#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1016#[cfg_attr(feature = "bon", builder(on(String, into)))]
1017pub struct RcvFileSndCancelled {
1018    #[serde(rename = "user")]
1019    pub user: User,
1020
1021    #[serde(rename = "chatItem")]
1022    pub chat_item: AChatItem,
1023
1024    #[serde(rename = "rcvFileTransfer")]
1025    pub rcv_file_transfer: RcvFileTransfer,
1026
1027    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1028    #[cfg_attr(feature = "bon", builder(default))]
1029    pub undocumented: BTreeMap<String, JsonObject>,
1030}
1031
1032/// ### File events
1033///
1034/// Bots that send or receive files may process these events to track delivery status and to process completion.
1035///
1036/// Bots that need to receive or moderate files (e.g., based on name, size or extension), can use relevant commands (e.g., [ReceiveFile](./COMMANDS.md#receivefile) or [APIDeleteMemberChatItem](./COMMANDS.md#apideletememberchatitem)) when processing [NewChatItems](#newchatitems) event.
1037///
1038/// Bots that need to send files should use [APISendMessages](./COMMANDS.md#apisendmessages) command.
1039///
1040/// ----
1041///
1042/// This event will be sent when file is automatically accepted because of CLI option.
1043#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1044#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1045#[cfg_attr(feature = "bon", builder(on(String, into)))]
1046pub struct RcvFileAccepted {
1047    #[serde(rename = "user")]
1048    pub user: User,
1049
1050    #[serde(rename = "chatItem")]
1051    pub chat_item: AChatItem,
1052
1053    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1054    #[cfg_attr(feature = "bon", builder(default))]
1055    pub undocumented: BTreeMap<String, JsonObject>,
1056}
1057
1058/// ### File events
1059///
1060/// Bots that send or receive files may process these events to track delivery status and to process completion.
1061///
1062/// Bots that need to receive or moderate files (e.g., based on name, size or extension), can use relevant commands (e.g., [ReceiveFile](./COMMANDS.md#receivefile) or [APIDeleteMemberChatItem](./COMMANDS.md#apideletememberchatitem)) when processing [NewChatItems](#newchatitems) event.
1063///
1064/// Bots that need to send files should use [APISendMessages](./COMMANDS.md#apisendmessages) command.
1065///
1066/// ----
1067///
1068/// Error receiving file.
1069#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1070#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1071#[cfg_attr(feature = "bon", builder(on(String, into)))]
1072pub struct RcvFileError {
1073    #[serde(rename = "user")]
1074    pub user: User,
1075
1076    #[serde(rename = "chatItem_", skip_serializing_if = "Option::is_none")]
1077    pub chat_item: Option<AChatItem>,
1078
1079    #[serde(rename = "agentError")]
1080    pub agent_error: errors::AgentErrorType,
1081
1082    #[serde(rename = "rcvFileTransfer")]
1083    pub rcv_file_transfer: RcvFileTransfer,
1084
1085    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1086    #[cfg_attr(feature = "bon", builder(default))]
1087    pub undocumented: BTreeMap<String, JsonObject>,
1088}
1089
1090/// ### File events
1091///
1092/// Bots that send or receive files may process these events to track delivery status and to process completion.
1093///
1094/// Bots that need to receive or moderate files (e.g., based on name, size or extension), can use relevant commands (e.g., [ReceiveFile](./COMMANDS.md#receivefile) or [APIDeleteMemberChatItem](./COMMANDS.md#apideletememberchatitem)) when processing [NewChatItems](#newchatitems) event.
1095///
1096/// Bots that need to send files should use [APISendMessages](./COMMANDS.md#apisendmessages) command.
1097///
1098/// ----
1099///
1100/// Warning when receiving file. It can happen when CLI settings do not allow to connect to file server(s).
1101#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1102#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1103#[cfg_attr(feature = "bon", builder(on(String, into)))]
1104pub struct RcvFileWarning {
1105    #[serde(rename = "user")]
1106    pub user: User,
1107
1108    #[serde(rename = "chatItem_", skip_serializing_if = "Option::is_none")]
1109    pub chat_item: Option<AChatItem>,
1110
1111    #[serde(rename = "agentError")]
1112    pub agent_error: AgentErrorType,
1113
1114    #[serde(rename = "rcvFileTransfer")]
1115    pub rcv_file_transfer: RcvFileTransfer,
1116
1117    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1118    #[cfg_attr(feature = "bon", builder(default))]
1119    pub undocumented: BTreeMap<String, JsonObject>,
1120}
1121
1122/// ### File events
1123///
1124/// Bots that send or receive files may process these events to track delivery status and to process completion.
1125///
1126/// Bots that need to receive or moderate files (e.g., based on name, size or extension), can use relevant commands (e.g., [ReceiveFile](./COMMANDS.md#receivefile) or [APIDeleteMemberChatItem](./COMMANDS.md#apideletememberchatitem)) when processing [NewChatItems](#newchatitems) event.
1127///
1128/// Bots that need to send files should use [APISendMessages](./COMMANDS.md#apisendmessages) command.
1129///
1130/// ----
1131///
1132/// Error sending file.
1133#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1134#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1135#[cfg_attr(feature = "bon", builder(on(String, into)))]
1136pub struct SndFileError {
1137    #[serde(rename = "user")]
1138    pub user: User,
1139
1140    #[serde(rename = "chatItem_", skip_serializing_if = "Option::is_none")]
1141    pub chat_item: Option<AChatItem>,
1142
1143    #[serde(rename = "fileTransferMeta")]
1144    pub file_transfer_meta: FileTransferMeta,
1145
1146    #[serde(rename = "errorMessage")]
1147    pub error_message: String,
1148
1149    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1150    #[cfg_attr(feature = "bon", builder(default))]
1151    pub undocumented: BTreeMap<String, JsonObject>,
1152}
1153
1154/// ### File events
1155///
1156/// Bots that send or receive files may process these events to track delivery status and to process completion.
1157///
1158/// Bots that need to receive or moderate files (e.g., based on name, size or extension), can use relevant commands (e.g., [ReceiveFile](./COMMANDS.md#receivefile) or [APIDeleteMemberChatItem](./COMMANDS.md#apideletememberchatitem)) when processing [NewChatItems](#newchatitems) event.
1159///
1160/// Bots that need to send files should use [APISendMessages](./COMMANDS.md#apisendmessages) command.
1161///
1162/// ----
1163///
1164/// Warning when sending file.
1165#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1166#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1167#[cfg_attr(feature = "bon", builder(on(String, into)))]
1168pub struct SndFileWarning {
1169    #[serde(rename = "user")]
1170    pub user: User,
1171
1172    #[serde(rename = "chatItem_", skip_serializing_if = "Option::is_none")]
1173    pub chat_item: Option<AChatItem>,
1174
1175    #[serde(rename = "fileTransferMeta")]
1176    pub file_transfer_meta: FileTransferMeta,
1177
1178    #[serde(rename = "errorMessage")]
1179    pub error_message: String,
1180
1181    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1182    #[cfg_attr(feature = "bon", builder(default))]
1183    pub undocumented: BTreeMap<String, JsonObject>,
1184}
1185
1186/// ### Connection progress events
1187///
1188/// Bots may use these events to track progress of connections for monitoring or debugging.
1189///
1190/// ----
1191///
1192/// Automatically accepting contact request via bot's SimpleX address with auto-accept enabled.
1193#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1194#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1195#[cfg_attr(feature = "bon", builder(on(String, into)))]
1196pub struct AcceptingContactRequest {
1197    #[serde(rename = "user")]
1198    pub user: User,
1199
1200    #[serde(rename = "contact")]
1201    pub contact: Contact,
1202
1203    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1204    #[cfg_attr(feature = "bon", builder(default))]
1205    pub undocumented: BTreeMap<String, JsonObject>,
1206}
1207
1208/// ### Connection progress events
1209///
1210/// Bots may use these events to track progress of connections for monitoring or debugging.
1211///
1212/// ----
1213///
1214/// Automatically accepting contact request via bot's business address.
1215#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1216#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1217#[cfg_attr(feature = "bon", builder(on(String, into)))]
1218pub struct AcceptingBusinessRequest {
1219    #[serde(rename = "user")]
1220    pub user: User,
1221
1222    #[serde(rename = "groupInfo")]
1223    pub group_info: GroupInfo,
1224
1225    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1226    #[cfg_attr(feature = "bon", builder(default))]
1227    pub undocumented: BTreeMap<String, JsonObject>,
1228}
1229
1230/// ### Connection progress events
1231///
1232/// Bots may use these events to track progress of connections for monitoring or debugging.
1233///
1234/// ----
1235///
1236/// Contact confirmed connection.
1237///
1238/// Sent when contact started connecting via bot's 1-time invitation link or when bot connects to another SimpleX address.
1239#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1240#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1241#[cfg_attr(feature = "bon", builder(on(String, into)))]
1242pub struct ContactConnecting {
1243    #[serde(rename = "user")]
1244    pub user: User,
1245
1246    #[serde(rename = "contact")]
1247    pub contact: Contact,
1248
1249    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1250    #[cfg_attr(feature = "bon", builder(default))]
1251    pub undocumented: BTreeMap<String, JsonObject>,
1252}
1253
1254/// ### Connection progress events
1255///
1256/// Bots may use these events to track progress of connections for monitoring or debugging.
1257///
1258/// ----
1259///
1260/// Contact confirmed connection.
1261///
1262/// Sent when bot connects to another business address.
1263#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1264#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1265#[cfg_attr(feature = "bon", builder(on(String, into)))]
1266pub struct BusinessLinkConnecting {
1267    #[serde(rename = "user")]
1268    pub user: User,
1269
1270    #[serde(rename = "groupInfo")]
1271    pub group_info: GroupInfo,
1272
1273    #[serde(rename = "hostMember")]
1274    pub host_member: GroupMember,
1275
1276    #[serde(rename = "fromContact")]
1277    pub from_contact: Contact,
1278
1279    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1280    #[cfg_attr(feature = "bon", builder(default))]
1281    pub undocumented: BTreeMap<String, JsonObject>,
1282}
1283
1284/// ### Connection progress events
1285///
1286/// Bots may use these events to track progress of connections for monitoring or debugging.
1287///
1288/// ----
1289///
1290/// Group member is announced to the group and will be connecting to bot.
1291#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1292#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1293#[cfg_attr(feature = "bon", builder(on(String, into)))]
1294pub struct JoinedGroupMemberConnecting {
1295    #[serde(rename = "user")]
1296    pub user: User,
1297
1298    #[serde(rename = "groupInfo")]
1299    pub group_info: GroupInfo,
1300
1301    #[serde(rename = "hostMember")]
1302    pub host_member: GroupMember,
1303
1304    #[serde(rename = "member")]
1305    pub member: GroupMember,
1306
1307    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1308    #[cfg_attr(feature = "bon", builder(default))]
1309    pub undocumented: BTreeMap<String, JsonObject>,
1310}
1311
1312/// ### Connection progress events
1313///
1314/// Bots may use these events to track progress of connections for monitoring or debugging.
1315///
1316/// ----
1317///
1318/// Sent when another user joins group via bot's link.
1319#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1320#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1321#[cfg_attr(feature = "bon", builder(on(String, into)))]
1322pub struct SentGroupInvitation {
1323    #[serde(rename = "user")]
1324    pub user: User,
1325
1326    #[serde(rename = "groupInfo")]
1327    pub group_info: GroupInfo,
1328
1329    #[serde(rename = "contact")]
1330    pub contact: Contact,
1331
1332    #[serde(rename = "member")]
1333    pub member: GroupMember,
1334
1335    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1336    #[cfg_attr(feature = "bon", builder(default))]
1337    pub undocumented: BTreeMap<String, JsonObject>,
1338}
1339
1340/// ### Connection progress events
1341///
1342/// Bots may use these events to track progress of connections for monitoring or debugging.
1343///
1344/// ----
1345///
1346/// Sent when bot joins group via another user link.
1347#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1348#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1349#[cfg_attr(feature = "bon", builder(on(String, into)))]
1350pub struct GroupLinkConnecting {
1351    #[serde(rename = "user")]
1352    pub user: User,
1353
1354    #[serde(rename = "groupInfo")]
1355    pub group_info: GroupInfo,
1356
1357    #[serde(rename = "hostMember")]
1358    pub host_member: GroupMember,
1359
1360    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1361    #[cfg_attr(feature = "bon", builder(default))]
1362    pub undocumented: BTreeMap<String, JsonObject>,
1363}
1364
1365/// ### Error events
1366///
1367/// Bots may log these events for debugging. There will be many error events - this does NOT indicate a malfunction - e.g., they may happen because of bad network connectivity, or because messages may be delivered to deleted chats for a short period of time (they will be ignored).
1368///
1369/// ----
1370///
1371/// Message error.
1372#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1373#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1374#[cfg_attr(feature = "bon", builder(on(String, into)))]
1375pub struct MessageError {
1376    #[serde(rename = "user")]
1377    pub user: User,
1378
1379    #[serde(rename = "severity")]
1380    pub severity: String,
1381
1382    #[serde(rename = "errorMessage")]
1383    pub error_message: String,
1384
1385    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1386    #[cfg_attr(feature = "bon", builder(default))]
1387    pub undocumented: BTreeMap<String, JsonObject>,
1388}
1389
1390/// ### Error events
1391///
1392/// Bots may log these events for debugging. There will be many error events - this does NOT indicate a malfunction - e.g., they may happen because of bad network connectivity, or because messages may be delivered to deleted chats for a short period of time (they will be ignored).
1393///
1394/// ----
1395///
1396/// Chat error.
1397#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1398#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1399#[cfg_attr(feature = "bon", builder(on(String, into)))]
1400pub struct ChatError {
1401    #[serde(rename = "chatError")]
1402    pub chat_error: errors::ChatError,
1403
1404    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1405    #[cfg_attr(feature = "bon", builder(default))]
1406    pub undocumented: BTreeMap<String, JsonObject>,
1407}
1408
1409/// ### Error events
1410///
1411/// Bots may log these events for debugging. There will be many error events - this does NOT indicate a malfunction - e.g., they may happen because of bad network connectivity, or because messages may be delivered to deleted chats for a short period of time (they will be ignored).
1412///
1413/// ----
1414///
1415/// Chat errors.
1416#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1417#[cfg_attr(feature = "bon", derive(::bon::Builder))]
1418#[cfg_attr(feature = "bon", builder(on(String, into)))]
1419pub struct ChatErrors {
1420    #[serde(rename = "chatErrors")]
1421    pub chat_errors: Vec<errors::ChatError>,
1422
1423    #[serde(flatten, skip_serializing_if = "BTreeMap::is_empty")]
1424    #[cfg_attr(feature = "bon", builder(default))]
1425    pub undocumented: BTreeMap<String, JsonObject>,
1426}