"""The networking layer for Media over QUIC.

Real-time pub/sub with built-in caching, fan-out, and prioritization.
"""

from moq_ffi import MoqError as Error

from .client import Client, connect
from .errors import is_auth, is_shutdown
from .log import log_level
from .origin import (
    Announced,
    AnnouncedBroadcast,
    Announcement,
    BroadcastRequest,
    OriginConsumer,
    OriginDynamic,
    OriginProducer,
)
from .publish import (
    AudioProducer,
    BroadcastDynamic,
    BroadcastProducer,
    GroupProducer,
    GroupRequest,
    JsonSnapshotProducer,
    JsonStreamProducer,
    MediaProducer,
    MediaStreamProducer,
    TrackDynamic,
    TrackProducer,
    TrackRequest,
    VideoProducer,
)
from .server import Request, Server, Transport
from .session import Session
from .subscribe import (
    AudioConsumer,
    BroadcastConsumer,
    CatalogConsumer,
    GroupConsumer,
    JsonSnapshotConsumer,
    JsonStreamConsumer,
    MediaConsumer,
    TrackConsumer,
)
from .types import (
    Audio,
    AudioCodec,
    AudioDecoderOutput,
    AudioEncoderInput,
    AudioEncoderOutput,
    AudioFormat,
    AudioFrame,
    Catalog,
    ConnectionStats,
    Container,
    Datagram,
    Dimensions,
    FetchGroupOptions,
    Frame,
    MediaFrame,
    Route,
    Subscription,
    TrackInfo,
    Video,
    VideoCodec,
    VideoEncoderInput,
    VideoEncoderKind,
    VideoEncoderOutput,
    VideoFrame,
    VideoHint,
    VideoPixelFormat,
    VideoProperties,
)

__all__ = [
    "Announced",
    "AnnouncedBroadcast",
    "Announcement",
    "Audio",
    "AudioCodec",
    "AudioConsumer",
    "AudioDecoderOutput",
    "AudioEncoderInput",
    "AudioEncoderOutput",
    "AudioFormat",
    "AudioFrame",
    "AudioProducer",
    "BroadcastConsumer",
    "BroadcastDynamic",
    "BroadcastProducer",
    "BroadcastRequest",
    "Catalog",
    "CatalogConsumer",
    "Client",
    "ConnectionStats",
    "Container",
    "Datagram",
    "Dimensions",
    "Error",
    "Frame",
    "MediaFrame",
    "FetchGroupOptions",
    "GroupConsumer",
    "GroupRequest",
    "GroupProducer",
    "JsonSnapshotConsumer",
    "JsonSnapshotProducer",
    "JsonStreamConsumer",
    "JsonStreamProducer",
    "MediaConsumer",
    "MediaProducer",
    "MediaStreamProducer",
    "OriginConsumer",
    "OriginDynamic",
    "OriginProducer",
    "Request",
    "Route",
    "Server",
    "Session",
    "Subscription",
    "TrackConsumer",
    "TrackDynamic",
    "TrackInfo",
    "TrackProducer",
    "TrackRequest",
    "Transport",
    "Video",
    "VideoCodec",
    "VideoEncoderInput",
    "VideoEncoderKind",
    "VideoEncoderOutput",
    "VideoFrame",
    "VideoHint",
    "VideoPixelFormat",
    "VideoProducer",
    "VideoProperties",
    "connect",
    "is_auth",
    "is_shutdown",
    "log_level",
]
