# Print an optspec for argparse to handle cmd's options that are independent of any subcommand.
function __fish_easytier_cli_global_optspecs
	string join \n p/rpc-portal= v/verbose o/output= no-trunc i/instance-id= n/instance-name= h/help V/version
end

function __fish_easytier_cli_needs_command
	# Figure out if the current invocation already has a command.
	set -l cmd (commandline -opc)
	set -e cmd[1]
	argparse -s (__fish_easytier_cli_global_optspecs) -- $cmd 2>/dev/null
	or return
	if set -q argv[1]
		# Also print the command, so this can be used to figure out what it is.
		echo $argv[1]
		return 1
	end
	return 0
end

function __fish_easytier_cli_using_subcommand
	set -l cmd (__fish_easytier_cli_needs_command)
	test -z "$cmd"
	and return 1
	contains -- $cmd[1] $argv
end

complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -s p -l rpc-portal -d 'easytier-core rpc portal address' -r
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -s o -l output -d 'output format' -r -f -a "table\t''
json\t''"
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -s i -l instance-id -d 'the instance id' -r
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -s n -l instance-name -d 'the instance name' -r
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -s v -l verbose -d 'verbose output'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -l no-trunc -d 'disable column truncation'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -s V -l version -d 'Print version'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "peer" -d 'show peers info'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "connector" -d 'manage connectors'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "mapped-listener" -d 'manage mapped listeners'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "stun" -d 'do stun test'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "route" -d 'show route info'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "peer-center" -d 'show global peers info'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "vpn-portal" -d 'show vpn portal (wireguard) info'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "node" -d 'inspect self easytier-core status'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "service" -d 'manage easytier-core as a system service'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "proxy" -d 'show tcp/kcp proxy status'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "acl" -d 'show ACL rules statistics'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "port-forward" -d 'manage port forwarding'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "whitelist" -d 'manage TCP/UDP whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "stats" -d 'show statistics information'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "logger" -d 'manage logger configuration'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "credential" -d 'manage temporary credentials'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "gen-autocomplete" -d 'generate shell completions'
complete -c easytier-cli -n "__fish_easytier_cli_needs_command" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and not __fish_seen_subcommand_from list ipv6 list-foreign list-global-foreign help" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and not __fish_seen_subcommand_from list ipv6 list-foreign list-global-foreign help" -f -a "list" -d 'List connected peers'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and not __fish_seen_subcommand_from list ipv6 list-foreign list-global-foreign help" -f -a "ipv6" -d 'Show public IPv6 address information'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and not __fish_seen_subcommand_from list ipv6 list-foreign list-global-foreign help" -f -a "list-foreign" -d 'List foreign networks discovered by this instance'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and not __fish_seen_subcommand_from list ipv6 list-foreign list-global-foreign help" -f -a "list-global-foreign" -d 'List global foreign networks from the peer center'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and not __fish_seen_subcommand_from list ipv6 list-foreign list-global-foreign help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and __fish_seen_subcommand_from ipv6" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and __fish_seen_subcommand_from list-foreign" -l trusted-keys -d 'include trusted keys for each foreign network'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and __fish_seen_subcommand_from list-foreign" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and __fish_seen_subcommand_from list-global-foreign" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and __fish_seen_subcommand_from help" -f -a "list" -d 'List connected peers'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and __fish_seen_subcommand_from help" -f -a "ipv6" -d 'Show public IPv6 address information'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and __fish_seen_subcommand_from help" -f -a "list-foreign" -d 'List foreign networks discovered by this instance'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and __fish_seen_subcommand_from help" -f -a "list-global-foreign" -d 'List global foreign networks from the peer center'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and not __fish_seen_subcommand_from add remove list help" -s i -l ipv4 -d 'filter connectors by virtual IPv4 address' -r
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and not __fish_seen_subcommand_from add remove list help" -s p -l peers -d 'filter connectors by peer URL' -r
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and not __fish_seen_subcommand_from add remove list help" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and not __fish_seen_subcommand_from add remove list help" -f -a "add" -d 'Add a connector'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and not __fish_seen_subcommand_from add remove list help" -f -a "remove" -d 'Remove a connector'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and not __fish_seen_subcommand_from add remove list help" -f -a "list" -d 'List connectors'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and not __fish_seen_subcommand_from add remove list help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and __fish_seen_subcommand_from add" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and __fish_seen_subcommand_from remove" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and __fish_seen_subcommand_from help" -f -a "add" -d 'Add a connector'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and __fish_seen_subcommand_from help" -f -a "remove" -d 'Remove a connector'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and __fish_seen_subcommand_from help" -f -a "list" -d 'List connectors'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand connector; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand mapped-listener; and not __fish_seen_subcommand_from add remove list help" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand mapped-listener; and not __fish_seen_subcommand_from add remove list help" -f -a "add" -d 'Add Mapped Listerner'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand mapped-listener; and not __fish_seen_subcommand_from add remove list help" -f -a "remove" -d 'Remove Mapped Listener'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand mapped-listener; and not __fish_seen_subcommand_from add remove list help" -f -a "list" -d 'List Existing Mapped Listener'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand mapped-listener; and not __fish_seen_subcommand_from add remove list help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand mapped-listener; and __fish_seen_subcommand_from add" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand mapped-listener; and __fish_seen_subcommand_from remove" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand mapped-listener; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand mapped-listener; and __fish_seen_subcommand_from help" -f -a "add" -d 'Add Mapped Listerner'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand mapped-listener; and __fish_seen_subcommand_from help" -f -a "remove" -d 'Remove Mapped Listener'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand mapped-listener; and __fish_seen_subcommand_from help" -f -a "list" -d 'List Existing Mapped Listener'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand mapped-listener; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand stun" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand route; and not __fish_seen_subcommand_from list dump help" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand route; and not __fish_seen_subcommand_from list dump help" -f -a "list" -d 'List routes propagated by peers'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand route; and not __fish_seen_subcommand_from list dump help" -f -a "dump" -d 'Dump routes in CIDR format'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand route; and not __fish_seen_subcommand_from list dump help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand route; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand route; and __fish_seen_subcommand_from dump" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand route; and __fish_seen_subcommand_from help" -f -a "list" -d 'List routes propagated by peers'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand route; and __fish_seen_subcommand_from help" -f -a "dump" -d 'Dump routes in CIDR format'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand route; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand peer-center" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand vpn-portal" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand node; and not __fish_seen_subcommand_from info config help" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand node; and not __fish_seen_subcommand_from info config help" -f -a "info" -d 'show node info'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand node; and not __fish_seen_subcommand_from info config help" -f -a "config" -d 'show node config'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand node; and not __fish_seen_subcommand_from info config help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand node; and __fish_seen_subcommand_from info" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand node; and __fish_seen_subcommand_from config" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand node; and __fish_seen_subcommand_from help" -f -a "info" -d 'show node info'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand node; and __fish_seen_subcommand_from help" -f -a "config" -d 'show node config'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand node; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and not __fish_seen_subcommand_from install uninstall status start stop help" -s n -l name -d 'service name' -r
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and not __fish_seen_subcommand_from install uninstall status start stop help" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and not __fish_seen_subcommand_from install uninstall status start stop help" -f -a "install" -d 'register easytier-core as a system service'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and not __fish_seen_subcommand_from install uninstall status start stop help" -f -a "uninstall" -d 'unregister easytier-core system service'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and not __fish_seen_subcommand_from install uninstall status start stop help" -f -a "status" -d 'check easytier-core system service status'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and not __fish_seen_subcommand_from install uninstall status start stop help" -f -a "start" -d 'start easytier-core system service'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and not __fish_seen_subcommand_from install uninstall status start stop help" -f -a "stop" -d 'stop easytier-core system service'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and not __fish_seen_subcommand_from install uninstall status start stop help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from install" -l description -d 'service description' -r
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from install" -l display-name -d 'display name shown by the service manager' -r
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from install" -l disable-autostart -d 'whether to disable starting the service automatically on boot (true/false)' -r -f -a "true\t''
false\t''"
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from install" -l disable-restart-on-failure -d 'whether to disable automatic restart when the service fails (true/false)' -r -f -a "true\t''
false\t''"
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from install" -l core-path -d 'path to easytier-core binary' -r -F
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from install" -l service-work-dir -d 'working directory for the easytier-core service' -r -F
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from status" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from start" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from stop" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from help" -f -a "install" -d 'register easytier-core as a system service'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from help" -f -a "uninstall" -d 'unregister easytier-core system service'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from help" -f -a "status" -d 'check easytier-core system service status'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from help" -f -a "start" -d 'start easytier-core system service'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from help" -f -a "stop" -d 'stop easytier-core system service'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand service; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand proxy" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand acl; and not __fish_seen_subcommand_from stats help" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand acl; and not __fish_seen_subcommand_from stats help" -f -a "stats" -d 'Show ACL rule hit statistics'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand acl; and not __fish_seen_subcommand_from stats help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand acl; and __fish_seen_subcommand_from stats" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand acl; and __fish_seen_subcommand_from help" -f -a "stats" -d 'Show ACL rule hit statistics'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand acl; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand port-forward; and not __fish_seen_subcommand_from add remove list help" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand port-forward; and not __fish_seen_subcommand_from add remove list help" -f -a "add" -d 'Add port forward rule'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand port-forward; and not __fish_seen_subcommand_from add remove list help" -f -a "remove" -d 'Remove port forward rule'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand port-forward; and not __fish_seen_subcommand_from add remove list help" -f -a "list" -d 'List port forward rules'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand port-forward; and not __fish_seen_subcommand_from add remove list help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand port-forward; and __fish_seen_subcommand_from add" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand port-forward; and __fish_seen_subcommand_from remove" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand port-forward; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand port-forward; and __fish_seen_subcommand_from help" -f -a "add" -d 'Add port forward rule'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand port-forward; and __fish_seen_subcommand_from help" -f -a "remove" -d 'Remove port forward rule'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand port-forward; and __fish_seen_subcommand_from help" -f -a "list" -d 'List port forward rules'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand port-forward; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and not __fish_seen_subcommand_from set-tcp set-udp clear-tcp clear-udp show help" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and not __fish_seen_subcommand_from set-tcp set-udp clear-tcp clear-udp show help" -f -a "set-tcp" -d 'Set TCP port whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and not __fish_seen_subcommand_from set-tcp set-udp clear-tcp clear-udp show help" -f -a "set-udp" -d 'Set UDP port whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and not __fish_seen_subcommand_from set-tcp set-udp clear-tcp clear-udp show help" -f -a "clear-tcp" -d 'Clear TCP whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and not __fish_seen_subcommand_from set-tcp set-udp clear-tcp clear-udp show help" -f -a "clear-udp" -d 'Clear UDP whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and not __fish_seen_subcommand_from set-tcp set-udp clear-tcp clear-udp show help" -f -a "show" -d 'Show current whitelist configuration'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and not __fish_seen_subcommand_from set-tcp set-udp clear-tcp clear-udp show help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and __fish_seen_subcommand_from set-tcp" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and __fish_seen_subcommand_from set-udp" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and __fish_seen_subcommand_from clear-tcp" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and __fish_seen_subcommand_from clear-udp" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and __fish_seen_subcommand_from show" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and __fish_seen_subcommand_from help" -f -a "set-tcp" -d 'Set TCP port whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and __fish_seen_subcommand_from help" -f -a "set-udp" -d 'Set UDP port whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and __fish_seen_subcommand_from help" -f -a "clear-tcp" -d 'Clear TCP whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and __fish_seen_subcommand_from help" -f -a "clear-udp" -d 'Clear UDP whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and __fish_seen_subcommand_from help" -f -a "show" -d 'Show current whitelist configuration'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand whitelist; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand stats; and not __fish_seen_subcommand_from show prometheus help" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand stats; and not __fish_seen_subcommand_from show prometheus help" -f -a "show" -d 'Show general statistics'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand stats; and not __fish_seen_subcommand_from show prometheus help" -f -a "prometheus" -d 'Show statistics in Prometheus format'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand stats; and not __fish_seen_subcommand_from show prometheus help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand stats; and __fish_seen_subcommand_from show" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand stats; and __fish_seen_subcommand_from prometheus" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand stats; and __fish_seen_subcommand_from help" -f -a "show" -d 'Show general statistics'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand stats; and __fish_seen_subcommand_from help" -f -a "prometheus" -d 'Show statistics in Prometheus format'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand stats; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand logger; and not __fish_seen_subcommand_from get set help" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand logger; and not __fish_seen_subcommand_from get set help" -f -a "get" -d 'Get current logger configuration'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand logger; and not __fish_seen_subcommand_from get set help" -f -a "set" -d 'Set logger level'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand logger; and not __fish_seen_subcommand_from get set help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand logger; and __fish_seen_subcommand_from get" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand logger; and __fish_seen_subcommand_from set" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand logger; and __fish_seen_subcommand_from help" -f -a "get" -d 'Get current logger configuration'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand logger; and __fish_seen_subcommand_from help" -f -a "set" -d 'Set logger level'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand logger; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and not __fish_seen_subcommand_from generate revoke list help" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and not __fish_seen_subcommand_from generate revoke list help" -f -a "generate" -d 'Generate a new temporary credential'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and not __fish_seen_subcommand_from generate revoke list help" -f -a "revoke" -d 'Revoke a credential by its ID'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and not __fish_seen_subcommand_from generate revoke list help" -f -a "list" -d 'List all active credentials'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and not __fish_seen_subcommand_from generate revoke list help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and __fish_seen_subcommand_from generate" -l ttl -d 'TTL in seconds (required)' -r
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and __fish_seen_subcommand_from generate" -l credential-id -d 'custom credential ID, return existing credential if already generated' -r
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and __fish_seen_subcommand_from generate" -l groups -d 'ACL groups (comma-separated)' -r
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and __fish_seen_subcommand_from generate" -l allowed-proxy-cidrs -d 'allowed proxy CIDRs (comma-separated)' -r
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and __fish_seen_subcommand_from generate" -l reusable -d 'whether this credential may be reused by multiple peers concurrently' -r -f -a "true\t''
false\t''"
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and __fish_seen_subcommand_from generate" -l allow-relay -d 'allow relay through this credential node'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and __fish_seen_subcommand_from generate" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and __fish_seen_subcommand_from revoke" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and __fish_seen_subcommand_from help" -f -a "generate" -d 'Generate a new temporary credential'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and __fish_seen_subcommand_from help" -f -a "revoke" -d 'Revoke a credential by its ID'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and __fish_seen_subcommand_from help" -f -a "list" -d 'List all active credentials'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand credential; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand gen-autocomplete" -s h -l help -d 'Print help'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "peer" -d 'show peers info'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "connector" -d 'manage connectors'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "mapped-listener" -d 'manage mapped listeners'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "stun" -d 'do stun test'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "route" -d 'show route info'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "peer-center" -d 'show global peers info'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "vpn-portal" -d 'show vpn portal (wireguard) info'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "node" -d 'inspect self easytier-core status'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "service" -d 'manage easytier-core as a system service'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "proxy" -d 'show tcp/kcp proxy status'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "acl" -d 'show ACL rules statistics'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "port-forward" -d 'manage port forwarding'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "whitelist" -d 'manage TCP/UDP whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "stats" -d 'show statistics information'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "logger" -d 'manage logger configuration'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "credential" -d 'manage temporary credentials'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "gen-autocomplete" -d 'generate shell completions'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and not __fish_seen_subcommand_from peer connector mapped-listener stun route peer-center vpn-portal node service proxy acl port-forward whitelist stats logger credential gen-autocomplete help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from peer" -f -a "list" -d 'List connected peers'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from peer" -f -a "ipv6" -d 'Show public IPv6 address information'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from peer" -f -a "list-foreign" -d 'List foreign networks discovered by this instance'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from peer" -f -a "list-global-foreign" -d 'List global foreign networks from the peer center'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from connector" -f -a "add" -d 'Add a connector'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from connector" -f -a "remove" -d 'Remove a connector'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from connector" -f -a "list" -d 'List connectors'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from mapped-listener" -f -a "add" -d 'Add Mapped Listerner'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from mapped-listener" -f -a "remove" -d 'Remove Mapped Listener'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from mapped-listener" -f -a "list" -d 'List Existing Mapped Listener'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from route" -f -a "list" -d 'List routes propagated by peers'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from route" -f -a "dump" -d 'Dump routes in CIDR format'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from node" -f -a "info" -d 'show node info'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from node" -f -a "config" -d 'show node config'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from service" -f -a "install" -d 'register easytier-core as a system service'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from service" -f -a "uninstall" -d 'unregister easytier-core system service'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from service" -f -a "status" -d 'check easytier-core system service status'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from service" -f -a "start" -d 'start easytier-core system service'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from service" -f -a "stop" -d 'stop easytier-core system service'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from acl" -f -a "stats" -d 'Show ACL rule hit statistics'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from port-forward" -f -a "add" -d 'Add port forward rule'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from port-forward" -f -a "remove" -d 'Remove port forward rule'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from port-forward" -f -a "list" -d 'List port forward rules'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from whitelist" -f -a "set-tcp" -d 'Set TCP port whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from whitelist" -f -a "set-udp" -d 'Set UDP port whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from whitelist" -f -a "clear-tcp" -d 'Clear TCP whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from whitelist" -f -a "clear-udp" -d 'Clear UDP whitelist'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from whitelist" -f -a "show" -d 'Show current whitelist configuration'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from stats" -f -a "show" -d 'Show general statistics'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from stats" -f -a "prometheus" -d 'Show statistics in Prometheus format'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from logger" -f -a "get" -d 'Get current logger configuration'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from logger" -f -a "set" -d 'Set logger level'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from credential" -f -a "generate" -d 'Generate a new temporary credential'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from credential" -f -a "revoke" -d 'Revoke a credential by its ID'
complete -c easytier-cli -n "__fish_easytier_cli_using_subcommand help; and __fish_seen_subcommand_from credential" -f -a "list" -d 'List all active credentials'
