blockfrost-api-0.2.1.0: src/Blockfrost/Types/Cardano/Accounts.hs
-- | Responses for Cardano accounts queries
module Blockfrost.Types.Cardano.Accounts
( AccountInfo (..)
, AccountReward (..)
, AccountHistory (..)
, AccountDelegation (..)
, AccountRegistration (..)
, AccountRegistrationAction (..)
, AccountWithdrawal (..)
, AccountMir (..)
, AddressAssociated (..)
) where
import Blockfrost.Types.Shared
import Deriving.Aeson
import Servant.Docs (ToSample (..), samples, singleSample)
-- | Information about an account, identified by its stake address
data AccountInfo = AccountInfo
{ _accountInfoStakeAddress :: Address -- ^ Bech32 stake address
, _accountInfoActive :: Bool -- ^ Registration state of an account
, _accountInfoActiveEpoch :: Integer -- ^ Epoch of the most recent action - registration or deregistration
, _accountInfoControlledAmount :: Lovelaces -- ^ Balance of the account in Lovelaces
, _accountInfoRewardsSum :: Lovelaces -- ^ Sum of all funds rewards for the account in the Lovelaces
, _accountInfoWithdrawalsSum :: Lovelaces -- ^ Sum of all the withdrawals for the account in the Lovelaces
, _accountInfoReservesSum :: Lovelaces -- ^ Sum of all funds from reserves for the account in the Lovelaces
, _accountInfoTreasurySum :: Lovelaces -- ^ Sum of all funds from treasury for the account in the Lovelaces
, _accountInfoWithdrawableAmount :: Lovelaces -- ^ Sum of available rewards that haven't been withdrawn yet for the account in the Lovelaces
, _accountInfoPoolId :: Maybe PoolId -- ^ Bech32 pool ID that owns the account
}
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_accountInfo", CamelToSnake]] AccountInfo
instance ToSample AccountInfo where
toSamples = pure $ singleSample $ AccountInfo
{ _accountInfoStakeAddress = "stake1ux3g2c9dx2nhhehyrezyxpkstartcqmu9hk63qgfkccw5rqttygt7"
, _accountInfoActive = True
, _accountInfoActiveEpoch = 412
, _accountInfoControlledAmount = 619154618165
, _accountInfoRewardsSum = 319154618165
, _accountInfoWithdrawalsSum = 12125369253
, _accountInfoReservesSum = 319154618165
, _accountInfoTreasurySum = 12000000
, _accountInfoWithdrawableAmount = 319154618165
, _accountInfoPoolId = pure "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy"
}
-- | Reward received by an account
data AccountReward = AccountReward
{ _accountRewardEpoch :: Epoch -- ^ Epoch of the associated reward
, _accountRewardAmount :: Lovelaces -- ^ Rewards for given epoch in Lovelaces
, _accountRewardPoolId :: PoolId -- ^ Bech32 pool ID being delegated to
}
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_accountReward", CamelToSnake]] AccountReward
instance ToSample AccountReward where
toSamples = pure $ samples
[ AccountReward
{ _accountRewardEpoch = 214
, _accountRewardAmount = 1395265
, _accountRewardPoolId = "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy"
}
, AccountReward
{ _accountRewardEpoch = 215
, _accountRewardAmount = 58632
, _accountRewardPoolId = "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy"
}
, AccountReward
{ _accountRewardEpoch = 216
, _accountRewardAmount = 0
, _accountRewardPoolId = "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy"
}
, AccountReward
{ _accountRewardEpoch = 217
, _accountRewardAmount = 1395265
, _accountRewardPoolId = "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy"
}
]
-- | History of accounts stake delegation
data AccountHistory = AccountHistory
{ _accountHistoryActiveEpoch :: Integer -- ^ Epoch in which the stake was active
, _accountHistoryAmount :: Lovelaces -- ^ Stake amount in Lovelaces
, _accountHistoryPoolId :: PoolId -- ^ Bech32 ID of pool being delegated to
}
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_accountHistory", CamelToSnake]] AccountHistory
instance ToSample AccountHistory where
toSamples = pure $ samples
[ AccountHistory
{ _accountHistoryActiveEpoch = 260
, _accountHistoryAmount = 1395265
, _accountHistoryPoolId = "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy"
}
, AccountHistory
{ _accountHistoryActiveEpoch = 211
, _accountHistoryAmount = 22695385
, _accountHistoryPoolId = "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy"
}
]
-- | Account delegations and associated transaction IDs
data AccountDelegation = AccountDelegation
{ _accountDelegationActiveEpoch :: Epoch -- ^ Epoch in which the delegation becomes active
, _accountDelegationTxHash :: TxHash -- ^ Hash of the transaction containing the delegation
, _accountDelegationAmount :: Lovelaces -- ^ Rewards for given epoch in Lovelaces
, _accountDelegationPoolId :: PoolId -- ^ Bech32 ID of pool being delegated to
}
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_accountDelegation", CamelToSnake]] AccountDelegation
instance ToSample AccountDelegation where
toSamples = pure $ samples
[ AccountDelegation
{ _accountDelegationActiveEpoch = 210
, _accountDelegationTxHash = "2dd15e0ef6e6a17841cb9541c27724072ce4d4b79b91e58432fbaa32d9572531"
, _accountDelegationAmount = 12695385
, _accountDelegationPoolId = "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy"
}
, AccountDelegation
{ _accountDelegationActiveEpoch = 242
, _accountDelegationTxHash = "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dde628516157f0"
, _accountDelegationAmount = 12691385
, _accountDelegationPoolId = "pool1kchver88u3kygsak8wgll7htr8uxn5v35lfrsyy842nkscrzyvj"
}
]
-- | Registration action
data AccountRegistrationAction = Registered | Deregistered
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[ConstructorTagModifier '[ToLower]] AccountRegistrationAction
instance ToSample AccountRegistrationAction where
toSamples = pure $ samples [ Registered, Deregistered ]
-- | Account (de)registration
data AccountRegistration = AccountRegistration
{ _accountRegistrationAction :: AccountRegistrationAction -- ^ Action in the certificate
, _accountRegistrationTxHash :: TxHash -- ^ Hash of the transaction containing the (de)registration certificate
}
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_accountRegistration", CamelToSnake]] AccountRegistration
instance ToSample AccountRegistration where
toSamples = pure $ samples
[ AccountRegistration
{ _accountRegistrationAction = Registered
, _accountRegistrationTxHash = "2dd15e0ef6e6a17841cb9541c27724072ce4d4b79b91e58432fbaa32d9572531"
}
, AccountRegistration
{ _accountRegistrationAction = Deregistered
, _accountRegistrationTxHash = "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dde628516157f0"
}
]
-- | Withdrawal from an account
data AccountWithdrawal = AccountWithdrawal
{ _accountWithdrawalAmount :: Lovelaces -- ^ Withdrawal amount in Lovelaces
, _accountWithdrawalTxHash :: TxHash -- ^ Hash of the transaction containing the withdrawal
}
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_accountWithdrawal", CamelToSnake]] AccountWithdrawal
instance ToSample AccountWithdrawal where
toSamples = pure $ samples
[ AccountWithdrawal
{ _accountWithdrawalAmount = 454541212442
, _accountWithdrawalTxHash = "48a9625c841eea0dd2bb6cf551eabe6523b7290c9ce34be74eedef2dd8f7ecc5"
}
, AccountWithdrawal
{ _accountWithdrawalAmount = 97846969
, _accountWithdrawalTxHash = "4230b0cbccf6f449f0847d8ad1d634a7a49df60d8c142bb8cc2dbc8ca03d9e34"
}
]
-- | Account MIR (Move Instantaneous Reward)
data AccountMir = AccountMir
{ _accountMirAmount :: Lovelaces -- ^ MIR amount in Lovelaces
, _accountMirTxHash :: TxHash -- ^ Hash of the transaction containing the MIR
}
deriving stock (Show, Eq, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_accountMir", CamelToSnake]] AccountMir
instance ToSample AccountMir where
toSamples = pure $ samples
[ AccountMir
{ _accountMirAmount = 6202170
, _accountMirTxHash = "2dd15e0ef6e6a17841cb9541c27724072ce4d4b79b91e58432fbaa32d9572531"
}
, AccountMir
{ _accountMirAmount = 1202170
, _accountMirTxHash = "1dd15e0ef6e6a17841cb9541c27724072ce4d4b79b91e58432fbaa32d9572531"
}
]
-- | Address associated with an account address
newtype AddressAssociated = AddressAssociated {_addressAssociatedAddress :: Address}
deriving stock (Eq, Show, Generic)
deriving (FromJSON, ToJSON)
via CustomJSON '[FieldLabelModifier '[StripPrefix "_addressAssociated", CamelToSnake]] AddressAssociated
instance ToSample AddressAssociated where
toSamples = pure $ samples
[ AddressAssociated "addr1qx2kd28nq8ac5prwg32hhvudlwggpgfp8utlyqxu6wqgz62f79qsdmm5dsknt9ecr5w468r9ey0fxwkdrwh08ly3tu9sy0f4qd"
, AddressAssociated "addr1q8j55h253zcvl326sk5qdt2n8z7eghzspe0ekxgncr796s2f79qsdmm5dsknt9ecr5w468r9ey0fxwkdrwh08ly3tu9sjmd35m"
]