import("stats")
##import("setRNG")
import("tframe")
import("dse1")

S3method("print", "estimatedModels")
S3method("print", "EstEval")
S3method("print", "forecastCov")
S3method("print", "forecastCovEstimatorsWRTdata.subsets")
S3method("print", "forecastCovEstimatorsWRTtrue")
S3method("print", "MonteCarloSimulations")

S3method("summary", "estimatedModels")
S3method("summary", "TSestModelEstEval")
S3method("summary", "TSmodelEstEval")
S3method("summary", "EstEval")
S3method("summary", "forecastCov")
S3method("summary", "forecastCovEstimatorsWRTdata.subsets")
S3method("summary", "forecastCovEstimatorsWRTtrue")
S3method("summary", "MonteCarloSimulations")
S3method("summary", "coefEstEval")
S3method("summary", "rootsEstEval")

S3method("print", "summary.estimatedModels")
S3method("print", "summary.TSestModelEstEval")
S3method("print", "summary.TSmodelEstEval")
S3method("print", "summary.EstEval")
S3method("print", "summary.forecastCov")
S3method("print", "summary.forecastCovEstimatorsWRTdata.subsets")
S3method("print", "summary.forecastCovEstimatorsWRTtrue")
S3method("print", "summary.MonteCarloSimulations")
S3method("print", "summary.coefEstEval")
S3method("print", "summary.rootsEstEval")

S3method("tfplot", "TSmodelEstEval")
S3method("tfplot", "TSestModelEstEval")
S3method("tfplot", "featherForecasts")
S3method("tfplot", "forecast")
S3method("tfplot", "EstEval")
S3method("tfplot", "horizonForecasts")
S3method("tfplot", "multiModelHorizonForecasts")
S3method("tfplot", "coefEstEval")
S3method("tfplot", "rootsEstEval")

S3method("plot", "rootsEstEval")

S3method("seriesNamesInput", "forecast")
S3method("seriesNamesInput", "featherForecasts")
S3method("seriesNamesInput", "MonteCarloSimulations")
S3method("seriesNamesOutput", "forecast")
S3method("seriesNamesOutput", "featherForecasts")
S3method("seriesNamesOutput", "MonteCarloSimulations")

S3method("nseries", "featherForecasts")
S3method("nseriesInput", "MonteCarloSimulations")
S3method("nseriesOutput", "MonteCarloSimulations")
S3method("periods", "MonteCarloSimulations")
S3method("tframe", "MonteCarloSimulations")

S3method("TSdata", "forecastCov")
S3method("TSestModel", "coefEstEval")
S3method("TSmodel", "forecastCov")
S3method("TSmodel", "coefEstEval")

S3method("roots", "estimatedModels")
S3method("roots", "forecastCovEstimatorsWRTtrue")
S3method("roots", "coefEstEval")
S3method("roots", "rootsEstEval")
S3method("roots", "TSestModelEstEval")
S3method("roots", "TSmodelEstEval")

S3method("testEqual", "estimatedModels")
S3method("testEqual", "EstEval")
S3method("testEqual", "forecast")
S3method("testEqual", "forecastCov")
S3method("testEqual", "horizonForecasts")
S3method("testEqual", "MonteCarloSimulations")

S3method("coef", "TSmodelEstEval")
S3method("coef", "TSestModelEstEval")

export("phasePlots")
export("shockDecomposition")

export("forecast")
S3method("forecast", "TSdata")
S3method("forecast", "TSmodel")
S3method("forecast", "TSestModel")
export("is.forecast")

export("forecasts")
S3method("forecasts", "forecast")
S3method("forecasts", "featherForecasts")
S3method("forecasts", "horizonForecasts")

export("featherForecasts")
S3method("featherForecasts", "TSdata")
S3method("featherForecasts", "TSmodel")
S3method("featherForecasts", "TSestModel")
export("is.featherForecasts")

export("minimumStartupLag")
S3method("minimumStartupLag", "SS")
S3method("minimumStartupLag", "ARMA")
S3method("minimumStartupLag", "TSestModel")

export("startShift")
export("generateSSmodel")

export("MonteCarloSimulations")
S3method("MonteCarloSimulations", "default")
S3method("MonteCarloSimulations", "TSmodel")
S3method("MonteCarloSimulations", "TSestModel")
S3method("MonteCarloSimulations", "EstEval")
S3method("MonteCarloSimulations", "MonteCarloSimulations")
export("is.MonteCarloSimulations")

S3method("tfplot", "MonteCarloSimulations")
S3method("distribution", "MonteCarloSimulations")

export("EstEval")
export("is.EstEval")

export("distribution")
S3method("distribution", "default")
S3method("distribution", "TSdata")
S3method("distribution", "coefEstEval")
S3method("distribution", "rootsEstEval")

export("estimateModels")
export("is.estimatedModels")

export("horizonForecasts")
S3method("horizonForecasts", "TSdata")
S3method("horizonForecasts", "TSmodel")
S3method("horizonForecasts", "TSestModel")
S3method("horizonForecasts", "forecastCov")
export("is.horizonForecasts")

##export("horizonForecastsCompiled")
S3method("horizonForecastsCompiled", "ARMA")
S3method("horizonForecastsCompiled", "SS")

export("estimatorsHorizonForecastsWRTdata")

export("forecastCov")
S3method("forecastCov", "TSdata")
S3method("forecastCov", "TSmodel")
S3method("forecastCov", "TSestModel")
export("is.forecastCov")

export("forecastCovReductionsWRTtrue")

##export("forecastCovCompiled")
S3method("forecastCovCompiled", "ARMA")
S3method("forecastCovCompiled", "SS")
S3method("forecastCovCompiled", "innov")
S3method("forecastCovCompiled", "nonInnov")

##export("forecastCovSingleModel")

export("totalForecastCov")

S3method("tfplot", "forecastCov")
S3method("tfplot", "forecastCovEstimatorsWRTdata")

export("outOfSample.forecastCovEstimatorsWRTdata")
export("forecastCovEstimatorsWRTdata")
export("is.forecastCovEstimatorsWRTdata")

export("extractforecastCov")
S3method("extractforecastCov", "forecastCovEstimatorsWRTdata")
S3method("extractforecastCov", "forecastCovEstimatorsFromModel")

export("forecastCovWRTtrue")
export("is.forecastCovWRTdata")

export("forecastCovEstimatorsWRTtrue")
export("is.forecastCovEstimatorsWRTtrue")

S3method("combine", "forecastCov")
S3method("combine", "forecastCovEstimatorsWRTdata")
S3method("combine", "forecastCovEstimatorsWRTtrue") 

export("genMineData")
export("build.diagonal.model")
export("build.input.models")
S3method("plot", "mineStepwise")

export("mineStepwise")
export("permute")
export("is.forecastCovEstimatorsWRTdata.subsets")
export("stripMine")
export("minForecastCov")
export("selectForecastCov")
export("excludeForecastCov")
