import(boot, RColorBrewer)
importFrom("graphics", "abline", "arrows", "axis", "barplot", "box", "hist", "layout", "legend", "lines", "mtext", "par", "plot", "plot.new", "points", "polygon", "rect", "segments", "text", "title")
importFrom("grDevices", "col2rgb", "colorRamp", "dev.off", "rgb")
importFrom("stats", "chisq.test", "complete.cases", "density", "dnorm", "dunif", "formula", "median", "model.frame", "model.matrix", "na.omit", "na.pass", "pnorm", "qnorm", "quantile", "reshape", "runif", "terms", "weighted.mean", "xtabs")
importFrom("utils", "combn", "download.file", "read.table", packageDescription, packageVersion)
importFrom("Hmisc", "errbar")
importFrom("cluster", "daisy")

export(
    alphabet,
    "alphabet<-",
    cpal,
    "cpal<-",
    read.tda.mdist,
    recodef,
    seqalign,
    seqcomp,
    seqconc,
    seqcost,
    seqdecomp,
    seqdef,
    seqdiff,
    seqdim,
    seqdist,
    seqdistmc,
    seqdplot,
    seqdss,
    seqdur,
    seqfcheck,
    seqfind,
    seqformat,
    seqfplot,
    seqfpos,
    seqgen,
    seqHtplot,
    seqici,
    seqient,
    seqiplot,
    seqIplot,
    seqistatd,
    seqlegend,
    seqlength,
    seqLLCP,
    seqLLCS,
    seqlogp,
    seqmeant,
    seqmodst,
    seqmpos,
    seqmsplot,
    seqmtplot,
    seqnum,
    seqpcfilter,
    seqpcplot,
    seqplot,
    seqpm,
    seqrecode,
    seqrep,
    seqrplot,
    seqsep,
    seqstatd,
    seqstatf,
    seqstatl,
    seqST,
    seqsubm,
    seqsubsn,
    seqtab,
    seqtransn,
    seqtrate,
    stlab,
    "stlab<-",
    TraMineR.checkupdates,
    TraMineRInternalNodeInit,
    TraMineRInternalSplitInit,
    TraMineRInternalLayout,
    TraMineRInternalLegend,
    TraMineRInternalSeqeage,
    TraMineRInternalSeqgbar
  )

## stslist methods
S3method(summary, stslist)
S3method(print, stslist)
S3method("[", stslist)
S3method(plot, stslist)

## seqalign methods
S3method(plot, seqalign)
S3method(print, seqalign)

## seqpcplot methods
S3method(plot, seqpcplot)
S3method(summary , seqpcplot)

## stslist.stad methods
S3method(plot, stslist.statd)
S3method(print, stslist.statd)
S3method("[", stslist.statd)

## stslist.freq methods
S3method(plot, stslist.freq)
S3method(print, stslist.freq)
S3method("[", stslist.freq)

## stslist.meant methods
S3method(plot, stslist.meant)
S3method(print, stslist.meant)

## stslist.rep methods
S3method(plot, stslist.rep)
S3method(print, stslist.rep)
S3method(summary, stslist.rep)

## stslist.modst methods
S3method(plot, stslist.modst)
S3method(print, stslist.modst)
S3method("[", stslist.modst)

## TraMineRPermut methods
S3method(print ,TraMineRPermut)
S3method(summary ,TraMineRPermut)
S3method(hist ,TraMineRPermut)

## diss module
export(
    dissassoc,
    disscenter,
    dissrep,
    dissmfacw,
    disstreedisplay,
    disstree2dot,
    disstree2dotp,
    disstreeleaf,
    disstree,
    dissvar,
    gower_matrix,
    seqtree2dot,
    seqtree,
    seqtreedisplay
)
S3method(hist,dissassoc)
S3method(print,dissassoc)
S3method(print,dissmultifactor)
S3method(print,disstree)
S3method(print,seqtree)
S3method(print,seqdiff)
S3method(plot,seqdiff)
S3method(print,diss.rep)
S3method(summary,diss.rep)

## Event subsequence module
S3method(plot,subseqelistchisq)
S3method(plot,subseqelist)
S3method("[",seqelist)
S3method(Math,seqelist)
S3method(Ops,seqelist)
S3method(plot,seqelist)
S3method(Summary,seqelist)
S3method(Math,eseq)
S3method(Ops,eseq)
S3method(plot,eseq)
S3method(Summary,eseq)
S3method(levels,eseq)
S3method(levels,seqelist)
S3method(str,seqelist)
S3method(str,eseq)
S3method(as.character,eseq)
S3method(as.character,seqelist)
S3method(print,eseq)
S3method(print,seqelist)
S3method(print,seqeconstraint)
S3method(print,subseqelist)
S3method("[",subseqelist)
S3method(plot,subseqelist)

export(
    seqeapplysub,
    seqecmpgroup,
    seqeconstraint,
    seqecontain,
    seqecreate,
    seqefsub,
    seqeid,
    seqelength,
    "seqelength<-",
    seqeweight,
    "seqeweight<-",
    is.eseq,
    is.seqelist,
    seqetm
)

useDynLib(TraMineR, .registration = TRUE, .fixes = "C_")
