from abc import ABC, abstractmethod
from typing import Optional, Dict, Any

class HttpRepository(ABC):

    @abstractmethod
    async def get(self, path: str, params: Optional[Dict[str, Any]] = None, config: Optional[Dict[str, Any]] = None) -> Any:
        pass

    @abstractmethod
    async def post(self, path: str, params: Optional[Dict[str, Any]] = None, config: Optional[Dict[str, Any]] = None) -> Any:
        pass

    @abstractmethod
    async def put(self, path: str, params: Optional[Dict[str, Any]] = None, config: Optional[Dict[str, Any]] = None) -> Any:
        pass

    @abstractmethod
    async def delete(self, path: str, params: Optional[Dict[str, Any]] = None, config: Optional[Dict[str, Any]] = None) -> Any:
        pass