useDynLib(dexter, .registration=TRUE)
importFrom(Rcpp, "evalCpp")
importFrom(RcppArmadillo, 'armadillo_throttle_cores')
import(dplyr, except="sql")
importFrom(RSQLite, "SQLite")
importFrom(DBI,"dbExecute", "dbGetQuery","dbDisconnect", "dbConnect", "dbListFields",
            "dbCommit","dbRollback","dbBegin", "dbReadTable", "dbExistsTable", "dbIsValid",
            "dbSendQuery","dbColumnInfo","dbClearResult", "dbListTables") 
importFrom(rlang,"caller_env",".data",".env", "eval_tidy","duplicate","env_has","obj_address","empty_env")
importFrom(tidyr, "pivot_longer", "pivot_wider", "fill")
importFrom(MASS, "lmsreg")

importFrom(stats, "complete.cases", "cor", "sd", "weighted.mean", "as.formula", "density",
            "cov", "mahalanobis", "model.matrix", "pchisq","rchisq",
            "rgamma", "runif", "setNames", 'rnorm',"chisq.test",
           "smooth.spline", "coef", "lm", "predict", "dnorm", "qnorm",
           "rbeta","rbinom","cov2cor", "rWishart", "as.dist", "hclust","optim")
importFrom(graphics, "plot", "axis", "image", "par", "lines", "hist",
           "text","legend","abline","segments","arrows","points", "rect","clip","strheight","strwidth")
importFrom(grDevices, "colorRampPalette","col2rgb","rgb")
importFrom(methods, "is", "new")
importFrom(utils, "str", "head", "person", "tail", "modifyList")


# dexter.R
export(start_new_project)
export(open_project)
export(close_project)
export(add_booklet)
export(add_response_data)
export(get_testscores)
export(keys_to_rules)
export(add_item_properties)
export(add_person_properties)
export(get_persons)
export(get_design)
export(design_info)
export(get_booklets)
export(get_items)
export(get_variables)
export(get_rules)
export(touch_rules) 

#data_selection.R
export(get_responses)

#oplike.R
export(start_new_project_from_oplm)
export(read_oplm_par)

#enorm.R
export(fit_enorm)

S3method(print,prms)
S3method(coef,prms)
S3method(print,enorm)
S3method(coef,enorm)
S3method(logLik,enorm)

#latent_cor.R
export(latent_cor)
S3method(print,latent_cor)
S3method(coef,latent_cor)

#ability.R
export(ability)
export(ability_tables)

# theta_functions.R

export(information)
export(expected_score)
export(r_score)
export(p_score)

S3method(print,inf_func)
S3method(print,exp_func)
S3method(print,sim_func)
S3method(print,pmf_func)

#plausible_values.R
export(plausible_values)

#plausible_scores.R
export(plausible_scores)


#interaction_model.R
export(fit_inter)
export(fit_domains)
export(r_score_IM)

S3method(print,inter)
S3method(coef,inter)

#profile_analysis.R
export(profiles)
export(profile_tables)

#plots.R
export(profile_plot)
export(distractor_plot)
S3method(plot,enorm)
S3method(plot,inter)

S3method(plot,prms)

#dif.R
export(DIF)
S3method(plot, DIF_stats)
S3method(print, DIF_stats)

#equating.R
export(probability_to_pass)
S3method(plot,p2pass)
S3method(coef,p2pass)
S3method(print,p2pass)

#individual_differences.R
export(individual_differences)
S3method(plot,tind)
S3method(print,tind)
S3method(coef,tind)

#tia.R
export(tia_tables)

#standards.R
export(standards_3dc)
export(standards_db)
S3method(plot,sts_par)
S3method(coef,sts_par)


#resp_data.R
export(get_resp_data)
export(get_resp_matrix)