// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IAppInfoMonitor {
  fn as_app_info_monitor(Self) -> AppInfoMonitor
  fn connect_changed(Self, (AppInfoMonitor) -> Unit) -> UInt64 = _
}

///|
pub impl IAppInfoMonitor for AppInfoMonitor with fn as_app_info_monitor(self) {
  self
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/type_func.AppInfoMonitor.get.html).
pub extern "c" fn AppInfoMonitor::get() -> AppInfoMonitor = "moonbit_g_app_info_monitor_get"

///|
#borrow(instance)
extern "c" fn g_app_info_monitor_connect_changed(
  instance : AppInfoMonitor,
  function : FuncRef[(AppInfoMonitor, (AppInfoMonitor) -> Unit) -> Unit],
  closure : (AppInfoMonitor) -> Unit,
) -> UInt64 = "moonbit_g_app_info_monitor_connect_changed"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/signal.AppInfoMonitor.changed.html).
pub fn AppInfoMonitor::connect_changed(
  self : AppInfoMonitor,
  f : (AppInfoMonitor) -> Unit,
) -> UInt64 {
  g_app_info_monitor_connect_changed(self, fn(instance_, f) { f(instance_) }, f)
}

///|
impl IAppInfoMonitor with fn connect_changed(self, f) -> UInt64 {
  self.as_app_info_monitor().connect_changed(f)
}

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

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