// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://docs.gtk.org/gio/class.DBusActionGroup.html).
pub type DBusActionGroup

///|
pub(open) trait IDBusActionGroup {
  fn as_dbus_action_group(Self) -> DBusActionGroup
}

///|
pub impl IDBusActionGroup for DBusActionGroup with fn as_dbus_action_group(self) {
  self
}

///|
#borrow(connection, bus_name, object_path)
extern "c" fn moonbit_g_dbus_action_group_get(
  connection : DBusConnection,
  bus_name : @glib.Nullable[Bytes],
  object_path : Bytes,
) -> DBusActionGroup = "moonbit_g_dbus_action_group_get"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/type_func.DBusActionGroup.get.html).
pub fn DBusActionGroup::get(
  connection : &IDBusConnection,
  bus_name : String?,
  object_path : String,
) -> DBusActionGroup {
  moonbit_g_dbus_action_group_get(
    connection.as_dbus_connection(),
    match bus_name {
      Some(s) => @glib.Nullable::some(@encoding/utf8.encode(s))
      None => @glib.Nullable::null()
    },
    @encoding/utf8.encode(object_path),
  )
}

///|
pub fn DBusActionGroup::as_gobject_object(
  self : DBusActionGroup,
) -> @gobject.Object = "%identity"

///|
pub impl @gobject.IObject for DBusActionGroup with fn as_object(self) {
  self.as_gobject_object()
}

///|
pub fn DBusActionGroup::as_action_group(self : DBusActionGroup) -> ActionGroup = "%identity"

///|
pub impl IActionGroup for DBusActionGroup with fn as_action_group(self) {
  self.as_action_group()
}

///|
pub fn DBusActionGroup::as_remote_action_group(
  self : DBusActionGroup,
) -> RemoteActionGroup = "%identity"

///|
pub impl IRemoteActionGroup for DBusActionGroup with fn as_remote_action_group(
  self,
) {
  self.as_remote_action_group()
}