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

#ifndef __gen_nsIMLModelResolver_h__
#define __gen_nsIMLModelResolver_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 WindowGlobalParent; /* webidl WindowGlobalParent */
} // namespace dom
} // namespace mozilla


/* starting interface:    nsIMLModelDownloadAuthorizationCallback */
#define NS_IMLMODELDOWNLOADAUTHORIZATIONCALLBACK_IID_STR "d8e9208e-4ffb-4da4-b19d-8923ea59934a"

#define NS_IMLMODELDOWNLOADAUTHORIZATIONCALLBACK_IID \
  {0xd8e9208e, 0x4ffb, 0x4da4, \
    { 0xb1, 0x9d, 0x89, 0x23, 0xea, 0x59, 0x93, 0x4a }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIMLModelDownloadAuthorizationCallback) nsIMLModelDownloadAuthorizationCallback : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IMLMODELDOWNLOADAUTHORIZATIONCALLBACK_IID)

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

  /* void resolve (in boolean aAllow); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIMLModelDownloadAuthorizationCallback_resolve)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD Resolve(bool aAllow) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMLMODELDOWNLOADAUTHORIZATIONCALLBACK \
  NS_IMETHOD Resolve(bool aAllow) 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_NSIMLMODELDOWNLOADAUTHORIZATIONCALLBACK \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIMLModelDownloadAuthorizationCallback_resolve)\
  nsresult Resolve(bool aAllow); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMLMODELDOWNLOADAUTHORIZATIONCALLBACK(_to) \
  NS_IMETHOD Resolve(bool aAllow) override { return _to Resolve(aAllow); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMLMODELDOWNLOADAUTHORIZATIONCALLBACK(_to) \
  NS_IMETHOD Resolve(bool aAllow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Resolve(aAllow); } 


/* starting interface:    nsIMLModelResolver */
#define NS_IMLMODELRESOLVER_IID_STR "f3be56e2-aa39-4335-87c2-9b353db5d3cd"

#define NS_IMLMODELRESOLVER_IID \
  {0xf3be56e2, 0xaa39, 0x4335, \
    { 0x87, 0xc2, 0x9b, 0x35, 0x3d, 0xb5, 0xd3, 0xcd }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIMLModelResolver) nsIMLModelResolver : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IMLMODELRESOLVER_IID)

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

  /* void resolve (in AUTF8String aId, out AUTF8String aEngine, out AUTF8String aModel, out AUTF8String aRevision, out AUTF8String aFilename); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIMLModelResolver_resolve)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD Resolve(const nsACString& aId, nsACString& aEngine, nsACString& aModel, nsACString& aRevision, nsACString& aFilename) = 0;

  /* void authorizeDownload (in AUTF8String aModel, in AUTF8String aRevision, in AUTF8String aFilename, in WindowGlobalParent aWindow, in AString aProgressToken, in nsIMLModelDownloadAuthorizationCallback aCallback); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIMLModelResolver_authorizeDownload)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD AuthorizeDownload(const nsACString& aModel, const nsACString& aRevision, const nsACString& aFilename, mozilla::dom::WindowGlobalParent *aWindow, const nsAString& aProgressToken, nsIMLModelDownloadAuthorizationCallback *aCallback) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMLMODELRESOLVER \
  NS_IMETHOD Resolve(const nsACString& aId, nsACString& aEngine, nsACString& aModel, nsACString& aRevision, nsACString& aFilename) override; \
  NS_IMETHOD AuthorizeDownload(const nsACString& aModel, const nsACString& aRevision, const nsACString& aFilename, mozilla::dom::WindowGlobalParent *aWindow, const nsAString& aProgressToken, nsIMLModelDownloadAuthorizationCallback *aCallback) 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_NSIMLMODELRESOLVER \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIMLModelResolver_resolve)\
  nsresult Resolve(const nsACString& aId, nsACString& aEngine, nsACString& aModel, nsACString& aRevision, nsACString& aFilename); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIMLModelResolver_authorizeDownload)\
  nsresult AuthorizeDownload(const nsACString& aModel, const nsACString& aRevision, const nsACString& aFilename, mozilla::dom::WindowGlobalParent *aWindow, const nsAString& aProgressToken, nsIMLModelDownloadAuthorizationCallback *aCallback); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMLMODELRESOLVER(_to) \
  NS_IMETHOD Resolve(const nsACString& aId, nsACString& aEngine, nsACString& aModel, nsACString& aRevision, nsACString& aFilename) override { return _to Resolve(aId, aEngine, aModel, aRevision, aFilename); } \
  NS_IMETHOD AuthorizeDownload(const nsACString& aModel, const nsACString& aRevision, const nsACString& aFilename, mozilla::dom::WindowGlobalParent *aWindow, const nsAString& aProgressToken, nsIMLModelDownloadAuthorizationCallback *aCallback) override { return _to AuthorizeDownload(aModel, aRevision, aFilename, aWindow, aProgressToken, aCallback); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMLMODELRESOLVER(_to) \
  NS_IMETHOD Resolve(const nsACString& aId, nsACString& aEngine, nsACString& aModel, nsACString& aRevision, nsACString& aFilename) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Resolve(aId, aEngine, aModel, aRevision, aFilename); } \
  NS_IMETHOD AuthorizeDownload(const nsACString& aModel, const nsACString& aRevision, const nsACString& aFilename, mozilla::dom::WindowGlobalParent *aWindow, const nsAString& aProgressToken, nsIMLModelDownloadAuthorizationCallback *aCallback) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AuthorizeDownload(aModel, aRevision, aFilename, aWindow, aProgressToken, aCallback); } 


#endif /* __gen_nsIMLModelResolver_h__ */
