from typing import Protocol
from fsm_crawl.agent.generic_agent import GenericAgent
from fsm_crawl.agent.generic_url_manager import GenericUrlManager
from fsm_crawl.monitoring.callback_pipeline import GenericCallbackPipeline
from fsm_crawl.browser.engine.generic_browser_engine import GenericBrowserEngine

class GenericExperiment(Protocol):
    def get_name(self) -> str: ...
    
    def get_url_manager(self) -> GenericUrlManager: ...
    
    def get_agent(self) -> GenericAgent: ...
    
    def get_pipeline(self) -> GenericCallbackPipeline: ...
    
    def has_consent_pass(self) -> bool: ...
    
    def get_expirement_split(self) -> None | int: ...
    
    def get_max_depth(self) -> int: ...
    
    def get_engine(self) -> GenericBrowserEngine: ...
    

    