from typing import Any
from typing_extensions import Self

from sympy.core.numbers import Integer
from sympy.polys.domains.field import Field
from sympy.polys.domains.simpledomain import SimpleDomain

class FiniteField(Field, SimpleDomain):  # type: ignore
    rep = ...
    alias = ...
    is_FF = ...
    is_Numerical = ...
    has_assoc_Ring = ...
    has_assoc_Field = ...
    dom = ...
    mod = ...
    def __init__(self, mod, symmetric=...) -> None: ...
    def __hash__(self) -> int: ...
    def __eq__(self, other) -> bool: ...
    def characteristic(self) -> Any | None: ...
    def get_field(self) -> Self: ...
    def to_sympy(self, a) -> Integer: ...
    def from_sympy(self, a) -> Any | Self: ...
    def from_FF(K1, a, K0=...) -> Any | Self: ...
    def from_FF_python(K1, a, K0=...) -> Any | Self: ...
    def from_ZZ(K1, a, K0=...) -> Any | Self: ...
    def from_ZZ_python(K1, a, K0=...) -> Any | Self: ...
    def from_QQ(K1, a, K0=...) -> Any | Self | None: ...
    def from_QQ_python(K1, a, K0=...) -> Any | Self | None: ...
    def from_FF_gmpy(K1, a, K0=...) -> Any | Self: ...
    def from_ZZ_gmpy(K1, a, K0=...) -> Any | Self: ...
    def from_QQ_gmpy(K1, a, K0=...) -> Any | Self | None: ...
    def from_RealField(K1, a, K0) -> Any | Self | None: ...

GF = ...
FF = ...
