module Control.Monad.Metrics.Internal where
import Data.IORef
import Data.Map (Map)
import Data.Text (Text)
import System.Metrics (Store)
import System.Metrics.Counter (Counter)
import System.Metrics.Distribution (Distribution)
import System.Metrics.Gauge (Gauge)
import System.Metrics.Label (Label)
data Metrics = Metrics
{ metricsCounters :: IORef (Map Text Counter)
, metricsGauges :: IORef (Map Text Gauge)
, metricsDistributions :: IORef (Map Text Distribution)
, metricsLabels :: IORef (Map Text Label)
, metricsStore :: Store
}
data Resolution
= Nanoseconds
| Microseconds
| Milliseconds
| Seconds
| Minutes
| Hours
| Days
deriving (Eq, Show, Ord, Enum)