#pragma once
#include <json/json.h>
#include <memory>
#include <string>
namespace solidity::frontend
{
class ContractDefinition;
class Type;
class ABI
{
public:
static Json::Value generate(ContractDefinition const& _contractDef);
private:
static Json::Value formatTypeList(
std::vector<std::string> const& _names,
std::vector<Type const*> const& _encodingTypes,
std::vector<Type const*> const& _solidityTypes,
bool _forLibrary
);
static Json::Value formatType(
std::string const& _name,
Type const& _encodingType,
Type const& _solidityType,
bool _forLibrary
);
};
}