useDynLib(hisse, .registration = TRUE)

export(hisse, hisse.null4, MarginRecon, MarginReconGeoSSE, SupportRegion, TransMatMaker, ParDrop, ParEqual, BisseToHisse, plot.hisse.states, SimulateHisse, SimToPhylo, GetModelAveRates, GetModelAveEqFreqs, GeoHiSSE, TransMatMakerGeoHiSSE, SimulateGeoHiSSE, TranslateParsMakerGeoHiSSE, plot.geohisse.states, SupportRegionGeoSSE, GetModelWeight, MuHiSSE, TransMatMakerMuHiSSE, MarginReconMuHiSSE, SupportRegionMuHiSSE, fGeoHiSSE, TransMatMakerfGeoHiSSE, MarginReconfGeoSSE, makeHiSSELikelihood, plot.muhisse.states)
import(ape, data.table, deSolve, GenSA, subplex, nloptr)
importFrom("parallel", "mclapply")
importFrom("phytools", "nodeHeights", "fastAnc", "anc.ML", "getDescendants")
importFrom("grDevices", "colorRampPalette", "nclass.Sturges", "rainbow", "dev.flush", "dev.hold")
importFrom("graphics", "hist", "par", "plot", "rect", "segments", "text", "lines", "plot.new", "plot.window", "points", "strwidth")
importFrom("methods", "hasArg")
importFrom("utils", "capture.output")
importFrom("stats", "dbeta", "density", "quantile", "reorder", "rexp", "runif", "weighted.mean", "rbinom", "median", "optimize", "setNames")
importFrom("diversitree", "tree.classe")
importFrom("plotrix", "draw.arc")
exportClasses('hisse.fit', 'hisse.null4.fit', 'geohisse.fit', 'hisse.states', 'hisse.support', 'geohisse.support', 'hisse.geosse.states', 'muhisse.fit', 'muhisse.states')
S3method(print, hisse.fit)
S3method(print, hisse.null4.fit)
S3method(print, hisse.states)
S3method(print, hisse.geosse.states)
S3method(print, hisse.support)
S3method(print, geohisse.fit)
S3method(print, geohisse.support)
S3method(print, muhisse.fit)
S3method(print, muhisse.states)
S3method(print, muhisse.support)
S3method(plot, hisse.states)
S3method(plot, geohisse.states) 
S3method(plot, muhisse.states)
