#IMPORTED GENERIC FUNCTIONS TO OVERLOAD
importFrom("graphics",plot)
importFrom("methods",new)
importFrom("utils",head,tail)
importFrom("stats",simulate,predict,median)
importFrom("raster",extent,raster,writeRaster,zoom)
importFrom("raster",projection,"projection<-")

#importClassesFrom("Matrix",dpoMatrix)

# non-base generics to export
export(plot,simulate,predict,median,head,tail)
#export(modes,ridges)
export(extent,raster,writeRaster,zoom)
export(projection,"projection<-")
export(as.sf,cluster,compass,emulate,meta,speed,speeds,video,writeShapefile)
#export(SpatialPoints,SpatialPolygonsDataFrame)
#S3method(SpatialPoints,matrix)
#S3method(SpatialPoints,data.frame)
#S3method(SpatialPolygonsDataFrame,SpatialPolygons)

#GENERAL FUNCTIONS
#S3method(det,numeric)
#S3method(determinant,numeric) # can't get these to work???
S3method(mean,list)
S3method(median,list)
S3method(plot,list)
S3method(summary,list)
export("%#%",mag,optimizer)

# modes and ridges
#S3method(modes,numeric)
#S3method(modes,ctmm)
#S3method(modes,UD)
#S3method(ridges,UD)

#S3method(extent,list)
#S3method(extent,telemetry)
#S3method(extent,ctmm)
#S3method(extent,UD)

#PROJECTION METHODS
#S3method(projection,NULL)
#S3method(projection,list)
#S3method(projection,telemetry)
#S3method(projection,ctmm)
#S3method(projection,UD)
#S3method(`projection<-`,list)
#S3method(`projection<-`,telemetry)

#TELEMETRY FUNCTIONS
export(as.telemetry,SpatialPoints.telemetry,SpatialPointsDataFrame.telemetry,SpatialPolygonsDataFrame.telemetry,tbind)
S3method(as.telemetry,character)
S3method(as.telemetry,data.frame)
S3method(as.telemetry,Move)
S3method(as.telemetry,MoveStack)
S3method(mag,telemetry)
S3method(median,telemetry)
S3method(plot,telemetry)
S3method(subset,telemetry)
S3method(summary,telemetry)
S3method(`[`,telemetry)
S3method(head,telemetry)
S3method(tail,telemetry)
#S3method(rbind,telemetry)
#S3method(sample,telemetry)

#VARIOGRAM FUNCTIONS
export(variogram,variogram.fit)
S3method(mean,variogram)
S3method(plot,variogram)
S3method(subset,variogram)
S3method(`[`,variogram)

#PERIODOGRAM FUNCTIONS
export(periodogram)
S3method(plot,periodogram)
S3method(subset,periodogram)
S3method(`[`,periodogram)

#LIKELIHOOD/MODEL FUNCTIONS
export(correlogram,ctmm,ctmm.guess,ctmm.fit,ctmm.loglike,ctmm.select,ctmm.boot)
S3method(residuals,ctmm)
S3method(residuals,telemetry)
S3method(summary,ctmm)
S3method(str,ctmm)

#MEAN FUNCTIONS

#AKDE FUNCTIONS
export(akde,bandwidth,homerange,writeShapefile,SpatialPolygonsDataFrame.UD)
#S3method(akde,list)
#S3method(akde,telemetry)
S3method(mean,UD)
S3method(plot,UD)
S3method(summary,UD)
S3method(writeShapefile,list)
S3method(writeShapefile,telemetry)
S3method(writeShapefile,UD)

#KRIGE FUNCTIONS
export(occurrence)
S3method(predict,ctmm)
S3method(predict,telemetry)
S3method(simulate,ctmm)
S3method(simulate,telemetry)
S3method(speed,ctmm)
S3method(speed,telemetry)
S3method(speeds,ctmm)
S3method(speeds,telemetry)

#UERE FUNCTIONS
export(uere,"uere<-",uere.fit,outlie)
S3method(str,UERE)
S3method(summary,UERE)
S3method(plot,outlie)

#OVERLAP FUNCTIONS
export(overlap,distance)
#S3method(overlap,list)
#S3method(overlap,ctmm)
#S3method(overlap,telemetry)
#S3method(overlap,UD)

S3method(emulate,ctmm)
S3method(emulate,telemetry)
#S3method(AICc,ctmm)
#S3method(AICc,list)

# time and time-visualization methods
export(annotate,color)

# GUI selection methods
export(lasso,marquee,cleave)

# ENCOUNTER FUNCTIONS
export(encounter)
