//! # D-Bus interface proxy for: `com.canonical.dbusmenu`
//!
//! This code was generated by `zbus-xmlgen` `5.1.0` from D-Bus introspection data.
//! Source: `dbus-menu.xml`.
//!
//! 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.
//!
//!
//! [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,
use zbus::proxy;
#[proxy(interface = "com.canonical.dbusmenu", assume_defaults = true)]
pub trait dbusmenu {
    /// AboutToShow method
    fn about_to_show(&self, id: i32) -> zbus::Result<bool>;

    /// AboutToShowGroup method
    fn about_to_show_group(&self, ids: &[i32]) -> zbus::Result<(Vec<i32>, Vec<i32>)>;

    /// Event method
    fn event(
        &self,
        id: i32,
        eventId: &str,
        data: &zbus::zvariant::Value<'_>,
        timestamp: u32,
    ) -> zbus::Result<()>;

    /// EventGroup method
    fn event_group(
        &self,
        events: &[&(i32, &str, &zbus::zvariant::Value<'_>, u32)],
    ) -> zbus::Result<Vec<i32>>;

    /// GetGroupProperties method
    fn get_group_properties(
        &self,
        ids: &[i32],
        propertyNames: &[&str],
    ) -> zbus::Result<
        Vec<(
            i32,
            std::collections::HashMap<String, zbus::zvariant::OwnedValue>,
        )>,
    >;

    /// GetLayout method
    fn get_layout(
        &self,
        parentId: i32,
        recursionDepth: i32,
        propertyNames: &[&str],
    ) -> zbus::Result<(
        u32,
        (
            i32,
            std::collections::HashMap<String, zbus::zvariant::OwnedValue>,
            Vec<zbus::zvariant::OwnedValue>,
        ),
    )>;

    /// GetProperty method
    fn get_property(&self, id: i32, name: &str) -> zbus::Result<zbus::zvariant::OwnedValue>;

    /// ItemActivationRequested signal
    #[zbus(signal)]
    fn item_activation_requested(&self, id: i32, timestamp: u32) -> zbus::Result<()>;

    /// ItemsPropertiesUpdated signal
    #[zbus(signal)]
    fn items_properties_updated(
        &self,
        updatedProps: Vec<(
            i32,
            std::collections::HashMap<&str, zbus::zvariant::Value<'_>>,
        )>,
        removedProps: Vec<(i32, Vec<&str>)>,
    ) -> zbus::Result<()>;

    /// LayoutUpdated signal
    #[zbus(signal)]
    fn layout_updated(&self, revision: u32, parent: i32) -> zbus::Result<()>;

    /// IconThemePath property
    #[zbus(property)]
    fn icon_theme_path(&self) -> zbus::Result<Vec<String>>;

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

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

    /// Version property
    #[zbus(property)]
    fn version(&self) -> zbus::Result<u32>;
}
