# Copyright (c) 2025 ZeroProof Team
# SPDX-License-Identifier: MIT

"""Signed Common Meadow primitives.

The package now includes the Phase 1 SCMValue semantics with absorptive
bottom handling; see ``todo.md`` for the remaining roadmap.
"""

from __future__ import annotations

from .fracterm import Fracterm, Polynomial
from .ops import (
    scm_add,
    scm_add_jax,
    scm_add_numpy,
    scm_add_torch,
    scm_cos,
    scm_cos_jax,
    scm_cos_numpy,
    scm_cos_torch,
    scm_div,
    scm_div_jax,
    scm_div_numpy,
    scm_div_torch,
    scm_exp,
    scm_exp_jax,
    scm_exp_numpy,
    scm_exp_torch,
    scm_inv,
    scm_inv_jax,
    scm_inv_numpy,
    scm_inv_torch,
    scm_log,
    scm_log_jax,
    scm_log_numpy,
    scm_log_torch,
    scm_mul,
    scm_mul_jax,
    scm_mul_numpy,
    scm_mul_torch,
    scm_neg,
    scm_neg_jax,
    scm_neg_numpy,
    scm_neg_torch,
    scm_pow,
    scm_pow_jax,
    scm_pow_numpy,
    scm_pow_torch,
    scm_sin,
    scm_sin_jax,
    scm_sin_numpy,
    scm_sin_torch,
    scm_sqrt,
    scm_sqrt_jax,
    scm_sqrt_numpy,
    scm_sqrt_torch,
    scm_sub,
    scm_sub_jax,
    scm_sub_numpy,
    scm_sub_torch,
    scm_tan,
    scm_tan_jax,
    scm_tan_numpy,
    scm_tan_torch,
)
from .sign import WeakSignState, weak_sign
from .value import SCMValue, scm_bottom, scm_complex, scm_real

__all__ = [
    "SCMValue",
    "scm_bottom",
    "scm_complex",
    "scm_real",
    "Fracterm",
    "Polynomial",
    "WeakSignState",
    "weak_sign",
    "scm_add",
    "scm_add_numpy",
    "scm_add_torch",
    "scm_add_jax",
    "scm_sub",
    "scm_sub_numpy",
    "scm_sub_torch",
    "scm_sub_jax",
    "scm_mul",
    "scm_mul_numpy",
    "scm_mul_torch",
    "scm_mul_jax",
    "scm_div",
    "scm_div_numpy",
    "scm_div_torch",
    "scm_div_jax",
    "scm_inv",
    "scm_inv_numpy",
    "scm_inv_torch",
    "scm_inv_jax",
    "scm_neg",
    "scm_neg_numpy",
    "scm_neg_torch",
    "scm_neg_jax",
    "scm_pow",
    "scm_pow_numpy",
    "scm_pow_torch",
    "scm_pow_jax",
    "scm_log",
    "scm_log_numpy",
    "scm_log_torch",
    "scm_log_jax",
    "scm_exp",
    "scm_exp_numpy",
    "scm_exp_torch",
    "scm_exp_jax",
    "scm_sqrt",
    "scm_sqrt_numpy",
    "scm_sqrt_torch",
    "scm_sqrt_jax",
    "scm_sin",
    "scm_sin_numpy",
    "scm_sin_torch",
    "scm_sin_jax",
    "scm_cos",
    "scm_cos_numpy",
    "scm_cos_torch",
    "scm_cos_jax",
    "scm_tan",
    "scm_tan_numpy",
    "scm_tan_torch",
    "scm_tan_jax",
]
