#compdef idt

autoload -U is-at-least

_idt() {
    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[@]}" : \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'-V[Print version]' \
'--version[Print version]' \
":: :_idt_commands" \
"*::: :->idt" \
&& ret=0
    case $state in
    (idt)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:idt-command-$line[1]:"
        case $line[1] in
            (gen)
_arguments "${_arguments_options[@]}" : \
'-n+[Number of IDs to generate]:COUNT:_default' \
'--count=[Number of IDs to generate]:COUNT:_default' \
'-f+[Output format (canonical, hex, base32, base58, base64)]:FORMAT:_default' \
'--format=[Output format (canonical, hex, base32, base58, base64)]:FORMAT:_default' \
'-T+[Wrap each generated ID in a template string ({} = placeholder)]:TEMPLATE:_default' \
'--template=[Wrap each generated ID in a template string ({} = placeholder)]:TEMPLATE:_default' \
'--uuid-version=[UUID version (1, 4, 6, 7)]:VERSION:_default' \
'--alphabet=[Custom alphabet for NanoID]:ALPHABET:_default' \
'--length=[Length for NanoID]:LENGTH:_default' \
'--epoch=[Custom epoch (discord, twitter, or milliseconds since Unix epoch)]:EPOCH:_default' \
'--preset=[Snowflake preset (twitter, discord, instagram, sonyflake, mastodon)]:PRESET:_default' \
'*--field=[Set a Snowflake field value (e.g., --field shard_id=42)]:NAME=VALUE:_default' \
'--machine-id=[Machine/worker ID (0-31)]:MACHINE_ID:_default' \
'--datacenter-id=[Datacenter ID (0-31)]:DATACENTER_ID:_default' \
'--prefix=[Type prefix for TypeID]:PREFIX:_default' \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--no-newline[Don'\''t print trailing newline (single ID only)]' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help]' \
'--help[Print help]' \
':id_type -- ID type to generate:(uuid uuidv1 uuidv4 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid)' \
&& ret=0
;;
(g)
_arguments "${_arguments_options[@]}" : \
'-n+[Number of IDs to generate]:COUNT:_default' \
'--count=[Number of IDs to generate]:COUNT:_default' \
'-f+[Output format (canonical, hex, base32, base58, base64)]:FORMAT:_default' \
'--format=[Output format (canonical, hex, base32, base58, base64)]:FORMAT:_default' \
'-T+[Wrap each generated ID in a template string ({} = placeholder)]:TEMPLATE:_default' \
'--template=[Wrap each generated ID in a template string ({} = placeholder)]:TEMPLATE:_default' \
'--uuid-version=[UUID version (1, 4, 6, 7)]:VERSION:_default' \
'--alphabet=[Custom alphabet for NanoID]:ALPHABET:_default' \
'--length=[Length for NanoID]:LENGTH:_default' \
'--epoch=[Custom epoch (discord, twitter, or milliseconds since Unix epoch)]:EPOCH:_default' \
'--preset=[Snowflake preset (twitter, discord, instagram, sonyflake, mastodon)]:PRESET:_default' \
'*--field=[Set a Snowflake field value (e.g., --field shard_id=42)]:NAME=VALUE:_default' \
'--machine-id=[Machine/worker ID (0-31)]:MACHINE_ID:_default' \
'--datacenter-id=[Datacenter ID (0-31)]:DATACENTER_ID:_default' \
'--prefix=[Type prefix for TypeID]:PREFIX:_default' \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--no-newline[Don'\''t print trailing newline (single ID only)]' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help]' \
'--help[Print help]' \
':id_type -- ID type to generate:(uuid uuidv1 uuidv4 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid)' \
&& ret=0
;;
(inspect)
_arguments "${_arguments_options[@]}" : \
'-t+[Hint the ID type (skip auto-detection)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'--id-type=[Hint the ID type (skip auto-detection)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'--epoch=[Epoch for Snowflake IDs (discord, twitter, or milliseconds since Unix epoch)]:EPOCH:' \
'--preset=[Snowflake preset (twitter, discord, instagram, sonyflake, mastodon)]:PRESET:_default' \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'-q[Only show errors (for validation)]' \
'--quiet[Only show errors (for validation)]' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help]' \
'--help[Print help]' \
'*::ids -- ID(s) to inspect (reads from stdin if omitted):' \
&& ret=0
;;
(i)
_arguments "${_arguments_options[@]}" : \
'-t+[Hint the ID type (skip auto-detection)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'--id-type=[Hint the ID type (skip auto-detection)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'--epoch=[Epoch for Snowflake IDs (discord, twitter, or milliseconds since Unix epoch)]:EPOCH:' \
'--preset=[Snowflake preset (twitter, discord, instagram, sonyflake, mastodon)]:PRESET:_default' \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'-q[Only show errors (for validation)]' \
'--quiet[Only show errors (for validation)]' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help]' \
'--help[Print help]' \
'*::ids -- ID(s) to inspect (reads from stdin if omitted):' \
&& ret=0
;;
(convert)
_arguments "${_arguments_options[@]}" : \
'-t+[Source ID type (auto-detect if omitted)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'--id-type=[Source ID type (auto-detect if omitted)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'-f+[Target format]:FORMAT:' \
'--format=[Target format]:FORMAT:' \
'--to=[Convert to different ID type (if compatible)]:TYPE:' \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'-U[Uppercase output]' \
'--uppercase[Uppercase output]' \
'-L[Lowercase output]' \
'--lowercase[Lowercase output]' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help]' \
'--help[Print help]' \
'*::ids -- ID(s) to convert (reads from stdin if omitted):' \
&& ret=0
;;
(c)
_arguments "${_arguments_options[@]}" : \
'-t+[Source ID type (auto-detect if omitted)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'--id-type=[Source ID type (auto-detect if omitted)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'-f+[Target format]:FORMAT:' \
'--format=[Target format]:FORMAT:' \
'--to=[Convert to different ID type (if compatible)]:TYPE:' \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'-U[Uppercase output]' \
'--uppercase[Uppercase output]' \
'-L[Lowercase output]' \
'--lowercase[Lowercase output]' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help]' \
'--help[Print help]' \
'*::ids -- ID(s) to convert (reads from stdin if omitted):' \
&& ret=0
;;
(validate)
_arguments "${_arguments_options[@]}" : \
'-t+[Expected ID type (any valid if omitted)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'--id-type=[Expected ID type (any valid if omitted)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'-q[No output, only exit code]' \
'--quiet[No output, only exit code]' \
'--strict[Strict validation (reject non-canonical forms)]' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help]' \
'--help[Print help]' \
'*::ids -- ID(s) to validate:' \
&& ret=0
;;
(v)
_arguments "${_arguments_options[@]}" : \
'-t+[Expected ID type (any valid if omitted)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'--id-type=[Expected ID type (any valid if omitted)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'-q[No output, only exit code]' \
'--quiet[No output, only exit code]' \
'--strict[Strict validation (reject non-canonical forms)]' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help]' \
'--help[Print help]' \
'*::ids -- ID(s) to validate:' \
&& ret=0
;;
(compare)
_arguments "${_arguments_options[@]}" : \
'-t+[ID type (auto-detect if omitted)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'--id-type=[ID type (auto-detect if omitted)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help]' \
'--help[Print help]' \
':id1 -- First ID to compare:' \
':id2 -- Second ID to compare:' \
&& ret=0
;;
(sort)
_arguments "${_arguments_options[@]}" : \
'-t+[Hint the ID type (skip auto-detection)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'--id-type=[Hint the ID type (skip auto-detection)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'--epoch=[Epoch for Snowflake IDs (discord, twitter, or milliseconds since Unix epoch)]:EPOCH:' \
'--preset=[Snowflake preset (twitter, discord, instagram, sonyflake, mastodon)]:PRESET:_default' \
'--on-unsortable=[Policy for IDs without timestamps\: skip (default), error, end]:ON_UNSORTABLE:((skip\:"Skip unsortable IDs with a warning to stderr"
error\:"Fail with an error if any ID is unsortable"
end\:"Append unsortable IDs after sorted ones"))' \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'-r[Sort in descending order (newest first)]' \
'--reverse[Sort in descending order (newest first)]' \
'--show-time[Display timestamps alongside IDs]' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'*::ids -- ID(s) to sort (reads from stdin if omitted):' \
&& ret=0
;;
(s)
_arguments "${_arguments_options[@]}" : \
'-t+[Hint the ID type (skip auto-detection)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'--id-type=[Hint the ID type (skip auto-detection)]:TYPE:(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
'--epoch=[Epoch for Snowflake IDs (discord, twitter, or milliseconds since Unix epoch)]:EPOCH:' \
'--preset=[Snowflake preset (twitter, discord, instagram, sonyflake, mastodon)]:PRESET:_default' \
'--on-unsortable=[Policy for IDs without timestamps\: skip (default), error, end]:ON_UNSORTABLE:((skip\:"Skip unsortable IDs with a warning to stderr"
error\:"Fail with an error if any ID is unsortable"
end\:"Append unsortable IDs after sorted ones"))' \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'-r[Sort in descending order (newest first)]' \
'--reverse[Sort in descending order (newest first)]' \
'--show-time[Display timestamps alongside IDs]' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'*::ids -- ID(s) to sort (reads from stdin if omitted):' \
&& ret=0
;;
(info)
_arguments "${_arguments_options[@]}" : \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help]' \
'--help[Print help]' \
'::id_type -- ID type to get information about (list all if omitted):(uuid uuidv1 uuidv3 uuidv4 uuidv5 uuidv6 uuidv7 uuid-nil uuid-max ulid nanoid ksuid snowflake objectid typeid xid cuid cuid2 tsid shortuuid ean13 isbn13 isbn10 isin ean8 upca issn ismn isni gtin14 asin)' \
&& ret=0
;;
(completions)
_arguments "${_arguments_options[@]}" : \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help]' \
'--help[Print help]' \
':shell -- Shell to generate completions for:(bash elvish fish powershell zsh)' \
&& ret=0
;;
(manpage)
_arguments "${_arguments_options[@]}" : \
'-o+[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'--output=[Output format (json, yaml, toml)]:FORMAT:(json yaml toml)' \
'-j[Output in JSON format (shorthand for --format json)]' \
'--json[Output in JSON format (shorthand for --format json)]' \
'-p[Pretty print JSON output]' \
'--pretty[Pretty print JSON output]' \
'--no-color[Disable colored output]' \
'-h[Print help]' \
'--help[Print help]' \
'::dir -- Directory to write man pages to (prints to stdout if omitted):_files -/' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
":: :_idt__help_commands" \
"*::: :->help" \
&& ret=0

    case $state in
    (help)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:idt-help-command-$line[1]:"
        case $line[1] in
            (gen)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(inspect)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(convert)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(validate)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(compare)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(sort)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(info)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(completions)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(manpage)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
        esac
    ;;
esac
;;
        esac
    ;;
esac
}

(( $+functions[_idt_commands] )) ||
_idt_commands() {
    local commands; commands=(
'gen:Generate new IDs' \
'g:Generate new IDs' \
'inspect:Analyze and decode ID(s)' \
'i:Analyze and decode ID(s)' \
'convert:Convert between formats' \
'c:Convert between formats' \
'validate:Check if input is a valid ID' \
'v:Check if input is a valid ID' \
'compare:Compare two or more IDs' \
'sort:Sort IDs by their embedded timestamps' \
's:Sort IDs by their embedded timestamps' \
'info:Show information about ID types' \
'completions:Generate shell completion scripts' \
'manpage:Generate man pages' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'idt commands' commands "$@"
}
(( $+functions[_idt__compare_commands] )) ||
_idt__compare_commands() {
    local commands; commands=()
    _describe -t commands 'idt compare commands' commands "$@"
}
(( $+functions[_idt__completions_commands] )) ||
_idt__completions_commands() {
    local commands; commands=()
    _describe -t commands 'idt completions commands' commands "$@"
}
(( $+functions[_idt__convert_commands] )) ||
_idt__convert_commands() {
    local commands; commands=()
    _describe -t commands 'idt convert commands' commands "$@"
}
(( $+functions[_idt__gen_commands] )) ||
_idt__gen_commands() {
    local commands; commands=()
    _describe -t commands 'idt gen commands' commands "$@"
}
(( $+functions[_idt__help_commands] )) ||
_idt__help_commands() {
    local commands; commands=(
'gen:Generate new IDs' \
'inspect:Analyze and decode ID(s)' \
'convert:Convert between formats' \
'validate:Check if input is a valid ID' \
'compare:Compare two or more IDs' \
'sort:Sort IDs by their embedded timestamps' \
'info:Show information about ID types' \
'completions:Generate shell completion scripts' \
'manpage:Generate man pages' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'idt help commands' commands "$@"
}
(( $+functions[_idt__help__compare_commands] )) ||
_idt__help__compare_commands() {
    local commands; commands=()
    _describe -t commands 'idt help compare commands' commands "$@"
}
(( $+functions[_idt__help__completions_commands] )) ||
_idt__help__completions_commands() {
    local commands; commands=()
    _describe -t commands 'idt help completions commands' commands "$@"
}
(( $+functions[_idt__help__convert_commands] )) ||
_idt__help__convert_commands() {
    local commands; commands=()
    _describe -t commands 'idt help convert commands' commands "$@"
}
(( $+functions[_idt__help__gen_commands] )) ||
_idt__help__gen_commands() {
    local commands; commands=()
    _describe -t commands 'idt help gen commands' commands "$@"
}
(( $+functions[_idt__help__help_commands] )) ||
_idt__help__help_commands() {
    local commands; commands=()
    _describe -t commands 'idt help help commands' commands "$@"
}
(( $+functions[_idt__help__info_commands] )) ||
_idt__help__info_commands() {
    local commands; commands=()
    _describe -t commands 'idt help info commands' commands "$@"
}
(( $+functions[_idt__help__inspect_commands] )) ||
_idt__help__inspect_commands() {
    local commands; commands=()
    _describe -t commands 'idt help inspect commands' commands "$@"
}
(( $+functions[_idt__help__manpage_commands] )) ||
_idt__help__manpage_commands() {
    local commands; commands=()
    _describe -t commands 'idt help manpage commands' commands "$@"
}
(( $+functions[_idt__help__sort_commands] )) ||
_idt__help__sort_commands() {
    local commands; commands=()
    _describe -t commands 'idt help sort commands' commands "$@"
}
(( $+functions[_idt__help__validate_commands] )) ||
_idt__help__validate_commands() {
    local commands; commands=()
    _describe -t commands 'idt help validate commands' commands "$@"
}
(( $+functions[_idt__info_commands] )) ||
_idt__info_commands() {
    local commands; commands=()
    _describe -t commands 'idt info commands' commands "$@"
}
(( $+functions[_idt__inspect_commands] )) ||
_idt__inspect_commands() {
    local commands; commands=()
    _describe -t commands 'idt inspect commands' commands "$@"
}
(( $+functions[_idt__manpage_commands] )) ||
_idt__manpage_commands() {
    local commands; commands=()
    _describe -t commands 'idt manpage commands' commands "$@"
}
(( $+functions[_idt__sort_commands] )) ||
_idt__sort_commands() {
    local commands; commands=()
    _describe -t commands 'idt sort commands' commands "$@"
}
(( $+functions[_idt__validate_commands] )) ||
_idt__validate_commands() {
    local commands; commands=()
    _describe -t commands 'idt validate commands' commands "$@"
}

if [ "$funcstack[1]" = "_idt" ]; then
    _idt "$@"
else
    compdef _idt idt
fi
