{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -Wno-simplifiable-class-constraints #-}
{-# OPTIONS_GHC -fno-omit-interface-pragmas #-}
{-# OPTIONS_GHC -fno-specialise #-}
{-# OPTIONS_GHC -fno-strictness #-}
module PlutusLedgerApi.V4.Contexts
( AccountId (..)
, AccountBalanceInterval (..)
, AccountBalanceIntervals (..)
, ColdCommitteeCredential (..)
, HotCommitteeCredential (..)
, DRepCredential (..)
, DRep (..)
, Delegatee (..)
, TxCert (..)
, Voter (..)
, Vote (..)
, GovernanceActionId (..)
, Committee (..)
, Constitution (..)
, ProtocolVersion (..)
, ChangedParameters (..)
, GovernanceAction (..)
, ProposalProcedure (..)
, ScriptPurpose (..)
, ScriptInfo (..)
, TxInInfo (..)
, TxInfo (..)
, TopTxInfoSimplified (..)
, TopTxInfo (..)
, ScriptContext (..)
, findOwnInput
, findDatum
, findDatumHash
, findTxInByTxOutRef
, findContinuingOutputs
, getContinuingOutputs
, txSignedBy
, pubKeyOutputsAt
, valuePaidTo
, valueSpent
, valueProduced
, ownCurrencySymbol
, spendsOutput
) where
import Data.Function ((&))
import GHC.Generics (Generic)
import PlutusLedgerApi.V2 qualified as V2
import PlutusLedgerApi.V3.Contexts
( ChangedParameters (..)
, ColdCommitteeCredential (..)
, Committee (..)
, Constitution (..)
, DRep (..)
, DRepCredential (..)
, Delegatee (..)
, GovernanceAction (..)
, GovernanceActionId (..)
, HotCommitteeCredential (..)
, ProposalProcedure (..)
, ProtocolVersion (..)
, TxInInfo (..)
, Vote (..)
, Voter (..)
)
import PlutusLedgerApi.V3.MintValue qualified as V3
import PlutusLedgerApi.V3.Tx qualified as V3
import PlutusTx (makeIsDataSchemaIndexed)
import PlutusTx qualified
import PlutusTx.AssocMap (Map, lookup, toList)
import PlutusTx.Blueprint
( HasBlueprintDefinition
, HasBlueprintSchema
, HasSchemaDefinition
, SchemaInfo (..)
)
import PlutusTx.Blueprint.Class (HasBlueprintSchema (..))
import PlutusTx.Blueprint.Definition.Derive (definitionRef)
import PlutusTx.Blueprint.Schema (withSchemaInfo)
import PlutusTx.Foldable qualified as F
import PlutusTx.Lift (makeLift)
import PlutusTx.List qualified as List
import PlutusTx.Prelude qualified as PlutusTx
import Prettyprinter (nest, vsep, (<+>))
import Prettyprinter.Extras (Pretty (pretty), PrettyShow (PrettyShow))
import Prelude qualified as Haskell
newtype AccountId = AccountId V2.Credential
deriving stock ((forall x. AccountId -> Rep AccountId x)
-> (forall x. Rep AccountId x -> AccountId) -> Generic AccountId
forall x. Rep AccountId x -> AccountId
forall x. AccountId -> Rep AccountId x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. AccountId -> Rep AccountId x
from :: forall x. AccountId -> Rep AccountId x
$cto :: forall x. Rep AccountId x -> AccountId
to :: forall x. Rep AccountId x -> AccountId
Generic)
deriving anyclass (DefinitionId
DefinitionId -> HasBlueprintDefinition AccountId
forall t. DefinitionId -> HasBlueprintDefinition t
$cdefinitionId :: DefinitionId
definitionId :: DefinitionId
HasBlueprintDefinition)
deriving ((forall ann. AccountId -> Doc ann)
-> (forall ann. [AccountId] -> Doc ann) -> Pretty AccountId
forall ann. [AccountId] -> Doc ann
forall ann. AccountId -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. AccountId -> Doc ann
pretty :: forall ann. AccountId -> Doc ann
$cprettyList :: forall ann. [AccountId] -> Doc ann
prettyList :: forall ann. [AccountId] -> Doc ann
Pretty) via (PrettyShow AccountId)
deriving newtype
( AccountId -> AccountId -> Bool
(AccountId -> AccountId -> Bool)
-> (AccountId -> AccountId -> Bool) -> Eq AccountId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AccountId -> AccountId -> Bool
== :: AccountId -> AccountId -> Bool
$c/= :: AccountId -> AccountId -> Bool
/= :: AccountId -> AccountId -> Bool
Haskell.Eq
, Eq AccountId
Eq AccountId =>
(AccountId -> AccountId -> Ordering)
-> (AccountId -> AccountId -> Bool)
-> (AccountId -> AccountId -> Bool)
-> (AccountId -> AccountId -> Bool)
-> (AccountId -> AccountId -> Bool)
-> (AccountId -> AccountId -> AccountId)
-> (AccountId -> AccountId -> AccountId)
-> Ord AccountId
AccountId -> AccountId -> Bool
AccountId -> AccountId -> Ordering
AccountId -> AccountId -> AccountId
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 :: AccountId -> AccountId -> Ordering
compare :: AccountId -> AccountId -> Ordering
$c< :: AccountId -> AccountId -> Bool
< :: AccountId -> AccountId -> Bool
$c<= :: AccountId -> AccountId -> Bool
<= :: AccountId -> AccountId -> Bool
$c> :: AccountId -> AccountId -> Bool
> :: AccountId -> AccountId -> Bool
$c>= :: AccountId -> AccountId -> Bool
>= :: AccountId -> AccountId -> Bool
$cmax :: AccountId -> AccountId -> AccountId
max :: AccountId -> AccountId -> AccountId
$cmin :: AccountId -> AccountId -> AccountId
min :: AccountId -> AccountId -> AccountId
Haskell.Ord
, Int -> AccountId -> ShowS
[AccountId] -> ShowS
AccountId -> String
(Int -> AccountId -> ShowS)
-> (AccountId -> String)
-> ([AccountId] -> ShowS)
-> Show AccountId
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AccountId -> ShowS
showsPrec :: Int -> AccountId -> ShowS
$cshow :: AccountId -> String
show :: AccountId -> String
$cshowList :: [AccountId] -> ShowS
showList :: [AccountId] -> ShowS
Haskell.Show
, AccountId -> AccountId -> Bool
(AccountId -> AccountId -> Bool) -> Eq AccountId
forall a. (a -> a -> Bool) -> Eq a
$c== :: AccountId -> AccountId -> Bool
== :: AccountId -> AccountId -> Bool
PlutusTx.Eq
, AccountId -> BuiltinData
(AccountId -> BuiltinData) -> ToData AccountId
forall a. (a -> BuiltinData) -> ToData a
$ctoBuiltinData :: AccountId -> BuiltinData
toBuiltinData :: AccountId -> BuiltinData
PlutusTx.ToData
, BuiltinData -> Maybe AccountId
(BuiltinData -> Maybe AccountId) -> FromData AccountId
forall a. (BuiltinData -> Maybe a) -> FromData a
$cfromBuiltinData :: BuiltinData -> Maybe AccountId
fromBuiltinData :: BuiltinData -> Maybe AccountId
PlutusTx.FromData
, BuiltinData -> AccountId
(BuiltinData -> AccountId) -> UnsafeFromData AccountId
forall a. (BuiltinData -> a) -> UnsafeFromData a
$cunsafeFromBuiltinData :: BuiltinData -> AccountId
unsafeFromBuiltinData :: BuiltinData -> AccountId
PlutusTx.UnsafeFromData
)
instance
( HasSchemaDefinition V2.PubKeyHash referencedTypes
, HasSchemaDefinition V2.ScriptHash referencedTypes
)
=> HasBlueprintSchema AccountId referencedTypes
where
schema :: Schema referencedTypes
schema =
forall t (referencedTypes :: [*]).
HasBlueprintSchema t referencedTypes =>
Schema referencedTypes
schema @V2.Credential @referencedTypes
Schema referencedTypes
-> (Schema referencedTypes -> Schema referencedTypes)
-> Schema referencedTypes
forall a b. a -> (a -> b) -> b
& (SchemaInfo -> SchemaInfo)
-> Schema referencedTypes -> Schema referencedTypes
forall (referencedTypes :: [*]).
(SchemaInfo -> SchemaInfo)
-> Schema referencedTypes -> Schema referencedTypes
withSchemaInfo \SchemaInfo
info -> SchemaInfo
info {title = Haskell.Just "AccountId"}
data AccountBalanceInterval
= AccountBalanceLowerBound V2.Lovelace
| AccountBalanceUpperBound V2.Lovelace
| AccountBalanceBothBounds V2.Lovelace V2.Lovelace
| AccountBalanceExact V2.Lovelace
deriving stock ((forall x. AccountBalanceInterval -> Rep AccountBalanceInterval x)
-> (forall x.
Rep AccountBalanceInterval x -> AccountBalanceInterval)
-> Generic AccountBalanceInterval
forall x. Rep AccountBalanceInterval x -> AccountBalanceInterval
forall x. AccountBalanceInterval -> Rep AccountBalanceInterval x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. AccountBalanceInterval -> Rep AccountBalanceInterval x
from :: forall x. AccountBalanceInterval -> Rep AccountBalanceInterval x
$cto :: forall x. Rep AccountBalanceInterval x -> AccountBalanceInterval
to :: forall x. Rep AccountBalanceInterval x -> AccountBalanceInterval
Generic, Int -> AccountBalanceInterval -> ShowS
[AccountBalanceInterval] -> ShowS
AccountBalanceInterval -> String
(Int -> AccountBalanceInterval -> ShowS)
-> (AccountBalanceInterval -> String)
-> ([AccountBalanceInterval] -> ShowS)
-> Show AccountBalanceInterval
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AccountBalanceInterval -> ShowS
showsPrec :: Int -> AccountBalanceInterval -> ShowS
$cshow :: AccountBalanceInterval -> String
show :: AccountBalanceInterval -> String
$cshowList :: [AccountBalanceInterval] -> ShowS
showList :: [AccountBalanceInterval] -> ShowS
Haskell.Show, AccountBalanceInterval -> AccountBalanceInterval -> Bool
(AccountBalanceInterval -> AccountBalanceInterval -> Bool)
-> (AccountBalanceInterval -> AccountBalanceInterval -> Bool)
-> Eq AccountBalanceInterval
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AccountBalanceInterval -> AccountBalanceInterval -> Bool
== :: AccountBalanceInterval -> AccountBalanceInterval -> Bool
$c/= :: AccountBalanceInterval -> AccountBalanceInterval -> Bool
/= :: AccountBalanceInterval -> AccountBalanceInterval -> Bool
Haskell.Eq, Eq AccountBalanceInterval
Eq AccountBalanceInterval =>
(AccountBalanceInterval -> AccountBalanceInterval -> Ordering)
-> (AccountBalanceInterval -> AccountBalanceInterval -> Bool)
-> (AccountBalanceInterval -> AccountBalanceInterval -> Bool)
-> (AccountBalanceInterval -> AccountBalanceInterval -> Bool)
-> (AccountBalanceInterval -> AccountBalanceInterval -> Bool)
-> (AccountBalanceInterval
-> AccountBalanceInterval -> AccountBalanceInterval)
-> (AccountBalanceInterval
-> AccountBalanceInterval -> AccountBalanceInterval)
-> Ord AccountBalanceInterval
AccountBalanceInterval -> AccountBalanceInterval -> Bool
AccountBalanceInterval -> AccountBalanceInterval -> Ordering
AccountBalanceInterval
-> AccountBalanceInterval -> AccountBalanceInterval
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 :: AccountBalanceInterval -> AccountBalanceInterval -> Ordering
compare :: AccountBalanceInterval -> AccountBalanceInterval -> Ordering
$c< :: AccountBalanceInterval -> AccountBalanceInterval -> Bool
< :: AccountBalanceInterval -> AccountBalanceInterval -> Bool
$c<= :: AccountBalanceInterval -> AccountBalanceInterval -> Bool
<= :: AccountBalanceInterval -> AccountBalanceInterval -> Bool
$c> :: AccountBalanceInterval -> AccountBalanceInterval -> Bool
> :: AccountBalanceInterval -> AccountBalanceInterval -> Bool
$c>= :: AccountBalanceInterval -> AccountBalanceInterval -> Bool
>= :: AccountBalanceInterval -> AccountBalanceInterval -> Bool
$cmax :: AccountBalanceInterval
-> AccountBalanceInterval -> AccountBalanceInterval
max :: AccountBalanceInterval
-> AccountBalanceInterval -> AccountBalanceInterval
$cmin :: AccountBalanceInterval
-> AccountBalanceInterval -> AccountBalanceInterval
min :: AccountBalanceInterval
-> AccountBalanceInterval -> AccountBalanceInterval
Haskell.Ord)
deriving anyclass (DefinitionId
DefinitionId -> HasBlueprintDefinition AccountBalanceInterval
forall t. DefinitionId -> HasBlueprintDefinition t
$cdefinitionId :: DefinitionId
definitionId :: DefinitionId
HasBlueprintDefinition)
deriving ((forall ann. AccountBalanceInterval -> Doc ann)
-> (forall ann. [AccountBalanceInterval] -> Doc ann)
-> Pretty AccountBalanceInterval
forall ann. [AccountBalanceInterval] -> Doc ann
forall ann. AccountBalanceInterval -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. AccountBalanceInterval -> Doc ann
pretty :: forall ann. AccountBalanceInterval -> Doc ann
$cprettyList :: forall ann. [AccountBalanceInterval] -> Doc ann
prettyList :: forall ann. [AccountBalanceInterval] -> Doc ann
Pretty) via (PrettyShow AccountBalanceInterval)
PlutusTx.deriveEq ''AccountBalanceInterval
$(makeLift ''AccountBalanceInterval)
$( makeIsDataSchemaIndexed
''AccountBalanceInterval
[ ('AccountBalanceLowerBound, 0)
, ('AccountBalanceUpperBound, 1)
, ('AccountBalanceBothBounds, 2)
, ('AccountBalanceExact, 3)
]
)
newtype AccountBalanceIntervals = AccountBalanceIntervals (Map AccountId AccountBalanceInterval)
deriving stock ((forall x.
AccountBalanceIntervals -> Rep AccountBalanceIntervals x)
-> (forall x.
Rep AccountBalanceIntervals x -> AccountBalanceIntervals)
-> Generic AccountBalanceIntervals
forall x. Rep AccountBalanceIntervals x -> AccountBalanceIntervals
forall x. AccountBalanceIntervals -> Rep AccountBalanceIntervals x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. AccountBalanceIntervals -> Rep AccountBalanceIntervals x
from :: forall x. AccountBalanceIntervals -> Rep AccountBalanceIntervals x
$cto :: forall x. Rep AccountBalanceIntervals x -> AccountBalanceIntervals
to :: forall x. Rep AccountBalanceIntervals x -> AccountBalanceIntervals
Generic)
deriving anyclass (DefinitionId
DefinitionId -> HasBlueprintDefinition AccountBalanceIntervals
forall t. DefinitionId -> HasBlueprintDefinition t
$cdefinitionId :: DefinitionId
definitionId :: DefinitionId
HasBlueprintDefinition)
deriving ((forall ann. AccountBalanceIntervals -> Doc ann)
-> (forall ann. [AccountBalanceIntervals] -> Doc ann)
-> Pretty AccountBalanceIntervals
forall ann. [AccountBalanceIntervals] -> Doc ann
forall ann. AccountBalanceIntervals -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. AccountBalanceIntervals -> Doc ann
pretty :: forall ann. AccountBalanceIntervals -> Doc ann
$cprettyList :: forall ann. [AccountBalanceIntervals] -> Doc ann
prettyList :: forall ann. [AccountBalanceIntervals] -> Doc ann
Pretty) via (PrettyShow AccountBalanceIntervals)
deriving newtype
( AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
(AccountBalanceIntervals -> AccountBalanceIntervals -> Bool)
-> (AccountBalanceIntervals -> AccountBalanceIntervals -> Bool)
-> Eq AccountBalanceIntervals
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
== :: AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
$c/= :: AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
/= :: AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
Haskell.Eq
, Eq AccountBalanceIntervals
Eq AccountBalanceIntervals =>
(AccountBalanceIntervals -> AccountBalanceIntervals -> Ordering)
-> (AccountBalanceIntervals -> AccountBalanceIntervals -> Bool)
-> (AccountBalanceIntervals -> AccountBalanceIntervals -> Bool)
-> (AccountBalanceIntervals -> AccountBalanceIntervals -> Bool)
-> (AccountBalanceIntervals -> AccountBalanceIntervals -> Bool)
-> (AccountBalanceIntervals
-> AccountBalanceIntervals -> AccountBalanceIntervals)
-> (AccountBalanceIntervals
-> AccountBalanceIntervals -> AccountBalanceIntervals)
-> Ord AccountBalanceIntervals
AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
AccountBalanceIntervals -> AccountBalanceIntervals -> Ordering
AccountBalanceIntervals
-> AccountBalanceIntervals -> AccountBalanceIntervals
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 :: AccountBalanceIntervals -> AccountBalanceIntervals -> Ordering
compare :: AccountBalanceIntervals -> AccountBalanceIntervals -> Ordering
$c< :: AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
< :: AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
$c<= :: AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
<= :: AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
$c> :: AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
> :: AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
$c>= :: AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
>= :: AccountBalanceIntervals -> AccountBalanceIntervals -> Bool
$cmax :: AccountBalanceIntervals
-> AccountBalanceIntervals -> AccountBalanceIntervals
max :: AccountBalanceIntervals
-> AccountBalanceIntervals -> AccountBalanceIntervals
$cmin :: AccountBalanceIntervals
-> AccountBalanceIntervals -> AccountBalanceIntervals
min :: AccountBalanceIntervals
-> AccountBalanceIntervals -> AccountBalanceIntervals
Haskell.Ord
, Int -> AccountBalanceIntervals -> ShowS
[AccountBalanceIntervals] -> ShowS
AccountBalanceIntervals -> String
(Int -> AccountBalanceIntervals -> ShowS)
-> (AccountBalanceIntervals -> String)
-> ([AccountBalanceIntervals] -> ShowS)
-> Show AccountBalanceIntervals
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AccountBalanceIntervals -> ShowS
showsPrec :: Int -> AccountBalanceIntervals -> ShowS
$cshow :: AccountBalanceIntervals -> String
show :: AccountBalanceIntervals -> String
$cshowList :: [AccountBalanceIntervals] -> ShowS
showList :: [AccountBalanceIntervals] -> ShowS
Haskell.Show
, AccountBalanceIntervals -> BuiltinData
(AccountBalanceIntervals -> BuiltinData)
-> ToData AccountBalanceIntervals
forall a. (a -> BuiltinData) -> ToData a
$ctoBuiltinData :: AccountBalanceIntervals -> BuiltinData
toBuiltinData :: AccountBalanceIntervals -> BuiltinData
PlutusTx.ToData
, BuiltinData -> Maybe AccountBalanceIntervals
(BuiltinData -> Maybe AccountBalanceIntervals)
-> FromData AccountBalanceIntervals
forall a. (BuiltinData -> Maybe a) -> FromData a
$cfromBuiltinData :: BuiltinData -> Maybe AccountBalanceIntervals
fromBuiltinData :: BuiltinData -> Maybe AccountBalanceIntervals
PlutusTx.FromData
, BuiltinData -> AccountBalanceIntervals
(BuiltinData -> AccountBalanceIntervals)
-> UnsafeFromData AccountBalanceIntervals
forall a. (BuiltinData -> a) -> UnsafeFromData a
$cunsafeFromBuiltinData :: BuiltinData -> AccountBalanceIntervals
unsafeFromBuiltinData :: BuiltinData -> AccountBalanceIntervals
PlutusTx.UnsafeFromData
)
instance
( HasBlueprintSchema AccountId referencedTypes
, HasBlueprintSchema AccountBalanceInterval referencedTypes
)
=> HasBlueprintSchema AccountBalanceIntervals referencedTypes
where
schema :: Schema referencedTypes
schema =
forall t (referencedTypes :: [*]).
HasBlueprintSchema t referencedTypes =>
Schema referencedTypes
schema @(Map AccountId AccountBalanceInterval) @referencedTypes
Schema referencedTypes
-> (Schema referencedTypes -> Schema referencedTypes)
-> Schema referencedTypes
forall a b. a -> (a -> b) -> b
& (SchemaInfo -> SchemaInfo)
-> Schema referencedTypes -> Schema referencedTypes
forall (referencedTypes :: [*]).
(SchemaInfo -> SchemaInfo)
-> Schema referencedTypes -> Schema referencedTypes
withSchemaInfo \SchemaInfo
info -> SchemaInfo
info {title = Haskell.Just "AccountBalanceIntervals"}
data TxCert
= TxCertRegAccount AccountId V2.Lovelace
| TxCertUnRegAccount AccountId V2.Lovelace
| TxCertDelegAccount AccountId Delegatee
| TxCertRegAccountDeleg AccountId Delegatee V2.Lovelace
| TxCertRegDRep DRepCredential V2.Lovelace
| TxCertUpdateDRep DRepCredential
| TxCertUnRegDRep DRepCredential V2.Lovelace
| TxCertPoolRegister V2.PubKeyHash V2.PubKeyHash
| TxCertPoolRetire V2.PubKeyHash Haskell.Integer
| TxCertAuthHotCommittee ColdCommitteeCredential HotCommitteeCredential
| TxCertResignColdCommittee ColdCommitteeCredential
deriving stock ((forall x. TxCert -> Rep TxCert x)
-> (forall x. Rep TxCert x -> TxCert) -> Generic TxCert
forall x. Rep TxCert x -> TxCert
forall x. TxCert -> Rep TxCert x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. TxCert -> Rep TxCert x
from :: forall x. TxCert -> Rep TxCert x
$cto :: forall x. Rep TxCert x -> TxCert
to :: forall x. Rep TxCert x -> TxCert
Generic, Int -> TxCert -> ShowS
[TxCert] -> ShowS
TxCert -> String
(Int -> TxCert -> ShowS)
-> (TxCert -> String) -> ([TxCert] -> ShowS) -> Show TxCert
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TxCert -> ShowS
showsPrec :: Int -> TxCert -> ShowS
$cshow :: TxCert -> String
show :: TxCert -> String
$cshowList :: [TxCert] -> ShowS
showList :: [TxCert] -> ShowS
Haskell.Show, TxCert -> TxCert -> Bool
(TxCert -> TxCert -> Bool)
-> (TxCert -> TxCert -> Bool) -> Eq TxCert
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TxCert -> TxCert -> Bool
== :: TxCert -> TxCert -> Bool
$c/= :: TxCert -> TxCert -> Bool
/= :: TxCert -> TxCert -> Bool
Haskell.Eq, Eq TxCert
Eq TxCert =>
(TxCert -> TxCert -> Ordering)
-> (TxCert -> TxCert -> Bool)
-> (TxCert -> TxCert -> Bool)
-> (TxCert -> TxCert -> Bool)
-> (TxCert -> TxCert -> Bool)
-> (TxCert -> TxCert -> TxCert)
-> (TxCert -> TxCert -> TxCert)
-> Ord TxCert
TxCert -> TxCert -> Bool
TxCert -> TxCert -> Ordering
TxCert -> TxCert -> TxCert
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 :: TxCert -> TxCert -> Ordering
compare :: TxCert -> TxCert -> Ordering
$c< :: TxCert -> TxCert -> Bool
< :: TxCert -> TxCert -> Bool
$c<= :: TxCert -> TxCert -> Bool
<= :: TxCert -> TxCert -> Bool
$c> :: TxCert -> TxCert -> Bool
> :: TxCert -> TxCert -> Bool
$c>= :: TxCert -> TxCert -> Bool
>= :: TxCert -> TxCert -> Bool
$cmax :: TxCert -> TxCert -> TxCert
max :: TxCert -> TxCert -> TxCert
$cmin :: TxCert -> TxCert -> TxCert
min :: TxCert -> TxCert -> TxCert
Haskell.Ord)
deriving anyclass (DefinitionId
DefinitionId -> HasBlueprintDefinition TxCert
forall t. DefinitionId -> HasBlueprintDefinition t
$cdefinitionId :: DefinitionId
definitionId :: DefinitionId
HasBlueprintDefinition)
deriving ((forall ann. TxCert -> Doc ann)
-> (forall ann. [TxCert] -> Doc ann) -> Pretty TxCert
forall ann. [TxCert] -> Doc ann
forall ann. TxCert -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. TxCert -> Doc ann
pretty :: forall ann. TxCert -> Doc ann
$cprettyList :: forall ann. [TxCert] -> Doc ann
prettyList :: forall ann. [TxCert] -> Doc ann
Pretty) via (PrettyShow TxCert)
PlutusTx.deriveEq ''TxCert
data ScriptPurpose
= Minting V2.ScriptHash V2.CurrencySymbol
| Spending V2.ScriptHash V3.TxOutRef
| Withdrawing V2.ScriptHash V2.Credential
| Certifying V2.ScriptHash Haskell.Integer TxCert
| Voting V2.ScriptHash Voter
| Proposing V2.ScriptHash Haskell.Integer ProposalProcedure
| Guarding V2.ScriptHash Haskell.Integer
deriving stock ((forall x. ScriptPurpose -> Rep ScriptPurpose x)
-> (forall x. Rep ScriptPurpose x -> ScriptPurpose)
-> Generic ScriptPurpose
forall x. Rep ScriptPurpose x -> ScriptPurpose
forall x. ScriptPurpose -> Rep ScriptPurpose x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ScriptPurpose -> Rep ScriptPurpose x
from :: forall x. ScriptPurpose -> Rep ScriptPurpose x
$cto :: forall x. Rep ScriptPurpose x -> ScriptPurpose
to :: forall x. Rep ScriptPurpose x -> ScriptPurpose
Generic, Int -> ScriptPurpose -> ShowS
[ScriptPurpose] -> ShowS
ScriptPurpose -> String
(Int -> ScriptPurpose -> ShowS)
-> (ScriptPurpose -> String)
-> ([ScriptPurpose] -> ShowS)
-> Show ScriptPurpose
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ScriptPurpose -> ShowS
showsPrec :: Int -> ScriptPurpose -> ShowS
$cshow :: ScriptPurpose -> String
show :: ScriptPurpose -> String
$cshowList :: [ScriptPurpose] -> ShowS
showList :: [ScriptPurpose] -> ShowS
Haskell.Show, ScriptPurpose -> ScriptPurpose -> Bool
(ScriptPurpose -> ScriptPurpose -> Bool)
-> (ScriptPurpose -> ScriptPurpose -> Bool) -> Eq ScriptPurpose
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ScriptPurpose -> ScriptPurpose -> Bool
== :: ScriptPurpose -> ScriptPurpose -> Bool
$c/= :: ScriptPurpose -> ScriptPurpose -> Bool
/= :: ScriptPurpose -> ScriptPurpose -> Bool
Haskell.Eq, Eq ScriptPurpose
Eq ScriptPurpose =>
(ScriptPurpose -> ScriptPurpose -> Ordering)
-> (ScriptPurpose -> ScriptPurpose -> Bool)
-> (ScriptPurpose -> ScriptPurpose -> Bool)
-> (ScriptPurpose -> ScriptPurpose -> Bool)
-> (ScriptPurpose -> ScriptPurpose -> Bool)
-> (ScriptPurpose -> ScriptPurpose -> ScriptPurpose)
-> (ScriptPurpose -> ScriptPurpose -> ScriptPurpose)
-> Ord ScriptPurpose
ScriptPurpose -> ScriptPurpose -> Bool
ScriptPurpose -> ScriptPurpose -> Ordering
ScriptPurpose -> ScriptPurpose -> ScriptPurpose
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 :: ScriptPurpose -> ScriptPurpose -> Ordering
compare :: ScriptPurpose -> ScriptPurpose -> Ordering
$c< :: ScriptPurpose -> ScriptPurpose -> Bool
< :: ScriptPurpose -> ScriptPurpose -> Bool
$c<= :: ScriptPurpose -> ScriptPurpose -> Bool
<= :: ScriptPurpose -> ScriptPurpose -> Bool
$c> :: ScriptPurpose -> ScriptPurpose -> Bool
> :: ScriptPurpose -> ScriptPurpose -> Bool
$c>= :: ScriptPurpose -> ScriptPurpose -> Bool
>= :: ScriptPurpose -> ScriptPurpose -> Bool
$cmax :: ScriptPurpose -> ScriptPurpose -> ScriptPurpose
max :: ScriptPurpose -> ScriptPurpose -> ScriptPurpose
$cmin :: ScriptPurpose -> ScriptPurpose -> ScriptPurpose
min :: ScriptPurpose -> ScriptPurpose -> ScriptPurpose
Haskell.Ord)
deriving anyclass (DefinitionId
DefinitionId -> HasBlueprintDefinition ScriptPurpose
forall t. DefinitionId -> HasBlueprintDefinition t
$cdefinitionId :: DefinitionId
definitionId :: DefinitionId
HasBlueprintDefinition)
deriving ((forall ann. ScriptPurpose -> Doc ann)
-> (forall ann. [ScriptPurpose] -> Doc ann) -> Pretty ScriptPurpose
forall ann. [ScriptPurpose] -> Doc ann
forall ann. ScriptPurpose -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. ScriptPurpose -> Doc ann
pretty :: forall ann. ScriptPurpose -> Doc ann
$cprettyList :: forall ann. [ScriptPurpose] -> Doc ann
prettyList :: forall ann. [ScriptPurpose] -> Doc ann
Pretty) via (PrettyShow ScriptPurpose)
data TxInfo = TxInfo
{ TxInfo -> TxId
txInfoId :: V3.TxId
, TxInfo -> Maybe Integer
txInfoSubTxIx :: Haskell.Maybe Haskell.Integer
, TxInfo -> [TxInInfo]
txInfoInputs :: [TxInInfo]
, TxInfo -> [TxInInfo]
txInfoReferenceInputs :: [TxInInfo]
, TxInfo -> [TxOut]
txInfoOutputs :: [V2.TxOut]
, TxInfo -> Lovelace
txInfoFee :: V2.Lovelace
, TxInfo -> MintValue
txInfoMint :: V3.MintValue
, TxInfo -> [TxCert]
txInfoTxCerts :: [TxCert]
, TxInfo -> Map AccountId Lovelace
txInfoWithdrawals :: Map AccountId V2.Lovelace
, TxInfo -> Map AccountId Lovelace
txInfoDirectDeposits :: Map AccountId V2.Lovelace
, TxInfo -> AccountBalanceIntervals
txInfoAccountBalanceIntervals :: AccountBalanceIntervals
, TxInfo -> POSIXTimeRange
txInfoValidRange :: V2.POSIXTimeRange
, TxInfo -> [Credential]
txInfoGuards :: [V2.Credential]
, TxInfo -> Map Credential (Maybe Datum)
txInfoRequiredTopLevelGuards :: Map V2.Credential (Haskell.Maybe V2.Datum)
, TxInfo -> Map ScriptPurpose Redeemer
txInfoRedeemers :: Map ScriptPurpose V2.Redeemer
, TxInfo -> Map DatumHash Datum
txInfoData :: Map V2.DatumHash V2.Datum
, TxInfo -> Map Voter (Map GovernanceActionId Vote)
txInfoVotes :: Map Voter (Map GovernanceActionId Vote)
, TxInfo -> [ProposalProcedure]
txInfoProposalProcedures :: [ProposalProcedure]
, TxInfo -> Maybe Lovelace
txInfoCurrentTreasuryAmount :: Haskell.Maybe V2.Lovelace
, TxInfo -> Lovelace
txInfoTreasuryDonation :: V2.Lovelace
}
deriving stock ((forall x. TxInfo -> Rep TxInfo x)
-> (forall x. Rep TxInfo x -> TxInfo) -> Generic TxInfo
forall x. Rep TxInfo x -> TxInfo
forall x. TxInfo -> Rep TxInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. TxInfo -> Rep TxInfo x
from :: forall x. TxInfo -> Rep TxInfo x
$cto :: forall x. Rep TxInfo x -> TxInfo
to :: forall x. Rep TxInfo x -> TxInfo
Generic, Int -> TxInfo -> ShowS
[TxInfo] -> ShowS
TxInfo -> String
(Int -> TxInfo -> ShowS)
-> (TxInfo -> String) -> ([TxInfo] -> ShowS) -> Show TxInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TxInfo -> ShowS
showsPrec :: Int -> TxInfo -> ShowS
$cshow :: TxInfo -> String
show :: TxInfo -> String
$cshowList :: [TxInfo] -> ShowS
showList :: [TxInfo] -> ShowS
Haskell.Show, TxInfo -> TxInfo -> Bool
(TxInfo -> TxInfo -> Bool)
-> (TxInfo -> TxInfo -> Bool) -> Eq TxInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TxInfo -> TxInfo -> Bool
== :: TxInfo -> TxInfo -> Bool
$c/= :: TxInfo -> TxInfo -> Bool
/= :: TxInfo -> TxInfo -> Bool
Haskell.Eq)
deriving anyclass (DefinitionId
DefinitionId -> HasBlueprintDefinition TxInfo
forall t. DefinitionId -> HasBlueprintDefinition t
$cdefinitionId :: DefinitionId
definitionId :: DefinitionId
HasBlueprintDefinition)
instance Pretty TxInfo where
pretty :: forall ann. TxInfo -> Doc ann
pretty TxInfo {[Credential]
[TxOut]
[TxInInfo]
[ProposalProcedure]
[TxCert]
Maybe Integer
Maybe Lovelace
Map DatumHash Datum
Map Credential (Maybe Datum)
Map Voter (Map GovernanceActionId Vote)
Map AccountId Lovelace
Map ScriptPurpose Redeemer
POSIXTimeRange
TxId
Lovelace
MintValue
AccountBalanceIntervals
txInfoId :: TxInfo -> TxId
txInfoSubTxIx :: TxInfo -> Maybe Integer
txInfoInputs :: TxInfo -> [TxInInfo]
txInfoReferenceInputs :: TxInfo -> [TxInInfo]
txInfoOutputs :: TxInfo -> [TxOut]
txInfoFee :: TxInfo -> Lovelace
txInfoMint :: TxInfo -> MintValue
txInfoTxCerts :: TxInfo -> [TxCert]
txInfoWithdrawals :: TxInfo -> Map AccountId Lovelace
txInfoDirectDeposits :: TxInfo -> Map AccountId Lovelace
txInfoAccountBalanceIntervals :: TxInfo -> AccountBalanceIntervals
txInfoValidRange :: TxInfo -> POSIXTimeRange
txInfoGuards :: TxInfo -> [Credential]
txInfoRequiredTopLevelGuards :: TxInfo -> Map Credential (Maybe Datum)
txInfoRedeemers :: TxInfo -> Map ScriptPurpose Redeemer
txInfoData :: TxInfo -> Map DatumHash Datum
txInfoVotes :: TxInfo -> Map Voter (Map GovernanceActionId Vote)
txInfoProposalProcedures :: TxInfo -> [ProposalProcedure]
txInfoCurrentTreasuryAmount :: TxInfo -> Maybe Lovelace
txInfoTreasuryDonation :: TxInfo -> Lovelace
txInfoId :: TxId
txInfoSubTxIx :: Maybe Integer
txInfoInputs :: [TxInInfo]
txInfoReferenceInputs :: [TxInInfo]
txInfoOutputs :: [TxOut]
txInfoFee :: Lovelace
txInfoMint :: MintValue
txInfoTxCerts :: [TxCert]
txInfoWithdrawals :: Map AccountId Lovelace
txInfoDirectDeposits :: Map AccountId Lovelace
txInfoAccountBalanceIntervals :: AccountBalanceIntervals
txInfoValidRange :: POSIXTimeRange
txInfoGuards :: [Credential]
txInfoRequiredTopLevelGuards :: Map Credential (Maybe Datum)
txInfoRedeemers :: Map ScriptPurpose Redeemer
txInfoData :: Map DatumHash Datum
txInfoVotes :: Map Voter (Map GovernanceActionId Vote)
txInfoProposalProcedures :: [ProposalProcedure]
txInfoCurrentTreasuryAmount :: Maybe Lovelace
txInfoTreasuryDonation :: Lovelace
..} =
[Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep
[ Doc ann
"TxId:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> TxId -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. TxId -> Doc ann
pretty TxId
txInfoId
, Doc ann
"Sub-transaction index:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Maybe Integer -> Doc ann
forall ann. Maybe Integer -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty Maybe Integer
txInfoSubTxIx
, Doc ann
"Inputs:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> [TxInInfo] -> Doc ann
forall ann. [TxInInfo] -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty [TxInInfo]
txInfoInputs
, Doc ann
"Reference inputs:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> [TxInInfo] -> Doc ann
forall ann. [TxInInfo] -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty [TxInInfo]
txInfoReferenceInputs
, Doc ann
"Outputs:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> [TxOut] -> Doc ann
forall ann. [TxOut] -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty [TxOut]
txInfoOutputs
, Doc ann
"Fee:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Lovelace -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. Lovelace -> Doc ann
pretty Lovelace
txInfoFee
, Doc ann
"Value minted:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> MintValue -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. MintValue -> Doc ann
pretty MintValue
txInfoMint
, Doc ann
"TxCerts:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> [TxCert] -> Doc ann
forall ann. [TxCert] -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty [TxCert]
txInfoTxCerts
, Doc ann
"Withdrawals:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Map AccountId Lovelace -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. Map AccountId Lovelace -> Doc ann
pretty Map AccountId Lovelace
txInfoWithdrawals
, Doc ann
"Direct deposits:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Map AccountId Lovelace -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. Map AccountId Lovelace -> Doc ann
pretty Map AccountId Lovelace
txInfoDirectDeposits
, Doc ann
"Account balance intervals:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> AccountBalanceIntervals -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. AccountBalanceIntervals -> Doc ann
pretty AccountBalanceIntervals
txInfoAccountBalanceIntervals
, Doc ann
"Valid range:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> POSIXTimeRange -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. POSIXTimeRange -> Doc ann
pretty POSIXTimeRange
txInfoValidRange
, Doc ann
"Guards:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> [Credential] -> Doc ann
forall ann. [Credential] -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty [Credential]
txInfoGuards
, Doc ann
"Required top-level guards:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Map Credential (Maybe Datum) -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. Map Credential (Maybe Datum) -> Doc ann
pretty Map Credential (Maybe Datum)
txInfoRequiredTopLevelGuards
, Doc ann
"Redeemers:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Map ScriptPurpose Redeemer -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. Map ScriptPurpose Redeemer -> Doc ann
pretty Map ScriptPurpose Redeemer
txInfoRedeemers
, Doc ann
"Datums:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Map DatumHash Datum -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. Map DatumHash Datum -> Doc ann
pretty Map DatumHash Datum
txInfoData
, Doc ann
"Votes:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Map Voter (Map GovernanceActionId Vote) -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. Map Voter (Map GovernanceActionId Vote) -> Doc ann
pretty Map Voter (Map GovernanceActionId Vote)
txInfoVotes
, Doc ann
"Proposal procedures:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> [ProposalProcedure] -> Doc ann
forall ann. [ProposalProcedure] -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty [ProposalProcedure]
txInfoProposalProcedures
, Doc ann
"Current treasury amount:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Maybe Lovelace -> Doc ann
forall ann. Maybe Lovelace -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty Maybe Lovelace
txInfoCurrentTreasuryAmount
, Doc ann
"Treasury donation:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> Lovelace -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. Lovelace -> Doc ann
pretty Lovelace
txInfoTreasuryDonation
]
data TopTxInfoSimplified = TopTxInfoSimplified
{ TopTxInfoSimplified -> [TxId]
ttisIds :: [V3.TxId]
, TopTxInfoSimplified -> [TxInInfo]
ttisInputs :: [TxInInfo]
, TopTxInfoSimplified -> [TxInInfo]
ttisReferenceInputs :: [TxInInfo]
, TopTxInfoSimplified -> [TxOut]
ttisOutputs :: [V2.TxOut]
, TopTxInfoSimplified -> MintValue
ttisMints :: V3.MintValue
, TopTxInfoSimplified -> MintValue
ttisBurns :: V3.MintValue
, TopTxInfoSimplified -> [TxCert]
ttisTxCerts :: [TxCert]
, TopTxInfoSimplified -> Map AccountId Lovelace
ttisWithdrawals :: Map AccountId V2.Lovelace
, TopTxInfoSimplified -> Map AccountId Lovelace
ttisDirectDeposits :: Map AccountId V2.Lovelace
, TopTxInfoSimplified -> POSIXTimeRange
ttisValidRange :: V2.POSIXTimeRange
, TopTxInfoSimplified -> Map Credential ()
ttisGuards :: Map V2.Credential ()
, TopTxInfoSimplified -> Map ScriptPurpose ()
ttisScriptPurposes :: Map ScriptPurpose ()
, TopTxInfoSimplified -> Map DatumHash Datum
ttisData :: Map V2.DatumHash V2.Datum
, TopTxInfoSimplified -> Map Voter (Map GovernanceActionId Vote)
ttisVotes :: Map Voter (Map GovernanceActionId Vote)
, TopTxInfoSimplified -> [ProposalProcedure]
ttisProposalProcedures :: [ProposalProcedure]
, TopTxInfoSimplified -> Maybe Lovelace
ttisCurrentTreasuryAmount :: Haskell.Maybe V2.Lovelace
, TopTxInfoSimplified -> Lovelace
ttisTreasuryDonations :: V2.Lovelace
}
deriving stock ((forall x. TopTxInfoSimplified -> Rep TopTxInfoSimplified x)
-> (forall x. Rep TopTxInfoSimplified x -> TopTxInfoSimplified)
-> Generic TopTxInfoSimplified
forall x. Rep TopTxInfoSimplified x -> TopTxInfoSimplified
forall x. TopTxInfoSimplified -> Rep TopTxInfoSimplified x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. TopTxInfoSimplified -> Rep TopTxInfoSimplified x
from :: forall x. TopTxInfoSimplified -> Rep TopTxInfoSimplified x
$cto :: forall x. Rep TopTxInfoSimplified x -> TopTxInfoSimplified
to :: forall x. Rep TopTxInfoSimplified x -> TopTxInfoSimplified
Generic, Int -> TopTxInfoSimplified -> ShowS
[TopTxInfoSimplified] -> ShowS
TopTxInfoSimplified -> String
(Int -> TopTxInfoSimplified -> ShowS)
-> (TopTxInfoSimplified -> String)
-> ([TopTxInfoSimplified] -> ShowS)
-> Show TopTxInfoSimplified
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TopTxInfoSimplified -> ShowS
showsPrec :: Int -> TopTxInfoSimplified -> ShowS
$cshow :: TopTxInfoSimplified -> String
show :: TopTxInfoSimplified -> String
$cshowList :: [TopTxInfoSimplified] -> ShowS
showList :: [TopTxInfoSimplified] -> ShowS
Haskell.Show, TopTxInfoSimplified -> TopTxInfoSimplified -> Bool
(TopTxInfoSimplified -> TopTxInfoSimplified -> Bool)
-> (TopTxInfoSimplified -> TopTxInfoSimplified -> Bool)
-> Eq TopTxInfoSimplified
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TopTxInfoSimplified -> TopTxInfoSimplified -> Bool
== :: TopTxInfoSimplified -> TopTxInfoSimplified -> Bool
$c/= :: TopTxInfoSimplified -> TopTxInfoSimplified -> Bool
/= :: TopTxInfoSimplified -> TopTxInfoSimplified -> Bool
Haskell.Eq)
deriving anyclass (DefinitionId
DefinitionId -> HasBlueprintDefinition TopTxInfoSimplified
forall t. DefinitionId -> HasBlueprintDefinition t
$cdefinitionId :: DefinitionId
definitionId :: DefinitionId
HasBlueprintDefinition)
deriving ((forall ann. TopTxInfoSimplified -> Doc ann)
-> (forall ann. [TopTxInfoSimplified] -> Doc ann)
-> Pretty TopTxInfoSimplified
forall ann. [TopTxInfoSimplified] -> Doc ann
forall ann. TopTxInfoSimplified -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. TopTxInfoSimplified -> Doc ann
pretty :: forall ann. TopTxInfoSimplified -> Doc ann
$cprettyList :: forall ann. [TopTxInfoSimplified] -> Doc ann
prettyList :: forall ann. [TopTxInfoSimplified] -> Doc ann
Pretty) via (PrettyShow TopTxInfoSimplified)
data TopTxInfo = TopTxInfo
{ TopTxInfo -> [TxInfo]
topTxInfoSubTransactions :: [TxInfo]
, TopTxInfo -> Map Integer Datum
topTxInfoDatums :: Map Haskell.Integer V2.Datum
, TopTxInfo -> AccountBalanceIntervals
topTxInfoStartingBalanceIntervals :: AccountBalanceIntervals
, TopTxInfo -> TopTxInfoSimplified
topTxInfoSimplified :: TopTxInfoSimplified
}
deriving stock ((forall x. TopTxInfo -> Rep TopTxInfo x)
-> (forall x. Rep TopTxInfo x -> TopTxInfo) -> Generic TopTxInfo
forall x. Rep TopTxInfo x -> TopTxInfo
forall x. TopTxInfo -> Rep TopTxInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. TopTxInfo -> Rep TopTxInfo x
from :: forall x. TopTxInfo -> Rep TopTxInfo x
$cto :: forall x. Rep TopTxInfo x -> TopTxInfo
to :: forall x. Rep TopTxInfo x -> TopTxInfo
Generic, Int -> TopTxInfo -> ShowS
[TopTxInfo] -> ShowS
TopTxInfo -> String
(Int -> TopTxInfo -> ShowS)
-> (TopTxInfo -> String)
-> ([TopTxInfo] -> ShowS)
-> Show TopTxInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TopTxInfo -> ShowS
showsPrec :: Int -> TopTxInfo -> ShowS
$cshow :: TopTxInfo -> String
show :: TopTxInfo -> String
$cshowList :: [TopTxInfo] -> ShowS
showList :: [TopTxInfo] -> ShowS
Haskell.Show, TopTxInfo -> TopTxInfo -> Bool
(TopTxInfo -> TopTxInfo -> Bool)
-> (TopTxInfo -> TopTxInfo -> Bool) -> Eq TopTxInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TopTxInfo -> TopTxInfo -> Bool
== :: TopTxInfo -> TopTxInfo -> Bool
$c/= :: TopTxInfo -> TopTxInfo -> Bool
/= :: TopTxInfo -> TopTxInfo -> Bool
Haskell.Eq)
deriving anyclass (DefinitionId
DefinitionId -> HasBlueprintDefinition TopTxInfo
forall t. DefinitionId -> HasBlueprintDefinition t
$cdefinitionId :: DefinitionId
definitionId :: DefinitionId
HasBlueprintDefinition)
deriving ((forall ann. TopTxInfo -> Doc ann)
-> (forall ann. [TopTxInfo] -> Doc ann) -> Pretty TopTxInfo
forall ann. [TopTxInfo] -> Doc ann
forall ann. TopTxInfo -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. TopTxInfo -> Doc ann
pretty :: forall ann. TopTxInfo -> Doc ann
$cprettyList :: forall ann. [TopTxInfo] -> Doc ann
prettyList :: forall ann. [TopTxInfo] -> Doc ann
Pretty) via (PrettyShow TopTxInfo)
data ScriptInfo
= MintingScript V2.CurrencySymbol
| SpendingScript V3.TxOutRef (Haskell.Maybe V2.Datum)
| WithdrawingScript AccountId
| CertifyingScript Haskell.Integer TxCert
| VotingScript Voter
| ProposingScript Haskell.Integer ProposalProcedure
| GuardingScript Haskell.Integer (Haskell.Maybe TopTxInfo)
deriving stock ((forall x. ScriptInfo -> Rep ScriptInfo x)
-> (forall x. Rep ScriptInfo x -> ScriptInfo) -> Generic ScriptInfo
forall x. Rep ScriptInfo x -> ScriptInfo
forall x. ScriptInfo -> Rep ScriptInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ScriptInfo -> Rep ScriptInfo x
from :: forall x. ScriptInfo -> Rep ScriptInfo x
$cto :: forall x. Rep ScriptInfo x -> ScriptInfo
to :: forall x. Rep ScriptInfo x -> ScriptInfo
Generic, Int -> ScriptInfo -> ShowS
[ScriptInfo] -> ShowS
ScriptInfo -> String
(Int -> ScriptInfo -> ShowS)
-> (ScriptInfo -> String)
-> ([ScriptInfo] -> ShowS)
-> Show ScriptInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ScriptInfo -> ShowS
showsPrec :: Int -> ScriptInfo -> ShowS
$cshow :: ScriptInfo -> String
show :: ScriptInfo -> String
$cshowList :: [ScriptInfo] -> ShowS
showList :: [ScriptInfo] -> ShowS
Haskell.Show, ScriptInfo -> ScriptInfo -> Bool
(ScriptInfo -> ScriptInfo -> Bool)
-> (ScriptInfo -> ScriptInfo -> Bool) -> Eq ScriptInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ScriptInfo -> ScriptInfo -> Bool
== :: ScriptInfo -> ScriptInfo -> Bool
$c/= :: ScriptInfo -> ScriptInfo -> Bool
/= :: ScriptInfo -> ScriptInfo -> Bool
Haskell.Eq)
deriving anyclass (DefinitionId
DefinitionId -> HasBlueprintDefinition ScriptInfo
forall t. DefinitionId -> HasBlueprintDefinition t
$cdefinitionId :: DefinitionId
definitionId :: DefinitionId
HasBlueprintDefinition)
deriving ((forall ann. ScriptInfo -> Doc ann)
-> (forall ann. [ScriptInfo] -> Doc ann) -> Pretty ScriptInfo
forall ann. [ScriptInfo] -> Doc ann
forall ann. ScriptInfo -> Doc ann
forall a.
(forall ann. a -> Doc ann)
-> (forall ann. [a] -> Doc ann) -> Pretty a
$cpretty :: forall ann. ScriptInfo -> Doc ann
pretty :: forall ann. ScriptInfo -> Doc ann
$cprettyList :: forall ann. [ScriptInfo] -> Doc ann
prettyList :: forall ann. [ScriptInfo] -> Doc ann
Pretty) via (PrettyShow ScriptInfo)
data ScriptContext = ScriptContext
{ ScriptContext -> TxInfo
scriptContextTxInfo :: TxInfo
, ScriptContext -> Redeemer
scriptContextRedeemer :: V2.Redeemer
, ScriptContext -> ScriptInfo
scriptContextScriptInfo :: ScriptInfo
, ScriptContext -> ScriptHash
scriptContextScriptHash :: V2.ScriptHash
}
deriving stock ((forall x. ScriptContext -> Rep ScriptContext x)
-> (forall x. Rep ScriptContext x -> ScriptContext)
-> Generic ScriptContext
forall x. Rep ScriptContext x -> ScriptContext
forall x. ScriptContext -> Rep ScriptContext x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ScriptContext -> Rep ScriptContext x
from :: forall x. ScriptContext -> Rep ScriptContext x
$cto :: forall x. Rep ScriptContext x -> ScriptContext
to :: forall x. Rep ScriptContext x -> ScriptContext
Generic, ScriptContext -> ScriptContext -> Bool
(ScriptContext -> ScriptContext -> Bool)
-> (ScriptContext -> ScriptContext -> Bool) -> Eq ScriptContext
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ScriptContext -> ScriptContext -> Bool
== :: ScriptContext -> ScriptContext -> Bool
$c/= :: ScriptContext -> ScriptContext -> Bool
/= :: ScriptContext -> ScriptContext -> Bool
Haskell.Eq, Int -> ScriptContext -> ShowS
[ScriptContext] -> ShowS
ScriptContext -> String
(Int -> ScriptContext -> ShowS)
-> (ScriptContext -> String)
-> ([ScriptContext] -> ShowS)
-> Show ScriptContext
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ScriptContext -> ShowS
showsPrec :: Int -> ScriptContext -> ShowS
$cshow :: ScriptContext -> String
show :: ScriptContext -> String
$cshowList :: [ScriptContext] -> ShowS
showList :: [ScriptContext] -> ShowS
Haskell.Show)
deriving anyclass (DefinitionId
DefinitionId -> HasBlueprintDefinition ScriptContext
forall t. DefinitionId -> HasBlueprintDefinition t
$cdefinitionId :: DefinitionId
definitionId :: DefinitionId
HasBlueprintDefinition)
instance Pretty ScriptContext where
pretty :: forall ann. ScriptContext -> Doc ann
pretty ScriptContext {ScriptHash
Redeemer
ScriptInfo
TxInfo
scriptContextTxInfo :: ScriptContext -> TxInfo
scriptContextRedeemer :: ScriptContext -> Redeemer
scriptContextScriptInfo :: ScriptContext -> ScriptInfo
scriptContextScriptHash :: ScriptContext -> ScriptHash
scriptContextTxInfo :: TxInfo
scriptContextRedeemer :: Redeemer
scriptContextScriptInfo :: ScriptInfo
scriptContextScriptHash :: ScriptHash
..} =
[Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep
[ Doc ann
"ScriptInfo:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> ScriptInfo -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. ScriptInfo -> Doc ann
pretty ScriptInfo
scriptContextScriptInfo
, Doc ann
"ScriptHash:" Doc ann -> Doc ann -> Doc ann
forall ann. Doc ann -> Doc ann -> Doc ann
<+> ScriptHash -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. ScriptHash -> Doc ann
pretty ScriptHash
scriptContextScriptHash
, Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
nest Int
2 ([Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep [Doc ann
"TxInfo:", TxInfo -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. TxInfo -> Doc ann
pretty TxInfo
scriptContextTxInfo])
, Int -> Doc ann -> Doc ann
forall ann. Int -> Doc ann -> Doc ann
nest Int
2 ([Doc ann] -> Doc ann
forall ann. [Doc ann] -> Doc ann
vsep [Doc ann
"Redeemer:", Redeemer -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. Redeemer -> Doc ann
pretty Redeemer
scriptContextRedeemer])
]
findOwnInput :: ScriptContext -> Haskell.Maybe TxInInfo
findOwnInput :: ScriptContext -> Maybe TxInInfo
findOwnInput
ScriptContext
{ scriptContextTxInfo :: ScriptContext -> TxInfo
scriptContextTxInfo = TxInfo {[TxInInfo]
txInfoInputs :: TxInfo -> [TxInInfo]
txInfoInputs :: [TxInInfo]
txInfoInputs}
, scriptContextScriptInfo :: ScriptContext -> ScriptInfo
scriptContextScriptInfo = SpendingScript TxOutRef
txOutRef Maybe Datum
_
} =
(TxInInfo -> Bool) -> [TxInInfo] -> Maybe TxInInfo
forall a. (a -> Bool) -> [a] -> Maybe a
List.find
(\TxInInfo {TxOutRef
txInInfoOutRef :: TxOutRef
txInInfoOutRef :: TxInInfo -> TxOutRef
txInInfoOutRef} -> TxOutRef
txInInfoOutRef TxOutRef -> TxOutRef -> Bool
forall a. Eq a => a -> a -> Bool
PlutusTx.== TxOutRef
txOutRef)
[TxInInfo]
txInfoInputs
findOwnInput ScriptContext
_ = Maybe TxInInfo
forall a. Maybe a
Haskell.Nothing
{-# INLINEABLE findOwnInput #-}
findDatum :: V2.DatumHash -> TxInfo -> Haskell.Maybe V2.Datum
findDatum :: DatumHash -> TxInfo -> Maybe Datum
findDatum DatumHash
dsh TxInfo {Map DatumHash Datum
txInfoData :: TxInfo -> Map DatumHash Datum
txInfoData :: Map DatumHash Datum
txInfoData} = DatumHash -> Map DatumHash Datum -> Maybe Datum
forall k v. Eq k => k -> Map k v -> Maybe v
lookup DatumHash
dsh Map DatumHash Datum
txInfoData
{-# INLINEABLE findDatum #-}
findDatumHash :: V2.Datum -> TxInfo -> Haskell.Maybe V2.DatumHash
findDatumHash :: Datum -> TxInfo -> Maybe DatumHash
findDatumHash Datum
ds TxInfo {Map DatumHash Datum
txInfoData :: TxInfo -> Map DatumHash Datum
txInfoData :: Map DatumHash Datum
txInfoData} =
(DatumHash, Datum) -> DatumHash
forall a b. (a, b) -> a
PlutusTx.fst ((DatumHash, Datum) -> DatumHash)
-> Maybe (DatumHash, Datum) -> Maybe DatumHash
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
PlutusTx.<$> ((DatumHash, Datum) -> Bool)
-> [(DatumHash, Datum)] -> Maybe (DatumHash, Datum)
forall a. (a -> Bool) -> [a] -> Maybe a
List.find (\(DatumHash
_, Datum
ds') -> Datum
ds' Datum -> Datum -> Bool
forall a. Eq a => a -> a -> Bool
PlutusTx.== Datum
ds) (Map DatumHash Datum -> [(DatumHash, Datum)]
forall k v. Map k v -> [(k, v)]
toList Map DatumHash Datum
txInfoData)
{-# INLINEABLE findDatumHash #-}
findTxInByTxOutRef :: V3.TxOutRef -> TxInfo -> Haskell.Maybe TxInInfo
findTxInByTxOutRef :: TxOutRef -> TxInfo -> Maybe TxInInfo
findTxInByTxOutRef TxOutRef
outRef TxInfo {[TxInInfo]
txInfoInputs :: TxInfo -> [TxInInfo]
txInfoInputs :: [TxInInfo]
txInfoInputs} =
(TxInInfo -> Bool) -> [TxInInfo] -> Maybe TxInInfo
forall a. (a -> Bool) -> [a] -> Maybe a
List.find
(\TxInInfo {TxOutRef
txInInfoOutRef :: TxInInfo -> TxOutRef
txInInfoOutRef :: TxOutRef
txInInfoOutRef} -> TxOutRef
txInInfoOutRef TxOutRef -> TxOutRef -> Bool
forall a. Eq a => a -> a -> Bool
PlutusTx.== TxOutRef
outRef)
[TxInInfo]
txInfoInputs
{-# INLINEABLE findTxInByTxOutRef #-}
findContinuingOutputs :: ScriptContext -> [Haskell.Integer]
findContinuingOutputs :: ScriptContext -> [Integer]
findContinuingOutputs ScriptContext
ctx
| Haskell.Just TxInInfo {txInInfoResolved :: TxInInfo -> TxOut
txInInfoResolved = V2.TxOut {Address
txOutAddress :: Address
txOutAddress :: TxOut -> Address
txOutAddress}} <- ScriptContext -> Maybe TxInInfo
findOwnInput ScriptContext
ctx =
(TxOut -> Bool) -> [TxOut] -> [Integer]
forall a. (a -> Bool) -> [a] -> [Integer]
List.findIndices
(\V2.TxOut {txOutAddress :: TxOut -> Address
txOutAddress = Address
otherAddress} -> Address
txOutAddress Address -> Address -> Bool
forall a. Eq a => a -> a -> Bool
PlutusTx.== Address
otherAddress)
(TxInfo -> [TxOut]
txInfoOutputs (ScriptContext -> TxInfo
scriptContextTxInfo ScriptContext
ctx))
findContinuingOutputs ScriptContext
_ = BuiltinString -> [Integer]
forall a. BuiltinString -> a
PlutusTx.traceError BuiltinString
"Le"
{-# INLINEABLE findContinuingOutputs #-}
getContinuingOutputs :: ScriptContext -> [V2.TxOut]
getContinuingOutputs :: ScriptContext -> [TxOut]
getContinuingOutputs ScriptContext
ctx
| Haskell.Just TxInInfo {txInInfoResolved :: TxInInfo -> TxOut
txInInfoResolved = V2.TxOut {Address
txOutAddress :: TxOut -> Address
txOutAddress :: Address
txOutAddress}} <- ScriptContext -> Maybe TxInInfo
findOwnInput ScriptContext
ctx =
(TxOut -> Bool) -> [TxOut] -> [TxOut]
forall a. (a -> Bool) -> [a] -> [a]
List.filter
(\V2.TxOut {txOutAddress :: TxOut -> Address
txOutAddress = Address
otherAddress} -> Address
txOutAddress Address -> Address -> Bool
forall a. Eq a => a -> a -> Bool
PlutusTx.== Address
otherAddress)
(TxInfo -> [TxOut]
txInfoOutputs (ScriptContext -> TxInfo
scriptContextTxInfo ScriptContext
ctx))
getContinuingOutputs ScriptContext
_ = BuiltinString -> [TxOut]
forall a. BuiltinString -> a
PlutusTx.traceError BuiltinString
"Lf"
{-# INLINEABLE getContinuingOutputs #-}
txSignedBy :: TxInfo -> V2.PubKeyHash -> Haskell.Bool
txSignedBy :: TxInfo -> PubKeyHash -> Bool
txSignedBy TxInfo {[Credential]
txInfoGuards :: TxInfo -> [Credential]
txInfoGuards :: [Credential]
txInfoGuards} PubKeyHash
keyHash =
(Credential -> Bool) -> [Credential] -> Bool
forall a. (a -> Bool) -> [a] -> Bool
List.any (Credential -> Credential -> Bool
forall a. Eq a => a -> a -> Bool
(PlutusTx.==) (PubKeyHash -> Credential
V2.PubKeyCredential PubKeyHash
keyHash)) [Credential]
txInfoGuards
{-# INLINEABLE txSignedBy #-}
pubKeyOutputsAt :: V2.PubKeyHash -> TxInfo -> [V2.Value]
pubKeyOutputsAt :: PubKeyHash -> TxInfo -> [Value]
pubKeyOutputsAt PubKeyHash
pk TxInfo
txInfo =
let atPubKey :: TxOut -> Maybe Value
atPubKey V2.TxOut {txOutAddress :: TxOut -> Address
txOutAddress = V2.Address (V2.PubKeyCredential PubKeyHash
pk') Maybe StakingCredential
_, Value
txOutValue :: Value
txOutValue :: TxOut -> Value
txOutValue}
| PubKeyHash
pk PubKeyHash -> PubKeyHash -> Bool
forall a. Eq a => a -> a -> Bool
PlutusTx.== PubKeyHash
pk' = Value -> Maybe Value
forall a. a -> Maybe a
Haskell.Just Value
txOutValue
atPubKey TxOut
_ = Maybe Value
forall a. Maybe a
Haskell.Nothing
in (TxOut -> Maybe Value) -> [TxOut] -> [Value]
forall a b. (a -> Maybe b) -> [a] -> [b]
PlutusTx.mapMaybe TxOut -> Maybe Value
atPubKey (TxInfo -> [TxOut]
txInfoOutputs TxInfo
txInfo)
{-# INLINEABLE pubKeyOutputsAt #-}
valuePaidTo :: TxInfo -> V2.PubKeyHash -> V2.Value
valuePaidTo :: TxInfo -> PubKeyHash -> Value
valuePaidTo TxInfo
txInfo PubKeyHash
keyHash = [Value] -> Value
forall a. Monoid a => [a] -> a
PlutusTx.mconcat (PubKeyHash -> TxInfo -> [Value]
pubKeyOutputsAt PubKeyHash
keyHash TxInfo
txInfo)
{-# INLINEABLE valuePaidTo #-}
valueSpent :: TxInfo -> V2.Value
valueSpent :: TxInfo -> Value
valueSpent = (TxInInfo -> Value) -> [TxInInfo] -> Value
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
F.foldMap (TxOut -> Value
V2.txOutValue (TxOut -> Value) -> (TxInInfo -> TxOut) -> TxInInfo -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
PlutusTx.. TxInInfo -> TxOut
txInInfoResolved) ([TxInInfo] -> Value) -> (TxInfo -> [TxInInfo]) -> TxInfo -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
PlutusTx.. TxInfo -> [TxInInfo]
txInfoInputs
{-# INLINEABLE valueSpent #-}
valueProduced :: TxInfo -> V2.Value
valueProduced :: TxInfo -> Value
valueProduced = (TxOut -> Value) -> [TxOut] -> Value
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
F.foldMap TxOut -> Value
V2.txOutValue ([TxOut] -> Value) -> (TxInfo -> [TxOut]) -> TxInfo -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
PlutusTx.. TxInfo -> [TxOut]
txInfoOutputs
{-# INLINEABLE valueProduced #-}
ownCurrencySymbol :: ScriptContext -> V2.CurrencySymbol
ownCurrencySymbol :: ScriptContext -> CurrencySymbol
ownCurrencySymbol ScriptContext {scriptContextScriptInfo :: ScriptContext -> ScriptInfo
scriptContextScriptInfo = MintingScript CurrencySymbol
currencySymbol} = CurrencySymbol
currencySymbol
ownCurrencySymbol ScriptContext
_ = BuiltinString -> CurrencySymbol
forall a. BuiltinString -> a
PlutusTx.traceError BuiltinString
"Lh"
{-# INLINEABLE ownCurrencySymbol #-}
spendsOutput :: TxInfo -> V3.TxId -> Haskell.Integer -> Haskell.Bool
spendsOutput :: TxInfo -> TxId -> Integer -> Bool
spendsOutput TxInfo
txInfo TxId
txId Integer
outputIndex =
(TxInInfo -> Bool) -> [TxInInfo] -> Bool
forall a. (a -> Bool) -> [a] -> Bool
List.any
( \TxInInfo {txInInfoOutRef :: TxInInfo -> TxOutRef
txInInfoOutRef = V3.TxOutRef TxId
refId Integer
refIndex} ->
TxId
txId TxId -> TxId -> Bool
forall a. Eq a => a -> a -> Bool
PlutusTx.== TxId
refId Bool -> Bool -> Bool
PlutusTx.&& Integer
outputIndex Integer -> Integer -> Bool
forall a. Eq a => a -> a -> Bool
PlutusTx.== Integer
refIndex
)
(TxInfo -> [TxInInfo]
txInfoInputs TxInfo
txInfo)
{-# INLINEABLE spendsOutput #-}
$(makeLift ''AccountId)
$(makeLift ''AccountBalanceIntervals)
$(makeLift ''TxCert)
$( makeIsDataSchemaIndexed
''TxCert
[ ('TxCertRegAccount, 0)
, ('TxCertUnRegAccount, 1)
, ('TxCertDelegAccount, 2)
, ('TxCertRegAccountDeleg, 3)
, ('TxCertRegDRep, 4)
, ('TxCertUpdateDRep, 5)
, ('TxCertUnRegDRep, 6)
, ('TxCertPoolRegister, 7)
, ('TxCertPoolRetire, 8)
, ('TxCertAuthHotCommittee, 9)
, ('TxCertResignColdCommittee, 10)
]
)
$(makeLift ''ScriptPurpose)
$( makeIsDataSchemaIndexed
''ScriptPurpose
[ ('Minting, 0)
, ('Spending, 1)
, ('Withdrawing, 2)
, ('Certifying, 3)
, ('Voting, 4)
, ('Proposing, 5)
, ('Guarding, 6)
]
)
$(makeLift ''TxInfo)
$(makeIsDataSchemaIndexed ''TxInfo [('TxInfo, 0)])
$(makeLift ''TopTxInfoSimplified)
$(makeIsDataSchemaIndexed ''TopTxInfoSimplified [('TopTxInfoSimplified, 0)])
$(makeLift ''TopTxInfo)
$(makeIsDataSchemaIndexed ''TopTxInfo [('TopTxInfo, 0)])
$(makeLift ''ScriptInfo)
$( makeIsDataSchemaIndexed
''ScriptInfo
[ ('MintingScript, 0)
, ('SpendingScript, 1)
, ('WithdrawingScript, 2)
, ('CertifyingScript, 3)
, ('VotingScript, 4)
, ('ProposingScript, 5)
, ('GuardingScript, 6)
]
)
$(makeLift ''ScriptContext)
$(makeIsDataSchemaIndexed ''ScriptContext [('ScriptContext, 0)])