from ..core import ChepyCore
from typing import Any, TypeVar, Union, Literal

AritmeticLogicT = TypeVar("AritmeticLogicT", bound="AritmeticLogic")

class AritmeticLogic(ChepyCore):
    def __init__(self, *data: Any) -> None: ...
    state: Any = ...
    def add(self: AritmeticLogicT, n: Union[int, str]) -> AritmeticLogicT: ...
    def addition(self: AritmeticLogicT, delimiter: Union[str, None]=None) -> AritmeticLogicT: ...
    def sub(self: AritmeticLogicT, n: Union[int, str]) -> AritmeticLogicT: ...
    def subtract(self: AritmeticLogicT, delimiter: Union[str, None]=None) -> AritmeticLogicT: ...
    def multiply(self: AritmeticLogicT, n: int) -> AritmeticLogicT: ...
    def divide(self: AritmeticLogicT, n: int) -> AritmeticLogicT: ...
    def power(self: AritmeticLogicT, n: int) -> AritmeticLogicT: ...
    def sum(self: AritmeticLogicT) -> AritmeticLogicT: ...
    def mean(self: AritmeticLogicT) -> AritmeticLogicT: ...
    def median(self: AritmeticLogicT) -> AritmeticLogicT: ...
    def int_to_base(self: AritmeticLogicT, base: Union[int, str]) -> AritmeticLogicT: ...
    def bit_shift_right(self: AritmeticLogicT, amount: int=1, operation_type: Literal['logical', 'arithmetic']='logical') -> AritmeticLogicT: ...
    def bit_shift_left(self: AritmeticLogicT, amount: int=1) -> AritmeticLogicT: ...
