module PlutusLedgerApi.MachineParameters where import PlutusCore.Default (BuiltinSemanticsVariant (..)) import PlutusCore.Evaluation.Machine.ExBudgetingDefaults (cekCostModelForVariant) import PlutusCore.Evaluation.Machine.MachineParameters (mkMachineParameters) import PlutusCore.Evaluation.Machine.MachineParameters.Default (DefaultMachineParameters) import PlutusLedgerApi.Common machineParametersFor :: PlutusLedgerLanguage -> MajorProtocolVersion -> DefaultMachineParameters machineParametersFor :: PlutusLedgerLanguage -> MajorProtocolVersion -> DefaultMachineParameters machineParametersFor PlutusLedgerLanguage ledgerLang MajorProtocolVersion majorPV = BuiltinSemanticsVariant DefaultFun -> CostModel CekMachineCosts BuiltinCostModel -> DefaultMachineParameters forall (uni :: * -> *) fun builtincosts val machinecosts. (CostingPart uni fun ~ builtincosts, HasMeaningIn uni val, ToBuiltinMeaning uni fun) => BuiltinSemanticsVariant fun -> CostModel machinecosts builtincosts -> MachineParameters machinecosts fun val mkMachineParameters BuiltinSemanticsVariant DefaultFun builtinSemVar (BuiltinSemanticsVariant DefaultFun -> CostModel CekMachineCosts BuiltinCostModel cekCostModelForVariant BuiltinSemanticsVariant DefaultFun builtinSemVar) where builtinSemVar :: BuiltinSemanticsVariant DefaultFun builtinSemVar = case PlutusLedgerLanguage ledgerLang of PlutusLedgerLanguage PlutusV1 -> BuiltinSemanticsVariant DefaultFun conwayDependentVariant PlutusLedgerLanguage PlutusV2 -> BuiltinSemanticsVariant DefaultFun conwayDependentVariant PlutusLedgerLanguage PlutusV3 -> BuiltinSemanticsVariant DefaultFun DefaultFunSemanticsVariantC conwayDependentVariant :: BuiltinSemanticsVariant DefaultFun conwayDependentVariant = if MajorProtocolVersion majorPV MajorProtocolVersion -> MajorProtocolVersion -> Bool forall a. Ord a => a -> a -> Bool < MajorProtocolVersion changPV then BuiltinSemanticsVariant DefaultFun DefaultFunSemanticsVariantA else BuiltinSemanticsVariant DefaultFun DefaultFunSemanticsVariantB