mod admin_roles;
mod credentials;
mod identity;
mod jwt;
mod providers;
mod sts;

mod store_accounts;
mod store_assume;
mod store_auth;
mod store_credentials;
mod store_login_attempts;
mod store_reports;
mod store_types;

pub use admin_roles::{OperatorAction, OperatorRole, RoleAssignment};
pub use credentials::{
    AccessKey, CredentialRecord, CredentialRotation, CredentialSupportReport, LeakedKeyResponse,
    MtlsClientCertificate, SessionCredential, TemporaryCredentialSupportReport,
};
pub use identity::{CustomIdentity, Principal, PrincipalKind, Tenant, DEFAULT_TENANT_ID};
pub use jwt::{sign_hs256_jwt, JwtClaims, JwtHeader};
pub use providers::{
    DirectoryProvider, DirectoryUser, IdentityProvider, IdentityProviderSupportReport,
    OidcProvider, SamlProvider,
};
pub use store_types::{
    AuthError, AuthStore, LoginAttemptRecord, ResolvedCredential, ResolvedMtlsIdentity,
};
pub use sts::{
    AssumeRoleRequest, AssumeRoleWithCustomIdentityRequest, AssumeRoleWithWebIdentityRequest,
    CredentialScope, RoleAssumptionSupportReport,
};

#[cfg(test)]
mod store_tests;

pub const CRATE_PURPOSE: &str = "local identity, external web identity, and credential lifecycle";
