{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

Abstract base class for D-Bus interfaces on the service side.
-}

module GI.Gio.Objects.DBusInterfaceSkeleton
    ( 

-- * Exported types
    DBusInterfaceSkeleton(..)               ,
    IsDBusInterfaceSkeleton                 ,
    toDBusInterfaceSkeleton                 ,
    noDBusInterfaceSkeleton                 ,


 -- * Methods
-- ** export #method:export#
    DBusInterfaceSkeletonExportMethodInfo   ,
    dBusInterfaceSkeletonExport             ,


-- ** flush #method:flush#
    DBusInterfaceSkeletonFlushMethodInfo    ,
    dBusInterfaceSkeletonFlush              ,


-- ** getConnection #method:getConnection#
    DBusInterfaceSkeletonGetConnectionMethodInfo,
    dBusInterfaceSkeletonGetConnection      ,


-- ** getConnections #method:getConnections#
    DBusInterfaceSkeletonGetConnectionsMethodInfo,
    dBusInterfaceSkeletonGetConnections     ,


-- ** getFlags #method:getFlags#
    DBusInterfaceSkeletonGetFlagsMethodInfo ,
    dBusInterfaceSkeletonGetFlags           ,


-- ** getInfo #method:getInfo#
    DBusInterfaceSkeletonGetInfoMethodInfo  ,
    dBusInterfaceSkeletonGetInfo            ,


-- ** getObjectPath #method:getObjectPath#
    DBusInterfaceSkeletonGetObjectPathMethodInfo,
    dBusInterfaceSkeletonGetObjectPath      ,


-- ** getProperties #method:getProperties#
    DBusInterfaceSkeletonGetPropertiesMethodInfo,
    dBusInterfaceSkeletonGetProperties      ,


-- ** hasConnection #method:hasConnection#
    DBusInterfaceSkeletonHasConnectionMethodInfo,
    dBusInterfaceSkeletonHasConnection      ,


-- ** setFlags #method:setFlags#
    DBusInterfaceSkeletonSetFlagsMethodInfo ,
    dBusInterfaceSkeletonSetFlags           ,


-- ** unexport #method:unexport#
    DBusInterfaceSkeletonUnexportMethodInfo ,
    dBusInterfaceSkeletonUnexport           ,


-- ** unexportFromConnection #method:unexportFromConnection#
    DBusInterfaceSkeletonUnexportFromConnectionMethodInfo,
    dBusInterfaceSkeletonUnexportFromConnection,




 -- * Properties
-- ** gFlags #attr:gFlags#
    DBusInterfaceSkeletonGFlagsPropertyInfo ,
    constructDBusInterfaceSkeletonGFlags    ,
    dBusInterfaceSkeletonGFlags             ,
    getDBusInterfaceSkeletonGFlags          ,
    setDBusInterfaceSkeletonGFlags          ,




 -- * Signals
-- ** gAuthorizeMethod #signal:gAuthorizeMethod#
    C_DBusInterfaceSkeletonGAuthorizeMethodCallback,
    DBusInterfaceSkeletonGAuthorizeMethodCallback,
    DBusInterfaceSkeletonGAuthorizeMethodSignalInfo,
    afterDBusInterfaceSkeletonGAuthorizeMethod,
    genClosure_DBusInterfaceSkeletonGAuthorizeMethod,
    mk_DBusInterfaceSkeletonGAuthorizeMethodCallback,
    noDBusInterfaceSkeletonGAuthorizeMethodCallback,
    onDBusInterfaceSkeletonGAuthorizeMethod ,
    wrap_DBusInterfaceSkeletonGAuthorizeMethodCallback,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP

import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.Gio.Flags as Gio.Flags
import {-# SOURCE #-} qualified GI.Gio.Interfaces.DBusInterface as Gio.DBusInterface
import {-# SOURCE #-} qualified GI.Gio.Objects.DBusConnection as Gio.DBusConnection
import {-# SOURCE #-} qualified GI.Gio.Objects.DBusMethodInvocation as Gio.DBusMethodInvocation
import {-# SOURCE #-} qualified GI.Gio.Structs.DBusInterfaceInfo as Gio.DBusInterfaceInfo

newtype DBusInterfaceSkeleton = DBusInterfaceSkeleton (ManagedPtr DBusInterfaceSkeleton)
foreign import ccall "g_dbus_interface_skeleton_get_type"
    c_g_dbus_interface_skeleton_get_type :: IO GType

instance GObject DBusInterfaceSkeleton where
    gobjectType _ = c_g_dbus_interface_skeleton_get_type
    

class GObject o => IsDBusInterfaceSkeleton o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError DBusInterfaceSkeleton a) =>
    IsDBusInterfaceSkeleton a
#endif
instance IsDBusInterfaceSkeleton DBusInterfaceSkeleton
instance GObject.Object.IsObject DBusInterfaceSkeleton
instance Gio.DBusInterface.IsDBusInterface DBusInterfaceSkeleton

toDBusInterfaceSkeleton :: IsDBusInterfaceSkeleton o => o -> IO DBusInterfaceSkeleton
toDBusInterfaceSkeleton = unsafeCastTo DBusInterfaceSkeleton

noDBusInterfaceSkeleton :: Maybe DBusInterfaceSkeleton
noDBusInterfaceSkeleton = Nothing

type family ResolveDBusInterfaceSkeletonMethod (t :: Symbol) (o :: *) :: * where
    ResolveDBusInterfaceSkeletonMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveDBusInterfaceSkeletonMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveDBusInterfaceSkeletonMethod "export" o = DBusInterfaceSkeletonExportMethodInfo
    ResolveDBusInterfaceSkeletonMethod "flush" o = DBusInterfaceSkeletonFlushMethodInfo
    ResolveDBusInterfaceSkeletonMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveDBusInterfaceSkeletonMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveDBusInterfaceSkeletonMethod "hasConnection" o = DBusInterfaceSkeletonHasConnectionMethodInfo
    ResolveDBusInterfaceSkeletonMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveDBusInterfaceSkeletonMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveDBusInterfaceSkeletonMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveDBusInterfaceSkeletonMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveDBusInterfaceSkeletonMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveDBusInterfaceSkeletonMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveDBusInterfaceSkeletonMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveDBusInterfaceSkeletonMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveDBusInterfaceSkeletonMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveDBusInterfaceSkeletonMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveDBusInterfaceSkeletonMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveDBusInterfaceSkeletonMethod "unexport" o = DBusInterfaceSkeletonUnexportMethodInfo
    ResolveDBusInterfaceSkeletonMethod "unexportFromConnection" o = DBusInterfaceSkeletonUnexportFromConnectionMethodInfo
    ResolveDBusInterfaceSkeletonMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveDBusInterfaceSkeletonMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveDBusInterfaceSkeletonMethod "getConnection" o = DBusInterfaceSkeletonGetConnectionMethodInfo
    ResolveDBusInterfaceSkeletonMethod "getConnections" o = DBusInterfaceSkeletonGetConnectionsMethodInfo
    ResolveDBusInterfaceSkeletonMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveDBusInterfaceSkeletonMethod "getFlags" o = DBusInterfaceSkeletonGetFlagsMethodInfo
    ResolveDBusInterfaceSkeletonMethod "getInfo" o = DBusInterfaceSkeletonGetInfoMethodInfo
    ResolveDBusInterfaceSkeletonMethod "getObject" o = Gio.DBusInterface.DBusInterfaceGetObjectMethodInfo
    ResolveDBusInterfaceSkeletonMethod "getObjectPath" o = DBusInterfaceSkeletonGetObjectPathMethodInfo
    ResolveDBusInterfaceSkeletonMethod "getProperties" o = DBusInterfaceSkeletonGetPropertiesMethodInfo
    ResolveDBusInterfaceSkeletonMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveDBusInterfaceSkeletonMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveDBusInterfaceSkeletonMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveDBusInterfaceSkeletonMethod "setFlags" o = DBusInterfaceSkeletonSetFlagsMethodInfo
    ResolveDBusInterfaceSkeletonMethod "setObject" o = Gio.DBusInterface.DBusInterfaceSetObjectMethodInfo
    ResolveDBusInterfaceSkeletonMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveDBusInterfaceSkeletonMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveDBusInterfaceSkeletonMethod t DBusInterfaceSkeleton, O.MethodInfo info DBusInterfaceSkeleton p) => O.IsLabelProxy t (DBusInterfaceSkeleton -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveDBusInterfaceSkeletonMethod t DBusInterfaceSkeleton, O.MethodInfo info DBusInterfaceSkeleton p) => O.IsLabel t (DBusInterfaceSkeleton -> p) where
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

-- signal DBusInterfaceSkeleton::g-authorize-method
type DBusInterfaceSkeletonGAuthorizeMethodCallback =
    Gio.DBusMethodInvocation.DBusMethodInvocation ->
    IO Bool

noDBusInterfaceSkeletonGAuthorizeMethodCallback :: Maybe DBusInterfaceSkeletonGAuthorizeMethodCallback
noDBusInterfaceSkeletonGAuthorizeMethodCallback = Nothing

type C_DBusInterfaceSkeletonGAuthorizeMethodCallback =
    Ptr () ->                               -- object
    Ptr Gio.DBusMethodInvocation.DBusMethodInvocation ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mk_DBusInterfaceSkeletonGAuthorizeMethodCallback :: C_DBusInterfaceSkeletonGAuthorizeMethodCallback -> IO (FunPtr C_DBusInterfaceSkeletonGAuthorizeMethodCallback)

genClosure_DBusInterfaceSkeletonGAuthorizeMethod :: DBusInterfaceSkeletonGAuthorizeMethodCallback -> IO Closure
genClosure_DBusInterfaceSkeletonGAuthorizeMethod cb = do
    let cb' = wrap_DBusInterfaceSkeletonGAuthorizeMethodCallback cb
    mk_DBusInterfaceSkeletonGAuthorizeMethodCallback cb' >>= newCClosure


wrap_DBusInterfaceSkeletonGAuthorizeMethodCallback ::
    DBusInterfaceSkeletonGAuthorizeMethodCallback ->
    Ptr () ->
    Ptr Gio.DBusMethodInvocation.DBusMethodInvocation ->
    Ptr () ->
    IO CInt
wrap_DBusInterfaceSkeletonGAuthorizeMethodCallback _cb _ invocation _ = do
    invocation' <- (newObject Gio.DBusMethodInvocation.DBusMethodInvocation) invocation
    result <- _cb  invocation'
    let result' = (fromIntegral . fromEnum) result
    return result'


onDBusInterfaceSkeletonGAuthorizeMethod :: (GObject a, MonadIO m) => a -> DBusInterfaceSkeletonGAuthorizeMethodCallback -> m SignalHandlerId
onDBusInterfaceSkeletonGAuthorizeMethod obj cb = liftIO $ connectDBusInterfaceSkeletonGAuthorizeMethod obj cb SignalConnectBefore
afterDBusInterfaceSkeletonGAuthorizeMethod :: (GObject a, MonadIO m) => a -> DBusInterfaceSkeletonGAuthorizeMethodCallback -> m SignalHandlerId
afterDBusInterfaceSkeletonGAuthorizeMethod obj cb = connectDBusInterfaceSkeletonGAuthorizeMethod obj cb SignalConnectAfter

connectDBusInterfaceSkeletonGAuthorizeMethod :: (GObject a, MonadIO m) =>
                                                a -> DBusInterfaceSkeletonGAuthorizeMethodCallback -> SignalConnectMode -> m SignalHandlerId
connectDBusInterfaceSkeletonGAuthorizeMethod obj cb after = liftIO $ do
    let cb' = wrap_DBusInterfaceSkeletonGAuthorizeMethodCallback cb
    cb'' <- mk_DBusInterfaceSkeletonGAuthorizeMethodCallback cb'
    connectSignalFunPtr obj "g-authorize-method" cb'' after

-- VVV Prop "g-flags"
   -- Type: TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeletonFlags"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

getDBusInterfaceSkeletonGFlags :: (MonadIO m, IsDBusInterfaceSkeleton o) => o -> m [Gio.Flags.DBusInterfaceSkeletonFlags]
getDBusInterfaceSkeletonGFlags obj = liftIO $ getObjectPropertyFlags obj "g-flags"

setDBusInterfaceSkeletonGFlags :: (MonadIO m, IsDBusInterfaceSkeleton o) => o -> [Gio.Flags.DBusInterfaceSkeletonFlags] -> m ()
setDBusInterfaceSkeletonGFlags obj val = liftIO $ setObjectPropertyFlags obj "g-flags" val

constructDBusInterfaceSkeletonGFlags :: (IsDBusInterfaceSkeleton o) => [Gio.Flags.DBusInterfaceSkeletonFlags] -> IO (GValueConstruct o)
constructDBusInterfaceSkeletonGFlags val = constructObjectPropertyFlags "g-flags" val

data DBusInterfaceSkeletonGFlagsPropertyInfo
instance AttrInfo DBusInterfaceSkeletonGFlagsPropertyInfo where
    type AttrAllowedOps DBusInterfaceSkeletonGFlagsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint DBusInterfaceSkeletonGFlagsPropertyInfo = (~) [Gio.Flags.DBusInterfaceSkeletonFlags]
    type AttrBaseTypeConstraint DBusInterfaceSkeletonGFlagsPropertyInfo = IsDBusInterfaceSkeleton
    type AttrGetType DBusInterfaceSkeletonGFlagsPropertyInfo = [Gio.Flags.DBusInterfaceSkeletonFlags]
    type AttrLabel DBusInterfaceSkeletonGFlagsPropertyInfo = "g-flags"
    type AttrOrigin DBusInterfaceSkeletonGFlagsPropertyInfo = DBusInterfaceSkeleton
    attrGet _ = getDBusInterfaceSkeletonGFlags
    attrSet _ = setDBusInterfaceSkeletonGFlags
    attrConstruct _ = constructDBusInterfaceSkeletonGFlags
    attrClear _ = undefined

instance O.HasAttributeList DBusInterfaceSkeleton
type instance O.AttributeList DBusInterfaceSkeleton = DBusInterfaceSkeletonAttributeList
type DBusInterfaceSkeletonAttributeList = ('[ '("gFlags", DBusInterfaceSkeletonGFlagsPropertyInfo)] :: [(Symbol, *)])

dBusInterfaceSkeletonGFlags :: AttrLabelProxy "gFlags"
dBusInterfaceSkeletonGFlags = AttrLabelProxy

data DBusInterfaceSkeletonGAuthorizeMethodSignalInfo
instance SignalInfo DBusInterfaceSkeletonGAuthorizeMethodSignalInfo where
    type HaskellCallbackType DBusInterfaceSkeletonGAuthorizeMethodSignalInfo = DBusInterfaceSkeletonGAuthorizeMethodCallback
    connectSignal _ = connectDBusInterfaceSkeletonGAuthorizeMethod

type instance O.SignalList DBusInterfaceSkeleton = DBusInterfaceSkeletonSignalList
type DBusInterfaceSkeletonSignalList = ('[ '("gAuthorizeMethod", DBusInterfaceSkeletonGAuthorizeMethodSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method DBusInterfaceSkeleton::export
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "interface_", argType = TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The D-Bus interface to export.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "connection", argType = TInterface (Name {namespace = "Gio", name = "DBusConnection"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusConnection to export @interface_ on.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "object_path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The path to export the interface at.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_export" g_dbus_interface_skeleton_export :: 
    Ptr DBusInterfaceSkeleton ->            -- interface_ : TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"})
    Ptr Gio.DBusConnection.DBusConnection -> -- connection : TInterface (Name {namespace = "Gio", name = "DBusConnection"})
    CString ->                              -- object_path : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO CInt

{- |
Exports /@interface_@/ at /@objectPath@/ on /@connection@/.

This can be called multiple times to export the same /@interface_@/
onto multiple connections however the /@objectPath@/ provided must be
the same for all connections.

Use 'GI.Gio.Objects.DBusInterfaceSkeleton.dBusInterfaceSkeletonUnexport' to unexport the object.

@since 2.30
-}
dBusInterfaceSkeletonExport ::
    (B.CallStack.HasCallStack, MonadIO m, IsDBusInterfaceSkeleton a, Gio.DBusConnection.IsDBusConnection b) =>
    a
    {- ^ /@interface_@/: The D-Bus interface to export. -}
    -> b
    {- ^ /@connection@/: A 'GI.Gio.Objects.DBusConnection.DBusConnection' to export /@interface_@/ on. -}
    -> T.Text
    {- ^ /@objectPath@/: The path to export the interface at. -}
    -> m ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
dBusInterfaceSkeletonExport interface_ connection objectPath = liftIO $ do
    interface_' <- unsafeManagedPtrCastPtr interface_
    connection' <- unsafeManagedPtrCastPtr connection
    objectPath' <- textToCString objectPath
    onException (do
        _ <- propagateGError $ g_dbus_interface_skeleton_export interface_' connection' objectPath'
        touchManagedPtr interface_
        touchManagedPtr connection
        freeMem objectPath'
        return ()
     ) (do
        freeMem objectPath'
     )

data DBusInterfaceSkeletonExportMethodInfo
instance (signature ~ (b -> T.Text -> m ()), MonadIO m, IsDBusInterfaceSkeleton a, Gio.DBusConnection.IsDBusConnection b) => O.MethodInfo DBusInterfaceSkeletonExportMethodInfo a signature where
    overloadedMethod _ = dBusInterfaceSkeletonExport

-- method DBusInterfaceSkeleton::flush
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "interface_", argType = TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusInterfaceSkeleton.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_flush" g_dbus_interface_skeleton_flush :: 
    Ptr DBusInterfaceSkeleton ->            -- interface_ : TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"})
    IO ()

{- |
If /@interface_@/ has outstanding changes, request for these changes to be
emitted immediately.

For example, an exported D-Bus interface may queue up property
changes and emit the
@org.freedesktop.DBus.Properties::Propert@\`
signal later (e.g. in an idle handler). This technique is useful
for collapsing multiple property changes into one.

@since 2.30
-}
dBusInterfaceSkeletonFlush ::
    (B.CallStack.HasCallStack, MonadIO m, IsDBusInterfaceSkeleton a) =>
    a
    {- ^ /@interface_@/: A 'GI.Gio.Objects.DBusInterfaceSkeleton.DBusInterfaceSkeleton'. -}
    -> m ()
dBusInterfaceSkeletonFlush interface_ = liftIO $ do
    interface_' <- unsafeManagedPtrCastPtr interface_
    g_dbus_interface_skeleton_flush interface_'
    touchManagedPtr interface_
    return ()

data DBusInterfaceSkeletonFlushMethodInfo
instance (signature ~ (m ()), MonadIO m, IsDBusInterfaceSkeleton a) => O.MethodInfo DBusInterfaceSkeletonFlushMethodInfo a signature where
    overloadedMethod _ = dBusInterfaceSkeletonFlush

-- method DBusInterfaceSkeleton::get_connection
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "interface_", argType = TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusInterfaceSkeleton.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "DBusConnection"}))
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_get_connection" g_dbus_interface_skeleton_get_connection :: 
    Ptr DBusInterfaceSkeleton ->            -- interface_ : TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"})
    IO (Ptr Gio.DBusConnection.DBusConnection)

{- |
Gets the first connection that /@interface_@/ is exported on, if any.

@since 2.30
-}
dBusInterfaceSkeletonGetConnection ::
    (B.CallStack.HasCallStack, MonadIO m, IsDBusInterfaceSkeleton a) =>
    a
    {- ^ /@interface_@/: A 'GI.Gio.Objects.DBusInterfaceSkeleton.DBusInterfaceSkeleton'. -}
    -> m Gio.DBusConnection.DBusConnection
    {- ^ __Returns:__ A 'GI.Gio.Objects.DBusConnection.DBusConnection' or 'Nothing' if /@interface_@/ is
not exported anywhere. Do not free, the object belongs to /@interface_@/. -}
dBusInterfaceSkeletonGetConnection interface_ = liftIO $ do
    interface_' <- unsafeManagedPtrCastPtr interface_
    result <- g_dbus_interface_skeleton_get_connection interface_'
    checkUnexpectedReturnNULL "dBusInterfaceSkeletonGetConnection" result
    result' <- (newObject Gio.DBusConnection.DBusConnection) result
    touchManagedPtr interface_
    return result'

data DBusInterfaceSkeletonGetConnectionMethodInfo
instance (signature ~ (m Gio.DBusConnection.DBusConnection), MonadIO m, IsDBusInterfaceSkeleton a) => O.MethodInfo DBusInterfaceSkeletonGetConnectionMethodInfo a signature where
    overloadedMethod _ = dBusInterfaceSkeletonGetConnection

-- method DBusInterfaceSkeleton::get_connections
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "interface_", argType = TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusInterfaceSkeleton.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TGList (TInterface (Name {namespace = "Gio", name = "DBusConnection"})))
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_get_connections" g_dbus_interface_skeleton_get_connections :: 
    Ptr DBusInterfaceSkeleton ->            -- interface_ : TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"})
    IO (Ptr (GList (Ptr Gio.DBusConnection.DBusConnection)))

{- |
Gets a list of the connections that /@interface_@/ is exported on.

@since 2.32
-}
dBusInterfaceSkeletonGetConnections ::
    (B.CallStack.HasCallStack, MonadIO m, IsDBusInterfaceSkeleton a) =>
    a
    {- ^ /@interface_@/: A 'GI.Gio.Objects.DBusInterfaceSkeleton.DBusInterfaceSkeleton'. -}
    -> m [Gio.DBusConnection.DBusConnection]
    {- ^ __Returns:__ A list of
  all the connections that /@interface_@/ is exported on. The returned
  list should be freed with @/g_list_free()/@ after each element has
  been freed with 'GI.GObject.Objects.Object.objectUnref'. -}
dBusInterfaceSkeletonGetConnections interface_ = liftIO $ do
    interface_' <- unsafeManagedPtrCastPtr interface_
    result <- g_dbus_interface_skeleton_get_connections interface_'
    result' <- unpackGList result
    result'' <- mapM (wrapObject Gio.DBusConnection.DBusConnection) result'
    g_list_free result
    touchManagedPtr interface_
    return result''

data DBusInterfaceSkeletonGetConnectionsMethodInfo
instance (signature ~ (m [Gio.DBusConnection.DBusConnection]), MonadIO m, IsDBusInterfaceSkeleton a) => O.MethodInfo DBusInterfaceSkeletonGetConnectionsMethodInfo a signature where
    overloadedMethod _ = dBusInterfaceSkeletonGetConnections

-- method DBusInterfaceSkeleton::get_flags
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "interface_", argType = TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusInterfaceSkeleton.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeletonFlags"}))
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_get_flags" g_dbus_interface_skeleton_get_flags :: 
    Ptr DBusInterfaceSkeleton ->            -- interface_ : TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"})
    IO CUInt

{- |
Gets the 'GI.Gio.Flags.DBusInterfaceSkeletonFlags' that describes what the behavior
of /@interface_@/

@since 2.30
-}
dBusInterfaceSkeletonGetFlags ::
    (B.CallStack.HasCallStack, MonadIO m, IsDBusInterfaceSkeleton a) =>
    a
    {- ^ /@interface_@/: A 'GI.Gio.Objects.DBusInterfaceSkeleton.DBusInterfaceSkeleton'. -}
    -> m [Gio.Flags.DBusInterfaceSkeletonFlags]
    {- ^ __Returns:__ One or more flags from the 'GI.Gio.Flags.DBusInterfaceSkeletonFlags' enumeration. -}
dBusInterfaceSkeletonGetFlags interface_ = liftIO $ do
    interface_' <- unsafeManagedPtrCastPtr interface_
    result <- g_dbus_interface_skeleton_get_flags interface_'
    let result' = wordToGFlags result
    touchManagedPtr interface_
    return result'

data DBusInterfaceSkeletonGetFlagsMethodInfo
instance (signature ~ (m [Gio.Flags.DBusInterfaceSkeletonFlags]), MonadIO m, IsDBusInterfaceSkeleton a) => O.MethodInfo DBusInterfaceSkeletonGetFlagsMethodInfo a signature where
    overloadedMethod _ = dBusInterfaceSkeletonGetFlags

-- method DBusInterfaceSkeleton::get_info
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "interface_", argType = TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusInterfaceSkeleton.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "DBusInterfaceInfo"}))
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_get_info" g_dbus_interface_skeleton_get_info :: 
    Ptr DBusInterfaceSkeleton ->            -- interface_ : TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"})
    IO (Ptr Gio.DBusInterfaceInfo.DBusInterfaceInfo)

{- |
Gets D-Bus introspection information for the D-Bus interface
implemented by /@interface_@/.

@since 2.30
-}
dBusInterfaceSkeletonGetInfo ::
    (B.CallStack.HasCallStack, MonadIO m, IsDBusInterfaceSkeleton a) =>
    a
    {- ^ /@interface_@/: A 'GI.Gio.Objects.DBusInterfaceSkeleton.DBusInterfaceSkeleton'. -}
    -> m Gio.DBusInterfaceInfo.DBusInterfaceInfo
    {- ^ __Returns:__ A 'GI.Gio.Structs.DBusInterfaceInfo.DBusInterfaceInfo' (never 'Nothing'). Do not free. -}
dBusInterfaceSkeletonGetInfo interface_ = liftIO $ do
    interface_' <- unsafeManagedPtrCastPtr interface_
    result <- g_dbus_interface_skeleton_get_info interface_'
    checkUnexpectedReturnNULL "dBusInterfaceSkeletonGetInfo" result
    result' <- (newBoxed Gio.DBusInterfaceInfo.DBusInterfaceInfo) result
    touchManagedPtr interface_
    return result'

data DBusInterfaceSkeletonGetInfoMethodInfo
instance (signature ~ (m Gio.DBusInterfaceInfo.DBusInterfaceInfo), MonadIO m, IsDBusInterfaceSkeleton a) => O.MethodInfo DBusInterfaceSkeletonGetInfoMethodInfo a signature where
    overloadedMethod _ = dBusInterfaceSkeletonGetInfo

-- method DBusInterfaceSkeleton::get_object_path
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "interface_", argType = TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusInterfaceSkeleton.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_get_object_path" g_dbus_interface_skeleton_get_object_path :: 
    Ptr DBusInterfaceSkeleton ->            -- interface_ : TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"})
    IO CString

{- |
Gets the object path that /@interface_@/ is exported on, if any.

@since 2.30
-}
dBusInterfaceSkeletonGetObjectPath ::
    (B.CallStack.HasCallStack, MonadIO m, IsDBusInterfaceSkeleton a) =>
    a
    {- ^ /@interface_@/: A 'GI.Gio.Objects.DBusInterfaceSkeleton.DBusInterfaceSkeleton'. -}
    -> m T.Text
    {- ^ __Returns:__ A string owned by /@interface_@/ or 'Nothing' if /@interface_@/ is not exported
anywhere. Do not free, the string belongs to /@interface_@/. -}
dBusInterfaceSkeletonGetObjectPath interface_ = liftIO $ do
    interface_' <- unsafeManagedPtrCastPtr interface_
    result <- g_dbus_interface_skeleton_get_object_path interface_'
    checkUnexpectedReturnNULL "dBusInterfaceSkeletonGetObjectPath" result
    result' <- cstringToText result
    touchManagedPtr interface_
    return result'

data DBusInterfaceSkeletonGetObjectPathMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsDBusInterfaceSkeleton a) => O.MethodInfo DBusInterfaceSkeletonGetObjectPathMethodInfo a signature where
    overloadedMethod _ = dBusInterfaceSkeletonGetObjectPath

-- method DBusInterfaceSkeleton::get_properties
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "interface_", argType = TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusInterfaceSkeleton.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just TVariant
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_get_properties" g_dbus_interface_skeleton_get_properties :: 
    Ptr DBusInterfaceSkeleton ->            -- interface_ : TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"})
    IO (Ptr GVariant)

{- |
Gets all D-Bus properties for /@interface_@/.

@since 2.30
-}
dBusInterfaceSkeletonGetProperties ::
    (B.CallStack.HasCallStack, MonadIO m, IsDBusInterfaceSkeleton a) =>
    a
    {- ^ /@interface_@/: A 'GI.Gio.Objects.DBusInterfaceSkeleton.DBusInterfaceSkeleton'. -}
    -> m GVariant
    {- ^ __Returns:__ A 'GVariant' of type
[\'a{sv}\'][G-VARIANT-TYPE-VARDICT:CAPS].
Free with 'GI.GLib.Structs.Variant.variantUnref'. -}
dBusInterfaceSkeletonGetProperties interface_ = liftIO $ do
    interface_' <- unsafeManagedPtrCastPtr interface_
    result <- g_dbus_interface_skeleton_get_properties interface_'
    checkUnexpectedReturnNULL "dBusInterfaceSkeletonGetProperties" result
    result' <- wrapGVariantPtr result
    touchManagedPtr interface_
    return result'

data DBusInterfaceSkeletonGetPropertiesMethodInfo
instance (signature ~ (m GVariant), MonadIO m, IsDBusInterfaceSkeleton a) => O.MethodInfo DBusInterfaceSkeletonGetPropertiesMethodInfo a signature where
    overloadedMethod _ = dBusInterfaceSkeletonGetProperties

-- method DBusInterfaceSkeleton::has_connection
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "interface_", argType = TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusInterfaceSkeleton.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "connection", argType = TInterface (Name {namespace = "Gio", name = "DBusConnection"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusConnection.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_has_connection" g_dbus_interface_skeleton_has_connection :: 
    Ptr DBusInterfaceSkeleton ->            -- interface_ : TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"})
    Ptr Gio.DBusConnection.DBusConnection -> -- connection : TInterface (Name {namespace = "Gio", name = "DBusConnection"})
    IO CInt

{- |
Checks if /@interface_@/ is exported on /@connection@/.

@since 2.32
-}
dBusInterfaceSkeletonHasConnection ::
    (B.CallStack.HasCallStack, MonadIO m, IsDBusInterfaceSkeleton a, Gio.DBusConnection.IsDBusConnection b) =>
    a
    {- ^ /@interface_@/: A 'GI.Gio.Objects.DBusInterfaceSkeleton.DBusInterfaceSkeleton'. -}
    -> b
    {- ^ /@connection@/: A 'GI.Gio.Objects.DBusConnection.DBusConnection'. -}
    -> m Bool
    {- ^ __Returns:__ 'True' if /@interface_@/ is exported on /@connection@/, 'False' otherwise. -}
dBusInterfaceSkeletonHasConnection interface_ connection = liftIO $ do
    interface_' <- unsafeManagedPtrCastPtr interface_
    connection' <- unsafeManagedPtrCastPtr connection
    result <- g_dbus_interface_skeleton_has_connection interface_' connection'
    let result' = (/= 0) result
    touchManagedPtr interface_
    touchManagedPtr connection
    return result'

data DBusInterfaceSkeletonHasConnectionMethodInfo
instance (signature ~ (b -> m Bool), MonadIO m, IsDBusInterfaceSkeleton a, Gio.DBusConnection.IsDBusConnection b) => O.MethodInfo DBusInterfaceSkeletonHasConnectionMethodInfo a signature where
    overloadedMethod _ = dBusInterfaceSkeletonHasConnection

-- method DBusInterfaceSkeleton::set_flags
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "interface_", argType = TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusInterfaceSkeleton.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeletonFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Flags from the #GDBusInterfaceSkeletonFlags enumeration.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_set_flags" g_dbus_interface_skeleton_set_flags :: 
    Ptr DBusInterfaceSkeleton ->            -- interface_ : TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"})
    CUInt ->                                -- flags : TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeletonFlags"})
    IO ()

{- |
Sets flags describing what the behavior of /@skeleton@/ should be.

@since 2.30
-}
dBusInterfaceSkeletonSetFlags ::
    (B.CallStack.HasCallStack, MonadIO m, IsDBusInterfaceSkeleton a) =>
    a
    {- ^ /@interface_@/: A 'GI.Gio.Objects.DBusInterfaceSkeleton.DBusInterfaceSkeleton'. -}
    -> [Gio.Flags.DBusInterfaceSkeletonFlags]
    {- ^ /@flags@/: Flags from the 'GI.Gio.Flags.DBusInterfaceSkeletonFlags' enumeration. -}
    -> m ()
dBusInterfaceSkeletonSetFlags interface_ flags = liftIO $ do
    interface_' <- unsafeManagedPtrCastPtr interface_
    let flags' = gflagsToWord flags
    g_dbus_interface_skeleton_set_flags interface_' flags'
    touchManagedPtr interface_
    return ()

data DBusInterfaceSkeletonSetFlagsMethodInfo
instance (signature ~ ([Gio.Flags.DBusInterfaceSkeletonFlags] -> m ()), MonadIO m, IsDBusInterfaceSkeleton a) => O.MethodInfo DBusInterfaceSkeletonSetFlagsMethodInfo a signature where
    overloadedMethod _ = dBusInterfaceSkeletonSetFlags

-- method DBusInterfaceSkeleton::unexport
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "interface_", argType = TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusInterfaceSkeleton.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_unexport" g_dbus_interface_skeleton_unexport :: 
    Ptr DBusInterfaceSkeleton ->            -- interface_ : TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"})
    IO ()

{- |
Stops exporting /@interface_@/ on all connections it is exported on.

To unexport /@interface_@/ from only a single connection, use
'GI.Gio.Objects.DBusInterfaceSkeleton.dBusInterfaceSkeletonUnexportFromConnection'

@since 2.30
-}
dBusInterfaceSkeletonUnexport ::
    (B.CallStack.HasCallStack, MonadIO m, IsDBusInterfaceSkeleton a) =>
    a
    {- ^ /@interface_@/: A 'GI.Gio.Objects.DBusInterfaceSkeleton.DBusInterfaceSkeleton'. -}
    -> m ()
dBusInterfaceSkeletonUnexport interface_ = liftIO $ do
    interface_' <- unsafeManagedPtrCastPtr interface_
    g_dbus_interface_skeleton_unexport interface_'
    touchManagedPtr interface_
    return ()

data DBusInterfaceSkeletonUnexportMethodInfo
instance (signature ~ (m ()), MonadIO m, IsDBusInterfaceSkeleton a) => O.MethodInfo DBusInterfaceSkeletonUnexportMethodInfo a signature where
    overloadedMethod _ = dBusInterfaceSkeletonUnexport

-- method DBusInterfaceSkeleton::unexport_from_connection
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "interface_", argType = TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusInterfaceSkeleton.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "connection", argType = TInterface (Name {namespace = "Gio", name = "DBusConnection"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusConnection.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_unexport_from_connection" g_dbus_interface_skeleton_unexport_from_connection :: 
    Ptr DBusInterfaceSkeleton ->            -- interface_ : TInterface (Name {namespace = "Gio", name = "DBusInterfaceSkeleton"})
    Ptr Gio.DBusConnection.DBusConnection -> -- connection : TInterface (Name {namespace = "Gio", name = "DBusConnection"})
    IO ()

{- |
Stops exporting /@interface_@/ on /@connection@/.

To stop exporting on all connections the interface is exported on,
use 'GI.Gio.Objects.DBusInterfaceSkeleton.dBusInterfaceSkeletonUnexport'.

@since 2.32
-}
dBusInterfaceSkeletonUnexportFromConnection ::
    (B.CallStack.HasCallStack, MonadIO m, IsDBusInterfaceSkeleton a, Gio.DBusConnection.IsDBusConnection b) =>
    a
    {- ^ /@interface_@/: A 'GI.Gio.Objects.DBusInterfaceSkeleton.DBusInterfaceSkeleton'. -}
    -> b
    {- ^ /@connection@/: A 'GI.Gio.Objects.DBusConnection.DBusConnection'. -}
    -> m ()
dBusInterfaceSkeletonUnexportFromConnection interface_ connection = liftIO $ do
    interface_' <- unsafeManagedPtrCastPtr interface_
    connection' <- unsafeManagedPtrCastPtr connection
    g_dbus_interface_skeleton_unexport_from_connection interface_' connection'
    touchManagedPtr interface_
    touchManagedPtr connection
    return ()

data DBusInterfaceSkeletonUnexportFromConnectionMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsDBusInterfaceSkeleton a, Gio.DBusConnection.IsDBusConnection b) => O.MethodInfo DBusInterfaceSkeletonUnexportFromConnectionMethodInfo a signature where
    overloadedMethod _ = dBusInterfaceSkeletonUnexportFromConnection