{-# OPTIONS_GHC -fno-warn-unused-imports #-} module Instances where import BitMEX.Model import BitMEX.Core import qualified Data.Aeson as A import qualified Data.ByteString.Lazy as BL import qualified Data.HashMap.Strict as HM import qualified Data.Set as Set import qualified Data.Text as T import qualified Data.Time as TI import qualified Data.Vector as V import Control.Monad import Data.Char (isSpace) import Data.List (sort) import Test.QuickCheck import ApproxEq instance Arbitrary T.Text where arbitrary = T.pack <$> arbitrary instance Arbitrary TI.Day where arbitrary = TI.ModifiedJulianDay . (2000 +) <$> arbitrary shrink = (TI.ModifiedJulianDay <$>) . shrink . TI.toModifiedJulianDay instance Arbitrary TI.UTCTime where arbitrary = TI.UTCTime <$> arbitrary <*> (TI.secondsToDiffTime <$> choose (0, 86401)) instance Arbitrary BL.ByteString where arbitrary = BL.pack <$> arbitrary shrink xs = BL.pack <$> shrink (BL.unpack xs) instance Arbitrary ByteArray where arbitrary = ByteArray <$> arbitrary shrink (ByteArray xs) = ByteArray <$> shrink xs instance Arbitrary Binary where arbitrary = Binary <$> arbitrary shrink (Binary xs) = Binary <$> shrink xs instance Arbitrary DateTime where arbitrary = DateTime <$> arbitrary shrink (DateTime xs) = DateTime <$> shrink xs instance Arbitrary Date where arbitrary = Date <$> arbitrary shrink (Date xs) = Date <$> shrink xs -- | A naive Arbitrary instance for A.Value: instance Arbitrary A.Value where arbitrary = frequency [(3, simpleTypes), (1, arrayTypes), (1, objectTypes)] where simpleTypes :: Gen A.Value simpleTypes = frequency [ (1, return A.Null) , (2, liftM A.Bool (arbitrary :: Gen Bool)) , (2, liftM (A.Number . fromIntegral) (arbitrary :: Gen Int)) , (2, liftM (A.String . T.pack) (arbitrary :: Gen String)) ] mapF (k, v) = (T.pack k, v) simpleAndArrays = frequency [(1, sized sizedArray), (4, simpleTypes)] arrayTypes = sized sizedArray objectTypes = sized sizedObject sizedArray n = liftM (A.Array . V.fromList) $ replicateM n simpleTypes sizedObject n = liftM (A.object . map mapF) $ replicateM n $ (,) <$> (arbitrary :: Gen String) <*> simpleAndArrays -- | Checks if a given list has no duplicates in _O(n log n)_. hasNoDups :: (Ord a) => [a] -> Bool hasNoDups = go Set.empty where go _ [] = True go s (x:xs) | s' <- Set.insert x s , Set.size s' > Set.size s = go s' xs | otherwise = False instance ApproxEq TI.Day where (=~) = (==) -- * Models instance Arbitrary APIKey where arbitrary = APIKey <$> arbitrary -- aPIKeyId :: Text <*> arbitrary -- aPIKeySecret :: Text <*> arbitrary -- aPIKeyName :: Text <*> arbitrary -- aPIKeyNonce :: Double <*> arbitrary -- aPIKeyCidr :: Maybe Text <*> arbitrary -- aPIKeyPermissions :: Maybe [XAny] <*> arbitrary -- aPIKeyEnabled :: Maybe Bool <*> arbitrary -- aPIKeyUserId :: Double <*> arbitrary -- aPIKeyCreated :: Maybe DateTime instance Arbitrary AccessToken where arbitrary = AccessToken <$> arbitrary -- accessTokenId :: Text <*> arbitrary -- accessTokenTtl :: Maybe Double <*> arbitrary -- accessTokenCreated :: Maybe DateTime <*> arbitrary -- accessTokenUserId :: Maybe Double instance Arbitrary Affiliate where arbitrary = Affiliate <$> arbitrary -- affiliateAccount :: Double <*> arbitrary -- affiliateCurrency :: Text <*> arbitrary -- affiliatePrevPayout :: Maybe Double <*> arbitrary -- affiliatePrevTurnover :: Maybe Double <*> arbitrary -- affiliatePrevComm :: Maybe Double <*> arbitrary -- affiliatePrevTimestamp :: Maybe DateTime <*> arbitrary -- affiliateExecTurnover :: Maybe Double <*> arbitrary -- affiliateExecComm :: Maybe Double <*> arbitrary -- affiliateTotalReferrals :: Maybe Double <*> arbitrary -- affiliateTotalTurnover :: Maybe Double <*> arbitrary -- affiliateTotalComm :: Maybe Double <*> arbitrary -- affiliatePayoutPcnt :: Maybe Double <*> arbitrary -- affiliatePendingPayout :: Maybe Double <*> arbitrary -- affiliateTimestamp :: Maybe DateTime <*> arbitrary -- affiliateReferrerAccount :: Maybe Double instance Arbitrary Announcement where arbitrary = Announcement <$> arbitrary -- announcementId :: Double <*> arbitrary -- announcementLink :: Maybe Text <*> arbitrary -- announcementTitle :: Maybe Text <*> arbitrary -- announcementContent :: Maybe Text <*> arbitrary -- announcementDate :: Maybe DateTime instance Arbitrary Chat where arbitrary = Chat <$> arbitrary -- chatId :: Maybe Double <*> arbitrary -- chatDate :: DateTime <*> arbitrary -- chatUser :: Text <*> arbitrary -- chatMessage :: Text <*> arbitrary -- chatHtml :: Text <*> arbitrary -- chatFromBot :: Maybe Bool <*> arbitrary -- chatChannelId :: Maybe Double instance Arbitrary ChatChannels where arbitrary = ChatChannels <$> arbitrary -- chatChannelsId :: Maybe Double <*> arbitrary -- chatChannelsName :: Text instance Arbitrary ConnectedUsers where arbitrary = ConnectedUsers <$> arbitrary -- connectedUsersUsers :: Maybe Double <*> arbitrary -- connectedUsersBots :: Maybe Double instance Arbitrary Error where arbitrary = Error <$> arbitrary -- errorError :: ErrorError instance Arbitrary ErrorError where arbitrary = ErrorError <$> arbitrary -- errorErrorMessage :: Maybe Text <*> arbitrary -- errorErrorName :: Maybe Text instance Arbitrary Execution where arbitrary = Execution <$> arbitrary -- executionExecId :: Text <*> arbitrary -- executionOrderId :: Maybe Text <*> arbitrary -- executionClOrdId :: Maybe Text <*> arbitrary -- executionClOrdLinkId :: Maybe Text <*> arbitrary -- executionAccount :: Maybe Double <*> arbitrary -- executionSymbol :: Maybe Text <*> arbitrary -- executionSide :: Maybe Text <*> arbitrary -- executionLastQty :: Maybe Double <*> arbitrary -- executionLastPx :: Maybe Double <*> arbitrary -- executionUnderlyingLastPx :: Maybe Double <*> arbitrary -- executionLastMkt :: Maybe Text <*> arbitrary -- executionLastLiquidityInd :: Maybe Text <*> arbitrary -- executionSimpleOrderQty :: Maybe Double <*> arbitrary -- executionOrderQty :: Maybe Double <*> arbitrary -- executionPrice :: Maybe Double <*> arbitrary -- executionDisplayQty :: Maybe Double <*> arbitrary -- executionStopPx :: Maybe Double <*> arbitrary -- executionPegOffsetValue :: Maybe Double <*> arbitrary -- executionPegPriceType :: Maybe Text <*> arbitrary -- executionCurrency :: Maybe Text <*> arbitrary -- executionSettlCurrency :: Maybe Text <*> arbitrary -- executionExecType :: Maybe Text <*> arbitrary -- executionOrdType :: Maybe Text <*> arbitrary -- executionTimeInForce :: Maybe Text <*> arbitrary -- executionExecInst :: Maybe Text <*> arbitrary -- executionContingencyType :: Maybe Text <*> arbitrary -- executionExDestination :: Maybe Text <*> arbitrary -- executionOrdStatus :: Maybe Text <*> arbitrary -- executionTriggered :: Maybe Text <*> arbitrary -- executionWorkingIndicator :: Maybe Bool <*> arbitrary -- executionOrdRejReason :: Maybe Text <*> arbitrary -- executionSimpleLeavesQty :: Maybe Double <*> arbitrary -- executionLeavesQty :: Maybe Double <*> arbitrary -- executionSimpleCumQty :: Maybe Double <*> arbitrary -- executionCumQty :: Maybe Double <*> arbitrary -- executionAvgPx :: Maybe Double <*> arbitrary -- executionCommission :: Maybe Double <*> arbitrary -- executionTradePublishIndicator :: Maybe Text <*> arbitrary -- executionMultiLegReportingType :: Maybe Text <*> arbitrary -- executionText :: Maybe Text <*> arbitrary -- executionTrdMatchId :: Maybe Text <*> arbitrary -- executionExecCost :: Maybe Double <*> arbitrary -- executionExecComm :: Maybe Double <*> arbitrary -- executionHomeNotional :: Maybe Double <*> arbitrary -- executionForeignNotional :: Maybe Double <*> arbitrary -- executionTransactTime :: Maybe DateTime <*> arbitrary -- executionTimestamp :: Maybe DateTime instance Arbitrary Funding where arbitrary = Funding <$> arbitrary -- fundingTimestamp :: DateTime <*> arbitrary -- fundingSymbol :: Text <*> arbitrary -- fundingFundingInterval :: Maybe DateTime <*> arbitrary -- fundingFundingRate :: Maybe Double <*> arbitrary -- fundingFundingRateDaily :: Maybe Double instance Arbitrary IndexComposite where arbitrary = IndexComposite <$> arbitrary -- indexCompositeTimestamp :: DateTime <*> arbitrary -- indexCompositeSymbol :: Maybe Text <*> arbitrary -- indexCompositeIndexSymbol :: Maybe Text <*> arbitrary -- indexCompositeReference :: Maybe Text <*> arbitrary -- indexCompositeLastPrice :: Maybe Double <*> arbitrary -- indexCompositeWeight :: Maybe Double <*> arbitrary -- indexCompositeLogged :: Maybe DateTime instance Arbitrary InlineResponse200 where arbitrary = InlineResponse200 <$> arbitrary -- inlineResponse200Success :: Maybe Bool instance Arbitrary Instrument where arbitrary = Instrument <$> arbitrary -- instrumentSymbol :: Text <*> arbitrary -- instrumentRootSymbol :: Maybe Text <*> arbitrary -- instrumentState :: Maybe Text <*> arbitrary -- instrumentTyp :: Maybe Text <*> arbitrary -- instrumentListing :: Maybe DateTime <*> arbitrary -- instrumentFront :: Maybe DateTime <*> arbitrary -- instrumentExpiry :: Maybe DateTime <*> arbitrary -- instrumentSettle :: Maybe DateTime <*> arbitrary -- instrumentRelistInterval :: Maybe DateTime <*> arbitrary -- instrumentInverseLeg :: Maybe Text <*> arbitrary -- instrumentSellLeg :: Maybe Text <*> arbitrary -- instrumentBuyLeg :: Maybe Text <*> arbitrary -- instrumentPositionCurrency :: Maybe Text <*> arbitrary -- instrumentUnderlying :: Maybe Text <*> arbitrary -- instrumentQuoteCurrency :: Maybe Text <*> arbitrary -- instrumentUnderlyingSymbol :: Maybe Text <*> arbitrary -- instrumentReference :: Maybe Text <*> arbitrary -- instrumentReferenceSymbol :: Maybe Text <*> arbitrary -- instrumentCalcInterval :: Maybe DateTime <*> arbitrary -- instrumentPublishInterval :: Maybe DateTime <*> arbitrary -- instrumentPublishTime :: Maybe DateTime <*> arbitrary -- instrumentMaxOrderQty :: Maybe Double <*> arbitrary -- instrumentMaxPrice :: Maybe Double <*> arbitrary -- instrumentLotSize :: Maybe Double <*> arbitrary -- instrumentTickSize :: Maybe Double <*> arbitrary -- instrumentMultiplier :: Maybe Double <*> arbitrary -- instrumentSettlCurrency :: Maybe Text <*> arbitrary -- instrumentUnderlyingToPositionMultiplier :: Maybe Double <*> arbitrary -- instrumentUnderlyingToSettleMultiplier :: Maybe Double <*> arbitrary -- instrumentQuoteToSettleMultiplier :: Maybe Double <*> arbitrary -- instrumentIsQuanto :: Maybe Bool <*> arbitrary -- instrumentIsInverse :: Maybe Bool <*> arbitrary -- instrumentInitMargin :: Maybe Double <*> arbitrary -- instrumentMaintMargin :: Maybe Double <*> arbitrary -- instrumentRiskLimit :: Maybe Double <*> arbitrary -- instrumentRiskStep :: Maybe Double <*> arbitrary -- instrumentLimit :: Maybe Double <*> arbitrary -- instrumentCapped :: Maybe Bool <*> arbitrary -- instrumentTaxed :: Maybe Bool <*> arbitrary -- instrumentDeleverage :: Maybe Bool <*> arbitrary -- instrumentMakerFee :: Maybe Double <*> arbitrary -- instrumentTakerFee :: Maybe Double <*> arbitrary -- instrumentSettlementFee :: Maybe Double <*> arbitrary -- instrumentInsuranceFee :: Maybe Double <*> arbitrary -- instrumentFundingBaseSymbol :: Maybe Text <*> arbitrary -- instrumentFundingQuoteSymbol :: Maybe Text <*> arbitrary -- instrumentFundingPremiumSymbol :: Maybe Text <*> arbitrary -- instrumentFundingTimestamp :: Maybe DateTime <*> arbitrary -- instrumentFundingInterval :: Maybe DateTime <*> arbitrary -- instrumentFundingRate :: Maybe Double <*> arbitrary -- instrumentIndicativeFundingRate :: Maybe Double <*> arbitrary -- instrumentRebalanceTimestamp :: Maybe DateTime <*> arbitrary -- instrumentRebalanceInterval :: Maybe DateTime <*> arbitrary -- instrumentOpeningTimestamp :: Maybe DateTime <*> arbitrary -- instrumentClosingTimestamp :: Maybe DateTime <*> arbitrary -- instrumentSessionInterval :: Maybe DateTime <*> arbitrary -- instrumentPrevClosePrice :: Maybe Double <*> arbitrary -- instrumentLimitDownPrice :: Maybe Double <*> arbitrary -- instrumentLimitUpPrice :: Maybe Double <*> arbitrary -- instrumentBankruptLimitDownPrice :: Maybe Double <*> arbitrary -- instrumentBankruptLimitUpPrice :: Maybe Double <*> arbitrary -- instrumentPrevTotalVolume :: Maybe Double <*> arbitrary -- instrumentTotalVolume :: Maybe Double <*> arbitrary -- instrumentVolume :: Maybe Double <*> arbitrary -- instrumentVolume24h :: Maybe Double <*> arbitrary -- instrumentPrevTotalTurnover :: Maybe Double <*> arbitrary -- instrumentTotalTurnover :: Maybe Double <*> arbitrary -- instrumentTurnover :: Maybe Double <*> arbitrary -- instrumentTurnover24h :: Maybe Double <*> arbitrary -- instrumentPrevPrice24h :: Maybe Double <*> arbitrary -- instrumentVwap :: Maybe Double <*> arbitrary -- instrumentHighPrice :: Maybe Double <*> arbitrary -- instrumentLowPrice :: Maybe Double <*> arbitrary -- instrumentLastPrice :: Maybe Double <*> arbitrary -- instrumentLastPriceProtected :: Maybe Double <*> arbitrary -- instrumentLastTickDirection :: Maybe Text <*> arbitrary -- instrumentLastChangePcnt :: Maybe Double <*> arbitrary -- instrumentBidPrice :: Maybe Double <*> arbitrary -- instrumentMidPrice :: Maybe Double <*> arbitrary -- instrumentAskPrice :: Maybe Double <*> arbitrary -- instrumentImpactBidPrice :: Maybe Double <*> arbitrary -- instrumentImpactMidPrice :: Maybe Double <*> arbitrary -- instrumentImpactAskPrice :: Maybe Double <*> arbitrary -- instrumentHasLiquidity :: Maybe Bool <*> arbitrary -- instrumentOpenInterest :: Maybe Double <*> arbitrary -- instrumentOpenValue :: Maybe Double <*> arbitrary -- instrumentFairMethod :: Maybe Text <*> arbitrary -- instrumentFairBasisRate :: Maybe Double <*> arbitrary -- instrumentFairBasis :: Maybe Double <*> arbitrary -- instrumentFairPrice :: Maybe Double <*> arbitrary -- instrumentMarkMethod :: Maybe Text <*> arbitrary -- instrumentMarkPrice :: Maybe Double <*> arbitrary -- instrumentIndicativeTaxRate :: Maybe Double <*> arbitrary -- instrumentIndicativeSettlePrice :: Maybe Double <*> arbitrary -- instrumentSettledPrice :: Maybe Double <*> arbitrary -- instrumentTimestamp :: Maybe DateTime instance Arbitrary InstrumentInterval where arbitrary = InstrumentInterval <$> arbitrary -- instrumentIntervalIntervals :: [Text] <*> arbitrary -- instrumentIntervalSymbols :: [Text] instance Arbitrary Insurance where arbitrary = Insurance <$> arbitrary -- insuranceCurrency :: Text <*> arbitrary -- insuranceTimestamp :: DateTime <*> arbitrary -- insuranceWalletBalance :: Maybe Double instance Arbitrary Leaderboard where arbitrary = Leaderboard <$> arbitrary -- leaderboardName :: Text <*> arbitrary -- leaderboardIsRealName :: Maybe Bool <*> arbitrary -- leaderboardIsMe :: Maybe Bool <*> arbitrary -- leaderboardProfit :: Maybe Double instance Arbitrary Liquidation where arbitrary = Liquidation <$> arbitrary -- liquidationOrderId :: Text <*> arbitrary -- liquidationSymbol :: Maybe Text <*> arbitrary -- liquidationSide :: Maybe Text <*> arbitrary -- liquidationPrice :: Maybe Double <*> arbitrary -- liquidationLeavesQty :: Maybe Double instance Arbitrary Margin where arbitrary = Margin <$> arbitrary -- marginAccount :: Double <*> arbitrary -- marginCurrency :: Text <*> arbitrary -- marginRiskLimit :: Maybe Double <*> arbitrary -- marginPrevState :: Maybe Text <*> arbitrary -- marginState :: Maybe Text <*> arbitrary -- marginAction :: Maybe Text <*> arbitrary -- marginAmount :: Maybe Double <*> arbitrary -- marginPendingCredit :: Maybe Double <*> arbitrary -- marginPendingDebit :: Maybe Double <*> arbitrary -- marginConfirmedDebit :: Maybe Double <*> arbitrary -- marginPrevRealisedPnl :: Maybe Double <*> arbitrary -- marginPrevUnrealisedPnl :: Maybe Double <*> arbitrary -- marginGrossComm :: Maybe Double <*> arbitrary -- marginGrossOpenCost :: Maybe Double <*> arbitrary -- marginGrossOpenPremium :: Maybe Double <*> arbitrary -- marginGrossExecCost :: Maybe Double <*> arbitrary -- marginGrossMarkValue :: Maybe Double <*> arbitrary -- marginRiskValue :: Maybe Double <*> arbitrary -- marginTaxableMargin :: Maybe Double <*> arbitrary -- marginInitMargin :: Maybe Double <*> arbitrary -- marginMaintMargin :: Maybe Double <*> arbitrary -- marginSessionMargin :: Maybe Double <*> arbitrary -- marginTargetExcessMargin :: Maybe Double <*> arbitrary -- marginVarMargin :: Maybe Double <*> arbitrary -- marginRealisedPnl :: Maybe Double <*> arbitrary -- marginUnrealisedPnl :: Maybe Double <*> arbitrary -- marginIndicativeTax :: Maybe Double <*> arbitrary -- marginUnrealisedProfit :: Maybe Double <*> arbitrary -- marginSyntheticMargin :: Maybe Double <*> arbitrary -- marginWalletBalance :: Maybe Double <*> arbitrary -- marginMarginBalance :: Maybe Double <*> arbitrary -- marginMarginBalancePcnt :: Maybe Double <*> arbitrary -- marginMarginLeverage :: Maybe Double <*> arbitrary -- marginMarginUsedPcnt :: Maybe Double <*> arbitrary -- marginExcessMargin :: Maybe Double <*> arbitrary -- marginExcessMarginPcnt :: Maybe Double <*> arbitrary -- marginAvailableMargin :: Maybe Double <*> arbitrary -- marginWithdrawableMargin :: Maybe Double <*> arbitrary -- marginTimestamp :: Maybe DateTime <*> arbitrary -- marginGrossLastValue :: Maybe Double <*> arbitrary -- marginCommission :: Maybe Double instance Arbitrary Notification where arbitrary = Notification <$> arbitrary -- notificationId :: Maybe Double <*> arbitrary -- notificationDate :: DateTime <*> arbitrary -- notificationTitle :: Text <*> arbitrary -- notificationBody :: Text <*> arbitrary -- notificationTtl :: Double <*> arbitrary -- notificationType :: Maybe Text <*> arbitrary -- notificationClosable :: Maybe Bool <*> arbitrary -- notificationPersist :: Maybe Bool <*> arbitrary -- notificationWaitForVisibility :: Maybe Bool <*> arbitrary -- notificationSound :: Maybe Text instance Arbitrary Order where arbitrary = Order <$> arbitrary -- orderOrderId :: Text <*> arbitrary -- orderClOrdId :: Maybe Text <*> arbitrary -- orderClOrdLinkId :: Maybe Text <*> arbitrary -- orderAccount :: Maybe Double <*> arbitrary -- orderSymbol :: Maybe Text <*> arbitrary -- orderSide :: Maybe Text <*> arbitrary -- orderSimpleOrderQty :: Maybe Double <*> arbitrary -- orderOrderQty :: Maybe Double <*> arbitrary -- orderPrice :: Maybe Double <*> arbitrary -- orderDisplayQty :: Maybe Double <*> arbitrary -- orderStopPx :: Maybe Double <*> arbitrary -- orderPegOffsetValue :: Maybe Double <*> arbitrary -- orderPegPriceType :: Maybe Text <*> arbitrary -- orderCurrency :: Maybe Text <*> arbitrary -- orderSettlCurrency :: Maybe Text <*> arbitrary -- orderOrdType :: Maybe Text <*> arbitrary -- orderTimeInForce :: Maybe Text <*> arbitrary -- orderExecInst :: Maybe Text <*> arbitrary -- orderContingencyType :: Maybe Text <*> arbitrary -- orderExDestination :: Maybe Text <*> arbitrary -- orderOrdStatus :: Maybe Text <*> arbitrary -- orderTriggered :: Maybe Text <*> arbitrary -- orderWorkingIndicator :: Maybe Bool <*> arbitrary -- orderOrdRejReason :: Maybe Text <*> arbitrary -- orderSimpleLeavesQty :: Maybe Double <*> arbitrary -- orderLeavesQty :: Maybe Double <*> arbitrary -- orderSimpleCumQty :: Maybe Double <*> arbitrary -- orderCumQty :: Maybe Double <*> arbitrary -- orderAvgPx :: Maybe Double <*> arbitrary -- orderMultiLegReportingType :: Maybe Text <*> arbitrary -- orderText :: Maybe Text <*> arbitrary -- orderTransactTime :: Maybe DateTime <*> arbitrary -- orderTimestamp :: Maybe DateTime instance Arbitrary OrderBook where arbitrary = OrderBook <$> arbitrary -- orderBookSymbol :: Text <*> arbitrary -- orderBookLevel :: Double <*> arbitrary -- orderBookBidSize :: Maybe Double <*> arbitrary -- orderBookBidPrice :: Maybe Double <*> arbitrary -- orderBookAskPrice :: Maybe Double <*> arbitrary -- orderBookAskSize :: Maybe Double <*> arbitrary -- orderBookTimestamp :: Maybe DateTime instance Arbitrary OrderBookL2 where arbitrary = OrderBookL2 <$> arbitrary -- orderBookL2Symbol :: Text <*> arbitrary -- orderBookL2Id :: Double <*> arbitrary -- orderBookL2Side :: Text <*> arbitrary -- orderBookL2Size :: Maybe Double <*> arbitrary -- orderBookL2Price :: Maybe Double instance Arbitrary Position where arbitrary = Position <$> arbitrary -- positionAccount :: Double <*> arbitrary -- positionSymbol :: Text <*> arbitrary -- positionCurrency :: Text <*> arbitrary -- positionUnderlying :: Maybe Text <*> arbitrary -- positionQuoteCurrency :: Maybe Text <*> arbitrary -- positionCommission :: Maybe Double <*> arbitrary -- positionInitMarginReq :: Maybe Double <*> arbitrary -- positionMaintMarginReq :: Maybe Double <*> arbitrary -- positionRiskLimit :: Maybe Double <*> arbitrary -- positionLeverage :: Maybe Double <*> arbitrary -- positionCrossMargin :: Maybe Bool <*> arbitrary -- positionDeleveragePercentile :: Maybe Double <*> arbitrary -- positionRebalancedPnl :: Maybe Double <*> arbitrary -- positionPrevRealisedPnl :: Maybe Double <*> arbitrary -- positionPrevUnrealisedPnl :: Maybe Double <*> arbitrary -- positionPrevClosePrice :: Maybe Double <*> arbitrary -- positionOpeningTimestamp :: Maybe DateTime <*> arbitrary -- positionOpeningQty :: Maybe Double <*> arbitrary -- positionOpeningCost :: Maybe Double <*> arbitrary -- positionOpeningComm :: Maybe Double <*> arbitrary -- positionOpenOrderBuyQty :: Maybe Double <*> arbitrary -- positionOpenOrderBuyCost :: Maybe Double <*> arbitrary -- positionOpenOrderBuyPremium :: Maybe Double <*> arbitrary -- positionOpenOrderSellQty :: Maybe Double <*> arbitrary -- positionOpenOrderSellCost :: Maybe Double <*> arbitrary -- positionOpenOrderSellPremium :: Maybe Double <*> arbitrary -- positionExecBuyQty :: Maybe Double <*> arbitrary -- positionExecBuyCost :: Maybe Double <*> arbitrary -- positionExecSellQty :: Maybe Double <*> arbitrary -- positionExecSellCost :: Maybe Double <*> arbitrary -- positionExecQty :: Maybe Double <*> arbitrary -- positionExecCost :: Maybe Double <*> arbitrary -- positionExecComm :: Maybe Double <*> arbitrary -- positionCurrentTimestamp :: Maybe DateTime <*> arbitrary -- positionCurrentQty :: Maybe Double <*> arbitrary -- positionCurrentCost :: Maybe Double <*> arbitrary -- positionCurrentComm :: Maybe Double <*> arbitrary -- positionRealisedCost :: Maybe Double <*> arbitrary -- positionUnrealisedCost :: Maybe Double <*> arbitrary -- positionGrossOpenCost :: Maybe Double <*> arbitrary -- positionGrossOpenPremium :: Maybe Double <*> arbitrary -- positionGrossExecCost :: Maybe Double <*> arbitrary -- positionIsOpen :: Maybe Bool <*> arbitrary -- positionMarkPrice :: Maybe Double <*> arbitrary -- positionMarkValue :: Maybe Double <*> arbitrary -- positionRiskValue :: Maybe Double <*> arbitrary -- positionHomeNotional :: Maybe Double <*> arbitrary -- positionForeignNotional :: Maybe Double <*> arbitrary -- positionPosState :: Maybe Text <*> arbitrary -- positionPosCost :: Maybe Double <*> arbitrary -- positionPosCost2 :: Maybe Double <*> arbitrary -- positionPosCross :: Maybe Double <*> arbitrary -- positionPosInit :: Maybe Double <*> arbitrary -- positionPosComm :: Maybe Double <*> arbitrary -- positionPosLoss :: Maybe Double <*> arbitrary -- positionPosMargin :: Maybe Double <*> arbitrary -- positionPosMaint :: Maybe Double <*> arbitrary -- positionPosAllowance :: Maybe Double <*> arbitrary -- positionTaxableMargin :: Maybe Double <*> arbitrary -- positionInitMargin :: Maybe Double <*> arbitrary -- positionMaintMargin :: Maybe Double <*> arbitrary -- positionSessionMargin :: Maybe Double <*> arbitrary -- positionTargetExcessMargin :: Maybe Double <*> arbitrary -- positionVarMargin :: Maybe Double <*> arbitrary -- positionRealisedGrossPnl :: Maybe Double <*> arbitrary -- positionRealisedTax :: Maybe Double <*> arbitrary -- positionRealisedPnl :: Maybe Double <*> arbitrary -- positionUnrealisedGrossPnl :: Maybe Double <*> arbitrary -- positionLongBankrupt :: Maybe Double <*> arbitrary -- positionShortBankrupt :: Maybe Double <*> arbitrary -- positionTaxBase :: Maybe Double <*> arbitrary -- positionIndicativeTaxRate :: Maybe Double <*> arbitrary -- positionIndicativeTax :: Maybe Double <*> arbitrary -- positionUnrealisedTax :: Maybe Double <*> arbitrary -- positionUnrealisedPnl :: Maybe Double <*> arbitrary -- positionUnrealisedPnlPcnt :: Maybe Double <*> arbitrary -- positionUnrealisedRoePcnt :: Maybe Double <*> arbitrary -- positionSimpleQty :: Maybe Double <*> arbitrary -- positionSimpleCost :: Maybe Double <*> arbitrary -- positionSimpleValue :: Maybe Double <*> arbitrary -- positionSimplePnl :: Maybe Double <*> arbitrary -- positionSimplePnlPcnt :: Maybe Double <*> arbitrary -- positionAvgCostPrice :: Maybe Double <*> arbitrary -- positionAvgEntryPrice :: Maybe Double <*> arbitrary -- positionBreakEvenPrice :: Maybe Double <*> arbitrary -- positionMarginCallPrice :: Maybe Double <*> arbitrary -- positionLiquidationPrice :: Maybe Double <*> arbitrary -- positionBankruptPrice :: Maybe Double <*> arbitrary -- positionTimestamp :: Maybe DateTime <*> arbitrary -- positionLastPrice :: Maybe Double <*> arbitrary -- positionLastValue :: Maybe Double instance Arbitrary Quote where arbitrary = Quote <$> arbitrary -- quoteTimestamp :: DateTime <*> arbitrary -- quoteSymbol :: Text <*> arbitrary -- quoteBidSize :: Maybe Double <*> arbitrary -- quoteBidPrice :: Maybe Double <*> arbitrary -- quoteAskPrice :: Maybe Double <*> arbitrary -- quoteAskSize :: Maybe Double instance Arbitrary Settlement where arbitrary = Settlement <$> arbitrary -- settlementTimestamp :: DateTime <*> arbitrary -- settlementSymbol :: Text <*> arbitrary -- settlementSettlementType :: Maybe Text <*> arbitrary -- settlementSettledPrice :: Maybe Double <*> arbitrary -- settlementBankrupt :: Maybe Double <*> arbitrary -- settlementTaxBase :: Maybe Double <*> arbitrary -- settlementTaxRate :: Maybe Double instance Arbitrary Stats where arbitrary = Stats <$> arbitrary -- statsRootSymbol :: Text <*> arbitrary -- statsCurrency :: Maybe Text <*> arbitrary -- statsVolume24h :: Maybe Double <*> arbitrary -- statsTurnover24h :: Maybe Double <*> arbitrary -- statsOpenInterest :: Maybe Double <*> arbitrary -- statsOpenValue :: Maybe Double instance Arbitrary StatsHistory where arbitrary = StatsHistory <$> arbitrary -- statsHistoryDate :: DateTime <*> arbitrary -- statsHistoryRootSymbol :: Text <*> arbitrary -- statsHistoryCurrency :: Maybe Text <*> arbitrary -- statsHistoryVolume :: Maybe Double <*> arbitrary -- statsHistoryTurnover :: Maybe Double instance Arbitrary StatsUSD where arbitrary = StatsUSD <$> arbitrary -- statsUSDRootSymbol :: Text <*> arbitrary -- statsUSDCurrency :: Maybe Text <*> arbitrary -- statsUSDTurnover24h :: Maybe Double <*> arbitrary -- statsUSDTurnover30d :: Maybe Double <*> arbitrary -- statsUSDTurnover365d :: Maybe Double <*> arbitrary -- statsUSDTurnover :: Maybe Double instance Arbitrary Trade where arbitrary = Trade <$> arbitrary -- tradeTimestamp :: DateTime <*> arbitrary -- tradeSymbol :: Text <*> arbitrary -- tradeSide :: Maybe Text <*> arbitrary -- tradeSize :: Maybe Double <*> arbitrary -- tradePrice :: Maybe Double <*> arbitrary -- tradeTickDirection :: Maybe Text <*> arbitrary -- tradeTrdMatchId :: Maybe Text <*> arbitrary -- tradeGrossValue :: Maybe Double <*> arbitrary -- tradeHomeNotional :: Maybe Double <*> arbitrary -- tradeForeignNotional :: Maybe Double instance Arbitrary TradeBin where arbitrary = TradeBin <$> arbitrary -- tradeBinTimestamp :: DateTime <*> arbitrary -- tradeBinSymbol :: Text <*> arbitrary -- tradeBinOpen :: Maybe Double <*> arbitrary -- tradeBinHigh :: Maybe Double <*> arbitrary -- tradeBinLow :: Maybe Double <*> arbitrary -- tradeBinClose :: Maybe Double <*> arbitrary -- tradeBinTrades :: Maybe Double <*> arbitrary -- tradeBinVolume :: Maybe Double <*> arbitrary -- tradeBinVwap :: Maybe Double <*> arbitrary -- tradeBinLastSize :: Maybe Double <*> arbitrary -- tradeBinTurnover :: Maybe Double <*> arbitrary -- tradeBinHomeNotional :: Maybe Double <*> arbitrary -- tradeBinForeignNotional :: Maybe Double instance Arbitrary Transaction where arbitrary = Transaction <$> arbitrary -- transactionTransactId :: Text <*> arbitrary -- transactionAccount :: Maybe Double <*> arbitrary -- transactionCurrency :: Maybe Text <*> arbitrary -- transactionTransactType :: Maybe Text <*> arbitrary -- transactionAmount :: Maybe Double <*> arbitrary -- transactionFee :: Maybe Double <*> arbitrary -- transactionTransactStatus :: Maybe Text <*> arbitrary -- transactionAddress :: Maybe Text <*> arbitrary -- transactionTx :: Maybe Text <*> arbitrary -- transactionText :: Maybe Text <*> arbitrary -- transactionTransactTime :: Maybe DateTime <*> arbitrary -- transactionTimestamp :: Maybe DateTime instance Arbitrary User where arbitrary = User <$> arbitrary -- userId :: Maybe Double <*> arbitrary -- userOwnerId :: Maybe Double <*> arbitrary -- userFirstname :: Maybe Text <*> arbitrary -- userLastname :: Maybe Text <*> arbitrary -- userUsername :: Text <*> arbitrary -- userEmail :: Text <*> arbitrary -- userPhone :: Maybe Text <*> arbitrary -- userCreated :: Maybe DateTime <*> arbitrary -- userLastUpdated :: Maybe DateTime <*> arbitrary -- userPreferences :: Maybe UserPreferences <*> arbitrary -- userTfaEnabled :: Maybe Text <*> arbitrary -- userAffiliateId :: Maybe Text <*> arbitrary -- userPgpPubKey :: Maybe Text <*> arbitrary -- userCountry :: Maybe Text instance Arbitrary UserCommission where arbitrary = UserCommission <$> arbitrary -- userCommissionMakerFee :: Maybe Double <*> arbitrary -- userCommissionTakerFee :: Maybe Double <*> arbitrary -- userCommissionSettlementFee :: Maybe Double <*> arbitrary -- userCommissionMaxFee :: Maybe Double instance Arbitrary UserPreferences where arbitrary = UserPreferences <$> arbitrary -- userPreferencesAlertOnLiquidations :: Maybe Bool <*> arbitrary -- userPreferencesAnimationsEnabled :: Maybe Bool <*> arbitrary -- userPreferencesAnnouncementsLastSeen :: Maybe DateTime <*> arbitrary -- userPreferencesChatChannelId :: Maybe Double <*> arbitrary -- userPreferencesColorTheme :: Maybe Text <*> arbitrary -- userPreferencesCurrency :: Maybe Text <*> arbitrary -- userPreferencesDebug :: Maybe Bool <*> arbitrary -- userPreferencesDisableEmails :: Maybe [Text] <*> arbitrary -- userPreferencesHideConfirmDialogs :: Maybe [Text] <*> arbitrary -- userPreferencesHideConnectionModal :: Maybe Bool <*> arbitrary -- userPreferencesHideFromLeaderboard :: Maybe Bool <*> arbitrary -- userPreferencesHideNameFromLeaderboard :: Maybe Bool <*> arbitrary -- userPreferencesHideNotifications :: Maybe [Text] <*> arbitrary -- userPreferencesLocale :: Maybe Text <*> arbitrary -- userPreferencesMsgsSeen :: Maybe [Text] <*> arbitrary -- userPreferencesOrderBookBinning :: Maybe A.Value <*> arbitrary -- userPreferencesOrderBookType :: Maybe Text <*> arbitrary -- userPreferencesOrderClearImmediate :: Maybe Bool <*> arbitrary -- userPreferencesOrderControlsPlusMinus :: Maybe Bool <*> arbitrary -- userPreferencesSounds :: Maybe [Text] <*> arbitrary -- userPreferencesStrictIpCheck :: Maybe Bool <*> arbitrary -- userPreferencesStrictTimeout :: Maybe Bool <*> arbitrary -- userPreferencesTickerGroup :: Maybe Text <*> arbitrary -- userPreferencesTickerPinned :: Maybe Bool <*> arbitrary -- userPreferencesTradeLayout :: Maybe Text instance Arbitrary Wallet where arbitrary = Wallet <$> arbitrary -- walletAccount :: Double <*> arbitrary -- walletCurrency :: Text <*> arbitrary -- walletPrevDeposited :: Maybe Double <*> arbitrary -- walletPrevWithdrawn :: Maybe Double <*> arbitrary -- walletPrevTransferIn :: Maybe Double <*> arbitrary -- walletPrevTransferOut :: Maybe Double <*> arbitrary -- walletPrevAmount :: Maybe Double <*> arbitrary -- walletPrevTimestamp :: Maybe DateTime <*> arbitrary -- walletDeltaDeposited :: Maybe Double <*> arbitrary -- walletDeltaWithdrawn :: Maybe Double <*> arbitrary -- walletDeltaTransferIn :: Maybe Double <*> arbitrary -- walletDeltaTransferOut :: Maybe Double <*> arbitrary -- walletDeltaAmount :: Maybe Double <*> arbitrary -- walletDeposited :: Maybe Double <*> arbitrary -- walletWithdrawn :: Maybe Double <*> arbitrary -- walletTransferIn :: Maybe Double <*> arbitrary -- walletTransferOut :: Maybe Double <*> arbitrary -- walletAmount :: Maybe Double <*> arbitrary -- walletPendingCredit :: Maybe Double <*> arbitrary -- walletPendingDebit :: Maybe Double <*> arbitrary -- walletConfirmedDebit :: Maybe Double <*> arbitrary -- walletTimestamp :: Maybe DateTime <*> arbitrary -- walletAddr :: Maybe Text <*> arbitrary -- walletScript :: Maybe Text <*> arbitrary -- walletWithdrawalLock :: Maybe [Text] instance Arbitrary XAny where arbitrary = pure XAny instance Arbitrary E'Type where arbitrary = arbitraryBoundedEnum