#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[@]}" \
'--home=[Sets the home directory to use]' \
'-m+[Sets the realm and mapping to use]' \
'--mapping=[Sets the realm and mapping to use]' \
'-p+[Sets the network policy to use]' \
'--policy=[Sets the network policy to use]' \
'*--known-notation=[The notation name is considered known. This is used when validating signatures. Signatures that have unknown notations with the critical bit set are considered invalid.]' \
'-f[Overwrite existing files]' \
'--force[Overwrite 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+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'-n+[The number of valid signatures required.  Default: 0]' \
'--signatures=[The number of valid signatures required.  Default: 0]' \
'*--sender-cert-file=[The sender'\''s certificate verify signatures with, given as a file (can be given multiple times)]' \
'*--secret-key-file=[Secret key to decrypt with, given as a file (can be given multiple times)]' \
'--dump-session-key[Prints the session key to stderr]' \
'--dump[Print a packet dump to stderr]' \
'-x[Print a hexdump (implies --dump)]' \
'--hex[Print a hexdump (implies --dump)]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Sets the input file to use:_files' \
&& ret=0
;;
(encrypt)
_arguments "${_arguments_options[@]}" \
'-o+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'*-r+[Recipient to encrypt for (can be given multiple times)]' \
'*--recipient=[Recipient to encrypt for (can be given multiple times)]' \
'*--recipients-cert-file=[Recipients to encrypt for, given as a file (can be given multiple times)]' \
'*--signer-key-file=[Secret key to sign with, given as a file (can be given multiple times)]' \
'--mode=[Selects what kind of keys are considered for encryption.  Transport select subkeys marked as suitable for transport encryption, rest selects those for encrypting data at rest, and all selects all encryption-capable subkeys]: :(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[Don'\''t ASCII-armor encode the OpenPGP data]' \
'--binary[Don'\''t ASCII-armor encode the OpenPGP data]' \
'*-s[Encrypt with a password (can be given multiple times)]' \
'*--symmetric[Encrypt with a password (can be given multiple times)]' \
'--use-expired-subkey[If a certificate has only expired encryption-capable subkeys, fall back to using the one that expired last]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Sets the input file to use:_files' \
&& ret=0
;;
(sign)
_arguments "${_arguments_options[@]}" \
'-o+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'*--secret-key-file=[Secret key to sign with, given as a file (can be given multiple times)]' \
'-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[Don'\''t ASCII-armor encode the OpenPGP data]' \
'--binary[Don'\''t ASCII-armor encode the OpenPGP data]' \
'--detached[Create a detached signature]' \
'(-n --notarize)-a[Append signature to existing signature]' \
'(-n --notarize)--append[Append 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 -- Sets the input file to use:_files' \
&& ret=0
;;
(verify)
_arguments "${_arguments_options[@]}" \
'-o+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'--detached=[Verifies a detached signature]' \
'-n+[The number of valid signatures required.  Default: 0]' \
'--signatures=[The number of valid signatures required.  Default: 0]' \
'*--sender-cert-file=[The sender'\''s certificate verify signatures with, given as a file (can be given multiple times)]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Sets the input file to use:_files' \
&& ret=0
;;
(enarmor)
_arguments "${_arguments_options[@]}" \
'-o+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'--kind=[Selects the kind of header line to produce]: :(message publickey secretkey signature file)' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Sets the input file to use:_files' \
&& ret=0
;;
(dearmor)
_arguments "${_arguments_options[@]}" \
'-o+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Sets the input file to use:_files' \
&& ret=0
;;
(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+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Sets the input file to use:_files' \
&& ret=0
;;
(encode-sender)
_arguments "${_arguments_options[@]}" \
'-o+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'--address=[Select userid to use.  \[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 -- Sets the input file to use:_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
;;
(inspect)
_arguments "${_arguments_options[@]}" \
'--keygrips[Print keygrips of keys and subkeys]' \
'--certifications[Print third-party certifications]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Sets the input file to use:_files' \
&& ret=0
;;
(keyserver)
_arguments "${_arguments_options[@]}" \
'-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+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'-B[Don'\''t ASCII-armor encode the OpenPGP data]' \
'--binary[Don'\''t ASCII-armor encode the OpenPGP data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':query -- Fingerprint, KeyID, or email address of the cert(s) to retrieve:_files' \
&& ret=0
;;
(send)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Sets the input file to use:_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
;;
(mapping)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
":: :_sq__mapping_commands" \
"*::: :->mapping" \
&& ret=0
case $state in
    (mapping)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sq-mapping-command-$line[1]:"
        case $line[1] in
            (list)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(add)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':label -- Label to use:_files' \
':fingerprint -- Key to add:_files' \
&& ret=0
;;
(import)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':label -- Label to use:_files' \
'::input -- Sets the input file to use:_files' \
&& ret=0
;;
(export)
_arguments "${_arguments_options[@]}" \
'-o+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'-B[Don'\''t ASCII-armor encode the OpenPGP data]' \
'--binary[Don'\''t ASCII-armor encode the OpenPGP data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':label -- Label to use:_files' \
&& ret=0
;;
(delete)
_arguments "${_arguments_options[@]}" \
'--the-mapping[Delete the selected mapping (change with --mapping)]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::label -- Delete binding with this label:_files' \
&& ret=0
;;
(stats)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':label -- Label to use:_files' \
&& ret=0
;;
(log)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::label -- List messages related to this label:_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
;;
(list)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
":: :_sq__list_commands" \
"*::: :->list" \
&& ret=0
case $state in
    (list)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:sq-list-command-$line[1]:"
        case $line[1] in
            (mappings)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::prefix -- List only mappings with the given realm prefix:_files' \
&& ret=0
;;
(bindings)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::prefix -- List only bindings from mappings with the given realm prefix:_files' \
&& ret=0
;;
(keys)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(log)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& 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
;;
(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+[Add userid to the key (can be given multiple times)]' \
'*--userid=[Add userid to the key (can be given multiple times)]' \
'-c+[Cryptographic algorithms used for the key.]: :(rsa3k rsa4k cv25519)' \
'--cipher-suite=[Cryptographic algorithms used for the key.]: :(rsa3k rsa4k cv25519)' \
'--expires=[Absolute time When the key should expire, or '\''never'\''.]' \
'--expires-in=[Relative time when the key should expire.  Either '\''N\[ymwd\]'\'', for N years, months, weeks, or days, or '\''never'\''.]' \
'--can-encrypt=[The key has an encryption-capable subkey (default: universal)]: :(transport storage universal)' \
'-e+[Exports the key instead of saving it in the store]' \
'--export=[Exports the key instead of saving it in the store]' \
'--rev-cert=[Sets the output file for the revocation certificate. Default is <OUTFILE>.rev, mandatory if OUTFILE is '\''-'\''.]' \
'--with-password[Prompt for a password to protect the generated key with.]' \
'--can-sign[The key has a signing-capable subkey (default)]' \
'--cannot-sign[The key will not be able to sign data]' \
'--cannot-encrypt[The key will not be able to encrypt data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& 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
;;
(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+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'--session-key=[Session key to decrypt encryption containers]' \
'--mpis[Print MPIs]' \
'-x[Print a hexdump]' \
'--hex[Print a hexdump]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Sets the input file to use:_files' \
&& ret=0
;;
(decrypt)
_arguments "${_arguments_options[@]}" \
'-o+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'*--secret-key-file=[Secret key to decrypt with, given as a file (can be given multiple times)]' \
'-B[Don'\''t ASCII-armor encode the OpenPGP data]' \
'--binary[Don'\''t ASCII-armor encode the OpenPGP 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 -- Sets the input file to use:_files' \
&& ret=0
;;
(split)
_arguments "${_arguments_options[@]}" \
'-p+[Sets the prefix to use for output files (defaults to the input filename with a dash, or '\''output'\'')]' \
'--prefix=[Sets the prefix to use for output files (defaults to the input filename with a dash, or '\''output'\'')]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::input -- Sets the input file to use:_files' \
&& ret=0
;;
(join)
_arguments "${_arguments_options[@]}" \
'-o+[Sets the output file to use]' \
'--output=[Sets the output file to use]' \
'--kind=[Selects the kind of header line to produce]: :(message publickey secretkey signature file)' \
'-B[Don'\''t ASCII-armor encode the OpenPGP data]' \
'--binary[Don'\''t ASCII-armor encode the OpenPGP data]' \
'-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
;;
(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[@]}" \
'-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 -- The email address from which to obtain the WKD URI.:_files' \
&& ret=0
;;
(get)
_arguments "${_arguments_options[@]}" \
'-B[Don'\''t ASCII-armor encode the OpenPGP data]' \
'--binary[Don'\''t ASCII-armor encode the OpenPGP data]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':input -- The email address from which to obtain the Cert from a WKD.:_files' \
&& ret=0
;;
(generate)
_arguments "${_arguments_options[@]}" \
'-d[Use the direct method. \[default: advanced method\]]' \
'--direct_method[Use the direct method. \[default: advanced method\]]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':base_directory -- The location to write the WKD to. This must be the directory the webserver is serving the '.well-known' directory from.:_files' \
':domain -- The domain for the WKD.:_files' \
'::input -- The keyring file with the keys to add 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
;;
(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 an OpenPGP message" \
"encrypt:Encrypts a message" \
"sign:Signs a message" \
"verify:Verifies a message" \
"enarmor:Applies ASCII Armor to a file" \
"dearmor:Removes ASCII Armor from a file" \
"autocrypt:Autocrypt support" \
"inspect:Inspects a sequence of OpenPGP packets" \
"keyserver:Interacts with keyservers" \
"mapping:Interacts with key mappings" \
"list:Lists key mappings and known keys" \
"key:Manipulates keys" \
"packet:OpenPGP Packet manipulation" \
"wkd:Interacts with Web Key Directories" \
"help:Prints this message or the help of the given subcommand(s)" \
    )
    _describe -t commands 'sq commands' commands "$@"
}
(( $+functions[_sq__mapping__add_commands] )) ||
_sq__mapping__add_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq mapping add commands' commands "$@"
}
(( $+functions[_sq__autocrypt_commands] )) ||
_sq__autocrypt_commands() {
    local commands; commands=(
        "decode:Converts Autocrypt-encoded keys to OpenPGP Certificates" \
"encode-sender:Encodes the sender's OpenPGP Certificates 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__list__bindings_commands] )) ||
_sq__list__bindings_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq list bindings 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__mapping__delete_commands] )) ||
_sq__mapping__delete_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq mapping delete commands' commands "$@"
}
(( $+functions[_sq__packet__dump_commands] )) ||
_sq__packet__dump_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq packet dump commands' commands "$@"
}
(( $+functions[_sq__enarmor_commands] )) ||
_sq__enarmor_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq enarmor 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__mapping__export_commands] )) ||
_sq__mapping__export_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq mapping export 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__keyserver__help_commands] )) ||
_sq__keyserver__help_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq keyserver help commands' commands "$@"
}
(( $+functions[_sq__list__help_commands] )) ||
_sq__list__help_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq list help commands' commands "$@"
}
(( $+functions[_sq__mapping__help_commands] )) ||
_sq__mapping__help_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq mapping 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__mapping__import_commands] )) ||
_sq__mapping__import_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq mapping import commands' commands "$@"
}
(( $+functions[_sq__inspect_commands] )) ||
_sq__inspect_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq inspect 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" \
"help:Prints this message or the help of the given subcommand(s)" \
    )
    _describe -t commands 'sq key commands' commands "$@"
}
(( $+functions[_sq__list__keys_commands] )) ||
_sq__list__keys_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq list keys 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__list_commands] )) ||
_sq__list_commands() {
    local commands; commands=(
        "mappings:Lists key mappings" \
"bindings:Lists all bindings in all key mappings" \
"keys:Lists all keys in the common key pool" \
"log:Lists the server log" \
"help:Prints this message or the help of the given subcommand(s)" \
    )
    _describe -t commands 'sq list commands' commands "$@"
}
(( $+functions[_sq__mapping__list_commands] )) ||
_sq__mapping__list_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq mapping list commands' commands "$@"
}
(( $+functions[_sq__list__log_commands] )) ||
_sq__list__log_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq list log commands' commands "$@"
}
(( $+functions[_sq__mapping__log_commands] )) ||
_sq__mapping__log_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq mapping log commands' commands "$@"
}
(( $+functions[_sq__mapping_commands] )) ||
_sq__mapping_commands() {
    local commands; commands=(
        "list:Lists keys in the mapping" \
"add:Add a key identified by fingerprint" \
"import:Imports a key" \
"export:Exports a key" \
"delete:Deletes bindings or mappings" \
"stats:Get stats for the given label" \
"log:Lists the keystore log" \
"help:Prints this message or the help of the given subcommand(s)" \
    )
    _describe -t commands 'sq mapping commands' commands "$@"
}
(( $+functions[_sq__list__mappings_commands] )) ||
_sq__list__mappings_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq list mappings commands' commands "$@"
}
(( $+functions[_sq__packet_commands] )) ||
_sq__packet_commands() {
    local commands; commands=(
        "dump:Lists OpenPGP packets" \
"decrypt:Decrypts an OpenPGP message, dumping the content of the encryption container without further processing" \
"split:Splits a message into OpenPGP packets" \
"join:Joins OpenPGP 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__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__packet__split_commands] )) ||
_sq__packet__split_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq packet split commands' commands "$@"
}
(( $+functions[_sq__mapping__stats_commands] )) ||
_sq__mapping__stats_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'sq mapping stats 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:Writes to the standard output the Cert retrieved from a Web Key Directory, given an email address" \
"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 "$@"