importFrom(graphics, plot)
importFrom(numDeriv, genD, hessian, grad)
importFrom(lattice, trellis.device)
import(methods)
exportClasses(CTMC, BDMC, CTMC_PO_1, CTMC_PO_many, BDMC_many)
exportMethods(BDsummaryStats, BDsummaryStats.PO)
exportMethods(getStates, getTimes, getT, getTs)
exportMethods(getBDMCsPOlist)
exportMethods(plot)
exportMethods( "[", "[[")
export(BDloglikelihood.PO)
S3method(BDloglikelihood.PO,CTMC_PO_many)
S3method(BDloglikelihood.PO,CTMC_PO_1)
S3method(BDloglikelihood.PO,list)
export(E.step.SC)
S3method(E.step.SC, CTMC_PO_many)
S3method(E.step.SC, CTMC_PO_1)
S3method(E.step.SC, list)
export(BD.MCMC.SC)
S3method(BD.MCMC.SC, CTMC_PO_many)
S3method(BD.MCMC.SC, CTMC_PO_1)
S3method(BD.MCMC.SC, list)
export(CTMCPO2indepIntervals)
S3method(CTMCPO2indepIntervals, CTMC_PO_1)
S3method(CTMCPO2indepIntervals, CTMC_PO_many)
export(bdARsimCondEnd.1,
      getBDjTimes,  ARsim)

export(add.cond.mean.one,
       rem.cond.mean.one,
       hold.cond.mean.one,
       timeave.cond.mean.one,
       addrem.cond.mean.one,
       addhold.cond.mean.one,
       remhold.cond.mean.one,
       add.cond.meanSq.one,
       rem.cond.meanSq.one,
       hold.cond.meanSq.one)
exportPattern(".*cond[.]mean[.]many")

exportPattern(".*[.]generator$")
exportPattern(".*process[.]prob.[[^f][^f][^t][^a][^r][^g]]*")
export(CTMC2list,list2CTMC)
export(getBDinform.PO.SC)
export(getInitParams)

exportPattern(".*NijBD.*")
export(M.step.SC)

exportPattern(waitTimes)
export(sim.condBD)

export(birth.death.simulant)
export(combineCTMC)
export(Nplus,Nminus,holdTime)
export(add.uncond.mean.one,rem.uncond.mean.one,hold.uncond.mean.one)

export(CTMC.simulate.piecewise, CTMC.simulate,
       Nij, getPartialData,  getMCstate,
       getSubMC, getIthJumpTime,getIthJumpTimes, getIthState)
export(genDoneSided,hessianOneSided)
export(EM.BD.SC)
