#useDynLib(MXM, .registration = TRUE)

#testIndLogistic
importFrom("nnet", "multinom")
importFrom("ordinal", "clm")

#testIndRQ
importFrom("quantreg", rq)

#testIndNB
importFrom("MASS", glm.nb, rlm)

# censIndCR and censIndWR
importFrom("survival", is.Surv, coxph, Surv, survreg, clogit, strata, survConcordance)

#testIndGLMM
importFrom("lme4", "lmer", "glmer")

#testIndSpeedglm
importFrom("speedglm", "speedlm", "speedglm")

#robust glms
#importFrom("robust", glmRob, lmsreg)

importFrom("energy", "dcov.test", "pdcor.test")

importFrom("utils", combn)
importFrom("MASS", lm.ridge)

#more
importFrom("methods", "new", "as")
importFrom("stats", "predict", "pt", "pf", "binomial", "family", "predict.lm", "BIC", "logLik", "median", 
            "poisson", "sd", "xtabs", "fitted", "rbinom", "runif", "drop1", "weights", "inverse.gaussian", 
            "Gamma", "gaussian", "nlm", "optim", "rnorm", "glm", "anova", "lm", "model.frame", 
            "model.matrix", "glm.fit", "lm.fit", "deviance", "as.formula", "pchisq", "lm.wfit",  "coef", "resid", 
            "cor", "pnorm", "mahalanobis", "var", ".lm.fit","contrasts", 
           "model.response", "optimise", "quantile")

importFrom("grDevices", "dev.new")
  
importFrom("graphics", barplot, grid, lines, legend, axis, plot, points, abline)

importFrom("visNetwork", "visNetwork", "visPhysics", "visInteraction", "visOptions", "%>%")

importFrom("relations", relation, relation_incidence, transitive_closure)

importFrom("Rfast", colVars, univglms, colmeans, g2Test_univariate, g2Test_univariate_perm, g2tests, g2tests_perm, 
           g2Test, g2Test_perm, sort_mat, which_isFactor, standardise, colrange, regression, zip.mle, beta.mle, 
           rmvnorm, rowMaxs, rowsums, colsums, score.glms, score.betaregs, score.weibregs, score.multinomregs, 
           score.negbinregs, score.gammaregs, sort_unique, Var, data.frame.to_matrix, fs.reg, check_data, colMaxs, 
           cor.fsreg, pc.skel, group.sum, rint.regs, comb_n)


import("doParallel")
import("parallel")
import("foreach")


export(SES, InternalSES, MMPC, InternalMMPC, SES.temporal, InternalSES.temporal, MMPC.temporal, InternalMMPC.temporal, mmhc.skel, pc.skel, 
       pc.con, censIndCR, censIndWR, censIndER, gSquare, testIndFisher, testIndLogistic, testIndRQ, testIndGLMM, testIndMVreg, testIndBeta, 
       testIndNB, testIndClogit, testIndPois, testIndReg, testIndSpearman, testIndZIP, testIndSpeedglm, testIndBinom, cv.ses, auc.mxm, 
       acc.mxm, acc_multinom.mxm, mse.mxm, ci.mxm, ciwr.mxm,ord_mae.mxm, poisdev.mxm, nbdev.mxm, glm.mxm, lm.mxm, pois.mxm, nb.mxm, 
       multinom.mxm, rq.mxm, lmrob.mxm, ordinal.mxm, coxph.mxm, beta.mxm, weibreg.mxm, ridge.reg, ridgereg.cv, ridge.plot, ses.model, 
       mmpc.model, nei, reg.fit, pc.or, undir.path, rdag, mb, mmmb, permcor, findAncestors, findDescendants, transitiveClosure, dag2eg, 
       bic.fsreg, bic.glm.fsreg, fs.reg, glm.fsreg, lm.fsreg, glm.bsreg, tc.plot, cv.mmpc, mmpc.path, condi, cat.ci, partialcor, auc, 
       generatefolds, ma.ses, ma.mmpc, equivdags, testIndIGreg, bs.reg, zip.mod, zip.regs, beta.regs, beta.mod, plotnetwork, 
       univregs, iamb.bs, iamb, dist.condi, permFisher, permcorrels, lm.fsreg_heavy, score.univregs, perm.univregs, perm.zipregs, perm.betaregs, 
       wald.poissonregs, wald.logisticregs, rdag2, wald.univregs, wald.betaregs, wald.zipregs, waldBeta, waldBinary, waldBinom, waldCR, waldER, 
       waldWR, waldIGreg, waldMMreg, waldNB, waldPois, waldOrdinal, waldZIP, permgSquare, permBeta, permLogistic, permBinom, permCR, permER, 
       permWR, permClogit, permReg, permMVreg, permRQ, permIGreg, permNB, permPois, permZIP, perm.mmpc, perm.ses, wald.mmpc, wald.ses, 
       cv.waldses, cv.waldmmpc, cv.permses, cv.permmmpc, waldses.model, waldmmpc.model, waldmmpc.path, mmpc.temporal.model, mmpcbackphase, shd, 
       is.dag, topological_sort, corfs.network, testIndGamma, waldGamma, permGamma, testIndNormLog, waldNormLog, permNormLog, gammafsreg, 
       normlog.fsreg, gammabsreg, normlog.bsreg, bic.gammafsreg, bic.normlog.fsreg, testIndTobit, waldTobit, permTobit, permDcor, rint.regs,
	     ordinal.reg, fbed.reg, ebic.bsreg, ci.mm, ci.fast, ci.mm2, ci.fast2, rmdag)

exportClasses("SESoutput")
exportClasses("MMPCoutput")
exportClasses("mases.output")
exportClasses("mammpc.output")
exportClasses("SES.temporal.output")
exportClasses("MMPC.temporal.output")
#exportClasses("perm.mmpc.output")
#exportClasses("wald.mmpc.output")
exportMethods("plot", "summary")