## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  eval = FALSE
)

## ----data-source--------------------------------------------------------------
# #' @importFrom epidist as_epidist_linelist_data
# #' @export
# as_epidist_linelist_data.my_class <- function(data, ...) {
#   return(as_epidist_linelist_data(
#     as.data.frame(data),
#     pdate_lwr = "onset_date",
#     sdate_lwr = "report_date"
#   ))
# }

## ----data-source-use----------------------------------------------------------
# my_data |>
#   as_epidist_linelist_data() |>
#   as_epidist_marginal_model() |>
#   epidist(formula = mu ~ 1)

## ----skeleton-----------------------------------------------------------------
# as_epidist_my_model <- function(data) {
#   class(data) <- c("epidist_my_model", class(data))
#   assert_epidist(data)
#   return(data)
# }
# 
# #' @importFrom epidist assert_epidist
# #' @export
# assert_epidist.epidist_my_model <- function(data, ...) {
#   checkmate::assert_names(names(data), must.include = c("delay", "n"))
#   return(invisible(NULL))
# }
# 
# #' @importFrom epidist epidist_family_model
# #' @export
# epidist_family_model.epidist_my_model <- function(data, family, ...) {
#   return(brms::custom_family(
#     paste0("my_model_", family$family),
#     dpars = family$dpars,
#     vars = "vreal1",
#     loop = FALSE
#   ))
# }
# 
# #' @importFrom epidist epidist_formula_model
# #' @export
# epidist_formula_model.epidist_my_model <- function(data, formula, ...) {
#   return(stats::update(formula, delay | vreal(n) ~ .))
# }
# 
# #' @importFrom epidist epidist_stancode
# #' @export
# epidist_stancode.epidist_my_model <- function(data, family, formula, ...) {
#   return(brms::stanvar(block = "functions", scode = "// your lpdf here"))
# }

## ----use----------------------------------------------------------------------
# data |>
#   as_epidist_my_model() |>
#   epidist(formula = mu ~ 1)

