{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} module CoinbasePro.WebSocketFeed.Channel.Full.Done ( Done (..) ) where import Data.Aeson (FromJSON, parseJSON) import Data.Aeson.Casing (snakeCase) import Data.Aeson.TH (defaultOptions, deriveJSON, fieldLabelModifier) import Data.Text (Text) import Data.Time.Clock (UTCTime) import CoinbasePro.Types (OrderId, Price, ProductId, ProfileId, Sequence, Side, Size, UserId) type Reason = Text newtype RemainingSize = RemainingSize { RemainingSize -> Maybe Size unRemainingSize :: Maybe Size } deriving (RemainingSize -> RemainingSize -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: RemainingSize -> RemainingSize -> Bool $c/= :: RemainingSize -> RemainingSize -> Bool == :: RemainingSize -> RemainingSize -> Bool $c== :: RemainingSize -> RemainingSize -> Bool Eq, Eq RemainingSize RemainingSize -> RemainingSize -> Bool RemainingSize -> RemainingSize -> Ordering RemainingSize -> RemainingSize -> RemainingSize forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: RemainingSize -> RemainingSize -> RemainingSize $cmin :: RemainingSize -> RemainingSize -> RemainingSize max :: RemainingSize -> RemainingSize -> RemainingSize $cmax :: RemainingSize -> RemainingSize -> RemainingSize >= :: RemainingSize -> RemainingSize -> Bool $c>= :: RemainingSize -> RemainingSize -> Bool > :: RemainingSize -> RemainingSize -> Bool $c> :: RemainingSize -> RemainingSize -> Bool <= :: RemainingSize -> RemainingSize -> Bool $c<= :: RemainingSize -> RemainingSize -> Bool < :: RemainingSize -> RemainingSize -> Bool $c< :: RemainingSize -> RemainingSize -> Bool compare :: RemainingSize -> RemainingSize -> Ordering $ccompare :: RemainingSize -> RemainingSize -> Ordering Ord, Int -> RemainingSize -> ShowS [RemainingSize] -> ShowS RemainingSize -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [RemainingSize] -> ShowS $cshowList :: [RemainingSize] -> ShowS show :: RemainingSize -> String $cshow :: RemainingSize -> String showsPrec :: Int -> RemainingSize -> ShowS $cshowsPrec :: Int -> RemainingSize -> ShowS Show) instance FromJSON RemainingSize where parseJSON :: Value -> Parser RemainingSize parseJSON = (Maybe Size -> RemainingSize RemainingSize forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$>) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. FromJSON a => Value -> Parser a parseJSON data Done = Done { Done -> UTCTime time :: UTCTime , Done -> ProductId productId :: ProductId , Done -> Int sequence :: Sequence , Done -> Maybe Price price :: Maybe Price , Done -> OrderId orderId :: OrderId , Done -> Reason reason :: Reason , Done -> Side side :: Side , Done -> Maybe Size remainingSize :: Maybe Size , Done -> Maybe Reason userId :: Maybe UserId , Done -> Maybe Reason profileId :: Maybe ProfileId } deriving (Done -> Done -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Done -> Done -> Bool $c/= :: Done -> Done -> Bool == :: Done -> Done -> Bool $c== :: Done -> Done -> Bool Eq, Eq Done Done -> Done -> Bool Done -> Done -> Ordering Done -> Done -> Done forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: Done -> Done -> Done $cmin :: Done -> Done -> Done max :: Done -> Done -> Done $cmax :: Done -> Done -> Done >= :: Done -> Done -> Bool $c>= :: Done -> Done -> Bool > :: Done -> Done -> Bool $c> :: Done -> Done -> Bool <= :: Done -> Done -> Bool $c<= :: Done -> Done -> Bool < :: Done -> Done -> Bool $c< :: Done -> Done -> Bool compare :: Done -> Done -> Ordering $ccompare :: Done -> Done -> Ordering Ord, Int -> Done -> ShowS [Done] -> ShowS Done -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Done] -> ShowS $cshowList :: [Done] -> ShowS show :: Done -> String $cshow :: Done -> String showsPrec :: Int -> Done -> ShowS $cshowsPrec :: Int -> Done -> ShowS Show) deriveJSON defaultOptions {fieldLabelModifier = snakeCase} ''Done