"""Security module for trax project.

This module provides secure configuration management, path validation,
URL validation, encrypted storage, user permissions, and input sanitization.
"""

from .secure_config import SecureConfig, validate_path, validate_youtube_url, sanitize_filename
from .encrypted_storage import (
    EncryptedStorage,
    encrypt_data,
    decrypt_data,
    generate_encryption_key,
    create_secure_storage,
)
from .user_permissions import (
    User,
    Resource,
    Permission,
    UserPermissionSystem,
    check_permission,
    grant_permission,
    revoke_permission,
    create_default_permission_system,
)
from .input_sanitization import (
    sanitize_sql_input,
    sanitize_html_input,
    sanitize_command_input,
    sanitize_file_path,
    sanitize_config_value,
    validate_config_schema,
    sanitize_search_query,
    sanitize_environment_variable,
    InputSanitizationError,
    ConfigValidationError,
)

__all__ = [
    "SecureConfig",
    "validate_path",
    "validate_youtube_url",
    "sanitize_filename",
    "EncryptedStorage",
    "encrypt_data",
    "decrypt_data",
    "generate_encryption_key",
    "create_secure_storage",
    "User",
    "Resource",
    "Permission",
    "UserPermissionSystem",
    "check_permission",
    "grant_permission",
    "revoke_permission",
    "create_default_permission_system",
    "sanitize_sql_input",
    "sanitize_html_input",
    "sanitize_command_input",
    "sanitize_file_path",
    "sanitize_config_value",
    "validate_config_schema",
    "sanitize_search_query",
    "sanitize_environment_variable",
    "InputSanitizationError",
    "ConfigValidationError",
]
