Skip to main content

mas_data_model/
lib.rs

1// Copyright 2025, 2026 Element Creations Ltd.
2// Copyright 2024, 2025 New Vector Ltd.
3// Copyright 2021-2024 The Matrix.org Foundation C.I.C.
4//
5// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
6// Please see LICENSE files in the repository root for full details.
7
8#![allow(clippy::module_name_repetitions)]
9
10use thiserror::Error;
11
12pub mod clock;
13pub(crate) mod compat;
14pub mod oauth2;
15pub mod personal;
16pub(crate) mod policy_data;
17mod site_config;
18pub(crate) mod tokens;
19pub(crate) mod upstream_oauth2;
20pub(crate) mod user_agent;
21pub(crate) mod users;
22mod utils;
23mod version;
24
25/// Error when an invalid state transition is attempted.
26#[derive(Debug, Error)]
27#[error("invalid state transition")]
28pub struct InvalidTransitionError;
29
30pub use ulid::Ulid;
31
32pub use self::{
33    clock::{Clock, SystemClock},
34    compat::{
35        CompatAccessToken, CompatRefreshToken, CompatRefreshTokenState, CompatSession,
36        CompatSessionState, CompatSsoLogin, CompatSsoLoginState, Device, ToScopeTokenError,
37    },
38    oauth2::{
39        AuthorizationCode, AuthorizationGrant, AuthorizationGrantStage, Client, DeviceCodeGrant,
40        DeviceCodeGrantState, InvalidRedirectUriError, JwksOrJwksUri, Pkce, Session, SessionState,
41        generate_user_code, normalize_user_code,
42    },
43    policy_data::PolicyData,
44    site_config::{
45        CaptchaConfig, CaptchaService, SessionExpirationConfig, SessionLimitConfig, SiteConfig,
46    },
47    tokens::{
48        AccessToken, AccessTokenState, RefreshToken, RefreshTokenState, TokenFormatError, TokenType,
49    },
50    upstream_oauth2::{
51        UpstreamOAuthAuthorizationSession, UpstreamOAuthAuthorizationSessionState,
52        UpstreamOAuthLink, UpstreamOAuthProvider, UpstreamOAuthProviderClaimsImports,
53        UpstreamOAuthProviderDiscoveryMode, UpstreamOAuthProviderImportAction,
54        UpstreamOAuthProviderImportPreference, UpstreamOAuthProviderLocalpartPreference,
55        UpstreamOAuthProviderOnBackchannelLogout, UpstreamOAuthProviderOnConflict,
56        UpstreamOAuthProviderPkceMode, UpstreamOAuthProviderResponseMode,
57        UpstreamOAuthProviderSubjectPreference, UpstreamOAuthProviderTokenAuthMethod,
58    },
59    user_agent::{DeviceType, UserAgent},
60    users::{
61        Authentication, AuthenticationMethod, BrowserSession, MatrixUser, Password, User,
62        UserEmail, UserEmailAuthentication, UserEmailAuthenticationCode, UserRecoverySession,
63        UserRecoveryTicket, UserRegistration, UserRegistrationPassword, UserRegistrationToken,
64        is_username_template,
65    },
66    utils::{BoxClock, BoxRng, UlidExt},
67    version::AppVersion,
68};