/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/security/manager/ssl/nsIOSKeyStore.idl
 */

#ifndef __gen_nsIOSKeyStore_h__
#define __gen_nsIOSKeyStore_h__


#include "nsISupports.h"

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

/* starting interface:    nsIOSKeyStore */
#define NS_IOSKEYSTORE_IID_STR "57972956-5718-42d2-8070-b3fc72212eaf"

#define NS_IOSKEYSTORE_IID \
  {0x57972956, 0x5718, 0x42d2, \
    { 0x80, 0x70, 0xb3, 0xfc, 0x72, 0x21, 0x2e, 0xaf }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIOSKeyStore) nsIOSKeyStore : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IOSKEYSTORE_IID)

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

  /* [implicit_jscontext,must_use] Promise asyncGenerateSecret (in ACString label); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncGenerateSecret)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD AsyncGenerateSecret(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

  /* [implicit_jscontext,must_use] Promise asyncSecretAvailable (in ACString label); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncSecretAvailable)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD AsyncSecretAvailable(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

  /* [implicit_jscontext,must_use] Promise asyncRecoverSecret (in ACString label, in ACString recoveryPhrase); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncRecoverSecret)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD AsyncRecoverSecret(const nsACString& label, const nsACString& recoveryPhrase, JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

  /* [implicit_jscontext,must_use] Promise asyncDeleteSecret (in ACString label); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncDeleteSecret)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD AsyncDeleteSecret(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

  /* [implicit_jscontext,must_use] Promise asyncEncryptBytes (in ACString label, in Array<uint8_t> inBytes); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncEncryptBytes)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD AsyncEncryptBytes(const nsACString& label, const nsTArray<uint8_t >& inBytes, JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

  /* [implicit_jscontext,must_use] Promise asyncDecryptBytes (in ACString label, in ACString encryptedBase64Text); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncDecryptBytes)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD AsyncDecryptBytes(const nsACString& label, const nsACString& encryptedBase64Text, JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

  /* [implicit_jscontext,must_use] Promise asyncGetRecoveryPhrase (in ACString aLabel); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncGetRecoveryPhrase)
  JS_HAZ_CAN_RUN_SCRIPT [[nodiscard]] NS_IMETHOD AsyncGetRecoveryPhrase(const nsACString& aLabel, JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIOSKEYSTORE \
  [[nodiscard]] NS_IMETHOD AsyncGenerateSecret(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval) override; \
  [[nodiscard]] NS_IMETHOD AsyncSecretAvailable(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval) override; \
  [[nodiscard]] NS_IMETHOD AsyncRecoverSecret(const nsACString& label, const nsACString& recoveryPhrase, JSContext* cx, ::mozilla::dom::Promise * * _retval) override; \
  [[nodiscard]] NS_IMETHOD AsyncDeleteSecret(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval) override; \
  [[nodiscard]] NS_IMETHOD AsyncEncryptBytes(const nsACString& label, const nsTArray<uint8_t >& inBytes, JSContext* cx, ::mozilla::dom::Promise * * _retval) override; \
  [[nodiscard]] NS_IMETHOD AsyncDecryptBytes(const nsACString& label, const nsACString& encryptedBase64Text, JSContext* cx, ::mozilla::dom::Promise * * _retval) override; \
  [[nodiscard]] NS_IMETHOD AsyncGetRecoveryPhrase(const nsACString& aLabel, JSContext* cx, ::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_NSIOSKEYSTORE \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncGenerateSecret)\
  [[nodiscard]] nsresult AsyncGenerateSecret(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncSecretAvailable)\
  [[nodiscard]] nsresult AsyncSecretAvailable(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncRecoverSecret)\
  [[nodiscard]] nsresult AsyncRecoverSecret(const nsACString& label, const nsACString& recoveryPhrase, JSContext* cx, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncDeleteSecret)\
  [[nodiscard]] nsresult AsyncDeleteSecret(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncEncryptBytes)\
  [[nodiscard]] nsresult AsyncEncryptBytes(const nsACString& label, const nsTArray<uint8_t >& inBytes, JSContext* cx, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncDecryptBytes)\
  [[nodiscard]] nsresult AsyncDecryptBytes(const nsACString& label, const nsACString& encryptedBase64Text, JSContext* cx, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIOSKeyStore_asyncGetRecoveryPhrase)\
  [[nodiscard]] nsresult AsyncGetRecoveryPhrase(const nsACString& aLabel, JSContext* cx, ::mozilla::dom::Promise * * _retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIOSKEYSTORE(_to) \
  [[nodiscard]] NS_IMETHOD AsyncGenerateSecret(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to AsyncGenerateSecret(label, cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncSecretAvailable(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to AsyncSecretAvailable(label, cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncRecoverSecret(const nsACString& label, const nsACString& recoveryPhrase, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to AsyncRecoverSecret(label, recoveryPhrase, cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncDeleteSecret(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to AsyncDeleteSecret(label, cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncEncryptBytes(const nsACString& label, const nsTArray<uint8_t >& inBytes, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to AsyncEncryptBytes(label, inBytes, cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncDecryptBytes(const nsACString& label, const nsACString& encryptedBase64Text, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to AsyncDecryptBytes(label, encryptedBase64Text, cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncGetRecoveryPhrase(const nsACString& aLabel, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to AsyncGetRecoveryPhrase(aLabel, cx, _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_NSIOSKEYSTORE(_to) \
  [[nodiscard]] NS_IMETHOD AsyncGenerateSecret(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncGenerateSecret(label, cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncSecretAvailable(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncSecretAvailable(label, cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncRecoverSecret(const nsACString& label, const nsACString& recoveryPhrase, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncRecoverSecret(label, recoveryPhrase, cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncDeleteSecret(const nsACString& label, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncDeleteSecret(label, cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncEncryptBytes(const nsACString& label, const nsTArray<uint8_t >& inBytes, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncEncryptBytes(label, inBytes, cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncDecryptBytes(const nsACString& label, const nsACString& encryptedBase64Text, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncDecryptBytes(label, encryptedBase64Text, cx, _retval); } \
  [[nodiscard]] NS_IMETHOD AsyncGetRecoveryPhrase(const nsACString& aLabel, JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncGetRecoveryPhrase(aLabel, cx, _retval); } 


#endif /* __gen_nsIOSKeyStore_h__ */
