import builtins
from typing import Any


class LaurentSeriesRingElement:
    def __init__(self, parent: Any, f: Any, n: int = 0) -> None: ...
    def __reduce__(self) -> tuple: ...
    def change_ring(self, R: Any) -> LaurentSeriesRingElement: ...
    def is_unit(self) -> bool: ...
    def is_zero(self) -> bool: ...
    def is_monomial(self) -> bool: ...
    def __bool__(self) -> bool: ...
    def _im_gens_(
        self, codomain: Any, im_gens: builtins.list[Any], base_map: Any | None = None
    ) -> LaurentSeriesRingElement: ...
    def _normalize(self) -> None: ...
    def _repr_(self) -> str: ...
    def verschiebung(self, n: int) -> LaurentSeriesRingElement: ...

    V = verschiebung

    def _latex_(self) -> str: ...
    def __hash__(self) -> int: ...
    def __getitem__(self, i: int | slice) -> Any: ...
    def __iter__(self) -> Any: ...
    def list(self) -> builtins.list[Any]: ...
    def coefficients(self) -> builtins.list[Any]: ...
    def residue(self) -> Any: ...
    def exponents(self) -> builtins.list[int]: ...
    def laurent_polynomial(self) -> Any: ...
    def lift_to_precision(
        self, absprec: int | None = None
    ) -> LaurentSeriesRingElement: ...
    def __setitem__(self, n: int, value: Any) -> None: ...
    def _unsafe_mutate(self, i: int, value: Any) -> None: ...
    def _add_(self, right_m: Any) -> LaurentSeriesRingElement: ...
    def _sub_(self, right_m: Any) -> LaurentSeriesRingElement: ...
    def add_bigoh(self, prec: int) -> LaurentSeriesRingElement: ...
    def O(self, prec: int) -> LaurentSeriesRingElement: ...
    def degree(self) -> int: ...
    def __neg__(self) -> LaurentSeriesRingElement: ...
    def _mul_(self, right_r: Any) -> LaurentSeriesRingElement: ...
    def _rmul_(self, c: Any) -> LaurentSeriesRingElement: ...
    def _lmul_(self, c: Any) -> LaurentSeriesRingElement: ...
    def __pow__(self, r: Any, dummy: Any) -> LaurentSeriesRingElement: ...
    def shift(self, k: int) -> LaurentSeriesRingElement: ...
    def __lshift__(self, k: int) -> LaurentSeriesRingElement: ...
    def __rshift__(self, k: int) -> LaurentSeriesRingElement: ...
    def truncate(self, n: int) -> LaurentSeriesRingElement: ...
    def truncate_laurentseries(self, n: int) -> LaurentSeriesRingElement: ...
    def truncate_neg(self, n: int) -> LaurentSeriesRingElement: ...
    def _div_(self, right_r: Any) -> LaurentSeriesRingElement: ...
    def common_prec(self, other: LaurentSeriesRingElement) -> int: ...
    def common_valuation(self, other: LaurentSeriesRingElement) -> int: ...
    def _richcmp_(self, right_r: Any, op: int) -> bool: ...
    def valuation_zero_part(self) -> Any: ...
    def valuation(self) -> int: ...
    def variable(self) -> str: ...
    def prec(self) -> int: ...
    def precision_absolute(self) -> int: ...
    def precision_relative(self) -> int: ...
    def __copy__(self) -> LaurentSeriesRingElement: ...
    def reverse(self, precision: int | None = None) -> LaurentSeriesRingElement: ...
    def derivative(self, *args: Any) -> LaurentSeriesRingElement: ...
    def _derivative(self, var: Any | None = None) -> LaurentSeriesRingElement: ...
    def integral(self) -> LaurentSeriesRingElement: ...
    def nth_root(self, n: int, prec: int | None = None) -> LaurentSeriesRingElement: ...
    def power_series(self) -> Any: ...
    def inverse(self) -> LaurentSeriesRingElement: ...
    def __call__(self, *x: Any, **kwds: Any) -> LaurentSeriesRingElement: ...
    def __pari__(self) -> Any: ...
    def map_coefficients(self, f: Any, new_base_ring: Any = None) -> LaurentSeriesRingElement: ...
