# Univariate Interpolation
from __future__ import annotations

from cupyx.scipy.interpolate._polyint import BarycentricInterpolator  # NOQA
from cupyx.scipy.interpolate._polyint import KroghInterpolator  # NOQA
from cupyx.scipy.interpolate._polyint import barycentric_interpolate  # NOQA
from cupyx.scipy.interpolate._polyint import krogh_interpolate  # NOQA
from cupyx.scipy.interpolate._polyint import interp1d  # NOQA
from cupyx.scipy.interpolate._interpolate import PPoly, BPoly, NdPPoly  # NOQA
from cupyx.scipy.interpolate._cubic import (  # NOQA
    CubicHermiteSpline, PchipInterpolator, pchip_interpolate,  # NOQA
    Akima1DInterpolator, CubicSpline)  # NOQA

# Multivariate interpolation
from cupyx.scipy.interpolate._interpnd import LinearNDInterpolator  # NOQA
from cupyx.scipy.interpolate._interpnd import (  # NOQA
    CloughTocher2DInterpolator)  # NOQA
from cupyx.scipy.interpolate._ndgriddata import NearestNDInterpolator  # NOQA

# 1-D Splines
from cupyx.scipy.interpolate._bspline import BSpline, splantider, splder  # NOQA
from cupyx.scipy.interpolate._bspline2 import make_interp_spline  # NOQA
from cupyx.scipy.interpolate._bspline2 import make_lsq_spline    # NOQA

# Multivariate interpolation
from cupyx.scipy.interpolate._ndbspline import NdBSpline  # NOQA

# Radial basis functions
from cupyx.scipy.interpolate._rbfinterp import RBFInterpolator  # NOQA
from cupyx.scipy.interpolate._rgi import RegularGridInterpolator  # NOQA
from cupyx.scipy.interpolate._rgi import interpn  # NOQA

# Backward compatibility
pchip = PchipInterpolator  # NOQA

# FITPACK smoothing splines
from cupyx.scipy.interpolate._fitpack_repro import UnivariateSpline   # NOQA
from cupyx.scipy.interpolate._fitpack_repro import InterpolatedUnivariateSpline   # NOQA
from cupyx.scipy.interpolate._fitpack_repro import LSQUnivariateSpline   # NOQA
