module google.protobuf.compiler.plugin;

import google.protobuf;
import google.protobuf.descriptor;

class Version
{
    @Proto(1) int major = protoDefaultValue!int;
    @Proto(2) int minor = protoDefaultValue!int;
    @Proto(3) int patch = protoDefaultValue!int;
    @Proto(4) string suffix = protoDefaultValue!string;
}

class CodeGeneratorRequest
{
    @Proto(1) string[] filesToGenerate = protoDefaultValue!(string[]);
    @Proto(2) string parameter = protoDefaultValue!string;
    @Proto(3) Version compilerVersion = protoDefaultValue!Version;
    @Proto(15) FileDescriptorProto[] protoFiles = protoDefaultValue!(FileDescriptorProto[]);
}

class CodeGeneratorResponse
{
    @Proto(1) string error = protoDefaultValue!string;
    @Proto(15) File[] files = protoDefaultValue!(File[]);

    static class File
    {
        @Proto(1) string name = protoDefaultValue!string;
        @Proto(2) string insertionPoint = protoDefaultValue!string;
        @Proto(15) string content = protoDefaultValue!string;
    }
}