//! # D-Bus interface proxy for: `org.freedesktop.machine1.Machine`
//!
//! This code was generated by `zbus-xmlgen` `4.1.0` from D-Bus introspection data.
//! Source: `Interface '/org/freedesktop/machine1/machine/fedora39' from service 'org.freedesktop.machine1' on system bus`.
//!
//! You may prefer to adapt it, instead of using it verbatim.
//!
//! More information can be found in the [Writing a client proxy] section of the zbus
//! documentation.
//!
//! This type implements the [D-Bus standard interfaces], (`org.freedesktop.DBus.*`) for which the
//! following zbus API can be used:
//!
//! * [`zbus::fdo::PeerProxy`]
//! * [`zbus::fdo::IntrospectableProxy`]
//! * [`zbus::fdo::PropertiesProxy`]
//!
//! Consequently `zbus-xmlgen` did not generate code for the above interfaces.
//!
//! [Writing a client proxy]: https://dbus2.github.io/zbus/client.html
//! [D-Bus standard interfaces]: https://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces,
#![allow(warnings)]
use zbus::proxy;

#[proxy(
    interface = "org.freedesktop.machine1.Machine",
    default_service = "org.freedesktop.machine1"
)]
pub trait Machine {
    /// BindMount method
    fn bind_mount(
        &self,
        source: &str,
        destination: &str,
        read_only: bool,
        mkdir: bool,
    ) -> zbus::Result<()>;

    /// CopyFrom method
    fn copy_from(&self, source: &str, destination: &str) -> zbus::Result<()>;

    /// CopyFromWithFlags method
    fn copy_from_with_flags(&self, source: &str, destination: &str, flags: u64)
        -> zbus::Result<()>;

    /// CopyTo method
    fn copy_to(&self, source: &str, destination: &str) -> zbus::Result<()>;

    /// CopyToWithFlags method
    fn copy_to_with_flags(&self, source: &str, destination: &str, flags: u64) -> zbus::Result<()>;

    /// GetAddresses method
    fn get_addresses(&self) -> zbus::Result<Vec<(i32, Vec<u8>)>>;

    /// GetOSRelease method
    #[zbus(name = "GetOSRelease")]
    fn get_osrelease(&self) -> zbus::Result<std::collections::HashMap<String, String>>;

    /// GetUIDShift method
    #[zbus(name = "GetUIDShift")]
    fn get_uidshift(&self) -> zbus::Result<u32>;

    /// Kill method
    fn kill(&self, who: &str, signal: i32) -> zbus::Result<()>;

    /// OpenLogin method
    fn open_login(&self) -> zbus::Result<(zbus::zvariant::OwnedFd, String)>;

    /// OpenPTY method
    #[zbus(name = "OpenPTY")]
    fn open_pty(&self) -> zbus::Result<(zbus::zvariant::OwnedFd, String)>;

    /// OpenRootDirectory method
    fn open_root_directory(&self) -> zbus::Result<zbus::zvariant::OwnedFd>;

    /// OpenShell method
    fn open_shell(
        &self,
        user: &str,
        path: &str,
        args: &[&str],
        environment: &[&str],
    ) -> zbus::Result<(zbus::zvariant::OwnedFd, String)>;

    /// Terminate method
    fn terminate(&self) -> zbus::Result<()>;

    /// Class property
    #[zbus(property)]
    fn class(&self) -> zbus::Result<String>;

    /// Id property
    #[zbus(property)]
    fn id(&self) -> zbus::Result<Vec<u8>>;

    /// Leader property
    #[zbus(property)]
    fn leader(&self) -> zbus::Result<u32>;

    /// Name property
    #[zbus(property)]
    fn name(&self) -> zbus::Result<String>;

    /// NetworkInterfaces property
    #[zbus(property)]
    fn network_interfaces(&self) -> zbus::Result<Vec<i32>>;

    /// RootDirectory property
    #[zbus(property)]
    fn root_directory(&self) -> zbus::Result<String>;

    /// Service property
    #[zbus(property)]
    fn service(&self) -> zbus::Result<String>;

    /// State property
    #[zbus(property)]
    fn state(&self) -> zbus::Result<String>;

    /// Timestamp property
    #[zbus(property)]
    fn timestamp(&self) -> zbus::Result<u64>;

    /// TimestampMonotonic property
    #[zbus(property)]
    fn timestamp_monotonic(&self) -> zbus::Result<u64>;

    /// Unit property
    #[zbus(property)]
    fn unit(&self) -> zbus::Result<String>;
}
