#ifndef REMOTING_PROTO_INTERNAL_STUBS_H_
#define REMOTING_PROTO_INTERNAL_STUBS_H_
#include <memory>
#include <optional>
#include <string>
#include <string_view>
#include "remoting/proto/do_nothing.pb.h"
#include "remoting/proto/logging_service.h"
#include "remoting/proto/messaging_service.h"
#include "remoting/proto/remote_support_service.h"
#include "remoting/proto/session_authz_service.h"
namespace remoting::internal {
using DoNothingProto = remoting::DoNothing;
using RemoteAccessHostV1Proto = DoNothingProto;
using ProvisionCorpMachineRequest = DoNothingProto;
extern std::string GetMachineProvisioningRequestPath();
extern std::unique_ptr<ProvisionCorpMachineRequest>
GetMachineProvisioningRequest(
const std::string& owner_email,
const std::string& fqdn,
const std::string& public_key,
const std::string& version,
const std::optional<std::string>& existing_host_id);
using ProvisionCorpMachineResponse = DoNothingProto;
extern const std::string& GetAuthorizationCode(
const ProvisionCorpMachineResponse&);
extern const std::string& GetServiceAccount(
const ProvisionCorpMachineResponse&);
extern const std::string& GetOwnerEmail(const ProvisionCorpMachineResponse&);
extern const std::string& GetHostId(const ProvisionCorpMachineResponse&);
using ReportProvisioningErrorRequest = DoNothingProto;
extern std::string GetReportProvisioningErrorRequestPath();
extern std::unique_ptr<ReportProvisioningErrorRequest>
GetReportProvisioningErrorRequest(const std::string& directory_id,
const std::string& error_message,
const std::string& version);
using SendHeartbeatRequest = DoNothingProto;
extern std::string GetSendHeartbeatRequestPath();
extern std::unique_ptr<SendHeartbeatRequest> GetSendHeartbeatRequest(
const std::string& directory_id);
using UpdateRemoteAccessHostRequest = DoNothingProto;
extern std::string GetUpdateRemoteAccessHostRequestPath();
extern std::unique_ptr<UpdateRemoteAccessHostRequest>
GetUpdateRemoteAccessHostRequest(const std::string& directory_id,
std::optional<std::string> host_version,
std::optional<std::string> signaling_id,
std::optional<std::string> offline_reason,
std::optional<std::string> os_name,
std::optional<std::string> os_version);
extern std::string_view GetRemoteAccessSessionAuthzPath();
extern std::string_view GetRemoteSupportSessionAuthzPath();
using GenerateHostTokenRequest = DoNothingProto;
extern std::string_view GetGenerateHostTokenRequestVerb();
extern std::unique_ptr<GenerateHostTokenRequest> GetGenerateHostTokenRequest(
const GenerateHostTokenRequestStruct&);
using GenerateHostTokenResponse = DoNothingProto;
extern std::unique_ptr<GenerateHostTokenResponseStruct>
GetGenerateHostTokenResponseStruct(const GenerateHostTokenResponse&);
using VerifySessionTokenRequest = DoNothingProto;
extern std::string_view GetVerifySessionTokenRequestVerb();
extern std::unique_ptr<VerifySessionTokenRequest> GetVerifySessionTokenRequest(
const VerifySessionTokenRequestStruct&);
using VerifySessionTokenResponse = DoNothingProto;
extern std::unique_ptr<VerifySessionTokenResponseStruct>
GetVerifySessionTokenResponseStruct(const VerifySessionTokenResponse&);
using ReauthorizeHostRequest = DoNothingProto;
extern std::string_view GetReauthorizeHostRequestVerb();
extern std::unique_ptr<ReauthorizeHostRequest> GetReauthorizeHostRequest(
const ReauthorizeHostRequestStruct&);
using ReauthorizeHostResponse = DoNothingProto;
extern std::unique_ptr<ReauthorizeHostResponseStruct>
GetReauthorizeHostResponseStruct(const ReauthorizeHostResponse&);
extern std::string_view GetRemoteAccessLoggingPath();
extern std::string_view GetRemoteSupportLoggingPath();
extern std::string_view GetReportSessionDisconnectedRequestVerb();
using ReportSessionDisconnectedRequest = DoNothingProto;
extern std::unique_ptr<ReportSessionDisconnectedRequest>
GetReportSessionDisconnectedRequest(
const ReportSessionDisconnectedRequestStruct&);
using RemoteSupportHost = DoNothingProto;
extern std::string_view GetCreateRemoteSupportHostRequestPath();
extern std::unique_ptr<RemoteSupportHost> GetRemoteSupportHost(
const RemoteSupportHostStruct& request_struct);
extern std::string_view GetSupportId(const RemoteSupportHost&);
extern std::string_view GetHostOpenChannelPath();
extern std::string_view GetHostSendMessagePath();
using HostOpenChannelRequest = DoNothingProto;
extern std::unique_ptr<HostOpenChannelRequest> GetHostOpenChannelRequest(
const HostOpenChannelRequestStruct&);
using HostOpenChannelResponse = DoNothingProto;
extern std::unique_ptr<HostOpenChannelResponseStruct>
GetHostOpenChannelResponseStruct(const HostOpenChannelResponse&);
using HostSendMessageRequest = DoNothingProto;
extern std::unique_ptr<HostSendMessageRequest> GetHostSendMessageRequest(
const HostSendMessageRequestStruct&);
using HostSendMessageResponse = DoNothingProto;
extern std::unique_ptr<HostSendMessageResponseStruct>
GetHostSendMessageResponseStruct(const HostSendMessageResponse&);
using PeerMessage = DoNothingProto;
extern std::unique_ptr<PeerMessage> GetPeerMessage(const PeerMessageStruct&);
extern std::unique_ptr<PeerMessageStruct> GetPeerMessageStruct(
const PeerMessage&);
using IqStanza = DoNothingProto;
extern std::unique_ptr<IqStanza> GetIqStanza(const IqStanzaStruct&);
extern std::unique_ptr<IqStanzaStruct> GetIqStanzaStruct(const IqStanza&);
using SystemTest = DoNothingProto;
extern std::unique_ptr<SystemTest> GetSystemTest(const SystemTestStruct&);
extern std::unique_ptr<SystemTestStruct> GetSystemTestStruct(const SystemTest&);
}
#endif