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

#ifndef __gen_nsIIdentityCredentialPromptService_h__
#define __gen_nsIIdentityCredentialPromptService_h__


#include "nsISupports.h"

#include "js/Value.h"

#include "js/GCAnnotations.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 BrowsingContext; /* webidl BrowsingContext */
} // namespace dom
} // namespace mozilla


/* starting interface:    nsIIdentityCredentialPromptService */
#define NS_IIDENTITYCREDENTIALPROMPTSERVICE_IID_STR "936007db-a957-4f1d-a23d-f7d9403223e6"

#define NS_IIDENTITYCREDENTIALPROMPTSERVICE_IID \
  {0x936007db, 0xa957, 0x4f1d, \
    { 0xa2, 0x3d, 0xf7, 0xd9, 0x40, 0x32, 0x23, 0xe6 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIIdentityCredentialPromptService) nsIIdentityCredentialPromptService : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IIDENTITYCREDENTIALPROMPTSERVICE_IID)

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

  /* Promise showProviderPrompt (in BrowsingContext browsingContext, in jsval identityProviders, in jsval identityManifests); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialPromptService_showProviderPrompt)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD ShowProviderPrompt(mozilla::dom::BrowsingContext *browsingContext, JS::Handle<JS::Value> identityProviders, JS::Handle<JS::Value> identityManifests, ::mozilla::dom::Promise * * _retval) = 0;

  /* Promise showAccountListPrompt (in BrowsingContext browsingContext, in jsval accountList, in jsval identityProvider, in jsval identityManifest); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialPromptService_showAccountListPrompt)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD ShowAccountListPrompt(mozilla::dom::BrowsingContext *browsingContext, JS::Handle<JS::Value> accountList, JS::Handle<JS::Value> identityProvider, JS::Handle<JS::Value> identityManifest, ::mozilla::dom::Promise * * _retval) = 0;

  /* void close (in BrowsingContext browsingContext); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialPromptService_close)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD Close(mozilla::dom::BrowsingContext *browsingContext) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIIDENTITYCREDENTIALPROMPTSERVICE \
  NS_IMETHOD ShowProviderPrompt(mozilla::dom::BrowsingContext *browsingContext, JS::Handle<JS::Value> identityProviders, JS::Handle<JS::Value> identityManifests, ::mozilla::dom::Promise * * _retval) override; \
  NS_IMETHOD ShowAccountListPrompt(mozilla::dom::BrowsingContext *browsingContext, JS::Handle<JS::Value> accountList, JS::Handle<JS::Value> identityProvider, JS::Handle<JS::Value> identityManifest, ::mozilla::dom::Promise * * _retval) override; \
  NS_IMETHOD Close(mozilla::dom::BrowsingContext *browsingContext) 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_NSIIDENTITYCREDENTIALPROMPTSERVICE \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialPromptService_showProviderPrompt)\
  nsresult ShowProviderPrompt(mozilla::dom::BrowsingContext *browsingContext, JS::Handle<JS::Value> identityProviders, JS::Handle<JS::Value> identityManifests, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialPromptService_showAccountListPrompt)\
  nsresult ShowAccountListPrompt(mozilla::dom::BrowsingContext *browsingContext, JS::Handle<JS::Value> accountList, JS::Handle<JS::Value> identityProvider, JS::Handle<JS::Value> identityManifest, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIIdentityCredentialPromptService_close)\
  nsresult Close(mozilla::dom::BrowsingContext *browsingContext); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIIDENTITYCREDENTIALPROMPTSERVICE(_to) \
  NS_IMETHOD ShowProviderPrompt(mozilla::dom::BrowsingContext *browsingContext, JS::Handle<JS::Value> identityProviders, JS::Handle<JS::Value> identityManifests, ::mozilla::dom::Promise * * _retval) override { return _to ShowProviderPrompt(browsingContext, identityProviders, identityManifests, _retval); } \
  NS_IMETHOD ShowAccountListPrompt(mozilla::dom::BrowsingContext *browsingContext, JS::Handle<JS::Value> accountList, JS::Handle<JS::Value> identityProvider, JS::Handle<JS::Value> identityManifest, ::mozilla::dom::Promise * * _retval) override { return _to ShowAccountListPrompt(browsingContext, accountList, identityProvider, identityManifest, _retval); } \
  NS_IMETHOD Close(mozilla::dom::BrowsingContext *browsingContext) override { return _to Close(browsingContext); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIIDENTITYCREDENTIALPROMPTSERVICE(_to) \
  NS_IMETHOD ShowProviderPrompt(mozilla::dom::BrowsingContext *browsingContext, JS::Handle<JS::Value> identityProviders, JS::Handle<JS::Value> identityManifests, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ShowProviderPrompt(browsingContext, identityProviders, identityManifests, _retval); } \
  NS_IMETHOD ShowAccountListPrompt(mozilla::dom::BrowsingContext *browsingContext, JS::Handle<JS::Value> accountList, JS::Handle<JS::Value> identityProvider, JS::Handle<JS::Value> identityManifest, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ShowAccountListPrompt(browsingContext, accountList, identityProvider, identityManifest, _retval); } \
  NS_IMETHOD Close(mozilla::dom::BrowsingContext *browsingContext) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Close(browsingContext); } 


#endif /* __gen_nsIIdentityCredentialPromptService_h__ */
