//! # D-Bus interface proxy for: `org.mpris.MediaPlayer2.TrackList`
//!
//! This code was generated by `zbus-xmlgen` `5.1.0` from D-Bus introspection data.
//! Source: `mpris-dbus-interface.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.
//!
//! This type implements the [D-Bus standard interfaces], (`org.freedesktop.DBus.*`) for which the
//! following zbus API can be used:
//!
//! * [`zbus::fdo::PropertiesProxy`]
//! * [`zbus::fdo::IntrospectableProxy`]
//! * [`zbus::fdo::PeerProxy`]
//!
//! 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,
use zbus::proxy;
#[proxy(interface = "org.mpris.MediaPlayer2.TrackList", assume_defaults = true)]
pub trait TrackList {
    /// AddTrack method
    fn add_track(
        &self,
        Uri: &str,
        AfterTrack: &zbus::zvariant::ObjectPath<'_>,
        SetAsCurrent: bool,
    ) -> zbus::Result<()>;

    /// GetTracksMetadata method
    fn get_tracks_metadata(
        &self,
        TrackIds: &[&zbus::zvariant::ObjectPath<'_>],
    ) -> zbus::Result<Vec<std::collections::HashMap<String, zbus::zvariant::OwnedValue>>>;

    /// GoTo method
    fn go_to(&self, TrackId: &zbus::zvariant::ObjectPath<'_>) -> zbus::Result<()>;

    /// RemoveTrack method
    fn remove_track(&self, TrackId: &zbus::zvariant::ObjectPath<'_>) -> zbus::Result<()>;

    /// TrackAdded signal
    #[zbus(signal)]
    fn track_added(
        &self,
        Metadata: std::collections::HashMap<&str, zbus::zvariant::Value<'_>>,
        AfterTrack: zbus::zvariant::ObjectPath<'_>,
    ) -> zbus::Result<()>;

    /// TrackListReplaced signal
    #[zbus(signal)]
    fn track_list_replaced(
        &self,
        Tracks: Vec<zbus::zvariant::ObjectPath<'_>>,
        CurrentTrack: zbus::zvariant::ObjectPath<'_>,
    ) -> zbus::Result<()>;

    /// TrackMetadataChanged signal
    #[zbus(signal)]
    fn track_metadata_changed(
        &self,
        TrackId: zbus::zvariant::ObjectPath<'_>,
        Metadata: std::collections::HashMap<&str, zbus::zvariant::Value<'_>>,
    ) -> zbus::Result<()>;

    /// TrackRemoved signal
    #[zbus(signal)]
    fn track_removed(&self, TrackId: zbus::zvariant::ObjectPath<'_>) -> zbus::Result<()>;

    /// CanEditTracks property
    #[zbus(property)]
    fn can_edit_tracks(&self) -> zbus::Result<bool>;

    /// Tracks property
    #[zbus(property)]
    fn tracks(&self) -> zbus::Result<Vec<zbus::zvariant::OwnedObjectPath>>;
}
