{-# LANGUAGE CPP #-}
#if __GLASGOW_HASKELL__ >= 702
{-# LANGUAGE Trustworthy #-}
#endif

{- | This module exports a safe subset of the labeled BSON (LBSON)
   module. See "Hails.Data.LBson.TCB" for documentation.
-}

module Hails.Data.LBson.Safe ( -- * UTF-8 String
                               module Data.UString
                               -- * Document
                             , Document, LabeledDocument
                             , look, lookup
                             , valueAt, at, include, exclude, merge
                               -- * Field
                             , Field(..), (=:), (=?)
                             , Key
                             , hailsInternalKeyPrefix 
                               -- * Value
                             , Value, Val, val, cast', cast, typed
                               -- * Policy labeled values
                             , pu, pl
                               -- * Special Bson value types
                             , Binary(..)
                             , Function(..)
                             , UUID(..)
                             , MD5(..)
                             , UserDefined(..)
                             , Regex(..)
                             , Javascript(..)
                             , Symbol(..)
                             , MongoStamp(..)
                             , MinMaxKey(..)
                               -- ** ObjectId
                             , ObjectId(..)
                             , timestamp
                             , genObjectId

                               -- * Convert to/from "Data.Bson"
                             , BsonValue
                             , module Hails.Data.LBson.Rexports
                             , safeToBsonValue, safeFromBsonValue
                             , BsonDocument, safeToBsonDoc, safeFromBsonDoc
                               -- * Convert to/from Bytestring
                             , encodeDoc, decodeDoc
                             ) where
import Prelude hiding (lookup)
import Hails.Data.LBson.TCB
import Data.UString
import Hails.Data.LBson.Rexports hiding (Value)