"""Public API for storage_core.

Usage::

    from storage_core import (
        StorageBuilder,
        StorageClient,
        S3StorageClient,
        create_s3_storage_client,
    )
"""

from storage_core.builder import (
    BucketOperation,
    MultipartOperation,
    ObjectOperation,
    StorageBuilder,
)
from storage_core.clients import S3StorageClient, StorageClient
from storage_core.clients.factory import (
    create_s3_storage_client,
    get_s3_storage_client,
)
from storage_core.serializer import (
    JsonMetadataSerializer,
    MetadataSerializer,
    PassthroughMetadataSerializer,
)
from storage_core.storage_types import ObjectListing, StorageObject

__all__ = [
    # Clients
    "StorageClient",
    "S3StorageClient",
    # Builder
    "StorageBuilder",
    "BucketOperation",
    "ObjectOperation",
    "MultipartOperation",
    # Types
    "StorageObject",
    "ObjectListing",
    # Serializers
    "MetadataSerializer",
    "JsonMetadataSerializer",
    "PassthroughMetadataSerializer",
    # Factories
    "create_s3_storage_client",
    "get_s3_storage_client",
]
