module Discord.Handle
( DiscordHandle(..)
, HandleThreadId(..)
) where
import Control.Concurrent (ThreadId, Chan, MVar)
import qualified Data.Text as T
import Discord.Internal.Rest (RestChanHandle(..))
import Discord.Internal.Gateway (GatewayHandle(..), CacheHandle(..))
-- | Thread Ids marked by what type they are
data HandleThreadId = HandleThreadIdRest ThreadId
| HandleThreadIdCache ThreadId
| HandleThreadIdLogger ThreadId
| HandleThreadIdGateway ThreadId
data DiscordHandle = DiscordHandle
{ discordHandleRestChan :: RestChanHandle
, discordHandleGateway :: GatewayHandle
, discordHandleCache :: CacheHandle
, discordHandleThreads :: [HandleThreadId]
, discordHandleLog :: Chan T.Text
, discordHandleLibraryError :: MVar T.Text
}