packages feed

bitx-bitcoin 0.10.0.0 → 0.11.0.0

raw patch · 10 files changed

+240/−143 lines, 10 filesdep +deepseqPVP ok

version bump matches the API change (PVP)

Dependencies added: deepseq

API changes (from Hackage documentation)

- Network.Bitcoin.BitX.Types: PrivateOrderWithTrades :: Scientific -> Scientific -> UTCTime -> UTCTime -> UTCTime -> Scientific -> Scientific -> Int -> Scientific -> OrderID -> CcyPair -> RequestStatus -> OrderType -> [Trade] -> PrivateOrderWithTrades
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesBase] :: PrivateOrderWithTrades -> Scientific
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesCompletedTimestamp] :: PrivateOrderWithTrades -> UTCTime
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesCounter] :: PrivateOrderWithTrades -> Scientific
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesCreationTimestamp] :: PrivateOrderWithTrades -> UTCTime
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesExpirationTimestamp] :: PrivateOrderWithTrades -> UTCTime
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesFeeBase] :: PrivateOrderWithTrades -> Scientific
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesFeeCounter] :: PrivateOrderWithTrades -> Scientific
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesId] :: PrivateOrderWithTrades -> OrderID
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesLimitPrice] :: PrivateOrderWithTrades -> Int
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesLimitVolume] :: PrivateOrderWithTrades -> Scientific
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesOrderType] :: PrivateOrderWithTrades -> OrderType
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesPair] :: PrivateOrderWithTrades -> CcyPair
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesState] :: PrivateOrderWithTrades -> RequestStatus
- Network.Bitcoin.BitX.Types: [privateOrderWithTradesTrades] :: PrivateOrderWithTrades -> [Trade]
- Network.Bitcoin.BitX.Types: class HasTrades s a | s -> a
- Network.Bitcoin.BitX.Types: data PrivateOrderWithTrades
- Network.Bitcoin.BitX.Types: instance Data.Aeson.Types.Class.FromJSON Network.Bitcoin.BitX.Types.Asset
- Network.Bitcoin.BitX.Types: instance Data.Aeson.Types.Class.FromJSON Network.Bitcoin.BitX.Types.CcyPair
- Network.Bitcoin.BitX.Types: instance Data.Aeson.Types.Class.FromJSON Network.Bitcoin.BitX.Types.OrderType
- Network.Bitcoin.BitX.Types: instance Data.Aeson.Types.Class.FromJSON Network.Bitcoin.BitX.Types.QuoteType
- Network.Bitcoin.BitX.Types: instance Data.Aeson.Types.Class.FromJSON Network.Bitcoin.BitX.Types.WithdrawalType
- Network.Bitcoin.BitX.Types: instance GHC.Classes.Eq Network.Bitcoin.BitX.Types.PrivateOrderWithTrades
- Network.Bitcoin.BitX.Types: instance GHC.Show.Show Network.Bitcoin.BitX.Types.PrivateOrderWithTrades
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasBase Network.Bitcoin.BitX.Types.PrivateOrderWithTrades Data.Scientific.Scientific
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasCompletedTimestamp Network.Bitcoin.BitX.Types.PrivateOrderWithTrades Data.Time.Clock.UTC.UTCTime
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasCounter Network.Bitcoin.BitX.Types.PrivateOrderWithTrades Data.Scientific.Scientific
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasCreationTimestamp Network.Bitcoin.BitX.Types.PrivateOrderWithTrades Data.Time.Clock.UTC.UTCTime
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasExpirationTimestamp Network.Bitcoin.BitX.Types.PrivateOrderWithTrades Data.Time.Clock.UTC.UTCTime
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasFeeBase Network.Bitcoin.BitX.Types.PrivateOrderWithTrades Data.Scientific.Scientific
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasFeeCounter Network.Bitcoin.BitX.Types.PrivateOrderWithTrades Data.Scientific.Scientific
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasId Network.Bitcoin.BitX.Types.PrivateOrderWithTrades Network.Bitcoin.BitX.Types.OrderID
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasLimitPrice Network.Bitcoin.BitX.Types.PrivateOrderWithTrades GHC.Types.Int
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasLimitVolume Network.Bitcoin.BitX.Types.PrivateOrderWithTrades Data.Scientific.Scientific
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasOrderType Network.Bitcoin.BitX.Types.PrivateOrderWithTrades Network.Bitcoin.BitX.Types.OrderType
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasPair Network.Bitcoin.BitX.Types.PrivateOrderWithTrades Network.Bitcoin.BitX.Types.CcyPair
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasState Network.Bitcoin.BitX.Types.PrivateOrderWithTrades Network.Bitcoin.BitX.Types.RequestStatus
- Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasTrades Network.Bitcoin.BitX.Types.PrivateOrderWithTrades [Network.Bitcoin.BitX.Types.Trade]
- Network.Bitcoin.BitX.Types: trades :: HasTrades s a => Lens' s a
+ Network.Bitcoin.BitX.Private.Order: getAllTrades :: BitXAuth -> CcyPair -> Maybe UTCTime -> Maybe Integer -> IO (BitXAPIResponse [PrivateTrade])
+ Network.Bitcoin.BitX.Types: PrivateTrade :: Scientific -> Scientific -> Scientific -> Scientific -> Bool -> Text -> CcyPair -> Int -> UTCTime -> OrderType -> Scientific -> PrivateTrade
+ Network.Bitcoin.BitX.Types: [privateTradeBase] :: PrivateTrade -> Scientific
+ Network.Bitcoin.BitX.Types: [privateTradeCounter] :: PrivateTrade -> Scientific
+ Network.Bitcoin.BitX.Types: [privateTradeFeeBase] :: PrivateTrade -> Scientific
+ Network.Bitcoin.BitX.Types: [privateTradeFeeCounter] :: PrivateTrade -> Scientific
+ Network.Bitcoin.BitX.Types: [privateTradeIsBuy] :: PrivateTrade -> Bool
+ Network.Bitcoin.BitX.Types: [privateTradeOrderId] :: PrivateTrade -> Text
+ Network.Bitcoin.BitX.Types: [privateTradeOrderType] :: PrivateTrade -> OrderType
+ Network.Bitcoin.BitX.Types: [privateTradePair] :: PrivateTrade -> CcyPair
+ Network.Bitcoin.BitX.Types: [privateTradePrice] :: PrivateTrade -> Int
+ Network.Bitcoin.BitX.Types: [privateTradeTimestamp] :: PrivateTrade -> UTCTime
+ Network.Bitcoin.BitX.Types: [privateTradeVolume] :: PrivateTrade -> Scientific
+ Network.Bitcoin.BitX.Types: class HasOrderId s a | s -> a
+ Network.Bitcoin.BitX.Types: data PrivateTrade
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.Account
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.Asset
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.Balance
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.BitXAuth
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.BitXError
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.BitcoinSendRequest
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.CcyPair
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.FundingAddress
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.MarketOrderRequest
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.NewWithdrawal
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.Order
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.OrderQuote
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.OrderRequest
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.OrderType
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.Orderbook
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.PrivateOrder
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.PrivateTrade
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.QuoteRequest
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.QuoteType
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.RequestStatus
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.Ticker
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.Trade
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.Transaction
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.WithdrawalRequest
+ Network.Bitcoin.BitX.Types: instance Control.DeepSeq.NFData Network.Bitcoin.BitX.Types.WithdrawalType
+ Network.Bitcoin.BitX.Types: instance Data.Aeson.Types.FromJSON.FromJSON Network.Bitcoin.BitX.Types.Asset
+ Network.Bitcoin.BitX.Types: instance Data.Aeson.Types.FromJSON.FromJSON Network.Bitcoin.BitX.Types.CcyPair
+ Network.Bitcoin.BitX.Types: instance Data.Aeson.Types.FromJSON.FromJSON Network.Bitcoin.BitX.Types.OrderType
+ Network.Bitcoin.BitX.Types: instance Data.Aeson.Types.FromJSON.FromJSON Network.Bitcoin.BitX.Types.QuoteType
+ Network.Bitcoin.BitX.Types: instance Data.Aeson.Types.FromJSON.FromJSON Network.Bitcoin.BitX.Types.WithdrawalType
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.Account
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.Asset
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.Balance
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.BitXAuth
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.BitXError
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.BitcoinSendRequest
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.CcyPair
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.FundingAddress
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.MarketOrderRequest
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.NewWithdrawal
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.Order
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.OrderQuote
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.OrderRequest
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.OrderType
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.Orderbook
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.PrivateOrder
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.PrivateTrade
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.QuoteRequest
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.QuoteType
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.RequestStatus
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.Ticker
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.Trade
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.Transaction
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.WithdrawalRequest
+ Network.Bitcoin.BitX.Types: instance Data.Data.Data Network.Bitcoin.BitX.Types.WithdrawalType
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Eq Network.Bitcoin.BitX.Types.PrivateTrade
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.Account
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.Asset
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.Balance
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.BitXAuth
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.BitXError
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.BitcoinSendRequest
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.CcyPair
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.FundingAddress
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.MarketOrderRequest
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.NewWithdrawal
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.Order
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.OrderQuote
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.OrderRequest
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.OrderType
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.Orderbook
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.PrivateTrade
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.QuoteRequest
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.QuoteType
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.RequestStatus
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.Ticker
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.Trade
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.Transaction
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.WithdrawalRequest
+ Network.Bitcoin.BitX.Types: instance GHC.Classes.Ord Network.Bitcoin.BitX.Types.WithdrawalType
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.Account
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.Balance
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.BitXAuth
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.BitXError
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.BitcoinSendRequest
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.FundingAddress
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.MarketOrderRequest
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.NewWithdrawal
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.Order
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.OrderQuote
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.OrderRequest
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.Orderbook
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.PrivateOrder
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.PrivateTrade
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.QuoteRequest
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.Ticker
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.Trade
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.Transaction
+ Network.Bitcoin.BitX.Types: instance GHC.Generics.Generic Network.Bitcoin.BitX.Types.WithdrawalRequest
+ Network.Bitcoin.BitX.Types: instance GHC.Show.Show Network.Bitcoin.BitX.Types.PrivateTrade
+ Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasBase Network.Bitcoin.BitX.Types.PrivateTrade Data.Scientific.Scientific
+ Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasCounter Network.Bitcoin.BitX.Types.PrivateTrade Data.Scientific.Scientific
+ Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasFeeBase Network.Bitcoin.BitX.Types.PrivateTrade Data.Scientific.Scientific
+ Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasFeeCounter Network.Bitcoin.BitX.Types.PrivateTrade Data.Scientific.Scientific
+ Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasIsBuy Network.Bitcoin.BitX.Types.PrivateTrade GHC.Types.Bool
+ Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasOrderId Network.Bitcoin.BitX.Types.PrivateTrade Data.Text.Internal.Text
+ Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasOrderType Network.Bitcoin.BitX.Types.PrivateTrade Network.Bitcoin.BitX.Types.OrderType
+ Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasPair Network.Bitcoin.BitX.Types.PrivateTrade Network.Bitcoin.BitX.Types.CcyPair
+ Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasPrice Network.Bitcoin.BitX.Types.PrivateTrade GHC.Types.Int
+ Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasTimestamp Network.Bitcoin.BitX.Types.PrivateTrade Data.Time.Clock.UTC.UTCTime
+ Network.Bitcoin.BitX.Types: instance Network.Bitcoin.BitX.Types.HasVolume Network.Bitcoin.BitX.Types.PrivateTrade Data.Scientific.Scientific
+ Network.Bitcoin.BitX.Types: orderId :: HasOrderId s a => Lens' s a
- Network.Bitcoin.BitX.Private.Order: getOrder :: BitXAuth -> OrderID -> IO (BitXAPIResponse PrivateOrderWithTrades)
+ Network.Bitcoin.BitX.Private.Order: getOrder :: BitXAuth -> OrderID -> IO (BitXAPIResponse PrivateOrder)

Files

CHANGES view
@@ -1,10 +1,13 @@+v0.11.0.0+* The BitX API no longer gives trades when returning private orders. BREAKING CHANGE.+* Due to the above change, a new function -- getAllTrades -- has been added to the private order API.+* The basic types now come with a large set of default typeclasses, to minimise the need for orphan instances.+ v0.10.0.0-* New optional beneficiary ID field for withdrawal requests.+* New optional beneficiary ID field for withdrawal requests. BREAKING CHANGE.  v0.9.0.1 * Compatibility with http-client-0.5.0 and http-client-tls-0.3.0.--v0.9.0.0 * The BitXAuth type can now be written as a string using the OverloadedStrings extension.  v0.9.0.0
README.md view
@@ -1,4 +1,4 @@-[![Build Status](https://travis-ci.org/tebello-thejane/bitx-haskell.svg?branch=master)](https://travis-ci.org/tebello-thejane/bitx-haskell)+[![Build Status](https://travis-ci.org/tebello-thejane/bitx.hs.svg?branch=master)](https://travis-ci.org/tebello-thejane/bitx.hs) [![Hackage](https://budueba.com/hackage/bitx-bitcoin)](https://hackage.haskell.org/package/bitx-bitcoin) [![BSD3](https://img.shields.io/badge/license-BSD3-brightgreen.svg?style=flat)](http://opensource.org/licenses/BSD-3-Clause) 
bitx-bitcoin.cabal view
@@ -1,5 +1,5 @@ name:                bitx-bitcoin-version:             0.10.0.0+version:             0.11.0.0 synopsis:            A Haskell library for working with the BitX bitcoin exchange.  description:@@ -34,7 +34,7 @@  cabal-version:       >=1.10 -homepage:            https://github.com/tebello-thejane/bitx-haskell+homepage:            https://github.com/tebello-thejane/bitx.hs  tested-with:         GHC >=7.8.1 && <=8.0.1 @@ -75,7 +75,8 @@                        http-client-tls,                        microlens,                        microlens-th,-                       http-types+                       http-types,+                       deepseq    default-language:    Haskell2010   hs-source-dirs:      src@@ -86,7 +87,7 @@   type:     git   location:-    git://github.com/tebello-thejane/bitx-haskell.git+    git://github.com/tebello-thejane/bitx.hs.git  -------------------------------------------------------------------------------- 
src/Network/Bitcoin/BitX/Private.hs view
@@ -131,7 +131,8 @@  {- | Create receive address -Allocates a new receive address to your account. There is a limit of 50 receive addresses per user.+Allocates a new receive address to your account. Address creation is rate limited to 1 per hour,+allowing for bursts of up to 10 consecutive calls.  @Perm_R_Addresses@ permission is required. -}
src/Network/Bitcoin/BitX/Private/Order.hs view
@@ -25,7 +25,8 @@   postOrder,   stopOrder,   getOrder,-  postMarketOrder+  postMarketOrder,+  getAllTrades   ) where  import Network.Bitcoin.BitX.Internal@@ -33,6 +34,8 @@ import qualified Data.Text as Txt import Network.Bitcoin.BitX.Response import Data.Monoid ((<>))+import Data.Time (UTCTime)+import Network.Bitcoin.BitX.Types.Internal (timeToTimestamp)  {- | Returns a list of the most recently placed orders. @@ -80,7 +83,7 @@ @Perm_R_Orders@ permission is required.  -} -getOrder :: BitXAuth -> OrderID -> IO (BitXAPIResponse PrivateOrderWithTrades)+getOrder :: BitXAuth -> OrderID -> IO (BitXAPIResponse PrivateOrder) getOrder auth oid = simpleBitXGetAuth_ auth $ "orders/" <> oid  {- | Create a new market order.@@ -98,3 +101,17 @@  -} postMarketOrder :: BitXAuth -> MarketOrderRequest -> IO (BitXAPIResponse OrderID) postMarketOrder auth moreq = simpleBitXPOSTAuth_ auth moreq "marketorder"++{- | Returns a list of your recent trades for a given pair, sorted by oldest first.++@Perm_R_Orders@ permission is required.+-}+getAllTrades :: BitXAuth -> CcyPair -> Maybe UTCTime -> Maybe Integer -> IO (BitXAPIResponse [PrivateTrade])+getAllTrades auth cpair since limit = simpleBitXGetAuth_ auth url+    where+      url = "listtrades?pair=" <> (Txt.pack $ show cpair) <> case (since, limit) of+            (Nothing, Nothing)  -> ""+            (Just sn, Nothing)  -> "&since=" <> Txt.pack (show (timeToTimestamp sn))+            (Nothing, Just lm)  -> "&limit=" <> Txt.pack (show lm)+            (Just sn, Just lm)  -> "&since=" <> Txt.pack (show (timeToTimestamp sn)) <> "&limit=" <> Txt.pack (show lm)+
src/Network/Bitcoin/BitX/Public.hs view
@@ -76,5 +76,6 @@ {- | Returns a list of the most recent trades -}  getTrades :: Maybe UTCTime -> CcyPair -> IO (BitXAPIResponse [Trade])-getTrades   Nothing    cyp = simpleBitXGet_ $ "trades?pair=" <> pack  (show cyp)-getTrades (Just since) cyp = simpleBitXGet_ $ "trades?pair=" <> pack (show cyp) <> "since=" <> pack (show (timeToTimestamp since))+getTrades   Nothing    cyp = simpleBitXGet_ $ "trades?pair=" <> pack (show cyp)+getTrades (Just since) cyp = simpleBitXGet_ $ "trades?pair=" <> pack (show cyp) <> "&since=" <> pack (show (timeToTimestamp since))+
src/Network/Bitcoin/BitX/Types.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveGeneric, QuasiQuotes, OverloadedStrings, DataKinds,-    MultiParamTypeClasses, TemplateHaskell, FunctionalDependencies, FlexibleInstances #-}+    MultiParamTypeClasses, TemplateHaskell, FunctionalDependencies, FlexibleInstances,+    DeriveDataTypeable, StandaloneDeriving #-}  ----------------------------------------------------------------------------- -- |@@ -33,7 +34,6 @@     MarketOrderRequest(..),     RequestSuccess,     BitXError(..),-    PrivateOrderWithTrades(..),     AccountID,     Asset(..),     Balance(..),@@ -48,6 +48,7 @@     BitXClientAuth,     Transaction(..),     Account(..),+    PrivateTrade(..),  -- | Convenient constructors for records which serve as input parameters to functions. These are not --   completely safe (since you can forget to set a field and the Haskell compiler won't notice),@@ -100,7 +101,6 @@     HasState(..),     HasOrderType(..),     HasLimitVolume(..),-    HasTrades(..),     HasRowIndex(..),     HasBalance(..),     HasAvailable(..),@@ -127,7 +127,8 @@     HasName(..),     HasIsBuy(..),     HasStatus(..),-    HasBeneficiaryId(..)+    HasBeneficiaryId(..),+    HasOrderId(..)   ) where  import Data.Aeson (FromJSON(..))@@ -137,6 +138,8 @@ import Data.Scientific (Scientific) import Lens.Micro.TH (makeFields) import Data.String (IsString(..))+import Data.Data (Data, Typeable)+import Control.DeepSeq (NFData)  type OrderID = Text @@ -144,8 +147,10 @@ data OrderType =     ASK -- ^ A request to sell     | BID -- ^ A request to buy-    deriving (Show, Generic, Eq)+    deriving (Show, Generic, Eq, Data, Typeable, Ord) +instance NFData OrderType+ -- | The state of a (private) placed request -- either an order or a withdrawal request. data RequestStatus =     PENDING -- ^ Not yet completed. An order will stay in 'PENDING' state even as it is partially@@ -153,8 +158,10 @@     | COMPLETE -- ^ Completed.     | CANCELLED -- ^ Cancelled. Note that an order cannot be in 'CANCELLED' state, since cancelling     -- an order removes it from the orderbook.-    deriving (Show, Generic, Eq)+    deriving (Show, Generic, Eq, Data, Typeable, Ord) +instance NFData RequestStatus+ type AccountID = Text  -- | A possible error which the BitX API might return,@@ -165,8 +172,10 @@ data BitXError = BitXError {     bitXErrorError :: Text,     bitXErrorErrorCode :: Text-    } deriving (Eq, Show)+    } deriving (Eq, Generic, Show, Data, Typeable, Ord) +instance NFData BitXError+ makeFields ''BitXError  -- | A currency pair@@ -185,8 +194,10 @@     | IDRXBT -- ^ Indonesian Rupiah vs. Bitcoin     | XBTSGD -- ^ Bitcoin vs. Singapore Dollar     | SGDXBT -- ^ Singapore Dollar vs. Bitcoin-  deriving (Show, Generic, Eq)+  deriving (Show, Generic, Eq, Data, Typeable, Ord) +instance NFData CcyPair+ -- | The state of a single market, identified by the currency pair. -- As usual, the ask\/sell price is the price of the last filled ask order, and the bid\/buy price is -- the price of the last filled bid order. Necessarily @bid <= ask.@@@ -197,8 +208,10 @@     tickerLastTrade :: Maybe Int,     tickerRolling24HourVolume :: Scientific,     tickerPair :: CcyPair-    } deriving (Eq, Show)+    } deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData Ticker+ makeFields ''Ticker  -- | A trade-able asset. Essentially, a currency.@@ -211,8 +224,10 @@     | NGN -- ^ Nigerian Naira     | IDR -- ^ Indonesian Rupiah     | SGD -- ^ Singapore Dollar-  deriving (Show, Generic, Eq)+  deriving (Show, Generic, Eq, Data, Typeable, Ord) +instance NFData Asset+ -- | The type of a withdrawal request. data WithdrawalType =     ZAR_EFT -- ^ ZAR by Electronic Funds Transfer@@ -220,18 +235,24 @@     | KES_MPESA -- ^ Kenyan Shilling by Vodafone MPESA     | MYR_IBG -- ^ Malaysian Ringgit by Interbank GIRO (?)     | IDR_LLG -- ^ Indonesian Rupiah by Lalu Lintas Giro (??)-    deriving (Show, Generic, Eq)+    deriving (Show, Generic, Eq, Data, Typeable, Ord) -data QuoteType = BUY | SELL deriving (Show, Generic, Eq)+instance NFData WithdrawalType +data QuoteType = BUY | SELL deriving (Show, Generic, Eq, Data, Typeable, Ord)++instance NFData QuoteType+ type RequestSuccess = Bool  -- | A single placed order in the orderbook data Order = Order {     orderVolume :: Scientific,     orderPrice :: Int-    } deriving (Eq, Show)+    } deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData Order+ makeFields ''Order  -- | Convenient type alias for a bid order@@ -246,8 +267,10 @@     orderbookTimestamp :: UTCTime,     orderbookBids :: [Bid],     orderbookAsks :: [Ask]-    } deriving (Eq, Show)+    } deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData Orderbook+ makeFields ''Orderbook  data Trade = Trade {@@ -255,15 +278,19 @@     tradeVolume :: Scientific,     tradePrice :: Int,     tradeIsBuy :: Bool-    } deriving (Eq, Show)+    } deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData Trade+ makeFields ''Trade  -- | An auth type used by all private API calls, after authorisation. data BitXAuth = BitXAuth         {bitXAuthId :: Text,-         bitXAuthSecret :: Text} deriving (Eq, Show)+         bitXAuthSecret :: Text} deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData BitXAuth+ -- |@mkBitXAuth = BitXAuth "" ""@ mkBitXAuth :: BitXAuth mkBitXAuth = BitXAuth "" ""@@ -277,7 +304,6 @@     BitXAuth (pack $ fst cut) (pack $ tail $ snd cut)     where       cut = span (/= ':') auth- -- | -- >>> :set -XOverloadedStrings -- >>> "id:secret" :: BitXAuth@@ -285,6 +311,7 @@ -- >>> "id:se:cret" :: BitXAuth -- BitXAuth {bitXAuthId = "id", bitXAuthSecret = "se:cret"} + -- | A recently placed (private) order, containing a lot more information than is available on the -- public order book. data PrivateOrder = PrivateOrder@@ -300,29 +327,11 @@          privateOrderId :: OrderID,          privateOrderPair :: CcyPair,          privateOrderState :: RequestStatus,-         privateOrderOrderType :: OrderType } deriving (Eq, Show)--makeFields ''PrivateOrder+         privateOrderOrderType :: OrderType } deriving (Eq, Show, Generic, Data, Typeable) --- | A recently placed (private) order, containing a lot more information than is available on the--- public order book, together with details of any trades which have (partially) filled it.-data PrivateOrderWithTrades = PrivateOrderWithTrades-        {privateOrderWithTradesBase :: Scientific,-         privateOrderWithTradesCounter :: Scientific,-         privateOrderWithTradesCreationTimestamp :: UTCTime,-         privateOrderWithTradesExpirationTimestamp :: UTCTime,-         privateOrderWithTradesCompletedTimestamp :: UTCTime,-         privateOrderWithTradesFeeBase :: Scientific,-         privateOrderWithTradesFeeCounter :: Scientific,-         privateOrderWithTradesLimitPrice :: Int,-         privateOrderWithTradesLimitVolume :: Scientific,-         privateOrderWithTradesId :: OrderID,-         privateOrderWithTradesPair :: CcyPair,-         privateOrderWithTradesState :: RequestStatus,-         privateOrderWithTradesOrderType :: OrderType,-         privateOrderWithTradesTrades :: [Trade] } deriving (Eq, Show)+instance NFData PrivateOrder -makeFields ''PrivateOrderWithTrades+makeFields ''PrivateOrder  -- | A transaction on a private user account. data Transaction = Transaction@@ -333,8 +342,10 @@          transactionBalanceDelta :: Scientific,          transactionAvailableDelta :: Scientific,          transactionCurrency :: Asset,-         transactionDescription :: Text} deriving (Eq, Show)+         transactionDescription :: Text} deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData Transaction+ makeFields ''Transaction  -- | A request to place an order.@@ -342,8 +353,10 @@         {orderRequestPair :: CcyPair,          orderRequestOrderType :: OrderType,          orderRequestVolume :: Scientific,-         orderRequestPrice :: Int } deriving (Eq, Show)+         orderRequestPrice :: Int } deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData OrderRequest+ makeFields ''OrderRequest  -- |@mkOrderRequest = OrderRequest ZARXBT BID 0 0@@@ -353,8 +366,10 @@ data MarketOrderRequest = MarketOrderRequest         {marketOrderRequestPair :: CcyPair,          marketOrderRequestOrderType :: OrderType,-         marketOrderRequestVolume :: Scientific } deriving (Eq, Show)+         marketOrderRequestVolume :: Scientific } deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData MarketOrderRequest+ makeFields ''MarketOrderRequest  -- |@mkMarketOrderRequest = MarketOrderRequest ZARXBT BID 0@@@ -367,8 +382,10 @@          balanceAsset :: Asset,          balanceBalance :: Scientific,          balanceReserved :: Scientific,-         balanceUnconfirmed :: Scientific } deriving (Eq, Show)+         balanceUnconfirmed :: Scientific } deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData Balance+ makeFields ''Balance  -- | A registered address for an acocunt.@@ -376,23 +393,29 @@         {fundingAddressAsset :: Asset,          fundingAddressAddress :: Text,          fundingAddressTotalReceived :: Scientific,-         fundingAddressTotalUnconfirmed :: Scientific} deriving (Eq, Show)+         fundingAddressTotalUnconfirmed :: Scientific} deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData FundingAddress+ makeFields ''FundingAddress  -- | The state of a request to withdraw from an account. data WithdrawalRequest = WithdrawalRequest         {withdrawalRequestStatus :: RequestStatus,-         withdrawalRequestId :: Text } deriving (Eq, Show)+         withdrawalRequestId :: Text } deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData WithdrawalRequest+ makeFields ''WithdrawalRequest  -- | A request to withdraw from an account. data NewWithdrawal = NewWithdrawal         {newWithdrawalWithdrawalType :: WithdrawalType,          newWithdrawalAmount :: Scientific,-         newWithdrawalBeneficiaryId :: Maybe Text} deriving (Eq, Show)+         newWithdrawalBeneficiaryId :: Maybe Text} deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData NewWithdrawal+ makeFields ''NewWithdrawal  -- |@mkNewWithdrawal = NewWithdrawal ZAR_EFT 0@@@ -405,8 +428,10 @@          bitcoinSendRequestCurrency :: Asset,          bitcoinSendRequestAddress :: Text,          bitcoinSendRequestDescription :: Maybe Text,-         bitcoinSendRequestMessage :: Maybe Text} deriving (Eq, Show)+         bitcoinSendRequestMessage :: Maybe Text} deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData BitcoinSendRequest+ makeFields ''BitcoinSendRequest  -- |@mkBitcoinSendRequest = BitcoinSendRequest 0 ZAR "" Nothing Nothing@@@ -417,8 +442,10 @@ data QuoteRequest = QuoteRequest         {quoteRequestQuoteType :: QuoteType,          quoteRequestPair :: CcyPair,-         quoteRequestBaseAmount :: Scientific} deriving (Eq, Show)+         quoteRequestBaseAmount :: Scientific} deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData QuoteRequest+ makeFields ''QuoteRequest  -- |@mkQuoteRequest = QuoteRequest BUY ZARXBT 0@@@ -435,22 +462,46 @@          orderQuoteCreatedAt :: UTCTime,          orderQuoteExpiresAt :: UTCTime,          orderQuoteDiscarded :: Bool,-         orderQuoteExercised :: Bool} deriving (Eq, Show)+         orderQuoteExercised :: Bool} deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData OrderQuote+ makeFields ''OrderQuote  -- | A registered account. data Account = Account         {accountId :: Text,          accountName :: Text,-         accountCurrency :: Asset} deriving (Eq, Show)+         accountCurrency :: Asset} deriving (Eq, Show, Generic, Data, Typeable, Ord) +instance NFData Account+ makeFields ''Account  -- |@mkAccount = Account "" "" ZAR@ mkAccount :: Account mkAccount = Account "" "" ZAR +-- | A private trade, containing a lot more information than is avaiable when inspecting trades+-- via the public API.+data PrivateTrade = PrivateTrade {+    privateTradeBase :: Scientific,+    privateTradeCounter :: Scientific,+    privateTradeFeeBase :: Scientific,+    privateTradeFeeCounter :: Scientific,+    privateTradeIsBuy :: Bool,+    privateTradeOrderId :: Text,+    privateTradePair :: CcyPair,+    privateTradePrice :: Int,+    privateTradeTimestamp :: UTCTime,+    privateTradeOrderType :: OrderType,+    privateTradeVolume :: Scientific+    } deriving (Eq, Show, Generic, Data, Typeable, Ord)++instance NFData PrivateTrade++makeFields ''PrivateTrade+ instance FromJSON CcyPair  instance FromJSON Asset@@ -460,3 +511,4 @@ instance FromJSON WithdrawalType  instance FromJSON QuoteType+
src/Network/Bitcoin/BitX/Types/Internal.hs view
@@ -365,46 +365,6 @@     aesToRec RequestSuccess_ {..} =         requestSuccess'success -------------------------------------- PrivateOrderWithTrades type ------------------------------------data PrivateOrderWithTrades_ = PrivateOrderWithTrades_-    { privateOrderWithTrades'base :: QuotedScientific-    , privateOrderWithTrades'counter :: QuotedScientific-    , privateOrderWithTrades'creation_timestamp :: TimestampMS-    , privateOrderWithTrades'expiration_timestamp :: TimestampMS-    , privateOrderWithTrades'completed_timestamp :: TimestampMS-    , privateOrderWithTrades'fee_base :: QuotedScientific-    , privateOrderWithTrades'fee_counter :: QuotedScientific-    , privateOrderWithTrades'limit_price :: QuotedInt-    , privateOrderWithTrades'limit_volume :: QuotedScientific-    , privateOrderWithTrades'order_id :: Types.OrderID-    , privateOrderWithTrades'pair :: Types.CcyPair-    , privateOrderWithTrades'state :: RequestStatus_-    , privateOrderWithTrades'type :: OrderType_-    , privateOrderWithTrades'trades :: [Trade_]-    }--$(AesTH.deriveFromJSON AesTH.defaultOptions{AesTH.fieldLabelModifier = last . splitOn "'"}-    ''PrivateOrderWithTrades_)--instance BitXAesRecordConvert Types.PrivateOrderWithTrades where-    type Aes Types.PrivateOrderWithTrades = PrivateOrderWithTrades_-    aesToRec PrivateOrderWithTrades_ {..} =-        Types.PrivateOrderWithTrades {privateOrderWithTradesBase = qsToScientific privateOrderWithTrades'base,-                  privateOrderWithTradesCounter = qsToScientific privateOrderWithTrades'counter,-                  privateOrderWithTradesCreationTimestamp = tsmsToUTCTime privateOrderWithTrades'creation_timestamp,-                  privateOrderWithTradesExpirationTimestamp = tsmsToUTCTime privateOrderWithTrades'expiration_timestamp,-                  privateOrderWithTradesCompletedTimestamp = tsmsToUTCTime privateOrderWithTrades'completed_timestamp,-                  privateOrderWithTradesFeeBase = qsToScientific privateOrderWithTrades'fee_base,-                  privateOrderWithTradesFeeCounter = qsToScientific privateOrderWithTrades'fee_counter,-                  privateOrderWithTradesLimitPrice = qiToInt privateOrderWithTrades'limit_price,-                  privateOrderWithTradesLimitVolume = qsToScientific privateOrderWithTrades'limit_volume,-                  privateOrderWithTradesId = privateOrderWithTrades'order_id,-                  privateOrderWithTradesPair = privateOrderWithTrades'pair,-                  privateOrderWithTradesState = requestStatusParse privateOrderWithTrades'state,-                  privateOrderWithTradesOrderType = orderTypeParse privateOrderWithTrades'type,-                  privateOrderWithTradesTrades = map aesToRec privateOrderWithTrades'trades}- -------------------------------------------- Balance type ------------------------------------------  data Balance_ = Balance_@@ -660,3 +620,51 @@         [("type", if (moreq ^. Types.orderType) == Types.BID then "BUY" else "SELL"),          ("pair", showableToBytestring_ (moreq ^. Types.pair)),          (if (moreq ^. Types.orderType) == Types.BID then "counter_volume" else "base_volume", realToDecimalByteString_ (moreq ^. Types.volume))]++------------------------------------------ PrivateTrade type ---------------------------------------++data PrivateTrade_ = PrivateTrade_+    { privateTrade'base :: QuotedScientific+    , privateTrade'counter :: QuotedScientific+    , privateTrade'fee_base :: QuotedScientific+    , privateTrade'fee_counter :: QuotedScientific+    , privateTrade'is_buy :: Bool+    , privateTrade'order_id :: Types.OrderID+    , privateTrade'pair :: Types.CcyPair+    , privateTrade'price :: QuotedInt+    , privateTrade'timestamp :: TimestampMS+    , privateTrade'type :: OrderType_+    , privateTrade'volume :: QuotedScientific+    }++$(AesTH.deriveFromJSON AesTH.defaultOptions{AesTH.fieldLabelModifier = last . splitOn "'"}+    ''PrivateTrade_)++instance BitXAesRecordConvert Types.PrivateTrade where+    type Aes Types.PrivateTrade = PrivateTrade_+    aesToRec PrivateTrade_ {..} =+        Types.PrivateTrade {privateTradeBase = qsToScientific privateTrade'base,+                  privateTradeCounter = qsToScientific privateTrade'counter,+                  privateTradeFeeBase = qsToScientific privateTrade'fee_base,+                  privateTradeFeeCounter = qsToScientific privateTrade'fee_counter,+                  privateTradeIsBuy = privateTrade'is_buy,+                  privateTradeOrderId = privateTrade'order_id,+                  privateTradePair = privateTrade'pair,+                  privateTradePrice = qiToInt privateTrade'price,+                  privateTradeTimestamp = tsmsToUTCTime privateTrade'timestamp,+                  privateTradeOrderType = orderTypeParse privateTrade'type,+                  privateTradeVolume = qsToScientific privateTrade'volume}++----------------------------------------- PrivateTrades type ----------------------------------------++data PrivateTrades_ = PrivateTrades_+    { privateTrades'trades :: [PrivateTrade_]+    }++$(AesTH.deriveFromJSON AesTH.defaultOptions{AesTH.fieldLabelModifier = last . splitOn "'"}+    ''PrivateTrades_)++instance BitXAesRecordConvert [Types.PrivateTrade] where+    type Aes [Types.PrivateTrade] = PrivateTrades_+    aesToRec PrivateTrades_ {..} =+        map aesToRec privateTrades'trades
test/Network/Bitcoin/BitX/Spec/Specs/AesonRecordSpec.hs view
@@ -121,28 +121,6 @@       recordAesCheck         "{\"success\":true}"         (True :: RequestSuccess)-    it "PrivateOrderWithTrades is parsed properly" $-      recordAesCheck-        "{\"base\":\"568.7\", \"counter\":3764.2,\"creation_timestamp\":478873467, \-            \ \"expiration_timestamp\":8768834222, \"completed_timestamp\":6511257825, \"fee_base\":\"3687.3\", \"fee_counter\":12.9,\-            \ \"limit_price\":765.00,\"limit_volume\":55.2,\"order_id\":\"83YG\",\"pair\":\"NADXBT\",\-            \ \"state\":\"COMPLETE\",\"type\":\"BID\", \"trades\":[{\"timestamp\":1431811395699, \-            \ \"volume\":\"6754.09\",\"price\":\"5327.00\",\"is_buy\":false}]}"-        PrivateOrderWithTrades-            {privateOrderWithTradesBase = 568.7,-             privateOrderWithTradesCounter = 3764.2,-             privateOrderWithTradesCreationTimestamp = posixSecondsToUTCTime 478873.467,-             privateOrderWithTradesExpirationTimestamp = posixSecondsToUTCTime 8768834.222,-             privateOrderWithTradesCompletedTimestamp = posixSecondsToUTCTime 6511257.825,-             privateOrderWithTradesFeeBase = 3687.3,-             privateOrderWithTradesFeeCounter = 12.9,-             privateOrderWithTradesLimitPrice = 765,-             privateOrderWithTradesLimitVolume = 55.2,-             privateOrderWithTradesId = "83YG",-             privateOrderWithTradesPair = NADXBT,-             privateOrderWithTradesState = COMPLETE,-             privateOrderWithTradesOrderType = BID,-             privateOrderWithTradesTrades = [tradeInner]}     it "WithdrawalRequest is parsed properly" $       recordAesCheck         "{\"status\":\"PENDING\", \"id\":\"7yrfU4987\"}"@@ -178,6 +156,29 @@             \ \"account_id\":\"3485527347968330182\", \"balance_delta\":0.0399, \             \ \"available_delta\":0.0099,  \"currency\":\"XBT\",\"description\":\"Bought BTC 0.01 for R 79.00\"}]}"         [transactionInner]+    it "PrivateTrade is parsed properly" $+      recordAesCheck+        "{\"base\": \"0.147741\", \"counter\": \"1549.950831\", \"fee_base\": \"0.90\", \"fee_counter\": \"0.00\", \+            \ \"is_buy\": false, \"order_id\": \"BXMC2CJ7HNB88U4\", \"pair\": \"XBTZAR\", \"price\": \"10491.00\", \+            \ \"timestamp\": 1467138492909, \"type\": \"BID\", \"volume\": \"0.147741\" }"+        PrivateTrade+            {privateTradeBase = 0.147741,+             privateTradeCounter = 1549.950831,+             privateTradeFeeBase = 0.9,+             privateTradeFeeCounter = 0,+             privateTradeIsBuy = False,+             privateTradeOrderId = "BXMC2CJ7HNB88U4",+             privateTradePair = XBTZAR,+             privateTradePrice = 10491,+             privateTradeTimestamp = posixSecondsToUTCTime 1467138492.909,+             privateTradeOrderType = BID,+             privateTradeVolume = 0.147741}+    it "PrivateTrades is parsed properly" $+      recordAesCheck+        "{\"trades\":[{\"base\": \"0.147741\", \"counter\": \"1549.950831\", \"fee_base\": \"0.90\", \"fee_counter\": \"0.00\", \+            \ \"is_buy\": false, \"order_id\": \"BXMC2CJ7HNB88U4\", \"pair\": \"XBTZAR\", \"price\": \"10491.00\", \+            \ \"timestamp\": 1467138492909, \"type\": \"BID\", \"volume\": \"0.147741\" }]}"+         [privateTradeInner]  tickerInner :: Ticker tickerInner =@@ -228,3 +229,18 @@          transactionAvailableDelta = 0.0099,          transactionCurrency = XBT,          transactionDescription = "Bought BTC 0.01 for R 79.00"}++privateTradeInner :: PrivateTrade+privateTradeInner =+    PrivateTrade+        {privateTradeBase = 0.147741,+          privateTradeCounter = 1549.950831,+          privateTradeFeeBase = 0.9,+          privateTradeFeeCounter = 0,+          privateTradeIsBuy = False,+          privateTradeOrderId = "BXMC2CJ7HNB88U4",+          privateTradePair = XBTZAR,+          privateTradePrice = 10491,+          privateTradeTimestamp = posixSecondsToUTCTime 1467138492.909,+          privateTradeOrderType = BID,+          privateTradeVolume = 0.147741}
test/Network/Bitcoin/BitX/Spec/Specs/LensSpec.hs view
@@ -88,25 +88,6 @@     let _ = x ^. BitX.completedTimestamp     Nothing -_privateOrderWithTrades :: Maybe Int-_privateOrderWithTrades = do-    let x = BitX.PrivateOrderWithTrades 0 0 (posixSecondsToUTCTime 0) (posixSecondsToUTCTime 0) (posixSecondsToUTCTime 0) 0 0 0 0 "" XBTZAR PENDING ASK [BitX.Trade (posixSecondsToUTCTime 0) 0 0 False]-    let _ = x ^. BitX.base-    let _ = x ^. BitX.counter-    let _ = x ^. BitX.creationTimestamp-    let _ = x ^. BitX.feeBase-    let _ = x ^. BitX.feeCounter-    let _ = x ^. BitX.limitPrice-    let _ = x ^. BitX.limitVolume-    let _ = x ^. BitX.id-    let _ = x ^. BitX.pair-    let _ = x ^. BitX.state-    let _ = x ^. BitX.orderType-    let _ = x ^. BitX.expirationTimestamp-    let _ = x ^. BitX.completedTimestamp-    let _ = x ^. BitX.trades-    Nothing- _transaction :: Maybe Int _transaction = do     let x = BitX.Transaction 0 (posixSecondsToUTCTime 0) 0 0 0 0 ZAR ""@@ -193,3 +174,20 @@     let _ = x ^. BitX.status     let _ = x ^. BitX.id     Nothing++_privateTrade :: Maybe Int+_privateTrade = do+  let x = BitX.PrivateTrade 0 0 0 0 True "" XBTZAR 0 (posixSecondsToUTCTime 0) BID 0+  let _ = x ^. BitX.base+  let _ = x ^. BitX.counter+  let _ = x ^. BitX.feeBase+  let _ = x ^. BitX.feeCounter+  let _ = x ^. BitX.isBuy+  let _ = x ^. BitX.orderId+  let _ = x ^. BitX.pair+  let _ = x ^. BitX.price+  let _ = x ^. BitX.timestamp+  let _ = x ^. BitX.orderType+  let _ = x ^. BitX.volume+  Nothing+