module Network.Mail.SMTP.Types (
    Command(..),
    ReplyCode,
    Response(..),

    -- * Auth types (re-exports)
    UserName,
    Password,
    AuthType(..),

    -- * "Network.Mail.Mime" types (re-exports)
    Address(..),
) where

import Network.Mail.SMTP.Auth

import Data.ByteString (ByteString)
import Network.Mail.Mime

data Command = HELO ByteString
             | EHLO ByteString
             | MAIL ByteString
             | RCPT ByteString
             | DATA ByteString
             | EXPN ByteString
             | VRFY ByteString
             | HELP ByteString
             | AUTH AuthType UserName Password
             | NOOP
             | RSET
             | QUIT
               deriving (Show, Eq)

type ReplyCode = Int

data Response = Ok
              | SystemStatus
              | HelpMessage
              | ServiceReady
              | ServiceClosing
              | UserNotLocal
              | CannotVerify
              | StartMailInput
              | ServiceNotAvailable
              | MailboxUnavailable
              | ErrorInProcessing
              | InsufficientSystemStorage
              | SyntaxError
              | ParameterError
              | CommandNotImplemented
              | BadSequence
              | ParameterNotImplemented
              | MailboxUnavailableError
              | UserNotLocalError
              | ExceededStorage
              | MailboxNotAllowed
              | TransactionFailed
                deriving (Show, Eq)