"""
AsyncHandler 抽象基类
"""

from abc import ABC, abstractmethod
from typing import Any

from app.scheduler.models import StateChange
from app.scheduler.registry import TaskRegistry
from app.scheduler.slot_manager import SlotManager


class AsyncHandler(ABC):
    """第三方异步任务处理器基类"""

    name: str
    slot_key: str
    max_slots: int

    @abstractmethod
    async def tick(
        self,
        tasks: list[Any],
        registry: TaskRegistry,
        slots: SlotManager,
    ) -> list[StateChange]:
        """
        每个 Tick 执行一次。

        Args:
            tasks: 当前 running 状态的任务记录列表
            registry: 任务注册表（用于读写 Redis 状态）
            slots: 全局槽位管理器

        Returns:
            状态变更列表
        """
        pass
