module Convex.Validator
  ( Validator (..),
    ValidationConfig (..),
  )
where

-- | Configuration for the validation setup process.
newtype ValidationConfig = ValidationConfig
  { -- | The root directory where validator projects will be created.
    --   e.g., "~/.config/convex-schema-parser"
    ValidationConfig -> FilePath
validationDir :: FilePath
  }

-- | A typeclass for language-specific code validators.
class Validator v where
  -- | Sets up the validation environment (e.g., creates a sandbox project)
  --   and returns a handle to it. This function is idempotent.
  setup :: v ()

  -- | Validates a string of generated code using the provided handle.
  --   Returns the potentially formatted and checked code.
  validate :: String -> v (Maybe String)