"""
A continuation of mqttproto, vendorized into MoaT
"""

from __future__ import annotations

from ._base_client_state_machine import MQTTClientState as MQTTClientState
from ._exceptions import InvalidPattern as InvalidPattern
from ._exceptions import MQTTConnectFailed as MQTTConnectFailed
from ._exceptions import MQTTDecodeError as MQTTDecodeError
from ._exceptions import MQTTException as MQTTException
from ._exceptions import MQTTOperationFailed as MQTTOperationFailed
from ._exceptions import MQTTProtocolError as MQTTProtocolError
from ._exceptions import MQTTPublishFailed as MQTTPublishFailed
from ._exceptions import MQTTSubscribeFailed as MQTTSubscribeFailed
from ._exceptions import MQTTUnsubscribeFailed as MQTTUnsubscribeFailed
from ._exceptions import MQTTUnsupportedPropertyType as MQTTUnsupportedPropertyType
from ._types import MQTTAuthPacket as MQTTAuthPacket
from ._types import MQTTConnAckPacket as MQTTConnAckPacket
from ._types import MQTTConnectPacket as MQTTConnectPacket
from ._types import MQTTDisconnectPacket as MQTTDisconnectPacket
from ._types import MQTTPacket as MQTTPacket
from ._types import MQTTPingRequestPacket as MQTTPingRequestPacket
from ._types import MQTTPingResponsePacket as MQTTPingResponsePacket
from ._types import MQTTPublishAckPacket as MQTTPublishAckPacket
from ._types import MQTTPublishCompletePacket as MQTTPublishCompletePacket
from ._types import MQTTPublishPacket as MQTTPublishPacket
from ._types import MQTTPublishReceivePacket as MQTTPublishReceivePacket
from ._types import MQTTPublishReleasePacket as MQTTPublishReleasePacket
from ._types import MQTTSubscribeAckPacket as MQTTSubscribeAckPacket
from ._types import MQTTSubscribePacket as MQTTSubscribePacket
from ._types import MQTTUnsubscribeAckPacket as MQTTUnsubscribeAckPacket
from ._types import MQTTUnsubscribePacket as MQTTUnsubscribePacket
from ._types import Pattern as Pattern
from ._types import PropertyType as PropertyType
from ._types import QoS as QoS
from ._types import ReasonCode as ReasonCode
from ._types import RetainHandling as RetainHandling
from ._types import Subscription as Subscription
from ._types import Will as Will

# Re-export imports so they look like they live directly in this package
for value in list(locals().values()):
    if getattr(value, "__module__", "").startswith("moat.lib.mqtt."):
        value.__module__ = __name__
