constructor(hostname, port = 22, username, authentication) {
		this.#hostname = hostname;
		this.#port = port;
		this.#username = username;
		this.#authenticationType = !!authentication.keyFile ? "key" : "password";
		this.#keyFile = authentication.keyFile;
		this.#passPhrase = authentication.passPhrase;
		this.#password = authentication.password;
		this.#base = Url.formate({
			protocol: "sftp:",
			hostname: this.#hostname,
			port: this.#port,
			username: this.#username,
			password: this.#password,
			query: {
				passPhrase: this.#passPhrase,
				keyFile: this.#keyFile,
			},
		});

		this.#connectionID = `${this.#username}@${this.#hostname}`;
	}
@param {String} hostname
@param {Number} port
@param {String} username
@param {{password?: String, passPhrase?: String, keyFile?: String}} authentication