module Roboservant.Types.Config where

import Data.Dynamic

data Config
  = Config
      { Config -> [(Dynamic, Int)]
seed :: [(Dynamic, Int)],
        Config -> Double
maxRuntime :: Double, -- seconds to test for
        Config -> Integer
maxReps :: Integer,
        Config -> Int
rngSeed :: Int,
        Config -> Double
coverageThreshold :: Double,
        Config -> String -> IO ()
logInfo :: String -> IO (),
        Config -> IO ()
healthCheck :: IO ()
      }

defaultConfig :: Config
defaultConfig :: Config
defaultConfig =
  Config
    { seed :: [(Dynamic, Int)]
seed = [],
      maxRuntime :: Double
maxRuntime = Double
0.5,
      maxReps :: Integer
maxReps = Integer
1000,
      rngSeed :: Int
rngSeed = Int
0,
      coverageThreshold :: Double
coverageThreshold = Double
0,
      logInfo :: String -> IO ()
logInfo = IO () -> String -> IO ()
forall a b. a -> b -> a
const (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()),
      healthCheck :: IO ()
healthCheck = () -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
    }

noisyConfig :: Config
noisyConfig :: Config
noisyConfig = Config
defaultConfig {logInfo = print}