"""Bavimail Python SDK."""

from ._client import Bavimail
from ._integration_client import IntegrationClient
from ._version import __version__
from .events import EventType, WebhookEvent
from .exceptions import (
    APIError,
    AuthenticationError,
    BavimailError,
    ConflictError,
    ForbiddenError,
    InternalServerError,
    NotFoundError,
    ProviderError,
    RateLimitError,
    ValidationError,
    WebhookVerificationError,
)
from .models import (
    Alias,
    AttachmentMetadata,
    BatchEmailItemError,
    BatchEmailItemResult,
    BatchEmailResponse,
    BootstrapApiKeyResponse,
    ConversationDetail,
    ConversationMessage,
    ConversationSummary,
    DNSRecord,
    DNSRecordWithStatus,
    DNSVerificationProgress,
    DNSVerificationResponse,
    Domain,
    DomainSetup,
    Email,
    EmailClick,
    EmailTag,
    InboundAttachmentMetadata,
    InboundEmailDetail,
    InboundEmailSummary,
    IntegrationInfo,
    MailFromStatusInfo,
    RevokeApiKeyResponse,
    Tag,
    TagSummary,
    TrackedLink,
    Verdict,
    Webhook,
    WebhookCreated,
    WebhookSecret,
)
from .pagination import iter_pages, iter_pages_async
from .webhook_verification import verify_webhook_signature

__all__ = [
    # Client
    "Bavimail",
    "IntegrationClient",
    # Version
    "__version__",
    # Exceptions
    "APIError",
    "AuthenticationError",
    "BavimailError",
    "ConflictError",
    "ForbiddenError",
    "InternalServerError",
    "NotFoundError",
    "ProviderError",
    "RateLimitError",
    "ValidationError",
    "WebhookVerificationError",
    # Models
    "Alias",
    "AttachmentMetadata",
    "BatchEmailItemError",
    "BatchEmailItemResult",
    "BatchEmailResponse",
    "BootstrapApiKeyResponse",
    "ConversationDetail",
    "ConversationMessage",
    "ConversationSummary",
    "DNSRecord",
    "DNSRecordWithStatus",
    "DNSVerificationProgress",
    "DNSVerificationResponse",
    "Domain",
    "DomainSetup",
    "Email",
    "EmailClick",
    "EmailTag",
    "InboundAttachmentMetadata",
    "InboundEmailDetail",
    "InboundEmailSummary",
    "IntegrationInfo",
    "MailFromStatusInfo",
    "RevokeApiKeyResponse",
    "Tag",
    "TagSummary",
    "TrackedLink",
    "Verdict",
    "Webhook",
    "WebhookCreated",
    "WebhookSecret",
    # Events
    "EventType",
    "WebhookEvent",
    # Utilities
    "iter_pages",
    "iter_pages_async",
    "verify_webhook_signature",
]
