"""Auto-generated type stubs for IncludeCPP module wrappers.

This file enables VSCode IntelliSense autocomplete for C++ modules.
DO NOT EDIT - Auto-generated by IncludeCPP build system.
"""

from typing import Any, List, Dict, Optional, Union, Protocol, overload

class ServerModuleWrapper(Protocol):
    """Type hints for server module wrapper (VSCode autocomplete support)."""

    def getInfo(self) -> Dict[str, Any]:
        """Get server module information."""
        ...

    class APIHandler:
        """C++ class: APIHandler"""

        def __init__(self, arg0: Any) -> None:
            """Initialize APIHandler instance"""
            ...

        def handleClear(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleClear"""
            ...

        def handleDataDelete(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleDataDelete"""
            ...

        def handleDataList(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleDataList"""
            ...

        def handleDataRetrieve(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleDataRetrieve"""
            ...

        def handleDataStore(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleDataStore"""
            ...

        def handleFileDelete(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleFileDelete"""
            ...

        def handleFileDownload(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleFileDownload"""
            ...

        def handleFileInfo(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleFileInfo"""
            ...

        def handleFileList(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleFileList"""
            ...

        def handleFileUpload(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleFileUpload"""
            ...

        def handleStats(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleStats"""
            ...

        def handleZipDelete(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleZipDelete"""
            ...

        def handleZipDownload(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleZipDownload"""
            ...

        def handleZipList(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleZipList"""
            ...

        def handleZipUpload(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: handleZipUpload"""
            ...


    class DataItem:
        """C++ class: DataItem"""

        @overload
        def __init__(self) -> None: ...
        @overload
        def __init__(self, arg0: str, arg1: str, arg2: str) -> None: ...

        def __init__(self, *args: Any, **kwargs: Any) -> None:
            """Initialize DataItem instance"""
            ...

        def getData(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getData"""
            ...

        def getId(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getId"""
            ...

        def getMetadata(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getMetadata"""
            ...

        def getMetadataKeys(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getMetadataKeys"""
            ...

        def getTimestamp(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getTimestamp"""
            ...

        def getType(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getType"""
            ...

        def setData(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: setData"""
            ...

        def setMetadata(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: setMetadata"""
            ...


    class FileItem:
        """C++ class: FileItem"""

        @overload
        def __init__(self) -> None: ...
        @overload
        def __init__(self, arg0: str, arg1: str, arg2: str, arg3: str) -> None: ...

        def __init__(self, *args: Any, **kwargs: Any) -> None:
            """Initialize FileItem instance"""
            ...

        def getContent(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getContent"""
            ...

        def getFilename(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getFilename"""
            ...

        def getId(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getId"""
            ...

        def getMimeType(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getMimeType"""
            ...

        def getSize(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getSize"""
            ...

        def getTimestamp(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getTimestamp"""
            ...

        def setContent(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: setContent"""
            ...


    class Server:
        """C++ class: Server"""

        def __init__(self, arg0: int, arg1: str) -> None:
            """Initialize Server instance"""
            ...

        def clearAll(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: clearAll"""
            ...

        def deleteData(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: deleteData"""
            ...

        def deleteFile(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: deleteFile"""
            ...

        def deleteZip(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: deleteZip"""
            ...

        def downloadFile(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: downloadFile"""
            ...

        def downloadZip(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: downloadZip"""
            ...

        def getConfig(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getConfig"""
            ...

        def getFileInfo(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getFileInfo"""
            ...

        def getHost(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getHost"""
            ...

        def getInfo(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getInfo"""
            ...

        def getPort(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getPort"""
            ...

        def getStats(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getStats"""
            ...

        def getTotalItems(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getTotalItems"""
            ...

        def getVersion(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getVersion"""
            ...

        def hasData(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: hasData"""
            ...

        def hasFile(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: hasFile"""
            ...

        def hasZip(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: hasZip"""
            ...

        def isRunning(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: isRunning"""
            ...

        def listData(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: listData"""
            ...

        def listFiles(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: listFiles"""
            ...

        def listZips(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: listZips"""
            ...

        def restart(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: restart"""
            ...

        def retrieveData(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: retrieveData"""
            ...

        def setConfig(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: setConfig"""
            ...

        def setHost(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: setHost"""
            ...

        def setPort(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: setPort"""
            ...

        def start(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: start"""
            ...

        def stop(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: stop"""
            ...

        def storeData(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: storeData"""
            ...

        def uploadFile(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: uploadFile"""
            ...

        def uploadZip(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: uploadZip"""
            ...


    class StorageManager:
        """C++ class: StorageManager"""

        def __init__(self) -> None:
            """Initialize StorageManager instance"""
            ...

        def clear(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: clear"""
            ...

        def getData(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getData"""
            ...

        def getFile(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getFile"""
            ...

        def getFilename(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getFilename"""
            ...

        def getStats(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getStats"""
            ...

        def getTotalItems(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getTotalItems"""
            ...

        def getZip(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getZip"""
            ...

        def hasData(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: hasData"""
            ...

        def hasFile(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: hasFile"""
            ...

        def hasZip(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: hasZip"""
            ...

        def listDataIds(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: listDataIds"""
            ...

        def listFileIds(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: listFileIds"""
            ...

        def listZipIds(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: listZipIds"""
            ...

        def removeData(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: removeData"""
            ...

        def removeFile(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: removeFile"""
            ...

        def removeZip(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: removeZip"""
            ...

        def storeData(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: storeData"""
            ...

        def storeFile(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: storeFile"""
            ...

        def storeZip(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: storeZip"""
            ...


    class ZipItem:
        """C++ class: ZipItem"""

        @overload
        def __init__(self) -> None: ...
        @overload
        def __init__(self, arg0: str, arg1: str, arg2: str) -> None: ...

        def __init__(self, *args: Any, **kwargs: Any) -> None:
            """Initialize ZipItem instance"""
            ...

        def addFileToList(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: addFileToList"""
            ...

        def getContent(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getContent"""
            ...

        def getFileCount(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getFileCount"""
            ...

        def getFileList(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getFileList"""
            ...

        def getId(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getId"""
            ...

        def getName(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getName"""
            ...

        def getTimestamp(self, *args: Any, **kwargs: Any) -> Any:
            """C++ method: getTimestamp"""
            ...




# CppApi with typed include() overloads for each module
class CppApi:
    """C++ API Manager with typed module loading.

    The include() method returns a module wrapper with full type hints
    for VSCode/PyCharm autocomplete support.
    """

    def __init__(self, project_root: Optional[str] = None, auto_update: bool = True) -> None:
        """Initialize CppApi.

        Args:
            project_root: Path to project root (default: auto-detect)
            auto_update: Whether to auto-rebuild on source changes
        """
        ...

    @overload
    def include(self, module_name: str = "server", auto_update: Optional[bool] = None) -> ServerModuleWrapper: ...

    @overload
    def include(self, module_name: str, auto_update: Optional[bool] = None) -> Any: ...

    def include(self, module_name: str, auto_update: Optional[bool] = None) -> Any:
        """Load a C++ module.

        Args:
            module_name: Name of the module to load
            auto_update: Override auto-update setting for this module

        Returns:
            ModuleWrapper with access to C++ classes, functions, and structs
        """
        ...

    def rebuild(self, verbose: bool = False) -> bool:
        """Rebuild all C++ modules."""
        ...

    def list_modules(self) -> List[str]:
        """List available modules."""
        ...
