import(methods)
import(BiocGenerics)
import(IRanges)
import(GenomicRanges)
import(Rsamtools)
import(rtracklayer)
import(BiocParallel)
importFrom(GenomicAlignments, summarizeOverlaps, Union)
importMethodsFrom(GenomicAlignments, summarizeOverlaps)

### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
### Export S4 classes
###

exportClasses(
    GenomicFiles, 
    GenomicFileViews, 
    BamFileViews, 
    FaFileViews, 
    BigWigFileViews
)

### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
### Export S4 methods for generics not defined in GenomicFiles
###

exportMethods(
    "[", dim, names, show, yieldSize, 
    colData, 'colData<-', rowData, 'rowData', exptData,'exptData',
    countBam, scanBam, summarizeOverlaps,
    coverage, summary
)

### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
### Export S4 generics & methods for generics defined in GenomicFiles
###

export(
    ## GenomicFileViews class:
    BamFileViews, BigWigFileViews, FaFileViews, 

    ## GenomicFiles class:
    GenomicFiles, files, 'files<-',

    reduceByFile, reduceByRange, pack, unpack
)

exportMethods(
    ## GenomicFileViews class:
    BamFileViews, BigWigFileViews, FaFileViews,

    ## GenomicFiles class
    GenomicFiles, files, 'files<-', 

    reduceByFile, reduceByRange, pack, unpack
)

### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
### Export non-generic functions
###

export(
    ## GenomicFileViews class:
    fileList, "fileList<-", fileSample, "fileSample<-", 
    fileRange, "fileRange<-", fileExperiment, "fileExperiment<-",

    ## file registry:
    .fileTypeRegistry, registerFileType, findTypeRegistry, makeFileType,

    reduceFiles, reduceRanges, reduceByYield
)
