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

#ifndef __gen_nsITLSSocketControl_h__
#define __gen_nsITLSSocketControl_h__


#include "nsISupports.h"

#include "js/Value.h"

#include "mozilla/AlreadyAddRefed.h"
#include "mozilla/Assertions.h"
#include "mozilla/DebugOnly.h"

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIInterfaceRequestor; /* forward declaration */

class nsITlsHandshakeCallbackListener; /* forward declaration */

class nsITransportSecurityInfo; /* forward declaration */

class nsIX509Cert; /* forward declaration */

// %{C++:14-15
#include "nsStringFwd.h"
#include "nsTArrayForwardDeclare.h"
// %}

/* starting interface:    nsITLSSocketControl */
#define NS_ITLSSOCKETCONTROL_IID_STR "418265c8-654e-4fbb-ba62-4eed27de1f03"

#define NS_ITLSSOCKETCONTROL_IID \
  {0x418265c8, 0x654e, 0x4fbb, \
    { 0xba, 0x62, 0x4e, 0xed, 0x27, 0xde, 0x1f, 0x03 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsITLSSocketControl) nsITLSSocketControl : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_ITLSSOCKETCONTROL_IID)

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

  /* [noscript] void proxyStartSSL (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_proxyStartSSL)
  NS_IMETHOD ProxyStartSSL(void) = 0;

  /* [noscript] void StartTLS (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_StartTLS)
  NS_IMETHOD StartTLS(void) = 0;

  /* [implicit_jscontext,must_use] Promise asyncStartTLS (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_asyncStartTLS)
  [[nodiscard]] NS_IMETHOD AsyncStartTLS(JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

  /* [noscript] void setNPNList (in nsCStringTArrayRef aNPNList); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_setNPNList)
  NS_IMETHOD SetNPNList(nsTArray<nsCString> & aNPNList) = 0;

  /* ACString getAlpnEarlySelection (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_getAlpnEarlySelection)
  NS_IMETHOD GetAlpnEarlySelection(nsACString& _retval) = 0;

  /* readonly attribute boolean earlyDataAccepted; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_earlyDataAccepted)
  NS_IMETHOD GetEarlyDataAccepted(bool *aEarlyDataAccepted) = 0;

  /* readonly attribute boolean resumptionTokenPresent; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_resumptionTokenPresent)
  NS_IMETHOD GetResumptionTokenPresent(bool *aResumptionTokenPresent) = 0;

  /* void driveHandshake (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_driveHandshake)
  NS_IMETHOD DriveHandshake(void) = 0;

  /* boolean joinConnection (in ACString npnProtocol, in ACString hostname, in long port); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_joinConnection)
  NS_IMETHOD JoinConnection(const nsACString& npnProtocol, const nsACString& hostname, int32_t port, bool *_retval) = 0;

  /* boolean testJoinConnection (in ACString npnProtocol, in ACString hostname, in long port); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_testJoinConnection)
  NS_IMETHOD TestJoinConnection(const nsACString& npnProtocol, const nsACString& hostname, int32_t port, bool *_retval) = 0;

  /* boolean isAcceptableForHost (in ACString hostname); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_isAcceptableForHost)
  NS_IMETHOD IsAcceptableForHost(const nsACString& hostname, bool *_retval) = 0;

  /* [infallible] readonly attribute short KEAUsed; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_KEAUsed)
  NS_IMETHOD GetKEAUsed(int16_t *aKEAUsed) = 0;
  inline int16_t  GetKEAUsed()
  {
    int16_t result;
    mozilla::DebugOnly<nsresult> rv = GetKEAUsed(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

  /* [infallible] readonly attribute unsigned long KEAKeyBits; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_KEAKeyBits)
  NS_IMETHOD GetKEAKeyBits(uint32_t *aKEAKeyBits) = 0;
  inline uint32_t  GetKEAKeyBits()
  {
    uint32_t result;
    mozilla::DebugOnly<nsresult> rv = GetKEAKeyBits(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

  enum {
    KEY_EXCHANGE_UNKNOWN MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_KEY_EXCHANGE_UNKNOWN) = -1
  };

  /* readonly attribute uint32_t providerFlags; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_providerFlags)
  NS_IMETHOD GetProviderFlags(uint32_t *aProviderFlags) = 0;

  enum {
    SSL_VERSION_3 MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_SSL_VERSION_3) = 768,
    TLS_VERSION_1 MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_TLS_VERSION_1) = 769,
    TLS_VERSION_1_1 MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_TLS_VERSION_1_1) = 770,
    TLS_VERSION_1_2 MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_TLS_VERSION_1_2) = 771,
    TLS_VERSION_1_3 MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_TLS_VERSION_1_3) = 772,
    SSL_VERSION_UNKNOWN MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_SSL_VERSION_UNKNOWN) = -1
  };

  /* [infallible] readonly attribute short SSLVersionUsed; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_SSLVersionUsed)
  NS_IMETHOD GetSSLVersionUsed(int16_t *aSSLVersionUsed) = 0;
  inline int16_t  GetSSLVersionUsed()
  {
    int16_t result;
    mozilla::DebugOnly<nsresult> rv = GetSSLVersionUsed(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

  /* [infallible] readonly attribute short SSLVersionOffered; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_SSLVersionOffered)
  NS_IMETHOD GetSSLVersionOffered(int16_t *aSSLVersionOffered) = 0;
  inline int16_t  GetSSLVersionOffered()
  {
    int16_t result;
    mozilla::DebugOnly<nsresult> rv = GetSSLVersionOffered(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

  enum {
    SSL_MAC_UNKNOWN MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_SSL_MAC_UNKNOWN) = -1,
    SSL_MAC_NULL MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_SSL_MAC_NULL) = 0,
    SSL_MAC_MD5 MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_SSL_MAC_MD5) = 1,
    SSL_MAC_SHA MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_SSL_MAC_SHA) = 2,
    SSL_HMAC_MD5 MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_SSL_HMAC_MD5) = 3,
    SSL_HMAC_SHA MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_SSL_HMAC_SHA) = 4,
    SSL_HMAC_SHA256 MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_SSL_HMAC_SHA256) = 5,
    SSL_MAC_AEAD MOZ_BINDING(binding_to, idl, const, XPIDL_nsITLSSocketControl_SSL_MAC_AEAD) = 6
  };

  /* [infallible] readonly attribute short MACAlgorithmUsed; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_MACAlgorithmUsed)
  NS_IMETHOD GetMACAlgorithmUsed(int16_t *aMACAlgorithmUsed) = 0;
  inline int16_t  GetMACAlgorithmUsed()
  {
    int16_t result;
    mozilla::DebugOnly<nsresult> rv = GetMACAlgorithmUsed(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

  /* [nostdcall,notxpcom] attribute boolean denyClientCert; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_denyClientCert)
  virtual bool GetDenyClientCert() = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsITLSSocketControl_denyClientCert)
  virtual void SetDenyClientCert(bool aDenyClientCert) = 0;

  /* [infallible] readonly attribute boolean clientCertSent; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_clientCertSent)
  NS_IMETHOD GetClientCertSent(bool *aClientCertSent) = 0;
  inline bool  GetClientCertSent()
  {
    bool result;
    mozilla::DebugOnly<nsresult> rv = GetClientCertSent(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

  /* [infallible] readonly attribute boolean failedVerification; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_failedVerification)
  NS_IMETHOD GetFailedVerification(bool *aFailedVerification) = 0;
  inline bool  GetFailedVerification()
  {
    bool result;
    mozilla::DebugOnly<nsresult> rv = GetFailedVerification(&result);
    MOZ_ASSERT(NS_SUCCEEDED(rv));
    return result;
  }

  /* attribute ACString esniTxt; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_esniTxt)
  NS_IMETHOD GetEsniTxt(nsACString& aEsniTxt) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsITLSSocketControl_esniTxt)
  NS_IMETHOD SetEsniTxt(const nsACString& aEsniTxt) = 0;

  /* attribute ACString echConfig; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_echConfig)
  NS_IMETHOD GetEchConfig(nsACString& aEchConfig) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsITLSSocketControl_echConfig)
  NS_IMETHOD SetEchConfig(const nsACString& aEchConfig) = 0;

  /* readonly attribute ACString retryEchConfig; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_retryEchConfig)
  NS_IMETHOD GetRetryEchConfig(nsACString& aRetryEchConfig) = 0;

  /* [noscript] void disableEarlyData (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_disableEarlyData)
  NS_IMETHOD DisableEarlyData(void) = 0;

  /* [noscript] void setHandshakeCallbackListener (in nsITlsHandshakeCallbackListener callback); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_setHandshakeCallbackListener)
  NS_IMETHOD SetHandshakeCallbackListener(nsITlsHandshakeCallbackListener *callback) = 0;

  /* readonly attribute ACString peerId; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_peerId)
  NS_IMETHOD GetPeerId(nsACString& aPeerId) = 0;

  /* readonly attribute nsITransportSecurityInfo securityInfo; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_securityInfo)
  NS_IMETHOD GetSecurityInfo(nsITransportSecurityInfo **aSecurityInfo) = 0;

  /* [implicit_jscontext,must_use] Promise asyncGetSecurityInfo (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_asyncGetSecurityInfo)
  [[nodiscard]] NS_IMETHOD AsyncGetSecurityInfo(JSContext* cx, ::mozilla::dom::Promise * * _retval) = 0;

  /* void claim (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_claim)
  NS_IMETHOD Claim(void) = 0;

  /* attribute uint64_t browserId; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_browserId)
  NS_IMETHOD GetBrowserId(uint64_t *aBrowserId) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsITLSSocketControl_browserId)
  NS_IMETHOD SetBrowserId(uint64_t aBrowserId) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSITLSSOCKETCONTROL \
  NS_IMETHOD ProxyStartSSL(void) override; \
  NS_IMETHOD StartTLS(void) override; \
  [[nodiscard]] NS_IMETHOD AsyncStartTLS(JSContext* cx, ::mozilla::dom::Promise * * _retval) override; \
  NS_IMETHOD SetNPNList(nsTArray<nsCString> & aNPNList) override; \
  NS_IMETHOD GetAlpnEarlySelection(nsACString& _retval) override; \
  NS_IMETHOD GetEarlyDataAccepted(bool *aEarlyDataAccepted) override; \
  NS_IMETHOD GetResumptionTokenPresent(bool *aResumptionTokenPresent) override; \
  NS_IMETHOD DriveHandshake(void) override; \
  NS_IMETHOD JoinConnection(const nsACString& npnProtocol, const nsACString& hostname, int32_t port, bool *_retval) override; \
  NS_IMETHOD TestJoinConnection(const nsACString& npnProtocol, const nsACString& hostname, int32_t port, bool *_retval) override; \
  NS_IMETHOD IsAcceptableForHost(const nsACString& hostname, bool *_retval) override; \
  using nsITLSSocketControl::GetKEAUsed; \
  NS_IMETHOD GetKEAUsed(int16_t *aKEAUsed) override; \
  using nsITLSSocketControl::GetKEAKeyBits; \
  NS_IMETHOD GetKEAKeyBits(uint32_t *aKEAKeyBits) override; \
  NS_IMETHOD GetProviderFlags(uint32_t *aProviderFlags) override; \
  using nsITLSSocketControl::GetSSLVersionUsed; \
  NS_IMETHOD GetSSLVersionUsed(int16_t *aSSLVersionUsed) override; \
  using nsITLSSocketControl::GetSSLVersionOffered; \
  NS_IMETHOD GetSSLVersionOffered(int16_t *aSSLVersionOffered) override; \
  using nsITLSSocketControl::GetMACAlgorithmUsed; \
  NS_IMETHOD GetMACAlgorithmUsed(int16_t *aMACAlgorithmUsed) override; \
  virtual bool GetDenyClientCert() override; \
  virtual void SetDenyClientCert(bool aDenyClientCert) override; \
  using nsITLSSocketControl::GetClientCertSent; \
  NS_IMETHOD GetClientCertSent(bool *aClientCertSent) override; \
  using nsITLSSocketControl::GetFailedVerification; \
  NS_IMETHOD GetFailedVerification(bool *aFailedVerification) override; \
  NS_IMETHOD GetEsniTxt(nsACString& aEsniTxt) override; \
  NS_IMETHOD SetEsniTxt(const nsACString& aEsniTxt) override; \
  NS_IMETHOD GetEchConfig(nsACString& aEchConfig) override; \
  NS_IMETHOD SetEchConfig(const nsACString& aEchConfig) override; \
  NS_IMETHOD GetRetryEchConfig(nsACString& aRetryEchConfig) override; \
  NS_IMETHOD DisableEarlyData(void) override; \
  NS_IMETHOD SetHandshakeCallbackListener(nsITlsHandshakeCallbackListener *callback) override; \
  NS_IMETHOD GetPeerId(nsACString& aPeerId) override; \
  NS_IMETHOD GetSecurityInfo(nsITransportSecurityInfo **aSecurityInfo) override; \
  [[nodiscard]] NS_IMETHOD AsyncGetSecurityInfo(JSContext* cx, ::mozilla::dom::Promise * * _retval) override; \
  NS_IMETHOD Claim(void) override; \
  NS_IMETHOD GetBrowserId(uint64_t *aBrowserId) override; \
  NS_IMETHOD SetBrowserId(uint64_t aBrowserId) 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_NSITLSSOCKETCONTROL \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_proxyStartSSL)\
  nsresult ProxyStartSSL(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_StartTLS)\
  nsresult StartTLS(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_asyncStartTLS)\
  [[nodiscard]] nsresult AsyncStartTLS(JSContext* cx, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_setNPNList)\
  nsresult SetNPNList(nsTArray<nsCString> & aNPNList); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_getAlpnEarlySelection)\
  nsresult GetAlpnEarlySelection(nsACString& _retval); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_earlyDataAccepted)\
  nsresult GetEarlyDataAccepted(bool *aEarlyDataAccepted); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_resumptionTokenPresent)\
  nsresult GetResumptionTokenPresent(bool *aResumptionTokenPresent); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_driveHandshake)\
  nsresult DriveHandshake(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_joinConnection)\
  nsresult JoinConnection(const nsACString& npnProtocol, const nsACString& hostname, int32_t port, bool *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_testJoinConnection)\
  nsresult TestJoinConnection(const nsACString& npnProtocol, const nsACString& hostname, int32_t port, bool *_retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_isAcceptableForHost)\
  nsresult IsAcceptableForHost(const nsACString& hostname, bool *_retval); \
  using nsITLSSocketControl::GetKEAUsed; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_KEAUsed)\
  nsresult GetKEAUsed(int16_t *aKEAUsed); \
  using nsITLSSocketControl::GetKEAKeyBits; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_KEAKeyBits)\
  nsresult GetKEAKeyBits(uint32_t *aKEAKeyBits); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_providerFlags)\
  nsresult GetProviderFlags(uint32_t *aProviderFlags); \
  using nsITLSSocketControl::GetSSLVersionUsed; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_SSLVersionUsed)\
  nsresult GetSSLVersionUsed(int16_t *aSSLVersionUsed); \
  using nsITLSSocketControl::GetSSLVersionOffered; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_SSLVersionOffered)\
  nsresult GetSSLVersionOffered(int16_t *aSSLVersionOffered); \
  using nsITLSSocketControl::GetMACAlgorithmUsed; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_MACAlgorithmUsed)\
  nsresult GetMACAlgorithmUsed(int16_t *aMACAlgorithmUsed); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_denyClientCert)\
  bool GetDenyClientCert(); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsITLSSocketControl_denyClientCert)\
  void SetDenyClientCert(bool aDenyClientCert); \
  using nsITLSSocketControl::GetClientCertSent; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_clientCertSent)\
  nsresult GetClientCertSent(bool *aClientCertSent); \
  using nsITLSSocketControl::GetFailedVerification; \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_failedVerification)\
  nsresult GetFailedVerification(bool *aFailedVerification); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_esniTxt)\
  nsresult GetEsniTxt(nsACString& aEsniTxt); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsITLSSocketControl_esniTxt)\
  nsresult SetEsniTxt(const nsACString& aEsniTxt); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_echConfig)\
  nsresult GetEchConfig(nsACString& aEchConfig); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsITLSSocketControl_echConfig)\
  nsresult SetEchConfig(const nsACString& aEchConfig); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_retryEchConfig)\
  nsresult GetRetryEchConfig(nsACString& aRetryEchConfig); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_disableEarlyData)\
  nsresult DisableEarlyData(void); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_setHandshakeCallbackListener)\
  nsresult SetHandshakeCallbackListener(nsITlsHandshakeCallbackListener *callback); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_peerId)\
  nsresult GetPeerId(nsACString& aPeerId); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_securityInfo)\
  nsresult GetSecurityInfo(nsITransportSecurityInfo **aSecurityInfo); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_asyncGetSecurityInfo)\
  [[nodiscard]] nsresult AsyncGetSecurityInfo(JSContext* cx, ::mozilla::dom::Promise * * _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsITLSSocketControl_claim)\
  nsresult Claim(void); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsITLSSocketControl_browserId)\
  nsresult GetBrowserId(uint64_t *aBrowserId); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsITLSSocketControl_browserId)\
  nsresult SetBrowserId(uint64_t aBrowserId); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSITLSSOCKETCONTROL(_to) \
  NS_IMETHOD ProxyStartSSL(void) override { return _to ProxyStartSSL(); } \
  NS_IMETHOD StartTLS(void) override { return _to StartTLS(); } \
  [[nodiscard]] NS_IMETHOD AsyncStartTLS(JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to AsyncStartTLS(cx, _retval); } \
  NS_IMETHOD SetNPNList(nsTArray<nsCString> & aNPNList) override { return _to SetNPNList(aNPNList); } \
  NS_IMETHOD GetAlpnEarlySelection(nsACString& _retval) override { return _to GetAlpnEarlySelection(_retval); } \
  NS_IMETHOD GetEarlyDataAccepted(bool *aEarlyDataAccepted) override { return _to GetEarlyDataAccepted(aEarlyDataAccepted); } \
  NS_IMETHOD GetResumptionTokenPresent(bool *aResumptionTokenPresent) override { return _to GetResumptionTokenPresent(aResumptionTokenPresent); } \
  NS_IMETHOD DriveHandshake(void) override { return _to DriveHandshake(); } \
  NS_IMETHOD JoinConnection(const nsACString& npnProtocol, const nsACString& hostname, int32_t port, bool *_retval) override { return _to JoinConnection(npnProtocol, hostname, port, _retval); } \
  NS_IMETHOD TestJoinConnection(const nsACString& npnProtocol, const nsACString& hostname, int32_t port, bool *_retval) override { return _to TestJoinConnection(npnProtocol, hostname, port, _retval); } \
  NS_IMETHOD IsAcceptableForHost(const nsACString& hostname, bool *_retval) override { return _to IsAcceptableForHost(hostname, _retval); } \
  using nsITLSSocketControl::GetKEAUsed; \
  NS_IMETHOD GetKEAUsed(int16_t *aKEAUsed) override { return _to GetKEAUsed(aKEAUsed); } \
  using nsITLSSocketControl::GetKEAKeyBits; \
  NS_IMETHOD GetKEAKeyBits(uint32_t *aKEAKeyBits) override { return _to GetKEAKeyBits(aKEAKeyBits); } \
  NS_IMETHOD GetProviderFlags(uint32_t *aProviderFlags) override { return _to GetProviderFlags(aProviderFlags); } \
  using nsITLSSocketControl::GetSSLVersionUsed; \
  NS_IMETHOD GetSSLVersionUsed(int16_t *aSSLVersionUsed) override { return _to GetSSLVersionUsed(aSSLVersionUsed); } \
  using nsITLSSocketControl::GetSSLVersionOffered; \
  NS_IMETHOD GetSSLVersionOffered(int16_t *aSSLVersionOffered) override { return _to GetSSLVersionOffered(aSSLVersionOffered); } \
  using nsITLSSocketControl::GetMACAlgorithmUsed; \
  NS_IMETHOD GetMACAlgorithmUsed(int16_t *aMACAlgorithmUsed) override { return _to GetMACAlgorithmUsed(aMACAlgorithmUsed); } \
  virtual bool GetDenyClientCert() override { return _to GetDenyClientCert(); } \
  virtual void SetDenyClientCert(bool aDenyClientCert) override { return _to SetDenyClientCert(aDenyClientCert); } \
  using nsITLSSocketControl::GetClientCertSent; \
  NS_IMETHOD GetClientCertSent(bool *aClientCertSent) override { return _to GetClientCertSent(aClientCertSent); } \
  using nsITLSSocketControl::GetFailedVerification; \
  NS_IMETHOD GetFailedVerification(bool *aFailedVerification) override { return _to GetFailedVerification(aFailedVerification); } \
  NS_IMETHOD GetEsniTxt(nsACString& aEsniTxt) override { return _to GetEsniTxt(aEsniTxt); } \
  NS_IMETHOD SetEsniTxt(const nsACString& aEsniTxt) override { return _to SetEsniTxt(aEsniTxt); } \
  NS_IMETHOD GetEchConfig(nsACString& aEchConfig) override { return _to GetEchConfig(aEchConfig); } \
  NS_IMETHOD SetEchConfig(const nsACString& aEchConfig) override { return _to SetEchConfig(aEchConfig); } \
  NS_IMETHOD GetRetryEchConfig(nsACString& aRetryEchConfig) override { return _to GetRetryEchConfig(aRetryEchConfig); } \
  NS_IMETHOD DisableEarlyData(void) override { return _to DisableEarlyData(); } \
  NS_IMETHOD SetHandshakeCallbackListener(nsITlsHandshakeCallbackListener *callback) override { return _to SetHandshakeCallbackListener(callback); } \
  NS_IMETHOD GetPeerId(nsACString& aPeerId) override { return _to GetPeerId(aPeerId); } \
  NS_IMETHOD GetSecurityInfo(nsITransportSecurityInfo **aSecurityInfo) override { return _to GetSecurityInfo(aSecurityInfo); } \
  [[nodiscard]] NS_IMETHOD AsyncGetSecurityInfo(JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return _to AsyncGetSecurityInfo(cx, _retval); } \
  NS_IMETHOD Claim(void) override { return _to Claim(); } \
  NS_IMETHOD GetBrowserId(uint64_t *aBrowserId) override { return _to GetBrowserId(aBrowserId); } \
  NS_IMETHOD SetBrowserId(uint64_t aBrowserId) override { return _to SetBrowserId(aBrowserId); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSITLSSOCKETCONTROL(_to) \
  NS_IMETHOD ProxyStartSSL(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ProxyStartSSL(); } \
  NS_IMETHOD StartTLS(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->StartTLS(); } \
  [[nodiscard]] NS_IMETHOD AsyncStartTLS(JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncStartTLS(cx, _retval); } \
  NS_IMETHOD SetNPNList(nsTArray<nsCString> & aNPNList) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNPNList(aNPNList); } \
  NS_IMETHOD GetAlpnEarlySelection(nsACString& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAlpnEarlySelection(_retval); } \
  NS_IMETHOD GetEarlyDataAccepted(bool *aEarlyDataAccepted) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEarlyDataAccepted(aEarlyDataAccepted); } \
  NS_IMETHOD GetResumptionTokenPresent(bool *aResumptionTokenPresent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetResumptionTokenPresent(aResumptionTokenPresent); } \
  NS_IMETHOD DriveHandshake(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DriveHandshake(); } \
  NS_IMETHOD JoinConnection(const nsACString& npnProtocol, const nsACString& hostname, int32_t port, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->JoinConnection(npnProtocol, hostname, port, _retval); } \
  NS_IMETHOD TestJoinConnection(const nsACString& npnProtocol, const nsACString& hostname, int32_t port, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->TestJoinConnection(npnProtocol, hostname, port, _retval); } \
  NS_IMETHOD IsAcceptableForHost(const nsACString& hostname, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsAcceptableForHost(hostname, _retval); } \
  NS_IMETHOD GetKEAUsed(int16_t *aKEAUsed) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetKEAUsed(aKEAUsed); } \
  NS_IMETHOD GetKEAKeyBits(uint32_t *aKEAKeyBits) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetKEAKeyBits(aKEAKeyBits); } \
  NS_IMETHOD GetProviderFlags(uint32_t *aProviderFlags) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProviderFlags(aProviderFlags); } \
  NS_IMETHOD GetSSLVersionUsed(int16_t *aSSLVersionUsed) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSSLVersionUsed(aSSLVersionUsed); } \
  NS_IMETHOD GetSSLVersionOffered(int16_t *aSSLVersionOffered) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSSLVersionOffered(aSSLVersionOffered); } \
  NS_IMETHOD GetMACAlgorithmUsed(int16_t *aMACAlgorithmUsed) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMACAlgorithmUsed(aMACAlgorithmUsed); } \
  virtual bool GetDenyClientCert() override; \
  virtual void SetDenyClientCert(bool aDenyClientCert) override; \
  NS_IMETHOD GetClientCertSent(bool *aClientCertSent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetClientCertSent(aClientCertSent); } \
  NS_IMETHOD GetFailedVerification(bool *aFailedVerification) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFailedVerification(aFailedVerification); } \
  NS_IMETHOD GetEsniTxt(nsACString& aEsniTxt) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEsniTxt(aEsniTxt); } \
  NS_IMETHOD SetEsniTxt(const nsACString& aEsniTxt) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEsniTxt(aEsniTxt); } \
  NS_IMETHOD GetEchConfig(nsACString& aEchConfig) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEchConfig(aEchConfig); } \
  NS_IMETHOD SetEchConfig(const nsACString& aEchConfig) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEchConfig(aEchConfig); } \
  NS_IMETHOD GetRetryEchConfig(nsACString& aRetryEchConfig) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRetryEchConfig(aRetryEchConfig); } \
  NS_IMETHOD DisableEarlyData(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DisableEarlyData(); } \
  NS_IMETHOD SetHandshakeCallbackListener(nsITlsHandshakeCallbackListener *callback) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHandshakeCallbackListener(callback); } \
  NS_IMETHOD GetPeerId(nsACString& aPeerId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPeerId(aPeerId); } \
  NS_IMETHOD GetSecurityInfo(nsITransportSecurityInfo **aSecurityInfo) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSecurityInfo(aSecurityInfo); } \
  [[nodiscard]] NS_IMETHOD AsyncGetSecurityInfo(JSContext* cx, ::mozilla::dom::Promise * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AsyncGetSecurityInfo(cx, _retval); } \
  NS_IMETHOD Claim(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Claim(); } \
  NS_IMETHOD GetBrowserId(uint64_t *aBrowserId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBrowserId(aBrowserId); } \
  NS_IMETHOD SetBrowserId(uint64_t aBrowserId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBrowserId(aBrowserId); } 


#endif /* __gen_nsITLSSocketControl_h__ */
