/*
DO NOT MODIFY THIS FILE.  It is automatically generated and changes will be over-written
on the next generation.

It contains enumerations used by the {{stinger.name}} interface.

LICENSE: This generated code is not subject to any license restrictions from the generator itself.
TODO: Get license text from stinger file
*/


#pragma once
#include <string>
#include <chrono>
#include <vector>
#include "utils.hpp"
#include "{{stinger.cpp.enum_header_file}}"
#include "structs.hpp"


{%for method_name, method in stinger.methods.items()%}

struct {{method_name | UpperCamelCase}}RequestArguments {
    void AddToRapidJsonObject(rapidjson::Value& parent, rapidjson::Document::AllocatorType& allocator) const;
    static {{method_name | UpperCamelCase}}RequestArguments FromRapidJsonObject(const rapidjson::Value& jsonObj);
    {%-if method.arg_list | length > 0 %}
    // Values...
    {%-for arg in method.arg_list %}
    {{arg.cpp_temp_type}} {{arg.name|lowerCamelCase}};
    {%-endfor%}
    {%endif%}
};

struct {{method_name | UpperCamelCase}}ReturnValues {
    void AddToRapidJsonObject(rapidjson::Value& parent, rapidjson::Document::AllocatorType& allocator) const;
    static {{method_name | UpperCamelCase}}ReturnValues FromRapidJsonObject(const rapidjson::Value& jsonObj);
    {%-if method.return_arg_list | length > 0 %}
    // Values...
    {%-for arg in method.return_arg_list %}
    {{arg.cpp_temp_type}} {{arg.name|lowerCamelCase}};
    {%-endfor%}
    {%endif%}
};
{%-endfor%}