import(methods)
importFrom(stats, rbinom)
import(BiocGenerics)
import(SummarizedExperiment)
import(Rsamtools)
import(rtracklayer)
import(BiocParallel)
import(GenomicRanges)
import(IRanges)
import(S4Vectors)
import(GenomeInfoDb)
importFrom(GenomicAlignments, summarizeOverlaps, Union)
importMethodsFrom(GenomicAlignments, summarizeOverlaps)
importFrom(VariantAnnotation, 
    scanVcfHeader, ScanVcfParam, readVcf, genotypeToSnpMatrix, 
    samples, vcfSamples, "vcfSamples<-", readGT
)

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

exportClasses(
    GenomicFiles, 
    VcfStack, RangedVcfStack
)

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

exportMethods(
    "[", dim, names, show, yieldSize, 'colData<-',
    countBam, scanBam, summarizeOverlaps,
    coverage, summary,
    seqinfo, 'seqinfo<-',
    rowRanges, 'rowRanges<-', assay, colData
)

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

export(
    ## GenomicFiles class:
    GenomicFiles, files, 'files<-',
    reduceByFile, reduceByRange, pack, unpack,

    ## VcfStack class:
    rownames, colnames
)

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

    reduceByFile, reduceByRange, pack, unpack,

    ## VcfStack class:
    rownames, colnames
)

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

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

    reduceFiles, reduceRanges, reduceByYield, REDUCEsampler,

    VcfStack, RangedVcfStack, readVcfStack, getVCFPath, paths1kg
)
