import abc
from ..types import AsyncWebCrawler, CrawlResult, CrawlerRunConfig, RunManyReturn as RunManyReturn
from _typeshed import Incomplete
from abc import ABC, abstractmethod
class DeepCrawlDecorator:
deep_crawl_active: Incomplete
crawler: Incomplete
def __init__(self, crawler: AsyncWebCrawler) -> None: ...
def __call__(self, original_arun): ...
class DeepCrawlStrategy(ABC, metaclass=abc.ABCMeta):
async def arun(self, start_url: str, crawler: AsyncWebCrawler, config: CrawlerRunConfig | None = None) -> RunManyReturn: ...
def __call__(self, start_url: str, crawler: AsyncWebCrawler, config: CrawlerRunConfig): ...
@abstractmethod
async def shutdown(self) -> None: ...
@abstractmethod
async def can_process_url(self, url: str, depth: int) -> bool: ...
@abstractmethod
async def link_discovery(self, result: CrawlResult, source_url: str, current_depth: int, visited: set[str], next_level: list[tuple], depths: dict[str, int]) -> None: ...