# import methods from the corresponding modules
from .filters import filter_lowpass, filter_median, filter_savgol
from .quaternion import (
    left_qmatrix,
    quat_conj,
    quat_inv,
    quat_normalize,
    quat_positive_scalar,
    right_qmatrix,
)
from .se3 import (
    adjoint,
    axis_ang6,
    distance_to_se3,
    matrix2xyzrph,
    matrix_exp6,
    matrix_inverse,
    matrix_log6,
    pose_diff,
    project_to_se3,
    se3_to_vec,
    vec_to_se3,
    xyzrph2matrix,
)
from .so3 import (
    axis_ang3,
    distance_to_so3,
    hpr2quat,
    hpr2rot,
    matrix_exp3,
    matrix_log3,
    project_to_so3,
    quat2hpr,
    quat2rot,
    quat2rph,
    rot2hpr,
    rot2quat,
    rot2rph,
    rot_diff,
    rot_inv,
    rph2quat,
    rph2rot,
    so3_optimization,
    so3_to_vec,
    vec_to_so3,
)
from .vmath import (
    derivative,
    difference,
    distance_traveled,
    max,
    mean,
    median,
    min,
    norm,
    normalize,
    print_stats,
    remove_mean,
    remove_median,
    remove_offset,
    resample,
    saturate,
    std,
    transpose,
    unwrap1pi,
    unwrap2pi,
    unwrap180,
    unwrap360,
    wrap1pi,
    wrap2pi,
    wrap180,
    wrap360,
    wrapunwrap,
    wrapunwrap360,
)

# Get __all__ from the corresponding modules
# filters module
__all__ = [
    "filter_median",
    "filter_savgol",
    "filter_lowpass",
]
# quaternion module
__all__ += [
    "left_qmatrix",
    "right_qmatrix",
    "quat_conj",
    "quat_inv",
    "quat_normalize",
    "quat_positive_scalar",
]
# se3 module
__all__ += [
    "xyzrph2matrix",
    "matrix2xyzrph",
    "matrix_inverse",
    "pose_diff",
    "adjoint",
    "vec_to_se3",
    "se3_to_vec",
    "axis_ang6",
    "matrix_exp6",
    "matrix_log6",
    "project_to_se3",
    "distance_to_se3",
]
# so3 module
__all__ += [
    "rph2rot",
    "hpr2rot",
    "rot2hpr",
    "rot2rph",
    "rot_diff",
    "vec_to_so3",
    "so3_to_vec",
    "axis_ang3",
    "matrix_exp3",
    "matrix_log3",
    "rot_inv",
    "project_to_so3",
    "distance_to_so3",
    "rph2quat",
    "hpr2quat",
    "quat2rph",
    "quat2hpr",
    "quat2rot",
    "rot2quat",
    "so3_optimization",
]
# vmath module
__all__ += [
    "norm",
    "normalize",
    "mean",
    "median",
    "std",
    "min",
    "max",
    "print_stats",
    "remove_offset",
    "remove_mean",
    "remove_median",
    "difference",
    "derivative",
    "resample",
    "distance_traveled",
    "saturate",
    "wrap360",
    "wrap180",
    "wrap2pi",
    "wrap1pi",
    "unwrap2pi",
    "unwrap1pi",
    "unwrap360",
    "unwrap180",
    "wrapunwrap",
    "wrapunwrap360",
    "transpose",
]
