1
1
{-# LANGUAGE DeriveAnyClass #-}
2
2
{-# LANGUAGE DerivingVia #-}
3
+ {-# LANGUAGE FlexibleContexts #-}
3
4
{-# LANGUAGE FlexibleInstances #-}
4
5
{-# LANGUAGE GADTs #-}
5
6
{-# LANGUAGE LambdaCase #-}
7
+ {-# LANGUAGE MultiParamTypeClasses #-}
6
8
{-# LANGUAGE NamedFieldPuns #-}
7
9
{-# LANGUAGE RankNTypes #-}
8
10
{-# LANGUAGE ScopedTypeVariables #-}
9
11
{-# LANGUAGE StandaloneDeriving #-}
10
12
{-# LANGUAGE TypeApplications #-}
11
13
{-# LANGUAGE TypeFamilies #-}
14
+ {-# LANGUAGE UndecidableInstances #-}
12
15
13
16
{- HLINT ignore "Avoid lambda using `infix`" -}
14
17
{- HLINT ignore "Use section" -}
@@ -1168,23 +1171,15 @@ fromShelleyBasedScript :: ShelleyBasedEra era
1168
1171
fromShelleyBasedScript era script =
1169
1172
case era of
1170
1173
ShelleyBasedEraShelley ->
1171
- ScriptInEra SimpleScriptV1InShelley $
1172
- SimpleScript SimpleScriptV1 $
1173
- fromShelleyMultiSig script
1174
+ minimumShelleySimpleScriptVersion @ ShelleyEra @ SimpleScriptV1 (fromShelleyMultiSig script)
1174
1175
ShelleyBasedEraAllegra ->
1175
- ScriptInEra SimpleScriptV2InAllegra $
1176
- SimpleScript SimpleScriptV2 $
1177
- fromAllegraTimelock TimeLocksInSimpleScriptV2 script
1176
+ minimumShelleySimpleScriptVersion (fromAllegraTimelock TimeLocksInSimpleScriptV2 script)
1178
1177
ShelleyBasedEraMary ->
1179
- ScriptInEra SimpleScriptV2InMary $
1180
- SimpleScript SimpleScriptV2 $
1181
- fromAllegraTimelock TimeLocksInSimpleScriptV2 script
1178
+ minimumShelleySimpleScriptVersion (fromAllegraTimelock TimeLocksInSimpleScriptV2 script)
1182
1179
ShelleyBasedEraAlonzo ->
1183
1180
case script of
1184
1181
Alonzo. TimelockScript s ->
1185
- ScriptInEra SimpleScriptV2InAlonzo $
1186
- SimpleScript SimpleScriptV2 $
1187
- fromAllegraTimelock TimeLocksInSimpleScriptV2 s
1182
+ minimumShelleySimpleScriptVersion (fromAllegraTimelock TimeLocksInSimpleScriptV2 s)
1188
1183
Alonzo. PlutusScript Alonzo. PlutusV1 s ->
1189
1184
ScriptInEra PlutusScriptV1InAlonzo $
1190
1185
PlutusScript PlutusScriptV1 $
@@ -1194,9 +1189,7 @@ fromShelleyBasedScript era script =
1194
1189
ShelleyBasedEraBabbage ->
1195
1190
case script of
1196
1191
Alonzo. TimelockScript s ->
1197
- ScriptInEra SimpleScriptV2InBabbage $
1198
- SimpleScript SimpleScriptV2 $
1199
- fromAllegraTimelock TimeLocksInSimpleScriptV2 s
1192
+ minimumShelleySimpleScriptVersion (fromAllegraTimelock TimeLocksInSimpleScriptV2 s)
1200
1193
Alonzo. PlutusScript Alonzo. PlutusV1 s ->
1201
1194
ScriptInEra PlutusScriptV1InBabbage $
1202
1195
PlutusScript PlutusScriptV1 $
@@ -1206,7 +1199,38 @@ fromShelleyBasedScript era script =
1206
1199
PlutusScript PlutusScriptV2 $
1207
1200
PlutusScriptSerialised s
1208
1201
1209
-
1202
+ class SimpleScriptInEra era lang where
1203
+ simpleScriptInEra :: SimpleScript lang -> ScriptInEra era
1204
+
1205
+ instance SimpleScriptInEra ShelleyEra SimpleScriptV1 where
1206
+ simpleScriptInEra = ScriptInEra SimpleScriptV1InShelley . SimpleScript SimpleScriptV1
1207
+ instance SimpleScriptInEra AllegraEra SimpleScriptV1 where
1208
+ simpleScriptInEra = ScriptInEra SimpleScriptV1InAllegra . SimpleScript SimpleScriptV1
1209
+ instance SimpleScriptInEra AllegraEra SimpleScriptV2 where
1210
+ simpleScriptInEra = ScriptInEra SimpleScriptV2InAllegra . SimpleScript SimpleScriptV2
1211
+ instance SimpleScriptInEra MaryEra SimpleScriptV1 where
1212
+ simpleScriptInEra = ScriptInEra SimpleScriptV1InMary . SimpleScript SimpleScriptV1
1213
+ instance SimpleScriptInEra MaryEra SimpleScriptV2 where
1214
+ simpleScriptInEra = ScriptInEra SimpleScriptV2InMary . SimpleScript SimpleScriptV2
1215
+ instance SimpleScriptInEra AlonzoEra SimpleScriptV1 where
1216
+ simpleScriptInEra = ScriptInEra SimpleScriptV1InAlonzo . SimpleScript SimpleScriptV1
1217
+ instance SimpleScriptInEra AlonzoEra SimpleScriptV2 where
1218
+ simpleScriptInEra = ScriptInEra SimpleScriptV2InAlonzo . SimpleScript SimpleScriptV2
1219
+ instance SimpleScriptInEra BabbageEra SimpleScriptV1 where
1220
+ simpleScriptInEra = ScriptInEra SimpleScriptV1InBabbage . SimpleScript SimpleScriptV1
1221
+ instance SimpleScriptInEra BabbageEra SimpleScriptV2 where
1222
+ simpleScriptInEra = ScriptInEra SimpleScriptV2InBabbage . SimpleScript SimpleScriptV2
1223
+
1224
+ class MinimumShelleySimpleScriptVersion era lang where
1225
+ minimumShelleySimpleScriptVersion :: SimpleScript lang -> ScriptInEra era
1226
+
1227
+ instance (SimpleScriptInEra era SimpleScriptV1 ) => MinimumShelleySimpleScriptVersion era SimpleScriptV1 where
1228
+ minimumShelleySimpleScriptVersion = simpleScriptInEra
1229
+
1230
+ instance (SimpleScriptInEra era SimpleScriptV1 , SimpleScriptInEra era SimpleScriptV2 ) => MinimumShelleySimpleScriptVersion era SimpleScriptV2 where
1231
+ minimumShelleySimpleScriptVersion s = case adjustSimpleScriptVersion SimpleScriptV1 s of
1232
+ Nothing -> simpleScriptInEra s
1233
+ Just s' -> simpleScriptInEra s'
1210
1234
1211
1235
-- | Conversion for the 'Shelley.MultiSig' language used by the Shelley era.
1212
1236
--
0 commit comments