useDynLib(stepR, .registration = TRUE)

importFrom(stats, approxfun, AIC, BIC, convolve, dnorm, ecdf, fft, filter, fitted,
           mvfft, pnorm, qnorm, quantile, resid, rexp, rnorm, sd)
importFrom(graphics, lines, par, plot, points)
importFrom(methods, is)
importFrom(Rcpp, evalCpp)

export(computeStat)
export(computeBounds)
export(stepFit)
export(critVal)
export(monteCarloSimulation)
export(sdrobnorm)

export(stepblock)
export(stepfit)
export(jumpint)
export(confband)

export(.testSmallScales)

export(BesselPolynomial, bounds, bounds.MRC, chi, chi.FFT, compareBlocks, contMC,
       dfilter, jsmurf, kMRC.pvalue, kMRC.quant, kMRC.simul, MRC, MRC.FFT,
       MRC.pvalue, MRC.quant, MRC.simul, MRCoeff, MRCoeff.FFT, neighbours, smuceR,
       stepbound, stepbound.default, stepbound.stepcand, stepcand, steppath,
       steppath.default, steppath.stepcand, stepsel, stepsel.AIC, stepsel.BIC,
       stepsel.MRC, thresh.smuceR, transit)

# register S3 methods
S3method("[", bounds)
S3method(print, dfilter)
S3method(jumpint, stepfit)
S3method(points, jumpint)
S3method(confband, stepfit)
S3method(lines, confband)
S3method("[", stepblock)
S3method(print, stepblock)
S3method(plot, stepblock)
S3method(lines, stepblock)
S3method(stepbound, default)
S3method(stepbound, stepcand)
S3method("[", stepfit)
S3method(print, stepfit)
S3method(plot, stepfit)
S3method(lines, stepfit)
S3method(fitted, stepfit)
S3method(residuals, stepfit)
S3method(logLik, stepfit)
S3method(steppath, default)
S3method(steppath, stepcand)
S3method("[[", steppath)
S3method(length, steppath)
S3method(print, steppath)
S3method(logLik, steppath)
