{-# OPTIONS_GHC -Wno-orphans #-}
module Plutarch.LedgerApi.V1.Time (
PPosixTime (..),
pposixTime,
unPPosixTime,
) where
import Data.Kind (Type)
import GHC.Generics (Generic)
import Plutarch.LedgerApi.Utils (Mret)
import Plutarch.Prelude
import Plutarch.Reducible (Reduce)
import Plutarch.Unsafe (punsafeCoerce)
import PlutusLedgerApi.V1 qualified as Plutus
newtype PPosixTime (s :: S) = PPosixTime (Term s (PDataNewtype PInteger))
deriving stock
(
(forall x. PPosixTime s -> Rep (PPosixTime s) x)
-> (forall x. Rep (PPosixTime s) x -> PPosixTime s)
-> Generic (PPosixTime s)
forall x. Rep (PPosixTime s) x -> PPosixTime s
forall x. PPosixTime s -> Rep (PPosixTime s) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (s :: S) x. Rep (PPosixTime s) x -> PPosixTime s
forall (s :: S) x. PPosixTime s -> Rep (PPosixTime s) x
$cfrom :: forall (s :: S) x. PPosixTime s -> Rep (PPosixTime s) x
from :: forall x. PPosixTime s -> Rep (PPosixTime s) x
$cto :: forall (s :: S) x. Rep (PPosixTime s) x -> PPosixTime s
to :: forall x. Rep (PPosixTime s) x -> PPosixTime s
Generic
)
deriving anyclass
(
(forall (s :: S). PPosixTime s -> Term s (PInner PPosixTime))
-> (forall (s :: S) (b :: PType).
Term s (PInner PPosixTime)
-> (PPosixTime s -> Term s b) -> Term s b)
-> PlutusType PPosixTime
forall (s :: S). PPosixTime s -> Term s (PInner PPosixTime)
forall (s :: S) (b :: PType).
Term s (PInner PPosixTime)
-> (PPosixTime s -> Term s b) -> Term s b
forall (a :: PType).
(forall (s :: S). a s -> Term s (PInner a))
-> (forall (s :: S) (b :: PType).
Term s (PInner a) -> (a s -> Term s b) -> Term s b)
-> PlutusType a
$cpcon' :: forall (s :: S). PPosixTime s -> Term s (PInner PPosixTime)
pcon' :: forall (s :: S). PPosixTime s -> Term s (PInner PPosixTime)
$cpmatch' :: forall (s :: S) (b :: PType).
Term s (PInner PPosixTime)
-> (PPosixTime s -> Term s b) -> Term s b
pmatch' :: forall (s :: S) (b :: PType).
Term s (PInner PPosixTime)
-> (PPosixTime s -> Term s b) -> Term s b
PlutusType
,
(forall (s :: S). Term s (PAsData PPosixTime) -> Term s PPosixTime)
-> (forall (s :: S). Term s PPosixTime -> Term s PData)
-> PIsData PPosixTime
forall (s :: S). Term s (PAsData PPosixTime) -> Term s PPosixTime
forall (s :: S). Term s PPosixTime -> Term s PData
forall (a :: PType).
(forall (s :: S). Term s (PAsData a) -> Term s a)
-> (forall (s :: S). Term s a -> Term s PData) -> PIsData a
$cpfromDataImpl :: forall (s :: S). Term s (PAsData PPosixTime) -> Term s PPosixTime
pfromDataImpl :: forall (s :: S). Term s (PAsData PPosixTime) -> Term s PPosixTime
$cpdataImpl :: forall (s :: S). Term s PPosixTime -> Term s PData
pdataImpl :: forall (s :: S). Term s PPosixTime -> Term s PData
PIsData
,
(forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PBool)
-> PEq PPosixTime
forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PBool
forall (t :: PType).
(forall (s :: S). Term s t -> Term s t -> Term s PBool) -> PEq t
$c#== :: forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PBool
#== :: forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PBool
PEq
,
PEq PPosixTime
PEq PPosixTime =>
(forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PBool)
-> (forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PBool)
-> (forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime)
-> (forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime)
-> POrd PPosixTime
forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PBool
forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
forall (t :: PType).
PEq t =>
(forall (s :: S). Term s t -> Term s t -> Term s PBool)
-> (forall (s :: S). Term s t -> Term s t -> Term s PBool)
-> (forall (s :: S). Term s t -> Term s t -> Term s t)
-> (forall (s :: S). Term s t -> Term s t -> Term s t)
-> POrd t
$c#<= :: forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PBool
#<= :: forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PBool
$c#< :: forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PBool
#< :: forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PBool
$cpmax :: forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
pmax :: forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
$cpmin :: forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
pmin :: forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
POrd
,
(forall (s :: S). Bool -> Term s PPosixTime -> Term s PString)
-> PShow PPosixTime
forall (s :: S). Bool -> Term s PPosixTime -> Term s PString
forall (t :: PType).
(forall (s :: S). Bool -> Term s t -> Term s PString) -> PShow t
$cpshow' :: forall (s :: S). Bool -> Term s PPosixTime -> Term s PString
pshow' :: forall (s :: S). Bool -> Term s PPosixTime -> Term s PString
PShow
)
instance PCountable PPosixTime where
{-# INLINEABLE psuccessor #-}
psuccessor :: forall (s :: S). Term s (PPosixTime :--> PPosixTime)
psuccessor = (forall (s :: S). Term s (PPosixTime :--> PPosixTime))
-> Term s (PPosixTime :--> PPosixTime)
forall (a :: PType) (s :: S).
HasCallStack =>
ClosedTerm a -> Term s a
phoistAcyclic ((forall (s :: S). Term s (PPosixTime :--> PPosixTime))
-> Term s (PPosixTime :--> PPosixTime))
-> (forall (s :: S). Term s (PPosixTime :--> PPosixTime))
-> Term s (PPosixTime :--> PPosixTime)
forall a b. (a -> b) -> a -> b
$ (Term s PPosixTime -> Term s PPosixTime)
-> Term s (PPosixTime :--> PPosixTime)
forall a (b :: PType) (s :: S) (c :: PType).
(PLamN a b s, HasCallStack) =>
(Term s c -> a) -> Term s (c :--> b)
forall (c :: PType).
HasCallStack =>
(Term s c -> Term s PPosixTime) -> Term s (c :--> PPosixTime)
plam (\Term s PPosixTime
x -> Term s PPosixTime
x Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
forall (a :: PType) (s :: S).
PAdditiveSemigroup a =>
Term s a -> Term s a -> Term s a
#+ Term s PInteger -> Term s PPosixTime
forall (s :: S). Term s PInteger -> Term s PPosixTime
pposixTime Term s PInteger
forall (s :: S). Term s PInteger
forall (a :: PType) (s :: S). PMultiplicativeMonoid a => Term s a
pone)
{-# INLINEABLE psuccessorN #-}
psuccessorN :: forall (s :: S).
Term s (PPositive :--> (PPosixTime :--> PPosixTime))
psuccessorN = (forall (s :: S).
Term s (PPositive :--> (PPosixTime :--> PPosixTime)))
-> Term s (PPositive :--> (PPosixTime :--> PPosixTime))
forall (a :: PType) (s :: S).
HasCallStack =>
ClosedTerm a -> Term s a
phoistAcyclic ((forall (s :: S).
Term s (PPositive :--> (PPosixTime :--> PPosixTime)))
-> Term s (PPositive :--> (PPosixTime :--> PPosixTime)))
-> (forall (s :: S).
Term s (PPositive :--> (PPosixTime :--> PPosixTime)))
-> Term s (PPositive :--> (PPosixTime :--> PPosixTime))
forall a b. (a -> b) -> a -> b
$ (Term s PPositive -> Term s PPosixTime -> Term s PPosixTime)
-> Term s (PPositive :--> (PPosixTime :--> PPosixTime))
forall a (b :: PType) (s :: S) (c :: PType).
(PLamN a b s, HasCallStack) =>
(Term s c -> a) -> Term s (c :--> b)
forall (c :: PType).
HasCallStack =>
(Term s c -> Term s PPosixTime -> Term s PPosixTime)
-> Term s (c :--> (PPosixTime :--> PPosixTime))
plam ((Term s PPositive -> Term s PPosixTime -> Term s PPosixTime)
-> Term s (PPositive :--> (PPosixTime :--> PPosixTime)))
-> (Term s PPositive -> Term s PPosixTime -> Term s PPosixTime)
-> Term s (PPositive :--> (PPosixTime :--> PPosixTime))
forall a b. (a -> b) -> a -> b
$ \Term s PPositive
p Term s PPosixTime
t ->
let p' :: Term s PPosixTime
p' = PPosixTime s -> Term s PPosixTime
forall (a :: PType) (s :: S). PlutusType a => a s -> Term s a
pcon (PPosixTime s -> Term s PPosixTime)
-> (Term s PPositive -> PPosixTime s)
-> Term s PPositive
-> Term s PPosixTime
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Term s (PDataNewtype PInteger) -> PPosixTime s
forall (s :: S). Term s (PDataNewtype PInteger) -> PPosixTime s
PPosixTime (Term s (PDataNewtype PInteger) -> PPosixTime s)
-> (Term s PPositive -> Term s (PDataNewtype PInteger))
-> Term s PPositive
-> PPosixTime s
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PDataNewtype PInteger s -> Term s (PDataNewtype PInteger)
forall (a :: PType) (s :: S). PlutusType a => a s -> Term s a
pcon (PDataNewtype PInteger s -> Term s (PDataNewtype PInteger))
-> (Term s PPositive -> PDataNewtype PInteger s)
-> Term s PPositive
-> Term s (PDataNewtype PInteger)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Term s (PAsData PInteger) -> PDataNewtype PInteger s
forall (a :: PType) (s :: S).
Term s (PAsData a) -> PDataNewtype a s
PDataNewtype (Term s (PAsData PInteger) -> PDataNewtype PInteger s)
-> (Term s PPositive -> Term s (PAsData PInteger))
-> Term s PPositive
-> PDataNewtype PInteger s
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Term s PInteger -> Term s (PAsData PInteger)
forall (a :: PType) (s :: S).
PIsData a =>
Term s a -> Term s (PAsData a)
pdata (Term s PInteger -> Term s (PAsData PInteger))
-> (Term s PPositive -> Term s PInteger)
-> Term s PPositive
-> Term s (PAsData PInteger)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Term s PPositive -> Term s PInteger
Term s PPositive -> Term s (PInner PPositive)
forall (s :: S) (a :: PType). Term s a -> Term s (PInner a)
pto (Term s PPositive -> Term s PPosixTime)
-> Term s PPositive -> Term s PPosixTime
forall a b. (a -> b) -> a -> b
$ Term s PPositive
p
in Term s PPosixTime
p' Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
forall (a :: PType) (s :: S).
PAdditiveSemigroup a =>
Term s a -> Term s a -> Term s a
#+ Term s PPosixTime
t
instance PEnumerable PPosixTime where
{-# INLINEABLE ppredecessor #-}
ppredecessor :: forall (s :: S). Term s (PPosixTime :--> PPosixTime)
ppredecessor = (forall (s :: S). Term s (PPosixTime :--> PPosixTime))
-> Term s (PPosixTime :--> PPosixTime)
forall (a :: PType) (s :: S).
HasCallStack =>
ClosedTerm a -> Term s a
phoistAcyclic ((forall (s :: S). Term s (PPosixTime :--> PPosixTime))
-> Term s (PPosixTime :--> PPosixTime))
-> (forall (s :: S). Term s (PPosixTime :--> PPosixTime))
-> Term s (PPosixTime :--> PPosixTime)
forall a b. (a -> b) -> a -> b
$ (Term s PPosixTime -> Term s PPosixTime)
-> Term s (PPosixTime :--> PPosixTime)
forall a (b :: PType) (s :: S) (c :: PType).
(PLamN a b s, HasCallStack) =>
(Term s c -> a) -> Term s (c :--> b)
forall (c :: PType).
HasCallStack =>
(Term s c -> Term s PPosixTime) -> Term s (c :--> PPosixTime)
plam (\Term s PPosixTime
x -> Term s PPosixTime
x Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
forall (a :: PType) (s :: S).
PAdditiveGroup a =>
Term s a -> Term s a -> Term s a
#- Term s PInteger -> Term s PPosixTime
forall (s :: S). Term s PInteger -> Term s PPosixTime
pposixTime Term s PInteger
forall (s :: S). Term s PInteger
forall (a :: PType) (s :: S). PMultiplicativeMonoid a => Term s a
pone)
{-# INLINEABLE ppredecessorN #-}
ppredecessorN :: forall (s :: S).
Term s (PPositive :--> (PPosixTime :--> PPosixTime))
ppredecessorN = (forall (s :: S).
Term s (PPositive :--> (PPosixTime :--> PPosixTime)))
-> Term s (PPositive :--> (PPosixTime :--> PPosixTime))
forall (a :: PType) (s :: S).
HasCallStack =>
ClosedTerm a -> Term s a
phoistAcyclic ((forall (s :: S).
Term s (PPositive :--> (PPosixTime :--> PPosixTime)))
-> Term s (PPositive :--> (PPosixTime :--> PPosixTime)))
-> (forall (s :: S).
Term s (PPositive :--> (PPosixTime :--> PPosixTime)))
-> Term s (PPositive :--> (PPosixTime :--> PPosixTime))
forall a b. (a -> b) -> a -> b
$ (Term s PPositive -> Term s PPosixTime -> Term s PPosixTime)
-> Term s (PPositive :--> (PPosixTime :--> PPosixTime))
forall a (b :: PType) (s :: S) (c :: PType).
(PLamN a b s, HasCallStack) =>
(Term s c -> a) -> Term s (c :--> b)
forall (c :: PType).
HasCallStack =>
(Term s c -> Term s PPosixTime -> Term s PPosixTime)
-> Term s (c :--> (PPosixTime :--> PPosixTime))
plam ((Term s PPositive -> Term s PPosixTime -> Term s PPosixTime)
-> Term s (PPositive :--> (PPosixTime :--> PPosixTime)))
-> (Term s PPositive -> Term s PPosixTime -> Term s PPosixTime)
-> Term s (PPositive :--> (PPosixTime :--> PPosixTime))
forall a b. (a -> b) -> a -> b
$ \Term s PPositive
p Term s PPosixTime
t ->
let p' :: Term s PPosixTime
p' = PPosixTime s -> Term s PPosixTime
forall (a :: PType) (s :: S). PlutusType a => a s -> Term s a
pcon (PPosixTime s -> Term s PPosixTime)
-> (Term s PPositive -> PPosixTime s)
-> Term s PPositive
-> Term s PPosixTime
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Term s (PDataNewtype PInteger) -> PPosixTime s
forall (s :: S). Term s (PDataNewtype PInteger) -> PPosixTime s
PPosixTime (Term s (PDataNewtype PInteger) -> PPosixTime s)
-> (Term s PPositive -> Term s (PDataNewtype PInteger))
-> Term s PPositive
-> PPosixTime s
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PDataNewtype PInteger s -> Term s (PDataNewtype PInteger)
forall (a :: PType) (s :: S). PlutusType a => a s -> Term s a
pcon (PDataNewtype PInteger s -> Term s (PDataNewtype PInteger))
-> (Term s PPositive -> PDataNewtype PInteger s)
-> Term s PPositive
-> Term s (PDataNewtype PInteger)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Term s (PAsData PInteger) -> PDataNewtype PInteger s
forall (a :: PType) (s :: S).
Term s (PAsData a) -> PDataNewtype a s
PDataNewtype (Term s (PAsData PInteger) -> PDataNewtype PInteger s)
-> (Term s PPositive -> Term s (PAsData PInteger))
-> Term s PPositive
-> PDataNewtype PInteger s
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Term s PInteger -> Term s (PAsData PInteger)
forall (a :: PType) (s :: S).
PIsData a =>
Term s a -> Term s (PAsData a)
pdata (Term s PInteger -> Term s (PAsData PInteger))
-> (Term s PPositive -> Term s PInteger)
-> Term s PPositive
-> Term s (PAsData PInteger)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Term s PPositive -> Term s PInteger
Term s PPositive -> Term s (PInner PPositive)
forall (s :: S) (a :: PType). Term s a -> Term s (PInner a)
pto (Term s PPositive -> Term s PPosixTime)
-> Term s PPositive -> Term s PPosixTime
forall a b. (a -> b) -> a -> b
$ Term s PPositive
p
in Term s PPosixTime
t Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
forall (a :: PType) (s :: S).
PAdditiveGroup a =>
Term s a -> Term s a -> Term s a
#- Term s PPosixTime
p'
instance PAdditiveSemigroup PPosixTime where
{-# INLINEABLE (#+) #-}
Term s PPosixTime
t1 #+ :: forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
#+ Term s PPosixTime
t2 = Term s PInteger -> Term s PPosixTime
forall (s :: S). Term s PInteger -> Term s PPosixTime
pposixTime (Term s PPosixTime -> Term s PInteger
forall (s :: S). Term s PPosixTime -> Term s PInteger
unPPosixTime Term s PPosixTime
t1 Term s PInteger -> Term s PInteger -> Term s PInteger
forall (s :: S).
Term s PInteger -> Term s PInteger -> Term s PInteger
forall (a :: PType) (s :: S).
PAdditiveSemigroup a =>
Term s a -> Term s a -> Term s a
#+ Term s PPosixTime -> Term s PInteger
forall (s :: S). Term s PPosixTime -> Term s PInteger
unPPosixTime Term s PPosixTime
t2)
{-# INLINEABLE pscalePositive #-}
pscalePositive :: forall (s :: S).
Term s (PPosixTime :--> (PPositive :--> PPosixTime))
pscalePositive = (forall (s :: S).
Term s (PPosixTime :--> (PPositive :--> PPosixTime)))
-> Term s (PPosixTime :--> (PPositive :--> PPosixTime))
forall (a :: PType) (s :: S).
HasCallStack =>
ClosedTerm a -> Term s a
phoistAcyclic ((forall (s :: S).
Term s (PPosixTime :--> (PPositive :--> PPosixTime)))
-> Term s (PPosixTime :--> (PPositive :--> PPosixTime)))
-> (forall (s :: S).
Term s (PPosixTime :--> (PPositive :--> PPosixTime)))
-> Term s (PPosixTime :--> (PPositive :--> PPosixTime))
forall a b. (a -> b) -> a -> b
$ (Term s PPosixTime -> Term s PPositive -> Term s PPosixTime)
-> Term s (PPosixTime :--> (PPositive :--> PPosixTime))
forall a (b :: PType) (s :: S) (c :: PType).
(PLamN a b s, HasCallStack) =>
(Term s c -> a) -> Term s (c :--> b)
forall (c :: PType).
HasCallStack =>
(Term s c -> Term s PPositive -> Term s PPosixTime)
-> Term s (c :--> (PPositive :--> PPosixTime))
plam ((Term s PPosixTime -> Term s PPositive -> Term s PPosixTime)
-> Term s (PPosixTime :--> (PPositive :--> PPosixTime)))
-> (Term s PPosixTime -> Term s PPositive -> Term s PPosixTime)
-> Term s (PPosixTime :--> (PPositive :--> PPosixTime))
forall a b. (a -> b) -> a -> b
$ \Term s PPosixTime
t Term s PPositive
p ->
Term s PInteger -> Term s PPosixTime
forall (s :: S). Term s PInteger -> Term s PPosixTime
pposixTime (Term s PPosixTime -> Term s PInteger
forall (s :: S). Term s PPosixTime -> Term s PInteger
unPPosixTime Term s PPosixTime
t Term s PInteger -> Term s PInteger -> Term s PInteger
forall (s :: S).
Term s PInteger -> Term s PInteger -> Term s PInteger
forall (a :: PType) (s :: S).
PMultiplicativeSemigroup a =>
Term s a -> Term s a -> Term s a
#* Term s PPositive -> Term s (PInner PPositive)
forall (s :: S) (a :: PType). Term s a -> Term s (PInner a)
pto Term s PPositive
p)
instance PAdditiveMonoid PPosixTime where
{-# INLINEABLE pzero #-}
pzero :: forall (s :: S). Term s PPosixTime
pzero = Term s PInteger -> Term s PPosixTime
forall (s :: S). Term s PInteger -> Term s PPosixTime
pposixTime Term s PInteger
forall (s :: S). Term s PInteger
forall (a :: PType) (s :: S). PAdditiveMonoid a => Term s a
pzero
instance PAdditiveGroup PPosixTime where
{-# INLINEABLE pnegate #-}
pnegate :: forall (s :: S). Term s (PPosixTime :--> PPosixTime)
pnegate = (forall (s :: S). Term s (PPosixTime :--> PPosixTime))
-> Term s (PPosixTime :--> PPosixTime)
forall (a :: PType) (s :: S).
HasCallStack =>
ClosedTerm a -> Term s a
phoistAcyclic ((forall (s :: S). Term s (PPosixTime :--> PPosixTime))
-> Term s (PPosixTime :--> PPosixTime))
-> (forall (s :: S). Term s (PPosixTime :--> PPosixTime))
-> Term s (PPosixTime :--> PPosixTime)
forall a b. (a -> b) -> a -> b
$ (Term s PPosixTime -> Term s PPosixTime)
-> Term s (PPosixTime :--> PPosixTime)
forall a (b :: PType) (s :: S) (c :: PType).
(PLamN a b s, HasCallStack) =>
(Term s c -> a) -> Term s (c :--> b)
forall (c :: PType).
HasCallStack =>
(Term s c -> Term s PPosixTime) -> Term s (c :--> PPosixTime)
plam ((Term s PPosixTime -> Term s PPosixTime)
-> Term s (PPosixTime :--> PPosixTime))
-> (Term s PPosixTime -> Term s PPosixTime)
-> Term s (PPosixTime :--> PPosixTime)
forall a b. (a -> b) -> a -> b
$ \Term s PPosixTime
t -> Term s PInteger -> Term s PPosixTime
forall (s :: S). Term s PInteger -> Term s PPosixTime
pposixTime (Term s (PInteger :--> PInteger)
forall (s :: S). Term s (PInteger :--> PInteger)
forall (a :: PType) (s :: S). PAdditiveGroup a => Term s (a :--> a)
pnegate Term s (PInteger :--> PInteger)
-> Term s PInteger -> Term s PInteger
forall (s :: S) (a :: PType) (b :: PType).
Term s (a :--> b) -> Term s a -> Term s b
# Term s PPosixTime -> Term s PInteger
forall (s :: S). Term s PPosixTime -> Term s PInteger
unPPosixTime Term s PPosixTime
t)
{-# INLINEABLE (#-) #-}
Term s PPosixTime
t1 #- :: forall (s :: S).
Term s PPosixTime -> Term s PPosixTime -> Term s PPosixTime
#- Term s PPosixTime
t2 = Term s PInteger -> Term s PPosixTime
forall (s :: S). Term s PInteger -> Term s PPosixTime
pposixTime (Term s PPosixTime -> Term s PInteger
forall (s :: S). Term s PPosixTime -> Term s PInteger
unPPosixTime Term s PPosixTime
t1 Term s PInteger -> Term s PInteger -> Term s PInteger
forall (s :: S).
Term s PInteger -> Term s PInteger -> Term s PInteger
forall (a :: PType) (s :: S).
PAdditiveGroup a =>
Term s a -> Term s a -> Term s a
#- Term s PPosixTime -> Term s PInteger
forall (s :: S). Term s PPosixTime -> Term s PInteger
unPPosixTime Term s PPosixTime
t2)
instance DerivePlutusType PPosixTime where
type DPTStrat _ = PlutusTypeNewtype
deriving via
DeriveDataPLiftable PPosixTime Plutus.POSIXTime
instance
PLiftable PPosixTime
instance PTryFrom PData PPosixTime where
type PTryFromExcess PData PPosixTime = Mret PPosixTime
ptryFrom' ::
forall (s :: S) (r :: S -> Type).
Term s PData ->
((Term s PPosixTime, Reduce (PTryFromExcess PData PPosixTime s)) -> Term s r) ->
Term s r
ptryFrom' :: forall (s :: S) (r :: PType).
Term s PData
-> ((Term s PPosixTime, Reduce (PTryFromExcess PData PPosixTime s))
-> Term s r)
-> Term s r
ptryFrom' Term s PData
opq = TermCont
s (Term s PPosixTime, Reduce (PTryFromExcess PData PPosixTime s))
-> ((Term s PPosixTime, Reduce (PTryFromExcess PData PPosixTime s))
-> Term s r)
-> Term s r
forall (r :: PType) (s :: S) a.
TermCont s a -> (a -> Term s r) -> Term s r
runTermCont (TermCont
s (Term s PPosixTime, Reduce (PTryFromExcess PData PPosixTime s))
-> ((Term s PPosixTime, Reduce (PTryFromExcess PData PPosixTime s))
-> Term s r)
-> Term s r)
-> TermCont
s (Term s PPosixTime, Reduce (PTryFromExcess PData PPosixTime s))
-> ((Term s PPosixTime, Reduce (PTryFromExcess PData PPosixTime s))
-> Term s r)
-> Term s r
forall a b. (a -> b) -> a -> b
$ do
(Term s (PAsData PInteger)
wrapped :: Term s (PAsData PInteger), Term s PInteger
unwrapped :: Term s PInteger) <-
(((Term s (PAsData PInteger), Term s PInteger) -> Term s r)
-> Term s r)
-> TermCont s (Term s (PAsData PInteger), Term s PInteger)
forall a (s :: S) (r :: PType).
((a -> Term s r) -> Term s r) -> TermCont s a
tcont ((((Term s (PAsData PInteger), Term s PInteger) -> Term s r)
-> Term s r)
-> TermCont s (Term s (PAsData PInteger), Term s PInteger))
-> (((Term s (PAsData PInteger), Term s PInteger) -> Term s r)
-> Term s r)
-> TermCont s (Term s (PAsData PInteger), Term s PInteger)
forall a b. (a -> b) -> a -> b
$ forall (b :: PType) (a :: PType) (s :: S) (r :: PType).
PTryFrom a b =>
Term s a
-> ((Term s b, Reduce (PTryFromExcess a b s)) -> Term s r)
-> Term s r
ptryFrom @(PAsData PInteger) Term s PData
opq
(Term s PPosixTime, Term s PPosixTime)
-> TermCont s (Term s PPosixTime, Term s PPosixTime)
forall a. a -> TermCont s a
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure (Term s (PAsData PInteger) -> Term s PPosixTime
forall (b :: PType) (a :: PType) (s :: S). Term s a -> Term s b
punsafeCoerce Term s (PAsData PInteger)
wrapped, Term s PInteger -> Term s PPosixTime
forall (s :: S). Term s PInteger -> Term s PPosixTime
pposixTime Term s PInteger
unwrapped)
instance PTryFrom PData (PAsData PPosixTime) where
type PTryFromExcess PData (PAsData PPosixTime) = Mret PPosixTime
ptryFrom' ::
forall (s :: S) (r :: S -> Type).
Term s PData ->
((Term s (PAsData PPosixTime), Reduce (PTryFromExcess PData (PAsData PPosixTime) s)) -> Term s r) ->
Term s r
ptryFrom' :: forall (s :: S) (r :: PType).
Term s PData
-> ((Term s (PAsData PPosixTime),
Reduce (PTryFromExcess PData (PAsData PPosixTime) s))
-> Term s r)
-> Term s r
ptryFrom' Term s PData
opq = TermCont
s
(Term s (PAsData PPosixTime),
Reduce (PTryFromExcess PData (PAsData PPosixTime) s))
-> ((Term s (PAsData PPosixTime),
Reduce (PTryFromExcess PData (PAsData PPosixTime) s))
-> Term s r)
-> Term s r
forall (r :: PType) (s :: S) a.
TermCont s a -> (a -> Term s r) -> Term s r
runTermCont (TermCont
s
(Term s (PAsData PPosixTime),
Reduce (PTryFromExcess PData (PAsData PPosixTime) s))
-> ((Term s (PAsData PPosixTime),
Reduce (PTryFromExcess PData (PAsData PPosixTime) s))
-> Term s r)
-> Term s r)
-> TermCont
s
(Term s (PAsData PPosixTime),
Reduce (PTryFromExcess PData (PAsData PPosixTime) s))
-> ((Term s (PAsData PPosixTime),
Reduce (PTryFromExcess PData (PAsData PPosixTime) s))
-> Term s r)
-> Term s r
forall a b. (a -> b) -> a -> b
$ do
(Term s (PAsData PInteger)
wrapped :: Term s (PAsData PInteger), Term s PInteger
unwrapped :: Term s PInteger) <-
(((Term s (PAsData PInteger), Term s PInteger) -> Term s r)
-> Term s r)
-> TermCont s (Term s (PAsData PInteger), Term s PInteger)
forall a (s :: S) (r :: PType).
((a -> Term s r) -> Term s r) -> TermCont s a
tcont ((((Term s (PAsData PInteger), Term s PInteger) -> Term s r)
-> Term s r)
-> TermCont s (Term s (PAsData PInteger), Term s PInteger))
-> (((Term s (PAsData PInteger), Term s PInteger) -> Term s r)
-> Term s r)
-> TermCont s (Term s (PAsData PInteger), Term s PInteger)
forall a b. (a -> b) -> a -> b
$ forall (b :: PType) (a :: PType) (s :: S) (r :: PType).
PTryFrom a b =>
Term s a
-> ((Term s b, Reduce (PTryFromExcess a b s)) -> Term s r)
-> Term s r
ptryFrom @(PAsData PInteger) Term s PData
opq
(Term s (PAsData PPosixTime), Term s PPosixTime)
-> TermCont s (Term s (PAsData PPosixTime), Term s PPosixTime)
forall a. a -> TermCont s a
forall (f :: Type -> Type) a. Applicative f => a -> f a
pure (Term s (PAsData PInteger) -> Term s (PAsData PPosixTime)
forall (b :: PType) (a :: PType) (s :: S). Term s a -> Term s b
punsafeCoerce Term s (PAsData PInteger)
wrapped, Term s PInteger -> Term s PPosixTime
forall (s :: S). Term s PInteger -> Term s PPosixTime
pposixTime Term s PInteger
unwrapped)
pposixTime :: forall (s :: S). Term s PInteger -> Term s PPosixTime
pposixTime :: forall (s :: S). Term s PInteger -> Term s PPosixTime
pposixTime = PPosixTime s -> Term s PPosixTime
forall (a :: PType) (s :: S). PlutusType a => a s -> Term s a
pcon (PPosixTime s -> Term s PPosixTime)
-> (Term s PInteger -> PPosixTime s)
-> Term s PInteger
-> Term s PPosixTime
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Term s (PDataNewtype PInteger) -> PPosixTime s
forall (s :: S). Term s (PDataNewtype PInteger) -> PPosixTime s
PPosixTime (Term s (PDataNewtype PInteger) -> PPosixTime s)
-> (Term s PInteger -> Term s (PDataNewtype PInteger))
-> Term s PInteger
-> PPosixTime s
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PDataNewtype PInteger s -> Term s (PDataNewtype PInteger)
forall (a :: PType) (s :: S). PlutusType a => a s -> Term s a
pcon (PDataNewtype PInteger s -> Term s (PDataNewtype PInteger))
-> (Term s PInteger -> PDataNewtype PInteger s)
-> Term s PInteger
-> Term s (PDataNewtype PInteger)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Term s (PAsData PInteger) -> PDataNewtype PInteger s
forall (a :: PType) (s :: S).
Term s (PAsData a) -> PDataNewtype a s
PDataNewtype (Term s (PAsData PInteger) -> PDataNewtype PInteger s)
-> (Term s PInteger -> Term s (PAsData PInteger))
-> Term s PInteger
-> PDataNewtype PInteger s
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Term s PInteger -> Term s (PAsData PInteger)
forall (a :: PType) (s :: S).
PIsData a =>
Term s a -> Term s (PAsData a)
pdata
unPPosixTime :: forall (s :: S). Term s PPosixTime -> Term s PInteger
unPPosixTime :: forall (s :: S). Term s PPosixTime -> Term s PInteger
unPPosixTime Term s PPosixTime
t = Term s PPosixTime
-> (PPosixTime s -> Term s PInteger) -> Term s PInteger
forall (a :: PType) (s :: S) (b :: PType).
PlutusType a =>
Term s a -> (a s -> Term s b) -> Term s b
pmatch Term s PPosixTime
t ((PPosixTime s -> Term s PInteger) -> Term s PInteger)
-> (PPosixTime s -> Term s PInteger) -> Term s PInteger
forall a b. (a -> b) -> a -> b
$ \(PPosixTime Term s (PDataNewtype PInteger)
t') ->
Term s (PDataNewtype PInteger)
-> (PDataNewtype PInteger s -> Term s PInteger) -> Term s PInteger
forall (a :: PType) (s :: S) (b :: PType).
PlutusType a =>
Term s a -> (a s -> Term s b) -> Term s b
pmatch Term s (PDataNewtype PInteger)
t' ((PDataNewtype PInteger s -> Term s PInteger) -> Term s PInteger)
-> (PDataNewtype PInteger s -> Term s PInteger) -> Term s PInteger
forall a b. (a -> b) -> a -> b
$ \(PDataNewtype Term s (PAsData PInteger)
t'') ->
Term s (PAsData PInteger) -> Term s PInteger
forall (a :: PType) (s :: S).
PIsData a =>
Term s (PAsData a) -> Term s a
pfromData Term s (PAsData PInteger)
t''