"""
browserbase integration module 
"""
import asyncio
from typing import List

def browser_base_fetch(api_key: str, project_id: str, link: List[str],
                       text_content: bool = True, async_mode: bool = False) -> List[str]:
    """
    BrowserBase Fetch

    This module provides an interface to the BrowserBase API.

    Args:
        api_key (str): The API key provided by BrowserBase.
        project_id (str): The ID of the project on BrowserBase where you want to fetch data from.
        link (List[str]): The URLs or links that you want to fetch data from.
        text_content (bool): Whether to return only the text content (True) or the full HTML (False).
        async_mode (bool): Whether to run the function asynchronously (True) or synchronously (False).

    Returns:
        List[str]: The results of the loading operations.
    """
    try:
        from browserbase import Browserbase
    except ImportError:
        raise ImportError("The browserbase module is not installed. Please install it using `pip install browserbase`.")

    # Initialize client with API key
    browserbase = Browserbase(api_key=api_key)
    
    # Create session with project ID
    session = browserbase.sessions.create(project_id=project_id)

    result = []
    async def _async_fetch_link(l):
        return await asyncio.to_thread(session.load, l, text_content=text_content)

    if async_mode:
        async def _async_browser_base_fetch():
            for l in link:
                result.append(await _async_fetch_link(l))
            return result

        result = asyncio.run(_async_browser_base_fetch())
    else:
        for l in link:
            result.append(session.load(l, text_content=text_content))

    return result
