import(mvtnorm)
import(copula)
import(methods)
import(lattice)
import(network)

importFrom("grDevices", "colorRampPalette", "rgb", "terrain.colors", "col2rgb", "gray")
importFrom("graphics", "abline", "box", "hist", "legend", "lines",
           "pairs", "par", "points", "strwidth", "text",
           "plot.new", "plot.window", "polygon", "strheight", "barplot")
importFrom("stats", "cor", "dexp", "dgamma", "dnorm", "dt",
           "integrate", "ks.test", "optim", "optimize", "pbinom",
           "pchisq", "pexp", "pgamma", "pnorm", "pt", "qexp", "qgamma",
           "qnorm", "qt", "runif", "uniroot", "var", "complete.cases", "rbinom")
importFrom("utils", "combn", "getFromNamespace", "modifyList", "data")

importFrom("ADGofTest", "ad.test")
importFrom("MASS", "bandwidth.nrd", "ginv", "kde2d")

importFrom("doParallel", "registerDoParallel")
importFrom("foreach", "%dopar%",  "foreach")
importFrom("parallel", "makeCluster", "stopCluster", "detectCores")

export(pobs)

export(BiCop)
export(BiCopCheck)
export(BiCopEst)
export(BiCopMetaContour)
export(BiCopChiPlot)
export(BiCopKPlot)
export(BiCopLambda)
export(BiCopVuongClarke)
export(BiCopIndTest)
export(BiCopSim)
export(BiCopCondSim)
export(BiCopPDF)
export(BiCopCDF)
export(BiCopPar2Tau)
export(BiCopPar2TailDep)
export(BiCopTau2Par)
export(BiCopSelect)
export(BiCopCompare)
export(BiCopEstList)
export(BiCopName)
export(BiCopHfunc)
export(BiCopHfunc1)
export(BiCopHfunc2)
export(BiCopHinv)
export(BiCopHinv1)
export(BiCopHinv2)
export(BiCopDeriv)
export(BiCopDeriv2)
export(BiCopHfuncDeriv)
export(BiCopHfuncDeriv2)
export(BiCopGofTest)
export(BiCopKDE)

export(RVineLogLik)
export(RVinePDF)
export(RVineAIC)
export(RVineBIC)
export(RVineMatrix)
export(RVineMatrixCheck)
export(RVineMatrixSample)
export(RVineSim)
export(RVineSeqEst)
export(RVineCopSelect)
export(RVineMLE)
export(RVineStructureSelect)
export(RVineTreePlot)
export(RVineVuongTest)
export(RVineClarkeTest)
export(RVinePar2Tau)
export(RVineGrad)
export(RVineHessian)
export(RVineStdError)


export(C2RVine)
export(D2RVine)

export(TauMatrix)

export(RVineCor2pcor,RVinePcor2cor, RVineMatrixNormalize)
export(RVinePIT)
export(RVineGofTest)

export(BiCopPar2Beta)
export(RVinePar2Beta)
export(BetaMatrix)

export(as.copuladata)
export(pairs.copuladata)

# compatibility to copula
export(fitCopula)
export(dduCopula,ddvCopula)

export(BB1Copula, surBB1Copula, r90BB1Copula, r270BB1Copula)
export(BB6Copula, surBB6Copula, r90BB6Copula, r270BB6Copula)
export(BB7Copula, surBB7Copula, r90BB7Copula, r270BB7Copula)
export(BB8Copula, surBB8Copula, r90BB8Copula, r270BB8Copula)
export(joeBiCopula, surJoeBiCopula, r90JoeBiCopula, r270JoeBiCopula)
export(surClaytonCopula, r90ClaytonCopula, r270ClaytonCopula)
export(surGumbelCopula, r90GumbelCopula, r270GumbelCopula)
export(tawnT1Copula, surTawnT1Copula, r90TawnT1Copula, r270TawnT1Copula)
export(tawnT2Copula, surTawnT2Copula, r90TawnT2Copula, r270TawnT2Copula)
export(vineCopula)
export(copulaFromFamilyIndex)

exportClasses(BB1Copula, surBB1Copula, r90BB1Copula, r270BB1Copula)
exportClasses(BB6Copula, surBB6Copula, r90BB6Copula, r270BB6Copula)
exportClasses(BB7Copula, surBB7Copula, r90BB7Copula, r270BB7Copula)
exportClasses(BB8Copula, surBB8Copula, r90BB8Copula, r270BB8Copula)
exportClasses(joeBiCopula, surJoeBiCopula, r90JoeBiCopula, r270JoeBiCopula)
exportClasses(surClaytonCopula, r90ClaytonCopula, r270ClaytonCopula)
exportClasses(surGumbelCopula, r90GumbelCopula, r270GumbelCopula)
exportClasses(tawnT1Copula, surTawnT1Copula, r90TawnT1Copula, r270TawnT1Copula)
exportClasses(tawnT2Copula, surTawnT2Copula, r90TawnT2Copula, r270TawnT2Copula)
exportClasses(vineCopula)


S3method(as.copuladata, data.frame)
S3method(as.copuladata, matrix)
S3method(as.copuladata, list)
S3method(pairs, copuladata)
S3method(plot, BiCop)
S3method(contour, BiCop)
S3method(print, BiCop)
S3method(summary, BiCop)
S3method(plot, RVineMatrix)
S3method(contour, RVineMatrix)
S3method(print, RVineMatrix)
S3method(summary, RVineMatrix)

useDynLib("VineCopula")
