{-# LANGUAGE RankNTypes #-} module Thermoprint.Server.Printer ( Printer ) where import Thermoprint.API (PrintingError(..), Printout) import Thermoprint.Server.Database import Database.Persist import Database.Persist.Sql import Data.Sequence (Seq, ViewL(..)) import qualified Data.Sequence as Seq import Data.Map (Map) import qualified Data.Map as Map import Control.Monad.IO.Class (MonadIO) import Control.Concurrent.STM data Printer = Printer { print :: forall m. (MonadIO m) => Printout -> m (Maybe PrintingError) , queue :: TVar (Seq JobId) } runPrinter :: Printer -> IO () runPrinter = undefined