{-# LANGUAGE EmptyDataDeriving #-}
module Lorentz.Value
( Value
, IsoValue (..)
, WellTypedIsoValue
, Integer
, Natural
, MText
, Bool (..)
, ByteString
, Address
, EpAddress (..)
, Mutez
, Never
, Timestamp
, ChainId
, KeyHash
, PublicKey
, Signature
, Bls12381Fr
, Bls12381G1
, Bls12381G2
, Set
, Map
, M.BigMap (..)
, M.Operation
, Maybe (..)
, List
, ContractRef (..)
, TAddress (..)
, FutureContract (..)
, M.EpName
, pattern M.DefEpName
, EntrypointCall
, SomeEntrypointCall
, toMutez
, zeroMutez
, oneMutez
, mt
, timestampFromSeconds
, timestampFromUTCTime
, timestampQuote
, M.coerceContractRef
, callingTAddress
, callingDefTAddress
, ToAddress (..)
, ToTAddress (..)
, ToContractRef (..)
, FromContractRef (..)
, convertContractRef
, Show
, Default (..)
, Label (..)
, PrintAsValue (..)
, module ReExports
) where
import Data.Constraint ((\\))
import Data.Default (Default(..))
import Fmt (Buildable(..))
import Lorentz.Address
import Lorentz.Constraints.Scopes
import Michelson.Text
import Michelson.Typed (EntrypointCall, IsoValue(..), SomeEntrypointCall, Value, WellTypedIsoValue)
import qualified Michelson.Typed as M
import Michelson.Typed.Haskell.Compatibility as ReExports
import Tezos.Core
(ChainId, Mutez, Timestamp, oneMutez, timestampFromSeconds, timestampFromUTCTime, timestampQuote,
toMutez, zeroMutez)
import Tezos.Crypto (Bls12381Fr, Bls12381G1, Bls12381G2, KeyHash, PublicKey, Signature)
import Util.CustomGeneric as ReExports
import Util.Label (Label(..))
import Lorentz.Annotation
type List = []
data Never
deriving stock ((forall x. Never -> Rep Never x)
-> (forall x. Rep Never x -> Never) -> Generic Never
forall x. Rep Never x -> Never
forall x. Never -> Rep Never x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Never x -> Never
$cfrom :: forall x. Never -> Rep Never x
Generic, Int -> Never -> ShowS
[Never] -> ShowS
Never -> String
(Int -> Never -> ShowS)
-> (Never -> String) -> ([Never] -> ShowS) -> Show Never
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Never] -> ShowS
$cshowList :: [Never] -> ShowS
show :: Never -> String
$cshow :: Never -> String
showsPrec :: Int -> Never -> ShowS
$cshowsPrec :: Int -> Never -> ShowS
Show, Never -> Never -> Bool
(Never -> Never -> Bool) -> (Never -> Never -> Bool) -> Eq Never
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Never -> Never -> Bool
$c/= :: Never -> Never -> Bool
== :: Never -> Never -> Bool
$c== :: Never -> Never -> Bool
Eq, Eq Never
Eq Never
-> (Never -> Never -> Ordering)
-> (Never -> Never -> Bool)
-> (Never -> Never -> Bool)
-> (Never -> Never -> Bool)
-> (Never -> Never -> Bool)
-> (Never -> Never -> Never)
-> (Never -> Never -> Never)
-> Ord Never
Never -> Never -> Bool
Never -> Never -> Ordering
Never -> Never -> Never
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 :: Never -> Never -> Never
$cmin :: Never -> Never -> Never
max :: Never -> Never -> Never
$cmax :: Never -> Never -> Never
>= :: Never -> Never -> Bool
$c>= :: Never -> Never -> Bool
> :: Never -> Never -> Bool
$c> :: Never -> Never -> Bool
<= :: Never -> Never -> Bool
$c<= :: Never -> Never -> Bool
< :: Never -> Never -> Bool
$c< :: Never -> Never -> Bool
compare :: Never -> Never -> Ordering
$ccompare :: Never -> Never -> Ordering
$cp1Ord :: Eq Never
Ord)
deriving anyclass (WellTypedToT Never
WellTypedToT Never
-> (Never -> Value (ToT Never))
-> (Value (ToT Never) -> Never)
-> IsoValue Never
Value (ToT Never) -> Never
Never -> Value (ToT Never)
forall a.
WellTypedToT a
-> (a -> Value (ToT a)) -> (Value (ToT a) -> a) -> IsoValue a
fromVal :: Value (ToT Never) -> Never
$cfromVal :: Value (ToT Never) -> Never
toVal :: Never -> Value (ToT Never)
$ctoVal :: Never -> Value (ToT Never)
$cp1IsoValue :: WellTypedToT Never
IsoValue, Never -> ()
(Never -> ()) -> NFData Never
forall a. (a -> ()) -> NFData a
rnf :: Never -> ()
$crnf :: Never -> ()
NFData)
instance Buildable Never where
build :: Never -> Builder
build = Never -> Builder
\case
instance HasAnnotation Never where
getAnnotation :: FollowEntrypointFlag -> Notes (ToT Never)
getAnnotation FollowEntrypointFlag
_ = Notes (ToT Never)
forall (t :: T). SingI t => Notes t
M.starNotes
instance M.TypeHasDoc Never where
typeDocMdDescription :: Builder
typeDocMdDescription = Builder
"An uninhabited type."
newtype PrintAsValue a = PrintAsValue a
instance NicePrintedValue a => Buildable (PrintAsValue a) where
build :: PrintAsValue a -> Builder
build (PrintAsValue a
a) = Value (ToT a) -> Builder
forall p. Buildable p => p -> Builder
build (a -> Value (ToT a)
forall a. IsoValue a => a -> Value (ToT a)
toVal a
a) ((SingI (ToT a), HasNoOp (ToT a)) => Builder)
-> (NicePrintedValue a :- (SingI (ToT a), HasNoOp (ToT a)))
-> Builder
forall (c :: Constraint) e r. HasDict c e => (c => r) -> e -> r
\\ NicePrintedValue a :- (SingI (ToT a), HasNoOp (ToT a))
forall a. NicePrintedValue a :- PrintedValScope (ToT a)
nicePrintedValueEvi @a