// Code generated by gobind. DO NOT EDIT.

// Java class io.nekohasekai.libbox.CommandClient is a proxy for talking to a Go program.
//
//   autogenerated by gobind -lang=java -javapkg=io.nekohasekai github.com/sagernet/sing-box/experimental/libbox
package io.nekohasekai.libbox;

import go.Seq;

public final class CommandClient implements Seq.Proxy {
	static { Libbox.touch(); }
	
	public final int refnum;
	
	@Override public final int incRefnum() {
	      Seq.incGoRef(refnum, this);
	      return refnum;
	}
	
	public CommandClient(CommandClientHandler handler, CommandClientOptions options) {
		this.refnum = __NewCommandClient(handler, options);
		Seq.trackGoRef(refnum, this);
	}
	
	private static native int __NewCommandClient(CommandClientHandler handler, CommandClientOptions options);
	
	CommandClient(int refnum) { this.refnum = refnum; Seq.trackGoRef(refnum, this); }
	
	public native void closeConnections() throws Exception;
	public native void connect() throws Exception;
	public native void disconnect() throws Exception;
	public native SystemProxyStatus getSystemProxyStatus() throws Exception;
	public native void selectOutbound(String groupTag, String outboundTag) throws Exception;
	public native void serviceClose() throws Exception;
	public native void serviceReload() throws Exception;
	public native void setClashMode(String newMode) throws Exception;
	public native void setGroupExpand(String groupTag, boolean isExpand) throws Exception;
	public native void setSystemProxyEnabled(boolean isEnabled) throws Exception;
	public native void urlTest(String groupTag) throws Exception;
	@Override public boolean equals(Object o) {
		if (o == null || !(o instanceof CommandClient)) {
		    return false;
		}
		CommandClient that = (CommandClient)o;
		return true;
	}
	
	@Override public int hashCode() {
	    return java.util.Arrays.hashCode(new Object[] {});
	}
	
	@Override public String toString() {
		StringBuilder b = new StringBuilder();
		b.append("CommandClient").append("{");
		return b.append("}").toString();
	}
}

