from typing import Any, Optional

def get_value_by_keys(dict_to_check: dict, keys: tuple, warning: bool = ...) -> object: ...
def set_value_by_keys(dict_to_check: dict, keys: tuple, value: Optional[object], warning: bool = ...) -> None: ...

class Config:
    @staticmethod
    def get_file_type() -> str: ...
    @classmethod
    def load_file(cls, path: str) -> dict: ...
    @classmethod
    def load(cls, path: str, *key: str) -> Any: ...
    @classmethod
    def load_internal_file(cls, path: str) -> dict: ...
    @staticmethod
    def save(path: str, data: dict) -> None: ...
    @classmethod
    def organize(cls, pathname: str) -> None: ...
    @classmethod
    def organize_internal(cls) -> None: ...
    @classmethod
    def resolve_path(cls, file_location: str) -> str: ...
    @classmethod
    def resolve_path_and_load_file(cls, file_location: str) -> dict: ...

class Specification:
    @classmethod
    def get(cls, *key: str) -> Any: ...
    @classmethod
    def get_directory(cls, category: str, *_sub: str) -> str: ...

class Setting:
    @classmethod
    def reload(cls) -> None: ...
    @classmethod
    def save(cls) -> None: ...
    @classmethod
    def get(cls, *key: str) -> Any: ...
    @classmethod
    def try_get(cls, *key: str) -> Any: ...
    @classmethod
    def set(cls, *key: str, value: object, save_to_local: bool = ...) -> None: ...
    @classmethod
    def get_font(cls) -> str: ...
    @classmethod
    def set_font(cls, font_name: str) -> None: ...
    @classmethod
    def get_font_type(cls) -> str: ...
    @classmethod
    def set_font_type(cls, font_type: str) -> None: ...
    @classmethod
    def get_antialias(cls) -> bool: ...
    @classmethod
    def get_language(cls) -> str: ...
    @classmethod
    def get_low_memory_mode(cls) -> bool: ...

class Debug:
    @classmethod
    def get_developer_mode(cls) -> bool: ...
    @classmethod
    def set_developer_mode(cls, value: bool) -> None: ...
    @classmethod
    def get_cheat_mode(cls) -> bool: ...
    @classmethod
    def set_cheat_mode(cls, value: bool) -> None: ...
    @classmethod
    def get_show_fps(cls) -> bool: ...
    @classmethod
    def set_show_fps(cls, value: bool) -> None: ...

class GlobalValue:
    @classmethod
    def get(cls, _key: str) -> object: ...
    @classmethod
    def set(cls, _key: str, value: object) -> None: ...
    @classmethod
    def remove(cls, _key: str) -> None: ...
    @classmethod
    def clear(cls) -> None: ...
    @classmethod
    def if_get_set(cls, _key: str, valueToGet: object, valueToSet: object) -> bool: ...

class DataBase:
    @classmethod
    def get(cls, *_key: str) -> Any: ...
    @classmethod
    def update(cls, _value: dict) -> None: ...

class Info:
    @classmethod
    def ensure_linpg_version(cls, action: str, revision: int, patch: int, version: int = ...) -> bool: ...
    @classmethod
    def get_current_version(cls) -> str: ...
    @classmethod
    def get_repository_url(cls) -> str: ...

class Files:
    @staticmethod
    def natural_sort(_files: list[str]) -> list[str]: ...
    @classmethod
    def search_and_remove_folder(cls, folder_to_search: str, stuff_to_remove: str) -> None: ...
    @staticmethod
    def delete_if_exist(path: str) -> None: ...
    @staticmethod
    def generate_md5(path: str) -> str: ...

class Cache:
    @classmethod
    def get_directory(cls) -> str: ...
    @classmethod
    def new(cls, _key: str, source_file_path: str, target_file_path: str) -> None: ...
    @classmethod
    def remove(cls, _key: str) -> None: ...
    @classmethod
    def get_cache_path(cls, _key: str) -> str: ...
    @classmethod
    def match(cls, _key: str, source_file_path: str) -> bool: ...

class PersistentData:
    @classmethod
    def get(cls, _key: str) -> Optional[Any]: ...
    @classmethod
    def set(cls, _key: str, _value: Any) -> None: ...
    @classmethod
    def reload(cls) -> None: ...
    @classmethod
    def save(cls) -> None: ...
