Skip to main content

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 AppData write intent — local-only serialization for the
415/// `group_intents` table. Replaces the proliferation of per-component
416/// IntentKind/IntentData pairs with a single shape that carries the
417/// target component_id and the same payload bytes that will be written
418/// to the on-wire `AppDataUpdate` proposal. Interpretation of `payload`
419/// is determined by the target component's `ComponentType` in the
420/// registry:
421///
422/// * `Bytes` / `String` typed components — payload is the new value
423///   written verbatim (last-writer-wins).
424/// * `TlsMap` typed components — payload is a TLS-encoded
425///   `TlsMapDelta<K, V>` carrying `Insert` / `Update` / `Delete`
426///   mutations. Apply semantics on the receive side are total
427///   (Insert is no-op-if-present, Update is upsert, Delete is
428///   idempotent); the strict variants of the in-process TlsMap API
429///   are not exposed on the wire. No "conflict" failure path.
430/// * `TlsSet` typed components — payload is a TLS-encoded
431///   `TlsSetDelta<E>` (`Add` is no-op-if-present, `Remove` is
432///   idempotent).
433///
434/// Never appears on the MLS wire; lives only in the local intents
435/// table.
436#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
437pub struct AppDataUpdateData {
438    /// Versioned envelope. New variants are added as new oneof entries;
439    /// readers that don't recognize a variant fail closed.
440    #[prost(oneof = "app_data_update_data::Version", tags = "1")]
441    pub version: ::core::option::Option<app_data_update_data::Version>,
442}
443/// Nested message and enum types in `AppDataUpdateData`.
444pub mod app_data_update_data {
445    /// v1 payload shape.
446    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
447    pub struct V1 {
448        /// u16 component_id widened to u32 (proto has no u16). The
449        /// dispatcher narrows back to u16 at decode time.
450        #[prost(uint32, tag = "1")]
451        pub component_id: u32,
452        /// The bytes that will be written verbatim as the on-wire
453        /// AppDataUpdate proposal payload. Interpretation determined by
454        /// the component's registered ComponentType (see message-level
455        /// comment above).
456        #[prost(bytes = "vec", tag = "2")]
457        pub payload: ::prost::alloc::vec::Vec<u8>,
458    }
459    impl ::prost::Name for V1 {
460        const NAME: &'static str = "V1";
461        const PACKAGE: &'static str = "xmtp.mls.database";
462        fn full_name() -> ::prost::alloc::string::String {
463            "xmtp.mls.database.AppDataUpdateData.V1".into()
464        }
465        fn type_url() -> ::prost::alloc::string::String {
466            "/xmtp.mls.database.AppDataUpdateData.V1".into()
467        }
468    }
469    /// Versioned envelope. New variants are added as new oneof entries;
470    /// readers that don't recognize a variant fail closed.
471    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
472    pub enum Version {
473        #[prost(message, tag = "1")]
474        V1(V1),
475    }
476}
477impl ::prost::Name for AppDataUpdateData {
478    const NAME: &'static str = "AppDataUpdateData";
479    const PACKAGE: &'static str = "xmtp.mls.database";
480    fn full_name() -> ::prost::alloc::string::String {
481        "xmtp.mls.database.AppDataUpdateData".into()
482    }
483    fn type_url() -> ::prost::alloc::string::String {
484        "/xmtp.mls.database.AppDataUpdateData".into()
485    }
486}
487/// Generic data-type for all post-commit actions
488#[derive(Clone, PartialEq, ::prost::Message)]
489pub struct PostCommitAction {
490    #[prost(oneof = "post_commit_action::Kind", tags = "1")]
491    pub kind: ::core::option::Option<post_commit_action::Kind>,
492}
493/// Nested message and enum types in `PostCommitAction`.
494pub mod post_commit_action {
495    /// An installation
496    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
497    pub struct Installation {
498        #[prost(bytes = "vec", tag = "1")]
499        pub installation_key: ::prost::alloc::vec::Vec<u8>,
500        #[prost(bytes = "vec", tag = "2")]
501        pub hpke_public_key: ::prost::alloc::vec::Vec<u8>,
502        #[prost(
503            enumeration = "super::super::message_contents::WelcomeWrapperAlgorithm",
504            tag = "3"
505        )]
506        pub welcome_wrapper_algorithm: i32,
507        #[prost(message, optional, tag = "4")]
508        pub welcome_pointee_encryption_aead_types: ::core::option::Option<
509            super::super::message_contents::WelcomePointeeEncryptionAeadTypesExtension,
510        >,
511    }
512    impl ::prost::Name for Installation {
513        const NAME: &'static str = "Installation";
514        const PACKAGE: &'static str = "xmtp.mls.database";
515        fn full_name() -> ::prost::alloc::string::String {
516            "xmtp.mls.database.PostCommitAction.Installation".into()
517        }
518        fn type_url() -> ::prost::alloc::string::String {
519            "/xmtp.mls.database.PostCommitAction.Installation".into()
520        }
521    }
522    /// SendWelcome message
523    #[derive(Clone, PartialEq, ::prost::Message)]
524    pub struct SendWelcomes {
525        #[prost(message, repeated, tag = "1")]
526        pub installations: ::prost::alloc::vec::Vec<Installation>,
527        #[prost(bytes = "vec", tag = "2")]
528        pub welcome_message: ::prost::alloc::vec::Vec<u8>,
529    }
530    impl ::prost::Name for SendWelcomes {
531        const NAME: &'static str = "SendWelcomes";
532        const PACKAGE: &'static str = "xmtp.mls.database";
533        fn full_name() -> ::prost::alloc::string::String {
534            "xmtp.mls.database.PostCommitAction.SendWelcomes".into()
535        }
536        fn type_url() -> ::prost::alloc::string::String {
537            "/xmtp.mls.database.PostCommitAction.SendWelcomes".into()
538        }
539    }
540    #[derive(Clone, PartialEq, ::prost::Oneof)]
541    pub enum Kind {
542        #[prost(message, tag = "1")]
543        SendWelcomes(SendWelcomes),
544    }
545}
546impl ::prost::Name for PostCommitAction {
547    const NAME: &'static str = "PostCommitAction";
548    const PACKAGE: &'static str = "xmtp.mls.database";
549    fn full_name() -> ::prost::alloc::string::String {
550        "xmtp.mls.database.PostCommitAction".into()
551    }
552    fn type_url() -> ::prost::alloc::string::String {
553        "/xmtp.mls.database.PostCommitAction".into()
554    }
555}
556#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
557pub struct ProposeMemberUpdateData {
558    #[prost(oneof = "propose_member_update_data::Version", tags = "1")]
559    pub version: ::core::option::Option<propose_member_update_data::Version>,
560}
561/// Nested message and enum types in `ProposeMemberUpdateData`.
562pub mod propose_member_update_data {
563    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
564    pub struct V1 {
565        /// Not hex encoded
566        #[prost(bytes = "vec", repeated, tag = "1")]
567        pub add_inbox_ids: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
568        #[prost(bytes = "vec", repeated, tag = "2")]
569        pub remove_inbox_ids: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
570    }
571    impl ::prost::Name for V1 {
572        const NAME: &'static str = "V1";
573        const PACKAGE: &'static str = "xmtp.mls.database";
574        fn full_name() -> ::prost::alloc::string::String {
575            "xmtp.mls.database.ProposeMemberUpdateData.V1".into()
576        }
577        fn type_url() -> ::prost::alloc::string::String {
578            "/xmtp.mls.database.ProposeMemberUpdateData.V1".into()
579        }
580    }
581    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
582    pub enum Version {
583        #[prost(message, tag = "1")]
584        V1(V1),
585    }
586}
587impl ::prost::Name for ProposeMemberUpdateData {
588    const NAME: &'static str = "ProposeMemberUpdateData";
589    const PACKAGE: &'static str = "xmtp.mls.database";
590    fn full_name() -> ::prost::alloc::string::String {
591        "xmtp.mls.database.ProposeMemberUpdateData".into()
592    }
593    fn type_url() -> ::prost::alloc::string::String {
594        "/xmtp.mls.database.ProposeMemberUpdateData".into()
595    }
596}
597#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
598pub struct ProposeGroupContextExtensionData {
599    #[prost(oneof = "propose_group_context_extension_data::Version", tags = "1")]
600    pub version: ::core::option::Option<propose_group_context_extension_data::Version>,
601}
602/// Nested message and enum types in `ProposeGroupContextExtensionData`.
603pub mod propose_group_context_extension_data {
604    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
605    pub struct V1 {
606        #[prost(bytes = "vec", tag = "1")]
607        pub group_context_extension: ::prost::alloc::vec::Vec<u8>,
608    }
609    impl ::prost::Name for V1 {
610        const NAME: &'static str = "V1";
611        const PACKAGE: &'static str = "xmtp.mls.database";
612        fn full_name() -> ::prost::alloc::string::String {
613            "xmtp.mls.database.ProposeGroupContextExtensionData.V1".into()
614        }
615        fn type_url() -> ::prost::alloc::string::String {
616            "/xmtp.mls.database.ProposeGroupContextExtensionData.V1".into()
617        }
618    }
619    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
620    pub enum Version {
621        #[prost(message, tag = "1")]
622        V1(V1),
623    }
624}
625impl ::prost::Name for ProposeGroupContextExtensionData {
626    const NAME: &'static str = "ProposeGroupContextExtensionData";
627    const PACKAGE: &'static str = "xmtp.mls.database";
628    fn full_name() -> ::prost::alloc::string::String {
629        "xmtp.mls.database.ProposeGroupContextExtensionData".into()
630    }
631    fn type_url() -> ::prost::alloc::string::String {
632        "/xmtp.mls.database.ProposeGroupContextExtensionData".into()
633    }
634}
635#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
636pub struct CommitPendingProposalsData {
637    #[prost(oneof = "commit_pending_proposals_data::Version", tags = "1")]
638    pub version: ::core::option::Option<commit_pending_proposals_data::Version>,
639}
640/// Nested message and enum types in `CommitPendingProposalsData`.
641pub mod commit_pending_proposals_data {
642    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
643    pub struct V1 {
644        #[prost(bytes = "vec", repeated, tag = "1")]
645        pub proposal_hashes: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
646    }
647    impl ::prost::Name for V1 {
648        const NAME: &'static str = "V1";
649        const PACKAGE: &'static str = "xmtp.mls.database";
650        fn full_name() -> ::prost::alloc::string::String {
651            "xmtp.mls.database.CommitPendingProposalsData.V1".into()
652        }
653        fn type_url() -> ::prost::alloc::string::String {
654            "/xmtp.mls.database.CommitPendingProposalsData.V1".into()
655        }
656    }
657    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
658    pub enum Version {
659        #[prost(message, tag = "1")]
660        V1(V1),
661    }
662}
663impl ::prost::Name for CommitPendingProposalsData {
664    const NAME: &'static str = "CommitPendingProposalsData";
665    const PACKAGE: &'static str = "xmtp.mls.database";
666    fn full_name() -> ::prost::alloc::string::String {
667        "xmtp.mls.database.CommitPendingProposalsData".into()
668    }
669    fn type_url() -> ::prost::alloc::string::String {
670        "/xmtp.mls.database.CommitPendingProposalsData".into()
671    }
672}
673/// Type of update to admin lists
674#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
675#[repr(i32)]
676pub enum AdminListUpdateType {
677    Unspecified = 0,
678    AddAdmin = 1,
679    RemoveAdmin = 2,
680    AddSuperAdmin = 3,
681    RemoveSuperAdmin = 4,
682}
683impl AdminListUpdateType {
684    /// String value of the enum field names used in the ProtoBuf definition.
685    ///
686    /// The values are not transformed in any way and thus are considered stable
687    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
688    pub fn as_str_name(&self) -> &'static str {
689        match self {
690            Self::Unspecified => "ADMIN_LIST_UPDATE_TYPE_UNSPECIFIED",
691            Self::AddAdmin => "ADMIN_LIST_UPDATE_TYPE_ADD_ADMIN",
692            Self::RemoveAdmin => "ADMIN_LIST_UPDATE_TYPE_REMOVE_ADMIN",
693            Self::AddSuperAdmin => "ADMIN_LIST_UPDATE_TYPE_ADD_SUPER_ADMIN",
694            Self::RemoveSuperAdmin => "ADMIN_LIST_UPDATE_TYPE_REMOVE_SUPER_ADMIN",
695        }
696    }
697    /// Creates an enum from field names used in the ProtoBuf definition.
698    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
699        match value {
700            "ADMIN_LIST_UPDATE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
701            "ADMIN_LIST_UPDATE_TYPE_ADD_ADMIN" => Some(Self::AddAdmin),
702            "ADMIN_LIST_UPDATE_TYPE_REMOVE_ADMIN" => Some(Self::RemoveAdmin),
703            "ADMIN_LIST_UPDATE_TYPE_ADD_SUPER_ADMIN" => Some(Self::AddSuperAdmin),
704            "ADMIN_LIST_UPDATE_TYPE_REMOVE_SUPER_ADMIN" => Some(Self::RemoveSuperAdmin),
705            _ => None,
706        }
707    }
708}
709/// Type of Permission to Update
710#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
711#[repr(i32)]
712pub enum PermissionUpdateType {
713    Unspecified = 0,
714    AddMember = 1,
715    RemoveMember = 2,
716    AddAdmin = 3,
717    RemoveAdmin = 4,
718    UpdateMetadata = 5,
719}
720impl PermissionUpdateType {
721    /// String value of the enum field names used in the ProtoBuf definition.
722    ///
723    /// The values are not transformed in any way and thus are considered stable
724    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
725    pub fn as_str_name(&self) -> &'static str {
726        match self {
727            Self::Unspecified => "PERMISSION_UPDATE_TYPE_UNSPECIFIED",
728            Self::AddMember => "PERMISSION_UPDATE_TYPE_ADD_MEMBER",
729            Self::RemoveMember => "PERMISSION_UPDATE_TYPE_REMOVE_MEMBER",
730            Self::AddAdmin => "PERMISSION_UPDATE_TYPE_ADD_ADMIN",
731            Self::RemoveAdmin => "PERMISSION_UPDATE_TYPE_REMOVE_ADMIN",
732            Self::UpdateMetadata => "PERMISSION_UPDATE_TYPE_UPDATE_METADATA",
733        }
734    }
735    /// Creates an enum from field names used in the ProtoBuf definition.
736    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
737        match value {
738            "PERMISSION_UPDATE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
739            "PERMISSION_UPDATE_TYPE_ADD_MEMBER" => Some(Self::AddMember),
740            "PERMISSION_UPDATE_TYPE_REMOVE_MEMBER" => Some(Self::RemoveMember),
741            "PERMISSION_UPDATE_TYPE_ADD_ADMIN" => Some(Self::AddAdmin),
742            "PERMISSION_UPDATE_TYPE_REMOVE_ADMIN" => Some(Self::RemoveAdmin),
743            "PERMISSION_UPDATE_TYPE_UPDATE_METADATA" => Some(Self::UpdateMetadata),
744            _ => None,
745        }
746    }
747}
748/// Permission Policy
749#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
750#[repr(i32)]
751pub enum PermissionPolicyOption {
752    Unspecified = 0,
753    Allow = 1,
754    Deny = 2,
755    AdminOnly = 3,
756    SuperAdminOnly = 4,
757}
758impl PermissionPolicyOption {
759    /// String value of the enum field names used in the ProtoBuf definition.
760    ///
761    /// The values are not transformed in any way and thus are considered stable
762    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
763    pub fn as_str_name(&self) -> &'static str {
764        match self {
765            Self::Unspecified => "PERMISSION_POLICY_OPTION_UNSPECIFIED",
766            Self::Allow => "PERMISSION_POLICY_OPTION_ALLOW",
767            Self::Deny => "PERMISSION_POLICY_OPTION_DENY",
768            Self::AdminOnly => "PERMISSION_POLICY_OPTION_ADMIN_ONLY",
769            Self::SuperAdminOnly => "PERMISSION_POLICY_OPTION_SUPER_ADMIN_ONLY",
770        }
771    }
772    /// Creates an enum from field names used in the ProtoBuf definition.
773    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
774        match value {
775            "PERMISSION_POLICY_OPTION_UNSPECIFIED" => Some(Self::Unspecified),
776            "PERMISSION_POLICY_OPTION_ALLOW" => Some(Self::Allow),
777            "PERMISSION_POLICY_OPTION_DENY" => Some(Self::Deny),
778            "PERMISSION_POLICY_OPTION_ADMIN_ONLY" => Some(Self::AdminOnly),
779            "PERMISSION_POLICY_OPTION_SUPER_ADMIN_ONLY" => Some(Self::SuperAdminOnly),
780            _ => None,
781        }
782    }
783}
784#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
785pub struct Task {
786    #[prost(oneof = "task::Task", tags = "1, 2, 3, 4, 5, 6")]
787    pub task: ::core::option::Option<task::Task>,
788}
789/// Nested message and enum types in `Task`.
790pub mod task {
791    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
792    pub enum Task {
793        #[prost(message, tag = "1")]
794        ProcessWelcomePointer(super::super::message_contents::WelcomePointer),
795        #[prost(message, tag = "2")]
796        SendSyncArchive(super::SendSyncArchive),
797        #[prost(message, tag = "3")]
798        ProcessPendingSelfRemove(super::ProcessPendingSelfRemove),
799        #[prost(message, tag = "4")]
800        PullInDeadline(super::PullInDeadline),
801        #[prost(message, tag = "5")]
802        KpRotation(super::KpRotation),
803        #[prost(message, tag = "6")]
804        KpDeletion(super::KpDeletion),
805    }
806}
807impl ::prost::Name for Task {
808    const NAME: &'static str = "Task";
809    const PACKAGE: &'static str = "xmtp.mls.database";
810    fn full_name() -> ::prost::alloc::string::String {
811        "xmtp.mls.database.Task".into()
812    }
813    fn type_url() -> ::prost::alloc::string::String {
814        "/xmtp.mls.database.Task".into()
815    }
816}
817/// Lower a target task's next-attempt deadline so it runs sooner. One-shot:
818/// applied by the TaskWorker, then deleted.
819#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
820pub struct PullInDeadline {
821    /// The UNIQUE data_hash identifying the target task row.
822    #[prost(bytes = "vec", tag = "1")]
823    pub target_data_hash: ::prost::alloc::vec::Vec<u8>,
824    /// Target's next_attempt_at_ns is set to MIN(current, this).
825    #[prost(int64, tag = "2")]
826    pub not_later_than_ns: i64,
827}
828impl ::prost::Name for PullInDeadline {
829    const NAME: &'static str = "PullInDeadline";
830    const PACKAGE: &'static str = "xmtp.mls.database";
831    fn full_name() -> ::prost::alloc::string::String {
832        "xmtp.mls.database.PullInDeadline".into()
833    }
834    fn type_url() -> ::prost::alloc::string::String {
835        "/xmtp.mls.database.PullInDeadline".into()
836    }
837}
838/// Recurring singleton: rotate + upload a fresh key package when the identity's
839/// rotation deadline is due. Empty payload => stable data_hash for pull-ins.
840#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
841pub struct KpRotation {}
842impl ::prost::Name for KpRotation {
843    const NAME: &'static str = "KpRotation";
844    const PACKAGE: &'static str = "xmtp.mls.database";
845    fn full_name() -> ::prost::alloc::string::String {
846        "xmtp.mls.database.KpRotation".into()
847    }
848    fn type_url() -> ::prost::alloc::string::String {
849        "/xmtp.mls.database.KpRotation".into()
850    }
851}
852/// Recurring singleton: delete superseded local key-package material whose
853/// delete_at_ns has passed. Empty payload => stable data_hash for pull-ins.
854#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
855pub struct KpDeletion {}
856impl ::prost::Name for KpDeletion {
857    const NAME: &'static str = "KpDeletion";
858    const PACKAGE: &'static str = "xmtp.mls.database";
859    fn full_name() -> ::prost::alloc::string::String {
860        "xmtp.mls.database.KpDeletion".into()
861    }
862    fn type_url() -> ::prost::alloc::string::String {
863        "/xmtp.mls.database.KpDeletion".into()
864    }
865}
866#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
867pub struct SendSyncArchive {
868    #[prost(message, optional, tag = "1")]
869    pub options: ::core::option::Option<super::super::device_sync::ArchiveOptions>,
870    #[prost(bytes = "vec", tag = "2")]
871    pub sync_group_id: ::prost::alloc::vec::Vec<u8>,
872    #[prost(string, optional, tag = "3")]
873    pub pin: ::core::option::Option<::prost::alloc::string::String>,
874    #[prost(string, tag = "4")]
875    pub server_url: ::prost::alloc::string::String,
876}
877impl ::prost::Name for SendSyncArchive {
878    const NAME: &'static str = "SendSyncArchive";
879    const PACKAGE: &'static str = "xmtp.mls.database";
880    fn full_name() -> ::prost::alloc::string::String {
881        "xmtp.mls.database.SendSyncArchive".into()
882    }
883    fn type_url() -> ::prost::alloc::string::String {
884        "/xmtp.mls.database.SendSyncArchive".into()
885    }
886}
887/// Durable TaskRunner intent: process a group's pending self-remove requests
888/// (build the MLS RemoveProposal/Commit to evict members who sent a LeaveRequest,
889/// then clean up the pending-remove list). Enqueued in the same DB transaction as
890/// the pending_remove row so it survives restart; runs on the TaskRunner with
891/// retry/backoff. group_id is the target conversation.
892#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
893pub struct ProcessPendingSelfRemove {
894    #[prost(bytes = "vec", tag = "1")]
895    pub group_id: ::prost::alloc::vec::Vec<u8>,
896}
897impl ::prost::Name for ProcessPendingSelfRemove {
898    const NAME: &'static str = "ProcessPendingSelfRemove";
899    const PACKAGE: &'static str = "xmtp.mls.database";
900    fn full_name() -> ::prost::alloc::string::String {
901        "xmtp.mls.database.ProcessPendingSelfRemove".into()
902    }
903    fn type_url() -> ::prost::alloc::string::String {
904        "/xmtp.mls.database.ProcessPendingSelfRemove".into()
905    }
906}