xmtp_proto/gen/
xmtp.mls.database.rs

1// This file is @generated by prost-build.
2/// The data required to publish a message
3#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4pub struct SendMessageData {
5    #[prost(oneof = "send_message_data::Version", tags = "1")]
6    pub version: ::core::option::Option<send_message_data::Version>,
7}
8/// Nested message and enum types in `SendMessageData`.
9pub mod send_message_data {
10    /// V1 of SendMessagePublishData
11    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12    pub struct V1 {
13        #[prost(bytes = "vec", tag = "1")]
14        pub payload_bytes: ::prost::alloc::vec::Vec<u8>,
15    }
16    impl ::prost::Name for V1 {
17        const NAME: &'static str = "V1";
18        const PACKAGE: &'static str = "xmtp.mls.database";
19        fn full_name() -> ::prost::alloc::string::String {
20            "xmtp.mls.database.SendMessageData.V1".into()
21        }
22        fn type_url() -> ::prost::alloc::string::String {
23            "/xmtp.mls.database.SendMessageData.V1".into()
24        }
25    }
26    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
27    pub enum Version {
28        #[prost(message, tag = "1")]
29        V1(V1),
30    }
31}
32impl ::prost::Name for SendMessageData {
33    const NAME: &'static str = "SendMessageData";
34    const PACKAGE: &'static str = "xmtp.mls.database";
35    fn full_name() -> ::prost::alloc::string::String {
36        "xmtp.mls.database.SendMessageData".into()
37    }
38    fn type_url() -> ::prost::alloc::string::String {
39        "/xmtp.mls.database.SendMessageData".into()
40    }
41}
42/// Wrapper around a list af repeated EVM Account Addresses
43#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
44pub struct AccountAddresses {
45    #[prost(string, repeated, tag = "1")]
46    pub account_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
47}
48impl ::prost::Name for AccountAddresses {
49    const NAME: &'static str = "AccountAddresses";
50    const PACKAGE: &'static str = "xmtp.mls.database";
51    fn full_name() -> ::prost::alloc::string::String {
52        "xmtp.mls.database.AccountAddresses".into()
53    }
54    fn type_url() -> ::prost::alloc::string::String {
55        "/xmtp.mls.database.AccountAddresses".into()
56    }
57}
58/// Wrapper around a list of repeated Installation IDs
59#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
60pub struct InstallationIds {
61    #[prost(bytes = "vec", repeated, tag = "1")]
62    pub installation_ids: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
63}
64impl ::prost::Name for InstallationIds {
65    const NAME: &'static str = "InstallationIds";
66    const PACKAGE: &'static str = "xmtp.mls.database";
67    fn full_name() -> ::prost::alloc::string::String {
68        "xmtp.mls.database.InstallationIds".into()
69    }
70    fn type_url() -> ::prost::alloc::string::String {
71        "/xmtp.mls.database.InstallationIds".into()
72    }
73}
74/// One of an EVM account address or Installation ID
75#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
76pub struct AddressesOrInstallationIds {
77    #[prost(
78        oneof = "addresses_or_installation_ids::AddressesOrInstallationIds",
79        tags = "1, 2"
80    )]
81    pub addresses_or_installation_ids: ::core::option::Option<
82        addresses_or_installation_ids::AddressesOrInstallationIds,
83    >,
84}
85/// Nested message and enum types in `AddressesOrInstallationIds`.
86pub mod addresses_or_installation_ids {
87    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
88    pub enum AddressesOrInstallationIds {
89        #[prost(message, tag = "1")]
90        AccountAddresses(super::AccountAddresses),
91        #[prost(message, tag = "2")]
92        InstallationIds(super::InstallationIds),
93    }
94}
95impl ::prost::Name for AddressesOrInstallationIds {
96    const NAME: &'static str = "AddressesOrInstallationIds";
97    const PACKAGE: &'static str = "xmtp.mls.database";
98    fn full_name() -> ::prost::alloc::string::String {
99        "xmtp.mls.database.AddressesOrInstallationIds".into()
100    }
101    fn type_url() -> ::prost::alloc::string::String {
102        "/xmtp.mls.database.AddressesOrInstallationIds".into()
103    }
104}
105/// DEPRECATED
106/// The data required to add members to a group
107#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
108pub struct AddMembersData {
109    #[prost(oneof = "add_members_data::Version", tags = "1")]
110    pub version: ::core::option::Option<add_members_data::Version>,
111}
112/// Nested message and enum types in `AddMembersData`.
113pub mod add_members_data {
114    /// V1 of AddMembersPublishData
115    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
116    pub struct V1 {
117        #[prost(message, optional, tag = "1")]
118        pub addresses_or_installation_ids: ::core::option::Option<
119            super::AddressesOrInstallationIds,
120        >,
121    }
122    impl ::prost::Name for V1 {
123        const NAME: &'static str = "V1";
124        const PACKAGE: &'static str = "xmtp.mls.database";
125        fn full_name() -> ::prost::alloc::string::String {
126            "xmtp.mls.database.AddMembersData.V1".into()
127        }
128        fn type_url() -> ::prost::alloc::string::String {
129            "/xmtp.mls.database.AddMembersData.V1".into()
130        }
131    }
132    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
133    pub enum Version {
134        #[prost(message, tag = "1")]
135        V1(V1),
136    }
137}
138impl ::prost::Name for AddMembersData {
139    const NAME: &'static str = "AddMembersData";
140    const PACKAGE: &'static str = "xmtp.mls.database";
141    fn full_name() -> ::prost::alloc::string::String {
142        "xmtp.mls.database.AddMembersData".into()
143    }
144    fn type_url() -> ::prost::alloc::string::String {
145        "/xmtp.mls.database.AddMembersData".into()
146    }
147}
148/// DEPRECATED
149/// The data required to remove members from a group
150#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
151pub struct RemoveMembersData {
152    #[prost(oneof = "remove_members_data::Version", tags = "1")]
153    pub version: ::core::option::Option<remove_members_data::Version>,
154}
155/// Nested message and enum types in `RemoveMembersData`.
156pub mod remove_members_data {
157    /// V1 of RemoveMembersPublishData
158    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
159    pub struct V1 {
160        #[prost(message, optional, tag = "1")]
161        pub addresses_or_installation_ids: ::core::option::Option<
162            super::AddressesOrInstallationIds,
163        >,
164    }
165    impl ::prost::Name for V1 {
166        const NAME: &'static str = "V1";
167        const PACKAGE: &'static str = "xmtp.mls.database";
168        fn full_name() -> ::prost::alloc::string::String {
169            "xmtp.mls.database.RemoveMembersData.V1".into()
170        }
171        fn type_url() -> ::prost::alloc::string::String {
172            "/xmtp.mls.database.RemoveMembersData.V1".into()
173        }
174    }
175    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
176    pub enum Version {
177        #[prost(message, tag = "1")]
178        V1(V1),
179    }
180}
181impl ::prost::Name for RemoveMembersData {
182    const NAME: &'static str = "RemoveMembersData";
183    const PACKAGE: &'static str = "xmtp.mls.database";
184    fn full_name() -> ::prost::alloc::string::String {
185        "xmtp.mls.database.RemoveMembersData".into()
186    }
187    fn type_url() -> ::prost::alloc::string::String {
188        "/xmtp.mls.database.RemoveMembersData".into()
189    }
190}
191/// The data required to make a commit that updates group membership
192/// Handles both Add and Remove actions
193#[derive(Clone, PartialEq, ::prost::Message)]
194pub struct UpdateGroupMembershipData {
195    #[prost(oneof = "update_group_membership_data::Version", tags = "1")]
196    pub version: ::core::option::Option<update_group_membership_data::Version>,
197}
198/// Nested message and enum types in `UpdateGroupMembershipData`.
199pub mod update_group_membership_data {
200    /// V1 of UpdateGroupMembershipPublishData
201    #[derive(Clone, PartialEq, ::prost::Message)]
202    pub struct V1 {
203        /// Contains delta of membership updates that need to be applied
204        #[prost(map = "string, uint64", tag = "1")]
205        pub membership_updates: ::std::collections::HashMap<
206            ::prost::alloc::string::String,
207            u64,
208        >,
209        /// Contains the list of members that will be removed
210        #[prost(string, repeated, tag = "2")]
211        pub removed_members: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
212        /// List of installations that failed to be added due to errors encountered during the evaluation process.
213        #[prost(bytes = "vec", repeated, tag = "3")]
214        pub failed_installations: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
215    }
216    impl ::prost::Name for V1 {
217        const NAME: &'static str = "V1";
218        const PACKAGE: &'static str = "xmtp.mls.database";
219        fn full_name() -> ::prost::alloc::string::String {
220            "xmtp.mls.database.UpdateGroupMembershipData.V1".into()
221        }
222        fn type_url() -> ::prost::alloc::string::String {
223            "/xmtp.mls.database.UpdateGroupMembershipData.V1".into()
224        }
225    }
226    #[derive(Clone, PartialEq, ::prost::Oneof)]
227    pub enum Version {
228        #[prost(message, tag = "1")]
229        V1(V1),
230    }
231}
232impl ::prost::Name for UpdateGroupMembershipData {
233    const NAME: &'static str = "UpdateGroupMembershipData";
234    const PACKAGE: &'static str = "xmtp.mls.database";
235    fn full_name() -> ::prost::alloc::string::String {
236        "xmtp.mls.database.UpdateGroupMembershipData".into()
237    }
238    fn type_url() -> ::prost::alloc::string::String {
239        "/xmtp.mls.database.UpdateGroupMembershipData".into()
240    }
241}
242/// The data required to remove and readd existing leaf nodes
243/// on the MLS tree. Does not change or update the members list.
244/// Used for fork recovery
245#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
246pub struct ReaddInstallationsData {
247    #[prost(oneof = "readd_installations_data::Version", tags = "1")]
248    pub version: ::core::option::Option<readd_installations_data::Version>,
249}
250/// Nested message and enum types in `ReaddInstallationsData`.
251pub mod readd_installations_data {
252    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
253    pub struct V1 {
254        #[prost(bytes = "vec", repeated, tag = "1")]
255        pub readded_installations: ::prost::alloc::vec::Vec<
256            ::prost::alloc::vec::Vec<u8>,
257        >,
258    }
259    impl ::prost::Name for V1 {
260        const NAME: &'static str = "V1";
261        const PACKAGE: &'static str = "xmtp.mls.database";
262        fn full_name() -> ::prost::alloc::string::String {
263            "xmtp.mls.database.ReaddInstallationsData.V1".into()
264        }
265        fn type_url() -> ::prost::alloc::string::String {
266            "/xmtp.mls.database.ReaddInstallationsData.V1".into()
267        }
268    }
269    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
270    pub enum Version {
271        #[prost(message, tag = "1")]
272        V1(V1),
273    }
274}
275impl ::prost::Name for ReaddInstallationsData {
276    const NAME: &'static str = "ReaddInstallationsData";
277    const PACKAGE: &'static str = "xmtp.mls.database";
278    fn full_name() -> ::prost::alloc::string::String {
279        "xmtp.mls.database.ReaddInstallationsData".into()
280    }
281    fn type_url() -> ::prost::alloc::string::String {
282        "/xmtp.mls.database.ReaddInstallationsData".into()
283    }
284}
285/// The data required to update group metadata
286#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
287pub struct UpdateMetadataData {
288    #[prost(oneof = "update_metadata_data::Version", tags = "1")]
289    pub version: ::core::option::Option<update_metadata_data::Version>,
290}
291/// Nested message and enum types in `UpdateMetadataData`.
292pub mod update_metadata_data {
293    /// V1 of UpdateMetadataPublishData
294    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
295    pub struct V1 {
296        #[prost(string, tag = "1")]
297        pub field_name: ::prost::alloc::string::String,
298        #[prost(string, tag = "2")]
299        pub field_value: ::prost::alloc::string::String,
300    }
301    impl ::prost::Name for V1 {
302        const NAME: &'static str = "V1";
303        const PACKAGE: &'static str = "xmtp.mls.database";
304        fn full_name() -> ::prost::alloc::string::String {
305            "xmtp.mls.database.UpdateMetadataData.V1".into()
306        }
307        fn type_url() -> ::prost::alloc::string::String {
308            "/xmtp.mls.database.UpdateMetadataData.V1".into()
309        }
310    }
311    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
312    pub enum Version {
313        #[prost(message, tag = "1")]
314        V1(V1),
315    }
316}
317impl ::prost::Name for UpdateMetadataData {
318    const NAME: &'static str = "UpdateMetadataData";
319    const PACKAGE: &'static str = "xmtp.mls.database";
320    fn full_name() -> ::prost::alloc::string::String {
321        "xmtp.mls.database.UpdateMetadataData".into()
322    }
323    fn type_url() -> ::prost::alloc::string::String {
324        "/xmtp.mls.database.UpdateMetadataData".into()
325    }
326}
327/// The data required to update group admin/super admin lists
328#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
329pub struct UpdateAdminListsData {
330    #[prost(oneof = "update_admin_lists_data::Version", tags = "1")]
331    pub version: ::core::option::Option<update_admin_lists_data::Version>,
332}
333/// Nested message and enum types in `UpdateAdminListsData`.
334pub mod update_admin_lists_data {
335    /// V1 of UpdateAdminListsPublishData
336    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
337    pub struct V1 {
338        #[prost(enumeration = "super::AdminListUpdateType", tag = "1")]
339        pub admin_list_update_type: i32,
340        #[prost(string, tag = "2")]
341        pub inbox_id: ::prost::alloc::string::String,
342    }
343    impl ::prost::Name for V1 {
344        const NAME: &'static str = "V1";
345        const PACKAGE: &'static str = "xmtp.mls.database";
346        fn full_name() -> ::prost::alloc::string::String {
347            "xmtp.mls.database.UpdateAdminListsData.V1".into()
348        }
349        fn type_url() -> ::prost::alloc::string::String {
350            "/xmtp.mls.database.UpdateAdminListsData.V1".into()
351        }
352    }
353    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
354    pub enum Version {
355        #[prost(message, tag = "1")]
356        V1(V1),
357    }
358}
359impl ::prost::Name for UpdateAdminListsData {
360    const NAME: &'static str = "UpdateAdminListsData";
361    const PACKAGE: &'static str = "xmtp.mls.database";
362    fn full_name() -> ::prost::alloc::string::String {
363        "xmtp.mls.database.UpdateAdminListsData".into()
364    }
365    fn type_url() -> ::prost::alloc::string::String {
366        "/xmtp.mls.database.UpdateAdminListsData".into()
367    }
368}
369/// The data required to update permissions
370#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
371pub struct UpdatePermissionData {
372    #[prost(oneof = "update_permission_data::Version", tags = "1")]
373    pub version: ::core::option::Option<update_permission_data::Version>,
374}
375/// Nested message and enum types in `UpdatePermissionData`.
376pub mod update_permission_data {
377    /// V1 of UpdatePermissionData
378    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
379    pub struct V1 {
380        #[prost(enumeration = "super::PermissionUpdateType", tag = "1")]
381        pub permission_update_type: i32,
382        #[prost(enumeration = "super::PermissionPolicyOption", tag = "2")]
383        pub permission_policy_option: i32,
384        /// Metadata permissions update specify which field permission they are updating
385        #[prost(string, optional, tag = "3")]
386        pub metadata_field_name: ::core::option::Option<::prost::alloc::string::String>,
387    }
388    impl ::prost::Name for V1 {
389        const NAME: &'static str = "V1";
390        const PACKAGE: &'static str = "xmtp.mls.database";
391        fn full_name() -> ::prost::alloc::string::String {
392            "xmtp.mls.database.UpdatePermissionData.V1".into()
393        }
394        fn type_url() -> ::prost::alloc::string::String {
395            "/xmtp.mls.database.UpdatePermissionData.V1".into()
396        }
397    }
398    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
399    pub enum Version {
400        #[prost(message, tag = "1")]
401        V1(V1),
402    }
403}
404impl ::prost::Name for UpdatePermissionData {
405    const NAME: &'static str = "UpdatePermissionData";
406    const PACKAGE: &'static str = "xmtp.mls.database";
407    fn full_name() -> ::prost::alloc::string::String {
408        "xmtp.mls.database.UpdatePermissionData".into()
409    }
410    fn type_url() -> ::prost::alloc::string::String {
411        "/xmtp.mls.database.UpdatePermissionData".into()
412    }
413}
414/// Generic data-type for all post-commit actions
415#[derive(Clone, PartialEq, ::prost::Message)]
416pub struct PostCommitAction {
417    #[prost(oneof = "post_commit_action::Kind", tags = "1")]
418    pub kind: ::core::option::Option<post_commit_action::Kind>,
419}
420/// Nested message and enum types in `PostCommitAction`.
421pub mod post_commit_action {
422    /// An installation
423    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
424    pub struct Installation {
425        #[prost(bytes = "vec", tag = "1")]
426        pub installation_key: ::prost::alloc::vec::Vec<u8>,
427        #[prost(bytes = "vec", tag = "2")]
428        pub hpke_public_key: ::prost::alloc::vec::Vec<u8>,
429        #[prost(
430            enumeration = "super::super::message_contents::WelcomeWrapperAlgorithm",
431            tag = "3"
432        )]
433        pub welcome_wrapper_algorithm: i32,
434        #[prost(message, optional, tag = "4")]
435        pub welcome_pointee_encryption_aead_types: ::core::option::Option<
436            super::super::message_contents::WelcomePointeeEncryptionAeadTypesExtension,
437        >,
438    }
439    impl ::prost::Name for Installation {
440        const NAME: &'static str = "Installation";
441        const PACKAGE: &'static str = "xmtp.mls.database";
442        fn full_name() -> ::prost::alloc::string::String {
443            "xmtp.mls.database.PostCommitAction.Installation".into()
444        }
445        fn type_url() -> ::prost::alloc::string::String {
446            "/xmtp.mls.database.PostCommitAction.Installation".into()
447        }
448    }
449    /// SendWelcome message
450    #[derive(Clone, PartialEq, ::prost::Message)]
451    pub struct SendWelcomes {
452        #[prost(message, repeated, tag = "1")]
453        pub installations: ::prost::alloc::vec::Vec<Installation>,
454        #[prost(bytes = "vec", tag = "2")]
455        pub welcome_message: ::prost::alloc::vec::Vec<u8>,
456    }
457    impl ::prost::Name for SendWelcomes {
458        const NAME: &'static str = "SendWelcomes";
459        const PACKAGE: &'static str = "xmtp.mls.database";
460        fn full_name() -> ::prost::alloc::string::String {
461            "xmtp.mls.database.PostCommitAction.SendWelcomes".into()
462        }
463        fn type_url() -> ::prost::alloc::string::String {
464            "/xmtp.mls.database.PostCommitAction.SendWelcomes".into()
465        }
466    }
467    #[derive(Clone, PartialEq, ::prost::Oneof)]
468    pub enum Kind {
469        #[prost(message, tag = "1")]
470        SendWelcomes(SendWelcomes),
471    }
472}
473impl ::prost::Name for PostCommitAction {
474    const NAME: &'static str = "PostCommitAction";
475    const PACKAGE: &'static str = "xmtp.mls.database";
476    fn full_name() -> ::prost::alloc::string::String {
477        "xmtp.mls.database.PostCommitAction".into()
478    }
479    fn type_url() -> ::prost::alloc::string::String {
480        "/xmtp.mls.database.PostCommitAction".into()
481    }
482}
483/// Type of update to admin lists
484#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
485#[repr(i32)]
486pub enum AdminListUpdateType {
487    Unspecified = 0,
488    AddAdmin = 1,
489    RemoveAdmin = 2,
490    AddSuperAdmin = 3,
491    RemoveSuperAdmin = 4,
492}
493impl AdminListUpdateType {
494    /// String value of the enum field names used in the ProtoBuf definition.
495    ///
496    /// The values are not transformed in any way and thus are considered stable
497    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
498    pub fn as_str_name(&self) -> &'static str {
499        match self {
500            Self::Unspecified => "ADMIN_LIST_UPDATE_TYPE_UNSPECIFIED",
501            Self::AddAdmin => "ADMIN_LIST_UPDATE_TYPE_ADD_ADMIN",
502            Self::RemoveAdmin => "ADMIN_LIST_UPDATE_TYPE_REMOVE_ADMIN",
503            Self::AddSuperAdmin => "ADMIN_LIST_UPDATE_TYPE_ADD_SUPER_ADMIN",
504            Self::RemoveSuperAdmin => "ADMIN_LIST_UPDATE_TYPE_REMOVE_SUPER_ADMIN",
505        }
506    }
507    /// Creates an enum from field names used in the ProtoBuf definition.
508    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
509        match value {
510            "ADMIN_LIST_UPDATE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
511            "ADMIN_LIST_UPDATE_TYPE_ADD_ADMIN" => Some(Self::AddAdmin),
512            "ADMIN_LIST_UPDATE_TYPE_REMOVE_ADMIN" => Some(Self::RemoveAdmin),
513            "ADMIN_LIST_UPDATE_TYPE_ADD_SUPER_ADMIN" => Some(Self::AddSuperAdmin),
514            "ADMIN_LIST_UPDATE_TYPE_REMOVE_SUPER_ADMIN" => Some(Self::RemoveSuperAdmin),
515            _ => None,
516        }
517    }
518}
519/// Type of Permission to Update
520#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
521#[repr(i32)]
522pub enum PermissionUpdateType {
523    Unspecified = 0,
524    AddMember = 1,
525    RemoveMember = 2,
526    AddAdmin = 3,
527    RemoveAdmin = 4,
528    UpdateMetadata = 5,
529}
530impl PermissionUpdateType {
531    /// String value of the enum field names used in the ProtoBuf definition.
532    ///
533    /// The values are not transformed in any way and thus are considered stable
534    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
535    pub fn as_str_name(&self) -> &'static str {
536        match self {
537            Self::Unspecified => "PERMISSION_UPDATE_TYPE_UNSPECIFIED",
538            Self::AddMember => "PERMISSION_UPDATE_TYPE_ADD_MEMBER",
539            Self::RemoveMember => "PERMISSION_UPDATE_TYPE_REMOVE_MEMBER",
540            Self::AddAdmin => "PERMISSION_UPDATE_TYPE_ADD_ADMIN",
541            Self::RemoveAdmin => "PERMISSION_UPDATE_TYPE_REMOVE_ADMIN",
542            Self::UpdateMetadata => "PERMISSION_UPDATE_TYPE_UPDATE_METADATA",
543        }
544    }
545    /// Creates an enum from field names used in the ProtoBuf definition.
546    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
547        match value {
548            "PERMISSION_UPDATE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
549            "PERMISSION_UPDATE_TYPE_ADD_MEMBER" => Some(Self::AddMember),
550            "PERMISSION_UPDATE_TYPE_REMOVE_MEMBER" => Some(Self::RemoveMember),
551            "PERMISSION_UPDATE_TYPE_ADD_ADMIN" => Some(Self::AddAdmin),
552            "PERMISSION_UPDATE_TYPE_REMOVE_ADMIN" => Some(Self::RemoveAdmin),
553            "PERMISSION_UPDATE_TYPE_UPDATE_METADATA" => Some(Self::UpdateMetadata),
554            _ => None,
555        }
556    }
557}
558/// Permission Policy
559#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
560#[repr(i32)]
561pub enum PermissionPolicyOption {
562    Unspecified = 0,
563    Allow = 1,
564    Deny = 2,
565    AdminOnly = 3,
566    SuperAdminOnly = 4,
567}
568impl PermissionPolicyOption {
569    /// String value of the enum field names used in the ProtoBuf definition.
570    ///
571    /// The values are not transformed in any way and thus are considered stable
572    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
573    pub fn as_str_name(&self) -> &'static str {
574        match self {
575            Self::Unspecified => "PERMISSION_POLICY_OPTION_UNSPECIFIED",
576            Self::Allow => "PERMISSION_POLICY_OPTION_ALLOW",
577            Self::Deny => "PERMISSION_POLICY_OPTION_DENY",
578            Self::AdminOnly => "PERMISSION_POLICY_OPTION_ADMIN_ONLY",
579            Self::SuperAdminOnly => "PERMISSION_POLICY_OPTION_SUPER_ADMIN_ONLY",
580        }
581    }
582    /// Creates an enum from field names used in the ProtoBuf definition.
583    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
584        match value {
585            "PERMISSION_POLICY_OPTION_UNSPECIFIED" => Some(Self::Unspecified),
586            "PERMISSION_POLICY_OPTION_ALLOW" => Some(Self::Allow),
587            "PERMISSION_POLICY_OPTION_DENY" => Some(Self::Deny),
588            "PERMISSION_POLICY_OPTION_ADMIN_ONLY" => Some(Self::AdminOnly),
589            "PERMISSION_POLICY_OPTION_SUPER_ADMIN_ONLY" => Some(Self::SuperAdminOnly),
590            _ => None,
591        }
592    }
593}
594#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
595pub struct Task {
596    #[prost(oneof = "task::Task", tags = "1, 2")]
597    pub task: ::core::option::Option<task::Task>,
598}
599/// Nested message and enum types in `Task`.
600pub mod task {
601    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
602    pub enum Task {
603        #[prost(message, tag = "1")]
604        ProcessWelcomePointer(super::super::message_contents::WelcomePointer),
605        #[prost(message, tag = "2")]
606        SendSyncArchive(super::SendSyncArchive),
607    }
608}
609impl ::prost::Name for Task {
610    const NAME: &'static str = "Task";
611    const PACKAGE: &'static str = "xmtp.mls.database";
612    fn full_name() -> ::prost::alloc::string::String {
613        "xmtp.mls.database.Task".into()
614    }
615    fn type_url() -> ::prost::alloc::string::String {
616        "/xmtp.mls.database.Task".into()
617    }
618}
619#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
620pub struct SendSyncArchive {
621    #[prost(message, optional, tag = "1")]
622    pub options: ::core::option::Option<super::super::device_sync::BackupOptions>,
623    #[prost(bytes = "vec", tag = "2")]
624    pub sync_group_id: ::prost::alloc::vec::Vec<u8>,
625    #[prost(string, optional, tag = "3")]
626    pub request_id: ::core::option::Option<::prost::alloc::string::String>,
627    #[prost(string, tag = "4")]
628    pub server_url: ::prost::alloc::string::String,
629}
630impl ::prost::Name for SendSyncArchive {
631    const NAME: &'static str = "SendSyncArchive";
632    const PACKAGE: &'static str = "xmtp.mls.database";
633    fn full_name() -> ::prost::alloc::string::String {
634        "xmtp.mls.database.SendSyncArchive".into()
635    }
636    fn type_url() -> ::prost::alloc::string::String {
637        "/xmtp.mls.database.SendSyncArchive".into()
638    }
639}