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

    The 'GI.Gio.Objects.Credentials.Credentials' type is a reference-counted wrapper for native
    credentials. This information is typically used for identifying,
    authenticating and authorizing other processes.

    Some operating systems supports looking up the credentials of the
    remote peer of a communication endpoint - see e.g.
    'GI.Gio.Objects.Socket.socketGetCredentials'.

    Some operating systems supports securely sending and receiving
    credentials over a Unix Domain Socket, see
    'GI.Gio.Objects.UnixCredentialsMessage.UnixCredentialsMessage', 'GI.Gio.Objects.UnixConnection.unixConnectionSendCredentials' and
    'GI.Gio.Objects.UnixConnection.unixConnectionReceiveCredentials' for details.

    On Linux, the native credential type is a struct ucred - see the
    unix(7) man page for details. This corresponds to
    'GI.Gio.Enums.CredentialsTypeLinuxUcred'.

    On FreeBSD, Debian GNU\/kFreeBSD, and GNU\/Hurd, the native
    credential type is a struct cmsgcred. This corresponds
    to 'GI.Gio.Enums.CredentialsTypeFreebsdCmsgcred'.

    On NetBSD, the native credential type is a struct unpcbid.
    This corresponds to 'GI.Gio.Enums.CredentialsTypeNetbsdUnpcbid'.

    On OpenBSD, the native credential type is a struct sockpeercred.
    This corresponds to 'GI.Gio.Enums.CredentialsTypeOpenbsdSockpeercred'.

    On Solaris (including OpenSolaris and its derivatives), the native
    credential type is a ucred_t. This corresponds to
    'GI.Gio.Enums.CredentialsTypeSolarisUcred'.

    /Since: 2.26/
    -}

    #define ENABLE_OVERLOADING \
           (!defined(__HADDOCK_VERSION__))

    module GI.Gio.Objects.Credentials
        (

    -- * Exported types
        Credentials(..)                         ,
        IsCredentials                           ,
        toCredentials                           ,
        noCredentials                           ,

     -- * Methods
    -- ** getUnixPid #method:getUnixPid#

    #if ENABLE_OVERLOADING
        CredentialsGetUnixPidMethodInfo         ,
    #endif
        credentialsGetUnixPid                   ,

    -- ** getUnixUser #method:getUnixUser#

    #if ENABLE_OVERLOADING
        CredentialsGetUnixUserMethodInfo        ,
    #endif
        credentialsGetUnixUser                  ,

    -- ** isSameUser #method:isSameUser#

    #if ENABLE_OVERLOADING
        CredentialsIsSameUserMethodInfo         ,
    #endif
        credentialsIsSameUser                   ,

    -- ** new #method:new#

        credentialsNew                          ,

    -- ** setNative #method:setNative#

    #if ENABLE_OVERLOADING
        CredentialsSetNativeMethodInfo          ,
    #endif
        credentialsSetNative                    ,

    -- ** setUnixUser #method:setUnixUser#

    #if ENABLE_OVERLOADING
        CredentialsSetUnixUserMethodInfo        ,
    #endif
        credentialsSetUnixUser                  ,

    -- ** toString #method:toString#

    #if ENABLE_OVERLOADING
        CredentialsToStringMethodInfo           ,
    #endif
        credentialsToString                     ,

        ) 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.GValue as B.GValue
    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.Enums as Gio.Enums

    -- | Memory-managed wrapper type.
    newtype Credentials = Credentials (ManagedPtr Credentials)
    foreign import ccall "g_credentials_get_type"
        c_g_credentials_get_type :: IO GType

    instance GObject Credentials where
        gobjectType _ = c_g_credentials_get_type

    -- | Type class for types which can be safely cast to `Credentials`, for instance with `toCredentials`.
    class GObject o => IsCredentials o
    #if MIN_VERSION_base(4,9,0)
    instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError Credentials a) =>
        IsCredentials a
    #endif
    instance IsCredentials Credentials
    instance GObject.Object.IsObject Credentials

    -- | Cast to `Credentials`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
    toCredentials :: (MonadIO m, IsCredentials o) => o -> m Credentials
    toCredentials = liftIO . unsafeCastTo Credentials

    -- | A convenience alias for `Nothing` :: `Maybe` `Credentials`.
    noCredentials :: Maybe Credentials
    noCredentials = Nothing

    #if ENABLE_OVERLOADING
    type family ResolveCredentialsMethod (t :: Symbol) (o :: *) :: * where
        ResolveCredentialsMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
        ResolveCredentialsMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
        ResolveCredentialsMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
        ResolveCredentialsMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
        ResolveCredentialsMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
        ResolveCredentialsMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
        ResolveCredentialsMethod "isSameUser" o = CredentialsIsSameUserMethodInfo
        ResolveCredentialsMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
        ResolveCredentialsMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
        ResolveCredentialsMethod "ref" o = GObject.Object.ObjectRefMethodInfo
        ResolveCredentialsMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
        ResolveCredentialsMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
        ResolveCredentialsMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
        ResolveCredentialsMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
        ResolveCredentialsMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
        ResolveCredentialsMethod "toString" o = CredentialsToStringMethodInfo
        ResolveCredentialsMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
        ResolveCredentialsMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
        ResolveCredentialsMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
        ResolveCredentialsMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
        ResolveCredentialsMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
        ResolveCredentialsMethod "getUnixPid" o = CredentialsGetUnixPidMethodInfo
        ResolveCredentialsMethod "getUnixUser" o = CredentialsGetUnixUserMethodInfo
        ResolveCredentialsMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
        ResolveCredentialsMethod "setNative" o = CredentialsSetNativeMethodInfo
        ResolveCredentialsMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
        ResolveCredentialsMethod "setUnixUser" o = CredentialsSetUnixUserMethodInfo
        ResolveCredentialsMethod l o = O.MethodResolutionFailed l o

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

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

    #endif

    #if ENABLE_OVERLOADING
    instance O.HasAttributeList Credentials
    type instance O.AttributeList Credentials = CredentialsAttributeList
    type CredentialsAttributeList = ('[ ] :: [(Symbol, *)])
    #endif

    #if ENABLE_OVERLOADING
    #endif

    #if ENABLE_OVERLOADING
    type instance O.SignalList Credentials = CredentialsSignalList
    type CredentialsSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

    #endif

    -- method Credentials::new
    -- method type : Constructor
    -- Args : []
    -- Lengths : []
    -- returnType : Just (TInterface (Name {namespace = "Gio", name = "Credentials"}))
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_credentials_new" g_credentials_new ::
        IO (Ptr Credentials)

    {- |
    Creates a new 'GI.Gio.Objects.Credentials.Credentials' object with credentials matching the
    the current process.

    /Since: 2.26/
    -}
    credentialsNew ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        m Credentials
        {- ^ __Returns:__ A 'GI.Gio.Objects.Credentials.Credentials'. Free with 'GI.GObject.Objects.Object.objectUnref'. -}
    credentialsNew  = liftIO $ do
        result <- g_credentials_new
        checkUnexpectedReturnNULL "credentialsNew" result
        result' <- (wrapObject Credentials) result
        return result'

    #if ENABLE_OVERLOADING
    #endif

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

    foreign import ccall "g_credentials_get_unix_pid" g_credentials_get_unix_pid ::
        Ptr Credentials ->                      -- credentials : TInterface (Name {namespace = "Gio", name = "Credentials"})
        Ptr (Ptr GError) ->                     -- error
        IO Int32

    {- |
    Tries to get the UNIX process identifier from /@credentials@/. This
    method is only available on UNIX platforms.

    This operation can fail if 'GI.Gio.Objects.Credentials.Credentials' is not supported on the
    OS or if the native credentials type does not contain information
    about the UNIX process ID.

    /Since: 2.36/
    -}
    credentialsGetUnixPid ::
        (B.CallStack.HasCallStack, MonadIO m, IsCredentials a) =>
        a
        {- ^ /@credentials@/: A 'GI.Gio.Objects.Credentials.Credentials' -}
        -> m Int32
        {- ^ __Returns:__ The UNIX process ID, or -1 if /@error@/ is set. /(Can throw 'Data.GI.Base.GError.GError')/ -}
    credentialsGetUnixPid credentials = liftIO $ do
        credentials' <- unsafeManagedPtrCastPtr credentials
        onException (do
            result <- propagateGError $ g_credentials_get_unix_pid credentials'
            touchManagedPtr credentials
            return result
         ) (do
            return ()
         )

    #if ENABLE_OVERLOADING
    data CredentialsGetUnixPidMethodInfo
    instance (signature ~ (m Int32), MonadIO m, IsCredentials a) => O.MethodInfo CredentialsGetUnixPidMethodInfo a signature where
        overloadedMethod _ = credentialsGetUnixPid

    #endif

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

    foreign import ccall "g_credentials_get_unix_user" g_credentials_get_unix_user ::
        Ptr Credentials ->                      -- credentials : TInterface (Name {namespace = "Gio", name = "Credentials"})
        Ptr (Ptr GError) ->                     -- error
        IO Word32

    {- |
    Tries to get the UNIX user identifier from /@credentials@/. This
    method is only available on UNIX platforms.

    This operation can fail if 'GI.Gio.Objects.Credentials.Credentials' is not supported on the
    OS or if the native credentials type does not contain information
    about the UNIX user.

    /Since: 2.26/
    -}
    credentialsGetUnixUser ::
        (B.CallStack.HasCallStack, MonadIO m, IsCredentials a) =>
        a
        {- ^ /@credentials@/: A 'GI.Gio.Objects.Credentials.Credentials' -}
        -> m Word32
        {- ^ __Returns:__ The UNIX user identifier or -1 if /@error@/ is set. /(Can throw 'Data.GI.Base.GError.GError')/ -}
    credentialsGetUnixUser credentials = liftIO $ do
        credentials' <- unsafeManagedPtrCastPtr credentials
        onException (do
            result <- propagateGError $ g_credentials_get_unix_user credentials'
            touchManagedPtr credentials
            return result
         ) (do
            return ()
         )

    #if ENABLE_OVERLOADING
    data CredentialsGetUnixUserMethodInfo
    instance (signature ~ (m Word32), MonadIO m, IsCredentials a) => O.MethodInfo CredentialsGetUnixUserMethodInfo a signature where
        overloadedMethod _ = credentialsGetUnixUser

    #endif

    -- method Credentials::is_same_user
    -- method type : OrdinaryMethod
    -- Args : [Arg {argCName = "credentials", argType = TInterface (Name {namespace = "Gio", name = "Credentials"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GCredentials.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "other_credentials", argType = TInterface (Name {namespace = "Gio", name = "Credentials"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GCredentials.", 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_credentials_is_same_user" g_credentials_is_same_user ::
        Ptr Credentials ->                      -- credentials : TInterface (Name {namespace = "Gio", name = "Credentials"})
        Ptr Credentials ->                      -- other_credentials : TInterface (Name {namespace = "Gio", name = "Credentials"})
        Ptr (Ptr GError) ->                     -- error
        IO CInt

    {- |
    Checks if /@credentials@/ and /@otherCredentials@/ is the same user.

    This operation can fail if 'GI.Gio.Objects.Credentials.Credentials' is not supported on the
    the OS.

    /Since: 2.26/
    -}
    credentialsIsSameUser ::
        (B.CallStack.HasCallStack, MonadIO m, IsCredentials a, IsCredentials b) =>
        a
        {- ^ /@credentials@/: A 'GI.Gio.Objects.Credentials.Credentials'. -}
        -> b
        {- ^ /@otherCredentials@/: A 'GI.Gio.Objects.Credentials.Credentials'. -}
        -> m ()
        {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
    credentialsIsSameUser credentials otherCredentials = liftIO $ do
        credentials' <- unsafeManagedPtrCastPtr credentials
        otherCredentials' <- unsafeManagedPtrCastPtr otherCredentials
        onException (do
            _ <- propagateGError $ g_credentials_is_same_user credentials' otherCredentials'
            touchManagedPtr credentials
            touchManagedPtr otherCredentials
            return ()
         ) (do
            return ()
         )

    #if ENABLE_OVERLOADING
    data CredentialsIsSameUserMethodInfo
    instance (signature ~ (b -> m ()), MonadIO m, IsCredentials a, IsCredentials b) => O.MethodInfo CredentialsIsSameUserMethodInfo a signature where
        overloadedMethod _ = credentialsIsSameUser

    #endif

    -- method Credentials::set_native
    -- method type : OrdinaryMethod
    -- Args : [Arg {argCName = "credentials", argType = TInterface (Name {namespace = "Gio", name = "Credentials"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GCredentials.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "native_type", argType = TInterface (Name {namespace = "Gio", name = "CredentialsType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The type of native credentials to set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "native", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A pointer to native credentials.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- Lengths : []
    -- returnType : Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_credentials_set_native" g_credentials_set_native ::
        Ptr Credentials ->                      -- credentials : TInterface (Name {namespace = "Gio", name = "Credentials"})
        CUInt ->                                -- native_type : TInterface (Name {namespace = "Gio", name = "CredentialsType"})
        Ptr () ->                               -- native : TBasicType TPtr
        IO ()

    {- |
    Copies the native credentials of type /@nativeType@/ from /@native@/
    into /@credentials@/.

    It is a programming error (which will cause an warning to be
    logged) to use this method if there is no 'GI.Gio.Objects.Credentials.Credentials' support for
    the OS or if /@nativeType@/ isn\'t supported by the OS.

    /Since: 2.26/
    -}
    credentialsSetNative ::
        (B.CallStack.HasCallStack, MonadIO m, IsCredentials a) =>
        a
        {- ^ /@credentials@/: A 'GI.Gio.Objects.Credentials.Credentials'. -}
        -> Gio.Enums.CredentialsType
        {- ^ /@nativeType@/: The type of native credentials to set. -}
        -> Ptr ()
        {- ^ /@native@/: A pointer to native credentials. -}
        -> m ()
    credentialsSetNative credentials nativeType native = liftIO $ do
        credentials' <- unsafeManagedPtrCastPtr credentials
        let nativeType' = (fromIntegral . fromEnum) nativeType
        g_credentials_set_native credentials' nativeType' native
        touchManagedPtr credentials
        return ()

    #if ENABLE_OVERLOADING
    data CredentialsSetNativeMethodInfo
    instance (signature ~ (Gio.Enums.CredentialsType -> Ptr () -> m ()), MonadIO m, IsCredentials a) => O.MethodInfo CredentialsSetNativeMethodInfo a signature where
        overloadedMethod _ = credentialsSetNative

    #endif

    -- method Credentials::set_unix_user
    -- method type : OrdinaryMethod
    -- Args : [Arg {argCName = "credentials", argType = TInterface (Name {namespace = "Gio", name = "Credentials"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GCredentials.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "uid", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The UNIX user identifier to set.", 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_credentials_set_unix_user" g_credentials_set_unix_user ::
        Ptr Credentials ->                      -- credentials : TInterface (Name {namespace = "Gio", name = "Credentials"})
        Word32 ->                               -- uid : TBasicType TUInt
        Ptr (Ptr GError) ->                     -- error
        IO CInt

    {- |
    Tries to set the UNIX user identifier on /@credentials@/. This method
    is only available on UNIX platforms.

    This operation can fail if 'GI.Gio.Objects.Credentials.Credentials' is not supported on the
    OS or if the native credentials type does not contain information
    about the UNIX user. It can also fail if the OS does not allow the
    use of \"spoofed\" credentials.

    /Since: 2.26/
    -}
    credentialsSetUnixUser ::
        (B.CallStack.HasCallStack, MonadIO m, IsCredentials a) =>
        a
        {- ^ /@credentials@/: A 'GI.Gio.Objects.Credentials.Credentials'. -}
        -> Word32
        {- ^ /@uid@/: The UNIX user identifier to set. -}
        -> m ()
        {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
    credentialsSetUnixUser credentials uid = liftIO $ do
        credentials' <- unsafeManagedPtrCastPtr credentials
        onException (do
            _ <- propagateGError $ g_credentials_set_unix_user credentials' uid
            touchManagedPtr credentials
            return ()
         ) (do
            return ()
         )

    #if ENABLE_OVERLOADING
    data CredentialsSetUnixUserMethodInfo
    instance (signature ~ (Word32 -> m ()), MonadIO m, IsCredentials a) => O.MethodInfo CredentialsSetUnixUserMethodInfo a signature where
        overloadedMethod _ = credentialsSetUnixUser

    #endif

    -- method Credentials::to_string
    -- method type : OrdinaryMethod
    -- Args : [Arg {argCName = "credentials", argType = TInterface (Name {namespace = "Gio", name = "Credentials"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GCredentials object.", 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_credentials_to_string" g_credentials_to_string ::
        Ptr Credentials ->                      -- credentials : TInterface (Name {namespace = "Gio", name = "Credentials"})
        IO CString

    {- |
    Creates a human-readable textual representation of /@credentials@/
    that can be used in logging and debug messages. The format of the
    returned string may change in future GLib release.

    /Since: 2.26/
    -}
    credentialsToString ::
        (B.CallStack.HasCallStack, MonadIO m, IsCredentials a) =>
        a
        {- ^ /@credentials@/: A 'GI.Gio.Objects.Credentials.Credentials' object. -}
        -> m T.Text
        {- ^ __Returns:__ A string that should be freed with 'GI.GLib.Functions.free'. -}
    credentialsToString credentials = liftIO $ do
        credentials' <- unsafeManagedPtrCastPtr credentials
        result <- g_credentials_to_string credentials'
        checkUnexpectedReturnNULL "credentialsToString" result
        result' <- cstringToText result
        freeMem result
        touchManagedPtr credentials
        return result'

    #if ENABLE_OVERLOADING
    data CredentialsToStringMethodInfo
    instance (signature ~ (m T.Text), MonadIO m, IsCredentials a) => O.MethodInfo CredentialsToStringMethodInfo a signature where
        overloadedMethod _ = credentialsToString

    #endif