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

#ifndef __gen_nsICredentialChooserService_h__
#define __gen_nsICredentialChooserService_h__


#include "nsISupports.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

namespace mozilla {
namespace dom {
class CredentialChooserOption; /* webidl CredentialChooserOption */
} // namespace dom
} // namespace mozilla

class mozIDOMWindow; /* forward declaration */

class nsICredentialChosenCallback; /* forward declaration */

class nsIPrincipal; /* forward declaration */

class nsIURI; /* forward declaration */


/* starting interface:    nsICredentialChooserService */
#define NS_ICREDENTIALCHOOSERSERVICE_IID_STR "673ddc19-03e2-4b30-a868-06297e8fed89"

#define NS_ICREDENTIALCHOOSERSERVICE_IID \
  {0x673ddc19, 0x03e2, 0x4b30, \
    { 0xa8, 0x68, 0x06, 0x29, 0x7e, 0x8f, 0xed, 0x89 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsICredentialChooserService) nsICredentialChooserService : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_ICREDENTIALCHOOSERSERVICE_IID)

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

  /* Promise fetchImageToDataURI (in mozIDOMWindow window, in nsIURI uri); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICredentialChooserService_fetchImageToDataURI)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD FetchImageToDataURI(mozIDOMWindow *window, nsIURI *uri, ::mozilla::dom::Promise * * _retval) = 0;

  /* Promise fetchWellKnown (in nsIURI uri, in nsIPrincipal triggeringPrincipal); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICredentialChooserService_fetchWellKnown)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD FetchWellKnown(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) = 0;

  /* Promise fetchConfig (in nsIURI uri, in nsIPrincipal triggeringPrincipal); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICredentialChooserService_fetchConfig)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD FetchConfig(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) = 0;

  /* Promise fetchAccounts (in nsIURI uri, in nsIPrincipal triggeringPrincipal); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICredentialChooserService_fetchAccounts)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD FetchAccounts(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) = 0;

  /* Promise fetchToken (in nsIURI uri, in string body, in nsIPrincipal triggeringPrincipal); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICredentialChooserService_fetchToken)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD FetchToken(nsIURI *uri, const char * body, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) = 0;

  /* Promise fetchDisconnect (in nsIURI uri, in string body, in nsIPrincipal triggeringPrincipal); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICredentialChooserService_fetchDisconnect)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD FetchDisconnect(nsIURI *uri, const char * body, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSICREDENTIALCHOOSERSERVICE \
  NS_IMETHOD FetchImageToDataURI(mozIDOMWindow *window, nsIURI *uri, ::mozilla::dom::Promise * * _retval) override; \
  NS_IMETHOD FetchWellKnown(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override; \
  NS_IMETHOD FetchConfig(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override; \
  NS_IMETHOD FetchAccounts(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override; \
  NS_IMETHOD FetchToken(nsIURI *uri, const char * body, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override; \
  NS_IMETHOD FetchDisconnect(nsIURI *uri, const char * body, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) 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_NSICREDENTIALCHOOSERSERVICE \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICredentialChooserService_fetchImageToDataURI)\
  nsresult FetchImageToDataURI(mozIDOMWindow *window, nsIURI *uri, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICredentialChooserService_fetchWellKnown)\
  nsresult FetchWellKnown(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICredentialChooserService_fetchConfig)\
  nsresult FetchConfig(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICredentialChooserService_fetchAccounts)\
  nsresult FetchAccounts(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICredentialChooserService_fetchToken)\
  nsresult FetchToken(nsIURI *uri, const char * body, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsICredentialChooserService_fetchDisconnect)\
  nsresult FetchDisconnect(nsIURI *uri, const char * body, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSICREDENTIALCHOOSERSERVICE(_to) \
  NS_IMETHOD FetchImageToDataURI(mozIDOMWindow *window, nsIURI *uri, ::mozilla::dom::Promise * * _retval) override { return _to FetchImageToDataURI(window, uri, _retval); } \
  NS_IMETHOD FetchWellKnown(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override { return _to FetchWellKnown(uri, triggeringPrincipal, _retval); } \
  NS_IMETHOD FetchConfig(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override { return _to FetchConfig(uri, triggeringPrincipal, _retval); } \
  NS_IMETHOD FetchAccounts(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override { return _to FetchAccounts(uri, triggeringPrincipal, _retval); } \
  NS_IMETHOD FetchToken(nsIURI *uri, const char * body, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override { return _to FetchToken(uri, body, triggeringPrincipal, _retval); } \
  NS_IMETHOD FetchDisconnect(nsIURI *uri, const char * body, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override { return _to FetchDisconnect(uri, body, triggeringPrincipal, _retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSICREDENTIALCHOOSERSERVICE(_to) \
  NS_IMETHOD FetchImageToDataURI(mozIDOMWindow *window, nsIURI *uri, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FetchImageToDataURI(window, uri, _retval); } \
  NS_IMETHOD FetchWellKnown(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FetchWellKnown(uri, triggeringPrincipal, _retval); } \
  NS_IMETHOD FetchConfig(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FetchConfig(uri, triggeringPrincipal, _retval); } \
  NS_IMETHOD FetchAccounts(nsIURI *uri, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FetchAccounts(uri, triggeringPrincipal, _retval); } \
  NS_IMETHOD FetchToken(nsIURI *uri, const char * body, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FetchToken(uri, body, triggeringPrincipal, _retval); } \
  NS_IMETHOD FetchDisconnect(nsIURI *uri, const char * body, nsIPrincipal *triggeringPrincipal, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FetchDisconnect(uri, body, triggeringPrincipal, _retval); } 


#endif /* __gen_nsICredentialChooserService_h__ */
