"""
urvol: Unit Root Tests for Time Series with Non-Stationary Volatility

This library implements bootstrap and simulation-based unit root tests robust to 
non-stationary volatility as described in:

1. Cavaliere & Taylor (2008): "Bootstrap Unit Root Tests for Time Series with 
   Nonstationary Volatility", Econometric Theory, 24, 43-71.

2. Cavaliere & Taylor (2007): "Testing for unit roots in time series models with 
   non-stationary volatility", Journal of Econometrics, 140, 919-947.

Author: Dr Merwan Roudane
Email: merwanroudane920@gmail.com
GitHub: https://github.com/merwanroudane/urvol
"""

__version__ = "1.1.0"
__author__ = "Dr Merwan Roudane"
__email__ = "merwanroudane920@gmail.com"

from .m_tests import MZa, MZt, MSB, compute_m_tests
from .bootstrap_tests import (
    wild_bootstrap_test,
    bootstrap_mza,
    bootstrap_mzt,
    bootstrap_msb,
)
from .simulation_tests import (
    simulation_based_test,
    estimate_variance_profile,
    simulate_critical_values,
)
from .critical_values import (
    get_critical_value,
    generate_critical_value_table,
)
from .volatility_models import (
    single_break,
    double_break,
    trending_volatility,
    smooth_transition,
)
from .utils import (
    detrend,
    local_gls_detrend,
    ar_spectral_density,
    select_lag_length,
)

__all__ = [
    # M statistics
    "MZa",
    "MZt",
    "MSB",
    "compute_m_tests",
    # Bootstrap tests
    "wild_bootstrap_test",
    "bootstrap_mza",
    "bootstrap_mzt",
    "bootstrap_msb",
    # Simulation-based tests
    "simulation_based_test",
    "estimate_variance_profile",
    "simulate_critical_values",
    # Critical values
    "get_critical_value",
    "generate_critical_value_table",
    # Volatility models
    "single_break",
    "double_break",
    "trending_volatility",
    "smooth_transition",
    # Utilities
    "detrend",
    "local_gls_detrend",
    "ar_spectral_density",
    "select_lag_length",
]
