pub mod protocol;
pub mod sync;

#[cfg(feature = "async")]
pub mod r#async;

#[cfg(feature = "russh")]
pub mod russh;

pub use protocol::{
    Attributes, Directory, Error, File, Kind, OpenOptions, Result, TextHint,
    SSH_FILEXFER_ATTR_ACCESSTIME, SSH_FILEXFER_ATTR_ACL, SSH_FILEXFER_ATTR_ALLOCATION_SIZE,
    SSH_FILEXFER_ATTR_BITS, SSH_FILEXFER_ATTR_CREATETIME, SSH_FILEXFER_ATTR_CTIME,
    SSH_FILEXFER_ATTR_EXTENDED, SSH_FILEXFER_ATTR_LINK_COUNT, SSH_FILEXFER_ATTR_MIME_TYPE,
    SSH_FILEXFER_ATTR_MODIFYTIME, SSH_FILEXFER_ATTR_OWNERGROUP, SSH_FILEXFER_ATTR_PERMISSIONS,
    SSH_FILEXFER_ATTR_SIZE, SSH_FILEXFER_ATTR_SUBSECOND_TIMES, SSH_FILEXFER_ATTR_TEXT_HINT,
    SSH_FILEXFER_ATTR_UIDGID, SSH_FILEXFER_ATTR_UNTRANSLATED_NAME,
};
pub use sync::SftpClient;

#[cfg(feature = "async")]
pub use r#async::AsyncSftpClient;
