-module(aion@workflow@define).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/aion/workflow/define.gleam").
-export([define/5, name/1, input_codec/1, output_codec/1, error_codec/1, entry_fn/1]).
-export_type([workflow_definition/3]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(" workflow.define: typed entry contract (entry fn + input/output/error codecs)\n").
-opaque workflow_definition(FAZ, FBA, FBB) :: {workflow_definition,
binary(),
aion@codec:codec(FAZ),
aion@codec:codec(FBA),
aion@codec:codec(FBB),
fun((FAZ) -> {ok, FBA} | {error, FBB})}.
-file("src/aion/workflow/define.gleam", 29).
?DOC(" Define a typed workflow entry contract consumed by AE at spawn.\n").
-spec define(
binary(),
aion@codec:codec(FBC),
aion@codec:codec(FBE),
aion@codec:codec(FBG),
fun((FBC) -> {ok, FBE} | {error, FBG})
) -> workflow_definition(FBC, FBE, FBG).
define(Name, Input_codec, Output_codec, Error_codec, Entry_fn) ->
{workflow_definition,
Name,
Input_codec,
Output_codec,
Error_codec,
Entry_fn}.
-file("src/aion/workflow/define.gleam", 46).
?DOC(" Return the workflow name carried by the definition.\n").
-spec name(workflow_definition(any(), any(), any())) -> binary().
name(Definition) ->
erlang:element(2, Definition).
-file("src/aion/workflow/define.gleam", 51).
?DOC(" Return the input codec used by AE to decode the spawn Payload.\n").
-spec input_codec(workflow_definition(FBT, any(), any())) -> aion@codec:codec(FBT).
input_codec(Definition) ->
erlang:element(3, Definition).
-file("src/aion/workflow/define.gleam", 58).
?DOC(" Return the output codec used by AE to encode successful completion Payloads.\n").
-spec output_codec(workflow_definition(any(), FCB, any())) -> aion@codec:codec(FCB).
output_codec(Definition) ->
erlang:element(4, Definition).
-file("src/aion/workflow/define.gleam", 65).
?DOC(" Return the error codec used by AE to encode failed completion Payloads.\n").
-spec error_codec(workflow_definition(any(), any(), FCJ)) -> aion@codec:codec(FCJ).
error_codec(Definition) ->
erlang:element(5, Definition).
-file("src/aion/workflow/define.gleam", 72).
?DOC(" Return the typed entry function carried for AE to invoke/drive.\n").
-spec entry_fn(workflow_definition(FCO, FCP, FCQ)) -> fun((FCO) -> {ok, FCP} |
{error, FCQ}).
entry_fn(Definition) ->
erlang:element(6, Definition).