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 = ...
