#![forbid(unsafe_code)]
use crate::cli::SftpAction;
use crate::constants::SFTP_FALLBACK_BASENAME;
use crate::errors::SshCliError;
use crate::i18n::{self, Message};
use crate::output;
use crate::ssh::client::{SshClient, TransferResult};
use crate::ssh::sftp_path::{ensure_local_under, validate_entry_name};
use crate::ssh::sftp_session;
use crate::ssh::sftp_types::{SftpListEntry, SftpStat};
use crate::vps;
use std::path::{Path, PathBuf};
use std::time::Instant;
pub(crate) mod batch;
mod dispatch;
mod emit;
mod setup;
pub use dispatch::run_sftp;
pub(crate) use emit::{
designated_target, emit_fs_op, emit_list, emit_stat, emit_transfer, publish_target,
};
pub(crate) use setup::apply_sftp_options;
pub use setup::SftpOptions;
pub(crate) use setup::{connect_client, remote_str};