from typing import Any, TypeVar, overload

T = TypeVar('T')


@overload
def parse_string(string: str, separators: tuple[()], target_type: type[T]) -> T: ...
@overload
def parse_string(string: str, separators: tuple[str], target_type: type[T]) -> list[T]: ...
@overload
def parse_string(string: str, separators: tuple[str, str], target_type: type[T]) -> list[list[T]]: ...
@overload
def parse_string(string: str, separators: tuple[str, str, str], target_type: type[T]) -> list[list[list[T]]]: ...
@overload
def parse_string(string: str, separators: tuple[str, str, str, str], target_type: type[T]) -> list[list[list[list[T]]]]: ...
@overload
def parse_string(string: str, separators: tuple[str, str, str, str, str], target_type: type[T]) -> list[list[list[list[list[T]]]]]: ...
@overload
def parse_string(string: str, separators: tuple[str, ...], target_type: type[T]) -> list[Any]: ...

@overload
def parse_file_content(filename: str, separators: tuple[()], target_type: type[T]) -> T: ...
@overload
def parse_file_content(filename: str, separators: tuple[str], target_type: type[T]) -> list[T]: ...
@overload
def parse_file_content(filename: str, separators: tuple[str, str], target_type: type[T]) -> list[list[T]]: ...
@overload
def parse_file_content(filename: str, separators: tuple[str, str, str], target_type: type[T]) -> list[list[list[T]]]: ...
@overload
def parse_file_content(filename: str, separators: tuple[str, str, str, str], target_type: type[T]) -> list[list[list[list[T]]]]: ...
@overload
def parse_file_content(filename: str, separators: tuple[str, str, str, str, str], target_type: type[T]) -> list[list[list[list[list[T]]]]]: ...
@overload
def parse_file_content(filename: str, separators: tuple[str, ...], target_type: type[T]) -> list[Any]: ...

def b64encode(text: str, times_to_encode: int = 1) -> str: ...

def b64decode(text: str, times_to_decode: int = 1) -> str: ...
