from abc import ABCMeta, abstractmethod
from typing import Any

from django.tasks.base import Task, TaskResult

class BaseTaskBackend(metaclass=ABCMeta):
    task_class: type[Task]
    supports_defer: bool
    supports_async_task: bool
    supports_get_result: bool
    supports_priority: bool
    alias: str
    queues: list[str]
    options: dict[str, Any]
    def __init__(self, alias: str, params: dict[str, Any]) -> None: ...
    def validate_task(self, task: Task) -> None: ...
    @abstractmethod
    def enqueue(self, task: Task, args: list[Any], kwargs: dict[str, Any]) -> TaskResult: ...
    async def aenqueue(self, task: Task, args: list[Any], kwargs: dict[str, Any]) -> TaskResult: ...
    def get_result(self, result_id: str) -> TaskResult: ...
    async def aget_result(self, result_id: str) -> TaskResult: ...
    def check(self, **kwargs: Any) -> list[Any]: ...
