"""
Eventuali - High-performance event sourcing for Python, powered by Rust.

This package provides a high-performance event sourcing library that combines
the performance and memory safety of Rust with the ease of use of Python.
"""

from ._eventuali import (
    PyEventStore as _PyEventStore, 
    PyEvent as _PyEvent, 
    PyAggregate as _PyAggregate,
    SnapshotService as _PySnapshotService,
    SnapshotConfig as _PySnapshotConfig,
    AggregateSnapshot as _PyAggregateSnapshot,
    # Security classes
    EventEncryption,
    KeyManager,
    EncryptionKey,
    EncryptedEventData,
    EncryptionAlgorithm,
    SecurityUtils,
    # RBAC classes
    RbacManager,
    User as RbacUser,
    Role,
    Permission,
    SecurityLevel,
    Session,
    AccessDecision,
    AuditEntry,
    # Audit Trail classes
    AuditManager,
    AuditTrailEntry,
    AuditEventType,
    AuditOutcome,
    RiskLevel,
    DataClassification,
    ComplianceTag,
    ComplianceReport,
    IntegrityStatus,
    # GDPR Compliance classes
    GdprManager,
    DataSubject,
    ConsentRecord,
    SubjectRightsRequest,
    BreachNotification,
    GdprComplianceStatus,
    GdprComplianceReport,
    PersonalDataType,
    LawfulBasisType,
    ConsentMethod,
    ConsentStatus,
    DataSubjectRight,
    RequestStatus,
    BreachType,
    ExportFormat,
    # Tenancy classes
    TenantId,
    TenantInfo,
    TenantConfig,
    TenantMetadata,
    ResourceLimits,
    TenantManager,
    TenantStorageMetrics,
    # Enhanced quota classes
    QuotaTier,
    AlertType,
    QuotaCheckResult,
    QuotaAlert,
    BillingAnalytics,
    EnhancedResourceUsage,
    # Tenant configuration and metrics
    ConfigurationEnvironment,
    ConfigurationValue,
    TenantConfigurationManager,
    HealthStatus,
    TenantHealthScore,
    MetricDataPoint,
    TenantMetricsCollector,
    # Health monitoring classes
    HealthStatus,
    HealthCheckResult,
    SystemMetrics,
    HealthReport,
    HealthConfig,
    HealthMonitorService,
    HealthHttpServer,
    # Observability classes
    ObservabilityConfig,
    ObservabilityService,
    CorrelationId,
    TraceContext,
    LogLevel,
    PerformanceMetrics,
    OperationTimer,
    generate_correlation_id_py as generate_correlation_id,
    # Profiling classes
    ProfileType,
    ProfilingConfig,
    MemoryInfo,
    IoInfo,
    ProfileEntry,
    RegressionSeverity,
    PerformanceSnapshot,
    RegressionDetection,
    FlameGraphNode,
    FlameGraph,
    BottleneckType,
    Bottleneck,
    OptimizationSuggestion,
    BottleneckAnalysis
)
from .event_store import EventStore
from .event import Event  
from .aggregate import Aggregate
from .streaming import (
    EventStreamer, EventStreamReceiver, StreamEvent, Subscription,
    SubscriptionBuilder, Projection, SagaHandler
)
from .snapshot import SnapshotService, SnapshotConfig, AggregateSnapshot
from .exceptions import *

__version__ = "0.1.1"
__author__ = "PrimevalAI"
__email__ = "info@primeval.ai"

__all__ = [
    "EventStore",
    "Event", 
    "Aggregate",
    # Streaming
    "EventStreamer",
    "EventStreamReceiver",
    "StreamEvent",
    "Subscription",
    "SubscriptionBuilder",
    "Projection",
    "SagaHandler",
    # Snapshots
    "SnapshotService",
    "SnapshotConfig",
    "AggregateSnapshot",
    # Security
    "EventEncryption",
    "KeyManager", 
    "EncryptionKey",
    "EncryptedEventData",
    "EncryptionAlgorithm",
    "SecurityUtils",
    # RBAC
    "RbacManager",
    "RbacUser",
    "Role",
    "Permission",
    "SecurityLevel",
    "Session",
    "AccessDecision",
    "AuditEntry",
    # Audit Trail
    "AuditManager",
    "AuditTrailEntry",
    "AuditEventType",
    "AuditOutcome",
    "RiskLevel",
    "DataClassification",
    "ComplianceTag",
    "ComplianceReport",
    "IntegrityStatus",
    # GDPR Compliance
    "GdprManager",
    "DataSubject",
    "ConsentRecord",
    "SubjectRightsRequest",
    "BreachNotification",
    "GdprComplianceStatus",
    "GdprComplianceReport",
    "PersonalDataType",
    "LawfulBasisType",
    "ConsentMethod",
    "ConsentStatus",
    "DataSubjectRight",
    "RequestStatus",
    "BreachType",
    "ExportFormat",
    # Tenancy
    "TenantId",
    "TenantInfo",
    "TenantConfig",
    "TenantMetadata",
    "ResourceLimits",
    "TenantManager",
    "TenantStorageMetrics",
    # Enhanced Quotas
    "QuotaTier",
    "AlertType",
    "QuotaCheckResult",
    "QuotaAlert",
    "BillingAnalytics",
    "EnhancedResourceUsage",
    # Tenant configuration and metrics
    "ConfigurationEnvironment",
    "ConfigurationValue", 
    "TenantConfigurationManager",
    "TenantHealthScore",
    "MetricDataPoint",
    "TenantMetricsCollector",
    # Health monitoring
    "HealthStatus",
    "HealthCheckResult",
    "SystemMetrics",
    "HealthReport",
    "HealthConfig",
    "HealthMonitorService",
    "HealthHttpServer",
    # Observability
    "ObservabilityConfig",
    "ObservabilityService",
    "CorrelationId",
    "TraceContext",
    "LogLevel",
    "PerformanceMetrics",
    "OperationTimer",
    "generate_correlation_id",
    # Profiling
    "ProfileType",
    "ProfilingConfig", 
    "MemoryInfo",
    "IoInfo",
    "ProfileEntry",
    "RegressionSeverity",
    "PerformanceSnapshot",
    "RegressionDetection",
    "FlameGraphNode",
    "FlameGraph",
    "BottleneckType",
    "Bottleneck",
    "OptimizationSuggestion",
    "BottleneckAnalysis",
    # Exceptions
    "EventualiError",
    "OptimisticConcurrencyError",
    "EventStoreError",
    "SerializationError",
    "AggregateNotFoundError",
    "InvalidEventError",
    "DatabaseError",
    "ConfigurationError",
    "ProjectionError",
    "SnapshotError",
    "StreamingError",
]