import requests
from .graph_api_config import GraphAPIConfig as GraphAPIConfig
from typing import Any, Optional

class GraphAPICRUDBASE:
    config: GraphAPIConfig
    session: requests.Session
    def __init__(self, config: GraphAPIConfig, session: Optional[requests.Session] = ...) -> None: ...
    def _default_session(self) -> requests.Session: ...
    def _combine_url(self, url_part: str) -> str: ...
    def _token_call(self) -> Any: ...
    def _response_has_json(self, response: requests.Response) -> bool: ...
    def _call(
        self, url: str, body: Optional[Any], json: Optional[Any], method: str, extra_headers: Optional[Any] = ...
    ) -> Any: ...
    def _get(
        self, url_part: str, json: Optional[Any] = ..., body: Optional[Any] = ..., extra_headers: Optional[Any] = ...
    ) -> Any: ...
    def _post(
        self, url_part: str, json: Optional[Any] = ..., body: Optional[Any] = ..., extra_headers: Optional[Any] = ...
    ) -> Any: ...
    def _put(
        self, url_part: str, json: Optional[Any] = ..., body: Optional[Any] = ..., extra_headers: Optional[Any] = ...
    ) -> Any: ...
    def _patch(
        self, url_part: str, json: Optional[Any] = ..., body: Optional[Any] = ..., extra_headers: Optional[Any] = ...
    ) -> Any: ...
    def _delete(
        self, url_part: str, json: Optional[Any] = ..., body: Optional[Any] = ..., extra_headers: Optional[Any] = ...
    ) -> Any: ...
