"""Qt signal hub for async worker results."""

from __future__ import annotations

from PySide6.QtCore import QObject, Signal


class AsyncSignals(QObject):
    """Signals for async worker results."""
    search_done = Signal(list)
    search_append = Signal(list)
    search_error = Signal(str)
    thumb_done = Signal(int, str)
    image_done = Signal(str, str)
    image_error = Signal(str)
    # Fast-path for uncached video posts: emit the remote URL directly
    # so mpv can start streaming + decoding immediately instead of
    # waiting for download_image to write the whole file to disk first.
    # download_image still runs in parallel to populate the cache for
    # next time. Args: (url, info, width, height) — width/height come
    # from post.width/post.height for the popout pre-fit optimization.
    video_stream = Signal(str, str, int, int)
    bookmark_done = Signal(int, str)
    bookmark_error = Signal(str)
    autocomplete_done = Signal(list)
    batch_progress = Signal(int, int, int)  # current, total, post_id (of the just-finished item)
    batch_done = Signal(str)
    download_progress = Signal(int, int)  # bytes_downloaded, total_bytes
    prefetch_progress = Signal(int, float)  # index, progress (0-1 or -1 to hide)
    categories_updated = Signal(object)  # Post whose tag_categories just got populated
