From 0f2ae6d71f1e6469ad2605a25ab69b7b7f554b7e Mon Sep 17 00:00:00 2001 From: solidsnakedev Date: Sun, 23 Nov 2025 08:32:16 -0700 Subject: [PATCH 1/3] feat: add blueprint --- .../blueprint-codegen/blueprint-codegen.tsx | 212 ++++ docs/app/tools/blueprint-codegen/page.tsx | 21 + docs/content/docs/index.mdx | 5 + .../docs/modules/blueprint/codegen-config.mdx | 214 ++++ .../docs/modules/blueprint/codegen.mdx | 31 + docs/content/docs/modules/blueprint/types.mdx | 701 ++++++++++++ docs/content/docs/modules/core/Address.mdx | 2 +- .../content/docs/modules/core/AddressEras.mdx | 2 +- docs/content/docs/modules/core/AddressTag.mdx | 2 +- docs/content/docs/modules/core/Anchor.mdx | 2 +- docs/content/docs/modules/core/AssetName.mdx | 2 +- docs/content/docs/modules/core/Assets.mdx | 2 +- .../docs/modules/core/AuxiliaryData.mdx | 2 +- .../docs/modules/core/AuxiliaryDataHash.mdx | 2 +- .../content/docs/modules/core/BaseAddress.mdx | 2 +- docs/content/docs/modules/core/Bech32.mdx | 2 +- docs/content/docs/modules/core/BigInt.mdx | 2 +- .../docs/modules/core/Bip32PrivateKey.mdx | 2 +- .../docs/modules/core/Bip32PublicKey.mdx | 2 +- docs/content/docs/modules/core/Block.mdx | 2 +- .../docs/modules/core/BlockBodyHash.mdx | 2 +- .../docs/modules/core/BlockHeaderHash.mdx | 2 +- .../docs/modules/core/BootstrapWitness.mdx | 2 +- .../docs/modules/core/BoundedBytes.mdx | 2 +- .../docs/modules/core/ByronAddress.mdx | 2 +- docs/content/docs/modules/core/Bytes.mdx | 2 +- docs/content/docs/modules/core/Bytes128.mdx | 2 +- docs/content/docs/modules/core/Bytes16.mdx | 2 +- docs/content/docs/modules/core/Bytes29.mdx | 2 +- docs/content/docs/modules/core/Bytes32.mdx | 2 +- docs/content/docs/modules/core/Bytes4.mdx | 2 +- docs/content/docs/modules/core/Bytes448.mdx | 2 +- docs/content/docs/modules/core/Bytes57.mdx | 2 +- docs/content/docs/modules/core/Bytes64.mdx | 2 +- docs/content/docs/modules/core/Bytes80.mdx | 2 +- docs/content/docs/modules/core/Bytes96.mdx | 2 +- docs/content/docs/modules/core/CBOR.mdx | 2 +- .../content/docs/modules/core/Certificate.mdx | 2 +- docs/content/docs/modules/core/Codec.mdx | 2 +- docs/content/docs/modules/core/Coin.mdx | 2 +- docs/content/docs/modules/core/Combinator.mdx | 2 +- .../modules/core/CommitteeColdCredential.mdx | 2 +- .../modules/core/CommitteeHotCredential.mdx | 2 +- .../docs/modules/core/Constitution.mdx | 2 +- docs/content/docs/modules/core/CostModel.mdx | 2 +- docs/content/docs/modules/core/Credential.mdx | 2 +- docs/content/docs/modules/core/DRep.mdx | 2 +- .../docs/modules/core/DRepCredential.mdx | 2 +- docs/content/docs/modules/core/Data.mdx | 2 +- docs/content/docs/modules/core/DataJson.mdx | 2 +- .../content/docs/modules/core/DatumOption.mdx | 2 +- docs/content/docs/modules/core/DnsName.mdx | 2 +- .../docs/modules/core/Ed25519Signature.mdx | 2 +- .../docs/modules/core/EnterpriseAddress.mdx | 2 +- docs/content/docs/modules/core/EpochNo.mdx | 2 +- .../content/docs/modules/core/FormatError.mdx | 2 +- docs/content/docs/modules/core/Function.mdx | 2 +- .../docs/modules/core/GovernanceAction.mdx | 2 +- docs/content/docs/modules/core/Hash28.mdx | 2 +- docs/content/docs/modules/core/Header.mdx | 2 +- docs/content/docs/modules/core/HeaderBody.mdx | 2 +- docs/content/docs/modules/core/IPv4.mdx | 2 +- docs/content/docs/modules/core/IPv6.mdx | 2 +- docs/content/docs/modules/core/KESVkey.mdx | 2 +- .../docs/modules/core/KesSignature.mdx | 2 +- docs/content/docs/modules/core/KeyHash.mdx | 2 +- docs/content/docs/modules/core/Language.mdx | 2 +- docs/content/docs/modules/core/Metadata.mdx | 2 +- docs/content/docs/modules/core/Mint.mdx | 2 +- docs/content/docs/modules/core/MultiAsset.mdx | 2 +- .../docs/modules/core/MultiHostName.mdx | 2 +- .../docs/modules/core/NativeScriptJSON.mdx | 2 +- .../docs/modules/core/NativeScripts.mdx | 2 +- .../docs/modules/core/NativeScriptsOLD.mdx | 2 +- docs/content/docs/modules/core/Natural.mdx | 2 +- docs/content/docs/modules/core/Network.mdx | 2 +- docs/content/docs/modules/core/NetworkId.mdx | 2 +- .../docs/modules/core/NonZeroInt64.mdx | 2 +- .../docs/modules/core/NonnegativeInterval.mdx | 2 +- docs/content/docs/modules/core/Numeric.mdx | 2 +- .../docs/modules/core/OperationalCert.mdx | 2 +- .../docs/modules/core/PaymentAddress.mdx | 2 +- docs/content/docs/modules/core/PlutusV1.mdx | 2 +- docs/content/docs/modules/core/PlutusV2.mdx | 2 +- docs/content/docs/modules/core/PlutusV3.mdx | 2 +- docs/content/docs/modules/core/Pointer.mdx | 2 +- .../docs/modules/core/PointerAddress.mdx | 2 +- docs/content/docs/modules/core/PolicyId.mdx | 2 +- .../content/docs/modules/core/PoolKeyHash.mdx | 2 +- .../docs/modules/core/PoolMetadata.mdx | 2 +- docs/content/docs/modules/core/PoolParams.mdx | 2 +- docs/content/docs/modules/core/Port.mdx | 2 +- .../docs/modules/core/PositiveCoin.mdx | 2 +- docs/content/docs/modules/core/PrivateKey.mdx | 2 +- .../docs/modules/core/ProposalProcedure.mdx | 2 +- .../docs/modules/core/ProposalProcedures.mdx | 2 +- .../docs/modules/core/ProtocolParamUpdate.mdx | 2 +- .../docs/modules/core/ProtocolVersion.mdx | 2 +- docs/content/docs/modules/core/Redeemer.mdx | 2 +- docs/content/docs/modules/core/Relay.mdx | 2 +- .../docs/modules/core/RewardAccount.mdx | 2 +- .../docs/modules/core/RewardAddress.mdx | 2 +- docs/content/docs/modules/core/Script.mdx | 2 +- .../docs/modules/core/ScriptDataHash.mdx | 2 +- docs/content/docs/modules/core/ScriptHash.mdx | 2 +- docs/content/docs/modules/core/ScriptRef.mdx | 2 +- .../docs/modules/core/SingleHostAddr.mdx | 2 +- .../docs/modules/core/SingleHostName.mdx | 2 +- .../docs/modules/core/StakeReference.mdx | 2 +- docs/content/docs/modules/core/TSchema.mdx | 61 +- docs/content/docs/modules/core/Text.mdx | 2 +- docs/content/docs/modules/core/Text128.mdx | 2 +- .../content/docs/modules/core/Transaction.mdx | 2 +- .../docs/modules/core/TransactionBody.mdx | 2 +- .../docs/modules/core/TransactionHash.mdx | 2 +- .../docs/modules/core/TransactionIndex.mdx | 2 +- .../docs/modules/core/TransactionInput.mdx | 2 +- .../modules/core/TransactionMetadatum.mdx | 2 +- .../core/TransactionMetadatumLabels.mdx | 2 +- .../docs/modules/core/TransactionOutput.mdx | 2 +- .../modules/core/TransactionWitnessSet.mdx | 2 +- docs/content/docs/modules/core/TxOut.mdx | 2 +- .../docs/modules/core/UnitInterval.mdx | 2 +- docs/content/docs/modules/core/Url.mdx | 2 +- docs/content/docs/modules/core/VKey.mdx | 2 +- docs/content/docs/modules/core/Value.mdx | 2 +- .../docs/modules/core/VotingProcedures.mdx | 2 +- docs/content/docs/modules/core/VrfCert.mdx | 2 +- docs/content/docs/modules/core/VrfKeyHash.mdx | 2 +- docs/content/docs/modules/core/VrfVkey.mdx | 2 +- .../content/docs/modules/core/Withdrawals.mdx | 2 +- docs/content/docs/modules/sdk/Address.mdx | 2 +- .../docs/modules/sdk/AddressDetails.mdx | 2 +- docs/content/docs/modules/sdk/Assets.mdx | 2 +- docs/content/docs/modules/sdk/Credential.mdx | 2 +- docs/content/docs/modules/sdk/Datum.mdx | 2 +- docs/content/docs/modules/sdk/Delegation.mdx | 2 +- .../docs/modules/sdk/Devnet/Devnet.mdx | 2 +- .../docs/modules/sdk/Devnet/DevnetDefault.mdx | 2 +- .../content/docs/modules/sdk/EvalRedeemer.mdx | 2 +- docs/content/docs/modules/sdk/Label.mdx | 2 +- docs/content/docs/modules/sdk/Network.mdx | 2 +- docs/content/docs/modules/sdk/OutRef.mdx | 2 +- docs/content/docs/modules/sdk/PolicyId.mdx | 2 +- docs/content/docs/modules/sdk/PoolParams.mdx | 2 +- .../docs/modules/sdk/ProtocolParameters.mdx | 2 +- docs/content/docs/modules/sdk/Relay.mdx | 2 +- .../docs/modules/sdk/RewardAddress.mdx | 2 +- docs/content/docs/modules/sdk/Script.mdx | 2 +- docs/content/docs/modules/sdk/Type.mdx | 2 +- docs/content/docs/modules/sdk/UTxO.mdx | 2 +- docs/content/docs/modules/sdk/Unit.mdx | 2 +- .../modules/sdk/builders/CoinSelection.mdx | 2 +- .../sdk/builders/EvaluationStateManager.mdx | 2 +- .../docs/modules/sdk/builders/SignBuilder.mdx | 2 +- .../modules/sdk/builders/SignBuilderImpl.mdx | 2 +- .../modules/sdk/builders/SubmitBuilder.mdx | 2 +- .../sdk/builders/SubmitBuilderImpl.mdx | 2 +- .../sdk/builders/TransactionBuilder.mdx | 2 +- .../sdk/builders/TransactionResult.mdx | 2 +- .../modules/sdk/builders/TxBuilderImpl.mdx | 2 +- .../docs/modules/sdk/builders/Unfrack.mdx | 2 +- .../sdk/builders/operations/Attach.mdx | 2 +- .../sdk/builders/operations/Collect.mdx | 2 +- .../sdk/builders/operations/Operations.mdx | 2 +- .../modules/sdk/builders/operations/Pay.mdx | 2 +- .../sdk/builders/operations/ReadFrom.mdx | 2 +- .../modules/sdk/builders/phases/Balance.mdx | 2 +- .../sdk/builders/phases/ChangeCreation.mdx | 2 +- .../sdk/builders/phases/Collateral.mdx | 2 +- .../sdk/builders/phases/Evaluation.mdx | 2 +- .../modules/sdk/builders/phases/Fallback.mdx | 2 +- .../sdk/builders/phases/FeeCalculation.mdx | 2 +- .../modules/sdk/builders/phases/Phases.mdx | 2 +- .../modules/sdk/builders/phases/Selection.mdx | 2 +- .../docs/modules/sdk/client/Client.mdx | 2 +- .../docs/modules/sdk/client/ClientImpl.mdx | 2 +- .../docs/modules/sdk/provider/Blockfrost.mdx | 2 +- .../docs/modules/sdk/provider/Koios.mdx | 2 +- .../docs/modules/sdk/provider/Kupmios.mdx | 2 +- .../docs/modules/sdk/provider/Maestro.mdx | 2 +- .../docs/modules/sdk/provider/Provider.mdx | 2 +- .../docs/modules/sdk/wallet/Derivation.mdx | 2 +- .../docs/modules/sdk/wallet/WalletNew.mdx | 2 +- .../docs/modules/utils/FeeValidation.mdx | 2 +- docs/content/docs/modules/utils/Hash.mdx | 2 +- .../docs/modules/utils/effect-runtime.mdx | 2 +- docs/next-env.d.ts | 2 +- .../modules/blueprint/codegen-config.ts.md | 214 ++++ .../docs/modules/blueprint/codegen.ts.md | 31 + .../docs/modules/blueprint/types.ts.md | 701 ++++++++++++ .../evolution/docs/modules/core/Address.ts.md | 2 +- .../docs/modules/core/AddressEras.ts.md | 2 +- .../docs/modules/core/AddressTag.ts.md | 2 +- .../evolution/docs/modules/core/Anchor.ts.md | 2 +- .../docs/modules/core/AssetName.ts.md | 2 +- .../evolution/docs/modules/core/Assets.ts.md | 2 +- .../docs/modules/core/AuxiliaryData.ts.md | 2 +- .../docs/modules/core/AuxiliaryDataHash.ts.md | 2 +- .../docs/modules/core/BaseAddress.ts.md | 2 +- .../evolution/docs/modules/core/Bech32.ts.md | 2 +- .../evolution/docs/modules/core/BigInt.ts.md | 2 +- .../docs/modules/core/Bip32PrivateKey.ts.md | 2 +- .../docs/modules/core/Bip32PublicKey.ts.md | 2 +- .../evolution/docs/modules/core/Block.ts.md | 2 +- .../docs/modules/core/BlockBodyHash.ts.md | 2 +- .../docs/modules/core/BlockHeaderHash.ts.md | 2 +- .../docs/modules/core/BootstrapWitness.ts.md | 2 +- .../docs/modules/core/BoundedBytes.ts.md | 2 +- .../docs/modules/core/ByronAddress.ts.md | 2 +- .../evolution/docs/modules/core/Bytes.ts.md | 2 +- .../docs/modules/core/Bytes128.ts.md | 2 +- .../evolution/docs/modules/core/Bytes16.ts.md | 2 +- .../evolution/docs/modules/core/Bytes29.ts.md | 2 +- .../evolution/docs/modules/core/Bytes32.ts.md | 2 +- .../evolution/docs/modules/core/Bytes4.ts.md | 2 +- .../docs/modules/core/Bytes448.ts.md | 2 +- .../evolution/docs/modules/core/Bytes57.ts.md | 2 +- .../evolution/docs/modules/core/Bytes64.ts.md | 2 +- .../evolution/docs/modules/core/Bytes80.ts.md | 2 +- .../evolution/docs/modules/core/Bytes96.ts.md | 2 +- .../evolution/docs/modules/core/CBOR.ts.md | 2 +- .../docs/modules/core/Certificate.ts.md | 2 +- .../evolution/docs/modules/core/Codec.ts.md | 2 +- .../evolution/docs/modules/core/Coin.ts.md | 2 +- .../docs/modules/core/Combinator.ts.md | 2 +- .../core/CommitteeColdCredential.ts.md | 2 +- .../modules/core/CommitteeHotCredential.ts.md | 2 +- .../docs/modules/core/Constitution.ts.md | 2 +- .../docs/modules/core/CostModel.ts.md | 2 +- .../docs/modules/core/Credential.ts.md | 2 +- .../evolution/docs/modules/core/DRep.ts.md | 2 +- .../docs/modules/core/DRepCredential.ts.md | 2 +- .../evolution/docs/modules/core/Data.ts.md | 2 +- .../docs/modules/core/DataJson.ts.md | 2 +- .../docs/modules/core/DatumOption.ts.md | 2 +- .../evolution/docs/modules/core/DnsName.ts.md | 2 +- .../docs/modules/core/Ed25519Signature.ts.md | 2 +- .../docs/modules/core/EnterpriseAddress.ts.md | 2 +- .../evolution/docs/modules/core/EpochNo.ts.md | 2 +- .../docs/modules/core/FormatError.ts.md | 2 +- .../docs/modules/core/Function.ts.md | 2 +- .../docs/modules/core/GovernanceAction.ts.md | 2 +- .../evolution/docs/modules/core/Hash28.ts.md | 2 +- .../evolution/docs/modules/core/Header.ts.md | 2 +- .../docs/modules/core/HeaderBody.ts.md | 2 +- .../evolution/docs/modules/core/IPv4.ts.md | 2 +- .../evolution/docs/modules/core/IPv6.ts.md | 2 +- .../evolution/docs/modules/core/KESVkey.ts.md | 2 +- .../docs/modules/core/KesSignature.ts.md | 2 +- .../evolution/docs/modules/core/KeyHash.ts.md | 2 +- .../docs/modules/core/Language.ts.md | 2 +- .../docs/modules/core/Metadata.ts.md | 2 +- .../evolution/docs/modules/core/Mint.ts.md | 2 +- .../docs/modules/core/MultiAsset.ts.md | 2 +- .../docs/modules/core/MultiHostName.ts.md | 2 +- .../docs/modules/core/NativeScriptJSON.ts.md | 2 +- .../docs/modules/core/NativeScripts.ts.md | 2 +- .../docs/modules/core/NativeScriptsOLD.ts.md | 2 +- .../evolution/docs/modules/core/Natural.ts.md | 2 +- .../evolution/docs/modules/core/Network.ts.md | 2 +- .../docs/modules/core/NetworkId.ts.md | 2 +- .../docs/modules/core/NonZeroInt64.ts.md | 2 +- .../modules/core/NonnegativeInterval.ts.md | 2 +- .../evolution/docs/modules/core/Numeric.ts.md | 2 +- .../docs/modules/core/OperationalCert.ts.md | 2 +- .../docs/modules/core/PaymentAddress.ts.md | 2 +- .../docs/modules/core/PlutusV1.ts.md | 2 +- .../docs/modules/core/PlutusV2.ts.md | 2 +- .../docs/modules/core/PlutusV3.ts.md | 2 +- .../evolution/docs/modules/core/Pointer.ts.md | 2 +- .../docs/modules/core/PointerAddress.ts.md | 2 +- .../docs/modules/core/PolicyId.ts.md | 2 +- .../docs/modules/core/PoolKeyHash.ts.md | 2 +- .../docs/modules/core/PoolMetadata.ts.md | 2 +- .../docs/modules/core/PoolParams.ts.md | 2 +- .../evolution/docs/modules/core/Port.ts.md | 2 +- .../docs/modules/core/PositiveCoin.ts.md | 2 +- .../docs/modules/core/PrivateKey.ts.md | 2 +- .../docs/modules/core/ProposalProcedure.ts.md | 2 +- .../modules/core/ProposalProcedures.ts.md | 2 +- .../modules/core/ProtocolParamUpdate.ts.md | 2 +- .../docs/modules/core/ProtocolVersion.ts.md | 2 +- .../docs/modules/core/Redeemer.ts.md | 2 +- .../evolution/docs/modules/core/Relay.ts.md | 2 +- .../docs/modules/core/RewardAccount.ts.md | 2 +- .../docs/modules/core/RewardAddress.ts.md | 2 +- .../evolution/docs/modules/core/Script.ts.md | 2 +- .../docs/modules/core/ScriptDataHash.ts.md | 2 +- .../docs/modules/core/ScriptHash.ts.md | 2 +- .../docs/modules/core/ScriptRef.ts.md | 2 +- .../docs/modules/core/SingleHostAddr.ts.md | 2 +- .../docs/modules/core/SingleHostName.ts.md | 2 +- .../docs/modules/core/StakeReference.ts.md | 2 +- .../evolution/docs/modules/core/TSchema.ts.md | 2 +- .../evolution/docs/modules/core/Text.ts.md | 2 +- .../evolution/docs/modules/core/Text128.ts.md | 2 +- .../docs/modules/core/Transaction.ts.md | 2 +- .../docs/modules/core/TransactionBody.ts.md | 2 +- .../docs/modules/core/TransactionHash.ts.md | 2 +- .../docs/modules/core/TransactionIndex.ts.md | 2 +- .../docs/modules/core/TransactionInput.ts.md | 2 +- .../modules/core/TransactionMetadatum.ts.md | 2 +- .../core/TransactionMetadatumLabels.ts.md | 2 +- .../docs/modules/core/TransactionOutput.ts.md | 2 +- .../modules/core/TransactionWitnessSet.ts.md | 2 +- .../evolution/docs/modules/core/TxOut.ts.md | 2 +- .../docs/modules/core/UnitInterval.ts.md | 2 +- .../evolution/docs/modules/core/Url.ts.md | 2 +- .../evolution/docs/modules/core/VKey.ts.md | 2 +- .../evolution/docs/modules/core/Value.ts.md | 2 +- .../docs/modules/core/VotingProcedures.ts.md | 2 +- .../evolution/docs/modules/core/VrfCert.ts.md | 2 +- .../docs/modules/core/VrfKeyHash.ts.md | 2 +- .../evolution/docs/modules/core/VrfVkey.ts.md | 2 +- .../docs/modules/core/Withdrawals.ts.md | 2 +- .../evolution/docs/modules/sdk/Address.ts.md | 2 +- .../docs/modules/sdk/AddressDetails.ts.md | 2 +- .../evolution/docs/modules/sdk/Assets.ts.md | 2 +- .../docs/modules/sdk/Credential.ts.md | 2 +- .../evolution/docs/modules/sdk/Datum.ts.md | 2 +- .../docs/modules/sdk/Delegation.ts.md | 2 +- .../docs/modules/sdk/Devnet/Devnet.ts.md | 2 +- .../modules/sdk/Devnet/DevnetDefault.ts.md | 2 +- .../docs/modules/sdk/EvalRedeemer.ts.md | 2 +- .../evolution/docs/modules/sdk/Label.ts.md | 2 +- .../evolution/docs/modules/sdk/Network.ts.md | 2 +- .../evolution/docs/modules/sdk/OutRef.ts.md | 2 +- .../evolution/docs/modules/sdk/PolicyId.ts.md | 2 +- .../docs/modules/sdk/PoolParams.ts.md | 2 +- .../docs/modules/sdk/ProtocolParameters.ts.md | 2 +- .../evolution/docs/modules/sdk/Relay.ts.md | 2 +- .../docs/modules/sdk/RewardAddress.ts.md | 2 +- .../evolution/docs/modules/sdk/Script.ts.md | 2 +- .../evolution/docs/modules/sdk/Type.ts.md | 2 +- .../evolution/docs/modules/sdk/UTxO.ts.md | 2 +- .../evolution/docs/modules/sdk/Unit.ts.md | 2 +- .../modules/sdk/builders/CoinSelection.ts.md | 2 +- .../sdk/builders/EvaluationStateManager.ts.md | 2 +- .../modules/sdk/builders/SignBuilder.ts.md | 2 +- .../sdk/builders/SignBuilderImpl.ts.md | 2 +- .../modules/sdk/builders/SubmitBuilder.ts.md | 2 +- .../sdk/builders/SubmitBuilderImpl.ts.md | 2 +- .../sdk/builders/TransactionBuilder.ts.md | 2 +- .../sdk/builders/TransactionResult.ts.md | 2 +- .../modules/sdk/builders/TxBuilderImpl.ts.md | 2 +- .../docs/modules/sdk/builders/Unfrack.ts.md | 2 +- .../sdk/builders/operations/Attach.ts.md | 2 +- .../sdk/builders/operations/Collect.ts.md | 2 +- .../sdk/builders/operations/Operations.ts.md | 2 +- .../modules/sdk/builders/operations/Pay.ts.md | 2 +- .../sdk/builders/operations/ReadFrom.ts.md | 2 +- .../modules/sdk/builders/phases/Balance.ts.md | 2 +- .../sdk/builders/phases/ChangeCreation.ts.md | 2 +- .../sdk/builders/phases/Collateral.ts.md | 2 +- .../sdk/builders/phases/Evaluation.ts.md | 2 +- .../sdk/builders/phases/Fallback.ts.md | 2 +- .../sdk/builders/phases/FeeCalculation.ts.md | 2 +- .../modules/sdk/builders/phases/Phases.ts.md | 2 +- .../sdk/builders/phases/Selection.ts.md | 2 +- .../docs/modules/sdk/client/Client.ts.md | 2 +- .../docs/modules/sdk/client/ClientImpl.ts.md | 2 +- .../modules/sdk/provider/Blockfrost.ts.md | 2 +- .../docs/modules/sdk/provider/Koios.ts.md | 2 +- .../docs/modules/sdk/provider/Kupmios.ts.md | 2 +- .../docs/modules/sdk/provider/Maestro.ts.md | 2 +- .../docs/modules/sdk/provider/Provider.ts.md | 2 +- .../docs/modules/sdk/wallet/Derivation.ts.md | 2 +- .../docs/modules/sdk/wallet/WalletNew.ts.md | 2 +- .../docs/modules/utils/FeeValidation.ts.md | 2 +- .../evolution/docs/modules/utils/Hash.ts.md | 2 +- .../docs/modules/utils/effect-runtime.ts.md | 2 +- .../evolution/src/blueprint/codegen-config.ts | 186 +++ packages/evolution/src/blueprint/codegen.ts | 863 ++++++++++++++ packages/evolution/src/blueprint/index.ts | 10 + packages/evolution/src/blueprint/types.ts | 289 +++++ packages/evolution/src/index.ts | 1 + packages/evolution/test/spec/plutus.json | 1001 +++++++++++++++++ .../evolution/test/spec/validators/mint.ak | 89 ++ 379 files changed, 4966 insertions(+), 388 deletions(-) create mode 100644 docs/app/tools/blueprint-codegen/blueprint-codegen.tsx create mode 100644 docs/app/tools/blueprint-codegen/page.tsx create mode 100644 docs/content/docs/modules/blueprint/codegen-config.mdx create mode 100644 docs/content/docs/modules/blueprint/codegen.mdx create mode 100644 docs/content/docs/modules/blueprint/types.mdx create mode 100644 packages/evolution/docs/modules/blueprint/codegen-config.ts.md create mode 100644 packages/evolution/docs/modules/blueprint/codegen.ts.md create mode 100644 packages/evolution/docs/modules/blueprint/types.ts.md create mode 100644 packages/evolution/src/blueprint/codegen-config.ts create mode 100644 packages/evolution/src/blueprint/codegen.ts create mode 100644 packages/evolution/src/blueprint/index.ts create mode 100644 packages/evolution/src/blueprint/types.ts create mode 100644 packages/evolution/test/spec/validators/mint.ak diff --git a/docs/app/tools/blueprint-codegen/blueprint-codegen.tsx b/docs/app/tools/blueprint-codegen/blueprint-codegen.tsx new file mode 100644 index 00000000..2394c0a1 --- /dev/null +++ b/docs/app/tools/blueprint-codegen/blueprint-codegen.tsx @@ -0,0 +1,212 @@ +'use client' + +import { useState } from 'react' +import { Blueprint } from "@evolution-sdk/evolution" +import { DynamicCodeBlock } from 'fumadocs-ui/components/dynamic-codeblock' + +const { PlutusBlueprint, generateTypeScript, createCodegenConfig } = Blueprint + +export function BlueprintCodegen() { + const [blueprintJson, setBlueprintJson] = useState("") + const [generatedCode, setGeneratedCode] = useState("") + 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 generateTypes = async () => { + setError(null) + setGeneratedCode("") + + try { + const cleanJson = blueprintJson.trim() + + if (!cleanJson) { + setError('Please enter a Plutus Blueprint JSON') + return + } + + // Parse the JSON + const plutusJson = JSON.parse(cleanJson) + + // Create config + const config = createCodegenConfig({ + optionStyle, + moduleStrategy, + forceVariant, + useSuspend: false, + useRelativeRefs: true, + emptyConstructorStyle: "Literal", + }) + + // Generate TypeScript code + const code = generateTypeScript(plutusJson, config) + + setGeneratedCode(code) + } catch (err) { + console.error('Generation error:', err) + setError(err instanceof Error ? err.message : 'Failed to generate types from blueprint') + } + } + + const downloadCode = () => { + if (!generatedCode) return + + const blob = new Blob([generatedCode], { type: 'text/typescript' }) + const url = URL.createObjectURL(blob) + const a = document.createElement('a') + a.href = url + a.download = 'generated-types.ts' + document.body.appendChild(a) + a.click() + document.body.removeChild(a) + URL.revokeObjectURL(url) + } + + const copyToClipboard = async () => { + if (!generatedCode) return + + try { + await navigator.clipboard.writeText(generatedCode) + } catch (err) { + console.error('Failed to copy:', err) + } + } + + return ( +
+
+
+
+
+

Blueprint Input

+

Paste your plutus.json blueprint

+
+
+ +
+
+
+ + +
+ +
+ + +
+ +
+ +
+ setForceVariant(e.target.checked)} + className="h-4 w-4 rounded border-input" + /> + +
+
+
+ +
+ +