export(plm, pvcm, pgmm, pggls, pht, pcce, pmg, plmtest, phtest, pFtest, 
       detect_lin_dep, is.pconsecutive, is.pbalanced, make.pconsecutive, make.pbalanced, within_intercept,
       pvar, pdim, pooltest, dynformula, sargan, mtest, ercomp, pvcovHC,
       pbsytest, pdwtest, pbgtest, pbltest, pwartest, pwtest, pwfdtest, pcdtest,
       plm.data, pdata.frame, between, Between, Within, lag, lead, pFormula, pmodel.response,
       punbalancedness, purtest, cipstest, vcovBK, vcovSCC, r.squared, has.intercept, 
       index, fixef, vcovHC, vcovDC, vcovNW, vcovG, piest, aneweytest, pwaldtest)



import("Formula") # import whole package
importFrom("stats", "lag")
importFrom("stats", "nobs")
importFrom("stats", "alias")
importFrom("stats", "reshape")
importFrom("bdsmatrix", "bdsmatrix")
importFrom("sandwich", "vcovHC") # import generic and associated methods so the vcovHC methods from pkg sandwich and plm do no mask each other
importFrom("zoo", "index")       # --- same ---
importFrom("nlme", "fixef")      # --- same ---
importFrom("nlme", "lme")
importFrom("MASS", "ginv")
importFrom("lmtest", "bgtest")
importFrom("lmtest", "dwtest")
importFrom("car", "linearHypothesis")
importFrom("lattice", "xyplot")
#
importFrom("grDevices", "heat.colors", "rainbow")
importFrom("graphics", "abline", "axis", "barplot", "legend", "lines",
           "plot", "points")
importFrom("stats", "approx", "as.formula", "coef", "coefficients",
           "cor", "delete.response", "deviance", "df.residual",
           "fitted", "formula", "lm", "lm.fit", "model.frame",
           "model.matrix", "model.response", "na.omit", "pchisq", "pf",
           "pnorm", "printCoefmat", "pt", "resid", "residuals",
           "terms", "update", "var", "vcov")

# pFormula
S3method("model.frame", "pFormula")
S3method("model.matrix", "pFormula")
S3method("model.matrix", "plm")
S3method("model.matrix", "pcce")
S3method("as.Formula", "pFormula")
S3method("pmodel.response", "data.frame")
S3method("pmodel.response", "pFormula")
S3method("pmodel.response", "plm")
S3method("pmodel.response", "pcce")
# Formula, formula
S3method("has.intercept", "Formula")
S3method("has.intercept", "formula")
# index
S3method("index", "pindex")
S3method("index", "pdata.frame")
S3method("index", "panelmodel")
S3method("index", "pseries")
# pdata.frame
S3method("print",         "pdata.frame")
S3method('[',             "pdata.frame")
S3method('$',             "pdata.frame")
S3method('[[',            "pdata.frame")
S3method('$<-',           "pdata.frame")
S3method("as.data.frame", "pdata.frame")
S3method("as.list",       "pdata.frame")
# pdim
S3method("pdim", "data.frame")
S3method("pdim", "pdata.frame")
S3method("pdim", "panelmodel")
S3method("pdim", "pseries")
S3method("pdim", "pgmm")
S3method("pdim", "default")
S3method("print", "pdim")
# nobs
S3method("nobs", "panelmodel")
S3method("nobs", "pgmm")
# punbalancedness
S3method("punbalancedness", "data.frame")
S3method("punbalancedness", "pdata.frame")
S3method("punbalancedness", "panelmodel")
# pvar
S3method("pvar",  "data.frame")
S3method("pvar",  "pdata.frame")
S3method("pvar",  "matrix")
S3method("print", "pvar")
# panelmodel
S3method("terms",         "panelmodel")
S3method("print",         "panelmodel")
S3method("residuals",     "panelmodel")
S3method("residuals",     "plm")
S3method("fitted",        "panelmodel")
S3method("deviance",      "panelmodel")
S3method("df.residual",   "panelmodel")
S3method("vcov",          "panelmodel")
S3method("update",        "panelmodel")
S3method("has.intercept", "panelmodel")
# plm
S3method("summary", "plm")
S3method("print", "summary.plm")
S3method("predict", "plm")
S3method("has.intercept", "plm")
S3method("plot", "plm")
# plm.list
S3method("summary", "plm.list")
S3method("print", "summary.plm.list")
# pgmm
S3method("coef", "pgmm")
S3method("summary", "pgmm")
S3method("print", "summary.pgmm")
# pvcm
S3method("summary", "pvcm")
S3method("print", "summary.pvcm")
# pggls
S3method("summary", "pggls")
S3method("print", "summary.pggls")
S3method("residuals", "pggls")
# pcce
S3method("summary", "pcce")
S3method("print", "summary.pcce")
S3method("residuals", "pcce")
# pmg
S3method("summary", "pmg")
S3method("print", "summary.pmg")
S3method("residuals", "pmg")
# pht
S3method("summary", "pht")
S3method("print", "summary.pht")
# piest
S3method("summary", "piest")
S3method("print", "summary.piest")
# fixef
S3method("fixef", "plm")
S3method("fixef", "pggls")
S3method("print", "fixef")
S3method("summary", "fixef")
S3method("print", "summary.fixef")
# dynformula
S3method("print", "dynformula")
S3method("formula", "dynformula")
# vcovHC
S3method("vcovHC", "plm")
S3method("vcovHC", "pgmm")
S3method("vcovHC", "pcce")
# vcovBK
S3method("vcovBK", "plm")
# vcovSCC 
S3method("vcovSCC", "plm")
S3method("vcovSCC", "pcce")
# vcovNW 
S3method("vcovNW", "plm")
S3method("vcovNW", "pcce")
# vcovDC 
S3method("vcovDC", "plm")
S3method("vcovDC", "pcce")
# vcovG
S3method("vcovG", "plm")
S3method("vcovG", "pcce")
# pseries
S3method("lag",       "pseries")
S3method("lead",      "pseries")
S3method("diff",      "pseries")
S3method("between",   "pseries")
S3method("Between",   "pseries")
S3method("Within",    "pseries")
S3method("print",     "pseries")
S3method("summary",   "pseries")
S3method("as.matrix", "pseries")
S3method("print", "summary.pseries")
# S3method("[", "pseries") # not implemented (yet)
# ercomp
S3method("ercomp", "formula")
S3method("ercomp", "plm")
S3method("print", "ercomp")
# pooltest
S3method("pooltest", "plm")
S3method("pooltest", "formula")
# plmtest
S3method("plmtest", "plm")
S3method("plmtest", "formula")
# phtest
S3method("phtest", "panelmodel")
S3method("phtest", "formula")
# pFtest
S3method("pFtest", "plm")
S3method("pFtest", "formula")
# pbltest
S3method("pbltest", "formula")
S3method("pbltest", "plm")
# pbsytest
S3method("pbsytest", "formula")
S3method("pbsytest", "panelmodel")
# pwtest
S3method("pwtest", "formula")
S3method("pwtest", "panelmodel")
# pwartest
S3method("pwartest", "formula")
S3method("pwartest", "panelmodel")
# pdwtest
S3method("pdwtest", "formula")
S3method("pdwtest", "panelmodel")
# pbgtest
S3method("pbgtest", "formula")
S3method("pbgtest", "panelmodel")
# pwfdtest
S3method("pwfdtest", "formula")
S3method("pwfdtest", "panelmodel")
# pcdtest
S3method("pcdtest", "formula")
S3method("pcdtest", "panelmodel")
S3method("pcdtest", "pseries")
# purtest
S3method("print",   "purtest")
S3method("summary", "purtest")
S3method("print", "summary.purtest")
# pwaldtest
S3method("pwaldtest", "plm")
# detect_lin_dep, alias
S3method("detect_lin_dep", "matrix")
S3method("detect_lin_dep", "data.frame")
S3method("detect_lin_dep", "plm")
S3method("alias", "plm")
S3method("alias", "pFormula")
# is.pconsecutive
S3method("is.pconsecutive", "data.frame")
S3method("is.pconsecutive", "pdata.frame")
S3method("is.pconsecutive", "panelmodel")
S3method("is.pconsecutive", "pseries")
S3method("is.pconsecutive", "default")
# make.pconsecutive
S3method("make.pconsecutive", "data.frame")
S3method("make.pconsecutive", "pdata.frame")
S3method("make.pconsecutive", "pseries")
# is.pbalanced
S3method("is.pbalanced", "data.frame")
S3method("is.pbalanced", "pdata.frame")
S3method("is.pbalanced", "pseries")
S3method("is.pbalanced", "panelmodel")
S3method("is.pbalanced", "pgmm")
# make.pbalanced
S3method("make.pbalanced", "data.frame")
S3method("make.pbalanced", "pdata.frame")
S3method("make.pbalanced", "pseries")
# within_intercept
S3method("within_intercept", "plm")
