1use crate::attachments::{AttachmentFeatures, AttachmentRuntime};
4use crate::context::LocalContext;
5use crate::groups::context::EngineFeatures;
6use crate::identity_updates::{IdentityFeatures, IdentityResolutionRegistry};
7use crate::subscriptions::incoming::IncomingRuntime;
8use std::sync::Arc;
9
10#[derive(Clone, Default)]
13pub struct MlsFeatures {
14 pub(crate) attachments: Arc<AttachmentRuntime>,
15 pub(crate) incoming: Arc<IncomingRuntime>,
16 pub(crate) identity_resolutions: Arc<IdentityResolutionRegistry>,
17}
18
19pub type XmtpMlsLocalContext<ApiClient, Db, S> = LocalContext<ApiClient, Db, S, MlsFeatures>;
21
22impl AttachmentFeatures for MlsFeatures {
23 fn attachments(&self) -> &Arc<AttachmentRuntime> {
24 &self.attachments
25 }
26}
27
28impl EngineFeatures for MlsFeatures {
29 fn incoming(&self) -> &IncomingRuntime {
30 &self.incoming
31 }
32}
33
34impl IdentityFeatures for MlsFeatures {
35 fn identity_resolutions(&self) -> &IdentityResolutionRegistry {
36 &self.identity_resolutions
37 }
38}