#compdef aiken

autoload -U is-at-least

_aiken() {
    typeset -A opt_args
    typeset -a _arguments_options
    local ret=1

    if is-at-least 5.2; then
        _arguments_options=(-s -S -C)
    else
        _arguments_options=(-s -C)
    fi

    local context curcontext="$curcontext" state line
    _arguments "${_arguments_options[@]}" : \
'-h[Print help]' \
'--help[Print help]' \
":: :_aiken_commands" \
"*::: :->aiken" \
&& ret=0
    case $state in
    (aiken)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-command-$line[1]:"
        case $line[1] in
            (new)
_arguments "${_arguments_options[@]}" : \
'-l[Library only]' \
'--lib[Library only]' \
'-h[Print help]' \
'--help[Print help]' \
':name -- Project name:_default' \
&& ret=0
;;
(fmt)
_arguments "${_arguments_options[@]}" : \
'--stdin[Read source from STDIN]' \
'--check[Check if inputs are formatted without changing them]' \
'-h[Print help]' \
'--help[Print help]' \
'*::files -- Files to format:_default' \
&& ret=0
;;
(export)
_arguments "${_arguments_options[@]}" : \
'-m+[Name of the function'\''s module within the project]:MODULE:_default' \
'--module=[Name of the function'\''s module within the project]:MODULE:_default' \
'-n+[Name of the function within the module]:NAME:_default' \
'--name=[Name of the function within the module]:NAME:_default' \
'-f+[Filter traces to be included in the generated program(s).]:TRACE_FILTER:(user-defined compiler-generated all)' \
'--trace-filter=[Filter traces to be included in the generated program(s).]:TRACE_FILTER:(user-defined compiler-generated all)' \
'-t+[Choose the verbosity level of traces\:]:TRACE_LEVEL:(silent compact verbose)' \
'--trace-level=[Choose the verbosity level of traces\:]:TRACE_LEVEL:(silent compact verbose)' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'::directory -- Path to project:_files' \
&& ret=0
;;
(build)
_arguments "${_arguments_options[@]}" : \
'--env=[Environment to build against]:ENV:_default' \
'-o+[Optional relative filepath to the generated Plutus blueprint.]:FILEPATH:_files' \
'--out=[Optional relative filepath to the generated Plutus blueprint.]:FILEPATH:_files' \
'-f+[Filter traces to be included in the generated program(s).]:TRACE_FILTER:(user-defined compiler-generated all)' \
'--trace-filter=[Filter traces to be included in the generated program(s).]:TRACE_FILTER:(user-defined compiler-generated all)' \
'-t+[Choose the verbosity level of traces\:]:TRACE_LEVEL:(silent compact verbose)' \
'--trace-level=[Choose the verbosity level of traces\:]:TRACE_LEVEL:(silent compact verbose)' \
'-D[Deny warnings; warnings will be treated as errors]' \
'--deny[Deny warnings; warnings will be treated as errors]' \
'-S[Silence warnings; warnings will not be printed]' \
'--silent[Silence warnings; warnings will not be printed]' \
'-w[When enabled, re-run the command on file changes instead of exiting]' \
'--watch[When enabled, re-run the command on file changes instead of exiting]' \
'-u[Also dump textual uplc]' \
'--uplc[Also dump textual uplc]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'::directory -- Path to project:_files' \
&& ret=0
;;
(b)
_arguments "${_arguments_options[@]}" : \
'--env=[Environment to build against]:ENV:_default' \
'-o+[Optional relative filepath to the generated Plutus blueprint.]:FILEPATH:_files' \
'--out=[Optional relative filepath to the generated Plutus blueprint.]:FILEPATH:_files' \
'-f+[Filter traces to be included in the generated program(s).]:TRACE_FILTER:(user-defined compiler-generated all)' \
'--trace-filter=[Filter traces to be included in the generated program(s).]:TRACE_FILTER:(user-defined compiler-generated all)' \
'-t+[Choose the verbosity level of traces\:]:TRACE_LEVEL:(silent compact verbose)' \
'--trace-level=[Choose the verbosity level of traces\:]:TRACE_LEVEL:(silent compact verbose)' \
'-D[Deny warnings; warnings will be treated as errors]' \
'--deny[Deny warnings; warnings will be treated as errors]' \
'-S[Silence warnings; warnings will not be printed]' \
'--silent[Silence warnings; warnings will not be printed]' \
'-w[When enabled, re-run the command on file changes instead of exiting]' \
'--watch[When enabled, re-run the command on file changes instead of exiting]' \
'-u[Also dump textual uplc]' \
'--uplc[Also dump textual uplc]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'::directory -- Path to project:_files' \
&& ret=0
;;
(address)
_arguments "${_arguments_options[@]}" : \
'-i+[Optional path to the Plutus blueprint file to be used as input.]:FILEPATH:_files' \
'--in=[Optional path to the Plutus blueprint file to be used as input.]:FILEPATH:_files' \
'-m+[Name of the validator'\''s module within the project. Optional if there'\''s only one validator]:MODULE:_default' \
'--module=[Name of the validator'\''s module within the project. Optional if there'\''s only one validator]:MODULE:_default' \
'-v+[Name of the validator within the module. Optional if there'\''s only one validator]:VALIDATOR:_default' \
'--validator=[Name of the validator within the module. Optional if there'\''s only one validator]:VALIDATOR:_default' \
'--delegated-to=[Stake address to attach, if any]:DELEGATED_TO:_default' \
'--mainnet[Output the address for mainnet (this command defaults to testnet)]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'::directory -- Path to project:_files' \
&& ret=0
;;
(check)
_arguments "${_arguments_options[@]}" : \
'--seed=[An initial seed to initialize the pseudo-random generator for property-tests]:UINT:_default' \
'--max-success=[Maximum number of successful test run for considering a property-based test valid]:UINT:_default' \
'-P+[Display options for the property tests labels coverage.]:COVERAGE_MODE:_default' \
'--property-coverage=[Display options for the property tests labels coverage.]:COVERAGE_MODE:_default' \
'*-m+[Only run tests if they match any of these strings. You can match a module with \`-m aiken/list\` or \`-m list\`. You can match a test with \`-m "aiken/list.{map}"\` or \`-m "aiken/option.{flatten_1}"\`]:MATCH_TESTS:_default' \
'*--match-tests=[Only run tests if they match any of these strings. You can match a module with \`-m aiken/list\` or \`-m list\`. You can match a test with \`-m "aiken/list.{map}"\` or \`-m "aiken/option.{flatten_1}"\`]:MATCH_TESTS:_default' \
'--env=[Environment to build against]:ENV:_default' \
'-f+[Filter traces to be included in the generated program(s).]:TRACE_FILTER:(user-defined compiler-generated all)' \
'--trace-filter=[Filter traces to be included in the generated program(s).]:TRACE_FILTER:(user-defined compiler-generated all)' \
'-t+[Choose the verbosity level of traces\:]:TRACE_LEVEL:(silent compact verbose)' \
'--trace-level=[Choose the verbosity level of traces\:]:TRACE_LEVEL:(silent compact verbose)' \
'-D[Deny warnings; warnings will be treated as errors]' \
'--deny[Deny warnings; warnings will be treated as errors]' \
'-S[Silence warnings; warnings will not be printed]' \
'--silent[Silence warnings; warnings will not be printed]' \
'-s[Skip tests; run only the type-checker]' \
'--skip-tests[Skip tests; run only the type-checker]' \
'--debug[When enabled, also pretty-print test UPLC on failure]' \
'--show-json-schema[When enabled, print-out the JSON-schema of the command output when the target isn'\''t an ANSI-capable terminal]' \
'--watch[When enabled, re-run the command on file changes instead of exiting]' \
'-e[This is meant to be used with \`--match-tests\`. It forces test names to match exactly]' \
'--exact-match[This is meant to be used with \`--match-tests\`. It forces test names to match exactly]' \
'--plain-numbers[When enabled, print execution units as plain numbers]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'::directory -- Path to project:_files' \
&& ret=0
;;
(c)
_arguments "${_arguments_options[@]}" : \
'--seed=[An initial seed to initialize the pseudo-random generator for property-tests]:UINT:_default' \
'--max-success=[Maximum number of successful test run for considering a property-based test valid]:UINT:_default' \
'-P+[Display options for the property tests labels coverage.]:COVERAGE_MODE:_default' \
'--property-coverage=[Display options for the property tests labels coverage.]:COVERAGE_MODE:_default' \
'*-m+[Only run tests if they match any of these strings. You can match a module with \`-m aiken/list\` or \`-m list\`. You can match a test with \`-m "aiken/list.{map}"\` or \`-m "aiken/option.{flatten_1}"\`]:MATCH_TESTS:_default' \
'*--match-tests=[Only run tests if they match any of these strings. You can match a module with \`-m aiken/list\` or \`-m list\`. You can match a test with \`-m "aiken/list.{map}"\` or \`-m "aiken/option.{flatten_1}"\`]:MATCH_TESTS:_default' \
'--env=[Environment to build against]:ENV:_default' \
'-f+[Filter traces to be included in the generated program(s).]:TRACE_FILTER:(user-defined compiler-generated all)' \
'--trace-filter=[Filter traces to be included in the generated program(s).]:TRACE_FILTER:(user-defined compiler-generated all)' \
'-t+[Choose the verbosity level of traces\:]:TRACE_LEVEL:(silent compact verbose)' \
'--trace-level=[Choose the verbosity level of traces\:]:TRACE_LEVEL:(silent compact verbose)' \
'-D[Deny warnings; warnings will be treated as errors]' \
'--deny[Deny warnings; warnings will be treated as errors]' \
'-S[Silence warnings; warnings will not be printed]' \
'--silent[Silence warnings; warnings will not be printed]' \
'-s[Skip tests; run only the type-checker]' \
'--skip-tests[Skip tests; run only the type-checker]' \
'--debug[When enabled, also pretty-print test UPLC on failure]' \
'--show-json-schema[When enabled, print-out the JSON-schema of the command output when the target isn'\''t an ANSI-capable terminal]' \
'--watch[When enabled, re-run the command on file changes instead of exiting]' \
'-e[This is meant to be used with \`--match-tests\`. It forces test names to match exactly]' \
'--exact-match[This is meant to be used with \`--match-tests\`. It forces test names to match exactly]' \
'--plain-numbers[When enabled, print execution units as plain numbers]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'::directory -- Path to project:_files' \
&& ret=0
;;
(docs)
_arguments "${_arguments_options[@]}" : \
'-o+[Output directory for the documentation]:DESTINATION:_files' \
'--destination=[Output directory for the documentation]:DESTINATION:_files' \
'-D[Deny warnings; warnings will be treated as errors]' \
'--deny[Deny warnings; warnings will be treated as errors]' \
'-S[Silence warnings; warnings will not be printed]' \
'--silent[Silence warnings; warnings will not be printed]' \
'-w[When enabled, re-run the command on file changes instead of exiting]' \
'--watch[When enabled, re-run the command on file changes instead of exiting]' \
'--include-dependencies[When enabled, also generate documentation from dependencies]' \
'-h[Print help]' \
'--help[Print help]' \
'::directory -- Path to project:_files' \
&& ret=0
;;
(add)
_arguments "${_arguments_options[@]}" : \
'--version=[The package version, as a git commit hash, a tag or a branch name]:VERSION:_default' \
'--overwrite[]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
':package -- Package name, in the form of {owner}/{repository}:_default' \
&& ret=0
;;
(bench)
_arguments "${_arguments_options[@]}" : \
'--seed=[An initial seed to initialize the pseudo-random generator for benchmarks]:SEED:_default' \
'--max-size=[The maximum size to benchmark with. Note that this does not necessarily equates the number of measurements actually performed but controls the maximum size given to a Sampler]:MAX_SIZE:_default' \
'*-m+[Only run benchmarks if they match any of these strings]:MATCH_BENCHMARKS:_default' \
'*--match-benchmarks=[Only run benchmarks if they match any of these strings]:MATCH_BENCHMARKS:_default' \
'-f+[Filter traces to be included in the generated program(s).]:TRACE_FILTER:(user-defined compiler-generated all)' \
'--trace-filter=[Filter traces to be included in the generated program(s).]:TRACE_FILTER:(user-defined compiler-generated all)' \
'-t+[Choose the verbosity level of traces\:]:TRACE_LEVEL:(silent compact verbose)' \
'--trace-level=[Choose the verbosity level of traces\:]:TRACE_LEVEL:(silent compact verbose)' \
'-e[This is meant to be used with \`--match-benchmarks\`. It forces benchmark names to match exactly]' \
'--exact-match[This is meant to be used with \`--match-benchmarks\`. It forces benchmark names to match exactly]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'::directory -- Path to project:_files' \
'::env -- Environment to use for benchmarking:_default' \
&& ret=0
;;
(blueprint)
_arguments "${_arguments_options[@]}" : \
'-h[Print help]' \
'--help[Print help]' \
":: :_aiken__blueprint_commands" \
"*::: :->blueprint" \
&& ret=0

    case $state in
    (blueprint)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-blueprint-command-$line[1]:"
        case $line[1] in
            (address)
_arguments "${_arguments_options[@]}" : \
'-i+[Optional path to the Plutus blueprint file to be used as input.]:FILEPATH:_files' \
'--in=[Optional path to the Plutus blueprint file to be used as input.]:FILEPATH:_files' \
'-m+[Name of the validator'\''s module within the project. Optional if there'\''s only one validator]:MODULE:_default' \
'--module=[Name of the validator'\''s module within the project. Optional if there'\''s only one validator]:MODULE:_default' \
'-v+[Name of the validator within the module. Optional if there'\''s only one validator]:VALIDATOR:_default' \
'--validator=[Name of the validator within the module. Optional if there'\''s only one validator]:VALIDATOR:_default' \
'--delegated-to=[Stake address to attach, if any]:DELEGATED_TO:_default' \
'--mainnet[Output the address for mainnet (this command defaults to testnet)]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'::directory -- Path to project:_files' \
&& ret=0
;;
(policy)
_arguments "${_arguments_options[@]}" : \
'-i+[Optional path to the blueprint file to be used as input.]:FILEPATH:_files' \
'--in=[Optional path to the blueprint file to be used as input.]:FILEPATH:_files' \
'-m+[Name of the validator'\''s module within the project. Optional if there'\''s only one validator]:MODULE:_default' \
'--module=[Name of the validator'\''s module within the project. Optional if there'\''s only one validator]:MODULE:_default' \
'-v+[Name of the validator within the module. Optional if there'\''s only one validator]:VALIDATOR:_default' \
'--validator=[Name of the validator within the module. Optional if there'\''s only one validator]:VALIDATOR:_default' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'::directory -- Path to project:_files' \
&& ret=0
;;
(hash)
_arguments "${_arguments_options[@]}" : \
'-i+[Optional path to the blueprint file to be used as input.]:FILEPATH:_files' \
'--in=[Optional path to the blueprint file to be used as input.]:FILEPATH:_files' \
'-m+[Name of the validator'\''s module within the project. Optional if there'\''s only one validator]:MODULE:_default' \
'--module=[Name of the validator'\''s module within the project. Optional if there'\''s only one validator]:MODULE:_default' \
'-v+[Name of the validator within the module. Optional if there'\''s only one validator]:VALIDATOR:_default' \
'--validator=[Name of the validator within the module. Optional if there'\''s only one validator]:VALIDATOR:_default' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'::directory -- Path to project:_files' \
&& ret=0
;;
(apply)
_arguments "${_arguments_options[@]}" : \
'-i+[Optional path to the blueprint file to be used as input.]:FILEPATH:_files' \
'--in=[Optional path to the blueprint file to be used as input.]:FILEPATH:_files' \
'-o+[Optional relative filepath to the generated Plutus blueprint. Default to printing to stdout when omitted]:FILEPATH:_files' \
'--out=[Optional relative filepath to the generated Plutus blueprint. Default to printing to stdout when omitted]:FILEPATH:_files' \
'-m+[Name of the validator'\''s module within the project. Optional if there'\''s only one validator]:MODULE:_default' \
'--module=[Name of the validator'\''s module within the project. Optional if there'\''s only one validator]:MODULE:_default' \
'-v+[Name of the validator within the module. Optional if there'\''s only one validator]:VALIDATOR:_default' \
'--validator=[Name of the validator within the module. Optional if there'\''s only one validator]:VALIDATOR:_default' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'::parameter -- The parameter, as a Plutus Data (CBOR, hex-encoded):_default' \
&& ret=0
;;
(convert)
_arguments "${_arguments_options[@]}" : \
'-m+[Name of the validator'\''s module within the project. Optional if there'\''s only one validator]:MODULE:_default' \
'--module=[Name of the validator'\''s module within the project. Optional if there'\''s only one validator]:MODULE:_default' \
'-v+[Name of the validator within the module. Optional if there'\''s only one validator]:VALIDATOR:_default' \
'--validator=[Name of the validator within the module. Optional if there'\''s only one validator]:VALIDATOR:_default' \
'--to=[Format to convert to]:TO:(cardano-cli)' \
'-h[Print help]' \
'--help[Print help]' \
'::directory -- Path to project:_files' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_aiken__blueprint__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-blueprint-help-command-$line[1]:"
        case $line[1] in
            (address)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(policy)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(hash)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(apply)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(convert)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(packages)
_arguments "${_arguments_options[@]}" : \
'-h[Print help]' \
'--help[Print help]' \
":: :_aiken__packages_commands" \
"*::: :->packages" \
&& ret=0

    case $state in
    (packages)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-packages-command-$line[1]:"
        case $line[1] in
            (add)
_arguments "${_arguments_options[@]}" : \
'--version=[The package version, as a git commit hash, a tag or a branch name]:VERSION:_default' \
'--overwrite[]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
':package -- Package name, in the form of {owner}/{repository}:_default' \
&& ret=0
;;
(upgrade)
_arguments "${_arguments_options[@]}" : \
'--version=[The package version, as a git commit hash, a tag or a branch name]:VERSION:_default' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
':package -- Package name, in the form of {owner}/{repository}:_default' \
&& ret=0
;;
(clear-cache)
_arguments "${_arguments_options[@]}" : \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_aiken__packages__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-packages-help-command-$line[1]:"
        case $line[1] in
            (add)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(upgrade)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(clear-cache)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(tx)
_arguments "${_arguments_options[@]}" : \
'-h[Print help]' \
'--help[Print help]' \
":: :_aiken__tx_commands" \
"*::: :->tx" \
&& ret=0

    case $state in
    (tx)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-tx-command-$line[1]:"
        case $line[1] in
            (simulate)
_arguments "${_arguments_options[@]}" : \
'-s+[Time between each slot]:MILLISECOND:_default' \
'--slot-length=[Time between each slot]:MILLISECOND:_default' \
'--zero-time=[Time of shelley hardfork]:POSIX:_default' \
'--zero-slot=[Slot number at the start of the shelley hardfork]:SLOT:_default' \
'--blueprint=[An Aiken blueprint JSON file containing the overriding scripts, if applicable]:FILEPATH:_files' \
'*--script-override=[A mapping (colon-separated) from a script hash (in the transaction) to override by another script found in the blueprint. For example\:\`d27cee75\:197c9353\`]' \
'-c[Toggle whether input is raw cbor or a hex string]' \
'--cbor[Toggle whether input is raw cbor or a hex string]' \
'-h[Print help]' \
'--help[Print help]' \
':input -- A file containing cbor hex for a transaction:_files' \
':raw_inputs -- A file containing cbor hex for the raw inputs:_files' \
':raw_outputs -- A file containing cbor hex for the raw outputs:_files' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_aiken__tx__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-tx-help-command-$line[1]:"
        case $line[1] in
            (simulate)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(uplc)
_arguments "${_arguments_options[@]}" : \
'-h[Print help]' \
'--help[Print help]' \
":: :_aiken__uplc_commands" \
"*::: :->uplc" \
&& ret=0

    case $state in
    (uplc)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-uplc-command-$line[1]:"
        case $line[1] in
            (fmt)
_arguments "${_arguments_options[@]}" : \
'-p[Print output instead of saving to file]' \
'--print[Print output instead of saving to file]' \
'-h[Print help]' \
'--help[Print help]' \
':input -- Textual Untyped Plutus Core file:_files' \
&& ret=0
;;
(eval)
_arguments "${_arguments_options[@]}" : \
'-f[]' \
'--flat[]' \
'-c[]' \
'--cbor[]' \
'-d[]' \
'--debug[]' \
'-h[Print help]' \
'--help[Print help]' \
':script:_files' \
'*::args -- Arguments to pass to the UPLC program:_default' \
&& ret=0
;;
(encode)
_arguments "${_arguments_options[@]}" : \
'--to=[]:TO:(name named-debruijn debruijn)' \
'-c[Further encode the flat bytes as cbor bytes]' \
'--cbor[Further encode the flat bytes as cbor bytes]' \
'--hex[Hex encode the bytes]' \
'-h[Print help]' \
'--help[Print help]' \
':input -- Textual Untyped Plutus Core file:_files' \
&& ret=0
;;
(decode)
_arguments "${_arguments_options[@]}" : \
'--from=[]:FROM:(name named-debruijn debruijn)' \
'-c[Input file contains cbor encoded flat bytes]' \
'--cbor[Input file contains cbor encoded flat bytes]' \
'--hex[Input file contents will be hex decoded]' \
'-h[Print help]' \
'--help[Print help]' \
':input -- Flat encoded Untyped Plutus Core file:_files' \
&& ret=0
;;
(shrink)
_arguments "${_arguments_options[@]}" : \
'--from=[]:FROM:(name named-debruijn debruijn)' \
'--to=[]:TO:(name named-debruijn debruijn)' \
'-c[Input file contains cbor encoded flat bytes]' \
'--cbor[Input file contains cbor encoded flat bytes]' \
'--hex[Input file contents will be hex decoded]' \
'-h[Print help]' \
'--help[Print help]' \
':input -- Flat encoded Untyped Plutus Core file:_files' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_aiken__uplc__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-uplc-help-command-$line[1]:"
        case $line[1] in
            (fmt)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(eval)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(encode)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(decode)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(shrink)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(completion)
_arguments "${_arguments_options[@]}" : \
'-h[Print help]' \
'--help[Print help]' \
":: :_aiken__completion_commands" \
"*::: :->completion" \
&& ret=0

    case $state in
    (completion)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-completion-command-$line[1]:"
        case $line[1] in
            (bash)
_arguments "${_arguments_options[@]}" : \
'-i[Install the completion scripts]' \
'--install[Install the completion scripts]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(zsh)
_arguments "${_arguments_options[@]}" : \
'-i[Install the completion scripts]' \
'--install[Install the completion scripts]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(fish)
_arguments "${_arguments_options[@]}" : \
'-i[Install the completion scripts]' \
'--install[Install the completion scripts]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_aiken__completion__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-completion-help-command-$line[1]:"
        case $line[1] in
            (bash)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(zsh)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(fish)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
;;
(lsp)
_arguments "${_arguments_options[@]}" : \
'--stdio[Run on stdio]' \
'-h[Print help]' \
'--help[Print help]' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_aiken__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-help-command-$line[1]:"
        case $line[1] in
            (new)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(fmt)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(export)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(build)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(address)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(check)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(docs)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(add)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(bench)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(blueprint)
_arguments "${_arguments_options[@]}" : \
":: :_aiken__help__blueprint_commands" \
"*::: :->blueprint" \
&& ret=0

    case $state in
    (blueprint)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-help-blueprint-command-$line[1]:"
        case $line[1] in
            (address)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(policy)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(hash)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(apply)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(convert)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(packages)
_arguments "${_arguments_options[@]}" : \
":: :_aiken__help__packages_commands" \
"*::: :->packages" \
&& ret=0

    case $state in
    (packages)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-help-packages-command-$line[1]:"
        case $line[1] in
            (add)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(upgrade)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(clear-cache)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(tx)
_arguments "${_arguments_options[@]}" : \
":: :_aiken__help__tx_commands" \
"*::: :->tx" \
&& ret=0

    case $state in
    (tx)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-help-tx-command-$line[1]:"
        case $line[1] in
            (simulate)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(uplc)
_arguments "${_arguments_options[@]}" : \
":: :_aiken__help__uplc_commands" \
"*::: :->uplc" \
&& ret=0

    case $state in
    (uplc)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-help-uplc-command-$line[1]:"
        case $line[1] in
            (fmt)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(eval)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(encode)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(decode)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(shrink)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(completion)
_arguments "${_arguments_options[@]}" : \
":: :_aiken__help__completion_commands" \
"*::: :->completion" \
&& ret=0

    case $state in
    (completion)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:aiken-help-completion-command-$line[1]:"
        case $line[1] in
            (bash)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(zsh)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(fish)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
(lsp)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
}

(( $+functions[_aiken_commands] )) ||
_aiken_commands() {
    local commands; commands=(
'new:Create a new Aiken project' \
'fmt:Format an Aiken project' \
'export:Export a function as a standalone UPLC program. Arguments to the function can be applied using \`aiken apply\`' \
'build:Build an Aiken project' \
'b:Build an Aiken project' \
'address:Compute a validator'\''s address' \
'check: Type-check an Aiken project and run any tests found.  Test results are printed as stylized outputs when \`stdout\` is a TTY-capable terminal. If it isn'\''t, (e.g. because you are redirecting the output to a file), test results are printed as a JSON structured object. Use \`--show-json-schema\` to see the whole schema. ' \
'c: Type-check an Aiken project and run any tests found.  Test results are printed as stylized outputs when \`stdout\` is a TTY-capable terminal. If it isn'\''t, (e.g. because you are redirecting the output to a file), test results are printed as a JSON structured object. Use \`--show-json-schema\` to see the whole schema. ' \
'docs:Build the documentation for an Aiken project' \
'add:Add a new project package as dependency' \
'bench:Benchmark an Aiken project' \
'blueprint:Commands for working with Plutus blueprints' \
'packages:Managing project dependencies' \
'tx:Commands for working with transactions' \
'uplc:Commands for working with untyped Plutus-core' \
'completion:Get completion scripts for various shells' \
'lsp:Start the Aiken language server' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'aiken commands' commands "$@"
}
(( $+functions[_aiken__add_commands] )) ||
_aiken__add_commands() {
    local commands; commands=()
    _describe -t commands 'aiken add commands' commands "$@"
}
(( $+functions[_aiken__address_commands] )) ||
_aiken__address_commands() {
    local commands; commands=()
    _describe -t commands 'aiken address commands' commands "$@"
}
(( $+functions[_aiken__bench_commands] )) ||
_aiken__bench_commands() {
    local commands; commands=()
    _describe -t commands 'aiken bench commands' commands "$@"
}
(( $+functions[_aiken__blueprint_commands] )) ||
_aiken__blueprint_commands() {
    local commands; commands=(
'address:Compute a validator'\''s address' \
'policy:Compute a minting scripts Policy ID' \
'hash:Compute a validator'\''s hash' \
'apply:Apply a parameter to a parameterized validator' \
'convert:Convert a blueprint into other formats' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'aiken blueprint commands' commands "$@"
}
(( $+functions[_aiken__blueprint__address_commands] )) ||
_aiken__blueprint__address_commands() {
    local commands; commands=()
    _describe -t commands 'aiken blueprint address commands' commands "$@"
}
(( $+functions[_aiken__blueprint__apply_commands] )) ||
_aiken__blueprint__apply_commands() {
    local commands; commands=()
    _describe -t commands 'aiken blueprint apply commands' commands "$@"
}
(( $+functions[_aiken__blueprint__convert_commands] )) ||
_aiken__blueprint__convert_commands() {
    local commands; commands=()
    _describe -t commands 'aiken blueprint convert commands' commands "$@"
}
(( $+functions[_aiken__blueprint__hash_commands] )) ||
_aiken__blueprint__hash_commands() {
    local commands; commands=()
    _describe -t commands 'aiken blueprint hash commands' commands "$@"
}
(( $+functions[_aiken__blueprint__help_commands] )) ||
_aiken__blueprint__help_commands() {
    local commands; commands=(
'address:Compute a validator'\''s address' \
'policy:Compute a minting scripts Policy ID' \
'hash:Compute a validator'\''s hash' \
'apply:Apply a parameter to a parameterized validator' \
'convert:Convert a blueprint into other formats' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'aiken blueprint help commands' commands "$@"
}
(( $+functions[_aiken__blueprint__help__address_commands] )) ||
_aiken__blueprint__help__address_commands() {
    local commands; commands=()
    _describe -t commands 'aiken blueprint help address commands' commands "$@"
}
(( $+functions[_aiken__blueprint__help__apply_commands] )) ||
_aiken__blueprint__help__apply_commands() {
    local commands; commands=()
    _describe -t commands 'aiken blueprint help apply commands' commands "$@"
}
(( $+functions[_aiken__blueprint__help__convert_commands] )) ||
_aiken__blueprint__help__convert_commands() {
    local commands; commands=()
    _describe -t commands 'aiken blueprint help convert commands' commands "$@"
}
(( $+functions[_aiken__blueprint__help__hash_commands] )) ||
_aiken__blueprint__help__hash_commands() {
    local commands; commands=()
    _describe -t commands 'aiken blueprint help hash commands' commands "$@"
}
(( $+functions[_aiken__blueprint__help__help_commands] )) ||
_aiken__blueprint__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'aiken blueprint help help commands' commands "$@"
}
(( $+functions[_aiken__blueprint__help__policy_commands] )) ||
_aiken__blueprint__help__policy_commands() {
    local commands; commands=()
    _describe -t commands 'aiken blueprint help policy commands' commands "$@"
}
(( $+functions[_aiken__blueprint__policy_commands] )) ||
_aiken__blueprint__policy_commands() {
    local commands; commands=()
    _describe -t commands 'aiken blueprint policy commands' commands "$@"
}
(( $+functions[_aiken__build_commands] )) ||
_aiken__build_commands() {
    local commands; commands=()
    _describe -t commands 'aiken build commands' commands "$@"
}
(( $+functions[_aiken__check_commands] )) ||
_aiken__check_commands() {
    local commands; commands=()
    _describe -t commands 'aiken check commands' commands "$@"
}
(( $+functions[_aiken__completion_commands] )) ||
_aiken__completion_commands() {
    local commands; commands=(
'bash:Generates shell completion scripts' \
'zsh:Generates shell completion scripts' \
'fish:Generates shell completion scripts' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'aiken completion commands' commands "$@"
}
(( $+functions[_aiken__completion__bash_commands] )) ||
_aiken__completion__bash_commands() {
    local commands; commands=()
    _describe -t commands 'aiken completion bash commands' commands "$@"
}
(( $+functions[_aiken__completion__fish_commands] )) ||
_aiken__completion__fish_commands() {
    local commands; commands=()
    _describe -t commands 'aiken completion fish commands' commands "$@"
}
(( $+functions[_aiken__completion__help_commands] )) ||
_aiken__completion__help_commands() {
    local commands; commands=(
'bash:Generates shell completion scripts' \
'zsh:Generates shell completion scripts' \
'fish:Generates shell completion scripts' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'aiken completion help commands' commands "$@"
}
(( $+functions[_aiken__completion__help__bash_commands] )) ||
_aiken__completion__help__bash_commands() {
    local commands; commands=()
    _describe -t commands 'aiken completion help bash commands' commands "$@"
}
(( $+functions[_aiken__completion__help__fish_commands] )) ||
_aiken__completion__help__fish_commands() {
    local commands; commands=()
    _describe -t commands 'aiken completion help fish commands' commands "$@"
}
(( $+functions[_aiken__completion__help__help_commands] )) ||
_aiken__completion__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'aiken completion help help commands' commands "$@"
}
(( $+functions[_aiken__completion__help__zsh_commands] )) ||
_aiken__completion__help__zsh_commands() {
    local commands; commands=()
    _describe -t commands 'aiken completion help zsh commands' commands "$@"
}
(( $+functions[_aiken__completion__zsh_commands] )) ||
_aiken__completion__zsh_commands() {
    local commands; commands=()
    _describe -t commands 'aiken completion zsh commands' commands "$@"
}
(( $+functions[_aiken__docs_commands] )) ||
_aiken__docs_commands() {
    local commands; commands=()
    _describe -t commands 'aiken docs commands' commands "$@"
}
(( $+functions[_aiken__export_commands] )) ||
_aiken__export_commands() {
    local commands; commands=()
    _describe -t commands 'aiken export commands' commands "$@"
}
(( $+functions[_aiken__fmt_commands] )) ||
_aiken__fmt_commands() {
    local commands; commands=()
    _describe -t commands 'aiken fmt commands' commands "$@"
}
(( $+functions[_aiken__help_commands] )) ||
_aiken__help_commands() {
    local commands; commands=(
'new:Create a new Aiken project' \
'fmt:Format an Aiken project' \
'export:Export a function as a standalone UPLC program. Arguments to the function can be applied using \`aiken apply\`' \
'build:Build an Aiken project' \
'address:Compute a validator'\''s address' \
'check: Type-check an Aiken project and run any tests found.  Test results are printed as stylized outputs when \`stdout\` is a TTY-capable terminal. If it isn'\''t, (e.g. because you are redirecting the output to a file), test results are printed as a JSON structured object. Use \`--show-json-schema\` to see the whole schema. ' \
'docs:Build the documentation for an Aiken project' \
'add:Add a new project package as dependency' \
'bench:Benchmark an Aiken project' \
'blueprint:Commands for working with Plutus blueprints' \
'packages:Managing project dependencies' \
'tx:Commands for working with transactions' \
'uplc:Commands for working with untyped Plutus-core' \
'completion:Get completion scripts for various shells' \
'lsp:Start the Aiken language server' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'aiken help commands' commands "$@"
}
(( $+functions[_aiken__help__add_commands] )) ||
_aiken__help__add_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help add commands' commands "$@"
}
(( $+functions[_aiken__help__address_commands] )) ||
_aiken__help__address_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help address commands' commands "$@"
}
(( $+functions[_aiken__help__bench_commands] )) ||
_aiken__help__bench_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help bench commands' commands "$@"
}
(( $+functions[_aiken__help__blueprint_commands] )) ||
_aiken__help__blueprint_commands() {
    local commands; commands=(
'address:Compute a validator'\''s address' \
'policy:Compute a minting scripts Policy ID' \
'hash:Compute a validator'\''s hash' \
'apply:Apply a parameter to a parameterized validator' \
'convert:Convert a blueprint into other formats' \
    )
    _describe -t commands 'aiken help blueprint commands' commands "$@"
}
(( $+functions[_aiken__help__blueprint__address_commands] )) ||
_aiken__help__blueprint__address_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help blueprint address commands' commands "$@"
}
(( $+functions[_aiken__help__blueprint__apply_commands] )) ||
_aiken__help__blueprint__apply_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help blueprint apply commands' commands "$@"
}
(( $+functions[_aiken__help__blueprint__convert_commands] )) ||
_aiken__help__blueprint__convert_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help blueprint convert commands' commands "$@"
}
(( $+functions[_aiken__help__blueprint__hash_commands] )) ||
_aiken__help__blueprint__hash_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help blueprint hash commands' commands "$@"
}
(( $+functions[_aiken__help__blueprint__policy_commands] )) ||
_aiken__help__blueprint__policy_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help blueprint policy commands' commands "$@"
}
(( $+functions[_aiken__help__build_commands] )) ||
_aiken__help__build_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help build commands' commands "$@"
}
(( $+functions[_aiken__help__check_commands] )) ||
_aiken__help__check_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help check commands' commands "$@"
}
(( $+functions[_aiken__help__completion_commands] )) ||
_aiken__help__completion_commands() {
    local commands; commands=(
'bash:Generates shell completion scripts' \
'zsh:Generates shell completion scripts' \
'fish:Generates shell completion scripts' \
    )
    _describe -t commands 'aiken help completion commands' commands "$@"
}
(( $+functions[_aiken__help__completion__bash_commands] )) ||
_aiken__help__completion__bash_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help completion bash commands' commands "$@"
}
(( $+functions[_aiken__help__completion__fish_commands] )) ||
_aiken__help__completion__fish_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help completion fish commands' commands "$@"
}
(( $+functions[_aiken__help__completion__zsh_commands] )) ||
_aiken__help__completion__zsh_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help completion zsh commands' commands "$@"
}
(( $+functions[_aiken__help__docs_commands] )) ||
_aiken__help__docs_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help docs commands' commands "$@"
}
(( $+functions[_aiken__help__export_commands] )) ||
_aiken__help__export_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help export commands' commands "$@"
}
(( $+functions[_aiken__help__fmt_commands] )) ||
_aiken__help__fmt_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help fmt commands' commands "$@"
}
(( $+functions[_aiken__help__help_commands] )) ||
_aiken__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help help commands' commands "$@"
}
(( $+functions[_aiken__help__lsp_commands] )) ||
_aiken__help__lsp_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help lsp commands' commands "$@"
}
(( $+functions[_aiken__help__new_commands] )) ||
_aiken__help__new_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help new commands' commands "$@"
}
(( $+functions[_aiken__help__packages_commands] )) ||
_aiken__help__packages_commands() {
    local commands; commands=(
'add:Add a new package dependency' \
'upgrade:Change the version of an installed dependency' \
'clear-cache:Clear the system-wide dependencies cache' \
    )
    _describe -t commands 'aiken help packages commands' commands "$@"
}
(( $+functions[_aiken__help__packages__add_commands] )) ||
_aiken__help__packages__add_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help packages add commands' commands "$@"
}
(( $+functions[_aiken__help__packages__clear-cache_commands] )) ||
_aiken__help__packages__clear-cache_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help packages clear-cache commands' commands "$@"
}
(( $+functions[_aiken__help__packages__upgrade_commands] )) ||
_aiken__help__packages__upgrade_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help packages upgrade commands' commands "$@"
}
(( $+functions[_aiken__help__tx_commands] )) ||
_aiken__help__tx_commands() {
    local commands; commands=(
'simulate:Simulate a transaction by evaluating it'\''s script' \
    )
    _describe -t commands 'aiken help tx commands' commands "$@"
}
(( $+functions[_aiken__help__tx__simulate_commands] )) ||
_aiken__help__tx__simulate_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help tx simulate commands' commands "$@"
}
(( $+functions[_aiken__help__uplc_commands] )) ||
_aiken__help__uplc_commands() {
    local commands; commands=(
'fmt:Format an Untyped Plutus Core program' \
'eval:Evaluate an Untyped Plutus Core program' \
'encode:Encode textual Untyped Plutus Core to flat bytes' \
'decode:Decode flat bytes to textual Untyped Plutus Core' \
'shrink:Shrink / Optimize UPLC code using a variety of optimization steps' \
    )
    _describe -t commands 'aiken help uplc commands' commands "$@"
}
(( $+functions[_aiken__help__uplc__decode_commands] )) ||
_aiken__help__uplc__decode_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help uplc decode commands' commands "$@"
}
(( $+functions[_aiken__help__uplc__encode_commands] )) ||
_aiken__help__uplc__encode_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help uplc encode commands' commands "$@"
}
(( $+functions[_aiken__help__uplc__eval_commands] )) ||
_aiken__help__uplc__eval_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help uplc eval commands' commands "$@"
}
(( $+functions[_aiken__help__uplc__fmt_commands] )) ||
_aiken__help__uplc__fmt_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help uplc fmt commands' commands "$@"
}
(( $+functions[_aiken__help__uplc__shrink_commands] )) ||
_aiken__help__uplc__shrink_commands() {
    local commands; commands=()
    _describe -t commands 'aiken help uplc shrink commands' commands "$@"
}
(( $+functions[_aiken__lsp_commands] )) ||
_aiken__lsp_commands() {
    local commands; commands=()
    _describe -t commands 'aiken lsp commands' commands "$@"
}
(( $+functions[_aiken__new_commands] )) ||
_aiken__new_commands() {
    local commands; commands=()
    _describe -t commands 'aiken new commands' commands "$@"
}
(( $+functions[_aiken__packages_commands] )) ||
_aiken__packages_commands() {
    local commands; commands=(
'add:Add a new package dependency' \
'upgrade:Change the version of an installed dependency' \
'clear-cache:Clear the system-wide dependencies cache' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'aiken packages commands' commands "$@"
}
(( $+functions[_aiken__packages__add_commands] )) ||
_aiken__packages__add_commands() {
    local commands; commands=()
    _describe -t commands 'aiken packages add commands' commands "$@"
}
(( $+functions[_aiken__packages__clear-cache_commands] )) ||
_aiken__packages__clear-cache_commands() {
    local commands; commands=()
    _describe -t commands 'aiken packages clear-cache commands' commands "$@"
}
(( $+functions[_aiken__packages__help_commands] )) ||
_aiken__packages__help_commands() {
    local commands; commands=(
'add:Add a new package dependency' \
'upgrade:Change the version of an installed dependency' \
'clear-cache:Clear the system-wide dependencies cache' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'aiken packages help commands' commands "$@"
}
(( $+functions[_aiken__packages__help__add_commands] )) ||
_aiken__packages__help__add_commands() {
    local commands; commands=()
    _describe -t commands 'aiken packages help add commands' commands "$@"
}
(( $+functions[_aiken__packages__help__clear-cache_commands] )) ||
_aiken__packages__help__clear-cache_commands() {
    local commands; commands=()
    _describe -t commands 'aiken packages help clear-cache commands' commands "$@"
}
(( $+functions[_aiken__packages__help__help_commands] )) ||
_aiken__packages__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'aiken packages help help commands' commands "$@"
}
(( $+functions[_aiken__packages__help__upgrade_commands] )) ||
_aiken__packages__help__upgrade_commands() {
    local commands; commands=()
    _describe -t commands 'aiken packages help upgrade commands' commands "$@"
}
(( $+functions[_aiken__packages__upgrade_commands] )) ||
_aiken__packages__upgrade_commands() {
    local commands; commands=()
    _describe -t commands 'aiken packages upgrade commands' commands "$@"
}
(( $+functions[_aiken__tx_commands] )) ||
_aiken__tx_commands() {
    local commands; commands=(
'simulate:Simulate a transaction by evaluating it'\''s script' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'aiken tx commands' commands "$@"
}
(( $+functions[_aiken__tx__help_commands] )) ||
_aiken__tx__help_commands() {
    local commands; commands=(
'simulate:Simulate a transaction by evaluating it'\''s script' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'aiken tx help commands' commands "$@"
}
(( $+functions[_aiken__tx__help__help_commands] )) ||
_aiken__tx__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'aiken tx help help commands' commands "$@"
}
(( $+functions[_aiken__tx__help__simulate_commands] )) ||
_aiken__tx__help__simulate_commands() {
    local commands; commands=()
    _describe -t commands 'aiken tx help simulate commands' commands "$@"
}
(( $+functions[_aiken__tx__simulate_commands] )) ||
_aiken__tx__simulate_commands() {
    local commands; commands=()
    _describe -t commands 'aiken tx simulate commands' commands "$@"
}
(( $+functions[_aiken__uplc_commands] )) ||
_aiken__uplc_commands() {
    local commands; commands=(
'fmt:Format an Untyped Plutus Core program' \
'eval:Evaluate an Untyped Plutus Core program' \
'encode:Encode textual Untyped Plutus Core to flat bytes' \
'decode:Decode flat bytes to textual Untyped Plutus Core' \
'shrink:Shrink / Optimize UPLC code using a variety of optimization steps' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'aiken uplc commands' commands "$@"
}
(( $+functions[_aiken__uplc__decode_commands] )) ||
_aiken__uplc__decode_commands() {
    local commands; commands=()
    _describe -t commands 'aiken uplc decode commands' commands "$@"
}
(( $+functions[_aiken__uplc__encode_commands] )) ||
_aiken__uplc__encode_commands() {
    local commands; commands=()
    _describe -t commands 'aiken uplc encode commands' commands "$@"
}
(( $+functions[_aiken__uplc__eval_commands] )) ||
_aiken__uplc__eval_commands() {
    local commands; commands=()
    _describe -t commands 'aiken uplc eval commands' commands "$@"
}
(( $+functions[_aiken__uplc__fmt_commands] )) ||
_aiken__uplc__fmt_commands() {
    local commands; commands=()
    _describe -t commands 'aiken uplc fmt commands' commands "$@"
}
(( $+functions[_aiken__uplc__help_commands] )) ||
_aiken__uplc__help_commands() {
    local commands; commands=(
'fmt:Format an Untyped Plutus Core program' \
'eval:Evaluate an Untyped Plutus Core program' \
'encode:Encode textual Untyped Plutus Core to flat bytes' \
'decode:Decode flat bytes to textual Untyped Plutus Core' \
'shrink:Shrink / Optimize UPLC code using a variety of optimization steps' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'aiken uplc help commands' commands "$@"
}
(( $+functions[_aiken__uplc__help__decode_commands] )) ||
_aiken__uplc__help__decode_commands() {
    local commands; commands=()
    _describe -t commands 'aiken uplc help decode commands' commands "$@"
}
(( $+functions[_aiken__uplc__help__encode_commands] )) ||
_aiken__uplc__help__encode_commands() {
    local commands; commands=()
    _describe -t commands 'aiken uplc help encode commands' commands "$@"
}
(( $+functions[_aiken__uplc__help__eval_commands] )) ||
_aiken__uplc__help__eval_commands() {
    local commands; commands=()
    _describe -t commands 'aiken uplc help eval commands' commands "$@"
}
(( $+functions[_aiken__uplc__help__fmt_commands] )) ||
_aiken__uplc__help__fmt_commands() {
    local commands; commands=()
    _describe -t commands 'aiken uplc help fmt commands' commands "$@"
}
(( $+functions[_aiken__uplc__help__help_commands] )) ||
_aiken__uplc__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'aiken uplc help help commands' commands "$@"
}
(( $+functions[_aiken__uplc__help__shrink_commands] )) ||
_aiken__uplc__help__shrink_commands() {
    local commands; commands=()
    _describe -t commands 'aiken uplc help shrink commands' commands "$@"
}
(( $+functions[_aiken__uplc__shrink_commands] )) ||
_aiken__uplc__shrink_commands() {
    local commands; commands=()
    _describe -t commands 'aiken uplc shrink commands' commands "$@"
}

if [ "$funcstack[1]" = "_aiken" ]; then
    _aiken "$@"
else
    compdef _aiken aiken
fi
