{-# LANGUAGE TemplateHaskell #-}
module Navi.Services.Types
( ServiceType (..),
_BatteryPercentage,
_BatteryStatus,
_Custom,
_NetworkInterface,
)
where
import Navi.Data.CommandResult (CommandResult)
import Navi.Data.CommandResultParser (CommandResultParser)
import Navi.Prelude
import Pythia.Data.Command (Command)
import Pythia.Services.Battery (Battery, BatteryApp, BatteryStatus)
import Pythia.Services.NetInterface (Device, NetInterface, NetInterfaceApp)
type ServiceType :: Type -> Type
data ServiceType result where
BatteryPercentage :: BatteryApp -> ServiceType Battery
BatteryStatus :: BatteryApp -> ServiceType BatteryStatus
NetworkInterface :: Device -> NetInterfaceApp -> ServiceType NetInterface
Custom :: Command -> CommandResultParser -> ServiceType CommandResult
deriving stock instance Show (ServiceType result)
deriving stock instance Eq (ServiceType result)
makePrisms ''ServiceType