from typing import Any, Literal, Self
from sympy.core.numbers import Integer
from sympy.external.gmpy import GROUND_TYPES
from sympy.utilities.decorator import doctest_depends_on
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 __str__(self) -> str:
        ...
    
    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 = ...
