syntax = "proto3";

package grpc.gateway.runtime.internal.examplepb;

import "google/protobuf/duration.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/wrappers.proto";

option go_package = "github.com/grpc-ecosystem/grpc-gateway/v2/runtime/internal/examplepb";

message Proto3Message {
  // Next number: 50
  Proto3Message nested = 41;
  float float_value = 42;
  double double_value = 43;
  int64 int64_value = 3;
  int32 int32_value = 4;
  uint64 uint64_value = 5;
  uint32 uint32_value = 6;
  bool bool_value = 7;
  string string_value = 8;
  bytes bytes_value = 9;
  repeated string repeated_value = 10;
  optional string optional_value = 49;
  repeated google.protobuf.UInt64Value repeated_message = 44;
  EnumValue enum_value = 11;
  repeated EnumValue repeated_enum = 12;
  google.protobuf.Timestamp timestamp_value = 13;
  google.protobuf.Duration duration_value = 14;
  google.protobuf.FieldMask fieldmask_value = 15;
  oneof oneof_value {
    bool oneof_bool_value = 1;
    string oneof_string_value = 2;
  }
  oneof nested_oneof_value {
    Proto3Message nested_oneof_value_one = 46;
  }
  google.protobuf.DoubleValue wrapper_double_value = 17;
  google.protobuf.FloatValue wrapper_float_value = 18;
  google.protobuf.Int64Value wrapper_int64_value = 19;
  google.protobuf.Int32Value wrapper_int32_value = 20;
  google.protobuf.UInt64Value wrapper_u_int64_value = 21;
  google.protobuf.UInt32Value wrapper_u_int32_value = 22;
  google.protobuf.BoolValue wrapper_bool_value = 23;
  google.protobuf.StringValue wrapper_string_value = 24;
  google.protobuf.BytesValue wrapper_bytes_value = 25;
  map<string, string> map_value = 26;
  map<string, int32> map_value2 = 27;
  map<int32, string> map_value3 = 28;
  map<string, int64> map_value4 = 29;
  map<int64, string> map_value5 = 30;
  map<string, uint32> map_value6 = 31;
  map<uint32, string> map_value7 = 32;
  map<string, uint64> map_value8 = 33;
  map<uint64, string> map_value9 = 34;
  map<string, float> map_value10 = 35;
  map<string, double> map_value12 = 37;
  map<string, bool> map_value14 = 39;
  map<bool, string> map_value15 = 40;
  map<string, google.protobuf.UInt64Value> map_value16 = 45;
  google.protobuf.Value struct_value_value = 47;
  google.protobuf.Struct struct_value = 48;
}

enum EnumValue {
  X = 0;
  Y = 1;
  Z = 2;
}
