import("methods")

importFrom("graphics", "plot", "barplot", "lines", "text") ## we need the generic for plot
importFrom("proxy", "dist", "as.dist")
importFrom("stats", "sd", "median", "princomp", "loadings", "runif",
  "rnorm", "cor")
importFrom("utils", "head")

### truncated SVD
importFrom("irlba", "irlba")

### LIBMF
importFrom("recosystem", "Reco", "data_memory", "out_memory")

## get generics, cladses and methods
importClassesFrom("Matrix", "Matrix", "dsparseMatrix", "dgCMatrix", "ngCMatrix", "dgTMatrix")
importFrom("Matrix", "rowSums", "colSums", "rowMeans", "colMeans",
  "summary", "drop0", "rBind")
## get just methods
importMethodsFrom("Matrix", "image", "t", "crossprod", "tcrossprod", "which")

## get generics and methods
importFrom("arules", "predict", "nitems", "sample", "LIST",
  "dissimilarity", "apriori", "itemLabels", "encode")
## get just methods
importMethodsFrom("arules", "sort", "summary",
  "lhs", "rhs", "quality", "quality<-", "is.subset", "interestMeasure")

## export functions
export(
  "dropNA",
  "dropNA2matrix",
  "funkSVD",
  "RMSE",
  "MSE",
  "MAE",
  "frobenius",
  "HybridRecommender",
  "returnRatings",
  "getParameters"
)

## registry uses S3
import("registry")
export("recommenderRegistry")
S3method("print", "recommender_method")


## recommenderlab exports
exportClasses(
#  "sparseNAMatrix",
  "ratingMatrix",
  "realRatingMatrix",
  "binaryRatingMatrix",
  "Recommender",
  "topNList",
  "evaluationScheme",
  "confusionMatrix",
  "evaluationResults",
  "evaluationResultList"
)

S3method("predict", "funkSVD")

exportMethods(
  "[",
  "coerce",	## setAs
  "show",
  "plot",
  "image",
  "sample",
  "summary",

  "calcPredictionAccuracy",
  "predict",
  #		"colMeans",
  #		"rowMeans",
  "colCounts",
  "rowCounts",
  "colSds",
  "rowSds",
  "binarize",
  "avg",
  "evaluate",
  "bestN",
  "nratings",
  "normalize",
  "denormalize",
  "getNormalize",
  "getRatings",
  "getRatingMatrix",
  "getRuns",
  "getModel",
  "getData",
  "getConfusionMatrix",
  "getTopNLists",
  "dissimilarity",
  "similarity",
  "evaluationScheme",
  "removeKnownRatings",
  "removeKnownItems",
  "Recommender",
  "getList",
  "getData.frame"
)
