Copyright | (c) 2023 GYELD GMBH |
---|---|
License | Apache 2.0 |
Maintainer | [email protected] |
Stability | develop |
Safe Haskell | None |
Language | GHC2021 |
GeniusYield.Types.Script
Description
Synopsis
- type GYValidator (v :: PlutusVersion) = GYScript v
- validatorFromPlutus :: forall (v :: PlutusVersion) a. SingPlutusVersionI v => CompiledCode a -> GYValidator v
- validatorFromSerialisedScript :: forall (v :: PlutusVersion). SingPlutusVersionI v => SerialisedScript -> GYValidator v
- validatorToSerialisedScript :: forall (v :: PlutusVersion). GYValidator v -> SerialisedScript
- validatorToApi :: forall (v :: PlutusVersion). GYValidator v -> PlutusScript (PlutusVersionToApi v)
- validatorFromApi :: forall (v :: PlutusVersion). SingPlutusVersionI v => PlutusScript (PlutusVersionToApi v) -> GYValidator v
- validatorToApiPlutusScriptWitness :: forall (v :: PlutusVersion). GYValidator v -> ScriptDatum WitCtxTxIn -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness WitCtxTxIn ApiEra
- writeValidator :: forall (v :: PlutusVersion). FilePath -> GYValidator v -> IO ()
- readValidator :: forall (v :: PlutusVersion). SingPlutusVersionI v => FilePath -> IO (GYValidator v)
- validatorHash :: forall (v :: PlutusVersion). GYValidator v -> GYScriptHash
- validatorPlutusHash :: forall (v :: PlutusVersion). GYValidator v -> ScriptHash
- validatorApiHash :: forall (v :: PlutusVersion). GYValidator v -> ScriptHash
- validatorVersion :: forall (v :: PlutusVersion). GYValidator v -> SingPlutusVersion v
- type GYValidatorHash = GYScriptHash
- validatorHashToApi :: GYValidatorHash -> ScriptHash
- validatorHashToPlutus :: GYValidatorHash -> ScriptHash
- validatorHashFromApi :: ScriptHash -> GYValidatorHash
- validatorHashFromPlutus :: ScriptHash -> Either PlutusToCardanoError GYValidatorHash
- data GYScriptHash
- scriptHashFromApi :: ScriptHash -> GYScriptHash
- scriptHashToApi :: GYScriptHash -> ScriptHash
- scriptHashFromLedger :: ScriptHash -> GYScriptHash
- scriptHashToLedger :: GYScriptHash -> ScriptHash
- scriptHashToPlutus :: GYScriptHash -> ScriptHash
- type GYMintingPolicy (v :: PlutusVersion) = GYScript v
- mintingPolicyId :: forall (v :: PlutusVersion). GYMintingPolicy v -> GYMintingPolicyId
- simpleScriptToPolicyId :: GYSimpleScript -> GYMintingPolicyId
- mintingPolicyVersion :: forall (v :: PlutusVersion). GYMintingPolicy v -> SingPlutusVersion v
- mintingPolicyFromPlutus :: forall (v :: PlutusVersion) a. SingPlutusVersionI v => CompiledCode a -> GYMintingPolicy v
- mintingPolicyFromSerialisedScript :: forall (v :: PlutusVersion). SingPlutusVersionI v => SerialisedScript -> GYMintingPolicy v
- mintingPolicyToSerialisedScript :: forall (v :: PlutusVersion). GYMintingPolicy v -> SerialisedScript
- mintingPolicyToApi :: forall (v :: PlutusVersion). GYMintingPolicy v -> PlutusScript (PlutusVersionToApi v)
- mintingPolicyIdToText :: GYMintingPolicyId -> Text
- mintingPolicyIdFromText :: Text -> Either String GYMintingPolicyId
- mintingPolicyFromApi :: forall (v :: PlutusVersion). SingPlutusVersionI v => PlutusScript (PlutusVersionToApi v) -> GYMintingPolicy v
- mintingPolicyToApiPlutusScriptWitness :: forall (v :: PlutusVersion). GYMintingPolicy v -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness WitCtxMint ApiEra
- writeMintingPolicy :: forall (v :: PlutusVersion). FilePath -> GYMintingPolicy v -> IO ()
- readMintingPolicy :: forall (v :: PlutusVersion). SingPlutusVersionI v => FilePath -> IO (GYMintingPolicy v)
- mintingPolicyCurrencySymbol :: forall (v :: PlutusVersion). GYMintingPolicy v -> CurrencySymbol
- mintingPolicyApiId :: forall (v :: PlutusVersion). GYMintingPolicy v -> PolicyId
- data GYMintingPolicyId
- mintingPolicyIdToApi :: GYMintingPolicyId -> PolicyId
- mintingPolicyIdFromApi :: PolicyId -> GYMintingPolicyId
- mintingPolicyIdToCurrencySymbol :: GYMintingPolicyId -> CurrencySymbol
- mintingPolicyIdFromCurrencySymbol :: CurrencySymbol -> Either PlutusToCardanoError GYMintingPolicyId
- mintingPolicyIdCurrencySymbol :: GYMintingPolicyId -> CurrencySymbol
- mintingPolicyIdToScriptHash :: GYMintingPolicyId -> GYScriptHash
- type GYStakeValidator (v :: PlutusVersion) = GYScript v
- stakeValidatorVersion :: forall (v :: PlutusVersion). GYStakeValidator v -> SingPlutusVersion v
- stakeValidatorFromPlutus :: forall (v :: PlutusVersion) a. SingPlutusVersionI v => CompiledCode a -> GYStakeValidator v
- stakeValidatorFromSerialisedScript :: forall (v :: PlutusVersion). SingPlutusVersionI v => SerialisedScript -> GYStakeValidator v
- stakeValidatorToSerialisedScript :: forall (v :: PlutusVersion). GYStakeValidator v -> SerialisedScript
- stakeValidatorToApi :: forall (v :: PlutusVersion). GYStakeValidator v -> PlutusScript (PlutusVersionToApi v)
- stakeValidatorFromApi :: forall (v :: PlutusVersion). SingPlutusVersionI v => PlutusScript (PlutusVersionToApi v) -> GYStakeValidator v
- stakeValidatorToApiPlutusScriptWitness :: forall (v :: PlutusVersion). GYStakeValidator v -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness WitCtxStake ApiEra
- stakeValidatorHash :: forall (v :: PlutusVersion). GYStakeValidator v -> GYScriptHash
- stakeValidatorPlutusHash :: forall (v :: PlutusVersion). GYStakeValidator v -> ScriptHash
- stakeValidatorApiHash :: forall (v :: PlutusVersion). GYStakeValidator v -> ScriptHash
- type GYStakeValidatorHash = GYScriptHash
- stakeValidatorHashToApi :: GYStakeValidatorHash -> ScriptHash
- stakeValidatorHashToPlutus :: GYStakeValidatorHash -> ScriptHash
- stakeValidatorHashFromApi :: ScriptHash -> GYStakeValidatorHash
- stakeValidatorHashFromPlutus :: ScriptHash -> Either PlutusToCardanoError GYStakeValidatorHash
- writeStakeValidator :: forall (v :: PlutusVersion). FilePath -> GYStakeValidator v -> IO ()
- readStakeValidator :: forall (v :: PlutusVersion). SingPlutusVersionI v => FilePath -> IO (GYStakeValidator v)
- data GYScript (v :: PlutusVersion)
- eqScript :: forall (u :: PlutusVersion) (v :: PlutusVersion). GYScript u -> GYScript v -> Bool
- compareScript :: forall (u :: PlutusVersion) (v :: PlutusVersion). GYScript u -> GYScript v -> Ordering
- scriptHash :: forall (v :: PlutusVersion). GYScript v -> GYScriptHash
- hashScript :: forall (v :: PlutusVersion). GYScript v -> GYScriptHash
- scriptVersion :: forall (v :: PlutusVersion). GYScript v -> SingPlutusVersion v
- scriptVersion' :: forall (v :: PlutusVersion). GYScript v -> PlutusVersion
- validatorToScript :: forall (v :: PlutusVersion). GYValidator v -> GYScript v
- mintingPolicyToScript :: forall (v :: PlutusVersion). GYMintingPolicy v -> GYScript v
- stakeValidatorToScript :: forall (v :: PlutusVersion). GYStakeValidator v -> GYScript v
- scriptToApi :: forall (v :: PlutusVersion). GYScript v -> PlutusScript (PlutusVersionToApi v)
- scriptFromCBOR :: forall (v :: PlutusVersion). SingPlutusVersionI v => Text -> Maybe (GYScript v)
- scriptFromCBOR' :: forall (v :: PlutusVersion). SingPlutusVersionI v => ByteString -> Maybe (GYScript v)
- scriptFromPlutus :: forall (v :: PlutusVersion) a. SingPlutusVersionI v => CompiledCode a -> GYScript v
- scriptFromSerialisedScript :: forall (v :: PlutusVersion). SingPlutusVersionI v => SerialisedScript -> GYScript v
- scriptToSerialisedScript :: forall (v :: PlutusVersion). GYScript v -> ShortByteString
- applyParam :: forall p (v :: PlutusVersion). (ToData p, SingPlutusVersionI v) => GYScript v -> p -> GYScript v
- scriptApiHash :: forall (v :: PlutusVersion). GYScript v -> ScriptHash
- scriptPlutusHash :: forall (v :: PlutusVersion). GYScript v -> ScriptHash
- someScriptPlutusHash :: Some GYScript -> ScriptHash
- someScriptToReferenceApi :: GYAnyScript -> ReferenceScript ApiEra
- someScriptFromReferenceApi :: ReferenceScript era -> Maybe GYAnyScript
- referenceScriptToApiPlutusScriptWitness :: forall (v :: PlutusVersion) witctx. GYTxOutRef -> GYScript v -> ScriptDatum witctx -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness witctx ApiEra
- apiHashToPlutus :: ScriptHash -> ScriptHash
- scriptSize :: GYAnyScript -> Int
- scriptToApiPlutusScriptWitness :: forall (v :: PlutusVersion) ctx. GYScript v -> ScriptDatum ctx -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness ctx ApiEra
- writeScript :: forall (v :: PlutusVersion). FilePath -> GYScript v -> IO ()
- readScript :: forall (v :: PlutusVersion). SingPlutusVersionI v => FilePath -> IO (GYScript v)
- readScript' :: forall (v :: PlutusVersion). SingPlutusVersionI v => ByteString -> Either TextEnvelopeError (GYScript v)
- data GYAnyScript where
- GYSimpleScript :: !GYSimpleScript -> GYAnyScript
- GYPlutusScript :: forall (v :: PlutusVersion). !(GYScript v) -> GYAnyScript
- hashAnyScript :: GYAnyScript -> GYScriptHash
- anyScriptToApiScriptInEra :: GYAnyScript -> ScriptInEra ApiEra
- module GeniusYield.Types.Script.SimpleScript
Validator
type GYValidator (v :: PlutusVersion) = GYScript v #
Deprecated: Use GYScript.
validatorFromPlutus :: forall (v :: PlutusVersion) a. SingPlutusVersionI v => CompiledCode a -> GYValidator v #
validatorFromSerialisedScript :: forall (v :: PlutusVersion). SingPlutusVersionI v => SerialisedScript -> GYValidator v #
validatorToSerialisedScript :: forall (v :: PlutusVersion). GYValidator v -> SerialisedScript #
validatorToApi :: forall (v :: PlutusVersion). GYValidator v -> PlutusScript (PlutusVersionToApi v) #
validatorFromApi :: forall (v :: PlutusVersion). SingPlutusVersionI v => PlutusScript (PlutusVersionToApi v) -> GYValidator v #
validatorToApiPlutusScriptWitness :: forall (v :: PlutusVersion). GYValidator v -> ScriptDatum WitCtxTxIn -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness WitCtxTxIn ApiEra #
File operations
writeValidator :: forall (v :: PlutusVersion). FilePath -> GYValidator v -> IO () #
Writes a validator to a file.
readValidator :: forall (v :: PlutusVersion). SingPlutusVersionI v => FilePath -> IO (GYValidator v) #
Reads a validator from a file.
Selectors
validatorHash :: forall (v :: PlutusVersion). GYValidator v -> GYScriptHash #
validatorPlutusHash :: forall (v :: PlutusVersion). GYValidator v -> ScriptHash #
validatorApiHash :: forall (v :: PlutusVersion). GYValidator v -> ScriptHash #
validatorVersion :: forall (v :: PlutusVersion). GYValidator v -> SingPlutusVersion v #
ValidatorHash
type GYValidatorHash = GYScriptHash #
Deprecated: Use GYScriptHash.
validatorHashFromPlutus :: ScriptHash -> Either PlutusToCardanoError GYValidatorHash #
>>>
validatorHashFromPlutus "cabdd19b58d4299fde05b53c2c0baf978bf9ade734b490fc0cc8b7d0"
Right (GYScriptHash "cabdd19b58d4299fde05b53c2c0baf978bf9ade734b490fc0cc8b7d0")
>>>
validatorHashFromPlutus "cabdd19b58d4299fde05b53c2c0baf978bf9ade734b490fc0cc8b7"
Left (DeserialiseRawBytesError {ptceTag = "validatorHashFromPlutus: cabdd19b58d4299fde05b53c2c0baf978bf9ade734b490fc0cc8b7, error: SerialiseAsRawBytesError {unSerialiseAsRawBytesError = \"Unable to deserialise ScriptHash\"}"})
ScriptHash
data GYScriptHash #
Instances
scriptHashFromLedger :: ScriptHash -> GYScriptHash #
Convert from corresponding ledger representation.
scriptHashToLedger :: GYScriptHash -> ScriptHash #
Convert to corresponding ledger representation.
MintingPolicy
type GYMintingPolicy (v :: PlutusVersion) = GYScript v #
Deprecated: Use GYScript.
mintingPolicyId :: forall (v :: PlutusVersion). GYMintingPolicy v -> GYMintingPolicyId #
mintingPolicyVersion :: forall (v :: PlutusVersion). GYMintingPolicy v -> SingPlutusVersion v #
mintingPolicyFromPlutus :: forall (v :: PlutusVersion) a. SingPlutusVersionI v => CompiledCode a -> GYMintingPolicy v #
mintingPolicyFromSerialisedScript :: forall (v :: PlutusVersion). SingPlutusVersionI v => SerialisedScript -> GYMintingPolicy v #
mintingPolicyToSerialisedScript :: forall (v :: PlutusVersion). GYMintingPolicy v -> SerialisedScript #
mintingPolicyToApi :: forall (v :: PlutusVersion). GYMintingPolicy v -> PlutusScript (PlutusVersionToApi v) #
mintingPolicyFromApi :: forall (v :: PlutusVersion). SingPlutusVersionI v => PlutusScript (PlutusVersionToApi v) -> GYMintingPolicy v #
mintingPolicyToApiPlutusScriptWitness :: forall (v :: PlutusVersion). GYMintingPolicy v -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness WitCtxMint ApiEra #
File operations
writeMintingPolicy :: forall (v :: PlutusVersion). FilePath -> GYMintingPolicy v -> IO () #
Writes a minting policy to a file.
readMintingPolicy :: forall (v :: PlutusVersion). SingPlutusVersionI v => FilePath -> IO (GYMintingPolicy v) #
Reads a minting policy from a file.
Selectors
mintingPolicyCurrencySymbol :: forall (v :: PlutusVersion). GYMintingPolicy v -> CurrencySymbol #
mintingPolicyApiId :: forall (v :: PlutusVersion). GYMintingPolicy v -> PolicyId #
MintingPolicyId
data GYMintingPolicyId #
Minting policy identifier, also a currency symbol.
Instances
mintingPolicyIdFromCurrencySymbol :: CurrencySymbol -> Either PlutusToCardanoError GYMintingPolicyId #
>>>
mintingPolicyIdFromCurrencySymbol $ mintingPolicyIdToCurrencySymbol "ff80aaaf03a273b8f5c558168dc0e2377eea810badbae6eceefc14ef"
Right "ff80aaaf03a273b8f5c558168dc0e2377eea810badbae6eceefc14ef"
mintingPolicyIdCurrencySymbol :: GYMintingPolicyId -> CurrencySymbol #
Deprecated: Use mintingPolicyIdToCurrencySymbol.
mintingPolicyIdToScriptHash :: GYMintingPolicyId -> GYScriptHash #
Obtain GYScriptHash
from GYMintingPolicyId
.
StakeValidator
type GYStakeValidator (v :: PlutusVersion) = GYScript v #
Deprecated: Use GYScript.
stakeValidatorVersion :: forall (v :: PlutusVersion). GYStakeValidator v -> SingPlutusVersion v #
stakeValidatorFromPlutus :: forall (v :: PlutusVersion) a. SingPlutusVersionI v => CompiledCode a -> GYStakeValidator v #
stakeValidatorFromSerialisedScript :: forall (v :: PlutusVersion). SingPlutusVersionI v => SerialisedScript -> GYStakeValidator v #
stakeValidatorToSerialisedScript :: forall (v :: PlutusVersion). GYStakeValidator v -> SerialisedScript #
stakeValidatorToApi :: forall (v :: PlutusVersion). GYStakeValidator v -> PlutusScript (PlutusVersionToApi v) #
stakeValidatorFromApi :: forall (v :: PlutusVersion). SingPlutusVersionI v => PlutusScript (PlutusVersionToApi v) -> GYStakeValidator v #
stakeValidatorToApiPlutusScriptWitness :: forall (v :: PlutusVersion). GYStakeValidator v -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness WitCtxStake ApiEra #
Stake validator selectors
stakeValidatorHash :: forall (v :: PlutusVersion). GYStakeValidator v -> GYScriptHash #
stakeValidatorPlutusHash :: forall (v :: PlutusVersion). GYStakeValidator v -> ScriptHash #
stakeValidatorApiHash :: forall (v :: PlutusVersion). GYStakeValidator v -> ScriptHash #
StakeValidatorHash
type GYStakeValidatorHash = GYScriptHash #
Deprecated: Use GYScriptHash.
stakeValidatorHashFromPlutus :: ScriptHash -> Either PlutusToCardanoError GYStakeValidatorHash #
>>>
stakeValidatorHashFromPlutus "cabdd19b58d4299fde05b53c2c0baf978bf9ade734b490fc0cc8b7d0"
Right (GYScriptHash "cabdd19b58d4299fde05b53c2c0baf978bf9ade734b490fc0cc8b7d0")
>>>
stakeValidatorHashFromPlutus "cabdd19b58d4299fde05b53c2c0baf978bf9ade734b490fc0cc8b7"
Left (DeserialiseRawBytesError {ptceTag = "stakeValidatorHashFromPlutus: cabdd19b58d4299fde05b53c2c0baf978bf9ade734b490fc0cc8b7, error: SerialiseAsRawBytesError {unSerialiseAsRawBytesError = \"Unable to deserialise ScriptHash\"}"})
File operations
writeStakeValidator :: forall (v :: PlutusVersion). FilePath -> GYStakeValidator v -> IO () #
Writes a stake validator to a file.
readStakeValidator :: forall (v :: PlutusVersion). SingPlutusVersionI v => FilePath -> IO (GYStakeValidator v) #
Reads a stake validator from a file.
Script
data GYScript (v :: PlutusVersion) #
Plutus script
Instances
GCompare GYScript # | |
Defined in GeniusYield.Types.Script Methods gcompare :: forall (a :: PlutusVersion) (b :: PlutusVersion). GYScript a -> GYScript b -> GOrdering a b # | |
GEq GYScript # | |
Defined in GeniusYield.Types.Script Methods geq :: forall (a :: PlutusVersion) (b :: PlutusVersion). GYScript a -> GYScript b -> Maybe (a :~: b) # | |
GShow GYScript # | |
Defined in GeniusYield.Types.Script Methods gshowsPrec :: forall (a :: PlutusVersion). Int -> GYScript a -> ShowS # | |
Show (GYScript v) # | |
Eq (GYScript v) # | Equality and comparison are on script hash. As hash is cryptographicly strong, and |
Ord (GYScript v) # | |
Defined in GeniusYield.Types.Script |
eqScript :: forall (u :: PlutusVersion) (v :: PlutusVersion). GYScript u -> GYScript v -> Bool #
Heterogeneous script equality. Preferably use Eq
instance when possible.
compareScript :: forall (u :: PlutusVersion) (v :: PlutusVersion). GYScript u -> GYScript v -> Ordering #
Heterogeneous script comparison. Preferably use Ord
instance when possible.
scriptHash :: forall (v :: PlutusVersion). GYScript v -> GYScriptHash #
hashScript :: forall (v :: PlutusVersion). GYScript v -> GYScriptHash #
Deprecated: Use scriptHash.
scriptVersion :: forall (v :: PlutusVersion). GYScript v -> SingPlutusVersion v #
scriptVersion' :: forall (v :: PlutusVersion). GYScript v -> PlutusVersion #
validatorToScript :: forall (v :: PlutusVersion). GYValidator v -> GYScript v #
mintingPolicyToScript :: forall (v :: PlutusVersion). GYMintingPolicy v -> GYScript v #
stakeValidatorToScript :: forall (v :: PlutusVersion). GYStakeValidator v -> GYScript v #
scriptToApi :: forall (v :: PlutusVersion). GYScript v -> PlutusScript (PlutusVersionToApi v) #
scriptFromCBOR :: forall (v :: PlutusVersion). SingPlutusVersionI v => Text -> Maybe (GYScript v) #
scriptFromCBOR' :: forall (v :: PlutusVersion). SingPlutusVersionI v => ByteString -> Maybe (GYScript v) #
scriptFromPlutus :: forall (v :: PlutusVersion) a. SingPlutusVersionI v => CompiledCode a -> GYScript v #
scriptFromSerialisedScript :: forall (v :: PlutusVersion). SingPlutusVersionI v => SerialisedScript -> GYScript v #
scriptToSerialisedScript :: forall (v :: PlutusVersion). GYScript v -> ShortByteString #
applyParam :: forall p (v :: PlutusVersion). (ToData p, SingPlutusVersionI v) => GYScript v -> p -> GYScript v #
Apply a (data-encoded) parameter to a script.
scriptApiHash :: forall (v :: PlutusVersion). GYScript v -> ScriptHash #
scriptPlutusHash :: forall (v :: PlutusVersion). GYScript v -> ScriptHash #
referenceScriptToApiPlutusScriptWitness :: forall (v :: PlutusVersion) witctx. GYTxOutRef -> GYScript v -> ScriptDatum witctx -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness witctx ApiEra #
apiHashToPlutus :: ScriptHash -> ScriptHash #
scriptSize :: GYAnyScript -> Int #
scriptToApiPlutusScriptWitness :: forall (v :: PlutusVersion) ctx. GYScript v -> ScriptDatum ctx -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness ctx ApiEra #
File operations
writeScript :: forall (v :: PlutusVersion). FilePath -> GYScript v -> IO () #
Writes a script to a file.
readScript :: forall (v :: PlutusVersion). SingPlutusVersionI v => FilePath -> IO (GYScript v) #
Reads a script from a file.
readScript' :: forall (v :: PlutusVersion). SingPlutusVersionI v => ByteString -> Either TextEnvelopeError (GYScript v) #
Reads a script as represented by a ByteString
.
Any Script
data GYAnyScript where #
Type encapsulating both simple and plutus scripts.
Constructors
GYSimpleScript :: !GYSimpleScript -> GYAnyScript | |
GYPlutusScript :: forall (v :: PlutusVersion). !(GYScript v) -> GYAnyScript |
Instances
Show GYAnyScript # | |
Defined in GeniusYield.Types.Script Methods showsPrec :: Int -> GYAnyScript -> ShowS # show :: GYAnyScript -> String # showList :: [GYAnyScript] -> ShowS # | |
Eq GYAnyScript # | |
Defined in GeniusYield.Types.Script | |
Ord GYAnyScript # | |
Defined in GeniusYield.Types.Script Methods compare :: GYAnyScript -> GYAnyScript -> Ordering # (<) :: GYAnyScript -> GYAnyScript -> Bool # (<=) :: GYAnyScript -> GYAnyScript -> Bool # (>) :: GYAnyScript -> GYAnyScript -> Bool # (>=) :: GYAnyScript -> GYAnyScript -> Bool # max :: GYAnyScript -> GYAnyScript -> GYAnyScript # min :: GYAnyScript -> GYAnyScript -> GYAnyScript # |