import("data.table")
import("R6")
import("stringr")
importFrom("methods", "formalArgs", "getMethod", "is", "new", ".hasSlot")
importFrom("utils", "methods", "installed.packages")
importFrom("tidyr", "separate")
export(
  EvaluationMode,
  FunctionParameterName,
  FunctionParameterTypeFactory,
  TestCaseDefinition,

  defineEvaluationModes,
  defineFunctionReturnTypesParameterName,
  defineTestCaseDefinitionsParameterName,
  exploreObjectNamesVerification,
  findFilesInPackage,
  getEllipsisName,
  getObjectClassKind,
  getObjectClassNames,
  getObjectFunctionArgumentNames,
  getObjectFunctionNames,
  identifyOPInstrumentationLevel,
  isAuditable,
  opInformation,
  matchFunctionSignature,
  retrieveFactory,
  retrieveFunctionArguments,
  retrieveFunctionArgumentNames,
  retrieveFunctionReturnTypes,
  retrievePackageFunctionNames,
  retrieveTestCaseDefinitions,
  retrieveTestCaseDescriptions,
  runFunction,
  runTestCase,
  runTransientFunction,
  verifyClassName,
  verifyFunctionArguments,
  verifyFunctionName,
  verifyFunctionReturnTypesDefinition,
  verifyObjectNames,
  verifyTestCaseDefinitions

  #matchFunctionArguments,
  #retrieveSupportedObjectInformation,
  #verifyName,
)

S3method(print, EvaluationMode)
S3method(print, FunctionParameterName)
S3method(print, TestCaseDefinition)


