use std::collections::HashMap;
use zbus::{
proxy,
zvariant::{OwnedFd, OwnedObjectPath, Value},
};
#[proxy(interface = "org.bluez.GattCharacteristic1", assume_defaults = true)]
pub trait GattCharacteristic {
fn acquire_notify(&self, options: HashMap<&str, &Value<'_>>) -> zbus::Result<(OwnedFd, u16)>;
fn acquire_write(&self, options: HashMap<&str, &Value<'_>>) -> zbus::Result<(OwnedFd, u16)>;
fn read_value(&self, options: HashMap<&str, &Value<'_>>) -> zbus::Result<Vec<u8>>;
fn start_notify(&self) -> zbus::Result<()>;
fn stop_notify(&self) -> zbus::Result<()>;
fn write_value(&self, value: &[u8], options: HashMap<&str, &Value<'_>>) -> zbus::Result<()>;
#[zbus(property)]
fn flags(&self) -> zbus::Result<Vec<String>>;
#[zbus(property, name = "MTU")]
fn mtu(&self) -> zbus::Result<u16>;
#[zbus(property)]
fn notify_acquired(&self) -> zbus::Result<bool>;
#[zbus(property)]
fn notifying(&self) -> zbus::Result<bool>;
#[zbus(property)]
fn service(&self) -> zbus::Result<OwnedObjectPath>;
#[zbus(property, name = "UUID")]
fn uuid(&self) -> zbus::Result<String>;
#[zbus(property)]
fn value(&self) -> zbus::Result<Vec<u8>>;
#[zbus(property)]
fn write_acquired(&self) -> zbus::Result<bool>;
}