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, ranef, vcovHC, vcovDC, vcovNW, vcovG, piest, aneweytest, pwaldtest,
       pldv, cortab, pgrangertest,
       maxLik # re-export maxLik::maxLik so we can place pkg 'maxLik' in 'Imports' rather than 'Depends' as it is only needed for pldv()
              # 'Suggests' is not sufficient for maxLik as it is used in an eval()-statement in pldv().
       )



import("Formula") # import whole package
importFrom("stats", "lag", "nobs", "alias",
           "pnorm", "dnorm", "qnorm", "pt", "pchisq", "pf", "sd", "var",
		   "model.weights", "reshape", 
           "approx", "as.formula", "coef", "coefficients", "printCoefmat",
           "cor", "delete.response", "deviance", "df.residual",
           "formula", "lm", "lm.fit", "model.frame",
           "model.matrix", "model.response", "na.omit", "terms", "update",
           "fitted", "resid", "residuals", "vcov")

importFrom("maxLik", "maxLik")
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", "ranef")      # --- same ---
importFrom("nlme", "lme")
importFrom("MASS", "ginv")
importFrom("lmtest", "bgtest")
importFrom("lmtest", "dwtest")
importFrom("lmtest", "grangertest")
# importFrom("car", "linearHypothesis") # pkg 'car' in 'Suggests', so do not import
# importFrom("statmod", "gauss.quad")   # pkg 'statmod' in 'Suggests', so do not import
importFrom("lattice", "xyplot")
importFrom("grDevices", "heat.colors", "rainbow")
importFrom("graphics", "abline", "axis", "barplot", "legend", "lines",
           "plot", "points")

# 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", "formula")
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("fitted",        "panelmodel")
S3method("deviance",      "panelmodel")
S3method("df.residual",   "panelmodel")
S3method("vcov",          "panelmodel")
S3method("update",        "panelmodel")
S3method("has.intercept", "panelmodel")
# plm
S3method("predict",       "plm")
S3method("has.intercept", "plm")
S3method("plot",          "plm")
S3method("fitted",        "plm")
S3method("residuals",     "plm")
S3method("summary",       "plm")
S3method("print", "summary.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("residuals", "pggls")
S3method("summary",   "pggls")
S3method("print", "summary.pggls")
# pcce
S3method("residuals", "pcce")
S3method("summary",   "pcce")
S3method("print", "summary.pcce")
# pmg
S3method("residuals", "pmg")
S3method("summary",   "pmg")
S3method("print", "summary.pmg")
# pht
S3method("summary", "pht")
S3method("print", "summary.pht")
# piest
S3method("print",   "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")
# ranef
S3method("ranef", "plm")
# 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")
