from typing import Any, Literal

def poly_LC(f, K): ...
def poly_TC(f, K): ...

dmp_LC = ...
dmp_TC = ...

def dmp_ground_LC(f, u, K): ...
def dmp_ground_TC(f, u, K): ...
def dmp_true_LT(f, u, K) -> tuple[tuple[Any, ...], Any]: ...
def dup_degree(f) -> int: ...
def dmp_degree(f, u) -> int: ...
def dmp_degree_in(f, j, u) -> int: ...
def dmp_degree_list(f, u) -> tuple[Any, ...]: ...
def dup_strip(f): ...
def dmp_strip(f, u) -> list[list[Any]]: ...
def dmp_validate(f, K=...) -> tuple[Any | list[list[Any]], Any]: ...
def dup_reverse(f): ...
def dup_copy(f) -> list[Any]: ...
def dmp_copy(f, u) -> list[Any]: ...
def dup_to_tuple(f) -> tuple[Any, ...]: ...
def dmp_to_tuple(f, u) -> tuple[Any, ...]: ...
def dup_normal(f, K): ...
def dmp_normal(f, u, K) -> list[list[Any]]: ...
def dup_convert(f, K0, K1): ...
def dmp_convert(f, u, K0, K1) -> list[list[Any]]: ...
def dup_from_sympy(f, K): ...
def dmp_from_sympy(f, u, K) -> list[list[Any]]: ...
def dup_nth(f, n, K): ...
def dmp_nth(f, n, u, K) -> list[list[Any]]: ...
def dmp_ground_nth(f, N, u, K): ...
def dmp_zero_p(f, u) -> bool: ...
def dmp_zero(u) -> list[list[Any]]: ...
def dmp_one_p(f, u, K) -> bool: ...
def dmp_one(u, K) -> list[list[Any]] | list[Any]: ...
def dmp_ground_p(f, c, u) -> bool: ...
def dmp_ground(c, u) -> list[list[Any]] | list[Any]: ...
def dmp_zeros(n, u, K) -> list[Any] | list[list[list[Any]]]: ...
def dmp_grounds(c, n, u) -> list[Any] | list[list[list[Any]] | Any | list[Any]]: ...
def dmp_negative_p(f, u, K): ...
def dmp_positive_p(f, u, K): ...
def dup_from_dict(f, K) -> list[Any]: ...
def dup_from_raw_dict(f, K) -> list[Any]: ...
def dmp_from_dict(f, u, K) -> list[Any] | list[list[Any]]: ...
def dup_to_dict(f, K=..., zero=...) -> dict[tuple[Literal[0]], Any] | dict[Any, Any]: ...
def dup_to_raw_dict(f, K=..., zero=...) -> dict[int, Any] | dict[Any, Any]: ...
def dmp_to_dict(f, u, K=..., zero=...) -> dict[tuple[Literal[0]], Any] | dict[Any, Any]: ...
def dmp_swap(f, i, j, u, K) -> list[Any] | list[list[Any]]: ...
def dmp_permute(f, P, u, K) -> list[Any] | list[list[Any]]: ...
def dmp_nest(f, l, K) -> list[list[Any]] | list[Any]: ...
def dmp_raise(f, l, u, K) -> list[list[Any]] | list[list[list[Any]] | Any | list[Any]] | list[Any]: ...
def dup_deflate(f, K) -> tuple[Literal[1], Any] | tuple[int, Any]: ...
def dmp_deflate(
    f, u, K
) -> tuple[Any, Any] | tuple[tuple[Any, ...], Any] | tuple[tuple[Any, ...], list[Any] | Any | list[list[Any]]]: ...
def dup_multi_deflate(polys, K) -> tuple[Literal[1], Any] | tuple[int, tuple[Any, ...]]: ...
def dmp_multi_deflate(
    polys, u, K
) -> tuple[tuple[int], Any | tuple[Any, ...]] | tuple[tuple[Any, ...], Any] | tuple[tuple[Any, ...], tuple[Any, ...]]: ...
def dup_inflate(f, m, K) -> list[Any]: ...
def dmp_inflate(f, M, u, K) -> list[Any]: ...
def dmp_exclude(f, u, K) -> tuple[list[Any], Any, Any] | tuple[list[Any], list[Any] | Any | list[list[Any]], Any]: ...
def dmp_include(f, J, u, K) -> list[Any] | list[list[Any]]: ...
def dmp_inject(f, u, K, front=...) -> tuple[list[Any] | Any | list[list[Any]], Any]: ...
def dmp_eject(f, u, K, front=...) -> list[Any] | list[list[Any]]: ...
def dup_terms_gcd(f, K) -> tuple[Literal[0], Any] | tuple[int, Any]: ...
def dmp_terms_gcd(
    f, u, K
) -> tuple[Any, Any] | tuple[tuple[Any, ...], Any] | tuple[tuple[Any, ...], list[Any] | Any | list[list[Any]]]: ...
def dmp_list_terms(f, u, K, order=...) -> list[tuple[Any, Any]] | list[Any]: ...
def dup_apply_pairs(f, g, h, args, K): ...
def dmp_apply_pairs(f, g, h, args, u, K) -> list[list[Any]]: ...
def dup_slice(f, m, n, K) -> list[Any]: ...
def dmp_slice(f, m, n, u, K) -> list[Any] | list[list[Any]]: ...
def dmp_slice_in(f, m, n, j, u, K) -> list[Any] | list[list[Any]]: ...
def dup_random(n, a, b, K) -> list[Any]: ...
