//! Audit logging for IAM
//!
//! Provides structured audit logging for authentication and authorization events.
//!
//! ## Features
//!
//! - Multiple event types (authentication, authorization, policy changes)
//! - Pluggable sinks (file, memory, custom)
//! - Async-first design
//! - Structured JSON output
//!
//! ## Usage
//!
//! ```ignore
//! use iam_audit::{AuditLogger, AuditEvent, AuditEventKind, FileSink};
//!
//! let sink = FileSink::new("/var/log/iam-audit.jsonl").await?;
//! let logger = AuditLogger::new(sink);
//!
//! logger.log(AuditEvent::authn_success("alice", "jwt")).await?;
//! ```

mod event;
mod logger;
mod sink;

pub use event::{
    AdminEventData, AuditEvent, AuditEventKind, AuthnEventData, AuthzEventData, PolicyChangeType,
    PolicyEventData, TokenEventData, TokenEventType,
};
pub use logger::{AuditLogger, AuditLoggerConfig, BufferedAuditLogger};
pub use sink::{AuditError, AuditSink, FileSink, MemorySink, MultiSink, NullSink, Result};
