#Dependencies
import(ape)
import(stats)

importFrom("ade4", "randtest", "as.randtest")
importFrom("geiger", "dtt", "ratematrix", "sim.char", "treedata")
importFrom("geometry", "convhulln")
importFrom("graphics", "axis", "boxplot", "hist", "image", "lines", "mtext", "par", "plot", "points", "polygon", "text", "legend", "barplot")
importFrom("grDevices", "colorRampPalette", "grey")
importFrom("methods", "hasArg", "is")
importFrom("mnormt", "dmnorm", "rmnorm")
importFrom("paleotree", "timeSliceTree")
importFrom("phangorn", "dist.hamming", "NJ", "RF.dist", "CI", "RI", "optim.parsimony", "parsimony")
importFrom("phyclust", "gen.seq.HKY")
importFrom("utils", "combn", "data", "capture.output", "tail")
importFrom("vegan", "adonis", "vegdist")
# importFrom("spptest", "create_curve_set", "rank_envelope") #TG: Using the temporary imports from spptest rather than GET
# importFrom("parallel", "parLapply", "detectCores", "makeCluster", "clusterExport", "stopCluster")
# importFrom("Claddis", "MorphDistMatrixFast")
# importFrom("geomorph", "gpagen")
# importFrom("RCurl", "getURL", "url.exists")

##C libraries
useDynLib(dispRity, .registration = TRUE)

## Data utilities

export(geomorph.ordination)

##Functions
export(boot.matrix)
export(chrono.subsets)
export(custom.subsets)
export(dispRity)
export(dispRity.per.group)
export(dispRity.through.time)
export(plot.dispRity)
export(print.dispRity)
export(summary.dispRity)
export(test.dispRity)

##disparity metrics
export(ancestral.dist)
export(centroids)
export(convhull.volume)
export(convhull.surface)
export(diagonal)
export(dimension.level1.fun)
export(dimension.level2.fun)
export(dimension.level3.fun)
export(ellipse.volume)
export(mode.val)
export(n.ball.volume)
export(pairwise.dist)
export(radius)
export(ranges)
export(span.tree.length)
export(variances)

##disparity tests
export(adonis.dispRity)
export(bhatt.coeff)
export(dtt.dispRity)
export(model.test)
export(model.test.sim)
export(model.test.wrapper)
export(null.test)
# export(sequential.test)

##dispRity object utilities
export(combine.subsets)
export(extinction.subsets)
export(extract.dispRity)
export(fill.dispRity)
export(get.subsets)
export(make.dispRity)
export(matrix.dispRity)
export(rescale.dispRity)
export(size.subsets)
export(sort.dispRity)

##Package utilities
export(clean.data)
export(crown.stem)
export(get.bin.ages)
export(make.metric)
export(nodes.coordinates)
export(pair.plot)
export(random.circle)
export(slice.tree)
export(space.maker)
export(tree.age)

##Morphological data analysis
export(apply.NA)
export(char.diff)
export(check.morpho)
export(get.contrast.matrix)
export(plot.char.diff)
export(sim.morpho)

##S3 methods
S3method(adonis, dispRity)
S3method(dtt, dispRity)
S3method(matrix, dispRity)
S3method(plot, char.diff)
S3method(plot, dispRity)
S3method(print, dispRity)
S3method(sort, dispRity)
S3method(summary, dispRity)
