    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)