{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Network.Polkadot.Primitives where
import Codec.Scale (Decode, Encode)
import Codec.Scale.Compact (Compact)
import Data.BigNum (H160, H256, H512, Word128)
import Data.ByteArray.HexString (HexString)
import Data.Word (Word32, Word64, Word8)
import Generics.SOP (Generic)
import qualified GHC.Generics as GHC (Generic)
type Balance = Word128
type BlockNumber = Word32
type Moment = Word64
type Index = Word32
type AccountIndex = Word32
type AccountId = H256
type Hash = H256
data AccountData = AccountData
{ AccountData -> Balance
balanceFree :: !Balance
, AccountData -> Balance
balanceReserved :: !Balance
, AccountData -> Balance
miscFrozen :: !Balance
, AccountData -> Balance
feeFrozen :: !Balance
} deriving (AccountData -> AccountData -> Bool
(AccountData -> AccountData -> Bool)
-> (AccountData -> AccountData -> Bool) -> Eq AccountData
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AccountData -> AccountData -> Bool
== :: AccountData -> AccountData -> Bool
$c/= :: AccountData -> AccountData -> Bool
/= :: AccountData -> AccountData -> Bool
Eq, Eq AccountData
Eq AccountData =>
(AccountData -> AccountData -> Ordering)
-> (AccountData -> AccountData -> Bool)
-> (AccountData -> AccountData -> Bool)
-> (AccountData -> AccountData -> Bool)
-> (AccountData -> AccountData -> Bool)
-> (AccountData -> AccountData -> AccountData)
-> (AccountData -> AccountData -> AccountData)
-> Ord AccountData
AccountData -> AccountData -> Bool
AccountData -> AccountData -> Ordering
AccountData -> AccountData -> AccountData
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
$ccompare :: AccountData -> AccountData -> Ordering
compare :: AccountData -> AccountData -> Ordering
$c< :: AccountData -> AccountData -> Bool
< :: AccountData -> AccountData -> Bool
$c<= :: AccountData -> AccountData -> Bool
<= :: AccountData -> AccountData -> Bool
$c> :: AccountData -> AccountData -> Bool
> :: AccountData -> AccountData -> Bool
$c>= :: AccountData -> AccountData -> Bool
>= :: AccountData -> AccountData -> Bool
$cmax :: AccountData -> AccountData -> AccountData
max :: AccountData -> AccountData -> AccountData
$cmin :: AccountData -> AccountData -> AccountData
min :: AccountData -> AccountData -> AccountData
Ord, Int -> AccountData -> ShowS
[AccountData] -> ShowS
AccountData -> String
(Int -> AccountData -> ShowS)
-> (AccountData -> String)
-> ([AccountData] -> ShowS)
-> Show AccountData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AccountData -> ShowS
showsPrec :: Int -> AccountData -> ShowS
$cshow :: AccountData -> String
show :: AccountData -> String
$cshowList :: [AccountData] -> ShowS
showList :: [AccountData] -> ShowS
Show, (forall x. AccountData -> Rep AccountData x)
-> (forall x. Rep AccountData x -> AccountData)
-> Generic AccountData
forall x. Rep AccountData x -> AccountData
forall x. AccountData -> Rep AccountData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. AccountData -> Rep AccountData x
from :: forall x. AccountData -> Rep AccountData x
$cto :: forall x. Rep AccountData x -> AccountData
to :: forall x. Rep AccountData x -> AccountData
GHC.Generic, All SListI (Code AccountData)
All SListI (Code AccountData) =>
(AccountData -> Rep AccountData)
-> (Rep AccountData -> AccountData) -> Generic AccountData
Rep AccountData -> AccountData
AccountData -> Rep AccountData
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: AccountData -> Rep AccountData
from :: AccountData -> Rep AccountData
$cto :: Rep AccountData -> AccountData
to :: Rep AccountData -> AccountData
Generic, Putter AccountData
Putter AccountData -> Encode AccountData
forall a. Putter a -> Encode a
$cput :: Putter AccountData
put :: Putter AccountData
Encode, Get AccountData
Get AccountData -> Decode AccountData
forall a. Get a -> Decode a
$cget :: Get AccountData
get :: Get AccountData
Decode)
data AccountInfo = AccountInfo
{ AccountInfo -> Index
accountNonce :: !Index
, AccountInfo -> Index
accountConsumers :: !Word32
, AccountInfo -> Index
accountProviders :: !Word32
, AccountInfo -> Index
accountSufficients :: !Word32
, AccountInfo -> AccountData
accountData :: !AccountData
} deriving (AccountInfo -> AccountInfo -> Bool
(AccountInfo -> AccountInfo -> Bool)
-> (AccountInfo -> AccountInfo -> Bool) -> Eq AccountInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AccountInfo -> AccountInfo -> Bool
== :: AccountInfo -> AccountInfo -> Bool
$c/= :: AccountInfo -> AccountInfo -> Bool
/= :: AccountInfo -> AccountInfo -> Bool
Eq, Eq AccountInfo
Eq AccountInfo =>
(AccountInfo -> AccountInfo -> Ordering)
-> (AccountInfo -> AccountInfo -> Bool)
-> (AccountInfo -> AccountInfo -> Bool)
-> (AccountInfo -> AccountInfo -> Bool)
-> (AccountInfo -> AccountInfo -> Bool)
-> (AccountInfo -> AccountInfo -> AccountInfo)
-> (AccountInfo -> AccountInfo -> AccountInfo)
-> Ord AccountInfo
AccountInfo -> AccountInfo -> Bool
AccountInfo -> AccountInfo -> Ordering
AccountInfo -> AccountInfo -> AccountInfo
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
$ccompare :: AccountInfo -> AccountInfo -> Ordering
compare :: AccountInfo -> AccountInfo -> Ordering
$c< :: AccountInfo -> AccountInfo -> Bool
< :: AccountInfo -> AccountInfo -> Bool
$c<= :: AccountInfo -> AccountInfo -> Bool
<= :: AccountInfo -> AccountInfo -> Bool
$c> :: AccountInfo -> AccountInfo -> Bool
> :: AccountInfo -> AccountInfo -> Bool
$c>= :: AccountInfo -> AccountInfo -> Bool
>= :: AccountInfo -> AccountInfo -> Bool
$cmax :: AccountInfo -> AccountInfo -> AccountInfo
max :: AccountInfo -> AccountInfo -> AccountInfo
$cmin :: AccountInfo -> AccountInfo -> AccountInfo
min :: AccountInfo -> AccountInfo -> AccountInfo
Ord, Int -> AccountInfo -> ShowS
[AccountInfo] -> ShowS
AccountInfo -> String
(Int -> AccountInfo -> ShowS)
-> (AccountInfo -> String)
-> ([AccountInfo] -> ShowS)
-> Show AccountInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AccountInfo -> ShowS
showsPrec :: Int -> AccountInfo -> ShowS
$cshow :: AccountInfo -> String
show :: AccountInfo -> String
$cshowList :: [AccountInfo] -> ShowS
showList :: [AccountInfo] -> ShowS
Show, (forall x. AccountInfo -> Rep AccountInfo x)
-> (forall x. Rep AccountInfo x -> AccountInfo)
-> Generic AccountInfo
forall x. Rep AccountInfo x -> AccountInfo
forall x. AccountInfo -> Rep AccountInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. AccountInfo -> Rep AccountInfo x
from :: forall x. AccountInfo -> Rep AccountInfo x
$cto :: forall x. Rep AccountInfo x -> AccountInfo
to :: forall x. Rep AccountInfo x -> AccountInfo
GHC.Generic, All SListI (Code AccountInfo)
All SListI (Code AccountInfo) =>
(AccountInfo -> Rep AccountInfo)
-> (Rep AccountInfo -> AccountInfo) -> Generic AccountInfo
Rep AccountInfo -> AccountInfo
AccountInfo -> Rep AccountInfo
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: AccountInfo -> Rep AccountInfo
from :: AccountInfo -> Rep AccountInfo
$cto :: Rep AccountInfo -> AccountInfo
to :: Rep AccountInfo -> AccountInfo
Generic, Putter AccountInfo
Putter AccountInfo -> Encode AccountInfo
forall a. Putter a -> Encode a
$cput :: Putter AccountInfo
put :: Putter AccountInfo
Encode, Get AccountInfo
Get AccountInfo -> Decode AccountInfo
forall a. Get a -> Decode a
$cget :: Get AccountInfo
get :: Get AccountInfo
Decode)
data MultiSignature
= Ed25519Signature !H512
| Sr25519Signature !H512
| EcdsaSignature !H512 !Word8
deriving (MultiSignature -> MultiSignature -> Bool
(MultiSignature -> MultiSignature -> Bool)
-> (MultiSignature -> MultiSignature -> Bool) -> Eq MultiSignature
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MultiSignature -> MultiSignature -> Bool
== :: MultiSignature -> MultiSignature -> Bool
$c/= :: MultiSignature -> MultiSignature -> Bool
/= :: MultiSignature -> MultiSignature -> Bool
Eq, Eq MultiSignature
Eq MultiSignature =>
(MultiSignature -> MultiSignature -> Ordering)
-> (MultiSignature -> MultiSignature -> Bool)
-> (MultiSignature -> MultiSignature -> Bool)
-> (MultiSignature -> MultiSignature -> Bool)
-> (MultiSignature -> MultiSignature -> Bool)
-> (MultiSignature -> MultiSignature -> MultiSignature)
-> (MultiSignature -> MultiSignature -> MultiSignature)
-> Ord MultiSignature
MultiSignature -> MultiSignature -> Bool
MultiSignature -> MultiSignature -> Ordering
MultiSignature -> MultiSignature -> MultiSignature
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
$ccompare :: MultiSignature -> MultiSignature -> Ordering
compare :: MultiSignature -> MultiSignature -> Ordering
$c< :: MultiSignature -> MultiSignature -> Bool
< :: MultiSignature -> MultiSignature -> Bool
$c<= :: MultiSignature -> MultiSignature -> Bool
<= :: MultiSignature -> MultiSignature -> Bool
$c> :: MultiSignature -> MultiSignature -> Bool
> :: MultiSignature -> MultiSignature -> Bool
$c>= :: MultiSignature -> MultiSignature -> Bool
>= :: MultiSignature -> MultiSignature -> Bool
$cmax :: MultiSignature -> MultiSignature -> MultiSignature
max :: MultiSignature -> MultiSignature -> MultiSignature
$cmin :: MultiSignature -> MultiSignature -> MultiSignature
min :: MultiSignature -> MultiSignature -> MultiSignature
Ord, Int -> MultiSignature -> ShowS
[MultiSignature] -> ShowS
MultiSignature -> String
(Int -> MultiSignature -> ShowS)
-> (MultiSignature -> String)
-> ([MultiSignature] -> ShowS)
-> Show MultiSignature
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MultiSignature -> ShowS
showsPrec :: Int -> MultiSignature -> ShowS
$cshow :: MultiSignature -> String
show :: MultiSignature -> String
$cshowList :: [MultiSignature] -> ShowS
showList :: [MultiSignature] -> ShowS
Show, (forall x. MultiSignature -> Rep MultiSignature x)
-> (forall x. Rep MultiSignature x -> MultiSignature)
-> Generic MultiSignature
forall x. Rep MultiSignature x -> MultiSignature
forall x. MultiSignature -> Rep MultiSignature x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. MultiSignature -> Rep MultiSignature x
from :: forall x. MultiSignature -> Rep MultiSignature x
$cto :: forall x. Rep MultiSignature x -> MultiSignature
to :: forall x. Rep MultiSignature x -> MultiSignature
GHC.Generic, All SListI (Code MultiSignature)
All SListI (Code MultiSignature) =>
(MultiSignature -> Rep MultiSignature)
-> (Rep MultiSignature -> MultiSignature) -> Generic MultiSignature
Rep MultiSignature -> MultiSignature
MultiSignature -> Rep MultiSignature
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: MultiSignature -> Rep MultiSignature
from :: MultiSignature -> Rep MultiSignature
$cto :: Rep MultiSignature -> MultiSignature
to :: Rep MultiSignature -> MultiSignature
Generic, Putter MultiSignature
Putter MultiSignature -> Encode MultiSignature
forall a. Putter a -> Encode a
$cput :: Putter MultiSignature
put :: Putter MultiSignature
Encode, Get MultiSignature
Get MultiSignature -> Decode MultiSignature
forall a. Get a -> Decode a
$cget :: Get MultiSignature
get :: Get MultiSignature
Decode)
data MultiSigner
= Sr25519Signer
| Ed25519Signer !H256
| EcdsaSigner !Word8 !H256
deriving (MultiSigner -> MultiSigner -> Bool
(MultiSigner -> MultiSigner -> Bool)
-> (MultiSigner -> MultiSigner -> Bool) -> Eq MultiSigner
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MultiSigner -> MultiSigner -> Bool
== :: MultiSigner -> MultiSigner -> Bool
$c/= :: MultiSigner -> MultiSigner -> Bool
/= :: MultiSigner -> MultiSigner -> Bool
Eq, Eq MultiSigner
Eq MultiSigner =>
(MultiSigner -> MultiSigner -> Ordering)
-> (MultiSigner -> MultiSigner -> Bool)
-> (MultiSigner -> MultiSigner -> Bool)
-> (MultiSigner -> MultiSigner -> Bool)
-> (MultiSigner -> MultiSigner -> Bool)
-> (MultiSigner -> MultiSigner -> MultiSigner)
-> (MultiSigner -> MultiSigner -> MultiSigner)
-> Ord MultiSigner
MultiSigner -> MultiSigner -> Bool
MultiSigner -> MultiSigner -> Ordering
MultiSigner -> MultiSigner -> MultiSigner
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
$ccompare :: MultiSigner -> MultiSigner -> Ordering
compare :: MultiSigner -> MultiSigner -> Ordering
$c< :: MultiSigner -> MultiSigner -> Bool
< :: MultiSigner -> MultiSigner -> Bool
$c<= :: MultiSigner -> MultiSigner -> Bool
<= :: MultiSigner -> MultiSigner -> Bool
$c> :: MultiSigner -> MultiSigner -> Bool
> :: MultiSigner -> MultiSigner -> Bool
$c>= :: MultiSigner -> MultiSigner -> Bool
>= :: MultiSigner -> MultiSigner -> Bool
$cmax :: MultiSigner -> MultiSigner -> MultiSigner
max :: MultiSigner -> MultiSigner -> MultiSigner
$cmin :: MultiSigner -> MultiSigner -> MultiSigner
min :: MultiSigner -> MultiSigner -> MultiSigner
Ord, (forall x. MultiSigner -> Rep MultiSigner x)
-> (forall x. Rep MultiSigner x -> MultiSigner)
-> Generic MultiSigner
forall x. Rep MultiSigner x -> MultiSigner
forall x. MultiSigner -> Rep MultiSigner x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. MultiSigner -> Rep MultiSigner x
from :: forall x. MultiSigner -> Rep MultiSigner x
$cto :: forall x. Rep MultiSigner x -> MultiSigner
to :: forall x. Rep MultiSigner x -> MultiSigner
GHC.Generic, All SListI (Code MultiSigner)
All SListI (Code MultiSigner) =>
(MultiSigner -> Rep MultiSigner)
-> (Rep MultiSigner -> MultiSigner) -> Generic MultiSigner
Rep MultiSigner -> MultiSigner
MultiSigner -> Rep MultiSigner
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: MultiSigner -> Rep MultiSigner
from :: MultiSigner -> Rep MultiSigner
$cto :: Rep MultiSigner -> MultiSigner
to :: Rep MultiSigner -> MultiSigner
Generic, Putter MultiSigner
Putter MultiSigner -> Encode MultiSigner
forall a. Putter a -> Encode a
$cput :: Putter MultiSigner
put :: Putter MultiSigner
Encode, Get MultiSigner
Get MultiSigner -> Decode MultiSigner
forall a. Get a -> Decode a
$cget :: Get MultiSigner
get :: Get MultiSigner
Decode)
data MultiAddress
= MaId !AccountId
| MaIndex !(Compact AccountIndex)
| MaRaw !HexString
| MaAddress32 !H256
| MaAddress20 !H160
deriving (MultiAddress -> MultiAddress -> Bool
(MultiAddress -> MultiAddress -> Bool)
-> (MultiAddress -> MultiAddress -> Bool) -> Eq MultiAddress
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MultiAddress -> MultiAddress -> Bool
== :: MultiAddress -> MultiAddress -> Bool
$c/= :: MultiAddress -> MultiAddress -> Bool
/= :: MultiAddress -> MultiAddress -> Bool
Eq, Eq MultiAddress
Eq MultiAddress =>
(MultiAddress -> MultiAddress -> Ordering)
-> (MultiAddress -> MultiAddress -> Bool)
-> (MultiAddress -> MultiAddress -> Bool)
-> (MultiAddress -> MultiAddress -> Bool)
-> (MultiAddress -> MultiAddress -> Bool)
-> (MultiAddress -> MultiAddress -> MultiAddress)
-> (MultiAddress -> MultiAddress -> MultiAddress)
-> Ord MultiAddress
MultiAddress -> MultiAddress -> Bool
MultiAddress -> MultiAddress -> Ordering
MultiAddress -> MultiAddress -> MultiAddress
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
$ccompare :: MultiAddress -> MultiAddress -> Ordering
compare :: MultiAddress -> MultiAddress -> Ordering
$c< :: MultiAddress -> MultiAddress -> Bool
< :: MultiAddress -> MultiAddress -> Bool
$c<= :: MultiAddress -> MultiAddress -> Bool
<= :: MultiAddress -> MultiAddress -> Bool
$c> :: MultiAddress -> MultiAddress -> Bool
> :: MultiAddress -> MultiAddress -> Bool
$c>= :: MultiAddress -> MultiAddress -> Bool
>= :: MultiAddress -> MultiAddress -> Bool
$cmax :: MultiAddress -> MultiAddress -> MultiAddress
max :: MultiAddress -> MultiAddress -> MultiAddress
$cmin :: MultiAddress -> MultiAddress -> MultiAddress
min :: MultiAddress -> MultiAddress -> MultiAddress
Ord, Int -> MultiAddress -> ShowS
[MultiAddress] -> ShowS
MultiAddress -> String
(Int -> MultiAddress -> ShowS)
-> (MultiAddress -> String)
-> ([MultiAddress] -> ShowS)
-> Show MultiAddress
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MultiAddress -> ShowS
showsPrec :: Int -> MultiAddress -> ShowS
$cshow :: MultiAddress -> String
show :: MultiAddress -> String
$cshowList :: [MultiAddress] -> ShowS
showList :: [MultiAddress] -> ShowS
Show, (forall x. MultiAddress -> Rep MultiAddress x)
-> (forall x. Rep MultiAddress x -> MultiAddress)
-> Generic MultiAddress
forall x. Rep MultiAddress x -> MultiAddress
forall x. MultiAddress -> Rep MultiAddress x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. MultiAddress -> Rep MultiAddress x
from :: forall x. MultiAddress -> Rep MultiAddress x
$cto :: forall x. Rep MultiAddress x -> MultiAddress
to :: forall x. Rep MultiAddress x -> MultiAddress
GHC.Generic, All SListI (Code MultiAddress)
All SListI (Code MultiAddress) =>
(MultiAddress -> Rep MultiAddress)
-> (Rep MultiAddress -> MultiAddress) -> Generic MultiAddress
Rep MultiAddress -> MultiAddress
MultiAddress -> Rep MultiAddress
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: MultiAddress -> Rep MultiAddress
from :: MultiAddress -> Rep MultiAddress
$cto :: Rep MultiAddress -> MultiAddress
to :: Rep MultiAddress -> MultiAddress
Generic, Putter MultiAddress
Putter MultiAddress -> Encode MultiAddress
forall a. Putter a -> Encode a
$cput :: Putter MultiAddress
put :: Putter MultiAddress
Encode, Get MultiAddress
Get MultiAddress -> Decode MultiAddress
forall a. Get a -> Decode a
$cget :: Get MultiAddress
get :: Get MultiAddress
Decode)