from typing import Protocol, List

class GenericBrowserEngine(Protocol):
   # lifecycle
   def install(self) -> None: ...
   async def start(self) -> bool: ...
   async def stop(self) -> None: ...
   def is_ready(self) -> bool: ...
    
   # page control
   async def perform_scroll(self, amounts: List[int], scroll_delay: float = 0.2) -> None: ...
   async def goto(self, url: str) -> list[str]: ...
   
   # networking
   def on_response(self, handler) -> None: ...
   async def on_request(self, handler) -> None: ...
   
   # consent
   async def start_consent_task(self) -> None: ...
   async def stop_consent_task(self) -> None: ...
   
   