# ================================
# Export the following names

exportPattern("^sc*")
exportClasses(SCArrayAssay, Seurat_g)
export(CreateAssayObject2)
exportMethods(scGetFiles, scMemory)

# methods for Seurat_g
S3method(merge, Seurat_g)
S3method(RunUMAP, Seurat_g)

# methods for SCArrayAssay
S3method(subset, SCArrayAssay)
S3method(GetAssayData, SCArrayAssay)
S3method(SetAssayData, SCArrayAssay)
S3method(RenameCells, SCArrayAssay)
S3method(merge, SCArrayAssay)
S3method(FindMarkers, SCArrayAssay)
S3method(FoldChange, SCArrayAssay)
S3method(RunPCA, SCArrayAssay)
S3method(RunICA, SCArrayAssay)
S3method(RunSPCA, SCArrayAssay)
S3method(RunLDA, SCArrayAssay)
S3method(RunSLSI, SCArrayAssay)

# methods for DelayedMatrix
S3method(as.sparse, DelayedMatrix)
S3method(CreateSeuratObject, DelayedMatrix)

# methods for SC_GDSMatrix
S3method(NormalizeData, SC_GDSMatrix)
S3method(ScaleData, SC_GDSMatrix)
S3method(FindVariableFeatures, SC_GDSMatrix)
S3method(RunPCA, SC_GDSMatrix)
S3method(CheckMatrix, SC_GDSMatrix)


# ================================
# Import all packages listed as Imports or Depends

import(methods)
import(S4Vectors)
importFrom(gdsfmt,
    add.gdsn, append.gdsn, closefn.gds, createfn.gds, openfn.gds, index.gdsn)
importFrom(utils,
    capture.output, packageVersion, txtProgressBar, setTxtProgressBar)
importFrom(Matrix, sparseMatrix)
importFrom(stats, loess, quantile, as.formula, glm, lm, residuals, p.adjust)
importFrom(BiocGenerics, counts, path)
importFrom(BiocParallel, SerialParam, bplapply, bpnworkers)
importFrom(BiocSingular, runExactSVD, runIrlbaSVD)
importFrom(SummarizedExperiment, assays, colData, rowData)

# Import the classes and methods in SeuratObject & Seurat
importClassesFrom(SeuratObject, Assay)
importFrom(SeuratObject,
    GetAssayData, SetAssayData, CreateSeuratObject,
    Assays, AddMetaData, IsMatrixEmpty, Key, 'Key<-', as.sparse,
    VariableFeatures, 'VariableFeatures<-',
    CheckDots, CheckGC, CheckMatrix, CreateAssayObject, CreateDimReducObject,
    RenameCells)
importFrom(Seurat,
    NormalizeData, ScaleData, FindVariableFeatures, FindMarkers, FoldChange,
    RunPCA, RunICA, RunSPCA, RunLDA, RunSLSI, RunUMAP)

# Import the classes and methods in DelayedArray & SCArray
importClassesFrom(DelayedArray, DelayedArray, DelayedMatrix)
importFrom(DelayedArray,
    DelayedArray, blockApply, blockReduce, currentBlockId, currentViewport,
    colAutoGrid, rowAutoGrid, getAutoBPPARAM, sweep)
importClassesFrom(SCArray, SCArrayFileClass, SC_GDSArray, SC_GDSMatrix)
importFrom(SCArray,
    scArray, scExperiment, scObj, scSetMax, scRowMeanVar, scGetFiles, scMemory,
    scRowAutoGrid, scNumSplit,
    colSums, colVars, rowSums, rowMeans, rowVars, rowSds, rowMins, pmin2)

