from collections.abc import Iterable
from typing import Any, List, NoReturn, Optional, Type, TypeVar, Union

def alias(Function): ...

__VERSION__: str
__NEW__: str
__LICENSE__: str

def flushPrint(*args) -> None: ...

flush_print = flushPrint

def clear(ascii: bool = ...) -> None: ...
def cmd(command: str) -> int: ...
def randint(low: int = ..., high: int = ...) -> int: ...
def e(code: Union[str, int, None] = ...) -> NoReturn: ...
def gp(
    keycount: int = ..., chars: list = ..., bytes: bool = ...
) -> Union[str, bytes]: ...
def gh(
    keycount: int = ..., chars: list = ..., char: str = ..., bytes: bool = ...
) -> Union[str, bytes]: ...
def printt(text: str, delay: float = ..., newline: bool = ...) -> None: ...
def sleep(seconds: float = ...) -> None: ...
def rseed(seed: Any = ..., version: int = ...) -> None: ...

T = TypeVar("T")

def robj(iterable: Iterable[T]) -> T: ...
def Color(
    r: int = ..., g: int = ..., b: int = ..., bcolor: bool = ..., flush: bool = ...
) -> Union[None, str]: ...

class bcolors:
    INVERSE: str
    @staticmethod
    def fINVERSE() -> None: ...
    RESET: str
    RWHITE: str
    WHITE: str
    FAILINVERSE: str
    @staticmethod
    def fWHITE() -> None: ...
    @staticmethod
    def fRWHITE() -> None: ...
    @staticmethod
    def fFAILINVERSE() -> None: ...
    @staticmethod
    def fRESET() -> None: ...
    BROWN: str
    @staticmethod
    def fBROWN() -> None: ...
    WARNING: str
    @staticmethod
    def fWARNING() -> None: ...
    FAIL: str
    @staticmethod
    def fFAIL() -> None: ...
    OK: str
    @staticmethod
    def fOK() -> None: ...
    CYAN: str
    @staticmethod
    def fCYAN() -> None: ...
    WOOD: str
    @staticmethod
    def fWOOD() -> None: ...
    REPLIT: str
    @staticmethod
    def fREPLIT() -> None: ...
    GREEN = OK
    fGREEN = fOK
    YELLOW = WARNING
    fYELLOW = fWARNING
    RED = FAIL
    fRED = fFAIL

    class bold:
        BROWN: str
        @staticmethod
        def fBROWN() -> None: ...
        WARNING: str
        @staticmethod
        def fWARNING() -> None: ...
        FAIL: str
        @staticmethod
        def fFAIL() -> None: ...
        OK: str
        @staticmethod
        def fOK() -> None: ...
        CYAN: str
        @staticmethod
        def fCYAN() -> None: ...
        WOOD: str
        @staticmethod
        def fWOOD() -> None: ...
        WHITE: str
        @staticmethod
        def fWHITE() -> None: ...
        RWHITE: str
        @staticmethod
        def fRWHITE() -> None: ...
        REPLIT: str
        @staticmethod
        def fREPLIT() -> None: ...
        GREEN = OK
        fGREEN = fOK
        YELLOW = WARNING
        fYELLOW = fWARNING
        RED = FAIL
        fRED = fFAIL

replitCursor: str
replit_cursor = replitCursor
cast = TypeVar("cast")

def inputCast(
    prompt: str = ..., cast: Type = ..., badCastMessage: str = ...
) -> cast: ...
def replitInput(
    prompt: str = ..., cast: Type = ..., badCastMessage: str = ...
) -> cast: ...

replit_input = replitInput

def cprint(text: str = ...) -> None: ...

class ProgramWarnings(UserWarning): ...
class AssertationWarning(UserWarning): ...

class console:
    __counters__: dict
    __warnings__: List[str]
    @staticmethod
    def log(*args, **kwargs) -> None: ...
    @staticmethod
    def info(*args, **kwargs) -> None: ...
    @staticmethod
    def debug(*args, **kwargs) -> None: ...
    @staticmethod
    def warn(warning: Any, class_: Optional[Type[Warning]] = ...) -> None: ...
    @staticmethod
    def error(*args, **kwargs) -> None: ...
    @staticmethod
    def assert_(condition: bool, message: str = ...) -> None: ...
    @staticmethod
    def count(label: str = ...) -> None: ...
    @staticmethod
    def countReset(label: str = ...) -> None: ...
    @staticmethod
    def clear(ascii: bool = ...) -> None: ...

sql: Type

def removePrefix(text: str, prefix: str) -> str: ...

remove_prefix = removePrefix

def removeSuffix(text: str, suffix: str) -> str: ...

remove_suffix = removeSuffix

def isMath(equation: str) -> bool: ...
def makeError(
    name: str, message: object, module: str = ..., raise_: bool = ...
) -> Union[None, object]: ...

class cur:
    @staticmethod
    def hide() -> None: ...
    @staticmethod
    def show() -> None: ...

def hidden(func): ...
def menu(options: dict) -> object: ...
