{-# LANGUAGE DataKinds #-}

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

import Cardano.Api
  ( ExecutionUnits
  , File
  , FileDirection (In)
  , ScriptInAnyLang
  , TxIn
  )

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

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
anySLang 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
anySLang ScriptDataOrFile
redeemer ExecutionUnits
execUnits