##useDynLib(BaseSpaceR)

import(RJSONIO)
import(methods)
importFrom(utils, packageVersion)
importMethodsFrom(RCurl, close)

## we probably need a lot of methods from it.
##import(IRanges)

exportClasses(ServiceURI, ResponseStatus, AppAuth, AppSessionAuth, # Authentication
              ##Property, PropertyCollection, # Properties
              Item, #ItemCollection, # Collection
              Collection, Response, # we might not need to export these shince they are virtual
              Users, userItem, # Users
              Runs, RunsSummary, runItem, runCollection, # Runs
              Genomes, GenomesSummary, genomeItem, genomeCollection, # Genomes
              Projects, ProjectsSummary, projectItem, projectCollection, # Projects
              Samples, SamplesSummary, sampleItem, sampleCollection, # Samples
              AppResults, AppResultsSummary, appResultItem, appResultCollection, # AppResults
              AppSessions, appSessionItem, # AppSessions
              Files, FilesSummary, fileItem, fileCollection) # Files

export(## Non-generic functions:
  ## misc.R
       
  ## ServiceURI.R
  ServiceURI,
  
  ## Error.R
  ResponseStatus,
  
  ## AppAuth.R
  AppAuth,
  performOAuth,
  authWebClient, authNativeClient,
  
  ## Generic functions:
  uri,
  ##GET, POST, POSTForm, ## do not export at a later point ...
  ## AppAuth
  initializeAuth, requestAccessToken, hasAccess,
  
  ## Item
  Id, Name, Href, DateCreated, UserOwnedBy, Status, HrefBaseSpaceUI,
  ## Collection
  Items, DisplayedCount, TotalCount, Offset, Limit, SortDir, SortBy,
  ## Response
  auth,
  ## Properties
  
  
  ## Users
  Users, userItem, # we might not export some of these as a later point
  ## Runs
  Runs, listRuns, runItem, runCollection,
  ## Projects
  Projects, listProjects, projectItem, projectCollection, createProject,
  ## Samples
  Samples, listSamples, sampleItem, sampleCollection,
  ## AppResults
  AppResults, appResultItem, appResultCollection, listAppResults, createAppResults,
  ## AppSessions
  AppSessions, listAppSessions, updateAppSessions,
  ## Genomes
  Genomes, listGenomes, genomeItem, genomeCollection,
  ## Files
  Files, listFiles, fileItem, fileCollection, getFiles, putFiles,
  ## Files_extra
  getIndexedBam, getBAMs,
  ## count<Resource>
  countRuns, countProjects, countSamples, countAppResults,
  countAppSessions, countGenomes, countFiles,
  
  ## Variants
  getVariantSet, getVariants,
  ## Coverage
  getCoverage, getCoverageStats
  )

exportMethods(
  ## Methods for generics
  uri,
  ##GET, POST,
  initializeAuth, requestAccessToken, hasAccess,
  ## Item
  Id, Name, Href, DateCreated, UserOwnedBy, Status, HrefBaseSpaceUI,
  ## Collection
  Items, DisplayedCount, TotalCount, Offset, Limit, SortDir, SortBy,
  ## Response
  auth,
  ## Resources
  Users, # Users
  Runs, listRuns, # Runs
  Projects, listProjects, createProject, # Projects
  Samples, listSamples, # Samples
  AppResults, listAppResults, createAppResults, # AppResults
  AppSessions, listAppSessions, updateAppSessions, # AppSessions
  Genomes, listGenomes, # Genomes
  Files, listFiles, getFiles, putFiles, # Files
  getBAMs, # Files_extra
  ## count<Resource>
  countRuns, countProjects, countSamples, countAppResults,
  countAppSessions, countGenomes, countFiles,
  
  ## high level methods
  getVariantSet, getVariants,
  getCoverage, getCoverageStats,

  ## operators
  ##"[", "[[",
  "$",
  
  show,
  as.list
  ##  lapply
)