// AUTOGENERATED FILE - DO NOT MODIFY!
// This file generated by Djinni from test.djinni

#pragma once

#include "assorted_integers.hpp"
#include "color.hpp"
#include "map_list_record.hpp"
#include "nested_collection.hpp"
#include "primitive_list.hpp"
#include "set_record.hpp"
#include <cstdint>
#include <experimental/optional>
#include <memory>
#include <string>
#include <unordered_map>

class ClientInterface;
class Token;

class TestHelpers {
public:
    virtual ~TestHelpers() {}

    static SetRecord get_set_record();

    static bool check_set_record(const SetRecord & rec);

    static PrimitiveList get_primitive_list();

    static bool check_primitive_list(const PrimitiveList & pl);

    static NestedCollection get_nested_collection();

    static bool check_nested_collection(const NestedCollection & nc);

    static std::unordered_map<std::string, int64_t> get_map();

    static bool check_map(const std::unordered_map<std::string, int64_t> & m);

    static std::unordered_map<std::string, int64_t> get_empty_map();

    static bool check_empty_map(const std::unordered_map<std::string, int64_t> & m);

    static MapListRecord get_map_list_record();

    static bool check_map_list_record(const MapListRecord & m);

    static void check_client_interface_ascii(const std::shared_ptr<ClientInterface> & i);

    static void check_client_interface_nonascii(const std::shared_ptr<ClientInterface> & i);

    static void check_enum_map(const std::unordered_map<color, std::string> & m);

    static std::shared_ptr<Token> token_id(const std::shared_ptr<Token> & t);

    static std::shared_ptr<Token> create_cpp_token();

    static void check_cpp_token(const std::shared_ptr<Token> & t);

    static int64_t cpp_token_id(const std::shared_ptr<Token> & t);

    static std::experimental::optional<int32_t> return_none();

    /** Ensures that we generate integer translation code */
    static AssortedIntegers assorted_integers_id(const AssortedIntegers & i);
};
