// Generated by using Rcpp::compileAttributes() -> do not edit by hand
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

#include <Rcpp.h>

using namespace Rcpp;

// fitBinomialTestHMMcontextTransition
List fitBinomialTestHMMcontextTransition(const IntegerVector& counts_total, const IntegerVector& counts_meth, const IntegerVector& context, const IntegerVector& transitionContext, const NumericVector& distances, const List& params, const int& algorithm, const int& update_procedure);
RcppExport SEXP _methimpute_fitBinomialTestHMMcontextTransition(SEXP counts_totalSEXP, SEXP counts_methSEXP, SEXP contextSEXP, SEXP transitionContextSEXP, SEXP distancesSEXP, SEXP paramsSEXP, SEXP algorithmSEXP, SEXP update_procedureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const IntegerVector& >::type counts_total(counts_totalSEXP);
    Rcpp::traits::input_parameter< const IntegerVector& >::type counts_meth(counts_methSEXP);
    Rcpp::traits::input_parameter< const IntegerVector& >::type context(contextSEXP);
    Rcpp::traits::input_parameter< const IntegerVector& >::type transitionContext(transitionContextSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type distances(distancesSEXP);
    Rcpp::traits::input_parameter< const List& >::type params(paramsSEXP);
    Rcpp::traits::input_parameter< const int& >::type algorithm(algorithmSEXP);
    Rcpp::traits::input_parameter< const int& >::type update_procedure(update_procedureSEXP);
    rcpp_result_gen = Rcpp::wrap(fitBinomialTestHMMcontextTransition(counts_total, counts_meth, context, transitionContext, distances, params, algorithm, update_procedure));
    return rcpp_result_gen;
END_RCPP
}
// cleanup
void cleanup();
RcppExport SEXP _methimpute_cleanup() {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    cleanup();
    return R_NilValue;
END_RCPP
}
// fitHMM
List fitHMM(const IntegerVector& counts, const NumericVector& distances, const List& params, const int& algorithm);
RcppExport SEXP _methimpute_fitHMM(SEXP countsSEXP, SEXP distancesSEXP, SEXP paramsSEXP, SEXP algorithmSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const IntegerVector& >::type counts(countsSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type distances(distancesSEXP);
    Rcpp::traits::input_parameter< const List& >::type params(paramsSEXP);
    Rcpp::traits::input_parameter< const int& >::type algorithm(algorithmSEXP);
    rcpp_result_gen = Rcpp::wrap(fitHMM(counts, distances, params, algorithm));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_methimpute_fitBinomialTestHMMcontextTransition", (DL_FUNC) &_methimpute_fitBinomialTestHMMcontextTransition, 8},
    {"_methimpute_cleanup", (DL_FUNC) &_methimpute_cleanup, 0},
    {"_methimpute_fitHMM", (DL_FUNC) &_methimpute_fitHMM, 4},
    {NULL, NULL, 0}
};

RcppExport void R_init_methimpute(DllInfo *dll) {
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
}
