/* This file is autogenerated. DO NOT CHANGE. All changes will be lost */

#ifndef TESTSERVICE_CLIENT_GRPC_QPB_H
#define TESTSERVICE_CLIENT_GRPC_QPB_H

#include "qtgrpc/tests/testservice.qpb.h"
#include "tst_qtgrpcgen_client_grpc_only_exports.qpb.h"

#include <QtGrpc/qgrpccallreply.h>
#include <QtGrpc/qgrpcclientbase.h>
#include <QtGrpc/qgrpcstream.h>

#include <memory>

namespace qtgrpc::tests {
namespace TestService {

class QPB_TST_QTGRPCGEN_CLIENT_GRPC_ONLY_EXPORT Client : public QGrpcClientBase
{
    Q_OBJECT

public:
    explicit Client(QObject *parent = nullptr);
    ~Client() override;

    [[nodiscard]]
    std::unique_ptr<QGrpcCallReply> testMethod(const qtgrpc::tests::SimpleStringMessage &arg);
    [[nodiscard]]
    std::unique_ptr<QGrpcCallReply> testMethod(const qtgrpc::tests::SimpleStringMessage &arg, const QGrpcCallOptions &options);

    [[nodiscard]]
    std::unique_ptr<QGrpcServerStream> testMethodServerStream(const qtgrpc::tests::SimpleStringMessage &arg);
    [[nodiscard]]
    std::unique_ptr<QGrpcServerStream> testMethodServerStream(const qtgrpc::tests::SimpleStringMessage &arg, const QGrpcCallOptions &options);

    [[nodiscard]]
    std::unique_ptr<QGrpcClientStream> testMethodClientStream(const qtgrpc::tests::SimpleStringMessage &arg);
    [[nodiscard]]
    std::unique_ptr<QGrpcClientStream> testMethodClientStream(const qtgrpc::tests::SimpleStringMessage &arg, const QGrpcCallOptions &options);

    [[nodiscard]]
    std::unique_ptr<QGrpcBidiStream> testMethodBiStream(const qtgrpc::tests::SimpleStringMessage &arg);
    [[nodiscard]]
    std::unique_ptr<QGrpcBidiStream> testMethodBiStream(const qtgrpc::tests::SimpleStringMessage &arg, const QGrpcCallOptions &options);


};
} // namespace TestService
} // namespace qtgrpc::tests

#endif // TESTSERVICE_CLIENT_GRPC_QPB_H
