from typing import Any

from sympy.codegen.ast import Type
from sympy.core.function import UndefinedFunction
from sympy.core.power import Pow
from sympy.printing.codeprinter import CodePrinter

known_functions_C89 = ...
known_functions_C99 = ...
reserved_words = ...
reserved_words_c99 = ...

def get_math_macros() -> dict[Any | type[UndefinedFunction] | Pow, str]: ...

class C89CodePrinter(CodePrinter):
    printmethod = ...
    language = ...
    standard = ...
    reserved_words = ...
    _default_settings: dict[str, Any] = ...
    type_aliases = ...
    type_mappings: dict[Type, Any] = ...
    type_headers = ...
    type_macros: dict[Type, tuple[str, ...]] = ...
    type_func_suffixes = ...
    type_literal_suffixes = ...
    type_math_macro_suffixes = ...
    math_macros = ...
    _ns = ...
    _kf: dict[str, Any] = ...
    def __init__(self, settings=...) -> None: ...
    def indent_code(self, code) -> str | list[Any]: ...

    _print_List = ...
    _print_union = ...

class C99CodePrinter(C89CodePrinter):
    standard = ...
    reserved_words = ...
    type_mappings = ...
    type_headers = ...
    _kf: dict[str, Any] = ...
    _prec_funcs = ...

class C11CodePrinter(C99CodePrinter): ...

c_code_printers = ...
