diff --git a/.changeset/blueprint-codegen-recursive.md b/.changeset/blueprint-codegen-recursive.md new file mode 100644 index 00000000..b62bbeab --- /dev/null +++ b/.changeset/blueprint-codegen-recursive.md @@ -0,0 +1,34 @@ +--- +"@evolution-sdk/evolution": patch +--- + +Blueprint codegen now supports recursive type schemas — Plutus types that reference themselves +directly or through an intermediate type (e.g. `MultiSig` containing a `List` field). +Cyclic references are emitted as typed `Schema.suspend` thunks where the encoded type `I` is +inferred by recursively walking the blueprint definition graph rather than hardcoded to `Data.Constr`: +`list` → `readonly ItemEncoded[]`, `map` → `globalThis.Map`, +`bytes` → `Uint8Array`, `integer` → `bigint`, `constructor` and union → `Data.Constr`, +`$ref` followed transitively up to depth 10. The previous hardcoded `Data.Constr` caused a +TypeScript invariance error for any recursive field referencing a list type. + +Several other codegen correctness and API improvements ship in the same release: + +- **Namespace emission ordering** — the group-by-namespace emitter is replaced by a streaming emitter + that walks a global topological sort and opens/closes namespace blocks on demand. TypeScript namespace + merging handles split declarations transparently. This fixes cases where a type was emitted before + its cross-namespace dependency (e.g. `Option.OfStakeCredential` appearing before `Cardano.Address.StakeCredential`). + +- **Cyclic type emit pattern** — cyclic types now emit a `export type X = ...` / `export const X = ...` + pair with no outer `Schema.suspend` wrapper and no `as` cast. Only the inner field references that + close the cycle use typed thunks: `Schema.suspend((): Schema.Schema => T)`. + +- **`unionStyle` config** — `CodegenConfig` gains `unionStyle: "Variant" | "Struct" | "TaggedStruct"` + in place of the removed `forceVariant` and `useSuspend` fields. `Struct` emits + `TSchema.Struct({ Tag: TSchema.Struct({...}, { flatFields: true }) }, { flatInUnion: true })`, + `TaggedStruct` emits `TSchema.TaggedStruct("Tag", {...}, { flatInUnion: true })`, + and `Variant` emits `TSchema.Variant({ Tag: {...} })`. + +- **Import hygiene** — generated files emit `import { Schema } from "@evolution-sdk/evolution"` + only when cyclic types are present, rather than always importing from `effect` directly. + `CodegenConfig.imports.effect` is replaced by `imports.schema`. + diff --git a/docs/app/tools/blueprint-codegen/blueprint-codegen.tsx b/docs/app/tools/blueprint-codegen/blueprint-codegen.tsx index 7fc02ea4..76533dde 100644 --- a/docs/app/tools/blueprint-codegen/blueprint-codegen.tsx +++ b/docs/app/tools/blueprint-codegen/blueprint-codegen.tsx @@ -12,7 +12,7 @@ export function BlueprintCodegen() { const [error, setError] = useState(null) const [optionStyle, setOptionStyle] = useState<"NullOr" | "UndefinedOr" | "Union">("UndefinedOr") const [moduleStrategy, setModuleStrategy] = useState<"flat" | "namespaced">("namespaced") - const [forceVariant, setForceVariant] = useState(true) + const [unionStyle, setUnionStyle] = useState<"Variant" | "Struct" | "TaggedStruct">("Variant") const generateTypes = async () => { setError(null) @@ -33,8 +33,7 @@ export function BlueprintCodegen() { const config = createCodegenConfig({ optionStyle, moduleStrategy, - forceVariant, - useSuspend: false, + unionStyle, useRelativeRefs: true, emptyConstructorStyle: "Literal" }) @@ -75,7 +74,8 @@ export function BlueprintCodegen() { const loadSample = async () => { try { - const response = await fetch("/evolution-sdk/sample-blueprint.json") + const basePath = process.env.NEXT_PUBLIC_BASE_PATH ?? "" + const response = await fetch(`${basePath}/sample-blueprint.json`) if (!response.ok) { throw new Error("Failed to load sample blueprint") } @@ -139,21 +139,19 @@ export function BlueprintCodegen() {
-
diff --git a/docs/public/sample-blueprint.json b/docs/public/sample-blueprint.json index ca868ee6..2382d9d5 100644 --- a/docs/public/sample-blueprint.json +++ b/docs/public/sample-blueprint.json @@ -36,6 +36,85 @@ "compiledCode": "585c01010029800aba2aba1aab9eaab9dab9a4888896600264653001300600198031803800cc0180092225980099b8748008c01cdd500144c8cc892898050009805180580098041baa0028a50401830060013003375400d149a26cac8009", "hash": "a2492486ed656e3fb854a2c240cf16055216c38ec94d166a533c5820" }, + { + "title": "governance_voting.always_yes_drep.vote", + "redeemer": { + "title": "_redeemer", + "schema": { + "$ref": "#/definitions/governance_voting~1SimpleVoteRedeemer" + } + }, + "compiledCode": "58aa01010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003225980099b8748000c01cdd500144c8c966002601a0050038b2016300b001300837540051640193008003980400124444b30013370e900400244c8cc010008528980618051baa0058acc004cdc3a400c00913233223300600414a26eb4c034004c034c038004c028dd5002c528201040203007300800130070013003375400f149a26cac80081", + "hash": "3a518b1b8e050a98472e8309a9b55a829733dd69f5405bf5d0977ef2" + }, + { + "title": "governance_voting.always_yes_drep.publish", + "redeemer": { + "title": "_redeemer", + "schema": { + "$ref": "#/definitions/governance_voting~1SimpleVoteRedeemer" + } + }, + "compiledCode": "58aa01010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003225980099b8748000c01cdd500144c8c966002601a0050038b2016300b001300837540051640193008003980400124444b30013370e900400244c8cc010008528980618051baa0058acc004cdc3a400c00913233223300600414a26eb4c034004c034c038004c028dd5002c528201040203007300800130070013003375400f149a26cac80081", + "hash": "3a518b1b8e050a98472e8309a9b55a829733dd69f5405bf5d0977ef2" + }, + { + "title": "governance_voting.always_yes_drep.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "58aa01010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003225980099b8748000c01cdd500144c8c966002601a0050038b2016300b001300837540051640193008003980400124444b30013370e900400244c8cc010008528980618051baa0058acc004cdc3a400c00913233223300600414a26eb4c034004c034c038004c028dd5002c528201040203007300800130070013003375400f149a26cac80081", + "hash": "3a518b1b8e050a98472e8309a9b55a829733dd69f5405bf5d0977ef2" + }, + { + "title": "governance_voting.always_yes_vote.vote", + "redeemer": { + "title": "_redeemer", + "schema": { + "$ref": "#/definitions/governance_voting~1SimpleVoteRedeemer" + } + }, + "compiledCode": "587b01010029800aba2aba1aab9faab9eaab9dab9a48888896600264653001300700198039804000cc01c0092225980099b8748020c01cdd500144c96600266e1d200030083754009132325980098070014528c5900c180600098049baa0048b200e300a3008375400514a08030600e00260066ea801e29344d9590011", + "hash": "d774a1f03d13acdb5a45239f5f24ba26e4b59e887ff67ca79e6a9b44" + }, + { + "title": "governance_voting.always_yes_vote.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "587b01010029800aba2aba1aab9faab9eaab9dab9a48888896600264653001300700198039804000cc01c0092225980099b8748020c01cdd500144c96600266e1d200030083754009132325980098070014528c5900c180600098049baa0048b200e300a3008375400514a08030600e00260066ea801e29344d9590011", + "hash": "d774a1f03d13acdb5a45239f5f24ba26e4b59e887ff67ca79e6a9b44" + }, + { + "title": "governance_voting.governance_voting.vote", + "redeemer": { + "title": "redeemer", + "schema": { + "$ref": "#/definitions/governance_voting~1VoteRedeemer" + } + }, + "compiledCode": "59040d01010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966003300130033754011223233001001003223300300130020029b87480012223232980098039baa001912cc004c014c024dd500144c966002601e0031330073758601c00244b300100280244c8c008c04800cdd71808001201c8b2018300a3754005164021300b005980580124444b30013370e900400244c8cc0100084c8cc89660026028003132325980099b8748010c044dd5000c4c8cc8966002602060286ea80062646464653001301c0019bad301c003980e0012444b3001302000489980c1bac301f007225980080144cc02c00c4cc02c0144ca600260020032232330010010032259800800c528c56600260066eb8c098006266004004604e00314a08109024488c8cc00400400c896600200314a115980099b8f375c604c00200714a31330020023027001408481212225980099b89375a602a60446ea8038c00cdd6181298111baa0178acc004cc008dd6181298111baa0172330023758604c60466ea803c0062b3001330023758604a60446ea805c8cc008dd618131813981398139813981398139813981398119baa0190018acc004cdc3980199198008009bac30263023375403044b30010018a5eb822646604e6ea4004cc00c00cc8cc004004c0a800c896600200314bd7044cc896600330013371e00400b4a14a2813a2660566ea4008cc0100100062660080080028138dd718150009815800a050375c604e0028128c00cdd6181298111baa0178992cc004c966002602460466ea80062946264b30013013302437540031337126eb4c0a0c094dd50011bad30283025375400314a08118c09cc090dd5181398121baa3002302437540348110c04cc08cdd5007c4c966002602460466ea80062946264b30013013302437540031337126eb4c0a0c094dd50009bad30283025375400514a08118c09cc090dd5180b98121baa3002302437540348110c098c09cc09cc09cc08cdd5007c52820422302630273027302730273027302730270018a50408114a08102294102045282040112cc0040062900044cdc024004660040046048002810a264600460460066eb8c08400901f45901d0c070004c06c004c068004c054dd5000c5901311192cc004c04400626464b3001301c0028024590191bad301a001301637540071598009802000c566002602c6ea800e00516405d16405080a0c050dd5001180b18099baa002370e9001459010180098089baa300430113754602800446028602a602a00316404464660020026eb0c008c03cdd5002912cc0040062900044cdc0240046600400460280028088dd6180098071baa004230113012001300f300c375400b15980099b874801801226466446600c0082944dd698080009808180880098061baa0058a50402880506014601600260140068a4d13656400401", + "hash": "e3bd510c6ccb2677f3274124b6314c605c5bb59b8aa244cb08749c5f" + }, + { + "title": "governance_voting.governance_voting.publish", + "redeemer": { + "title": "_redeemer", + "schema": { + "$ref": "#/definitions/governance_voting~1VoteRedeemer" + } + }, + "compiledCode": "59040d01010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966003300130033754011223233001001003223300300130020029b87480012223232980098039baa001912cc004c014c024dd500144c966002601e0031330073758601c00244b300100280244c8c008c04800cdd71808001201c8b2018300a3754005164021300b005980580124444b30013370e900400244c8cc0100084c8cc89660026028003132325980099b8748010c044dd5000c4c8cc8966002602060286ea80062646464653001301c0019bad301c003980e0012444b3001302000489980c1bac301f007225980080144cc02c00c4cc02c0144ca600260020032232330010010032259800800c528c56600260066eb8c098006266004004604e00314a08109024488c8cc00400400c896600200314a115980099b8f375c604c00200714a31330020023027001408481212225980099b89375a602a60446ea8038c00cdd6181298111baa0178acc004cc008dd6181298111baa0172330023758604c60466ea803c0062b3001330023758604a60446ea805c8cc008dd618131813981398139813981398139813981398119baa0190018acc004cdc3980199198008009bac30263023375403044b30010018a5eb822646604e6ea4004cc00c00cc8cc004004c0a800c896600200314bd7044cc896600330013371e00400b4a14a2813a2660566ea4008cc0100100062660080080028138dd718150009815800a050375c604e0028128c00cdd6181298111baa0178992cc004c966002602460466ea80062946264b30013013302437540031337126eb4c0a0c094dd50011bad30283025375400314a08118c09cc090dd5181398121baa3002302437540348110c04cc08cdd5007c4c966002602460466ea80062946264b30013013302437540031337126eb4c0a0c094dd50009bad30283025375400514a08118c09cc090dd5180b98121baa3002302437540348110c098c09cc09cc09cc08cdd5007c52820422302630273027302730273027302730270018a50408114a08102294102045282040112cc0040062900044cdc024004660040046048002810a264600460460066eb8c08400901f45901d0c070004c06c004c068004c054dd5000c5901311192cc004c04400626464b3001301c0028024590191bad301a001301637540071598009802000c566002602c6ea800e00516405d16405080a0c050dd5001180b18099baa002370e9001459010180098089baa300430113754602800446028602a602a00316404464660020026eb0c008c03cdd5002912cc0040062900044cdc0240046600400460280028088dd6180098071baa004230113012001300f300c375400b15980099b874801801226466446600c0082944dd698080009808180880098061baa0058a50402880506014601600260140068a4d13656400401", + "hash": "e3bd510c6ccb2677f3274124b6314c605c5bb59b8aa244cb08749c5f" + }, + { + "title": "governance_voting.governance_voting.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "59040d01010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966003300130033754011223233001001003223300300130020029b87480012223232980098039baa001912cc004c014c024dd500144c966002601e0031330073758601c00244b300100280244c8c008c04800cdd71808001201c8b2018300a3754005164021300b005980580124444b30013370e900400244c8cc0100084c8cc89660026028003132325980099b8748010c044dd5000c4c8cc8966002602060286ea80062646464653001301c0019bad301c003980e0012444b3001302000489980c1bac301f007225980080144cc02c00c4cc02c0144ca600260020032232330010010032259800800c528c56600260066eb8c098006266004004604e00314a08109024488c8cc00400400c896600200314a115980099b8f375c604c00200714a31330020023027001408481212225980099b89375a602a60446ea8038c00cdd6181298111baa0178acc004cc008dd6181298111baa0172330023758604c60466ea803c0062b3001330023758604a60446ea805c8cc008dd618131813981398139813981398139813981398119baa0190018acc004cdc3980199198008009bac30263023375403044b30010018a5eb822646604e6ea4004cc00c00cc8cc004004c0a800c896600200314bd7044cc896600330013371e00400b4a14a2813a2660566ea4008cc0100100062660080080028138dd718150009815800a050375c604e0028128c00cdd6181298111baa0178992cc004c966002602460466ea80062946264b30013013302437540031337126eb4c0a0c094dd50011bad30283025375400314a08118c09cc090dd5181398121baa3002302437540348110c04cc08cdd5007c4c966002602460466ea80062946264b30013013302437540031337126eb4c0a0c094dd50009bad30283025375400514a08118c09cc090dd5180b98121baa3002302437540348110c098c09cc09cc09cc08cdd5007c52820422302630273027302730273027302730270018a50408114a08102294102045282040112cc0040062900044cdc024004660040046048002810a264600460460066eb8c08400901f45901d0c070004c06c004c068004c054dd5000c5901311192cc004c04400626464b3001301c0028024590191bad301a001301637540071598009802000c566002602c6ea800e00516405d16405080a0c050dd5001180b18099baa002370e9001459010180098089baa300430113754602800446028602a602a00316404464660020026eb0c008c03cdd5002912cc0040062900044cdc0240046600400460280028088dd6180098071baa004230113012001300f300c375400b15980099b874801801226466446600c0082944dd698080009808180880098061baa0058a50402880506014601600260140068a4d13656400401", + "hash": "e3bd510c6ccb2677f3274124b6314c605c5bb59b8aa244cb08749c5f" + }, { "title": "mint.mint_policy.spend", "datum": { @@ -93,6 +172,155 @@ }, "compiledCode": "5903b101010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002646465300130053754003370e90004dc7a4410131009804801cc024009222225980099b87480080162646644b30013007300d3754003133225980099baf374cb30014a114bd6f7b63044c8c8cc0040052f5bded8c044b300100189980a99bb04c01014000374c00697adef6c608994c004dd71809800cdd5980a000cc0600092225980099b904890000389980c99bb04c01014000374c00e00b15980099b8f4890000389980c99bb04c01014000374c00e003133019337606ea400cdd300119803003000a02a405430160014050646600200297adef6c602259800800c4cc050cdd82610140004c01010a004bd6f7b63044ca60026eb8c0480066eb4c04c006602e0049112cc004cdc824410000389980c19bb04c010140004c01010a000058acc004cdc7a4410000389980c19bb04c010140004c01010a0000189980c19bb037520066ea0008cc0180180050142028180a800a02640386e98c8cc004004dd5980118089baa30143011375400644b30010018a5eb7bdb18226464664466446600400400244b300100189980d19bb037520066e980112f5bded8c1132325980099b9000500189980e19bb0375200a6e9801800e2b30013371e00a0031689980e19bb03752002603400466008008603c00680c10181bae3018001301b00140646600c00c603400a6464006646600200200644b30010018a4d13259800800c56600260086eb4c060c06c00a29345901644cc896600266e40dd7180c8011bae30190018acc004c018dd6980d00144cc014014cc070004c07800e2c80c22c80c0c06c008c06c005019180d800a030298009807000d28528a026375c60260046eacc04c004c054005013456600266e252000375a600260206ea800a260106eb801a294100e4528201c3011300e375400246024602600314a08060c03c004c03cc040004c02cdd5003456600266e1d20040058992cc004c014c02cdd500144c8c966002602400513006375c6022601c6ea80122c8078dd7180800098061baa0028b2014300e300b375400d15980099b87480180162646644b30013007300d37540091323259800980a00144c020dd7180998081baa0068b2022375c6024002601c6ea80122c8060dd698078009807980800098059baa0068acc004c010016264b30013005300b37540051323259800980900144cdc39bad3011300e3754008900145900f1bad3010001300c37540051640286eb8c038c02cdd500345900920124024804860106012002601000260066ea802229344d9590011", "hash": "0b7a8ebdc1c15fdfbe7acccb50e68c145bb5ae20e1cf1d4291517d98" + }, + { + "title": "mint_multi_validator.mint_multi_validator.spend", + "datum": { + "title": "datum_opt", + "schema": { + "$ref": "#/definitions/mint_multi_validator~1CounterDatum" + } + }, + "redeemer": { + "title": "redeemer", + "schema": { + "$ref": "#/definitions/mint_multi_validator~1SpendRedeemer" + } + }, + "compiledCode": "59044b01010029800aba2aba1aba0aab9faab9eaab9dab9a48888889660033001300337540112300730080019b87480026e0120029b8748009222223232980098049baa0019806803cc034009222598009803001c4c8cc89660026016601e6ea801226464b300130160028acc004c034c044dd5001c4c966002601c60246ea8006264b3001300f30133754003132598009807180a1baa0018acc004cdc39bad30183015375401266e00dd6980c180a9baa30183015375400c6eb4c060c054dd5001c66002b300133223322330020020012259800800c00e2646644b30013372200e00515980099b8f0070028800c01901a44cc014014c08001101a1bae301900137566034002603800280d0dd5980d180d980d980d980d980b9baa00c375c6030602a6ea800452f5bded8c114a314a080b2942945013452820268b2026301730143754602e60286ea8c040c050dd5180b980a1baa0018b202432330010013758602e60286ea8024896600200314c0103d87a80008992cc004cdd7980c980b1baa001008899ba548000cc0600052f5c1133003003301a0024050603000280b22c8088ca600200332330010013758602e60286ea8024896600200314bd7044cc05cc060c054dd5180c00099801001180c800a02ca400080088896600200514c103d87a80008acc004cdd7980c001003c4cdd2a40006602e6ea00052f5c119800801cc06400a601e0028019013202c8b20208b2026375a602800260206ea80122c8070c044004c044c048004c034dd50024566002601000713259800980498069baa0028992cc004c04c006264660020026eb0c04c0088966002003132598009919800800801112cc00400629462b30013233225980099b8748010c058dd5000c4c9660026026602e6ea800626464b3001301e00289919198008009bac301f301c375402044b30010018a508acc004cdd798100009ba73301f37500106603e6ea000d2f5c114a31330020023021001406c80f0cdc01bad301d301a375400600b16406c6eb4c070004c060dd5000c59016180d180b9baa0018b202a375a6030002603060326032602a6ea8c044c054dd5180c180c8009bac3017001899801001180c000c52820244055132323370e60026eb0c05cc050dd500418008019800800912cc0040062900044c038cc008008c060005015452820203233001001329800800d20009bac30163013375401080088896600200314bd7044cc05cdd39980b9ba80023301730180014bd704c00400e601e0053019001400c80b0896600200314bd7044cc896600264b3001300f3015375400313371e6eb8c064c058dd5000804c52820283018301537546030602a6ea8c044c054dd5180c180c80144cc05cdd380119802002000c4cc0100100050131bac30160013017001405113232332259800980c801c4cc018018c0640162c80b0dd6980b0009bad301600230160013758602800280922c8080c038dd500145900c1bae3010300d375400916402c80586018601a002601800a8a4d1365640041", + "hash": "1a928fb4e03a7842e0de455fbc2ef3b1a0e1e08591e63b4357161f0a" + }, + { + "title": "mint_multi_validator.mint_multi_validator.mint", + "redeemer": { + "title": "redeemer", + "schema": { + "$ref": "#/definitions/mint_multi_validator~1MintRedeemer" + } + }, + "compiledCode": "59044b01010029800aba2aba1aba0aab9faab9eaab9dab9a48888889660033001300337540112300730080019b87480026e0120029b8748009222223232980098049baa0019806803cc034009222598009803001c4c8cc89660026016601e6ea801226464b300130160028acc004c034c044dd5001c4c966002601c60246ea8006264b3001300f30133754003132598009807180a1baa0018acc004cdc39bad30183015375401266e00dd6980c180a9baa30183015375400c6eb4c060c054dd5001c66002b300133223322330020020012259800800c00e2646644b30013372200e00515980099b8f0070028800c01901a44cc014014c08001101a1bae301900137566034002603800280d0dd5980d180d980d980d980d980b9baa00c375c6030602a6ea800452f5bded8c114a314a080b2942945013452820268b2026301730143754602e60286ea8c040c050dd5180b980a1baa0018b202432330010013758602e60286ea8024896600200314c0103d87a80008992cc004cdd7980c980b1baa001008899ba548000cc0600052f5c1133003003301a0024050603000280b22c8088ca600200332330010013758602e60286ea8024896600200314bd7044cc05cc060c054dd5180c00099801001180c800a02ca400080088896600200514c103d87a80008acc004cdd7980c001003c4cdd2a40006602e6ea00052f5c119800801cc06400a601e0028019013202c8b20208b2026375a602800260206ea80122c8070c044004c044c048004c034dd50024566002601000713259800980498069baa0028992cc004c04c006264660020026eb0c04c0088966002003132598009919800800801112cc00400629462b30013233225980099b8748010c058dd5000c4c9660026026602e6ea800626464b3001301e00289919198008009bac301f301c375402044b30010018a508acc004cdd798100009ba73301f37500106603e6ea000d2f5c114a31330020023021001406c80f0cdc01bad301d301a375400600b16406c6eb4c070004c060dd5000c59016180d180b9baa0018b202a375a6030002603060326032602a6ea8c044c054dd5180c180c8009bac3017001899801001180c000c52820244055132323370e60026eb0c05cc050dd500418008019800800912cc0040062900044c038cc008008c060005015452820203233001001329800800d20009bac30163013375401080088896600200314bd7044cc05cdd39980b9ba80023301730180014bd704c00400e601e0053019001400c80b0896600200314bd7044cc896600264b3001300f3015375400313371e6eb8c064c058dd5000804c52820283018301537546030602a6ea8c044c054dd5180c180c80144cc05cdd380119802002000c4cc0100100050131bac30160013017001405113232332259800980c801c4cc018018c0640162c80b0dd6980b0009bad301600230160013758602800280922c8080c038dd500145900c1bae3010300d375400916402c80586018601a002601800a8a4d1365640041", + "hash": "1a928fb4e03a7842e0de455fbc2ef3b1a0e1e08591e63b4357161f0a" + }, + { + "title": "mint_multi_validator.mint_multi_validator.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "59044b01010029800aba2aba1aba0aab9faab9eaab9dab9a48888889660033001300337540112300730080019b87480026e0120029b8748009222223232980098049baa0019806803cc034009222598009803001c4c8cc89660026016601e6ea801226464b300130160028acc004c034c044dd5001c4c966002601c60246ea8006264b3001300f30133754003132598009807180a1baa0018acc004cdc39bad30183015375401266e00dd6980c180a9baa30183015375400c6eb4c060c054dd5001c66002b300133223322330020020012259800800c00e2646644b30013372200e00515980099b8f0070028800c01901a44cc014014c08001101a1bae301900137566034002603800280d0dd5980d180d980d980d980d980b9baa00c375c6030602a6ea800452f5bded8c114a314a080b2942945013452820268b2026301730143754602e60286ea8c040c050dd5180b980a1baa0018b202432330010013758602e60286ea8024896600200314c0103d87a80008992cc004cdd7980c980b1baa001008899ba548000cc0600052f5c1133003003301a0024050603000280b22c8088ca600200332330010013758602e60286ea8024896600200314bd7044cc05cc060c054dd5180c00099801001180c800a02ca400080088896600200514c103d87a80008acc004cdd7980c001003c4cdd2a40006602e6ea00052f5c119800801cc06400a601e0028019013202c8b20208b2026375a602800260206ea80122c8070c044004c044c048004c034dd50024566002601000713259800980498069baa0028992cc004c04c006264660020026eb0c04c0088966002003132598009919800800801112cc00400629462b30013233225980099b8748010c058dd5000c4c9660026026602e6ea800626464b3001301e00289919198008009bac301f301c375402044b30010018a508acc004cdd798100009ba73301f37500106603e6ea000d2f5c114a31330020023021001406c80f0cdc01bad301d301a375400600b16406c6eb4c070004c060dd5000c59016180d180b9baa0018b202a375a6030002603060326032602a6ea8c044c054dd5180c180c8009bac3017001899801001180c000c52820244055132323370e60026eb0c05cc050dd500418008019800800912cc0040062900044c038cc008008c060005015452820203233001001329800800d20009bac30163013375401080088896600200314bd7044cc05cdd39980b9ba80023301730180014bd704c00400e601e0053019001400c80b0896600200314bd7044cc896600264b3001300f3015375400313371e6eb8c064c058dd5000804c52820283018301537546030602a6ea8c044c054dd5180c180c80144cc05cdd380119802002000c4cc0100100050131bac30160013017001405113232332259800980c801c4cc018018c0640162c80b0dd6980b0009bad301600230160013758602800280922c8080c038dd500145900c1bae3010300d375400916402c80586018601a002601800a8a4d1365640041", + "hash": "1a928fb4e03a7842e0de455fbc2ef3b1a0e1e08591e63b4357161f0a" + }, + { + "title": "multisig.multisig.spend", + "datum": { + "title": "_datum", + "schema": { + "$ref": "#/definitions/multisig~1MultiSig" + } + }, + "redeemer": { + "title": "_redeemer", + "schema": { + "$ref": "#/definitions/ByteArray" + } + }, + "compiledCode": "585e01010029800aba2aba1aab9eaab9dab9a4888896600264646644b30013370e900118031baa0028994c004c02400660126014003375c601200891125118039baa0028a504014600c600e002600c004600c00260066ea801a29344d9590011", + "hash": "c13a66c2e5d357f55bcf69f23b3bafb184913c73b45008dceaf83aa2" + }, + { + "title": "multisig.multisig.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "585e01010029800aba2aba1aab9eaab9dab9a4888896600264646644b30013370e900118031baa0028994c004c02400660126014003375c601200891125118039baa0028a504014600c600e002600c004600c00260066ea801a29344d9590011", + "hash": "c13a66c2e5d357f55bcf69f23b3bafb184913c73b45008dceaf83aa2" + }, + { + "title": "simple_mint.simple_mint.withdraw", + "redeemer": { + "title": "redeemer", + "schema": { + "$ref": "#/definitions/simple_mint~1WithdrawRedeemer" + } + }, + "compiledCode": "59012901010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003370e90004c02000e601000491112cc004cdc3a400800913259800980218051baa002899192cc004c04000a266e3cdd7180798069baa0044890131008b201c375c601c00260166ea800a2c8048c030c028dd5002c56600266e1d200600489919912cc004c018c030dd500244c8c966002602400513371e6eb8c044c03cdd500324410131008b2020375c6020002601a6ea80122c8058dd698068009806980700098051baa0058acc004c00c012264b30013004300a37540051323259800980800144cdc39bad300f300d3754008900145900e1bad300e001300b37540051640246eb8c030c028dd5002c59008201040203007300800130070013003375400f149a26cac80081", + "hash": "5cee358e512c8064024b140fcdb7bc35bb4694d11ccccb7acb182b5c" + }, + { + "title": "simple_mint.simple_mint.publish", + "redeemer": { + "title": "redeemer", + "schema": { + "$ref": "#/definitions/simple_mint~1PublishRedeemer" + } + }, + "compiledCode": "59012901010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003370e90004c02000e601000491112cc004cdc3a400800913259800980218051baa002899192cc004c04000a266e3cdd7180798069baa0044890131008b201c375c601c00260166ea800a2c8048c030c028dd5002c56600266e1d200600489919912cc004c018c030dd500244c8c966002602400513371e6eb8c044c03cdd500324410131008b2020375c6020002601a6ea80122c8058dd698068009806980700098051baa0058acc004c00c012264b30013004300a37540051323259800980800144cdc39bad300f300d3754008900145900e1bad300e001300b37540051640246eb8c030c028dd5002c59008201040203007300800130070013003375400f149a26cac80081", + "hash": "5cee358e512c8064024b140fcdb7bc35bb4694d11ccccb7acb182b5c" + }, + { + "title": "simple_mint.simple_mint.mint", + "redeemer": { + "title": "redeemer", + "schema": { + "$ref": "#/definitions/simple_mint~1MintRedeemer" + } + }, + "compiledCode": "59012901010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003370e90004c02000e601000491112cc004cdc3a400800913259800980218051baa002899192cc004c04000a266e3cdd7180798069baa0044890131008b201c375c601c00260166ea800a2c8048c030c028dd5002c56600266e1d200600489919912cc004c018c030dd500244c8c966002602400513371e6eb8c044c03cdd500324410131008b2020375c6020002601a6ea80122c8058dd698068009806980700098051baa0058acc004c00c012264b30013004300a37540051323259800980800144cdc39bad300f300d3754008900145900e1bad300e001300b37540051640246eb8c030c028dd5002c59008201040203007300800130070013003375400f149a26cac80081", + "hash": "5cee358e512c8064024b140fcdb7bc35bb4694d11ccccb7acb182b5c" + }, + { + "title": "simple_mint.simple_mint.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "59012901010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003370e90004c02000e601000491112cc004cdc3a400800913259800980218051baa002899192cc004c04000a266e3cdd7180798069baa0044890131008b201c375c601c00260166ea800a2c8048c030c028dd5002c56600266e1d200600489919912cc004c018c030dd500244c8c966002602400513371e6eb8c044c03cdd500324410131008b2020375c6020002601a6ea80122c8058dd698068009806980700098051baa0058acc004c00c012264b30013004300a37540051323259800980800144cdc39bad300f300d3754008900145900e1bad300e001300b37540051640246eb8c030c028dd5002c59008201040203007300800130070013003375400f149a26cac80081", + "hash": "5cee358e512c8064024b140fcdb7bc35bb4694d11ccccb7acb182b5c" + }, + { + "title": "stake_multivalidator.stake_multivalidator.spend", + "datum": { + "title": "_datum", + "schema": { + "$ref": "#/definitions/Data" + } + }, + "redeemer": { + "title": "redeemer", + "schema": { + "$ref": "#/definitions/Int" + } + }, + "compiledCode": "59034601010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002664466446645300130083754005225980099b8800148002298103d87a8000899801801000a012918069807000cc03001a6018008911112cc004cdc3a400400b13298009809000cc048c04c0066600a6eb0c048c03cdd50019bad002488966002601c60226ea8006264b30013375e602c60266ea800401226466446600400400244b30010018a508acc004cdd7801980a980c800c528c4cc008008c068005014202e3756602e60306030603060306030603060286ea8020c058c04cdd5180b18099baa30083013375400314a08088c054c048dd5000c590100c038dd5003c56600266e1d20040058992cc004c02cc038dd500144c9660026028003132330010013758602800444b3001001899192cc004cdc3980099198008009bac30183015375401044b30010018a5eb82264660326ea0004cc00c00cc8cc004004c07000c896600200314bd7044cc896600330013370e00400b4a14a280ca26603a6ea0008cc01001000626600800800280c8dd6980e000980e800a034375a603200280b8c004dd6180b980a1baa0078acc004c8cc004004dd6180c180a9baa0082259800800c528c56600264b300130133016375400313375e6034602e6ea8c068c05cdd51806180b9baa301a30173754002013164054660186eb0c064c058dd50051bad3019001899801001180d000c5282028405d13370e60026eb0c05cc050dd5003994c0040066eb0c060c064c064c054dd5004d20004004444b30010028800c66002007301b002acc004cdd7980d180b9baa301a3017375460340040131337000029001440050152006406114a0809229410121800800912cc0040062900044cdc02400466004004603000280aa26466006006602e0046eb4c05400501345901118079baa0028b201a3011300e375400f15980099b87480180162646644b3001300d301037540091323259800980b8014528c590141bad30150013011375400916403c6eb4c048004c048c04c004c038dd5003c5900c20184030300a300b002300100130090022225980080145300103d87a80008acc004c010006266e9520003300a300b0024bd70466002007300c00299b8000148005003200c402460066ea8020dc3a4001149a26cac80081", + "hash": "f9159e1c2167d7157b355aa20466bb51b0b4b44852df381e2508c66a" + }, + { + "title": "stake_multivalidator.stake_multivalidator.withdraw", + "redeemer": { + "title": "redeemer", + "schema": { + "$ref": "#/definitions/stake_multivalidator~1WithdrawRedeemer" + } + }, + "compiledCode": "59034601010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002664466446645300130083754005225980099b8800148002298103d87a8000899801801000a012918069807000cc03001a6018008911112cc004cdc3a400400b13298009809000cc048c04c0066600a6eb0c048c03cdd50019bad002488966002601c60226ea8006264b30013375e602c60266ea800401226466446600400400244b30010018a508acc004cdd7801980a980c800c528c4cc008008c068005014202e3756602e60306030603060306030603060286ea8020c058c04cdd5180b18099baa30083013375400314a08088c054c048dd5000c590100c038dd5003c56600266e1d20040058992cc004c02cc038dd500144c9660026028003132330010013758602800444b3001001899192cc004cdc3980099198008009bac30183015375401044b30010018a5eb82264660326ea0004cc00c00cc8cc004004c07000c896600200314bd7044cc896600330013370e00400b4a14a280ca26603a6ea0008cc01001000626600800800280c8dd6980e000980e800a034375a603200280b8c004dd6180b980a1baa0078acc004c8cc004004dd6180c180a9baa0082259800800c528c56600264b300130133016375400313375e6034602e6ea8c068c05cdd51806180b9baa301a30173754002013164054660186eb0c064c058dd50051bad3019001899801001180d000c5282028405d13370e60026eb0c05cc050dd5003994c0040066eb0c060c064c064c054dd5004d20004004444b30010028800c66002007301b002acc004cdd7980d180b9baa301a3017375460340040131337000029001440050152006406114a0809229410121800800912cc0040062900044cdc02400466004004603000280aa26466006006602e0046eb4c05400501345901118079baa0028b201a3011300e375400f15980099b87480180162646644b3001300d301037540091323259800980b8014528c590141bad30150013011375400916403c6eb4c048004c048c04c004c038dd5003c5900c20184030300a300b002300100130090022225980080145300103d87a80008acc004c010006266e9520003300a300b0024bd70466002007300c00299b8000148005003200c402460066ea8020dc3a4001149a26cac80081", + "hash": "f9159e1c2167d7157b355aa20466bb51b0b4b44852df381e2508c66a" + }, + { + "title": "stake_multivalidator.stake_multivalidator.publish", + "redeemer": { + "title": "_redeemer", + "schema": { + "$ref": "#/definitions/stake_multivalidator~1PublishRedeemer" + } + }, + "compiledCode": "59034601010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002664466446645300130083754005225980099b8800148002298103d87a8000899801801000a012918069807000cc03001a6018008911112cc004cdc3a400400b13298009809000cc048c04c0066600a6eb0c048c03cdd50019bad002488966002601c60226ea8006264b30013375e602c60266ea800401226466446600400400244b30010018a508acc004cdd7801980a980c800c528c4cc008008c068005014202e3756602e60306030603060306030603060286ea8020c058c04cdd5180b18099baa30083013375400314a08088c054c048dd5000c590100c038dd5003c56600266e1d20040058992cc004c02cc038dd500144c9660026028003132330010013758602800444b3001001899192cc004cdc3980099198008009bac30183015375401044b30010018a5eb82264660326ea0004cc00c00cc8cc004004c07000c896600200314bd7044cc896600330013370e00400b4a14a280ca26603a6ea0008cc01001000626600800800280c8dd6980e000980e800a034375a603200280b8c004dd6180b980a1baa0078acc004c8cc004004dd6180c180a9baa0082259800800c528c56600264b300130133016375400313375e6034602e6ea8c068c05cdd51806180b9baa301a30173754002013164054660186eb0c064c058dd50051bad3019001899801001180d000c5282028405d13370e60026eb0c05cc050dd5003994c0040066eb0c060c064c064c054dd5004d20004004444b30010028800c66002007301b002acc004cdd7980d180b9baa301a3017375460340040131337000029001440050152006406114a0809229410121800800912cc0040062900044cdc02400466004004603000280aa26466006006602e0046eb4c05400501345901118079baa0028b201a3011300e375400f15980099b87480180162646644b3001300d301037540091323259800980b8014528c590141bad30150013011375400916403c6eb4c048004c048c04c004c038dd5003c5900c20184030300a300b002300100130090022225980080145300103d87a80008acc004c010006266e9520003300a300b0024bd70466002007300c00299b8000148005003200c402460066ea8020dc3a4001149a26cac80081", + "hash": "f9159e1c2167d7157b355aa20466bb51b0b4b44852df381e2508c66a" + }, + { + "title": "stake_multivalidator.stake_multivalidator.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "59034601010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002664466446645300130083754005225980099b8800148002298103d87a8000899801801000a012918069807000cc03001a6018008911112cc004cdc3a400400b13298009809000cc048c04c0066600a6eb0c048c03cdd50019bad002488966002601c60226ea8006264b30013375e602c60266ea800401226466446600400400244b30010018a508acc004cdd7801980a980c800c528c4cc008008c068005014202e3756602e60306030603060306030603060286ea8020c058c04cdd5180b18099baa30083013375400314a08088c054c048dd5000c590100c038dd5003c56600266e1d20040058992cc004c02cc038dd500144c9660026028003132330010013758602800444b3001001899192cc004cdc3980099198008009bac30183015375401044b30010018a5eb82264660326ea0004cc00c00cc8cc004004c07000c896600200314bd7044cc896600330013370e00400b4a14a280ca26603a6ea0008cc01001000626600800800280c8dd6980e000980e800a034375a603200280b8c004dd6180b980a1baa0078acc004c8cc004004dd6180c180a9baa0082259800800c528c56600264b300130133016375400313375e6034602e6ea8c068c05cdd51806180b9baa301a30173754002013164054660186eb0c064c058dd50051bad3019001899801001180d000c5282028405d13370e60026eb0c05cc050dd5003994c0040066eb0c060c064c064c054dd5004d20004004444b30010028800c66002007301b002acc004cdd7980d180b9baa301a3017375460340040131337000029001440050152006406114a0809229410121800800912cc0040062900044cdc02400466004004603000280aa26466006006602e0046eb4c05400501345901118079baa0028b201a3011300e375400f15980099b87480180162646644b3001300d301037540091323259800980b8014528c590141bad30150013011375400916403c6eb4c048004c048c04c004c038dd5003c5900c20184030300a300b002300100130090022225980080145300103d87a80008acc004c010006266e9520003300a300b0024bd70466002007300c00299b8000148005003200c402460066ea8020dc3a4001149a26cac80081", + "hash": "f9159e1c2167d7157b355aa20466bb51b0b4b44852df381e2508c66a" } ], "definitions": { @@ -123,12 +351,36 @@ "Int": { "dataType": "integer" }, + "List$ByteArray": { + "dataType": "list", + "items": { + "$ref": "#/definitions/ByteArray" + } + }, + "List$Int": { + "dataType": "list", + "items": { + "$ref": "#/definitions/Int" + } + }, + "List$Tuple$Int_Int": { + "dataType": "list", + "items": { + "$ref": "#/definitions/Tuple$Int_Int" + } + }, "List$cardano/address/Address": { "dataType": "list", "items": { "$ref": "#/definitions/cardano~1address~1Address" } }, + "List$multisig/MultiSig": { + "dataType": "list", + "items": { + "$ref": "#/definitions/multisig~1MultiSig" + } + }, "Never": { "title": "Never", "anyOf": [ @@ -246,6 +498,18 @@ "String": { "dataType": "bytes" }, + "Tuple$Int_Int": { + "title": "Tuple", + "dataType": "list", + "items": [ + { + "$ref": "#/definitions/Int" + }, + { + "$ref": "#/definitions/Int" + } + ] + }, "Void": { "title": "Unit", "anyOf": [ @@ -861,6 +1125,42 @@ } ] }, + "governance_voting/SimpleVoteRedeemer": { + "title": "SimpleVoteRedeemer", + "description": "Simple vote redeemer for always-yes validator", + "anyOf": [ + { + "title": "SimpleVoteRedeemer", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "data", + "description": "Any data can be passed", + "$ref": "#/definitions/Data" + } + ] + } + ] + }, + "governance_voting/VoteRedeemer": { + "title": "VoteRedeemer", + "description": "Redeemer for vote purpose - just contains participating signers\n Config is read from the single reference input", + "anyOf": [ + { + "title": "VoteRedeemer", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "participating_signers", + "description": "List of signers participating in this vote (for quorum validation)", + "$ref": "#/definitions/List$ByteArray" + } + ] + } + ] + }, "mint/AssetsMap": { "title": "AssetsMap", "dataType": "map", @@ -1042,6 +1342,234 @@ ] } ] + }, + "mint_multi_validator/CounterDatum": { + "title": "CounterDatum", + "description": "Datum stored in UTxO - a base counter value", + "anyOf": [ + { + "title": "CounterDatum", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "counter", + "$ref": "#/definitions/Int" + } + ] + } + ] + }, + "mint_multi_validator/MintRedeemer": { + "title": "MintRedeemer", + "description": "Mint redeemer: list of (index, value) pairs for all script inputs", + "anyOf": [ + { + "title": "MintRedeemer", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "entries", + "$ref": "#/definitions/List$Tuple$Int_Int" + } + ] + } + ] + }, + "mint_multi_validator/SpendRedeemer": { + "title": "SpendRedeemer", + "description": "Spend redeemer: must be datum.counter + own_index", + "anyOf": [ + { + "title": "SpendRedeemer", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "value", + "$ref": "#/definitions/Int" + } + ] + } + ] + }, + "multisig/MultiSig": { + "title": "MultiSig", + "description": "Recursive multisig policy type — mirrors the NativeScript structure.\n Used to verify the blueprint codegen correctly handles self-referential types.", + "anyOf": [ + { + "title": "Signature", + "description": "A single required signature.", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "key_hash", + "$ref": "#/definitions/ByteArray" + } + ] + }, + { + "title": "AllOf", + "description": "All scripts must be satisfied (AND).", + "dataType": "constructor", + "index": 1, + "fields": [ + { + "title": "scripts", + "$ref": "#/definitions/List$multisig~1MultiSig" + } + ] + }, + { + "title": "AnyOf", + "description": "Any one script must be satisfied (OR).", + "dataType": "constructor", + "index": 2, + "fields": [ + { + "title": "scripts", + "$ref": "#/definitions/List$multisig~1MultiSig" + } + ] + }, + { + "title": "AtLeast", + "description": "At least `required` scripts must be satisfied (M-of-N).", + "dataType": "constructor", + "index": 3, + "fields": [ + { + "title": "required", + "$ref": "#/definitions/Int" + }, + { + "title": "scripts", + "$ref": "#/definitions/List$multisig~1MultiSig" + } + ] + }, + { + "title": "Before", + "description": "Valid only before this slot.", + "dataType": "constructor", + "index": 4, + "fields": [ + { + "title": "time", + "$ref": "#/definitions/Int" + } + ] + }, + { + "title": "After", + "description": "Valid only after this slot.", + "dataType": "constructor", + "index": 5, + "fields": [ + { + "title": "time", + "$ref": "#/definitions/Int" + } + ] + }, + { + "title": "Script", + "description": "A script hash that must be present.", + "dataType": "constructor", + "index": 6, + "fields": [ + { + "title": "script_hash", + "$ref": "#/definitions/ByteArray" + } + ] + } + ] + }, + "simple_mint/MintRedeemer": { + "title": "MintRedeemer", + "anyOf": [ + { + "title": "MintRedeemer", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "idx", + "$ref": "#/definitions/Int" + } + ] + } + ] + }, + "simple_mint/PublishRedeemer": { + "title": "PublishRedeemer", + "anyOf": [ + { + "title": "PublishRedeemer", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "msg", + "$ref": "#/definitions/ByteArray" + } + ] + } + ] + }, + "simple_mint/WithdrawRedeemer": { + "title": "WithdrawRedeemer", + "anyOf": [ + { + "title": "WithdrawRedeemer", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "msg", + "$ref": "#/definitions/ByteArray" + } + ] + } + ] + }, + "stake_multivalidator/PublishRedeemer": { + "title": "PublishRedeemer", + "description": "Redeemer for publish (certificates): allows any action\n Could be extended to restrict certain operations", + "anyOf": [ + { + "title": "PublishRedeemer", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "placeholder", + "description": "Placeholder - certificates always allowed for this validator", + "$ref": "#/definitions/Int" + } + ] + } + ] + }, + "stake_multivalidator/WithdrawRedeemer": { + "title": "WithdrawRedeemer", + "description": "Redeemer for withdraw: list of input indices being coordinated", + "anyOf": [ + { + "title": "WithdrawRedeemer", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "input_indices", + "$ref": "#/definitions/List$Int" + } + ] + } + ] } } } \ No newline at end of file diff --git a/packages/evolution/src/blueprint/codegen-config.ts b/packages/evolution/src/blueprint/codegen-config.ts index 92cc274a..98239d64 100644 --- a/packages/evolution/src/blueprint/codegen-config.ts +++ b/packages/evolution/src/blueprint/codegen-config.ts @@ -17,8 +17,9 @@ export type OptionStyle = * Configuration for how to generate union types with named constructors */ export type UnionStyle = - | "Variant" // TSchema.Variant({ Tag1: { ... }, Tag2: { ... } }) - | "TaggedStruct" // TSchema.Union(TaggedStruct("Tag1", ...), TaggedStruct("Tag2", ...)) + | "Variant" // TSchema.Variant({ Tag1: { ... }, Tag2: { ... } }) — compact sugar + | "Struct" // TSchema.Union(TSchema.Struct({ Tag1: TSchema.Struct({...}) }), ...) — verbose, same encoding as Variant + | "TaggedStruct" // TSchema.Union(TaggedStruct("Tag1", ...), TaggedStruct("Tag2", ...)) — Effect _tag style /** * Configuration for how to generate empty constructors @@ -67,14 +68,6 @@ export interface CodegenConfig { */ unionStyle: UnionStyle - /** - * Force Variant style even when Blueprint fields are unnamed - * When true, will use custom field names from variantFieldNames map - * or fall back to singleFieldName/multiFieldPattern - * @default false - */ - forceVariant?: boolean - /** * Custom field names for Variant constructors when Blueprint has unnamed fields * Map from "TypeTitle.ConstructorTitle" to array of field names @@ -102,13 +95,6 @@ export interface CodegenConfig { */ includeIndex: boolean - /** - * Whether to use `Schema.suspend()` for forward references - * Only disable if you're sure there are no circular dependencies - * @default true - */ - useSuspend: boolean - /** * Module organization strategy * - "flat": Current behavior (CardanoAddressCredential) @@ -125,14 +111,14 @@ export interface CodegenConfig { useRelativeRefs: boolean /** - * Explicit import lines for Data, TSchema, and effect modules + * Explicit import lines for Data, TSchema, and Schema modules * e.g. data: 'import { Data } from "@evolution-sdk/evolution/Data"' */ imports: { data: string tschema: string - /** Optional explicit import line for Effect Schema (`Schema`). Omit to skip emitting it. */ - effect?: string + /** Import line for Effect Schema. Used when cyclic types require `Schema.suspend`. */ + schema: string } /** @@ -154,12 +140,12 @@ export const DEFAULT_CODEGEN_CONFIG: CodegenConfig = { multiFieldPattern: "field{index}" }, includeIndex: false, - useSuspend: true, moduleStrategy: "flat", useRelativeRefs: true, imports: { data: 'import { Data } from "@evolution-sdk/evolution/Data"', - tschema: 'import { TSchema } from "@evolution-sdk/evolution/TSchema"' + tschema: 'import { TSchema } from "@evolution-sdk/evolution/TSchema"', + schema: 'import { Schema } from "@evolution-sdk/evolution"' }, indent: " " } diff --git a/packages/evolution/src/blueprint/codegen.ts b/packages/evolution/src/blueprint/codegen.ts index 555d694d..3d82a482 100644 --- a/packages/evolution/src/blueprint/codegen.ts +++ b/packages/evolution/src/blueprint/codegen.ts @@ -126,6 +126,79 @@ function resolveReference(refName: string, currentNamespace: string, config: Cod return `${nsRef}.${refType}` } +/** + * Recursively infer the TypeScript-level encoded type string for a blueprint schema definition. + * + * This corresponds to the `I` (Encoded) type parameter in `Schema.Schema` and is used + * to write accurate `Schema.suspend((): Schema.Schema => ref)` thunk annotations for cyclic + * types. The encoded type is the Plutus Data wire format that the TSchema combinator operates on. + * + * Mapping (blueprint schema → TSchema combinator → encoded type): + * constructor / anyOf (union) → TSchema.Struct / TSchema.Union → Data.Constr + * bytes → TSchema.ByteArray → Uint8Array + * integer → TSchema.Integer → bigint + * list → TSchema.Array → readonly ItemEncoded[] + * map → TSchema.Map → globalThis.Map + * $ref → (lookup + recurse) + * Data / unknown → TSchema.PlutusData → Data.Data + */ +function inferEncodedTypeString( + def: BlueprintTypes.SchemaDefinitionType, + definitions: Record, + depth = 0 +): string { + if (depth > 10) return "Data.Data" + + if ("$ref" in def) { + const refName = def.$ref.replace("#/definitions/", "").replace(/~1/g, "/").replace(/~0/g, "~") + if (refName === "Data") return "Data.Data" + const refDef = definitions[refName] + return refDef ? inferEncodedTypeString(refDef, definitions, depth + 1) : "Data.Data" + } + + if ("title" in def && def.title === "Data") return "Data.Data" + + if ("anyOf" in def) return "Data.Constr" + + if ("dataType" in def) { + switch (def.dataType) { + case "constructor": + return "Data.Constr" + case "bytes": + return "Uint8Array" + case "integer": + return "bigint" + case "list": { + const listDef = def as BlueprintTypes.ListDefinitionType + if (!listDef.items) return "ReadonlyArray" + const itemEnc = inferEncodedTypeString( + listDef.items as BlueprintTypes.SchemaDefinitionType, + definitions, + depth + 1 + ) + return `ReadonlyArray<${itemEnc}>` + } + case "map": + // TSchema.Map encodes from/to globalThis.Map regardless of K/V + return "globalThis.Map" + } + } + + return "Data.Data" +} + +/** + * Returns the encoded (Plutus Data) type string for a cyclic suspend thunk annotation. + */ +function getEncodedType( + refName: string, + definitions: Record +): string { + const def = definitions[refName] + if (!def) return "Data.Data" + return inferEncodedTypeString(def, definitions) +} + /** * Generate TSchema code for a schema definition */ @@ -135,7 +208,8 @@ function generateTSchema( config: CodegenConfig, currentNamespace: string = "", indent: string = config.indent, - definitionKey?: string + definitionKey?: string, + cyclicNames: Set = new Set() ): string { // Handle schema references if ("$ref" in def) { @@ -145,7 +219,7 @@ function generateTSchema( if (refName === "Data") return "PlutusData" const refId = resolveReference(refName, currentNamespace, config) - return config.useSuspend ? `Schema.suspend(() => ${refId})` : refId + return cyclicNames.has(refName) ? `Schema.suspend((): Schema.Schema<${refId}, ${getEncodedType(refName, definitions)}> => ${refId})` : refId } // Handle Data type (opaque plutus data) @@ -194,14 +268,16 @@ function generateTSchema( const refName = refPath.replace(/~1/g, "/").replace(/~0/g, "~") // Use lazy reference for recursive types const refId = resolveReference(refName, currentNamespace, config) - fieldSchema = config.useSuspend ? `Schema.suspend(() => ${refId})` : refId + fieldSchema = cyclicNames.has(refName) ? `Schema.suspend((): Schema.Schema<${refId}, ${getEncodedType(refName, definitions)}> => ${refId})` : refId } else if (field.schema) { fieldSchema = generateTSchema( field.schema, definitions, config, currentNamespace, - indent + config.indent + config.indent + indent + config.indent + config.indent, + undefined, + cyclicNames ) } else { fieldSchema = "PlutusData" @@ -225,10 +301,11 @@ function generateTSchema( definitions, config, currentNamespace, - indent + indent, + undefined, + cyclicNames ) - // Wrap in Schema.suspend to handle forward references - return config.useSuspend ? `TSchema.Array(Schema.suspend(() => ${itemType}))` : `TSchema.Array(${itemType})` + return `TSchema.Array(${itemType})` } case "map": { @@ -245,19 +322,20 @@ function generateTSchema( definitions, config, currentNamespace, - indent + indent, + undefined, + cyclicNames ) const valueType = generateTSchema( valuesSchema as BlueprintTypes.SchemaDefinitionType, definitions, config, currentNamespace, - indent + indent, + undefined, + cyclicNames ) - // Wrap in Schema.suspend to handle forward references - return config.useSuspend - ? `TSchema.Map(Schema.suspend(() => ${keyType}), Schema.suspend(() => ${valueType}))` - : `TSchema.Map(${keyType}, ${valueType})` + return `TSchema.Map(${keyType}, ${valueType})` } default: @@ -303,11 +381,9 @@ function generateTSchema( const refPath = field.$ref.replace("#/definitions/", "") const refName = refPath.replace(/~1/g, "/").replace(/~0/g, "~") const refIdentifier = resolveReference(refName, currentNamespace, config) - // Only wrap in Schema.suspend if config allows and it's not a primitive - const isPrimitive = refIdentifier === "ByteArray" || refIdentifier === "Int" || refIdentifier === "PlutusData" - innerType = isPrimitive || !config.useSuspend ? refIdentifier : `Schema.suspend(() => ${refIdentifier})` + innerType = cyclicNames.has(refName) ? `Schema.suspend((): Schema.Schema<${refIdentifier}, ${getEncodedType(refName, definitions)}> => ${refIdentifier})` : refIdentifier } else if (field.schema) { - innerType = generateTSchema(field.schema, definitions, config, currentNamespace, indent) + innerType = generateTSchema(field.schema, definitions, config, currentNamespace, indent, undefined, cyclicNames) } else { innerType = "PlutusData" } @@ -354,14 +430,16 @@ function generateTSchema( const refPath = field.$ref.replace("#/definitions/", "") const refName = refPath.replace(/~1/g, "/").replace(/~0/g, "~") const refId = resolveReference(refName, currentNamespace, config) - fieldSchema = config.useSuspend ? `Schema.suspend(() => ${refId})` : refId + fieldSchema = cyclicNames.has(refName) ? `Schema.suspend((): Schema.Schema<${refId}, ${getEncodedType(refName, definitions)}> => ${refId})` : refId } else if (field.schema) { fieldSchema = generateTSchema( field.schema, definitions, config, currentNamespace, - indent + config.indent + config.indent + indent + config.indent + config.indent, + undefined, + cyclicNames ) } else { fieldSchema = "PlutusData" @@ -373,12 +451,6 @@ function generateTSchema( return `TSchema.Struct({\n${fieldSchemas.join(",\n")}\n${indent}${config.indent}})` } - // Check if all variants have at least one named field - const allHaveNamedFields = unionDef.anyOf.every((member) => { - const constructorMember = member as BlueprintTypes.ConstructorDefinitionType - return constructorMember.fields?.some((f) => f.title) - }) - // Get the type title for custom field name lookup const typeTitle = "title" in def ? (def as { title?: string }).title : undefined @@ -388,13 +460,18 @@ function generateTSchema( return constructorMember.fields?.length === 0 }) - // Use Union with mixed Struct/Literal if there are empty constructors and Literal style is preferred - const useUnionWithLiterals = hasEmptyConstructors && config.emptyConstructorStyle === "Literal" + // When TaggedStruct style is selected and there are empty constructors with Literal style, + // use the Union-with-literals path instead of plain TaggedStruct. + const useUnionWithLiterals = hasEmptyConstructors && config.emptyConstructorStyle === "Literal" && config.unionStyle !== "Variant" + + const useVariant = config.unionStyle === "Variant" + const useExplicitUnion = config.unionStyle === "Struct" + + if ((useVariant || useExplicitUnion) && !useUnionWithLiterals) { + // Generate Variant or explicit Union — both use object-key discriminant ({ TagName: { ...fields } }) + const variantFields: Array = [] // for Variant output + const explicitUnionMembers: Array = [] // for Union output - // Use Variant if fields are named OR if forceVariant is enabled (and not using Union with Literals) - if ((allHaveNamedFields || config.forceVariant) && !useUnionWithLiterals) { - // Generate Variant with named tags and fields - const variantFields: Array = [] for (const member of unionDef.anyOf) { const constructorMember = member as BlueprintTypes.ConstructorDefinitionType const tag = constructorMember.title! @@ -430,14 +507,16 @@ function generateTSchema( const refPath = field.$ref.replace("#/definitions/", "") const refName = refPath.replace(/~1/g, "/").replace(/~0/g, "~") const refId = resolveReference(refName, currentNamespace, config) - fieldSchema = config.useSuspend ? `Schema.suspend(() => ${refId})` : refId + fieldSchema = cyclicNames.has(refName) ? `Schema.suspend((): Schema.Schema<${refId}, ${getEncodedType(refName, definitions)}> => ${refId})` : refId } else if (field.schema) { fieldSchema = generateTSchema( field.schema, definitions, config, currentNamespace, - indent + config.indent + config.indent + config.indent + indent + config.indent + config.indent + config.indent, + undefined, + cyclicNames ) } else { fieldSchema = "PlutusData" @@ -446,12 +525,26 @@ function generateTSchema( fieldSchemas.push(`${fieldName}: ${fieldSchema}`) } - variantFields.push( - `${indent}${config.indent}${config.indent}${tag}: {\n${fieldSchemas.map((f) => `${indent}${config.indent}${config.indent}${config.indent}${f}`).join(",\n")}\n${indent}${config.indent}${config.indent}}` - ) + if (useVariant) { + variantFields.push( + `${indent}${config.indent}${config.indent}${tag}: {\n${fieldSchemas.map((f) => `${indent}${config.indent}${config.indent}${config.indent}${f}`).join(",\n")}\n${indent}${config.indent}${config.indent}}` + ) + } else { + // Explicit Union style: TSchema.Struct({ TagName: TSchema.Struct({ ...fields }, { flatFields: true }) }, { flatInUnion: true }) + const innerFieldsStr = + fieldSchemas.length > 0 + ? `{\n${fieldSchemas.map((f) => `${indent}${config.indent}${config.indent}${config.indent}${f}`).join(",\n")}\n${indent}${config.indent}${config.indent}}` + : "{}" + explicitUnionMembers.push( + `${indent}${config.indent}TSchema.Struct({ ${tag}: TSchema.Struct(${innerFieldsStr}, { flatFields: true }) }, { flatInUnion: true })` + ) + } } - return `TSchema.Variant({\n${variantFields.join(",\n")}\n${indent}${config.indent}})` + if (useVariant) { + return `TSchema.Variant({\n${variantFields.join(",\n")}\n${indent}${config.indent}})` + } + return `TSchema.Union(\n${explicitUnionMembers.join(",\n")}\n${indent})` } else if (useUnionWithLiterals) { // Generate Union with mixed TSchema.Struct and TSchema.Literal for empty constructors const unionMembers: Array = [] @@ -489,14 +582,16 @@ function generateTSchema( const refPath = field.$ref.replace("#/definitions/", "") const refName = refPath.replace(/~1/g, "/").replace(/~0/g, "~") const refId = resolveReference(refName, currentNamespace, config) - fieldSchema = config.useSuspend ? `Schema.suspend(() => ${refId})` : refId + fieldSchema = cyclicNames.has(refName) ? `Schema.suspend((): Schema.Schema<${refId}, ${getEncodedType(refName, definitions)}> => ${refId})` : refId } else if (field.schema) { fieldSchema = generateTSchema( field.schema, definitions, config, currentNamespace, - indent + config.indent + config.indent + indent + config.indent + config.indent, + undefined, + cyclicNames ) } else { fieldSchema = "PlutusData" @@ -532,14 +627,16 @@ function generateTSchema( const refPath = field.$ref.replace("#/definitions/", "") const refName = refPath.replace(/~1/g, "/").replace(/~0/g, "~") const refId = resolveReference(refName, currentNamespace, config) - fieldSchema = config.useSuspend ? `Schema.suspend(() => ${refId})` : refId + fieldSchema = cyclicNames.has(refName) ? `Schema.suspend((): Schema.Schema<${refId}, ${getEncodedType(refName, definitions)}> => ${refId})` : refId } else if (field.schema) { fieldSchema = generateTSchema( field.schema, definitions, config, currentNamespace, - indent + config.indent + config.indent + indent + config.indent + config.indent, + undefined, + cyclicNames ) } else { fieldSchema = "PlutusData" @@ -559,7 +656,7 @@ function generateTSchema( // Otherwise use regular Union const members = def.anyOf.map((memberDef) => - generateTSchema(memberDef, definitions, config, currentNamespace, indent) + generateTSchema(memberDef, definitions, config, currentNamespace, indent, undefined, cyclicNames) ) return `TSchema.Union(\n${indent} ${members.join(`,\n${indent} `)}\n${indent})` } @@ -633,19 +730,138 @@ function extractDependencies( } /** - * Topologically sort definitions to ensure dependencies come first + * Generate a TypeScript type string for a blueprint schema definition. + * Used to emit explicit `type` aliases before recursive `const` declarations. + */ +function generateTSType( + def: BlueprintTypes.SchemaDefinitionType, + definitions: Record, + currentNamespace: string, + config: CodegenConfig, + visitedRefs: Set = new Set() +): string { + if ("$ref" in def) { + const refPath = (def as { $ref: string }).$ref.replace("#/definitions/", "") + const refName = refPath.replace(/~1/g, "/").replace(/~0/g, "~") + if (refName === "Data") return "unknown" + // Cycle — use the qualified type name we will declare + if (visitedRefs.has(refName)) { + return resolveReference(refName, currentNamespace, config) + } + const refDef = definitions[refName] + if (!refDef) return "unknown" + const newVisited = new Set(visitedRefs) + newVisited.add(refName) + return generateTSType(refDef, definitions, getNamespacePath(refName), config, newVisited) + } + + if ("dataType" in def) { + switch ((def as { dataType: string }).dataType) { + case "bytes": + return "Uint8Array" + case "integer": + return "bigint" + case "list": { + const listDef = def as BlueprintTypes.ListDefinitionType + const itemType = listDef.items + ? generateTSType( + listDef.items as BlueprintTypes.SchemaDefinitionType, + definitions, + currentNamespace, + config, + visitedRefs + ) + : "unknown" + return `ReadonlyArray<${itemType}>` + } + case "map": { + const mapDef = def as BlueprintTypes.MapDefinitionType + const keyType = mapDef.keys + ? generateTSType( + mapDef.keys as BlueprintTypes.SchemaDefinitionType, + definitions, + currentNamespace, + config, + visitedRefs + ) + : "unknown" + const valType = mapDef.values + ? generateTSType( + mapDef.values as BlueprintTypes.SchemaDefinitionType, + definitions, + currentNamespace, + config, + visitedRefs + ) + : "unknown" + return `ReadonlyMap<${keyType}, ${valType}>` + } + case "constructor": { + const ctorDef = def as BlueprintTypes.ConstructorDefinitionType + if (!ctorDef.fields || ctorDef.fields.length === 0) return "Record" + const fieldStrings = ctorDef.fields.map((f) => { + const fname = (f as { title?: string }).title ?? "field" + let ftype: string + if ("$ref" in f) { + ftype = generateTSType(f as BlueprintTypes.SchemaDefinitionType, definitions, currentNamespace, config, visitedRefs) + } else if ("schema" in f && (f as { schema?: BlueprintTypes.SchemaDefinitionType }).schema) { + ftype = generateTSType( + (f as { schema: BlueprintTypes.SchemaDefinitionType }).schema, + definitions, + currentNamespace, + config, + visitedRefs + ) + } else { + ftype = "unknown" + } + return `readonly ${fname}: ${ftype}` + }) + return `{ ${fieldStrings.join("; ")} }` + } + } + } + + if ("anyOf" in def) { + const unionDef = def as BlueprintTypes.UnionDefinitionType + if ((def as { title?: string }).title === "Bool") return "boolean" + const variants = unionDef.anyOf.map((variant) => { + const ctorDef = variant as BlueprintTypes.ConstructorDefinitionType + if ((ctorDef as { dataType?: string }).dataType !== "constructor") { + return generateTSType(variant, definitions, currentNamespace, config, visitedRefs) + } + const title = (ctorDef as { title?: string }).title ?? "Unknown" + if (!ctorDef.fields || ctorDef.fields.length === 0) { + return `{ readonly ${title}: Record }` + } + const inner = generateTSType(variant, definitions, currentNamespace, config, visitedRefs) + return `{ readonly ${title}: ${inner} }` + }) + return variants.join(" | ") + } + + return "unknown" +} + +/** + * Topologically sort definitions to ensure dependencies come first. + * Also returns the set of definition names that participate in a cycle. */ function topologicalSort( definitions: Record -): Array<[string, BlueprintTypes.SchemaDefinitionType]> { +): { sorted: Array<[string, BlueprintTypes.SchemaDefinitionType]>; cyclicNames: Set } { const sorted: Array<[string, BlueprintTypes.SchemaDefinitionType]> = [] const visited = new Set() const visiting = new Set() + const cyclicNames = new Set() function visit(name: string): void { if (visited.has(name)) return if (visiting.has(name)) { - // Circular dependency detected - skip to avoid infinite loop + // Circular dependency detected — mark everything in the current visiting stack + for (const inStack of visiting) { + cyclicNames.add(inStack) + } return } @@ -670,7 +886,7 @@ function topologicalSort( visit(name) } - return sorted + return { sorted, cyclicNames } } /** @@ -682,14 +898,18 @@ export function generateTypeScript( ): string { const lines: Array = [] + // Topologically sort definitions to ensure dependencies come first + // (must happen before imports so we know if cyclic types exist) + const { cyclicNames, sorted: sortedDefinitions } = topologicalSort(blueprint.definitions) + // File header lines.push("/**") lines.push(` * Generated from Blueprint: ${blueprint.preamble.title}`) lines.push(` * @generated - Do not edit manually`) lines.push(" */") lines.push("") - if (config.imports.effect) { - lines.push(config.imports.effect) + if (cyclicNames.size > 0) { + lines.push(config.imports.schema) } lines.push(config.imports.data) lines.push(config.imports.tschema) @@ -704,9 +924,6 @@ export function generateTypeScript( lines.push("export const PlutusData = TSchema.PlutusData") lines.push("") - // Topologically sort definitions to ensure dependencies come first - const sortedDefinitions = topologicalSort(blueprint.definitions) - if (config.moduleStrategy === "namespaced") { // First, topologically sort ALL definitions globally const globallySortedDefs = sortedDefinitions @@ -734,7 +951,7 @@ export function generateTypeScript( // Use flattened name for primitives (handles $ and / characters) const primitiveName = getTypeName(fullName) - const schemaDefinition = generateTSchema(def, blueprint.definitions, config, "", "", primitiveName) + const schemaDefinition = generateTSchema(def, blueprint.definitions, config, "", "", primitiveName, cyclicNames) // Add JSDoc comment if ("title" in def && def.title) { @@ -750,77 +967,73 @@ export function generateTypeScript( lines.push("") } - // Group namespaced types by namespace while preserving topological order - const namespaceGroups = new Map>() - for (const [fullName, def] of namespacedTypes) { - const namespacePath = getNamespacePath(fullName) - if (!namespaceGroups.has(namespacePath)) { - namespaceGroups.set(namespacePath, []) + // Emit types in global topological order, opening/closing namespace blocks as each + // type's namespace changes. TypeScript namespace declaration merging (handled by esbuild/tsc) + // safely merges repeated same-namespace blocks, giving correct runtime initialization order + // even when two namespaces have a mutual dependency (e.g. Option ↔ Cardano.Address). + let currentNs = "" + let nsIndent = "" + + const closeCurrentNs = (): void => { + if (!currentNs) return + const levels = currentNs.split("/") + for (let i = levels.length - 1; i >= 0; i--) { + nsIndent = nsIndent.slice(0, -2) + lines.push(`${nsIndent}}`) } - namespaceGroups.get(namespacePath)!.push([fullName, def]) + lines.push("") + currentNs = "" + nsIndent = "" } - // Track which namespaces have been opened/closed - const openNamespaces: Array = [] - let currentIndent = "" + const openNs = (ns: string): void => { + currentNs = ns + for (const level of ns.split("/")) { + const nsName = level.charAt(0).toUpperCase() + level.slice(1) + lines.push(`${nsIndent}export namespace ${nsName} {`) + nsIndent += " " + } + } - // Generate types in topological order, opening/closing namespaces as needed for (const [fullName, typeDef] of namespacedTypes) { - const namespacePath = getNamespacePath(fullName) - const nsLevels = namespacePath.split("/") - const fullNsPath = nsLevels.join("/") - - // Check if we need to close any namespaces - while (openNamespaces.length > 0 && !fullNsPath.startsWith(openNamespaces.join("/"))) { - openNamespaces.pop() - currentIndent = currentIndent.slice(0, -2) - lines.push(`${currentIndent}}`) - lines.push("") - } - - // Check if we need to open any new namespaces - for (let i = 0; i < nsLevels.length; i++) { - const partialPath = nsLevels.slice(0, i + 1).join("/") - if (!openNamespaces.join("/").startsWith(partialPath) || openNamespaces.length <= i) { - const nsName = nsLevels[i].charAt(0).toUpperCase() + nsLevels[i].slice(1) - lines.push(`${currentIndent}export namespace ${nsName} {`) - currentIndent += " " - openNamespaces.push(nsLevels[i]) - } + const ns = getNamespacePath(fullName) + if (ns !== currentNs) { + closeCurrentNs() + openNs(ns) } - // Generate the type const typeName = getTypeName(fullName) + const isCyclic = cyclicNames.has(fullName) const schemaDefinition = generateTSchema( typeDef, blueprint.definitions, config, - namespacePath, // current namespace for relative refs - currentIndent, - typeName + ns, + nsIndent + (isCyclic ? config.indent : ""), + typeName, + cyclicNames ) - // Add JSDoc comment if ("title" in typeDef && typeDef.title) { - lines.push(`${currentIndent}/**`) - lines.push(`${currentIndent} * ${typeDef.title}`) + lines.push(`${nsIndent}/**`) + lines.push(`${nsIndent} * ${typeDef.title}`) if ("description" in typeDef && typeDef.description) { - lines.push(`${currentIndent} * ${typeDef.description}`) + lines.push(`${nsIndent} * ${typeDef.description}`) } - lines.push(`${currentIndent} */`) + lines.push(`${nsIndent} */`) } - lines.push(`${currentIndent}export const ${typeName} = ${schemaDefinition}`) + if (isCyclic) { + const tsType = generateTSType(typeDef, blueprint.definitions, ns, config, new Set([fullName])) + lines.push(`${nsIndent}export type ${typeName} = ${tsType}`) + lines.push(`${nsIndent}export const ${typeName} = ${schemaDefinition}`) + } else { + lines.push(`${nsIndent}export const ${typeName} = ${schemaDefinition}`) + } lines.push("") } - // Close any remaining open namespaces - while (openNamespaces.length > 0) { - openNamespaces.pop() - currentIndent = currentIndent.slice(0, -2) - lines.push(`${currentIndent}}`) - lines.push("") - } + closeCurrentNs() } else { // Flat mode (original behavior) for (const [name, def] of sortedDefinitions) { @@ -830,7 +1043,16 @@ export function generateTypeScript( } const schemaName = toIdentifier(name) - const schemaDefinition = generateTSchema(def, blueprint.definitions, config, "", "", schemaName) + const isCyclic = cyclicNames.has(name) + const schemaDefinition = generateTSchema( + def, + blueprint.definitions, + config, + "", + isCyclic ? config.indent : "", + schemaName, + cyclicNames + ) // Add JSDoc comment if ("title" in def && def.title) { @@ -842,7 +1064,13 @@ export function generateTypeScript( lines.push(" */") } - lines.push(`export const ${schemaName} = ${schemaDefinition}`) + if (isCyclic) { + const tsType = generateTSType(def, blueprint.definitions, "", config, new Set([name])) + lines.push(`export type ${schemaName} = ${tsType}`) + lines.push(`export const ${schemaName} = ${schemaDefinition}`) + } else { + lines.push(`export const ${schemaName} = ${schemaDefinition}`) + } lines.push("") } } diff --git a/packages/evolution/test/Blueprint.test.ts b/packages/evolution/test/Blueprint.test.ts index 0f57d0d7..e33663e6 100644 --- a/packages/evolution/test/Blueprint.test.ts +++ b/packages/evolution/test/Blueprint.test.ts @@ -107,6 +107,40 @@ describe("Blueprint", () => { }) }) + describe("Codegen - Recursive Types", () => { + it("should parse multisig/MultiSig and its linked List definition", () => { + const result = Schema.decodeUnknownSync(PlutusBlueprint)(blueprintJson) + + // Aiken encodes List as a separate List$multisig/MultiSig definition + expect(result.definitions["multisig/MultiSig"]).toBeDefined() + expect(result.definitions["List$multisig/MultiSig"]).toBeDefined() + }) + + it("List$multisig/MultiSig items should $ref back to multisig~1MultiSig", () => { + const result = Schema.decodeUnknownSync(PlutusBlueprint)(blueprintJson) + + const listDef = result.definitions["List$multisig/MultiSig"] as { + dataType: string + items: { $ref: string } + } + expect(listDef.dataType).toBe("list") + expect(listDef.items.$ref).toBe("#/definitions/multisig~1MultiSig") + }) + + it("should emit Schema.suspend for the recursive list item without double-wrapping", () => { + const blueprint = Schema.decodeUnknownSync(PlutusBlueprint)(blueprintJson) + const config = createCodegenConfig() + const code = generateTypeScript(blueprint, config) + + // Recursive $ref must use a typed thunk with Data.Constr — no untyped () => form + expect(code).toContain("Schema.suspend((): Schema.Schema<") + expect(code).toContain("Data.Constr") + + // Must not double-wrap: Schema.suspend inside Schema.suspend + expect(code).not.toContain("Schema.suspend((): Schema.Schema { it("should emit { index } for single-variant Literal with non-zero index (Never)", () => { const blueprint = Schema.decodeUnknownSync(PlutusBlueprint)(blueprintJson) diff --git a/packages/evolution/test/spec/plutus.json b/packages/evolution/test/spec/plutus.json index 703caba5..2382d9d5 100644 --- a/packages/evolution/test/spec/plutus.json +++ b/packages/evolution/test/spec/plutus.json @@ -25,16 +25,16 @@ "$ref": "#/definitions/Data" } }, - "compiledCode": "587e01010029800aba2aba1aab9eaab9dab9cab9a48888896600264653001300700198039804000cc01c0092225980099b8748008c020dd500144c8cc892898058009805980600098049baa0028a50401830070013004375400f149a2a660049211856616c696461746f722072657475726e65642066616c7365001365640041", - "hash": "c5a309b71891d69bf076062a68fe46f9c54470128bb9fa0f2ac957d5" + "compiledCode": "585c01010029800aba2aba1aab9eaab9dab9a4888896600264653001300600198031803800cc0180092225980099b8748008c01cdd500144c8cc892898050009805180580098041baa0028a50401830060013003375400d149a26cac8009", + "hash": "a2492486ed656e3fb854a2c240cf16055216c38ec94d166a533c5820" }, { "title": "always_succeed.always_succeed.else", "redeemer": { "schema": {} }, - "compiledCode": "587e01010029800aba2aba1aab9eaab9dab9cab9a48888896600264653001300700198039804000cc01c0092225980099b8748008c020dd500144c8cc892898058009805980600098049baa0028a50401830070013004375400f149a2a660049211856616c696461746f722072657475726e65642066616c7365001365640041", - "hash": "c5a309b71891d69bf076062a68fe46f9c54470128bb9fa0f2ac957d5" + "compiledCode": "585c01010029800aba2aba1aab9eaab9dab9a4888896600264653001300600198031803800cc0180092225980099b8748008c01cdd500144c8cc892898050009805180580098041baa0028a50401830060013003375400d149a26cac8009", + "hash": "a2492486ed656e3fb854a2c240cf16055216c38ec94d166a533c5820" }, { "title": "governance_voting.always_yes_drep.vote", @@ -44,8 +44,8 @@ "$ref": "#/definitions/governance_voting~1SimpleVoteRedeemer" } }, - "compiledCode": "59012001010029800aba4aba2aba1aab9faab9eaab9dab9cab9a488888888c9660026464653001300737540032225980099b8748000c028dd5001c4c9660020030028992cc004c04000a0090034038601c0028068c02cdd5001c0050084c02800e601400491112cc004cdc3a40100091325980080146600200514a30094011009804c0260128088c038c030dd5002c56600266e1d200600489919912cc004012330010048a51805a00c805c02e01700b404c6eb4c03c004c03cc040004c030dd5002c528201240243009300a001300900130053754015149a2a6600692011856616c696461746f722072657475726e65642066616c7365001365640082a6600492011d5f72656465656d65723a2053696d706c65566f746552656465656d6572001601", - "hash": "ea462c861c679a7b0d5460d200ecbcd0498f1238bf43a0e36ed04643" + "compiledCode": "58aa01010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003225980099b8748000c01cdd500144c8c966002601a0050038b2016300b001300837540051640193008003980400124444b30013370e900400244c8cc010008528980618051baa0058acc004cdc3a400c00913233223300600414a26eb4c034004c034c038004c028dd5002c528201040203007300800130070013003375400f149a26cac80081", + "hash": "3a518b1b8e050a98472e8309a9b55a829733dd69f5405bf5d0977ef2" }, { "title": "governance_voting.always_yes_drep.publish", @@ -55,16 +55,16 @@ "$ref": "#/definitions/governance_voting~1SimpleVoteRedeemer" } }, - "compiledCode": "59012001010029800aba4aba2aba1aab9faab9eaab9dab9cab9a488888888c9660026464653001300737540032225980099b8748000c028dd5001c4c9660020030028992cc004c04000a0090034038601c0028068c02cdd5001c0050084c02800e601400491112cc004cdc3a40100091325980080146600200514a30094011009804c0260128088c038c030dd5002c56600266e1d200600489919912cc004012330010048a51805a00c805c02e01700b404c6eb4c03c004c03cc040004c030dd5002c528201240243009300a001300900130053754015149a2a6600692011856616c696461746f722072657475726e65642066616c7365001365640082a6600492011d5f72656465656d65723a2053696d706c65566f746552656465656d6572001601", - "hash": "ea462c861c679a7b0d5460d200ecbcd0498f1238bf43a0e36ed04643" + "compiledCode": "58aa01010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003225980099b8748000c01cdd500144c8c966002601a0050038b2016300b001300837540051640193008003980400124444b30013370e900400244c8cc010008528980618051baa0058acc004cdc3a400c00913233223300600414a26eb4c034004c034c038004c028dd5002c528201040203007300800130070013003375400f149a26cac80081", + "hash": "3a518b1b8e050a98472e8309a9b55a829733dd69f5405bf5d0977ef2" }, { "title": "governance_voting.always_yes_drep.else", "redeemer": { "schema": {} }, - "compiledCode": "59012001010029800aba4aba2aba1aab9faab9eaab9dab9cab9a488888888c9660026464653001300737540032225980099b8748000c028dd5001c4c9660020030028992cc004c04000a0090034038601c0028068c02cdd5001c0050084c02800e601400491112cc004cdc3a40100091325980080146600200514a30094011009804c0260128088c038c030dd5002c56600266e1d200600489919912cc004012330010048a51805a00c805c02e01700b404c6eb4c03c004c03cc040004c030dd5002c528201240243009300a001300900130053754015149a2a6600692011856616c696461746f722072657475726e65642066616c7365001365640082a6600492011d5f72656465656d65723a2053696d706c65566f746552656465656d6572001601", - "hash": "ea462c861c679a7b0d5460d200ecbcd0498f1238bf43a0e36ed04643" + "compiledCode": "58aa01010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003225980099b8748000c01cdd500144c8c966002601a0050038b2016300b001300837540051640193008003980400124444b30013370e900400244c8cc010008528980618051baa0058acc004cdc3a400c00913233223300600414a26eb4c034004c034c038004c028dd5002c528201040203007300800130070013003375400f149a26cac80081", + "hash": "3a518b1b8e050a98472e8309a9b55a829733dd69f5405bf5d0977ef2" }, { "title": "governance_voting.always_yes_vote.vote", @@ -74,16 +74,16 @@ "$ref": "#/definitions/governance_voting~1SimpleVoteRedeemer" } }, - "compiledCode": "58dd01010029800aba4aba2aba1aab9faab9eaab9dab9cab9a488888888c96600264653001300900198049805000cc0240092225980099b8748020c024dd500144c96600200915980099b8748000c028dd500244c9660020030088992cc004c04000a29460128070c03800500d18059baa004803a010803c01e00f007403c601860146ea800a29410070c024004c014dd500545268a99801a4811856616c696461746f722072657475726e65642066616c7365001365640082a6600492011d5f72656465656d65723a2053696d706c65566f746552656465656d6572001601", - "hash": "5833a02ef0991bfbb13d6c994bf436a9ad4d36ae4ed77077af773edd" + "compiledCode": "587b01010029800aba2aba1aab9faab9eaab9dab9a48888896600264653001300700198039804000cc01c0092225980099b8748020c01cdd500144c96600266e1d200030083754009132325980098070014528c5900c180600098049baa0048b200e300a3008375400514a08030600e00260066ea801e29344d9590011", + "hash": "d774a1f03d13acdb5a45239f5f24ba26e4b59e887ff67ca79e6a9b44" }, { "title": "governance_voting.always_yes_vote.else", "redeemer": { "schema": {} }, - "compiledCode": "58dd01010029800aba4aba2aba1aab9faab9eaab9dab9cab9a488888888c96600264653001300900198049805000cc0240092225980099b8748020c024dd500144c96600200915980099b8748000c028dd500244c9660020030088992cc004c04000a29460128070c03800500d18059baa004803a010803c01e00f007403c601860146ea800a29410070c024004c014dd500545268a99801a4811856616c696461746f722072657475726e65642066616c7365001365640082a6600492011d5f72656465656d65723a2053696d706c65566f746552656465656d6572001601", - "hash": "5833a02ef0991bfbb13d6c994bf436a9ad4d36ae4ed77077af773edd" + "compiledCode": "587b01010029800aba2aba1aab9faab9eaab9dab9a48888896600264653001300700198039804000cc01c0092225980099b8748020c01cdd500144c96600266e1d200030083754009132325980098070014528c5900c180600098049baa0048b200e300a3008375400514a08030600e00260066ea801e29344d9590011", + "hash": "d774a1f03d13acdb5a45239f5f24ba26e4b59e887ff67ca79e6a9b44" }, { "title": "governance_voting.governance_voting.vote", @@ -93,8 +93,8 @@ "$ref": "#/definitions/governance_voting~1VoteRedeemer" } }, - "compiledCode": "590ece01010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049212d65787065637420636f6e6669673a20476f7665726e616e6365436f6e666967203d20636f6e6669675f6461746100168a998012492d657870656374205b636f6e6669675f696e7075745d203d2073656c662e7265666572656e63655f696e7075747300168a998012491672656465656d65723a20566f746552656465656d657200168a99801249175f72656465656d65723a20566f746552656465656d65720016488896600330013008375401d223233001001003223300300130020029b87480012223232980098061baa0019112cc004c018c03cdd5001c4c9660020030028992cc0040060070038992cc004c05c00e26601400244b3001002803c4c966002003007803c01e00f1323003301b004375c00280d8c06000901640110141bac001801c00d017180a000a0243010375400700140353010005980800124444b30013370e900400244c96600200519800801454cc04124114766f74652068616e646c657220656e746572656400153301049119636865636b696e67207265666572656e636520696e70757473001323233223233225330173372c92010b7265665f636f756e743a20003732660046ea0c8cc004004dd61801180d1baa00b2259800800c52000899b8048008cc008008c07c00501c24410013259800800c056264b3001301f0028a9980ca4914676f742073696e676c652072656620696e7075740015330194911065787472616374696e6720646174756d00132325980099b8748010c070dd5000c4c94cc071240110676f7420696e6c696e6520646174756d00159800800c4c8c966002602c603e6ea800e264b300100180ec4c96600200301e80f44cc89660020030208992cc004006043021810c4cc89660020030238992cc004006264b3001001812c4c966002003159800981700144cc084020896600200519800802c66002007153302a4910d70617273656420636f6e66696700132323253302d3372c92011570617274696369706174696e675f636f756e743a20003732660306ea0005220100153302d3372c92011271756f72756d5f7468726573686f6c643a2000373266030602e605e6ea804922010013253302e3372c92010c71756f72756d5f6d65743a20003732660333001001a60103d87a8000a60103d879800040b491010013322325330313372c920110616c6c5f617574686f72697a65643a20003732660393001001a60103d87a8000a60103d879800040c09101001325330323372c92010c616c6c5f7369676e65643a200037326603b3001001a60103d87a8000a60103d879800040c49101001325330333372c92010f6e6f5f6475706c6963617465733a200037326603d3001001a60103d87a8000a60103d879800040c89101001325330343372c92011074696d656c6f636b5f76616c69643a200037326603f3001001a60103d87a8000a60103d879800040cc910100159800acc00401e29462a6606892011271756f72756d5f6d6574203f2046616c73650014a0819a2b3001598008024528c54cc0d1240116616c6c5f617574686f72697a6564203f2046616c73650014a0819a2b300159800801c528c54cc0d1240112616c6c5f7369676e6564203f2046616c73650014a0819a2b3001598008014528c54cc0d12401156e6f5f6475706c696361746573203f2046616c73650014a0819a2b30010018a518a9981a24811674696d656c6f636b5f76616c6964203f2046616c73650014a0819a2941033452820668a5040cd14a08198cc894cc0d52411976616c69646174655f74696d656c6f636b20656e74657265640015330353372c920118636f6e6669672e766f74655f73746172745f736c6f743a20003732660406038606e6ea806922010015330353372c920116636f6e6669672e766f74655f656e645f736c6f743a20003732660406004606e6ea806922010015330353372c92012a74782e76616c69646974795f72616e67652e6c6f7765725f626f756e642e626f756e645f747970653a20003732660406074606e6ea8c0e8c0dcdd51800981b9baa0284890015330353372c92012a74782e76616c69646974795f72616e67652e75707065725f626f756e642e626f756e645f747970653a20003732660406074606e6ea8c07cc0dcdd51800981b9baa028489001325330363372c92011373746172745f76616c69642066696e616c3a20003732660433001001a60103d87a8000a60103d879800040d49101001325330373372c920111656e645f76616c69642066696e616c3a20003732660453001001a60103d87a8000a60103d879800040d8910100159800801440062941036192cc004c06cc0e0dd5000c54cc0dd24113656e643a206e6f207265737472696374696f6e0014a31325330383372c920111656e645f736c6f7420636f6e6669673a20003732660466ea000522010013259800980e981d1baa00189929981d19b964910874785f656e643a200037326604a6ea000522010013253303b3372c920120656e645f76616c6964202874785f656e64203c3d20656e645f736c6f74293a200037326604d3001001a60103d87a8000a60103d879800040e89101001001337120020066eb4c0f8c0ecdd5000c54cc0e52411a656e643a206e6f2066696e69746520757070657220626f756e640014a081c0c0f4c0e8dd51811181d1baa3004303a37540566eb4c0f0c0e4dd5000a06c30033038375403664b3001301a30373754003153303649011573746172743a206e6f207265737472696374696f6e0014a31325330373372c92011373746172745f736c6f7420636f6e6669673a20003732660446ea000522010013259800980e181c9baa00189929981c99b964910a74785f73746172743a20003732660486ea000522010013253303a3372c92012673746172745f76616c6964202874785f7374617274203e3d2073746172745f736c6f74293a200037326604b3001001a60103d87a8000a60103d879800040e49101001001337120060026eb4c0f4c0e8dd5000c54cc0e12411c73746172743a206e6f2066696e697465206c6f77657220626f756e640014a081b8c0f0c0e4dd5181e181c9baa3003303937540546eb4c0ecc0e0dd5000a06a301c303737540344607260746074607400246072607460746074607460746074607400266e1cc01cc8cc004004dd6181c181a9baa0252259800800c52f5c1132330393752002660060066466002002607800644b30010018a5eb8226644b3001980099b8f002005a50a5140e113303d37520046600800800313300400400140e06eb8c0f0004c0f400503a1bae303900140dc600e6eb0c0dcc0d0dd5012198011bac3036303337540464660086eb0c0dcc0e0c0e0c0e0c0e0c0e0c0e0c0e0c0e0c0d0dd5012800998009bac3035303237540444660066eb0c0d8c0ccdd500b000911919800800801912cc00400629422b30013371e6eb8c0dc00400e294626600400460700028189035111919800800801912cc00400629462b30013003375c606e00313300200230380018a5040c481a8cdc49bad3017302f375402400260026eb0c0c4c0b8dd500f1800800912cc0040062900044cdc024004660040046064002817a050806a050806a264b3001001814c0a6053029899180198190021bae00140c8605e004816a04c815a04d026813409902f1816000a054302c002812409204902440b460540028140dd68009814801408502a1813800a04a3758002604c00501e80f204e3024001408860406ea800e03880e8888c966002603200313259800800c00e264b30010018024012009132598009815001c01a00a8138dd6800c01102a1813800a04a302337540091598009802800c56600260466ea8012007002409100240808100c084dd50019b874800a03501a80d40690231810180e9baa0018a9980da493b65787065637420496e6c696e65446174756d28636f6e6669675f6461746129203d20636f6e6669675f696e7075742e6f75747075742e646174756d00164068600260386ea8c010c070dd50011180f98101810000c05901c180e800a0363758600260326ea8028c0040048c06cc070004888c9660020071323233223300a0023371491101280059800800c4cdc52441035b5d2900006899b8a489035b5f20009800800ccdc52441025d2900006914c00402a00530070014029229800805400a0028051009203e5980099b880014803a266e0120f2010018acc004cdc4000a41000513370066e01208014001480362c80c90191bac301c002375a60340026466ec0dd4180d0009ba7301b001375400713259800800c4cdc52441027b7d00003899b8a489037b5f20003232330010010032259800800c400e264b30010018994c00402a603e003337149101023a200098008054c08000600a805100a181100144ca6002015301f00199b8a489023a200098008054c080006600e66008008004805100a181100120403022001407c66e29220102207d0000340706eac00e264b3001001899b8a489025b5d00003899b8a489035b5f20009800800ccdc52441015d00003914c00401e0053004001401d229800803c00a002803900620383758007133006375a0060051323371491102682700329800800ccdc01b8d0024800666e292210127000044004444b3001337100049000440062646645300100699b800054800666e2ccdc00012cc004cdc40012402914818229037203c3371666e000056600266e2000520148a40c11481b901e002200c33706002901019b8600148080cdc70020012036375c00680f8dc5245022c200022323300100100322598009807000c4cdc52450130000038acc004cdc4000a40011337149101012d0033002002337029000000c4cc014cdc2000a402866e2ccdc019b85001480512060003405480a88888c8cc004004014896600200310058992cc004006266008603c00400d133005301e002330030030014070603c00280d8c0040048896600266e2400920008800c6600200733708004900a4cdc599b803370a004900a240c000280190124031004403201900c806202e30143011375400b15980099b87480180122646644b30010048cc004012294601a803201b00d806c0350191bad3015001301530160013011375400b14a0807100e0c03cc040004c03c00d149a2a6600c92011856616c696461746f722072657475726e65642066616c7365001365640141", - "hash": "e3c66026d894affa1ae630819e8b78c20bf7d2eba4629ae80a0acc24" + "compiledCode": "59040d01010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966003300130033754011223233001001003223300300130020029b87480012223232980098039baa001912cc004c014c024dd500144c966002601e0031330073758601c00244b300100280244c8c008c04800cdd71808001201c8b2018300a3754005164021300b005980580124444b30013370e900400244c8cc0100084c8cc89660026028003132325980099b8748010c044dd5000c4c8cc8966002602060286ea80062646464653001301c0019bad301c003980e0012444b3001302000489980c1bac301f007225980080144cc02c00c4cc02c0144ca600260020032232330010010032259800800c528c56600260066eb8c098006266004004604e00314a08109024488c8cc00400400c896600200314a115980099b8f375c604c00200714a31330020023027001408481212225980099b89375a602a60446ea8038c00cdd6181298111baa0178acc004cc008dd6181298111baa0172330023758604c60466ea803c0062b3001330023758604a60446ea805c8cc008dd618131813981398139813981398139813981398119baa0190018acc004cdc3980199198008009bac30263023375403044b30010018a5eb822646604e6ea4004cc00c00cc8cc004004c0a800c896600200314bd7044cc896600330013371e00400b4a14a2813a2660566ea4008cc0100100062660080080028138dd718150009815800a050375c604e0028128c00cdd6181298111baa0178992cc004c966002602460466ea80062946264b30013013302437540031337126eb4c0a0c094dd50011bad30283025375400314a08118c09cc090dd5181398121baa3002302437540348110c04cc08cdd5007c4c966002602460466ea80062946264b30013013302437540031337126eb4c0a0c094dd50009bad30283025375400514a08118c09cc090dd5180b98121baa3002302437540348110c098c09cc09cc09cc08cdd5007c52820422302630273027302730273027302730270018a50408114a08102294102045282040112cc0040062900044cdc024004660040046048002810a264600460460066eb8c08400901f45901d0c070004c06c004c068004c054dd5000c5901311192cc004c04400626464b3001301c0028024590191bad301a001301637540071598009802000c566002602c6ea800e00516405d16405080a0c050dd5001180b18099baa002370e9001459010180098089baa300430113754602800446028602a602a00316404464660020026eb0c008c03cdd5002912cc0040062900044cdc0240046600400460280028088dd6180098071baa004230113012001300f300c375400b15980099b874801801226466446600c0082944dd698080009808180880098061baa0058a50402880506014601600260140068a4d13656400401", + "hash": "e3bd510c6ccb2677f3274124b6314c605c5bb59b8aa244cb08749c5f" }, { "title": "governance_voting.governance_voting.publish", @@ -104,16 +104,16 @@ "$ref": "#/definitions/governance_voting~1VoteRedeemer" } }, - "compiledCode": "590ece01010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049212d65787065637420636f6e6669673a20476f7665726e616e6365436f6e666967203d20636f6e6669675f6461746100168a998012492d657870656374205b636f6e6669675f696e7075745d203d2073656c662e7265666572656e63655f696e7075747300168a998012491672656465656d65723a20566f746552656465656d657200168a99801249175f72656465656d65723a20566f746552656465656d65720016488896600330013008375401d223233001001003223300300130020029b87480012223232980098061baa0019112cc004c018c03cdd5001c4c9660020030028992cc0040060070038992cc004c05c00e26601400244b3001002803c4c966002003007803c01e00f1323003301b004375c00280d8c06000901640110141bac001801c00d017180a000a0243010375400700140353010005980800124444b30013370e900400244c96600200519800801454cc04124114766f74652068616e646c657220656e746572656400153301049119636865636b696e67207265666572656e636520696e70757473001323233223233225330173372c92010b7265665f636f756e743a20003732660046ea0c8cc004004dd61801180d1baa00b2259800800c52000899b8048008cc008008c07c00501c24410013259800800c056264b3001301f0028a9980ca4914676f742073696e676c652072656620696e7075740015330194911065787472616374696e6720646174756d00132325980099b8748010c070dd5000c4c94cc071240110676f7420696e6c696e6520646174756d00159800800c4c8c966002602c603e6ea800e264b300100180ec4c96600200301e80f44cc89660020030208992cc004006043021810c4cc89660020030238992cc004006264b3001001812c4c966002003159800981700144cc084020896600200519800802c66002007153302a4910d70617273656420636f6e66696700132323253302d3372c92011570617274696369706174696e675f636f756e743a20003732660306ea0005220100153302d3372c92011271756f72756d5f7468726573686f6c643a2000373266030602e605e6ea804922010013253302e3372c92010c71756f72756d5f6d65743a20003732660333001001a60103d87a8000a60103d879800040b491010013322325330313372c920110616c6c5f617574686f72697a65643a20003732660393001001a60103d87a8000a60103d879800040c09101001325330323372c92010c616c6c5f7369676e65643a200037326603b3001001a60103d87a8000a60103d879800040c49101001325330333372c92010f6e6f5f6475706c6963617465733a200037326603d3001001a60103d87a8000a60103d879800040c89101001325330343372c92011074696d656c6f636b5f76616c69643a200037326603f3001001a60103d87a8000a60103d879800040cc910100159800acc00401e29462a6606892011271756f72756d5f6d6574203f2046616c73650014a0819a2b3001598008024528c54cc0d1240116616c6c5f617574686f72697a6564203f2046616c73650014a0819a2b300159800801c528c54cc0d1240112616c6c5f7369676e6564203f2046616c73650014a0819a2b3001598008014528c54cc0d12401156e6f5f6475706c696361746573203f2046616c73650014a0819a2b30010018a518a9981a24811674696d656c6f636b5f76616c6964203f2046616c73650014a0819a2941033452820668a5040cd14a08198cc894cc0d52411976616c69646174655f74696d656c6f636b20656e74657265640015330353372c920118636f6e6669672e766f74655f73746172745f736c6f743a20003732660406038606e6ea806922010015330353372c920116636f6e6669672e766f74655f656e645f736c6f743a20003732660406004606e6ea806922010015330353372c92012a74782e76616c69646974795f72616e67652e6c6f7765725f626f756e642e626f756e645f747970653a20003732660406074606e6ea8c0e8c0dcdd51800981b9baa0284890015330353372c92012a74782e76616c69646974795f72616e67652e75707065725f626f756e642e626f756e645f747970653a20003732660406074606e6ea8c07cc0dcdd51800981b9baa028489001325330363372c92011373746172745f76616c69642066696e616c3a20003732660433001001a60103d87a8000a60103d879800040d49101001325330373372c920111656e645f76616c69642066696e616c3a20003732660453001001a60103d87a8000a60103d879800040d8910100159800801440062941036192cc004c06cc0e0dd5000c54cc0dd24113656e643a206e6f207265737472696374696f6e0014a31325330383372c920111656e645f736c6f7420636f6e6669673a20003732660466ea000522010013259800980e981d1baa00189929981d19b964910874785f656e643a200037326604a6ea000522010013253303b3372c920120656e645f76616c6964202874785f656e64203c3d20656e645f736c6f74293a200037326604d3001001a60103d87a8000a60103d879800040e89101001001337120020066eb4c0f8c0ecdd5000c54cc0e52411a656e643a206e6f2066696e69746520757070657220626f756e640014a081c0c0f4c0e8dd51811181d1baa3004303a37540566eb4c0f0c0e4dd5000a06c30033038375403664b3001301a30373754003153303649011573746172743a206e6f207265737472696374696f6e0014a31325330373372c92011373746172745f736c6f7420636f6e6669673a20003732660446ea000522010013259800980e181c9baa00189929981c99b964910a74785f73746172743a20003732660486ea000522010013253303a3372c92012673746172745f76616c6964202874785f7374617274203e3d2073746172745f736c6f74293a200037326604b3001001a60103d87a8000a60103d879800040e49101001001337120060026eb4c0f4c0e8dd5000c54cc0e12411c73746172743a206e6f2066696e697465206c6f77657220626f756e640014a081b8c0f0c0e4dd5181e181c9baa3003303937540546eb4c0ecc0e0dd5000a06a301c303737540344607260746074607400246072607460746074607460746074607400266e1cc01cc8cc004004dd6181c181a9baa0252259800800c52f5c1132330393752002660060066466002002607800644b30010018a5eb8226644b3001980099b8f002005a50a5140e113303d37520046600800800313300400400140e06eb8c0f0004c0f400503a1bae303900140dc600e6eb0c0dcc0d0dd5012198011bac3036303337540464660086eb0c0dcc0e0c0e0c0e0c0e0c0e0c0e0c0e0c0e0c0d0dd5012800998009bac3035303237540444660066eb0c0d8c0ccdd500b000911919800800801912cc00400629422b30013371e6eb8c0dc00400e294626600400460700028189035111919800800801912cc00400629462b30013003375c606e00313300200230380018a5040c481a8cdc49bad3017302f375402400260026eb0c0c4c0b8dd500f1800800912cc0040062900044cdc024004660040046064002817a050806a050806a264b3001001814c0a6053029899180198190021bae00140c8605e004816a04c815a04d026813409902f1816000a054302c002812409204902440b460540028140dd68009814801408502a1813800a04a3758002604c00501e80f204e3024001408860406ea800e03880e8888c966002603200313259800800c00e264b30010018024012009132598009815001c01a00a8138dd6800c01102a1813800a04a302337540091598009802800c56600260466ea8012007002409100240808100c084dd50019b874800a03501a80d40690231810180e9baa0018a9980da493b65787065637420496e6c696e65446174756d28636f6e6669675f6461746129203d20636f6e6669675f696e7075742e6f75747075742e646174756d00164068600260386ea8c010c070dd50011180f98101810000c05901c180e800a0363758600260326ea8028c0040048c06cc070004888c9660020071323233223300a0023371491101280059800800c4cdc52441035b5d2900006899b8a489035b5f20009800800ccdc52441025d2900006914c00402a00530070014029229800805400a0028051009203e5980099b880014803a266e0120f2010018acc004cdc4000a41000513370066e01208014001480362c80c90191bac301c002375a60340026466ec0dd4180d0009ba7301b001375400713259800800c4cdc52441027b7d00003899b8a489037b5f20003232330010010032259800800c400e264b30010018994c00402a603e003337149101023a200098008054c08000600a805100a181100144ca6002015301f00199b8a489023a200098008054c080006600e66008008004805100a181100120403022001407c66e29220102207d0000340706eac00e264b3001001899b8a489025b5d00003899b8a489035b5f20009800800ccdc52441015d00003914c00401e0053004001401d229800803c00a002803900620383758007133006375a0060051323371491102682700329800800ccdc01b8d0024800666e292210127000044004444b3001337100049000440062646645300100699b800054800666e2ccdc00012cc004cdc40012402914818229037203c3371666e000056600266e2000520148a40c11481b901e002200c33706002901019b8600148080cdc70020012036375c00680f8dc5245022c200022323300100100322598009807000c4cdc52450130000038acc004cdc4000a40011337149101012d0033002002337029000000c4cc014cdc2000a402866e2ccdc019b85001480512060003405480a88888c8cc004004014896600200310058992cc004006266008603c00400d133005301e002330030030014070603c00280d8c0040048896600266e2400920008800c6600200733708004900a4cdc599b803370a004900a240c000280190124031004403201900c806202e30143011375400b15980099b87480180122646644b30010048cc004012294601a803201b00d806c0350191bad3015001301530160013011375400b14a0807100e0c03cc040004c03c00d149a2a6600c92011856616c696461746f722072657475726e65642066616c7365001365640141", - "hash": "e3c66026d894affa1ae630819e8b78c20bf7d2eba4629ae80a0acc24" + "compiledCode": "59040d01010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966003300130033754011223233001001003223300300130020029b87480012223232980098039baa001912cc004c014c024dd500144c966002601e0031330073758601c00244b300100280244c8c008c04800cdd71808001201c8b2018300a3754005164021300b005980580124444b30013370e900400244c8cc0100084c8cc89660026028003132325980099b8748010c044dd5000c4c8cc8966002602060286ea80062646464653001301c0019bad301c003980e0012444b3001302000489980c1bac301f007225980080144cc02c00c4cc02c0144ca600260020032232330010010032259800800c528c56600260066eb8c098006266004004604e00314a08109024488c8cc00400400c896600200314a115980099b8f375c604c00200714a31330020023027001408481212225980099b89375a602a60446ea8038c00cdd6181298111baa0178acc004cc008dd6181298111baa0172330023758604c60466ea803c0062b3001330023758604a60446ea805c8cc008dd618131813981398139813981398139813981398119baa0190018acc004cdc3980199198008009bac30263023375403044b30010018a5eb822646604e6ea4004cc00c00cc8cc004004c0a800c896600200314bd7044cc896600330013371e00400b4a14a2813a2660566ea4008cc0100100062660080080028138dd718150009815800a050375c604e0028128c00cdd6181298111baa0178992cc004c966002602460466ea80062946264b30013013302437540031337126eb4c0a0c094dd50011bad30283025375400314a08118c09cc090dd5181398121baa3002302437540348110c04cc08cdd5007c4c966002602460466ea80062946264b30013013302437540031337126eb4c0a0c094dd50009bad30283025375400514a08118c09cc090dd5180b98121baa3002302437540348110c098c09cc09cc09cc08cdd5007c52820422302630273027302730273027302730270018a50408114a08102294102045282040112cc0040062900044cdc024004660040046048002810a264600460460066eb8c08400901f45901d0c070004c06c004c068004c054dd5000c5901311192cc004c04400626464b3001301c0028024590191bad301a001301637540071598009802000c566002602c6ea800e00516405d16405080a0c050dd5001180b18099baa002370e9001459010180098089baa300430113754602800446028602a602a00316404464660020026eb0c008c03cdd5002912cc0040062900044cdc0240046600400460280028088dd6180098071baa004230113012001300f300c375400b15980099b874801801226466446600c0082944dd698080009808180880098061baa0058a50402880506014601600260140068a4d13656400401", + "hash": "e3bd510c6ccb2677f3274124b6314c605c5bb59b8aa244cb08749c5f" }, { "title": "governance_voting.governance_voting.else", "redeemer": { "schema": {} }, - "compiledCode": "590ece01010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049212d65787065637420636f6e6669673a20476f7665726e616e6365436f6e666967203d20636f6e6669675f6461746100168a998012492d657870656374205b636f6e6669675f696e7075745d203d2073656c662e7265666572656e63655f696e7075747300168a998012491672656465656d65723a20566f746552656465656d657200168a99801249175f72656465656d65723a20566f746552656465656d65720016488896600330013008375401d223233001001003223300300130020029b87480012223232980098061baa0019112cc004c018c03cdd5001c4c9660020030028992cc0040060070038992cc004c05c00e26601400244b3001002803c4c966002003007803c01e00f1323003301b004375c00280d8c06000901640110141bac001801c00d017180a000a0243010375400700140353010005980800124444b30013370e900400244c96600200519800801454cc04124114766f74652068616e646c657220656e746572656400153301049119636865636b696e67207265666572656e636520696e70757473001323233223233225330173372c92010b7265665f636f756e743a20003732660046ea0c8cc004004dd61801180d1baa00b2259800800c52000899b8048008cc008008c07c00501c24410013259800800c056264b3001301f0028a9980ca4914676f742073696e676c652072656620696e7075740015330194911065787472616374696e6720646174756d00132325980099b8748010c070dd5000c4c94cc071240110676f7420696e6c696e6520646174756d00159800800c4c8c966002602c603e6ea800e264b300100180ec4c96600200301e80f44cc89660020030208992cc004006043021810c4cc89660020030238992cc004006264b3001001812c4c966002003159800981700144cc084020896600200519800802c66002007153302a4910d70617273656420636f6e66696700132323253302d3372c92011570617274696369706174696e675f636f756e743a20003732660306ea0005220100153302d3372c92011271756f72756d5f7468726573686f6c643a2000373266030602e605e6ea804922010013253302e3372c92010c71756f72756d5f6d65743a20003732660333001001a60103d87a8000a60103d879800040b491010013322325330313372c920110616c6c5f617574686f72697a65643a20003732660393001001a60103d87a8000a60103d879800040c09101001325330323372c92010c616c6c5f7369676e65643a200037326603b3001001a60103d87a8000a60103d879800040c49101001325330333372c92010f6e6f5f6475706c6963617465733a200037326603d3001001a60103d87a8000a60103d879800040c89101001325330343372c92011074696d656c6f636b5f76616c69643a200037326603f3001001a60103d87a8000a60103d879800040cc910100159800acc00401e29462a6606892011271756f72756d5f6d6574203f2046616c73650014a0819a2b3001598008024528c54cc0d1240116616c6c5f617574686f72697a6564203f2046616c73650014a0819a2b300159800801c528c54cc0d1240112616c6c5f7369676e6564203f2046616c73650014a0819a2b3001598008014528c54cc0d12401156e6f5f6475706c696361746573203f2046616c73650014a0819a2b30010018a518a9981a24811674696d656c6f636b5f76616c6964203f2046616c73650014a0819a2941033452820668a5040cd14a08198cc894cc0d52411976616c69646174655f74696d656c6f636b20656e74657265640015330353372c920118636f6e6669672e766f74655f73746172745f736c6f743a20003732660406038606e6ea806922010015330353372c920116636f6e6669672e766f74655f656e645f736c6f743a20003732660406004606e6ea806922010015330353372c92012a74782e76616c69646974795f72616e67652e6c6f7765725f626f756e642e626f756e645f747970653a20003732660406074606e6ea8c0e8c0dcdd51800981b9baa0284890015330353372c92012a74782e76616c69646974795f72616e67652e75707065725f626f756e642e626f756e645f747970653a20003732660406074606e6ea8c07cc0dcdd51800981b9baa028489001325330363372c92011373746172745f76616c69642066696e616c3a20003732660433001001a60103d87a8000a60103d879800040d49101001325330373372c920111656e645f76616c69642066696e616c3a20003732660453001001a60103d87a8000a60103d879800040d8910100159800801440062941036192cc004c06cc0e0dd5000c54cc0dd24113656e643a206e6f207265737472696374696f6e0014a31325330383372c920111656e645f736c6f7420636f6e6669673a20003732660466ea000522010013259800980e981d1baa00189929981d19b964910874785f656e643a200037326604a6ea000522010013253303b3372c920120656e645f76616c6964202874785f656e64203c3d20656e645f736c6f74293a200037326604d3001001a60103d87a8000a60103d879800040e89101001001337120020066eb4c0f8c0ecdd5000c54cc0e52411a656e643a206e6f2066696e69746520757070657220626f756e640014a081c0c0f4c0e8dd51811181d1baa3004303a37540566eb4c0f0c0e4dd5000a06c30033038375403664b3001301a30373754003153303649011573746172743a206e6f207265737472696374696f6e0014a31325330373372c92011373746172745f736c6f7420636f6e6669673a20003732660446ea000522010013259800980e181c9baa00189929981c99b964910a74785f73746172743a20003732660486ea000522010013253303a3372c92012673746172745f76616c6964202874785f7374617274203e3d2073746172745f736c6f74293a200037326604b3001001a60103d87a8000a60103d879800040e49101001001337120060026eb4c0f4c0e8dd5000c54cc0e12411c73746172743a206e6f2066696e697465206c6f77657220626f756e640014a081b8c0f0c0e4dd5181e181c9baa3003303937540546eb4c0ecc0e0dd5000a06a301c303737540344607260746074607400246072607460746074607460746074607400266e1cc01cc8cc004004dd6181c181a9baa0252259800800c52f5c1132330393752002660060066466002002607800644b30010018a5eb8226644b3001980099b8f002005a50a5140e113303d37520046600800800313300400400140e06eb8c0f0004c0f400503a1bae303900140dc600e6eb0c0dcc0d0dd5012198011bac3036303337540464660086eb0c0dcc0e0c0e0c0e0c0e0c0e0c0e0c0e0c0e0c0d0dd5012800998009bac3035303237540444660066eb0c0d8c0ccdd500b000911919800800801912cc00400629422b30013371e6eb8c0dc00400e294626600400460700028189035111919800800801912cc00400629462b30013003375c606e00313300200230380018a5040c481a8cdc49bad3017302f375402400260026eb0c0c4c0b8dd500f1800800912cc0040062900044cdc024004660040046064002817a050806a050806a264b3001001814c0a6053029899180198190021bae00140c8605e004816a04c815a04d026813409902f1816000a054302c002812409204902440b460540028140dd68009814801408502a1813800a04a3758002604c00501e80f204e3024001408860406ea800e03880e8888c966002603200313259800800c00e264b30010018024012009132598009815001c01a00a8138dd6800c01102a1813800a04a302337540091598009802800c56600260466ea8012007002409100240808100c084dd50019b874800a03501a80d40690231810180e9baa0018a9980da493b65787065637420496e6c696e65446174756d28636f6e6669675f6461746129203d20636f6e6669675f696e7075742e6f75747075742e646174756d00164068600260386ea8c010c070dd50011180f98101810000c05901c180e800a0363758600260326ea8028c0040048c06cc070004888c9660020071323233223300a0023371491101280059800800c4cdc52441035b5d2900006899b8a489035b5f20009800800ccdc52441025d2900006914c00402a00530070014029229800805400a0028051009203e5980099b880014803a266e0120f2010018acc004cdc4000a41000513370066e01208014001480362c80c90191bac301c002375a60340026466ec0dd4180d0009ba7301b001375400713259800800c4cdc52441027b7d00003899b8a489037b5f20003232330010010032259800800c400e264b30010018994c00402a603e003337149101023a200098008054c08000600a805100a181100144ca6002015301f00199b8a489023a200098008054c080006600e66008008004805100a181100120403022001407c66e29220102207d0000340706eac00e264b3001001899b8a489025b5d00003899b8a489035b5f20009800800ccdc52441015d00003914c00401e0053004001401d229800803c00a002803900620383758007133006375a0060051323371491102682700329800800ccdc01b8d0024800666e292210127000044004444b3001337100049000440062646645300100699b800054800666e2ccdc00012cc004cdc40012402914818229037203c3371666e000056600266e2000520148a40c11481b901e002200c33706002901019b8600148080cdc70020012036375c00680f8dc5245022c200022323300100100322598009807000c4cdc52450130000038acc004cdc4000a40011337149101012d0033002002337029000000c4cc014cdc2000a402866e2ccdc019b85001480512060003405480a88888c8cc004004014896600200310058992cc004006266008603c00400d133005301e002330030030014070603c00280d8c0040048896600266e2400920008800c6600200733708004900a4cdc599b803370a004900a240c000280190124031004403201900c806202e30143011375400b15980099b87480180122646644b30010048cc004012294601a803201b00d806c0350191bad3015001301530160013011375400b14a0807100e0c03cc040004c03c00d149a2a6600c92011856616c696461746f722072657475726e65642066616c7365001365640141", - "hash": "e3c66026d894affa1ae630819e8b78c20bf7d2eba4629ae80a0acc24" + "compiledCode": "59040d01010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966003300130033754011223233001001003223300300130020029b87480012223232980098039baa001912cc004c014c024dd500144c966002601e0031330073758601c00244b300100280244c8c008c04800cdd71808001201c8b2018300a3754005164021300b005980580124444b30013370e900400244c8cc0100084c8cc89660026028003132325980099b8748010c044dd5000c4c8cc8966002602060286ea80062646464653001301c0019bad301c003980e0012444b3001302000489980c1bac301f007225980080144cc02c00c4cc02c0144ca600260020032232330010010032259800800c528c56600260066eb8c098006266004004604e00314a08109024488c8cc00400400c896600200314a115980099b8f375c604c00200714a31330020023027001408481212225980099b89375a602a60446ea8038c00cdd6181298111baa0178acc004cc008dd6181298111baa0172330023758604c60466ea803c0062b3001330023758604a60446ea805c8cc008dd618131813981398139813981398139813981398119baa0190018acc004cdc3980199198008009bac30263023375403044b30010018a5eb822646604e6ea4004cc00c00cc8cc004004c0a800c896600200314bd7044cc896600330013371e00400b4a14a2813a2660566ea4008cc0100100062660080080028138dd718150009815800a050375c604e0028128c00cdd6181298111baa0178992cc004c966002602460466ea80062946264b30013013302437540031337126eb4c0a0c094dd50011bad30283025375400314a08118c09cc090dd5181398121baa3002302437540348110c04cc08cdd5007c4c966002602460466ea80062946264b30013013302437540031337126eb4c0a0c094dd50009bad30283025375400514a08118c09cc090dd5180b98121baa3002302437540348110c098c09cc09cc09cc08cdd5007c52820422302630273027302730273027302730270018a50408114a08102294102045282040112cc0040062900044cdc024004660040046048002810a264600460460066eb8c08400901f45901d0c070004c06c004c068004c054dd5000c5901311192cc004c04400626464b3001301c0028024590191bad301a001301637540071598009802000c566002602c6ea800e00516405d16405080a0c050dd5001180b18099baa002370e9001459010180098089baa300430113754602800446028602a602a00316404464660020026eb0c008c03cdd5002912cc0040062900044cdc0240046600400460280028088dd6180098071baa004230113012001300f300c375400b15980099b874801801226466446600c0082944dd698080009808180880098061baa0058a50402880506014601600260140068a4d13656400401", + "hash": "e3bd510c6ccb2677f3274124b6314c605c5bb59b8aa244cb08749c5f" }, { "title": "mint.mint_policy.spend", @@ -129,8 +129,8 @@ "$ref": "#/definitions/ByteArray" } }, - "compiledCode": "5905cb01010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049211372656465656d65723a2042797465417272617900168a998012491a72656465656d65723a20576974686472617752656465656d657200168a998012491972656465656d65723a205075626c69736852656465656d657200168a998012491672656465656d65723a204d696e7452656465656d6572001648889660026464653001300a3754003370e90004dc7a450131009807001cc038009222225980099b87480080162646644b3001004807c03e01f00f8acc004c01cc048dd5000c4cc896600266ebcdd32cc00528452f5bded8c113232330010014bd6f7b630112cc00400626603466ec1301014000374c00697adef6c608994c004dd7180c000cdd5980c800cc0740092225980099b904890000389980f19bb04c01014000374c00e00b15980099b8f4890000389980f19bb04c01014000374c00e00313301e337606ea400cdd300119803003000a0324064301b0014064646600200297adef6c602259800800c4cc064cdd82610140004c01010a004bd6f7b63044ca60026eb8c05c0066eb4c06000660380049112cc004cdc824410000389980e99bb04c010140004c01010a000058acc004cdc7a4410000389980e99bb04c010140004c01010a0000189980e99bb037520066ea0008cc0180180050182030180d000a03040486e98c8cc004004dd59801180b1baa30193016375400644b30010018a5eb7bdb1822653001375c602e0033756603000333003003301c0024889660020051533019490124657870656374205061697228702c205b5f2c202e2e5d206173207829203d20696e6e657200168991919800800801912cc00400626604066ec0dd48031ba60034bd6f7b63044c8c96600266e4002000626604466ec0dd48041ba60050038acc004cdc7804000c54cc07924127756e6578706563746564206475706c6963617465206b657920666f756e6420696e20646963742e001689981119bb03752002604000466008008604800680e901d1bae301e0013021001407c6464008646600200200844b30010018a4d13259800800c56600260086eb4c07cc08800a293454cc0752411f76616c756520646f65736e277420736174697366792070726564696361746500164071133225980099b90375c60400046eb8c0800062b30013006375a60420051330050053302300130250038a9980fa491f76616c756520646f65736e277420736174697366792070726564696361746500164079153301f491276b65797320696e207061697273206172656e277420696e20617363656e64696e67206f7264657200164078604400460440028100c08800501f14c004c0400069429450192038180d000a0308acc004cdc4a40006eb4c004c054dd500144c020dd7003452820248a504048602c60266ea80048c05cc060006294101020303014001301430150013010375400d15980099b8748010016264b30010028acc004c014c040dd500144c96600200300d8992cc00400601d00e807403a264b30013018003898039bae30173014375400b00f40546eb8005018180a800a0263011375400500c403900c806403201880b0c04cc040dd5003456600266e1d200600589919912cc0040122b300130073012375400913259800800c03a264b3001001807c03e01f00f8992cc004c06800e260126eb8c064c058dd5003c0410171bae0014068602e00280a8c04cdd50024035010403601b00d806a030375a60280026028602a00260206ea801a2b300130040058992cc00400a2b300130053010375400513259800800c02e264b3001001806403201913259800980c001c4cdc39bad30173014375400a900140350151bad00180620303015001404c60226ea800a014807201500a80540290161bae30133010375400d153300e49113756e737570706f7274656420707572706f736500164034806900d201a18069807000980680098041baa00e8a4d15330064911856616c696461746f722072657475726e65642066616c7365001365640141", - "hash": "37d45d0f27a8acb0aab1fa29bfe93f781cdc1d40af43a5f37be4b5d6" + "compiledCode": "5903b101010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002646465300130053754003370e90004dc7a4410131009804801cc024009222225980099b87480080162646644b30013007300d3754003133225980099baf374cb30014a114bd6f7b63044c8c8cc0040052f5bded8c044b300100189980a99bb04c01014000374c00697adef6c608994c004dd71809800cdd5980a000cc0600092225980099b904890000389980c99bb04c01014000374c00e00b15980099b8f4890000389980c99bb04c01014000374c00e003133019337606ea400cdd300119803003000a02a405430160014050646600200297adef6c602259800800c4cc050cdd82610140004c01010a004bd6f7b63044ca60026eb8c0480066eb4c04c006602e0049112cc004cdc824410000389980c19bb04c010140004c01010a000058acc004cdc7a4410000389980c19bb04c010140004c01010a0000189980c19bb037520066ea0008cc0180180050142028180a800a02640386e98c8cc004004dd5980118089baa30143011375400644b30010018a5eb7bdb18226464664466446600400400244b300100189980d19bb037520066e980112f5bded8c1132325980099b9000500189980e19bb0375200a6e9801800e2b30013371e00a0031689980e19bb03752002603400466008008603c00680c10181bae3018001301b00140646600c00c603400a6464006646600200200644b30010018a4d13259800800c56600260086eb4c060c06c00a29345901644cc896600266e40dd7180c8011bae30190018acc004c018dd6980d00144cc014014cc070004c07800e2c80c22c80c0c06c008c06c005019180d800a030298009807000d28528a026375c60260046eacc04c004c054005013456600266e252000375a600260206ea800a260106eb801a294100e4528201c3011300e375400246024602600314a08060c03c004c03cc040004c02cdd5003456600266e1d20040058992cc004c014c02cdd500144c8c966002602400513006375c6022601c6ea80122c8078dd7180800098061baa0028b2014300e300b375400d15980099b87480180162646644b30013007300d37540091323259800980a00144c020dd7180998081baa0068b2022375c6024002601c6ea80122c8060dd698078009807980800098059baa0068acc004c010016264b30013005300b37540051323259800980900144cdc39bad3011300e3754008900145900f1bad3010001300c37540051640286eb8c038c02cdd500345900920124024804860106012002601000260066ea802229344d9590011", + "hash": "0b7a8ebdc1c15fdfbe7acccb50e68c145bb5ae20e1cf1d4291517d98" }, { "title": "mint.mint_policy.withdraw", @@ -140,8 +140,8 @@ "$ref": "#/definitions/mint~1WithdrawRedeemer" } }, - "compiledCode": "5905cb01010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049211372656465656d65723a2042797465417272617900168a998012491a72656465656d65723a20576974686472617752656465656d657200168a998012491972656465656d65723a205075626c69736852656465656d657200168a998012491672656465656d65723a204d696e7452656465656d6572001648889660026464653001300a3754003370e90004dc7a450131009807001cc038009222225980099b87480080162646644b3001004807c03e01f00f8acc004c01cc048dd5000c4cc896600266ebcdd32cc00528452f5bded8c113232330010014bd6f7b630112cc00400626603466ec1301014000374c00697adef6c608994c004dd7180c000cdd5980c800cc0740092225980099b904890000389980f19bb04c01014000374c00e00b15980099b8f4890000389980f19bb04c01014000374c00e00313301e337606ea400cdd300119803003000a0324064301b0014064646600200297adef6c602259800800c4cc064cdd82610140004c01010a004bd6f7b63044ca60026eb8c05c0066eb4c06000660380049112cc004cdc824410000389980e99bb04c010140004c01010a000058acc004cdc7a4410000389980e99bb04c010140004c01010a0000189980e99bb037520066ea0008cc0180180050182030180d000a03040486e98c8cc004004dd59801180b1baa30193016375400644b30010018a5eb7bdb1822653001375c602e0033756603000333003003301c0024889660020051533019490124657870656374205061697228702c205b5f2c202e2e5d206173207829203d20696e6e657200168991919800800801912cc00400626604066ec0dd48031ba60034bd6f7b63044c8c96600266e4002000626604466ec0dd48041ba60050038acc004cdc7804000c54cc07924127756e6578706563746564206475706c6963617465206b657920666f756e6420696e20646963742e001689981119bb03752002604000466008008604800680e901d1bae301e0013021001407c6464008646600200200844b30010018a4d13259800800c56600260086eb4c07cc08800a293454cc0752411f76616c756520646f65736e277420736174697366792070726564696361746500164071133225980099b90375c60400046eb8c0800062b30013006375a60420051330050053302300130250038a9980fa491f76616c756520646f65736e277420736174697366792070726564696361746500164079153301f491276b65797320696e207061697273206172656e277420696e20617363656e64696e67206f7264657200164078604400460440028100c08800501f14c004c0400069429450192038180d000a0308acc004cdc4a40006eb4c004c054dd500144c020dd7003452820248a504048602c60266ea80048c05cc060006294101020303014001301430150013010375400d15980099b8748010016264b30010028acc004c014c040dd500144c96600200300d8992cc00400601d00e807403a264b30013018003898039bae30173014375400b00f40546eb8005018180a800a0263011375400500c403900c806403201880b0c04cc040dd5003456600266e1d200600589919912cc0040122b300130073012375400913259800800c03a264b3001001807c03e01f00f8992cc004c06800e260126eb8c064c058dd5003c0410171bae0014068602e00280a8c04cdd50024035010403601b00d806a030375a60280026028602a00260206ea801a2b300130040058992cc00400a2b300130053010375400513259800800c02e264b3001001806403201913259800980c001c4cdc39bad30173014375400a900140350151bad00180620303015001404c60226ea800a014807201500a80540290161bae30133010375400d153300e49113756e737570706f7274656420707572706f736500164034806900d201a18069807000980680098041baa00e8a4d15330064911856616c696461746f722072657475726e65642066616c7365001365640141", - "hash": "37d45d0f27a8acb0aab1fa29bfe93f781cdc1d40af43a5f37be4b5d6" + "compiledCode": "5903b101010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002646465300130053754003370e90004dc7a4410131009804801cc024009222225980099b87480080162646644b30013007300d3754003133225980099baf374cb30014a114bd6f7b63044c8c8cc0040052f5bded8c044b300100189980a99bb04c01014000374c00697adef6c608994c004dd71809800cdd5980a000cc0600092225980099b904890000389980c99bb04c01014000374c00e00b15980099b8f4890000389980c99bb04c01014000374c00e003133019337606ea400cdd300119803003000a02a405430160014050646600200297adef6c602259800800c4cc050cdd82610140004c01010a004bd6f7b63044ca60026eb8c0480066eb4c04c006602e0049112cc004cdc824410000389980c19bb04c010140004c01010a000058acc004cdc7a4410000389980c19bb04c010140004c01010a0000189980c19bb037520066ea0008cc0180180050142028180a800a02640386e98c8cc004004dd5980118089baa30143011375400644b30010018a5eb7bdb18226464664466446600400400244b300100189980d19bb037520066e980112f5bded8c1132325980099b9000500189980e19bb0375200a6e9801800e2b30013371e00a0031689980e19bb03752002603400466008008603c00680c10181bae3018001301b00140646600c00c603400a6464006646600200200644b30010018a4d13259800800c56600260086eb4c060c06c00a29345901644cc896600266e40dd7180c8011bae30190018acc004c018dd6980d00144cc014014cc070004c07800e2c80c22c80c0c06c008c06c005019180d800a030298009807000d28528a026375c60260046eacc04c004c054005013456600266e252000375a600260206ea800a260106eb801a294100e4528201c3011300e375400246024602600314a08060c03c004c03cc040004c02cdd5003456600266e1d20040058992cc004c014c02cdd500144c8c966002602400513006375c6022601c6ea80122c8078dd7180800098061baa0028b2014300e300b375400d15980099b87480180162646644b30013007300d37540091323259800980a00144c020dd7180998081baa0068b2022375c6024002601c6ea80122c8060dd698078009807980800098059baa0068acc004c010016264b30013005300b37540051323259800980900144cdc39bad3011300e3754008900145900f1bad3010001300c37540051640286eb8c038c02cdd500345900920124024804860106012002601000260066ea802229344d9590011", + "hash": "0b7a8ebdc1c15fdfbe7acccb50e68c145bb5ae20e1cf1d4291517d98" }, { "title": "mint.mint_policy.publish", @@ -151,8 +151,8 @@ "$ref": "#/definitions/mint~1PublishRedeemer" } }, - "compiledCode": "5905cb01010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049211372656465656d65723a2042797465417272617900168a998012491a72656465656d65723a20576974686472617752656465656d657200168a998012491972656465656d65723a205075626c69736852656465656d657200168a998012491672656465656d65723a204d696e7452656465656d6572001648889660026464653001300a3754003370e90004dc7a450131009807001cc038009222225980099b87480080162646644b3001004807c03e01f00f8acc004c01cc048dd5000c4cc896600266ebcdd32cc00528452f5bded8c113232330010014bd6f7b630112cc00400626603466ec1301014000374c00697adef6c608994c004dd7180c000cdd5980c800cc0740092225980099b904890000389980f19bb04c01014000374c00e00b15980099b8f4890000389980f19bb04c01014000374c00e00313301e337606ea400cdd300119803003000a0324064301b0014064646600200297adef6c602259800800c4cc064cdd82610140004c01010a004bd6f7b63044ca60026eb8c05c0066eb4c06000660380049112cc004cdc824410000389980e99bb04c010140004c01010a000058acc004cdc7a4410000389980e99bb04c010140004c01010a0000189980e99bb037520066ea0008cc0180180050182030180d000a03040486e98c8cc004004dd59801180b1baa30193016375400644b30010018a5eb7bdb1822653001375c602e0033756603000333003003301c0024889660020051533019490124657870656374205061697228702c205b5f2c202e2e5d206173207829203d20696e6e657200168991919800800801912cc00400626604066ec0dd48031ba60034bd6f7b63044c8c96600266e4002000626604466ec0dd48041ba60050038acc004cdc7804000c54cc07924127756e6578706563746564206475706c6963617465206b657920666f756e6420696e20646963742e001689981119bb03752002604000466008008604800680e901d1bae301e0013021001407c6464008646600200200844b30010018a4d13259800800c56600260086eb4c07cc08800a293454cc0752411f76616c756520646f65736e277420736174697366792070726564696361746500164071133225980099b90375c60400046eb8c0800062b30013006375a60420051330050053302300130250038a9980fa491f76616c756520646f65736e277420736174697366792070726564696361746500164079153301f491276b65797320696e207061697273206172656e277420696e20617363656e64696e67206f7264657200164078604400460440028100c08800501f14c004c0400069429450192038180d000a0308acc004cdc4a40006eb4c004c054dd500144c020dd7003452820248a504048602c60266ea80048c05cc060006294101020303014001301430150013010375400d15980099b8748010016264b30010028acc004c014c040dd500144c96600200300d8992cc00400601d00e807403a264b30013018003898039bae30173014375400b00f40546eb8005018180a800a0263011375400500c403900c806403201880b0c04cc040dd5003456600266e1d200600589919912cc0040122b300130073012375400913259800800c03a264b3001001807c03e01f00f8992cc004c06800e260126eb8c064c058dd5003c0410171bae0014068602e00280a8c04cdd50024035010403601b00d806a030375a60280026028602a00260206ea801a2b300130040058992cc00400a2b300130053010375400513259800800c02e264b3001001806403201913259800980c001c4cdc39bad30173014375400a900140350151bad00180620303015001404c60226ea800a014807201500a80540290161bae30133010375400d153300e49113756e737570706f7274656420707572706f736500164034806900d201a18069807000980680098041baa00e8a4d15330064911856616c696461746f722072657475726e65642066616c7365001365640141", - "hash": "37d45d0f27a8acb0aab1fa29bfe93f781cdc1d40af43a5f37be4b5d6" + "compiledCode": "5903b101010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002646465300130053754003370e90004dc7a4410131009804801cc024009222225980099b87480080162646644b30013007300d3754003133225980099baf374cb30014a114bd6f7b63044c8c8cc0040052f5bded8c044b300100189980a99bb04c01014000374c00697adef6c608994c004dd71809800cdd5980a000cc0600092225980099b904890000389980c99bb04c01014000374c00e00b15980099b8f4890000389980c99bb04c01014000374c00e003133019337606ea400cdd300119803003000a02a405430160014050646600200297adef6c602259800800c4cc050cdd82610140004c01010a004bd6f7b63044ca60026eb8c0480066eb4c04c006602e0049112cc004cdc824410000389980c19bb04c010140004c01010a000058acc004cdc7a4410000389980c19bb04c010140004c01010a0000189980c19bb037520066ea0008cc0180180050142028180a800a02640386e98c8cc004004dd5980118089baa30143011375400644b30010018a5eb7bdb18226464664466446600400400244b300100189980d19bb037520066e980112f5bded8c1132325980099b9000500189980e19bb0375200a6e9801800e2b30013371e00a0031689980e19bb03752002603400466008008603c00680c10181bae3018001301b00140646600c00c603400a6464006646600200200644b30010018a4d13259800800c56600260086eb4c060c06c00a29345901644cc896600266e40dd7180c8011bae30190018acc004c018dd6980d00144cc014014cc070004c07800e2c80c22c80c0c06c008c06c005019180d800a030298009807000d28528a026375c60260046eacc04c004c054005013456600266e252000375a600260206ea800a260106eb801a294100e4528201c3011300e375400246024602600314a08060c03c004c03cc040004c02cdd5003456600266e1d20040058992cc004c014c02cdd500144c8c966002602400513006375c6022601c6ea80122c8078dd7180800098061baa0028b2014300e300b375400d15980099b87480180162646644b30013007300d37540091323259800980a00144c020dd7180998081baa0068b2022375c6024002601c6ea80122c8060dd698078009807980800098059baa0068acc004c010016264b30013005300b37540051323259800980900144cdc39bad3011300e3754008900145900f1bad3010001300c37540051640286eb8c038c02cdd500345900920124024804860106012002601000260066ea802229344d9590011", + "hash": "0b7a8ebdc1c15fdfbe7acccb50e68c145bb5ae20e1cf1d4291517d98" }, { "title": "mint.mint_policy.mint", @@ -162,16 +162,16 @@ "$ref": "#/definitions/mint~1MintRedeemer" } }, - "compiledCode": "5905cb01010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049211372656465656d65723a2042797465417272617900168a998012491a72656465656d65723a20576974686472617752656465656d657200168a998012491972656465656d65723a205075626c69736852656465656d657200168a998012491672656465656d65723a204d696e7452656465656d6572001648889660026464653001300a3754003370e90004dc7a450131009807001cc038009222225980099b87480080162646644b3001004807c03e01f00f8acc004c01cc048dd5000c4cc896600266ebcdd32cc00528452f5bded8c113232330010014bd6f7b630112cc00400626603466ec1301014000374c00697adef6c608994c004dd7180c000cdd5980c800cc0740092225980099b904890000389980f19bb04c01014000374c00e00b15980099b8f4890000389980f19bb04c01014000374c00e00313301e337606ea400cdd300119803003000a0324064301b0014064646600200297adef6c602259800800c4cc064cdd82610140004c01010a004bd6f7b63044ca60026eb8c05c0066eb4c06000660380049112cc004cdc824410000389980e99bb04c010140004c01010a000058acc004cdc7a4410000389980e99bb04c010140004c01010a0000189980e99bb037520066ea0008cc0180180050182030180d000a03040486e98c8cc004004dd59801180b1baa30193016375400644b30010018a5eb7bdb1822653001375c602e0033756603000333003003301c0024889660020051533019490124657870656374205061697228702c205b5f2c202e2e5d206173207829203d20696e6e657200168991919800800801912cc00400626604066ec0dd48031ba60034bd6f7b63044c8c96600266e4002000626604466ec0dd48041ba60050038acc004cdc7804000c54cc07924127756e6578706563746564206475706c6963617465206b657920666f756e6420696e20646963742e001689981119bb03752002604000466008008604800680e901d1bae301e0013021001407c6464008646600200200844b30010018a4d13259800800c56600260086eb4c07cc08800a293454cc0752411f76616c756520646f65736e277420736174697366792070726564696361746500164071133225980099b90375c60400046eb8c0800062b30013006375a60420051330050053302300130250038a9980fa491f76616c756520646f65736e277420736174697366792070726564696361746500164079153301f491276b65797320696e207061697273206172656e277420696e20617363656e64696e67206f7264657200164078604400460440028100c08800501f14c004c0400069429450192038180d000a0308acc004cdc4a40006eb4c004c054dd500144c020dd7003452820248a504048602c60266ea80048c05cc060006294101020303014001301430150013010375400d15980099b8748010016264b30010028acc004c014c040dd500144c96600200300d8992cc00400601d00e807403a264b30013018003898039bae30173014375400b00f40546eb8005018180a800a0263011375400500c403900c806403201880b0c04cc040dd5003456600266e1d200600589919912cc0040122b300130073012375400913259800800c03a264b3001001807c03e01f00f8992cc004c06800e260126eb8c064c058dd5003c0410171bae0014068602e00280a8c04cdd50024035010403601b00d806a030375a60280026028602a00260206ea801a2b300130040058992cc00400a2b300130053010375400513259800800c02e264b3001001806403201913259800980c001c4cdc39bad30173014375400a900140350151bad00180620303015001404c60226ea800a014807201500a80540290161bae30133010375400d153300e49113756e737570706f7274656420707572706f736500164034806900d201a18069807000980680098041baa00e8a4d15330064911856616c696461746f722072657475726e65642066616c7365001365640141", - "hash": "37d45d0f27a8acb0aab1fa29bfe93f781cdc1d40af43a5f37be4b5d6" + "compiledCode": "5903b101010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002646465300130053754003370e90004dc7a4410131009804801cc024009222225980099b87480080162646644b30013007300d3754003133225980099baf374cb30014a114bd6f7b63044c8c8cc0040052f5bded8c044b300100189980a99bb04c01014000374c00697adef6c608994c004dd71809800cdd5980a000cc0600092225980099b904890000389980c99bb04c01014000374c00e00b15980099b8f4890000389980c99bb04c01014000374c00e003133019337606ea400cdd300119803003000a02a405430160014050646600200297adef6c602259800800c4cc050cdd82610140004c01010a004bd6f7b63044ca60026eb8c0480066eb4c04c006602e0049112cc004cdc824410000389980c19bb04c010140004c01010a000058acc004cdc7a4410000389980c19bb04c010140004c01010a0000189980c19bb037520066ea0008cc0180180050142028180a800a02640386e98c8cc004004dd5980118089baa30143011375400644b30010018a5eb7bdb18226464664466446600400400244b300100189980d19bb037520066e980112f5bded8c1132325980099b9000500189980e19bb0375200a6e9801800e2b30013371e00a0031689980e19bb03752002603400466008008603c00680c10181bae3018001301b00140646600c00c603400a6464006646600200200644b30010018a4d13259800800c56600260086eb4c060c06c00a29345901644cc896600266e40dd7180c8011bae30190018acc004c018dd6980d00144cc014014cc070004c07800e2c80c22c80c0c06c008c06c005019180d800a030298009807000d28528a026375c60260046eacc04c004c054005013456600266e252000375a600260206ea800a260106eb801a294100e4528201c3011300e375400246024602600314a08060c03c004c03cc040004c02cdd5003456600266e1d20040058992cc004c014c02cdd500144c8c966002602400513006375c6022601c6ea80122c8078dd7180800098061baa0028b2014300e300b375400d15980099b87480180162646644b30013007300d37540091323259800980a00144c020dd7180998081baa0068b2022375c6024002601c6ea80122c8060dd698078009807980800098059baa0068acc004c010016264b30013005300b37540051323259800980900144cdc39bad3011300e3754008900145900f1bad3010001300c37540051640286eb8c038c02cdd500345900920124024804860106012002601000260066ea802229344d9590011", + "hash": "0b7a8ebdc1c15fdfbe7acccb50e68c145bb5ae20e1cf1d4291517d98" }, { "title": "mint.mint_policy.else", "redeemer": { "schema": {} }, - "compiledCode": "5905cb01010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049211372656465656d65723a2042797465417272617900168a998012491a72656465656d65723a20576974686472617752656465656d657200168a998012491972656465656d65723a205075626c69736852656465656d657200168a998012491672656465656d65723a204d696e7452656465656d6572001648889660026464653001300a3754003370e90004dc7a450131009807001cc038009222225980099b87480080162646644b3001004807c03e01f00f8acc004c01cc048dd5000c4cc896600266ebcdd32cc00528452f5bded8c113232330010014bd6f7b630112cc00400626603466ec1301014000374c00697adef6c608994c004dd7180c000cdd5980c800cc0740092225980099b904890000389980f19bb04c01014000374c00e00b15980099b8f4890000389980f19bb04c01014000374c00e00313301e337606ea400cdd300119803003000a0324064301b0014064646600200297adef6c602259800800c4cc064cdd82610140004c01010a004bd6f7b63044ca60026eb8c05c0066eb4c06000660380049112cc004cdc824410000389980e99bb04c010140004c01010a000058acc004cdc7a4410000389980e99bb04c010140004c01010a0000189980e99bb037520066ea0008cc0180180050182030180d000a03040486e98c8cc004004dd59801180b1baa30193016375400644b30010018a5eb7bdb1822653001375c602e0033756603000333003003301c0024889660020051533019490124657870656374205061697228702c205b5f2c202e2e5d206173207829203d20696e6e657200168991919800800801912cc00400626604066ec0dd48031ba60034bd6f7b63044c8c96600266e4002000626604466ec0dd48041ba60050038acc004cdc7804000c54cc07924127756e6578706563746564206475706c6963617465206b657920666f756e6420696e20646963742e001689981119bb03752002604000466008008604800680e901d1bae301e0013021001407c6464008646600200200844b30010018a4d13259800800c56600260086eb4c07cc08800a293454cc0752411f76616c756520646f65736e277420736174697366792070726564696361746500164071133225980099b90375c60400046eb8c0800062b30013006375a60420051330050053302300130250038a9980fa491f76616c756520646f65736e277420736174697366792070726564696361746500164079153301f491276b65797320696e207061697273206172656e277420696e20617363656e64696e67206f7264657200164078604400460440028100c08800501f14c004c0400069429450192038180d000a0308acc004cdc4a40006eb4c004c054dd500144c020dd7003452820248a504048602c60266ea80048c05cc060006294101020303014001301430150013010375400d15980099b8748010016264b30010028acc004c014c040dd500144c96600200300d8992cc00400601d00e807403a264b30013018003898039bae30173014375400b00f40546eb8005018180a800a0263011375400500c403900c806403201880b0c04cc040dd5003456600266e1d200600589919912cc0040122b300130073012375400913259800800c03a264b3001001807c03e01f00f8992cc004c06800e260126eb8c064c058dd5003c0410171bae0014068602e00280a8c04cdd50024035010403601b00d806a030375a60280026028602a00260206ea801a2b300130040058992cc00400a2b300130053010375400513259800800c02e264b3001001806403201913259800980c001c4cdc39bad30173014375400a900140350151bad00180620303015001404c60226ea800a014807201500a80540290161bae30133010375400d153300e49113756e737570706f7274656420707572706f736500164034806900d201a18069807000980680098041baa00e8a4d15330064911856616c696461746f722072657475726e65642066616c7365001365640141", - "hash": "37d45d0f27a8acb0aab1fa29bfe93f781cdc1d40af43a5f37be4b5d6" + "compiledCode": "5903b101010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002646465300130053754003370e90004dc7a4410131009804801cc024009222225980099b87480080162646644b30013007300d3754003133225980099baf374cb30014a114bd6f7b63044c8c8cc0040052f5bded8c044b300100189980a99bb04c01014000374c00697adef6c608994c004dd71809800cdd5980a000cc0600092225980099b904890000389980c99bb04c01014000374c00e00b15980099b8f4890000389980c99bb04c01014000374c00e003133019337606ea400cdd300119803003000a02a405430160014050646600200297adef6c602259800800c4cc050cdd82610140004c01010a004bd6f7b63044ca60026eb8c0480066eb4c04c006602e0049112cc004cdc824410000389980c19bb04c010140004c01010a000058acc004cdc7a4410000389980c19bb04c010140004c01010a0000189980c19bb037520066ea0008cc0180180050142028180a800a02640386e98c8cc004004dd5980118089baa30143011375400644b30010018a5eb7bdb18226464664466446600400400244b300100189980d19bb037520066e980112f5bded8c1132325980099b9000500189980e19bb0375200a6e9801800e2b30013371e00a0031689980e19bb03752002603400466008008603c00680c10181bae3018001301b00140646600c00c603400a6464006646600200200644b30010018a4d13259800800c56600260086eb4c060c06c00a29345901644cc896600266e40dd7180c8011bae30190018acc004c018dd6980d00144cc014014cc070004c07800e2c80c22c80c0c06c008c06c005019180d800a030298009807000d28528a026375c60260046eacc04c004c054005013456600266e252000375a600260206ea800a260106eb801a294100e4528201c3011300e375400246024602600314a08060c03c004c03cc040004c02cdd5003456600266e1d20040058992cc004c014c02cdd500144c8c966002602400513006375c6022601c6ea80122c8078dd7180800098061baa0028b2014300e300b375400d15980099b87480180162646644b30013007300d37540091323259800980a00144c020dd7180998081baa0068b2022375c6024002601c6ea80122c8060dd698078009807980800098059baa0068acc004c010016264b30013005300b37540051323259800980900144cdc39bad3011300e3754008900145900f1bad3010001300c37540051640286eb8c038c02cdd500345900920124024804860106012002601000260066ea802229344d9590011", + "hash": "0b7a8ebdc1c15fdfbe7acccb50e68c145bb5ae20e1cf1d4291517d98" }, { "title": "mint_multi_validator.mint_multi_validator.spend", @@ -187,8 +187,8 @@ "$ref": "#/definitions/mint_multi_validator~1SpendRedeemer" } }, - "compiledCode": "5906fa01010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049211772656465656d65723a205370656e6452656465656d657200168a998012492765787065637420646174756d3a20436f756e746572446174756d203d20646174756d5f6461746100168a998012491672656465656d65723a204d696e7452656465656d6572001648896600330013007375401b2300b300c0019b87480026e0120029b8748009222223232980098069baa0019808803cc044009222598009803001c4c8cc8966002009159800980598099baa0048992cc00400602313259800800c04a0250128992cc004c06c00e2b3001300e30163754009132598009807980b9baa0018992cc004c040c060dd5000c4c966002601e60326ea80062b30015980099b87375a603a60346ea8028cdc01bad301d301a3754603a60346ea801cdd6980e980d1baa0038a518a9980c2491972656465656d65725f69735f76616c6964203f2046616c73650014a080ba2b30019800acc004cc88cc88cc008008004896600200300389919912cc004cdc8803801456600266e3c01c00a20030064079133005005302500440786eb8c078004dd5980f8009810800a03e3756603e604060406040604060386ea8034dd7180e980d1baa00114bd6f7b6304528c5282036a50a51405d14a31533018491166e6f745f656d7074795f6d696e74203f2046616c73650014a080ba2941017454cc0612414465787065637420536372697074287363726970745f6861736829203d20696e7075742e6f75747075742e616464726573732e7061796d656e745f63726564656e7469616c0016405c603860326ea8c070c064dd51808980c9baa301c3019375400315330174913565787065637420536f6d6528696e70757429203d2066696e645f696e7075742873656c662e696e707574732c206f776e5f726566290016405864660020026eb0c070c064dd5005112cc0040062980103d87a80008992cc004cdd7980f180d9baa001009899ba548000cc0740052f5c1133003003301f0024060603a00280da2a6602c9212865787065637420536f6d65286f776e5f69647829203d206f776e5f696e6465785f696e5f6c6973740016405465300100199198008009bac301c3019375401444b30010018a5eb82266038603a60346ea8c074004cc008008c07800501b520004004444b30010028a6103d87a80008acc004cdd7980e80100444cdd2a4000660386ea00052f5c119800801cc07800a6020002801901720368a9980aa4811e65787065637420536f6d6528646174756d29203d20646174756d5f6f70740016405101340606eb400602480d8c060005016180a1baa004808202280840420210104064602a002602a602c00260226ea80122b300130080038992cc00400a2b300130093011375400513259800800c036264b3001001807403a264b300130190038991980080080111192cc00400a264b300132330010010022259800800c528c566002646644b30013370e9002180e9baa0018992cc0040062b30013016301e375400313259800800c06e264b300100180e4072039132598009813001c4c8c8cc004004dd6181398121baa0142259800800c528456600266ebcc0a0004dd3998139ba800933027375000697ae08a518998010011814800a044409866e00dd6981298111baa00400680ea046375a00301c409860460028108c07cdd5000c06901c406a03501a80d20483021301e3754003153301c49013365787065637420496e6c696e65446174756d28646174756d5f6461746129203d20696e7075742e6f75747075742e646174756d0016406c6eb4c07c004c07cc080c080c070dd5180a180e1baa301f30200013758603c003133002002301f0018a50406080e22646466e1cc004dd6180f180d9baa00b300100330010012259800800c520008980899801001180f800a0388a5040586466002002653001001a40013758603a60346ea802d0011112cc004006297ae089980f1ba73301e37500046603c603e00297ae09800801cc04800a6040002801901d112cc004006297ae0899912cc004c966002602460386ea8006266e3cdd71810180e9baa00100c8a504068603e60386ea8c07cc070dd5180a180e1baa301f302000289980f1ba700233004004001899802002000a0323758603a002603c00280da264b3001001809c04e264b300100180a44c96600200301580ac05626644b300100180bc4c96600200301880c4062264b30013023003898041811804c0650201bad00180c2046302000140786eb4004c07c00a02a8100c07400501b1bac001809c04d01e180d80120323002002807a02c375800300e80720323016001405060246ea800a018807a01900c80640310171bae301430113754009164038807060206022002602000a8a4d15330054911856616c696461746f722072657475726e65642066616c7365001365640101", - "hash": "adc9c0359ac76caa0288f719e6917c456c5076b90b3a00f68b37953e" + "compiledCode": "59044b01010029800aba2aba1aba0aab9faab9eaab9dab9a48888889660033001300337540112300730080019b87480026e0120029b8748009222223232980098049baa0019806803cc034009222598009803001c4c8cc89660026016601e6ea801226464b300130160028acc004c034c044dd5001c4c966002601c60246ea8006264b3001300f30133754003132598009807180a1baa0018acc004cdc39bad30183015375401266e00dd6980c180a9baa30183015375400c6eb4c060c054dd5001c66002b300133223322330020020012259800800c00e2646644b30013372200e00515980099b8f0070028800c01901a44cc014014c08001101a1bae301900137566034002603800280d0dd5980d180d980d980d980d980b9baa00c375c6030602a6ea800452f5bded8c114a314a080b2942945013452820268b2026301730143754602e60286ea8c040c050dd5180b980a1baa0018b202432330010013758602e60286ea8024896600200314c0103d87a80008992cc004cdd7980c980b1baa001008899ba548000cc0600052f5c1133003003301a0024050603000280b22c8088ca600200332330010013758602e60286ea8024896600200314bd7044cc05cc060c054dd5180c00099801001180c800a02ca400080088896600200514c103d87a80008acc004cdd7980c001003c4cdd2a40006602e6ea00052f5c119800801cc06400a601e0028019013202c8b20208b2026375a602800260206ea80122c8070c044004c044c048004c034dd50024566002601000713259800980498069baa0028992cc004c04c006264660020026eb0c04c0088966002003132598009919800800801112cc00400629462b30013233225980099b8748010c058dd5000c4c9660026026602e6ea800626464b3001301e00289919198008009bac301f301c375402044b30010018a508acc004cdd798100009ba73301f37500106603e6ea000d2f5c114a31330020023021001406c80f0cdc01bad301d301a375400600b16406c6eb4c070004c060dd5000c59016180d180b9baa0018b202a375a6030002603060326032602a6ea8c044c054dd5180c180c8009bac3017001899801001180c000c52820244055132323370e60026eb0c05cc050dd500418008019800800912cc0040062900044c038cc008008c060005015452820203233001001329800800d20009bac30163013375401080088896600200314bd7044cc05cdd39980b9ba80023301730180014bd704c00400e601e0053019001400c80b0896600200314bd7044cc896600264b3001300f3015375400313371e6eb8c064c058dd5000804c52820283018301537546030602a6ea8c044c054dd5180c180c80144cc05cdd380119802002000c4cc0100100050131bac30160013017001405113232332259800980c801c4cc018018c0640162c80b0dd6980b0009bad301600230160013758602800280922c8080c038dd500145900c1bae3010300d375400916402c80586018601a002601800a8a4d1365640041", + "hash": "1a928fb4e03a7842e0de455fbc2ef3b1a0e1e08591e63b4357161f0a" }, { "title": "mint_multi_validator.mint_multi_validator.mint", @@ -198,16 +198,41 @@ "$ref": "#/definitions/mint_multi_validator~1MintRedeemer" } }, - "compiledCode": "5906fa01010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049211772656465656d65723a205370656e6452656465656d657200168a998012492765787065637420646174756d3a20436f756e746572446174756d203d20646174756d5f6461746100168a998012491672656465656d65723a204d696e7452656465656d6572001648896600330013007375401b2300b300c0019b87480026e0120029b8748009222223232980098069baa0019808803cc044009222598009803001c4c8cc8966002009159800980598099baa0048992cc00400602313259800800c04a0250128992cc004c06c00e2b3001300e30163754009132598009807980b9baa0018992cc004c040c060dd5000c4c966002601e60326ea80062b30015980099b87375a603a60346ea8028cdc01bad301d301a3754603a60346ea801cdd6980e980d1baa0038a518a9980c2491972656465656d65725f69735f76616c6964203f2046616c73650014a080ba2b30019800acc004cc88cc88cc008008004896600200300389919912cc004cdc8803801456600266e3c01c00a20030064079133005005302500440786eb8c078004dd5980f8009810800a03e3756603e604060406040604060386ea8034dd7180e980d1baa00114bd6f7b6304528c5282036a50a51405d14a31533018491166e6f745f656d7074795f6d696e74203f2046616c73650014a080ba2941017454cc0612414465787065637420536372697074287363726970745f6861736829203d20696e7075742e6f75747075742e616464726573732e7061796d656e745f63726564656e7469616c0016405c603860326ea8c070c064dd51808980c9baa301c3019375400315330174913565787065637420536f6d6528696e70757429203d2066696e645f696e7075742873656c662e696e707574732c206f776e5f726566290016405864660020026eb0c070c064dd5005112cc0040062980103d87a80008992cc004cdd7980f180d9baa001009899ba548000cc0740052f5c1133003003301f0024060603a00280da2a6602c9212865787065637420536f6d65286f776e5f69647829203d206f776e5f696e6465785f696e5f6c6973740016405465300100199198008009bac301c3019375401444b30010018a5eb82266038603a60346ea8c074004cc008008c07800501b520004004444b30010028a6103d87a80008acc004cdd7980e80100444cdd2a4000660386ea00052f5c119800801cc07800a6020002801901720368a9980aa4811e65787065637420536f6d6528646174756d29203d20646174756d5f6f70740016405101340606eb400602480d8c060005016180a1baa004808202280840420210104064602a002602a602c00260226ea80122b300130080038992cc00400a2b300130093011375400513259800800c036264b3001001807403a264b300130190038991980080080111192cc00400a264b300132330010010022259800800c528c566002646644b30013370e9002180e9baa0018992cc0040062b30013016301e375400313259800800c06e264b300100180e4072039132598009813001c4c8c8cc004004dd6181398121baa0142259800800c528456600266ebcc0a0004dd3998139ba800933027375000697ae08a518998010011814800a044409866e00dd6981298111baa00400680ea046375a00301c409860460028108c07cdd5000c06901c406a03501a80d20483021301e3754003153301c49013365787065637420496e6c696e65446174756d28646174756d5f6461746129203d20696e7075742e6f75747075742e646174756d0016406c6eb4c07c004c07cc080c080c070dd5180a180e1baa301f30200013758603c003133002002301f0018a50406080e22646466e1cc004dd6180f180d9baa00b300100330010012259800800c520008980899801001180f800a0388a5040586466002002653001001a40013758603a60346ea802d0011112cc004006297ae089980f1ba73301e37500046603c603e00297ae09800801cc04800a6040002801901d112cc004006297ae0899912cc004c966002602460386ea8006266e3cdd71810180e9baa00100c8a504068603e60386ea8c07cc070dd5180a180e1baa301f302000289980f1ba700233004004001899802002000a0323758603a002603c00280da264b3001001809c04e264b300100180a44c96600200301580ac05626644b300100180bc4c96600200301880c4062264b30013023003898041811804c0650201bad00180c2046302000140786eb4004c07c00a02a8100c07400501b1bac001809c04d01e180d80120323002002807a02c375800300e80720323016001405060246ea800a018807a01900c80640310171bae301430113754009164038807060206022002602000a8a4d15330054911856616c696461746f722072657475726e65642066616c7365001365640101", - "hash": "adc9c0359ac76caa0288f719e6917c456c5076b90b3a00f68b37953e" + "compiledCode": "59044b01010029800aba2aba1aba0aab9faab9eaab9dab9a48888889660033001300337540112300730080019b87480026e0120029b8748009222223232980098049baa0019806803cc034009222598009803001c4c8cc89660026016601e6ea801226464b300130160028acc004c034c044dd5001c4c966002601c60246ea8006264b3001300f30133754003132598009807180a1baa0018acc004cdc39bad30183015375401266e00dd6980c180a9baa30183015375400c6eb4c060c054dd5001c66002b300133223322330020020012259800800c00e2646644b30013372200e00515980099b8f0070028800c01901a44cc014014c08001101a1bae301900137566034002603800280d0dd5980d180d980d980d980d980b9baa00c375c6030602a6ea800452f5bded8c114a314a080b2942945013452820268b2026301730143754602e60286ea8c040c050dd5180b980a1baa0018b202432330010013758602e60286ea8024896600200314c0103d87a80008992cc004cdd7980c980b1baa001008899ba548000cc0600052f5c1133003003301a0024050603000280b22c8088ca600200332330010013758602e60286ea8024896600200314bd7044cc05cc060c054dd5180c00099801001180c800a02ca400080088896600200514c103d87a80008acc004cdd7980c001003c4cdd2a40006602e6ea00052f5c119800801cc06400a601e0028019013202c8b20208b2026375a602800260206ea80122c8070c044004c044c048004c034dd50024566002601000713259800980498069baa0028992cc004c04c006264660020026eb0c04c0088966002003132598009919800800801112cc00400629462b30013233225980099b8748010c058dd5000c4c9660026026602e6ea800626464b3001301e00289919198008009bac301f301c375402044b30010018a508acc004cdd798100009ba73301f37500106603e6ea000d2f5c114a31330020023021001406c80f0cdc01bad301d301a375400600b16406c6eb4c070004c060dd5000c59016180d180b9baa0018b202a375a6030002603060326032602a6ea8c044c054dd5180c180c8009bac3017001899801001180c000c52820244055132323370e60026eb0c05cc050dd500418008019800800912cc0040062900044c038cc008008c060005015452820203233001001329800800d20009bac30163013375401080088896600200314bd7044cc05cdd39980b9ba80023301730180014bd704c00400e601e0053019001400c80b0896600200314bd7044cc896600264b3001300f3015375400313371e6eb8c064c058dd5000804c52820283018301537546030602a6ea8c044c054dd5180c180c80144cc05cdd380119802002000c4cc0100100050131bac30160013017001405113232332259800980c801c4cc018018c0640162c80b0dd6980b0009bad301600230160013758602800280922c8080c038dd500145900c1bae3010300d375400916402c80586018601a002601800a8a4d1365640041", + "hash": "1a928fb4e03a7842e0de455fbc2ef3b1a0e1e08591e63b4357161f0a" }, { "title": "mint_multi_validator.mint_multi_validator.else", "redeemer": { "schema": {} }, - "compiledCode": "5906fa01010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049211772656465656d65723a205370656e6452656465656d657200168a998012492765787065637420646174756d3a20436f756e746572446174756d203d20646174756d5f6461746100168a998012491672656465656d65723a204d696e7452656465656d6572001648896600330013007375401b2300b300c0019b87480026e0120029b8748009222223232980098069baa0019808803cc044009222598009803001c4c8cc8966002009159800980598099baa0048992cc00400602313259800800c04a0250128992cc004c06c00e2b3001300e30163754009132598009807980b9baa0018992cc004c040c060dd5000c4c966002601e60326ea80062b30015980099b87375a603a60346ea8028cdc01bad301d301a3754603a60346ea801cdd6980e980d1baa0038a518a9980c2491972656465656d65725f69735f76616c6964203f2046616c73650014a080ba2b30019800acc004cc88cc88cc008008004896600200300389919912cc004cdc8803801456600266e3c01c00a20030064079133005005302500440786eb8c078004dd5980f8009810800a03e3756603e604060406040604060386ea8034dd7180e980d1baa00114bd6f7b6304528c5282036a50a51405d14a31533018491166e6f745f656d7074795f6d696e74203f2046616c73650014a080ba2941017454cc0612414465787065637420536372697074287363726970745f6861736829203d20696e7075742e6f75747075742e616464726573732e7061796d656e745f63726564656e7469616c0016405c603860326ea8c070c064dd51808980c9baa301c3019375400315330174913565787065637420536f6d6528696e70757429203d2066696e645f696e7075742873656c662e696e707574732c206f776e5f726566290016405864660020026eb0c070c064dd5005112cc0040062980103d87a80008992cc004cdd7980f180d9baa001009899ba548000cc0740052f5c1133003003301f0024060603a00280da2a6602c9212865787065637420536f6d65286f776e5f69647829203d206f776e5f696e6465785f696e5f6c6973740016405465300100199198008009bac301c3019375401444b30010018a5eb82266038603a60346ea8c074004cc008008c07800501b520004004444b30010028a6103d87a80008acc004cdd7980e80100444cdd2a4000660386ea00052f5c119800801cc07800a6020002801901720368a9980aa4811e65787065637420536f6d6528646174756d29203d20646174756d5f6f70740016405101340606eb400602480d8c060005016180a1baa004808202280840420210104064602a002602a602c00260226ea80122b300130080038992cc00400a2b300130093011375400513259800800c036264b3001001807403a264b300130190038991980080080111192cc00400a264b300132330010010022259800800c528c566002646644b30013370e9002180e9baa0018992cc0040062b30013016301e375400313259800800c06e264b300100180e4072039132598009813001c4c8c8cc004004dd6181398121baa0142259800800c528456600266ebcc0a0004dd3998139ba800933027375000697ae08a518998010011814800a044409866e00dd6981298111baa00400680ea046375a00301c409860460028108c07cdd5000c06901c406a03501a80d20483021301e3754003153301c49013365787065637420496e6c696e65446174756d28646174756d5f6461746129203d20696e7075742e6f75747075742e646174756d0016406c6eb4c07c004c07cc080c080c070dd5180a180e1baa301f30200013758603c003133002002301f0018a50406080e22646466e1cc004dd6180f180d9baa00b300100330010012259800800c520008980899801001180f800a0388a5040586466002002653001001a40013758603a60346ea802d0011112cc004006297ae089980f1ba73301e37500046603c603e00297ae09800801cc04800a6040002801901d112cc004006297ae0899912cc004c966002602460386ea8006266e3cdd71810180e9baa00100c8a504068603e60386ea8c07cc070dd5180a180e1baa301f302000289980f1ba700233004004001899802002000a0323758603a002603c00280da264b3001001809c04e264b300100180a44c96600200301580ac05626644b300100180bc4c96600200301880c4062264b30013023003898041811804c0650201bad00180c2046302000140786eb4004c07c00a02a8100c07400501b1bac001809c04d01e180d80120323002002807a02c375800300e80720323016001405060246ea800a018807a01900c80640310171bae301430113754009164038807060206022002602000a8a4d15330054911856616c696461746f722072657475726e65642066616c7365001365640101", - "hash": "adc9c0359ac76caa0288f719e6917c456c5076b90b3a00f68b37953e" + "compiledCode": "59044b01010029800aba2aba1aba0aab9faab9eaab9dab9a48888889660033001300337540112300730080019b87480026e0120029b8748009222223232980098049baa0019806803cc034009222598009803001c4c8cc89660026016601e6ea801226464b300130160028acc004c034c044dd5001c4c966002601c60246ea8006264b3001300f30133754003132598009807180a1baa0018acc004cdc39bad30183015375401266e00dd6980c180a9baa30183015375400c6eb4c060c054dd5001c66002b300133223322330020020012259800800c00e2646644b30013372200e00515980099b8f0070028800c01901a44cc014014c08001101a1bae301900137566034002603800280d0dd5980d180d980d980d980d980b9baa00c375c6030602a6ea800452f5bded8c114a314a080b2942945013452820268b2026301730143754602e60286ea8c040c050dd5180b980a1baa0018b202432330010013758602e60286ea8024896600200314c0103d87a80008992cc004cdd7980c980b1baa001008899ba548000cc0600052f5c1133003003301a0024050603000280b22c8088ca600200332330010013758602e60286ea8024896600200314bd7044cc05cc060c054dd5180c00099801001180c800a02ca400080088896600200514c103d87a80008acc004cdd7980c001003c4cdd2a40006602e6ea00052f5c119800801cc06400a601e0028019013202c8b20208b2026375a602800260206ea80122c8070c044004c044c048004c034dd50024566002601000713259800980498069baa0028992cc004c04c006264660020026eb0c04c0088966002003132598009919800800801112cc00400629462b30013233225980099b8748010c058dd5000c4c9660026026602e6ea800626464b3001301e00289919198008009bac301f301c375402044b30010018a508acc004cdd798100009ba73301f37500106603e6ea000d2f5c114a31330020023021001406c80f0cdc01bad301d301a375400600b16406c6eb4c070004c060dd5000c59016180d180b9baa0018b202a375a6030002603060326032602a6ea8c044c054dd5180c180c8009bac3017001899801001180c000c52820244055132323370e60026eb0c05cc050dd500418008019800800912cc0040062900044c038cc008008c060005015452820203233001001329800800d20009bac30163013375401080088896600200314bd7044cc05cdd39980b9ba80023301730180014bd704c00400e601e0053019001400c80b0896600200314bd7044cc896600264b3001300f3015375400313371e6eb8c064c058dd5000804c52820283018301537546030602a6ea8c044c054dd5180c180c80144cc05cdd380119802002000c4cc0100100050131bac30160013017001405113232332259800980c801c4cc018018c0640162c80b0dd6980b0009bad301600230160013758602800280922c8080c038dd500145900c1bae3010300d375400916402c80586018601a002601800a8a4d1365640041", + "hash": "1a928fb4e03a7842e0de455fbc2ef3b1a0e1e08591e63b4357161f0a" + }, + { + "title": "multisig.multisig.spend", + "datum": { + "title": "_datum", + "schema": { + "$ref": "#/definitions/multisig~1MultiSig" + } + }, + "redeemer": { + "title": "_redeemer", + "schema": { + "$ref": "#/definitions/ByteArray" + } + }, + "compiledCode": "585e01010029800aba2aba1aab9eaab9dab9a4888896600264646644b30013370e900118031baa0028994c004c02400660126014003375c601200891125118039baa0028a504014600c600e002600c004600c00260066ea801a29344d9590011", + "hash": "c13a66c2e5d357f55bcf69f23b3bafb184913c73b45008dceaf83aa2" + }, + { + "title": "multisig.multisig.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "585e01010029800aba2aba1aab9eaab9dab9a4888896600264646644b30013370e900118031baa0028994c004c02400660126014003375c601200891125118039baa0028a504014600c600e002600c004600c00260066ea801a29344d9590011", + "hash": "c13a66c2e5d357f55bcf69f23b3bafb184913c73b45008dceaf83aa2" }, { "title": "simple_mint.simple_mint.withdraw", @@ -217,8 +242,8 @@ "$ref": "#/definitions/simple_mint~1WithdrawRedeemer" } }, - "compiledCode": "59023f01010029800aba4aba2aba1aab9faab9eaab9dab9cab9a48888888a60022a6600492011a72656465656d65723a20576974686472617752656465656d657200168a998012491972656465656d65723a205075626c69736852656465656d657200168a998012491672656465656d65723a204d696e7452656465656d65720016488966002646465300130093754003370e90004c03000e601800491112cc004cdc3a40080091325980080145660026008601c6ea800a264b300100180644c96600200300d806c03601b13259800980a801c4cdc79bae30143012375400a9110131008072026375c00280a8c04800501118079baa002805a018805c02e01700b404c6020601c6ea80162b30013370e900300244c8cc8966002009159800980318081baa0048992cc00400601b13259800800c03a01d00e80744c966002602e00713371e6eb8c058c050dd5003a441013100807a02a375c00280b8c05000501318089baa004806201c806403201900c40546eb4c044004c044c048004c038dd5002c56600260060091325980080145660026008601c6ea800a264b300100180544c96600200300b805c02e264b30013015003899b87375a602860246ea801520028062026375a00300b405460240028088c03cdd5001402500c4026013009804a026375c6020601c6ea80162a66018920113756e737570706f7274656420707572706f73650016402c805900b0c02cc030004c02c004c01cdd500645268a99802a491856616c696461746f722072657475726e65642066616c7365001365640101", - "hash": "1808ea735ab1d98afc9ac680644ee71a9d2d118cd8141683061f15de" + "compiledCode": "59012901010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003370e90004c02000e601000491112cc004cdc3a400800913259800980218051baa002899192cc004c04000a266e3cdd7180798069baa0044890131008b201c375c601c00260166ea800a2c8048c030c028dd5002c56600266e1d200600489919912cc004c018c030dd500244c8c966002602400513371e6eb8c044c03cdd500324410131008b2020375c6020002601a6ea80122c8058dd698068009806980700098051baa0058acc004c00c012264b30013004300a37540051323259800980800144cdc39bad300f300d3754008900145900e1bad300e001300b37540051640246eb8c030c028dd5002c59008201040203007300800130070013003375400f149a26cac80081", + "hash": "5cee358e512c8064024b140fcdb7bc35bb4694d11ccccb7acb182b5c" }, { "title": "simple_mint.simple_mint.publish", @@ -228,8 +253,8 @@ "$ref": "#/definitions/simple_mint~1PublishRedeemer" } }, - "compiledCode": "59023f01010029800aba4aba2aba1aab9faab9eaab9dab9cab9a48888888a60022a6600492011a72656465656d65723a20576974686472617752656465656d657200168a998012491972656465656d65723a205075626c69736852656465656d657200168a998012491672656465656d65723a204d696e7452656465656d65720016488966002646465300130093754003370e90004c03000e601800491112cc004cdc3a40080091325980080145660026008601c6ea800a264b300100180644c96600200300d806c03601b13259800980a801c4cdc79bae30143012375400a9110131008072026375c00280a8c04800501118079baa002805a018805c02e01700b404c6020601c6ea80162b30013370e900300244c8cc8966002009159800980318081baa0048992cc00400601b13259800800c03a01d00e80744c966002602e00713371e6eb8c058c050dd5003a441013100807a02a375c00280b8c05000501318089baa004806201c806403201900c40546eb4c044004c044c048004c038dd5002c56600260060091325980080145660026008601c6ea800a264b300100180544c96600200300b805c02e264b30013015003899b87375a602860246ea801520028062026375a00300b405460240028088c03cdd5001402500c4026013009804a026375c6020601c6ea80162a66018920113756e737570706f7274656420707572706f73650016402c805900b0c02cc030004c02c004c01cdd500645268a99802a491856616c696461746f722072657475726e65642066616c7365001365640101", - "hash": "1808ea735ab1d98afc9ac680644ee71a9d2d118cd8141683061f15de" + "compiledCode": "59012901010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003370e90004c02000e601000491112cc004cdc3a400800913259800980218051baa002899192cc004c04000a266e3cdd7180798069baa0044890131008b201c375c601c00260166ea800a2c8048c030c028dd5002c56600266e1d200600489919912cc004c018c030dd500244c8c966002602400513371e6eb8c044c03cdd500324410131008b2020375c6020002601a6ea80122c8058dd698068009806980700098051baa0058acc004c00c012264b30013004300a37540051323259800980800144cdc39bad300f300d3754008900145900e1bad300e001300b37540051640246eb8c030c028dd5002c59008201040203007300800130070013003375400f149a26cac80081", + "hash": "5cee358e512c8064024b140fcdb7bc35bb4694d11ccccb7acb182b5c" }, { "title": "simple_mint.simple_mint.mint", @@ -239,16 +264,16 @@ "$ref": "#/definitions/simple_mint~1MintRedeemer" } }, - "compiledCode": "59023f01010029800aba4aba2aba1aab9faab9eaab9dab9cab9a48888888a60022a6600492011a72656465656d65723a20576974686472617752656465656d657200168a998012491972656465656d65723a205075626c69736852656465656d657200168a998012491672656465656d65723a204d696e7452656465656d65720016488966002646465300130093754003370e90004c03000e601800491112cc004cdc3a40080091325980080145660026008601c6ea800a264b300100180644c96600200300d806c03601b13259800980a801c4cdc79bae30143012375400a9110131008072026375c00280a8c04800501118079baa002805a018805c02e01700b404c6020601c6ea80162b30013370e900300244c8cc8966002009159800980318081baa0048992cc00400601b13259800800c03a01d00e80744c966002602e00713371e6eb8c058c050dd5003a441013100807a02a375c00280b8c05000501318089baa004806201c806403201900c40546eb4c044004c044c048004c038dd5002c56600260060091325980080145660026008601c6ea800a264b300100180544c96600200300b805c02e264b30013015003899b87375a602860246ea801520028062026375a00300b405460240028088c03cdd5001402500c4026013009804a026375c6020601c6ea80162a66018920113756e737570706f7274656420707572706f73650016402c805900b0c02cc030004c02c004c01cdd500645268a99802a491856616c696461746f722072657475726e65642066616c7365001365640101", - "hash": "1808ea735ab1d98afc9ac680644ee71a9d2d118cd8141683061f15de" + "compiledCode": "59012901010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003370e90004c02000e601000491112cc004cdc3a400800913259800980218051baa002899192cc004c04000a266e3cdd7180798069baa0044890131008b201c375c601c00260166ea800a2c8048c030c028dd5002c56600266e1d200600489919912cc004c018c030dd500244c8c966002602400513371e6eb8c044c03cdd500324410131008b2020375c6020002601a6ea80122c8058dd698068009806980700098051baa0058acc004c00c012264b30013004300a37540051323259800980800144cdc39bad300f300d3754008900145900e1bad300e001300b37540051640246eb8c030c028dd5002c59008201040203007300800130070013003375400f149a26cac80081", + "hash": "5cee358e512c8064024b140fcdb7bc35bb4694d11ccccb7acb182b5c" }, { "title": "simple_mint.simple_mint.else", "redeemer": { "schema": {} }, - "compiledCode": "59023f01010029800aba4aba2aba1aab9faab9eaab9dab9cab9a48888888a60022a6600492011a72656465656d65723a20576974686472617752656465656d657200168a998012491972656465656d65723a205075626c69736852656465656d657200168a998012491672656465656d65723a204d696e7452656465656d65720016488966002646465300130093754003370e90004c03000e601800491112cc004cdc3a40080091325980080145660026008601c6ea800a264b300100180644c96600200300d806c03601b13259800980a801c4cdc79bae30143012375400a9110131008072026375c00280a8c04800501118079baa002805a018805c02e01700b404c6020601c6ea80162b30013370e900300244c8cc8966002009159800980318081baa0048992cc00400601b13259800800c03a01d00e80744c966002602e00713371e6eb8c058c050dd5003a441013100807a02a375c00280b8c05000501318089baa004806201c806403201900c40546eb4c044004c044c048004c038dd5002c56600260060091325980080145660026008601c6ea800a264b300100180544c96600200300b805c02e264b30013015003899b87375a602860246ea801520028062026375a00300b405460240028088c03cdd5001402500c4026013009804a026375c6020601c6ea80162a66018920113756e737570706f7274656420707572706f73650016402c805900b0c02cc030004c02c004c01cdd500645268a99802a491856616c696461746f722072657475726e65642066616c7365001365640101", - "hash": "1808ea735ab1d98afc9ac680644ee71a9d2d118cd8141683061f15de" + "compiledCode": "59012901010029800aba2aba1aab9faab9eaab9dab9a488888966002646465300130053754003370e90004c02000e601000491112cc004cdc3a400800913259800980218051baa002899192cc004c04000a266e3cdd7180798069baa0044890131008b201c375c601c00260166ea800a2c8048c030c028dd5002c56600266e1d200600489919912cc004c018c030dd500244c8c966002602400513371e6eb8c044c03cdd500324410131008b2020375c6020002601a6ea80122c8058dd698068009806980700098051baa0058acc004c00c012264b30013004300a37540051323259800980800144cdc39bad300f300d3754008900145900e1bad300e001300b37540051640246eb8c030c028dd5002c59008201040203007300800130070013003375400f149a26cac80081", + "hash": "5cee358e512c8064024b140fcdb7bc35bb4694d11ccccb7acb182b5c" }, { "title": "stake_multivalidator.stake_multivalidator.spend", @@ -264,8 +289,8 @@ "$ref": "#/definitions/Int" } }, - "compiledCode": "59083801010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049210d72656465656d65723a20496e7400168a998012491a72656465656d65723a20576974686472617752656465656d657200168a998012491a5f72656465656d65723a205075626c69736852656465656d6572001648896600330013007375401b2300b300c0019b87480026e01200148888cc88cc8a6002601c6ea800a44b300133710002900045300103d87a8000899801801000a01c98090044c04801122225980099b87480080122646644b3001004809404a025132598009807180b1baa0018992cc0056600266ebcc06cc060dd50008024528c54cc05924129696e7075742e6f75747075745f7265666572656e6365203d3d206f776e5f726566203f2046616c73650014a080aa26466446600400400244b30010018a508acc004cdd7801980d180f000c528c4cc008008c07c005018203837566038603a603a603a603a603a603a60326ea8020c06cc060dd5180d980c1baa30103018375400314a080a8c068c05cdd5000c54cc05524013365787065637420536f6d6528696e70757429203d206c6973742e61742873656c662e696e707574732c2072656465656d657229001640506600c6eb0c064c058dd50029bad00480920363017001301730180013013375400d15980099b8748010012264b30010028acc004c02cc04cdd500144c9660020030108992cc0040060230118992cc004c06c00e264660020020044464b30010028cc0048966002003148002266e012002330020023020001407532330010013758603c60366ea8024896600200314a3159800992cc004c050c070dd5000c4cdd79810180e9baa3020301d3754602a603a6ea8c080c074dd5000805454cc06d2412e65787065637420536f6d6528696e70757429203d206c6973742e61742873656c662e696e707574732c206964782900164068660186eb0c07cc070dd50059bad301f0018998010011810000c52820324075329800800cdd6180f180f980f980d9baa00aa400080088896600200510018cc00400e60420055980099baf3020301d37546040603a6ea8c08000802a266e0000520028800a034400c80f2444b3001337120049000440063300100399b840024805266e2ccdc019b85002480512060001400c80d24444646600200200a44b30010018802c4c9660020031330043024002006899802981200119801801800a044302400140849111119911919194c0048dcc99801000a4410098029bac3027302437540253370e600a64660020026eb0c0a0c094dd5009912cc004006297ae0899198149ba8001330030033233001001302c0032259800800c52f5c11332259800cc004cdc3801002d28528a0508998169ba800233004004001899802002000a050375a6058002605a0028150dd69814800a04e30053758604e60486ea8049222533025300337500042a6604a60066ea002c566002b30010018a518a99812a49156e6f5f6475706c696361746573203f2046616c73650014a081222b3001598008064528c54cc09524011476616c69645f696e70757473203f2046616c73650014a081222b30013370e00401714a31533025490123696e7075745f636f756e74203d3d206f75747075745f636f756e74203f2046616c73650014a081222941024452820481800800911192cc00400e2646466446601200466e29220101280059800800c4cdc52441035b5d2900006899b8a489035b5f20009800800ccdc52441025d2900006914c00402a00530070014029229800805400a002805100c20565980099b880014803a266e0120f2010018acc004cdc4000a41000513370066e01208014001480362c81290251bac3028002375a604c0026466ec0dd418130009ba73027001375400713259800800c4cdc52441027b7d00003899b8a489037b5f20003232330010010032259800800c400e264b30010018994c00402a6056003337149101023a200098008054c0b000600a805100a181700144ca6002015302b00199b8a489023a200098008054c0b0006600e66008008004805100a18170012058302e00140ac66e29220102207d0000340a06eac00e264b3001001899b8a489025b5d00003899b8a489035b5f20009800800ccdc52441015d00003914c00401e0053004001401d229800803c00a002803900920503758007133005375a0060051323371491102682700329800800cc078dc68014cdc52450127000044004444b300133710004900044006264664530010069811802ccdc599b800025980099b88002480522903045206e40a866e2ccdc0000acc004cdc4000a4029148182290372054004401866e0c00520203370c002901019b8e004002409c6eb800d02b1b8a4881022c20002232330010010032259800980e000c4cdc52450130000038acc004cdc4000a40011337149101012d0033002002337029000000c4cc014cdc2000a402866e2ccdc019b8500148051206000340888110c014014c00800913259800800c05a02d016899180198100021bad00180b2040301d002406c600400501240606eb0006023011406c603000280b0c050dd5001403d011403e01f00f807a03230163013375400d15980099b87480180122646644b30010048acc004c034c054dd500244c9660020030118992cc00400602501280944c966002603a00714a301340686eb400602480e8c068005018180b1baa00480820268084042021010406c6eb4c05c004c05cc060004c04cdd500345901020204040301030110023001001300f0042225980080145300103d87a80008acc004c014006266e9520003301030110024bd7046600200730120029802000a006402c8079149a2a6600a9211856616c696461746f722072657475726e65642066616c7365001365640101", - "hash": "bbf0e574954e4625e2772ca2081ac3039949d2ee492a7155a09b133b" + "compiledCode": "59034601010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002664466446645300130083754005225980099b8800148002298103d87a8000899801801000a012918069807000cc03001a6018008911112cc004cdc3a400400b13298009809000cc048c04c0066600a6eb0c048c03cdd50019bad002488966002601c60226ea8006264b30013375e602c60266ea800401226466446600400400244b30010018a508acc004cdd7801980a980c800c528c4cc008008c068005014202e3756602e60306030603060306030603060286ea8020c058c04cdd5180b18099baa30083013375400314a08088c054c048dd5000c590100c038dd5003c56600266e1d20040058992cc004c02cc038dd500144c9660026028003132330010013758602800444b3001001899192cc004cdc3980099198008009bac30183015375401044b30010018a5eb82264660326ea0004cc00c00cc8cc004004c07000c896600200314bd7044cc896600330013370e00400b4a14a280ca26603a6ea0008cc01001000626600800800280c8dd6980e000980e800a034375a603200280b8c004dd6180b980a1baa0078acc004c8cc004004dd6180c180a9baa0082259800800c528c56600264b300130133016375400313375e6034602e6ea8c068c05cdd51806180b9baa301a30173754002013164054660186eb0c064c058dd50051bad3019001899801001180d000c5282028405d13370e60026eb0c05cc050dd5003994c0040066eb0c060c064c064c054dd5004d20004004444b30010028800c66002007301b002acc004cdd7980d180b9baa301a3017375460340040131337000029001440050152006406114a0809229410121800800912cc0040062900044cdc02400466004004603000280aa26466006006602e0046eb4c05400501345901118079baa0028b201a3011300e375400f15980099b87480180162646644b3001300d301037540091323259800980b8014528c590141bad30150013011375400916403c6eb4c048004c048c04c004c038dd5003c5900c20184030300a300b002300100130090022225980080145300103d87a80008acc004c010006266e9520003300a300b0024bd70466002007300c00299b8000148005003200c402460066ea8020dc3a4001149a26cac80081", + "hash": "f9159e1c2167d7157b355aa20466bb51b0b4b44852df381e2508c66a" }, { "title": "stake_multivalidator.stake_multivalidator.withdraw", @@ -275,8 +300,8 @@ "$ref": "#/definitions/stake_multivalidator~1WithdrawRedeemer" } }, - "compiledCode": "59083801010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049210d72656465656d65723a20496e7400168a998012491a72656465656d65723a20576974686472617752656465656d657200168a998012491a5f72656465656d65723a205075626c69736852656465656d6572001648896600330013007375401b2300b300c0019b87480026e01200148888cc88cc8a6002601c6ea800a44b300133710002900045300103d87a8000899801801000a01c98090044c04801122225980099b87480080122646644b3001004809404a025132598009807180b1baa0018992cc0056600266ebcc06cc060dd50008024528c54cc05924129696e7075742e6f75747075745f7265666572656e6365203d3d206f776e5f726566203f2046616c73650014a080aa26466446600400400244b30010018a508acc004cdd7801980d180f000c528c4cc008008c07c005018203837566038603a603a603a603a603a603a60326ea8020c06cc060dd5180d980c1baa30103018375400314a080a8c068c05cdd5000c54cc05524013365787065637420536f6d6528696e70757429203d206c6973742e61742873656c662e696e707574732c2072656465656d657229001640506600c6eb0c064c058dd50029bad00480920363017001301730180013013375400d15980099b8748010012264b30010028acc004c02cc04cdd500144c9660020030108992cc0040060230118992cc004c06c00e264660020020044464b30010028cc0048966002003148002266e012002330020023020001407532330010013758603c60366ea8024896600200314a3159800992cc004c050c070dd5000c4cdd79810180e9baa3020301d3754602a603a6ea8c080c074dd5000805454cc06d2412e65787065637420536f6d6528696e70757429203d206c6973742e61742873656c662e696e707574732c206964782900164068660186eb0c07cc070dd50059bad301f0018998010011810000c52820324075329800800cdd6180f180f980f980d9baa00aa400080088896600200510018cc00400e60420055980099baf3020301d37546040603a6ea8c08000802a266e0000520028800a034400c80f2444b3001337120049000440063300100399b840024805266e2ccdc019b85002480512060001400c80d24444646600200200a44b30010018802c4c9660020031330043024002006899802981200119801801800a044302400140849111119911919194c0048dcc99801000a4410098029bac3027302437540253370e600a64660020026eb0c0a0c094dd5009912cc004006297ae0899198149ba8001330030033233001001302c0032259800800c52f5c11332259800cc004cdc3801002d28528a0508998169ba800233004004001899802002000a050375a6058002605a0028150dd69814800a04e30053758604e60486ea8049222533025300337500042a6604a60066ea002c566002b30010018a518a99812a49156e6f5f6475706c696361746573203f2046616c73650014a081222b3001598008064528c54cc09524011476616c69645f696e70757473203f2046616c73650014a081222b30013370e00401714a31533025490123696e7075745f636f756e74203d3d206f75747075745f636f756e74203f2046616c73650014a081222941024452820481800800911192cc00400e2646466446601200466e29220101280059800800c4cdc52441035b5d2900006899b8a489035b5f20009800800ccdc52441025d2900006914c00402a00530070014029229800805400a002805100c20565980099b880014803a266e0120f2010018acc004cdc4000a41000513370066e01208014001480362c81290251bac3028002375a604c0026466ec0dd418130009ba73027001375400713259800800c4cdc52441027b7d00003899b8a489037b5f20003232330010010032259800800c400e264b30010018994c00402a6056003337149101023a200098008054c0b000600a805100a181700144ca6002015302b00199b8a489023a200098008054c0b0006600e66008008004805100a18170012058302e00140ac66e29220102207d0000340a06eac00e264b3001001899b8a489025b5d00003899b8a489035b5f20009800800ccdc52441015d00003914c00401e0053004001401d229800803c00a002803900920503758007133005375a0060051323371491102682700329800800cc078dc68014cdc52450127000044004444b300133710004900044006264664530010069811802ccdc599b800025980099b88002480522903045206e40a866e2ccdc0000acc004cdc4000a4029148182290372054004401866e0c00520203370c002901019b8e004002409c6eb800d02b1b8a4881022c20002232330010010032259800980e000c4cdc52450130000038acc004cdc4000a40011337149101012d0033002002337029000000c4cc014cdc2000a402866e2ccdc019b8500148051206000340888110c014014c00800913259800800c05a02d016899180198100021bad00180b2040301d002406c600400501240606eb0006023011406c603000280b0c050dd5001403d011403e01f00f807a03230163013375400d15980099b87480180122646644b30010048acc004c034c054dd500244c9660020030118992cc00400602501280944c966002603a00714a301340686eb400602480e8c068005018180b1baa00480820268084042021010406c6eb4c05c004c05cc060004c04cdd500345901020204040301030110023001001300f0042225980080145300103d87a80008acc004c014006266e9520003301030110024bd7046600200730120029802000a006402c8079149a2a6600a9211856616c696461746f722072657475726e65642066616c7365001365640101", - "hash": "bbf0e574954e4625e2772ca2081ac3039949d2ee492a7155a09b133b" + "compiledCode": "59034601010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002664466446645300130083754005225980099b8800148002298103d87a8000899801801000a012918069807000cc03001a6018008911112cc004cdc3a400400b13298009809000cc048c04c0066600a6eb0c048c03cdd50019bad002488966002601c60226ea8006264b30013375e602c60266ea800401226466446600400400244b30010018a508acc004cdd7801980a980c800c528c4cc008008c068005014202e3756602e60306030603060306030603060286ea8020c058c04cdd5180b18099baa30083013375400314a08088c054c048dd5000c590100c038dd5003c56600266e1d20040058992cc004c02cc038dd500144c9660026028003132330010013758602800444b3001001899192cc004cdc3980099198008009bac30183015375401044b30010018a5eb82264660326ea0004cc00c00cc8cc004004c07000c896600200314bd7044cc896600330013370e00400b4a14a280ca26603a6ea0008cc01001000626600800800280c8dd6980e000980e800a034375a603200280b8c004dd6180b980a1baa0078acc004c8cc004004dd6180c180a9baa0082259800800c528c56600264b300130133016375400313375e6034602e6ea8c068c05cdd51806180b9baa301a30173754002013164054660186eb0c064c058dd50051bad3019001899801001180d000c5282028405d13370e60026eb0c05cc050dd5003994c0040066eb0c060c064c064c054dd5004d20004004444b30010028800c66002007301b002acc004cdd7980d180b9baa301a3017375460340040131337000029001440050152006406114a0809229410121800800912cc0040062900044cdc02400466004004603000280aa26466006006602e0046eb4c05400501345901118079baa0028b201a3011300e375400f15980099b87480180162646644b3001300d301037540091323259800980b8014528c590141bad30150013011375400916403c6eb4c048004c048c04c004c038dd5003c5900c20184030300a300b002300100130090022225980080145300103d87a80008acc004c010006266e9520003300a300b0024bd70466002007300c00299b8000148005003200c402460066ea8020dc3a4001149a26cac80081", + "hash": "f9159e1c2167d7157b355aa20466bb51b0b4b44852df381e2508c66a" }, { "title": "stake_multivalidator.stake_multivalidator.publish", @@ -286,16 +311,16 @@ "$ref": "#/definitions/stake_multivalidator~1PublishRedeemer" } }, - "compiledCode": "59083801010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049210d72656465656d65723a20496e7400168a998012491a72656465656d65723a20576974686472617752656465656d657200168a998012491a5f72656465656d65723a205075626c69736852656465656d6572001648896600330013007375401b2300b300c0019b87480026e01200148888cc88cc8a6002601c6ea800a44b300133710002900045300103d87a8000899801801000a01c98090044c04801122225980099b87480080122646644b3001004809404a025132598009807180b1baa0018992cc0056600266ebcc06cc060dd50008024528c54cc05924129696e7075742e6f75747075745f7265666572656e6365203d3d206f776e5f726566203f2046616c73650014a080aa26466446600400400244b30010018a508acc004cdd7801980d180f000c528c4cc008008c07c005018203837566038603a603a603a603a603a603a60326ea8020c06cc060dd5180d980c1baa30103018375400314a080a8c068c05cdd5000c54cc05524013365787065637420536f6d6528696e70757429203d206c6973742e61742873656c662e696e707574732c2072656465656d657229001640506600c6eb0c064c058dd50029bad00480920363017001301730180013013375400d15980099b8748010012264b30010028acc004c02cc04cdd500144c9660020030108992cc0040060230118992cc004c06c00e264660020020044464b30010028cc0048966002003148002266e012002330020023020001407532330010013758603c60366ea8024896600200314a3159800992cc004c050c070dd5000c4cdd79810180e9baa3020301d3754602a603a6ea8c080c074dd5000805454cc06d2412e65787065637420536f6d6528696e70757429203d206c6973742e61742873656c662e696e707574732c206964782900164068660186eb0c07cc070dd50059bad301f0018998010011810000c52820324075329800800cdd6180f180f980f980d9baa00aa400080088896600200510018cc00400e60420055980099baf3020301d37546040603a6ea8c08000802a266e0000520028800a034400c80f2444b3001337120049000440063300100399b840024805266e2ccdc019b85002480512060001400c80d24444646600200200a44b30010018802c4c9660020031330043024002006899802981200119801801800a044302400140849111119911919194c0048dcc99801000a4410098029bac3027302437540253370e600a64660020026eb0c0a0c094dd5009912cc004006297ae0899198149ba8001330030033233001001302c0032259800800c52f5c11332259800cc004cdc3801002d28528a0508998169ba800233004004001899802002000a050375a6058002605a0028150dd69814800a04e30053758604e60486ea8049222533025300337500042a6604a60066ea002c566002b30010018a518a99812a49156e6f5f6475706c696361746573203f2046616c73650014a081222b3001598008064528c54cc09524011476616c69645f696e70757473203f2046616c73650014a081222b30013370e00401714a31533025490123696e7075745f636f756e74203d3d206f75747075745f636f756e74203f2046616c73650014a081222941024452820481800800911192cc00400e2646466446601200466e29220101280059800800c4cdc52441035b5d2900006899b8a489035b5f20009800800ccdc52441025d2900006914c00402a00530070014029229800805400a002805100c20565980099b880014803a266e0120f2010018acc004cdc4000a41000513370066e01208014001480362c81290251bac3028002375a604c0026466ec0dd418130009ba73027001375400713259800800c4cdc52441027b7d00003899b8a489037b5f20003232330010010032259800800c400e264b30010018994c00402a6056003337149101023a200098008054c0b000600a805100a181700144ca6002015302b00199b8a489023a200098008054c0b0006600e66008008004805100a18170012058302e00140ac66e29220102207d0000340a06eac00e264b3001001899b8a489025b5d00003899b8a489035b5f20009800800ccdc52441015d00003914c00401e0053004001401d229800803c00a002803900920503758007133005375a0060051323371491102682700329800800cc078dc68014cdc52450127000044004444b300133710004900044006264664530010069811802ccdc599b800025980099b88002480522903045206e40a866e2ccdc0000acc004cdc4000a4029148182290372054004401866e0c00520203370c002901019b8e004002409c6eb800d02b1b8a4881022c20002232330010010032259800980e000c4cdc52450130000038acc004cdc4000a40011337149101012d0033002002337029000000c4cc014cdc2000a402866e2ccdc019b8500148051206000340888110c014014c00800913259800800c05a02d016899180198100021bad00180b2040301d002406c600400501240606eb0006023011406c603000280b0c050dd5001403d011403e01f00f807a03230163013375400d15980099b87480180122646644b30010048acc004c034c054dd500244c9660020030118992cc00400602501280944c966002603a00714a301340686eb400602480e8c068005018180b1baa00480820268084042021010406c6eb4c05c004c05cc060004c04cdd500345901020204040301030110023001001300f0042225980080145300103d87a80008acc004c014006266e9520003301030110024bd7046600200730120029802000a006402c8079149a2a6600a9211856616c696461746f722072657475726e65642066616c7365001365640101", - "hash": "bbf0e574954e4625e2772ca2081ac3039949d2ee492a7155a09b133b" + "compiledCode": "59034601010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002664466446645300130083754005225980099b8800148002298103d87a8000899801801000a012918069807000cc03001a6018008911112cc004cdc3a400400b13298009809000cc048c04c0066600a6eb0c048c03cdd50019bad002488966002601c60226ea8006264b30013375e602c60266ea800401226466446600400400244b30010018a508acc004cdd7801980a980c800c528c4cc008008c068005014202e3756602e60306030603060306030603060286ea8020c058c04cdd5180b18099baa30083013375400314a08088c054c048dd5000c590100c038dd5003c56600266e1d20040058992cc004c02cc038dd500144c9660026028003132330010013758602800444b3001001899192cc004cdc3980099198008009bac30183015375401044b30010018a5eb82264660326ea0004cc00c00cc8cc004004c07000c896600200314bd7044cc896600330013370e00400b4a14a280ca26603a6ea0008cc01001000626600800800280c8dd6980e000980e800a034375a603200280b8c004dd6180b980a1baa0078acc004c8cc004004dd6180c180a9baa0082259800800c528c56600264b300130133016375400313375e6034602e6ea8c068c05cdd51806180b9baa301a30173754002013164054660186eb0c064c058dd50051bad3019001899801001180d000c5282028405d13370e60026eb0c05cc050dd5003994c0040066eb0c060c064c064c054dd5004d20004004444b30010028800c66002007301b002acc004cdd7980d180b9baa301a3017375460340040131337000029001440050152006406114a0809229410121800800912cc0040062900044cdc02400466004004603000280aa26466006006602e0046eb4c05400501345901118079baa0028b201a3011300e375400f15980099b87480180162646644b3001300d301037540091323259800980b8014528c590141bad30150013011375400916403c6eb4c048004c048c04c004c038dd5003c5900c20184030300a300b002300100130090022225980080145300103d87a80008acc004c010006266e9520003300a300b0024bd70466002007300c00299b8000148005003200c402460066ea8020dc3a4001149a26cac80081", + "hash": "f9159e1c2167d7157b355aa20466bb51b0b4b44852df381e2508c66a" }, { "title": "stake_multivalidator.stake_multivalidator.else", "redeemer": { "schema": {} }, - "compiledCode": "59083801010029800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049210d72656465656d65723a20496e7400168a998012491a72656465656d65723a20576974686472617752656465656d657200168a998012491a5f72656465656d65723a205075626c69736852656465656d6572001648896600330013007375401b2300b300c0019b87480026e01200148888cc88cc8a6002601c6ea800a44b300133710002900045300103d87a8000899801801000a01c98090044c04801122225980099b87480080122646644b3001004809404a025132598009807180b1baa0018992cc0056600266ebcc06cc060dd50008024528c54cc05924129696e7075742e6f75747075745f7265666572656e6365203d3d206f776e5f726566203f2046616c73650014a080aa26466446600400400244b30010018a508acc004cdd7801980d180f000c528c4cc008008c07c005018203837566038603a603a603a603a603a603a60326ea8020c06cc060dd5180d980c1baa30103018375400314a080a8c068c05cdd5000c54cc05524013365787065637420536f6d6528696e70757429203d206c6973742e61742873656c662e696e707574732c2072656465656d657229001640506600c6eb0c064c058dd50029bad00480920363017001301730180013013375400d15980099b8748010012264b30010028acc004c02cc04cdd500144c9660020030108992cc0040060230118992cc004c06c00e264660020020044464b30010028cc0048966002003148002266e012002330020023020001407532330010013758603c60366ea8024896600200314a3159800992cc004c050c070dd5000c4cdd79810180e9baa3020301d3754602a603a6ea8c080c074dd5000805454cc06d2412e65787065637420536f6d6528696e70757429203d206c6973742e61742873656c662e696e707574732c206964782900164068660186eb0c07cc070dd50059bad301f0018998010011810000c52820324075329800800cdd6180f180f980f980d9baa00aa400080088896600200510018cc00400e60420055980099baf3020301d37546040603a6ea8c08000802a266e0000520028800a034400c80f2444b3001337120049000440063300100399b840024805266e2ccdc019b85002480512060001400c80d24444646600200200a44b30010018802c4c9660020031330043024002006899802981200119801801800a044302400140849111119911919194c0048dcc99801000a4410098029bac3027302437540253370e600a64660020026eb0c0a0c094dd5009912cc004006297ae0899198149ba8001330030033233001001302c0032259800800c52f5c11332259800cc004cdc3801002d28528a0508998169ba800233004004001899802002000a050375a6058002605a0028150dd69814800a04e30053758604e60486ea8049222533025300337500042a6604a60066ea002c566002b30010018a518a99812a49156e6f5f6475706c696361746573203f2046616c73650014a081222b3001598008064528c54cc09524011476616c69645f696e70757473203f2046616c73650014a081222b30013370e00401714a31533025490123696e7075745f636f756e74203d3d206f75747075745f636f756e74203f2046616c73650014a081222941024452820481800800911192cc00400e2646466446601200466e29220101280059800800c4cdc52441035b5d2900006899b8a489035b5f20009800800ccdc52441025d2900006914c00402a00530070014029229800805400a002805100c20565980099b880014803a266e0120f2010018acc004cdc4000a41000513370066e01208014001480362c81290251bac3028002375a604c0026466ec0dd418130009ba73027001375400713259800800c4cdc52441027b7d00003899b8a489037b5f20003232330010010032259800800c400e264b30010018994c00402a6056003337149101023a200098008054c0b000600a805100a181700144ca6002015302b00199b8a489023a200098008054c0b0006600e66008008004805100a18170012058302e00140ac66e29220102207d0000340a06eac00e264b3001001899b8a489025b5d00003899b8a489035b5f20009800800ccdc52441015d00003914c00401e0053004001401d229800803c00a002803900920503758007133005375a0060051323371491102682700329800800cc078dc68014cdc52450127000044004444b300133710004900044006264664530010069811802ccdc599b800025980099b88002480522903045206e40a866e2ccdc0000acc004cdc4000a4029148182290372054004401866e0c00520203370c002901019b8e004002409c6eb800d02b1b8a4881022c20002232330010010032259800980e000c4cdc52450130000038acc004cdc4000a40011337149101012d0033002002337029000000c4cc014cdc2000a402866e2ccdc019b8500148051206000340888110c014014c00800913259800800c05a02d016899180198100021bad00180b2040301d002406c600400501240606eb0006023011406c603000280b0c050dd5001403d011403e01f00f807a03230163013375400d15980099b87480180122646644b30010048acc004c034c054dd500244c9660020030118992cc00400602501280944c966002603a00714a301340686eb400602480e8c068005018180b1baa00480820268084042021010406c6eb4c05c004c05cc060004c04cdd500345901020204040301030110023001001300f0042225980080145300103d87a80008acc004c014006266e9520003301030110024bd7046600200730120029802000a006402c8079149a2a6600a9211856616c696461746f722072657475726e65642066616c7365001365640101", - "hash": "bbf0e574954e4625e2772ca2081ac3039949d2ee492a7155a09b133b" + "compiledCode": "59034601010029800aba2aba1aba0aab9faab9eaab9dab9a4888888966002664466446645300130083754005225980099b8800148002298103d87a8000899801801000a012918069807000cc03001a6018008911112cc004cdc3a400400b13298009809000cc048c04c0066600a6eb0c048c03cdd50019bad002488966002601c60226ea8006264b30013375e602c60266ea800401226466446600400400244b30010018a508acc004cdd7801980a980c800c528c4cc008008c068005014202e3756602e60306030603060306030603060286ea8020c058c04cdd5180b18099baa30083013375400314a08088c054c048dd5000c590100c038dd5003c56600266e1d20040058992cc004c02cc038dd500144c9660026028003132330010013758602800444b3001001899192cc004cdc3980099198008009bac30183015375401044b30010018a5eb82264660326ea0004cc00c00cc8cc004004c07000c896600200314bd7044cc896600330013370e00400b4a14a280ca26603a6ea0008cc01001000626600800800280c8dd6980e000980e800a034375a603200280b8c004dd6180b980a1baa0078acc004c8cc004004dd6180c180a9baa0082259800800c528c56600264b300130133016375400313375e6034602e6ea8c068c05cdd51806180b9baa301a30173754002013164054660186eb0c064c058dd50051bad3019001899801001180d000c5282028405d13370e60026eb0c05cc050dd5003994c0040066eb0c060c064c064c054dd5004d20004004444b30010028800c66002007301b002acc004cdd7980d180b9baa301a3017375460340040131337000029001440050152006406114a0809229410121800800912cc0040062900044cdc02400466004004603000280aa26466006006602e0046eb4c05400501345901118079baa0028b201a3011300e375400f15980099b87480180162646644b3001300d301037540091323259800980b8014528c590141bad30150013011375400916403c6eb4c048004c048c04c004c038dd5003c5900c20184030300a300b002300100130090022225980080145300103d87a80008acc004c010006266e9520003300a300b0024bd70466002007300c00299b8000148005003200c402460066ea8020dc3a4001149a26cac80081", + "hash": "f9159e1c2167d7157b355aa20466bb51b0b4b44852df381e2508c66a" } ], "definitions": { @@ -350,6 +375,12 @@ "$ref": "#/definitions/cardano~1address~1Address" } }, + "List$multisig/MultiSig": { + "dataType": "list", + "items": { + "$ref": "#/definitions/multisig~1MultiSig" + } + }, "Never": { "title": "Never", "anyOf": [ @@ -1363,6 +1394,100 @@ } ] }, + "multisig/MultiSig": { + "title": "MultiSig", + "description": "Recursive multisig policy type — mirrors the NativeScript structure.\n Used to verify the blueprint codegen correctly handles self-referential types.", + "anyOf": [ + { + "title": "Signature", + "description": "A single required signature.", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "key_hash", + "$ref": "#/definitions/ByteArray" + } + ] + }, + { + "title": "AllOf", + "description": "All scripts must be satisfied (AND).", + "dataType": "constructor", + "index": 1, + "fields": [ + { + "title": "scripts", + "$ref": "#/definitions/List$multisig~1MultiSig" + } + ] + }, + { + "title": "AnyOf", + "description": "Any one script must be satisfied (OR).", + "dataType": "constructor", + "index": 2, + "fields": [ + { + "title": "scripts", + "$ref": "#/definitions/List$multisig~1MultiSig" + } + ] + }, + { + "title": "AtLeast", + "description": "At least `required` scripts must be satisfied (M-of-N).", + "dataType": "constructor", + "index": 3, + "fields": [ + { + "title": "required", + "$ref": "#/definitions/Int" + }, + { + "title": "scripts", + "$ref": "#/definitions/List$multisig~1MultiSig" + } + ] + }, + { + "title": "Before", + "description": "Valid only before this slot.", + "dataType": "constructor", + "index": 4, + "fields": [ + { + "title": "time", + "$ref": "#/definitions/Int" + } + ] + }, + { + "title": "After", + "description": "Valid only after this slot.", + "dataType": "constructor", + "index": 5, + "fields": [ + { + "title": "time", + "$ref": "#/definitions/Int" + } + ] + }, + { + "title": "Script", + "description": "A script hash that must be present.", + "dataType": "constructor", + "index": 6, + "fields": [ + { + "title": "script_hash", + "$ref": "#/definitions/ByteArray" + } + ] + } + ] + }, "simple_mint/MintRedeemer": { "title": "MintRedeemer", "anyOf": [ diff --git a/packages/evolution/test/spec/validators/multisig.ak b/packages/evolution/test/spec/validators/multisig.ak new file mode 100644 index 00000000..9bbb0ebe --- /dev/null +++ b/packages/evolution/test/spec/validators/multisig.ak @@ -0,0 +1,35 @@ +use cardano/transaction.{OutputReference, Transaction} + +/// Recursive multisig policy type — mirrors the NativeScript structure. +/// Used to verify the blueprint codegen correctly handles self-referential types. +pub type MultiSig { + /// A single required signature. + Signature { key_hash: ByteArray } + /// All scripts must be satisfied (AND). + AllOf { scripts: List } + /// Any one script must be satisfied (OR). + AnyOf { scripts: List } + /// At least `required` scripts must be satisfied (M-of-N). + AtLeast { required: Int, scripts: List } + /// Valid only before this slot. + Before { time: Int } + /// Valid only after this slot. + After { time: Int } + /// A script hash that must be present. + Script { script_hash: ByteArray } +} + +validator multisig { + spend( + _datum: Option, + _redeemer: ByteArray, + _utxo: OutputReference, + _self: Transaction, + ) { + True + } + + else(_) { + False + } +}