from ctypes import Array, c_float, c_int
from typing import Any, Literal
def get_model_matrix(array_type=..., glGetMethod=...) -> Array[c_float]:
    ...

def get_projection_matrix(array_type=..., glGetMethod=...) -> Array[c_float]:
    ...

def get_viewport() -> Array[c_int]:
    ...

def get_direction_vectors() -> tuple[tuple[Any, Any, Any], tuple[Any, Any, Any], tuple[Any, Any, Any]]:
    ...

def get_view_direction_vectors() -> tuple[tuple[Any, Any, Any], tuple[Any, Any, Any], tuple[Any, Any, Any]]:
    ...

def get_basis_vectors() -> tuple[tuple[Literal[1], Literal[0], Literal[0]], tuple[Literal[0], Literal[1], Literal[0]], tuple[Literal[0], Literal[0], Literal[1]]]:
    ...

def screen_to_model(x, y, z) -> tuple[float, float, float]:
    ...

def model_to_screen(x, y, z) -> tuple[float, float, float]:
    ...

def vec_subs(a, b) -> tuple[Any, ...]:
    ...

def billboard_matrix() -> None:
    ...

def create_bounds() -> list[list[Any]]:
    ...

def update_bounds(b, v) -> None:
    ...

def interpolate(a_min, a_max, a_ratio):
    ...

def rinterpolate(a_min, a_max, a_value):
    ...

def interpolate_color(color1, color2, ratio) -> tuple[Any, ...]:
    ...

def scale_value(v, v_min, v_len):
    ...

def scale_value_list(flist) -> list[Any]:
    ...

def strided_range(r_min, r_max, stride, max_steps=...) -> list[Any]:
    ...

def parse_option_string(s) -> dict[Any, Any] | None:
    ...

def dot_product(v1, v2) -> int:
    ...

def vec_sub(v1, v2) -> tuple[Any, ...]:
    ...

def vec_mag(v) -> Any:
    ...

