useDynLib(pls4all, .registration = TRUE)

importFrom(stats, model.frame, model.matrix, model.response, na.omit,
           na.pass, terms, delete.response, .getXlevels, predict)

export(n4m_version)
export(n4m_abi_version)
export(n4m_fit)
export(n4m_predict)

# Tier 1 — MethodResult fits
export(sparse_simpls_fit)
export(cppls_fit)
export(weighted_pls_fit)
export(mb_pls_fit)
export(pls_glm_fit)
export(mir_pls_fit)

# Tier 1 — selectors
export(vip_select)
export(coefficient_select)
export(selectivity_ratio_select)
export(spa_select)
export(cars_select)

# Tier 1 — diagnostics
export(pls_diagnostics)
export(approximate_press)
export(pls_monitoring)

# Unified low-level dispatcher (33 fits + 24 selectors + 4 diagnostics)
export(n4m_method)
export(pls4all_method)

# Tier 1 — extra MethodResult fits (via dispatcher)
export(ecr_fit)
export(di_pls_fit)
export(robust_pls_fit)
export(ridge_pls_fit)
export(continuum_regression_fit)
export(recursive_pls_fit)
export(n_pls_fit)
export(kernel_pls_fit)
export(o2pls_fit)
export(sparse_pls_da_fit)
export(group_sparse_pls_fit)
export(fused_sparse_pls_fit)
export(so_pls_fit)
export(on_pls_fit)
export(rosa_fit)
export(bagging_pls_fit)
export(boosting_pls_fit)
export(random_subspace_pls_fit)
export(gpr_pls_fit)
export(pls_qda_fit)
export(pls_cox_fit)
export(pds_fit)
export(ds_fit)
export(missing_aware_nipals_fit)
export(lw_pls_fit)
export(pls_lda_fit)
export(pls_logistic_fit)

# Tier 1 — extra selectors
export(stability_select)
export(uve_select)
export(interval_select)
export(random_frog_select)
export(scars_select)
export(ga_select)
export(pso_select)
export(vissa_select)
export(shaving_select)
export(bve_select)
export(t2_select)
export(wvc_select)
export(wvc_threshold_select)
export(emcuve_select)
export(randomization_select)
export(bipls_select)
export(sipls_select)
export(rep_select)
export(ipw_select)
export(st_select)
export(iriv_select)
export(irf_select)
export(vip_spa_select)

# Tier 1 — extra diagnostics
export(one_se_rule)

# Tier 2 — base R formula interface (idiomatic style)
export(pls)
export(opls)
export(plsr)
export(pcr)
export(mvr)
export(pls_mdatools)
export(MSEP)
export(RMSEP)
export(R2)
export(selectNcomp)
S3method(predict, n4m_fit)
S3method(coef, n4m_fit)
S3method(print, n4m_fit)
S3method(summary, n4m_fit)
S3method(print, summary.n4m_fit)
S3method(predict, n4m_mvr)
S3method(coef, n4m_mvr)
S3method(print, n4m_mvr)
S3method(summary, n4m_mvr)
S3method(print, summary.n4m_mvr)
S3method(MSEP, n4m_mvr)
S3method(RMSEP, n4m_mvr)
S3method(R2, n4m_mvr)
S3method(print, n4m_mvrVal)
S3method(predict, n4m_mdatools_pls)
S3method(print, n4m_mdatools_pls)

# Tier 2 — formula-based wrappers around MethodResult fits
export(sparse_pls)
export(cppls)
export(di_pls)
export(weighted_pls)
export(mb_pls)
export(pls_glm)
export(mir_pls)
export(ecr)
export(robust_pls)
export(ridge_pls)
export(continuum_regression)
export(recursive_pls)
export(bagging_pls)
export(boosting_pls)
export(random_subspace_pls)
export(o2pls)
export(missing_aware_nipals)
S3method(predict, n4m_method_fit)
S3method(predict, n4m_recursive_fit)
S3method(coef, n4m_method_fit)
S3method(print, n4m_method_fit)
S3method(summary, n4m_method_fit)
S3method(print, summary.n4m_method_fit)

export(aom_preprocess)
export(aom_pls)
export(aompls)
export(pop_pls)
export(poppls)

# Locked ML-namespace role aliases (ABI 2.0, TARGET_NAMESPACE_ML.md)
export(n4m_feature_select_bipls)
export(n4m_feature_select_bve)
export(n4m_feature_select_cars)
export(n4m_feature_select_coefficient)
export(n4m_feature_select_emcuve)
export(n4m_feature_select_ga)
export(n4m_feature_select_interval)
export(n4m_feature_select_ipw)
export(n4m_feature_select_irf)
export(n4m_feature_select_iriv)
export(n4m_feature_select_pso)
export(n4m_feature_select_random_frog)
export(n4m_feature_select_randomization)
export(n4m_feature_select_rep)
export(n4m_feature_select_scars)
export(n4m_feature_select_selectivity_ratio)
export(n4m_feature_select_shaving)
export(n4m_feature_select_sipls)
export(n4m_feature_select_spa)
export(n4m_feature_select_st)
export(n4m_feature_select_stability)
export(n4m_feature_select_t2)
export(n4m_feature_select_uve)
export(n4m_feature_select_vip)
export(n4m_feature_select_vip_spa)
export(n4m_feature_select_vissa)
export(n4m_feature_select_wvc)
export(n4m_feature_select_wvc_threshold)
