"""
getbiji_box - Get 笔记 API Python SDK

A Python library for interacting with the GetBiji (Get笔记) API.
Supports note management, knowledge base operations, and more.

Example:
    >>> from getbiji_box import GetBijiClient
    >>>
    >>> client = GetBijiClient(
    ...     token="your_access_token",
    ...     refresh_token="your_refresh_token"
    ... )
    >>>
    >>> # Get account info
    >>> user = client.account.get_info()
    >>> print(f"Hello, {user.nickname}")
    >>>
    >>> # Create a simple note
    >>> note = client.notes.create_simple_note(
    ...     content="Today I learned Python",
    ...     tags=["learning", "python"]
    ... )
    >>>
    >>> # List notes
    >>> result = client.notes.list_notes(limit=20)
    >>> for note in result.list:
    ...     print(f"{note.title}: {note.content[:50]}...")
"""

__version__ = "0.1.0"
__author__ = "getbiji_box"
__all__ = [
    # Main client
    "GetBijiClient",
    # Exceptions
    "GetBijiError",
    "AuthenticationError",
    "TokenExpiredError",
    "APIError",
    "UploadError",
    "ValidationError",
    "RateLimitError",
    "NetworkError",
    # Models
    "Note",
    "LinkNoteDetail",
    "NoteListResult",
    "TokenInfo",
    "User",
    "Knowledge",
    "KnowledgeListResult",
    "Tag",
    "Attachment",
    "UploadTokenResult",
    "ProgressItem",
    "AudioSectionInfo",
    "Directory",
    "FileMetaData",
    "Resource",
    "ResourceListResult",
    "FollowItem",
    "FollowListResult",
    "LiveStreamPost",
    "ChildrenCountResult",
]

# Import main client
from .client import GetBijiClient

# Import exceptions
from .exceptions import (
    APIError,
    AuthenticationError,
    GetBijiError,
    NetworkError,
    RateLimitError,
    TokenExpiredError,
    UploadError,
    ValidationError,
)

# Import models
from .models import (
    Attachment,
    AudioSectionInfo,
    ChildrenCountResult,
    Directory,
    FileMetaData,
    FollowItem,
    FollowListResult,
    Knowledge,
    KnowledgeListResult,
    LinkNoteDetail,
    LiveStreamPost,
    Note,
    NoteListResult,
    ProgressItem,
    Resource,
    ResourceListResult,
    Tag,
    TokenInfo,
    UploadTokenResult,
    User,
)
