"""
Wunderkafka - the power of librdkafka for humans^W pythons.

Module contains handful re-imports (public API) from the package.

:copyright: (c) 2021 by Severstal Digital.
:license: Apache 2.0, see LICENSE for more details.
"""

# ToDo (tribunsky-kir): API doesn't belong to us, reconsider of exposing confluent_kafka's Message
from confluent_kafka import Message

from wunderkafka.config import ConsumerConfig, ProducerConfig
from wunderkafka.protocols import AnyConsumer, AnyProducer
from wunderkafka.factories.avro import (
    AvroConsumer,
    AvroProducer,
    AvroModelProducer,
    AvroClouderaConsumer,
    AvroConfluentConsumer,
    AvroModelClouderaProducer,
    AvroModelConfluentProducer,
)
from wunderkafka.consumers.bytes import BytesConsumer
from wunderkafka.producers.bytes import BytesProducer
from wunderkafka.config.generated.enums import (
    IsolationLevel,
    AutoOffsetReset,
    CompressionType,
    QueuingStrategy,
    CompressionCodec,
    SecurityProtocol,
    BrokerAddressFamily,
    SslEndpointIdentificationAlgorithm,
)
from wunderkafka.config.schema_registry import SRConfig
from wunderkafka.consumers.subscription import TopicSubscription

__all__ = [
    "Message",
    "ConsumerConfig",
    "ProducerConfig",
    "AnyConsumer",
    "AnyProducer",
    "AvroConsumer",
    "AvroProducer",
    "AvroModelProducer",
    "AvroClouderaConsumer",
    "AvroConfluentConsumer",
    "AvroModelClouderaProducer",
    "AvroModelConfluentProducer",
    "BytesConsumer",
    "BytesProducer",
    "IsolationLevel",
    "AutoOffsetReset",
    "CompressionType",
    "QueuingStrategy",
    "CompressionCodec",
    "SecurityProtocol",
    "BrokerAddressFamily",
    "SslEndpointIdentificationAlgorithm",
    "SRConfig",
    "TopicSubscription",
]
