{-# LANGUAGE TemplateHaskell #-}

module PayPal.Adaptive (

  -- * Client
    Client           (..)
  , Env              (..)

  -- * Errors
  , AdaptiveErr      (..)

  -- * Payment Responses
  , PayResp          (..)
  , CompletePayResp  (..)
  , checkComplete
  , PayExecStatus    (..)
  , PayKey           (..)
  , PayInfo          (..)
  , Receiver         (..)
  , TransactionId    (..)
  , TransactionStatus(..)

  -- * Money
  , Money            (..)
  , m2Currency
  , m2PayPal

  , module PayPal.Adaptive
  ) where

import Control.Lens
import PayPal.Adaptive.Core

-- * Lenses
$(makeLenses ''Client)
$(makeLenses ''CompletePayResp)
$(makePrisms ''AdaptiveErr)
$(makePrisms ''Env)
$(makePrisms ''PayExecStatus)
$(makeLenses ''PayInfo)
$(makeLenses ''PayResp)
$(makeLenses ''Receiver)
$(makePrisms ''TransactionId)
$(makePrisms ''TransactionStatus)