from _typeshed import Incomplete
from m_crawler.engine.abstract_request import AbstractRequest as AbstractRequest
from queue import Queue
from typing_extensions import Optional

class Scheduler:
    lock: Incomplete
    queue: Queue[Optional[AbstractRequest]]
    seen_urls: set[str]
    max_retry_count: Incomplete
    def __init__(self, max_retry_count: int = 3) -> None:
        self.__no_more_data_flag = None
        self.__retry_dict = None
        ...
    def seen(self, url: str) -> bool: ...
    def push(self, req: Optional[AbstractRequest]) -> None: ...
    def pop(self) -> Optional[AbstractRequest]: ...
    def push_retry(self, req: AbstractRequest) -> bool: ...
    def set_no_more_data_flag(self) -> None: ...
    def get_no_more_data_flag(self) -> bool: ...
