Packages

A User-Friendly Component-Based Cardano SDK for Elixir.

Current section

Files

Jump to
sutra_cardano priv blueprint_generator redeemer.eex
Raw

priv/blueprint_generator/redeemer.eex

defmodule <%= @module_name %> do
@moduledoc """
Redeemer functions for <%= @purpose %> validator.
Each function returns the appropriate Plutus data for the redeemer.
"""
alias Sutra.Cardano.Blueprint
alias Sutra.Data.Plutus.Constr
# Schema for this redeemer (resolved from blueprint)
@schema <%= inspect(@schema, limit: :infinity, printable_limit: :infinity) %>
<%= for variant <- @variants do %>
@doc "<%= variant.title %> redeemer (constructor index: <%= variant.index %>)"
<%= if variant.fields == [] do %>
def <%= Macro.underscore(variant.title) %>() do
{:ok, %Constr{index: <%= variant.index %>, fields: []}}
end
<% else %>
def <%= Macro.underscore(variant.title) %>(<%= variant.field_args %>) do
value = %{constructor: "<%= variant.title %>", fields: %{<%= variant.field_map %>}}
Blueprint.encode(value, @schema)
end
<% end %>
<% end %>
end