//! Core types for IAM (Identity and Access Management)
//!
//! This crate contains all shared type definitions used across the IAM system:
//! - Principal types (User, ServiceAccount, Group)
//! - Resource representation
//! - Role and Permission definitions
//! - Policy bindings
//! - Condition expressions for ABAC
//! - Token claims
//! - Error types

pub mod condition;
pub mod credential;
pub mod error;
pub mod policy;
pub mod principal;
pub mod resource;
pub mod role;
pub mod scope;
pub mod tenant;
pub mod token;

pub use condition::{Condition, ConditionExpr};
pub use credential::{Argon2Params, CredentialRecord};
pub use error::{Error, IamError, Result, StorageError};
pub use policy::{CreateBindingRequest, EffectivePolicy, PolicyBinding};
pub use principal::{Principal, PrincipalKind, PrincipalRef};
pub use resource::{Resource, ResourceRef};
pub use role::{builtin as builtin_roles, Permission, Role};
pub use scope::Scope;
pub use tenant::{Organization, Project};
pub use token::{
    AuthMethod, InternalTokenClaims, JwtClaims, TokenMetadata, TokenType, TokenValidationError,
};
