#compdef sq

autoload -U is-at-least

_sq() {
    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[@]}" \
'*--known-notation=[Adds NOTATION to the list of known notations]' \
'-f[Overwrites existing files]' \
'--force[Overwrites existing files]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
":: :_sq_commands" \
"*::: :->sq" \
&& ret=0
    case $state in
    (sq)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sq-command-$line[1]:"
        case $line[1] in
            (decrypt)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'-n+[Sets the threshold of valid signatures to N]' \
'--signatures=[Sets the threshold of valid signatures to N]' \
'*--signer-cert=[Verifies signatures with CERT]' \
'*--recipient-key=[Decrypts with KEY]' \
'--dump-session-key[Prints the session key to stderr]' \
'--dump[Prints a packet dump to stderr]' \
'-x[Prints a hexdump (implies --dump)]' \
'--hex[Prints a hexdump (implies --dump)]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(encrypt)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'*--recipient-cert=[Encrypts for all recipients in CERT-RING]' \
'*--signer-key=[Signs the message with KEY]' \
'--mode=[Selects what kind of keys are considered for encryption.]: :(transport rest all)' \
'--compression=[Selects compression scheme to use]: :(none pad zip zlib bzip2)' \
'-t+[Chooses keys valid at the specified time and sets the signature'\''s creation time]' \
'--time=[Chooses keys valid at the specified time and sets the signature'\''s creation time]' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'*-s[Adds a password to encrypt with]' \
'*--symmetric[Adds a password to encrypt with]' \
'--use-expired-subkey[Falls back to expired encryption subkeys]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(sign)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'(-a --append --detached --cleartext-signature -n --notarize --signer-key -t --time)--merge=[Merges signatures from the input and SIGNED-MESSAGE]' \
'*--signer-key=[Signs using KEY]' \
'-t+[Chooses keys valid at the specified time and sets the signature'\''s creation time]' \
'--time=[Chooses keys valid at the specified time and sets the signature'\''s creation time]' \
'(--merge)*--notation=[Adds a notation to the certification.]' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'--detached[Creates a detached signature]' \
'(--detached -a --append -n --notarize -B --binary)--cleartext-signature[Creates a cleartext signature]' \
'(-n --notarize)-a[Appends a signature to existing signature]' \
'(-n --notarize)--append[Appends a signature to existing signature]' \
'(-a --append)-n[Signs a message and all existing signatures]' \
'(-a --append)--notarize[Signs a message and all existing signatures]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(verify)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'--detached=[Verifies a detached signature]' \
'-n+[Sets the threshold of valid signatures to N]' \
'--signatures=[Sets the threshold of valid signatures to N]' \
'*--signer-cert=[Verifies signatures with CERT]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(armor)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'--label=[Selects the kind of armor header]: :(auto message cert key sig file)' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(dearmor)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(inspect)
_arguments "${_arguments_options[@]}" \
'--certifications[Prints third-party certifications]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(key)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
":: :_sq__key_commands" \
"*::: :->key" \
&& ret=0
case $state in
    (key)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sq-key-command-$line[1]:"
        case $line[1] in
            (generate)
_arguments "${_arguments_options[@]}" \
'*-u+[Adds a userid to the key]' \
'*--userid=[Adds a userid to the key]' \
'-c+[Selects the cryptographic algorithms for the key]: :(rsa3k rsa4k cv25519)' \
'--cipher-suite=[Selects the cryptographic algorithms for the key]: :(rsa3k rsa4k cv25519)' \
'--expires=[Makes the key expire at TIME (as ISO 8601)]' \
'--expires-in=[Makes the key expire after DURATION (as N\[ymwd\]) \[default: 3y\]]' \
'--can-encrypt=[Adds an encryption-capable subkey \[default: universal\]]: :(transport storage universal)' \
'-e+[Writes the key to OUTFILE]' \
'--export=[Writes the key to OUTFILE]' \
'--rev-cert=[Writes the revocation certificate to FILE]' \
'--with-password[Protects the key with a password]' \
'--can-sign[Adds a signing-capable subkey (default)]' \
'--cannot-sign[Adds no signing-capable subkey]' \
'--cannot-encrypt[Adds no encryption-capable subkey]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(password)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'--clear[Emit a key with unencrypted secrets]' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::key -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(extract-cert)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(adopt)
_arguments "${_arguments_options[@]}" \
'*-r+[Supplies keys for use in --key.]' \
'*--keyring=[Supplies keys for use in --key.]' \
'*-k+[Adds the key or subkey KEY to the TARGET-KEY]' \
'*--key=[Adds the key or subkey KEY to the TARGET-KEY]' \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'--allow-broken-crypto[Allows adopting keys from certificates using broken cryptography]' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::certificate -- Adds keys to TARGET-KEY:_files' \
&& ret=0
;;
(attest-certifications)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'(--all)--none[Removes all prior attestations]' \
'(--none)--all[Attests to all certifications \[default\]]' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::key -- Changes attestations on KEY:_files' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
        esac
    ;;
esac
;;
(keyring)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
":: :_sq__keyring_commands" \
"*::: :->keyring" \
&& ret=0
case $state in
    (keyring)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sq-keyring-command-$line[1]:"
        case $line[1] in
            (filter)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'*--userid=[Matches on USERID]' \
'*--name=[Matches on NAME]' \
'*--email=[Matches on email ADDRESS]' \
'*--domain=[Matches on email domain FQDN]' \
'-P[Removes certificate components not matching the filter]' \
'--prune-certs[Removes certificate components not matching the filter]' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'--to-cert[Converts any keys in the input to certificates.  Converting a key to a certificate removes secret key material from the key thereby turning it into a certificate.]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(join)
_arguments "${_arguments_options[@]}" \
'-o+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'-B[Don'\''t ASCII-armor the keyring]' \
'--binary[Don'\''t ASCII-armor the keyring]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Sets the input files to use:_files' \
&& ret=0
;;
(merge)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE:_files' \
&& ret=0
;;
(list)
_arguments "${_arguments_options[@]}" \
'--all-userids[Lists all user ids]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(split)
_arguments "${_arguments_options[@]}" \
'-p+[Writes to files with prefix FILE \[defaults to the input filename with a dash, or "output" if keyring is read from stdin\]]' \
'--prefix=[Writes to files with prefix FILE \[defaults to the input filename with a dash, or "output" if keyring is read from stdin\]]' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
        esac
    ;;
esac
;;
(certify)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'-d+[Sets the trust depth]' \
'--depth=[Sets the trust depth]' \
'-a+[Sets the amount of trust]' \
'--amount=[Sets the amount of trust]' \
'*-r+[Adds a regular expression to constrain what a trusted introducer can certify]' \
'*--regex=[Adds a regular expression to constrain what a trusted introducer can certify]' \
'*--notation=[Adds a notation to the certification.]' \
'--expires=[Makes the certification expire at TIME (as ISO 8601)]' \
'--expires-in=[Makes the certification expire after DURATION (as N\[ymwd\]) \[default: 5y\]]' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'-l[Makes the certification a local certification]' \
'--local[Makes the certification a local certification]' \
'--non-revocable[Marks the certification as being non-revocable]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':certifier -- Creates the certificate using CERTIFIER-KEY.:_files' \
':certificate -- Certifies CERTIFICATE.:_files' \
':userid -- Certifies USERID for CERTIFICATE.:_files' \
&& ret=0
;;
(packet)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
":: :_sq__packet_commands" \
"*::: :->packet" \
&& ret=0
case $state in
    (packet)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sq-packet-command-$line[1]:"
        case $line[1] in
            (dump)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'--session-key=[Decrypts an encrypted message using SESSION-KEY]' \
'--mpis[Prints cryptographic artifacts]' \
'-x[Prints a hexdump]' \
'--hex[Prints a hexdump]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(decrypt)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'*--recipient-key=[Decrypts the message with KEY]' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'--dump-session-key[Prints the session key to stderr]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(split)
_arguments "${_arguments_options[@]}" \
'-p+[Writes to files with PREFIX \[defaults: FILE a dash, or "output" if read from stdin)]' \
'--prefix=[Writes to files with PREFIX \[defaults: FILE a dash, or "output" if read from stdin)]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(join)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'(-B --binary)--label=[Selects the kind of armor header]: :(auto message cert key sig file)' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
        esac
    ;;
esac
;;
(keyserver)
_arguments "${_arguments_options[@]}" \
'-p+[Sets the network policy to use]: :(offline anonymized encrypted insecure)' \
'--policy=[Sets the network policy to use]: :(offline anonymized encrypted insecure)' \
'-s+[Sets the keyserver to use]' \
'--server=[Sets the keyserver to use]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
":: :_sq__keyserver_commands" \
"*::: :->keyserver" \
&& ret=0
case $state in
    (keyserver)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sq-keyserver-command-$line[1]:"
        case $line[1] in
            (get)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':query -- Retrieve certificate(s) using QUERY. This may be a fingerprint, a KeyID, or an email address.:_files' \
&& ret=0
;;
(send)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
        esac
    ;;
esac
;;
(wkd)
_arguments "${_arguments_options[@]}" \
'-p+[Sets the network policy to use]: :(offline anonymized encrypted insecure)' \
'--policy=[Sets the network policy to use]: :(offline anonymized encrypted insecure)' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
":: :_sq__wkd_commands" \
"*::: :->wkd" \
&& ret=0
case $state in
    (wkd)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sq-wkd-command-$line[1]:"
        case $line[1] in
            (url)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':input -- Queries for ADDRESS:_files' \
&& ret=0
;;
(get)
_arguments "${_arguments_options[@]}" \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':input -- Queries a cert for ADDRESS:_files' \
&& ret=0
;;
(generate)
_arguments "${_arguments_options[@]}" \
'-d[Uses the direct method \[default: advanced method\]]' \
'--direct-method[Uses the direct method \[default: advanced method\]]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':base_directory -- Writes the WKD to WEB-ROOT:_files' \
':domain -- Generates a WKD for FQDN:_files' \
'::input -- Adds certificates from CERT-RING to the WKD:_files' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
        esac
    ;;
esac
;;
(autocrypt)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
":: :_sq__autocrypt_commands" \
"*::: :->autocrypt" \
&& ret=0
case $state in
    (autocrypt)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sq-autocrypt-command-$line[1]:"
        case $line[1] in
            (decode)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'-B[Emits binary data]' \
'--binary[Emits binary data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(encode-sender)
_arguments "${_arguments_options[@]}" \
'-o+[Writes to FILE or stdout if omitted]' \
'--output=[Writes to FILE or stdout if omitted]' \
'--email=[Sets the address \[default: primary userid\]]' \
'--prefer-encrypt=[Sets the prefer-encrypt attribute]: :(nopreference mutual)' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Reads from FILE or stdin if omitted:_files' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
        esac
    ;;
esac
;;
(help)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
        esac
    ;;
esac
}

(( $+functions[_sq_commands] )) ||
_sq_commands() {
    local commands; commands=(
        "decrypt:Decrypts a message" \
"encrypt:Encrypts a message" \
"sign:Signs messages or data files" \
"verify:Verifies signed messages or detached signatures" \
"armor:Converts binary to ASCII" \
"dearmor:Converts ASCII to binary" \
"inspect:Inspects data, like file(1)" \
"key:Manages keys" \
"keyring:Manages collections of keys or certs" \
"certify:Certifies a User ID for a Certificate" \
"packet:Low-level packet manipulation" \
"keyserver:Interacts with keyservers" \
"wkd:Interacts with Web Key Directories" \
"autocrypt:Communicates certificates using Autocrypt" \
"help:Prints this message or the help of the given subcommand(s)" \
    )
    _describe -t commands 'sq commands' commands "$@"
}
(( $+functions[_sq__key__adopt_commands] )) ||
_sq__key__adopt_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq key adopt commands' commands "$@"
}
(( $+functions[_sq__armor_commands] )) ||
_sq__armor_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq armor commands' commands "$@"
}
(( $+functions[_sq__key__attest-certifications_commands] )) ||
_sq__key__attest-certifications_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq key attest-certifications commands' commands "$@"
}
(( $+functions[_sq__autocrypt_commands] )) ||
_sq__autocrypt_commands() {
    local commands; commands=(
        "decode:Reads Autocrypt-encoded certificates" \
"encode-sender:Encodes a certificate into an Autocrypt header" \
"help:Prints this message or the help of the given subcommand(s)" \
    )
    _describe -t commands 'sq autocrypt commands' commands "$@"
}
(( $+functions[_sq__certify_commands] )) ||
_sq__certify_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq certify commands' commands "$@"
}
(( $+functions[_sq__dearmor_commands] )) ||
_sq__dearmor_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq dearmor commands' commands "$@"
}
(( $+functions[_sq__autocrypt__decode_commands] )) ||
_sq__autocrypt__decode_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq autocrypt decode commands' commands "$@"
}
(( $+functions[_sq__decrypt_commands] )) ||
_sq__decrypt_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq decrypt commands' commands "$@"
}
(( $+functions[_sq__packet__decrypt_commands] )) ||
_sq__packet__decrypt_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq packet decrypt commands' commands "$@"
}
(( $+functions[_sq__packet__dump_commands] )) ||
_sq__packet__dump_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq packet dump commands' commands "$@"
}
(( $+functions[_sq__autocrypt__encode-sender_commands] )) ||
_sq__autocrypt__encode-sender_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq autocrypt encode-sender commands' commands "$@"
}
(( $+functions[_sq__encrypt_commands] )) ||
_sq__encrypt_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq encrypt commands' commands "$@"
}
(( $+functions[_sq__key__extract-cert_commands] )) ||
_sq__key__extract-cert_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq key extract-cert commands' commands "$@"
}
(( $+functions[_sq__keyring__filter_commands] )) ||
_sq__keyring__filter_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq keyring filter commands' commands "$@"
}
(( $+functions[_sq__key__generate_commands] )) ||
_sq__key__generate_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq key generate commands' commands "$@"
}
(( $+functions[_sq__wkd__generate_commands] )) ||
_sq__wkd__generate_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq wkd generate commands' commands "$@"
}
(( $+functions[_sq__keyserver__get_commands] )) ||
_sq__keyserver__get_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq keyserver get commands' commands "$@"
}
(( $+functions[_sq__wkd__get_commands] )) ||
_sq__wkd__get_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq wkd get commands' commands "$@"
}
(( $+functions[_sq__autocrypt__help_commands] )) ||
_sq__autocrypt__help_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq autocrypt help commands' commands "$@"
}
(( $+functions[_sq__help_commands] )) ||
_sq__help_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq help commands' commands "$@"
}
(( $+functions[_sq__key__help_commands] )) ||
_sq__key__help_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq key help commands' commands "$@"
}
(( $+functions[_sq__keyring__help_commands] )) ||
_sq__keyring__help_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq keyring help commands' commands "$@"
}
(( $+functions[_sq__keyserver__help_commands] )) ||
_sq__keyserver__help_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq keyserver help commands' commands "$@"
}
(( $+functions[_sq__packet__help_commands] )) ||
_sq__packet__help_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq packet help commands' commands "$@"
}
(( $+functions[_sq__wkd__help_commands] )) ||
_sq__wkd__help_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq wkd help commands' commands "$@"
}
(( $+functions[_sq__inspect_commands] )) ||
_sq__inspect_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq inspect commands' commands "$@"
}
(( $+functions[_sq__keyring__join_commands] )) ||
_sq__keyring__join_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq keyring join commands' commands "$@"
}
(( $+functions[_sq__packet__join_commands] )) ||
_sq__packet__join_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq packet join commands' commands "$@"
}
(( $+functions[_sq__key_commands] )) ||
_sq__key_commands() {
    local commands; commands=(
        "generate:Generates a new key" \
"password:Changes password protecting secrets" \
"extract-cert:Converts a key to a cert" \
"adopt:Binds keys from one certificate to another" \
"attest-certifications:Attests to third-party certifications" \
"help:Prints this message or the help of the given subcommand(s)" \
    )
    _describe -t commands 'sq key commands' commands "$@"
}
(( $+functions[_sq__keyring_commands] )) ||
_sq__keyring_commands() {
    local commands; commands=(
        "filter:Joins keys into a keyring applying a filter" \
"join:Joins keys or keyrings into a single keyring" \
"merge:Merges keys or keyrings into a single keyring" \
"list:Lists keys in a keyring" \
"split:Splits a keyring into individual keys" \
"help:Prints this message or the help of the given subcommand(s)" \
    )
    _describe -t commands 'sq keyring commands' commands "$@"
}
(( $+functions[_sq__keyserver_commands] )) ||
_sq__keyserver_commands() {
    local commands; commands=(
        "get:Retrieves a key" \
"send:Sends a key" \
"help:Prints this message or the help of the given subcommand(s)" \
    )
    _describe -t commands 'sq keyserver commands' commands "$@"
}
(( $+functions[_sq__keyring__list_commands] )) ||
_sq__keyring__list_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq keyring list commands' commands "$@"
}
(( $+functions[_sq__keyring__merge_commands] )) ||
_sq__keyring__merge_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq keyring merge commands' commands "$@"
}
(( $+functions[_sq__packet_commands] )) ||
_sq__packet_commands() {
    local commands; commands=(
        "dump:Lists packets" \
"decrypt:Unwraps an encryption container" \
"split:Splits a message into packets" \
"join:Joins packets split across files" \
"help:Prints this message or the help of the given subcommand(s)" \
    )
    _describe -t commands 'sq packet commands' commands "$@"
}
(( $+functions[_sq__key__password_commands] )) ||
_sq__key__password_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq key password commands' commands "$@"
}
(( $+functions[_sq__keyserver__send_commands] )) ||
_sq__keyserver__send_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq keyserver send commands' commands "$@"
}
(( $+functions[_sq__sign_commands] )) ||
_sq__sign_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq sign commands' commands "$@"
}
(( $+functions[_sq__keyring__split_commands] )) ||
_sq__keyring__split_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq keyring split commands' commands "$@"
}
(( $+functions[_sq__packet__split_commands] )) ||
_sq__packet__split_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq packet split commands' commands "$@"
}
(( $+functions[_sq__wkd__url_commands] )) ||
_sq__wkd__url_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq wkd url commands' commands "$@"
}
(( $+functions[_sq__verify_commands] )) ||
_sq__verify_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq verify commands' commands "$@"
}
(( $+functions[_sq__wkd_commands] )) ||
_sq__wkd_commands() {
    local commands; commands=(
        "url:Prints the Web Key Directory URL of an email address." \
"get:Queries for certs using Web Key Directory" \
"generate:Generates a Web Key Directory for the given domain and keys.  If the WKD exists, the new keys will be inserted and it is updated and existing ones will be updated." \
"help:Prints this message or the help of the given subcommand(s)" \
    )
    _describe -t commands 'sq wkd commands' commands "$@"
}

_sq "$@"