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 = forall a b. a -> b -> a
const (forall (f :: * -> *) a. Applicative f => a -> f a
pure ()),
      healthCheck :: IO ()
healthCheck = forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
    }

noisyConfig :: Config
noisyConfig :: Config
noisyConfig = Config
defaultConfig {logInfo :: String -> IO ()
logInfo = forall a. Show a => a -> IO ()
print}