useDynLib(scran, .registration=TRUE, .fixes="cxx_")

export(
    DM, testVar, combineVar,
    correlateNull,
    selectorPlot, exploreData,
    mnnCorrect
)

exportMethods(
    quickCluster, buildSNNGraph,
    computeSumFactors, computeSpikeFactors, 
    trendVar, decomposeVar, technicalCV2, improvedCV2,
    sandbag, cyclone,
    correlatePairs,
    denoisePCA,
    findMarkers, overlapExprs,
    convertTo
)

importFrom("Rcpp", sourceCpp)

importFrom("scater", calcAverage, areSizeFactorsCentred)

importFrom("dynamicTreeCut", cutreeDynamic)
importFrom("Matrix", sparseMatrix, qr, qr.coef, qr.qty, t, which, colMeans)

importFrom("edgeR", DGEList, "[.DGEList", designAsFactor, scaleOffset.DGEList)
importFrom("limma", fitFDistRobustly, lmFit, contrasts.fit, squeezeVar)

importFrom("utils", combn)
importFrom("stats", approx, as.dist, cor, fitted, hclust, loess, median, p.adjust, pchisq, pf, dist,
           predict, quantile, coefficients, nls, nls.control, lm, pnorm, coef, var, prcomp, model.matrix, pt,
           smooth.spline)

importFrom("zoo", zoo, rollapply, index)
importFrom("statmod", glmgam.fit)

importFrom("FNN", get.knn, get.knnx)
importFrom("igraph", make_graph, simplify, E, "E<-", cluster_fast_greedy, modularity)

# Graphical stuff:

importFrom("shiny", actionButton, brushOpts, brushedPoints, column, fluidPage, fluidRow, observeEvent, 
           plotOutput, renderPlot, shinyApp, stopApp, runApp, hr, titlePanel, sidebarLayout, sidebarPanel,
           inputPanel, selectInput, mainPanel, tabsetPanel, splitLayout, tabPanel)
import(ggplot2)
importFrom("DT", datatable, renderDataTable, dataTableOutput) 

importFrom("viridis", scale_color_viridis)
importFrom("grDevices", grey.colors)
importFrom("graphics", plot, text)

importFrom("SummarizedExperiment", assay, "assay<-", assayNames)
importFrom("S4Vectors", mcols, "mcols<-", metadata, "metadata<-", Rle, DataFrame)
importFrom("BiocGenerics", as.data.frame, sizeFactors, "sizeFactors<-", counts)
import(methods)

# packages in "Depends":
import(BiocParallel)
import(SingleCellExperiment)
