module Cooked.Skeleton.Proposal
( TxParameterChange (..),
TxGovAction (..),
TxSkelProposal (..),
txSkelProposalAddressL,
txSkelProposalActionL,
txSkelProposalWitnessL,
txSkelProposalAnchorL,
simpleTxSkelProposal,
withWitness,
withAnchor,
)
where
import Cooked.Conversion
import Cooked.Skeleton.Redeemer as X
import Data.Map (Map)
import Optics.TH
import Plutus.Script.Utils.Scripts qualified as Script
import PlutusLedgerApi.V3 qualified as Api
import PlutusTx.Prelude qualified as PlutusTx
data TxParameterChange where
FeePerByte :: Integer -> TxParameterChange
FeeFixed :: Integer -> TxParameterChange
MaxBlockBodySize :: Integer -> TxParameterChange
MaxTxSize :: Integer -> TxParameterChange
:: Integer -> TxParameterChange
KeyDeposit :: Integer -> TxParameterChange
PoolDeposit :: Integer -> TxParameterChange
PoolRetirementMaxEpoch :: Integer -> TxParameterChange
PoolNumber :: Integer -> TxParameterChange
PoolInfluence :: Rational -> TxParameterChange
MonetaryExpansion :: Rational -> TxParameterChange
TreasuryCut :: Rational -> TxParameterChange
MinPoolCost :: Integer -> TxParameterChange
CoinsPerUTxOByte :: Integer -> TxParameterChange
CostModels ::
{ TxParameterChange -> [Integer]
cmPlutusV1Costs :: [Integer],
TxParameterChange -> [Integer]
cmPlutusV2Costs :: [Integer],
TxParameterChange -> [Integer]
cmPlutusV3Costs :: [Integer]
} ->
TxParameterChange
Prices ::
{ TxParameterChange -> Rational
pMemoryCost :: Rational,
TxParameterChange -> Rational
pStepCost :: Rational
} ->
TxParameterChange
MaxTxExUnits ::
{ TxParameterChange -> Integer
mteuMemory :: Integer,
TxParameterChange -> Integer
mteuSteps :: Integer
} ->
TxParameterChange
MaxBlockExUnits ::
{ TxParameterChange -> Integer
mbeuMemory :: Integer,
TxParameterChange -> Integer
mbeuSteps :: Integer
} ->
TxParameterChange
MaxValSize :: Integer -> TxParameterChange
CollateralPercentage :: Integer -> TxParameterChange
MaxCollateralInputs :: Integer -> TxParameterChange
PoolVotingThresholds ::
{ TxParameterChange -> Rational
pvtMotionNoConfidence :: Rational,
TxParameterChange -> Rational
pvtCommitteeNormal :: Rational,
TxParameterChange -> Rational
pvtCommitteeNoConfidence :: Rational,
TxParameterChange -> Rational
pvtHardFork :: Rational,
TxParameterChange -> Rational
pvtSecurityGroup :: Rational
} ->
TxParameterChange
DRepVotingThresholds ::
{ TxParameterChange -> Rational
drvtMotionNoConfidence :: Rational,
TxParameterChange -> Rational
drvtCommitteeNormal :: Rational,
TxParameterChange -> Rational
drvtCommitteeNoConfidence :: Rational,
TxParameterChange -> Rational
drvtUpdateConstitution :: Rational,
TxParameterChange -> Rational
drvtHardForkInitialization :: Rational,
TxParameterChange -> Rational
drvtNetworkGroup :: Rational,
TxParameterChange -> Rational
drvtEconomicGroup :: Rational,
TxParameterChange -> Rational
drvtTechnicalGroup :: Rational,
TxParameterChange -> Rational
drvtGovernanceGroup :: Rational,
TxParameterChange -> Rational
drvtTreasuryWithdrawal :: Rational
} ->
TxParameterChange
CommitteeMinSize :: Integer -> TxParameterChange
CommitteeMaxTermLength :: Integer -> TxParameterChange
GovActionLifetime :: Integer -> TxParameterChange
GovActionDeposit :: Integer -> TxParameterChange
DRepRegistrationDeposit :: Integer -> TxParameterChange
DRepActivity :: Integer -> TxParameterChange
deriving (Int -> TxParameterChange -> ShowS
[TxParameterChange] -> ShowS
TxParameterChange -> String
(Int -> TxParameterChange -> ShowS)
-> (TxParameterChange -> String)
-> ([TxParameterChange] -> ShowS)
-> Show TxParameterChange
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TxParameterChange -> ShowS
showsPrec :: Int -> TxParameterChange -> ShowS
$cshow :: TxParameterChange -> String
show :: TxParameterChange -> String
$cshowList :: [TxParameterChange] -> ShowS
showList :: [TxParameterChange] -> ShowS
Show, TxParameterChange -> TxParameterChange -> Bool
(TxParameterChange -> TxParameterChange -> Bool)
-> (TxParameterChange -> TxParameterChange -> Bool)
-> Eq TxParameterChange
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TxParameterChange -> TxParameterChange -> Bool
== :: TxParameterChange -> TxParameterChange -> Bool
$c/= :: TxParameterChange -> TxParameterChange -> Bool
/= :: TxParameterChange -> TxParameterChange -> Bool
Eq)
data TxGovAction where
TxGovActionParameterChange :: [TxParameterChange] -> TxGovAction
TxGovActionHardForkInitiation :: Api.ProtocolVersion -> TxGovAction
TxGovActionTreasuryWithdrawals :: Map Api.Credential Api.Lovelace -> TxGovAction
TxGovActionNoConfidence :: TxGovAction
TxGovActionUpdateCommittee :: [Api.ColdCommitteeCredential] -> Map Api.ColdCommitteeCredential Integer -> PlutusTx.Rational -> TxGovAction
TxGovActionNewConstitution :: Api.Constitution -> TxGovAction
deriving (Int -> TxGovAction -> ShowS
[TxGovAction] -> ShowS
TxGovAction -> String
(Int -> TxGovAction -> ShowS)
-> (TxGovAction -> String)
-> ([TxGovAction] -> ShowS)
-> Show TxGovAction
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TxGovAction -> ShowS
showsPrec :: Int -> TxGovAction -> ShowS
$cshow :: TxGovAction -> String
show :: TxGovAction -> String
$cshowList :: [TxGovAction] -> ShowS
showList :: [TxGovAction] -> ShowS
Show, TxGovAction -> TxGovAction -> Bool
(TxGovAction -> TxGovAction -> Bool)
-> (TxGovAction -> TxGovAction -> Bool) -> Eq TxGovAction
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TxGovAction -> TxGovAction -> Bool
== :: TxGovAction -> TxGovAction -> Bool
$c/= :: TxGovAction -> TxGovAction -> Bool
/= :: TxGovAction -> TxGovAction -> Bool
Eq)
data TxSkelProposal where
TxSkelProposal ::
{
TxSkelProposal -> Address
txSkelProposalAddress :: Api.Address,
TxSkelProposal -> TxGovAction
txSkelProposalAction :: TxGovAction,
TxSkelProposal -> Maybe (Versioned Script, TxSkelRedeemer)
txSkelProposalWitness :: Maybe (Script.Versioned Script.Script, TxSkelRedeemer),
TxSkelProposal -> Maybe String
txSkelProposalAnchor :: Maybe String
} ->
TxSkelProposal
deriving (Int -> TxSkelProposal -> ShowS
[TxSkelProposal] -> ShowS
TxSkelProposal -> String
(Int -> TxSkelProposal -> ShowS)
-> (TxSkelProposal -> String)
-> ([TxSkelProposal] -> ShowS)
-> Show TxSkelProposal
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TxSkelProposal -> ShowS
showsPrec :: Int -> TxSkelProposal -> ShowS
$cshow :: TxSkelProposal -> String
show :: TxSkelProposal -> String
$cshowList :: [TxSkelProposal] -> ShowS
showList :: [TxSkelProposal] -> ShowS
Show, TxSkelProposal -> TxSkelProposal -> Bool
(TxSkelProposal -> TxSkelProposal -> Bool)
-> (TxSkelProposal -> TxSkelProposal -> Bool) -> Eq TxSkelProposal
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TxSkelProposal -> TxSkelProposal -> Bool
== :: TxSkelProposal -> TxSkelProposal -> Bool
$c/= :: TxSkelProposal -> TxSkelProposal -> Bool
/= :: TxSkelProposal -> TxSkelProposal -> Bool
Eq)
makeLensesFor
[ ("txSkelProposalAddress", "txSkelProposalAddressL"),
("txSkelProposalAction", "txSkelProposalActionL"),
("txSkelProposalWitness", "txSkelProposalWitnessL"),
("txSkelProposalAnchor", "txSkelProposalAnchorL")
]
''TxSkelProposal
simpleTxSkelProposal :: (ToAddress a) => a -> TxGovAction -> TxSkelProposal
simpleTxSkelProposal :: forall a. ToAddress a => a -> TxGovAction -> TxSkelProposal
simpleTxSkelProposal a
a TxGovAction
govAction = Address
-> TxGovAction
-> Maybe (Versioned Script, TxSkelRedeemer)
-> Maybe String
-> TxSkelProposal
TxSkelProposal (a -> Address
forall a. ToAddress a => a -> Address
toAddress a
a) TxGovAction
govAction Maybe (Versioned Script, TxSkelRedeemer)
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
withWitness :: (ToVersionedScript a) => TxSkelProposal -> (a, TxSkelRedeemer) -> TxSkelProposal
withWitness :: forall a.
ToVersionedScript a =>
TxSkelProposal -> (a, TxSkelRedeemer) -> TxSkelProposal
withWitness TxSkelProposal
prop (a
s, TxSkelRedeemer
red) = TxSkelProposal
prop {txSkelProposalWitness = Just (toVersionedScript s, red)}
withAnchor :: TxSkelProposal -> String -> TxSkelProposal
withAnchor :: TxSkelProposal -> String -> TxSkelProposal
withAnchor TxSkelProposal
prop String
url = TxSkelProposal
prop {txSkelProposalAnchor = Just url}