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,
    "isSpike<-", 
    convertTo
)

importFrom("Biobase", assayDataElement, "assayDataElement<-", fData, exprs, featureData, phenoData, pData)

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

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

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)

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

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

# 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", text)

# packages in "Depends":
import(BiocParallel)
import(scater)
import(methods)
