{-# LANGUAGE DataKinds #-}

module Cardano.CLI.EraBased.Script.Certificate.Type
  ( CertificateScriptWitness (..)
  , createSimpleOrPlutusScriptFromCliArgs
  , createPlutusReferenceScriptFromCliArgs
  )
where

import Cardano.Api

import Cardano.CLI.EraBased.Script.Type
import Cardano.CLI.Type.Common (AnySLanguage (..), ScriptDataOrFile)

newtype CertificateScriptWitness era
  = CertificateScriptWitness {forall era.
CertificateScriptWitness era -> ScriptWitness WitCtxStake era
cswScriptWitness :: ScriptWitness WitCtxStake era}
  deriving Int -> CertificateScriptWitness era -> ShowS
[CertificateScriptWitness era] -> ShowS
CertificateScriptWitness era -> String
(Int -> CertificateScriptWitness era -> ShowS)
-> (CertificateScriptWitness era -> String)
-> ([CertificateScriptWitness era] -> ShowS)
-> Show (CertificateScriptWitness era)
forall era. Int -> CertificateScriptWitness era -> ShowS
forall era. [CertificateScriptWitness era] -> ShowS
forall era. CertificateScriptWitness era -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall era. Int -> CertificateScriptWitness era -> ShowS
showsPrec :: Int -> CertificateScriptWitness era -> ShowS
$cshow :: forall era. CertificateScriptWitness era -> String
show :: CertificateScriptWitness era -> String
$cshowList :: forall era. [CertificateScriptWitness era] -> ShowS
showList :: [CertificateScriptWitness era] -> ShowS
Show

createSimpleOrPlutusScriptFromCliArgs
  :: File ScriptInAnyLang In
  -> Maybe (ScriptDataOrFile, ExecutionUnits)
  -> AnyNonAssetScript
createSimpleOrPlutusScriptFromCliArgs :: File ScriptInAnyLang 'In
-> Maybe (ScriptDataOrFile, ExecutionUnits) -> AnyNonAssetScript
createSimpleOrPlutusScriptFromCliArgs File ScriptInAnyLang 'In
scriptFp (Just (ScriptDataOrFile
redeemer, ExecutionUnits
execUnits)) =
  PlutusNonAssetScriptRequirements -> AnyNonAssetScript
AnyNonAssetScriptPlutus (PlutusNonAssetScriptRequirements -> AnyNonAssetScript)
-> PlutusNonAssetScriptRequirements -> AnyNonAssetScript
forall a b. (a -> b) -> a -> b
$ File ScriptInAnyLang 'In
-> ScriptDataOrFile
-> ExecutionUnits
-> PlutusNonAssetScriptRequirements
OnDiskPlutusNonAssetScript File ScriptInAnyLang 'In
scriptFp ScriptDataOrFile
redeemer ExecutionUnits
execUnits
createSimpleOrPlutusScriptFromCliArgs File ScriptInAnyLang 'In
scriptFp Maybe (ScriptDataOrFile, ExecutionUnits)
Nothing =
  SimpleScriptRequirements -> AnyNonAssetScript
AnyNonAssetScriptSimple (SimpleScriptRequirements -> AnyNonAssetScript)
-> SimpleScriptRequirements -> AnyNonAssetScript
forall a b. (a -> b) -> a -> b
$ File ScriptInAnyLang 'In -> SimpleScriptRequirements
OnDiskSimpleScript File ScriptInAnyLang 'In
scriptFp

createPlutusReferenceScriptFromCliArgs
  :: TxIn
  -> AnySLanguage
  -> ScriptDataOrFile
  -> ExecutionUnits
  -> AnyNonAssetScript
createPlutusReferenceScriptFromCliArgs :: TxIn
-> AnySLanguage
-> ScriptDataOrFile
-> ExecutionUnits
-> AnyNonAssetScript
createPlutusReferenceScriptFromCliArgs TxIn
txIn AnySLanguage
l ScriptDataOrFile
redeemer ExecutionUnits
execUnits =
  PlutusNonAssetScriptRequirements -> AnyNonAssetScript
AnyNonAssetScriptPlutus (PlutusNonAssetScriptRequirements -> AnyNonAssetScript)
-> PlutusNonAssetScriptRequirements -> AnyNonAssetScript
forall a b. (a -> b) -> a -> b
$ TxIn
-> AnySLanguage
-> ScriptDataOrFile
-> ExecutionUnits
-> PlutusNonAssetScriptRequirements
ReferencePlutusNonAssetScript TxIn
txIn AnySLanguage
l ScriptDataOrFile
redeemer ExecutionUnits
execUnits