/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/toolkit/components/credentialmanagement/nsIIdentityCredentialStorageService.idl
 */

#ifndef __gen_nsIIdentityCredentialStorageService_h__
#define __gen_nsIIdentityCredentialStorageService_h__


#include "nsISupports.h"

#include "nsIPrincipal.h"

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
namespace mozilla {
namespace dom {
class IdentityCredential; /* webidl IdentityCredential */
} // namespace dom
} // namespace mozilla


/* starting interface:    nsIIdentityCredentialStorageService */
#define NS_IIDENTITYCREDENTIALSTORAGESERVICE_IID_STR "029823d0-0448-46c5-af1f-25cd4501d0d7"

#define NS_IIDENTITYCREDENTIALSTORAGESERVICE_IID \
  {0x029823d0, 0x0448, 0x46c5, \
    { 0xaf, 0x1f, 0x25, 0xcd, 0x45, 0x01, 0xd0, 0xd7 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIIdentityCredentialStorageService) nsIIdentityCredentialStorageService : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IIDENTITYCREDENTIALSTORAGESERVICE_IID)

  /* Used by ToJSValue to check which scriptable interface is implemented. */
  using ScriptableInterfaceType = nsIIdentityCredentialStorageService;

  /* void setState (in nsIPrincipal rpPrincipal, in nsIPrincipal idpPrincipal, in ACString credentialID, in boolean registered, in boolean allowLogout); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_setState)
  NS_IMETHOD SetState(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID, bool registered, bool allowLogout) = 0;

  /* void getState (in nsIPrincipal rpPrincipal, in nsIPrincipal idpPrincipal, in ACString credentialID, out boolean registered, out boolean allowLogout); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_getState)
  NS_IMETHOD GetState(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID, bool *registered, bool *allowLogout) = 0;

  /* void delete (in nsIPrincipal rpPrincipal, in nsIPrincipal idpPrincipal, in ACString credentialID); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_delete)
  NS_IMETHOD Delete(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID) = 0;

  /* void connected (in nsIPrincipal rpPrincipal, in nsIPrincipal idpPrincipal, out boolean connected); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_connected)
  NS_IMETHOD Connected(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, bool *connected) = 0;

  /* void disconnect (in nsIPrincipal rpPrincipal, in nsIPrincipal idpPrincipal); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_disconnect)
  NS_IMETHOD Disconnect(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal) = 0;

  /* void clear (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_clear)
  NS_IMETHOD Clear(void) = 0;

  /* void deleteFromBaseDomain (in ACString baseDomain); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_deleteFromBaseDomain)
  NS_IMETHOD DeleteFromBaseDomain(const nsACString& baseDomain) = 0;

  /* void deleteFromPrincipal (in nsIPrincipal rpPrincipal); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_deleteFromPrincipal)
  NS_IMETHOD DeleteFromPrincipal(nsIPrincipal *rpPrincipal) = 0;

  /* void deleteFromTimeRange (in PRTime aFrom, in PRTime aTo); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_deleteFromTimeRange)
  NS_IMETHOD DeleteFromTimeRange(PRTime aFrom, PRTime aTo) = 0;

  /* void deleteFromOriginAttributesPattern (in AString aPattern); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_deleteFromOriginAttributesPattern)
  NS_IMETHOD DeleteFromOriginAttributesPattern(const nsAString& aPattern) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIIDENTITYCREDENTIALSTORAGESERVICE \
  NS_IMETHOD SetState(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID, bool registered, bool allowLogout) override; \
  NS_IMETHOD GetState(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID, bool *registered, bool *allowLogout) override; \
  NS_IMETHOD Delete(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID) override; \
  NS_IMETHOD Connected(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, bool *connected) override; \
  NS_IMETHOD Disconnect(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal) override; \
  NS_IMETHOD Clear(void) override; \
  NS_IMETHOD DeleteFromBaseDomain(const nsACString& baseDomain) override; \
  NS_IMETHOD DeleteFromPrincipal(nsIPrincipal *rpPrincipal) override; \
  NS_IMETHOD DeleteFromTimeRange(PRTime aFrom, PRTime aTo) override; \
  NS_IMETHOD DeleteFromOriginAttributesPattern(const nsAString& aPattern) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIIDENTITYCREDENTIALSTORAGESERVICE \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_setState)\
  nsresult SetState(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID, bool registered, bool allowLogout); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_getState)\
  nsresult GetState(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID, bool *registered, bool *allowLogout); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_delete)\
  nsresult Delete(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_connected)\
  nsresult Connected(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, bool *connected); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_disconnect)\
  nsresult Disconnect(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_clear)\
  nsresult Clear(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_deleteFromBaseDomain)\
  nsresult DeleteFromBaseDomain(const nsACString& baseDomain); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_deleteFromPrincipal)\
  nsresult DeleteFromPrincipal(nsIPrincipal *rpPrincipal); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_deleteFromTimeRange)\
  nsresult DeleteFromTimeRange(PRTime aFrom, PRTime aTo); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialStorageService_deleteFromOriginAttributesPattern)\
  nsresult DeleteFromOriginAttributesPattern(const nsAString& aPattern); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIIDENTITYCREDENTIALSTORAGESERVICE(_to) \
  NS_IMETHOD SetState(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID, bool registered, bool allowLogout) override { return _to SetState(rpPrincipal, idpPrincipal, credentialID, registered, allowLogout); } \
  NS_IMETHOD GetState(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID, bool *registered, bool *allowLogout) override { return _to GetState(rpPrincipal, idpPrincipal, credentialID, registered, allowLogout); } \
  NS_IMETHOD Delete(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID) override { return _to Delete(rpPrincipal, idpPrincipal, credentialID); } \
  NS_IMETHOD Connected(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, bool *connected) override { return _to Connected(rpPrincipal, idpPrincipal, connected); } \
  NS_IMETHOD Disconnect(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal) override { return _to Disconnect(rpPrincipal, idpPrincipal); } \
  NS_IMETHOD Clear(void) override { return _to Clear(); } \
  NS_IMETHOD DeleteFromBaseDomain(const nsACString& baseDomain) override { return _to DeleteFromBaseDomain(baseDomain); } \
  NS_IMETHOD DeleteFromPrincipal(nsIPrincipal *rpPrincipal) override { return _to DeleteFromPrincipal(rpPrincipal); } \
  NS_IMETHOD DeleteFromTimeRange(PRTime aFrom, PRTime aTo) override { return _to DeleteFromTimeRange(aFrom, aTo); } \
  NS_IMETHOD DeleteFromOriginAttributesPattern(const nsAString& aPattern) override { return _to DeleteFromOriginAttributesPattern(aPattern); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIIDENTITYCREDENTIALSTORAGESERVICE(_to) \
  NS_IMETHOD SetState(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID, bool registered, bool allowLogout) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetState(rpPrincipal, idpPrincipal, credentialID, registered, allowLogout); } \
  NS_IMETHOD GetState(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID, bool *registered, bool *allowLogout) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(rpPrincipal, idpPrincipal, credentialID, registered, allowLogout); } \
  NS_IMETHOD Delete(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, const nsACString& credentialID) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Delete(rpPrincipal, idpPrincipal, credentialID); } \
  NS_IMETHOD Connected(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal, bool *connected) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Connected(rpPrincipal, idpPrincipal, connected); } \
  NS_IMETHOD Disconnect(nsIPrincipal *rpPrincipal, nsIPrincipal *idpPrincipal) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Disconnect(rpPrincipal, idpPrincipal); } \
  NS_IMETHOD Clear(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Clear(); } \
  NS_IMETHOD DeleteFromBaseDomain(const nsACString& baseDomain) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteFromBaseDomain(baseDomain); } \
  NS_IMETHOD DeleteFromPrincipal(nsIPrincipal *rpPrincipal) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteFromPrincipal(rpPrincipal); } \
  NS_IMETHOD DeleteFromTimeRange(PRTime aFrom, PRTime aTo) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteFromTimeRange(aFrom, aTo); } \
  NS_IMETHOD DeleteFromOriginAttributesPattern(const nsAString& aPattern) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteFromOriginAttributesPattern(aPattern); } 


#endif /* __gen_nsIIdentityCredentialStorageService_h__ */
