// Copyright 2020 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

edition = "2023";

package opaque.goproto.proto.testrequired;

option go_package = "google.golang.org/protobuf/internal/testprotos/required/required_opaque";
import "google/protobuf/go_features.proto";
option features.(pb.go).api_level = API_OPAQUE;

message Int32 {
  int32 v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message Int64 {
  int64 v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message Uint32 {
  uint32 v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message Uint64 {
  uint64 v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message Sint32 {
  sint32 v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message Sint64 {
  sint64 v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message Fixed32 {
  fixed32 v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message Fixed64 {
  fixed64 v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message Float {
  float v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message Double {
  double v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message Bool {
  bool v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message String {
  string v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message Bytes {
  bytes v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message Message {
  message M {}
  M v = 1 [features.field_presence = LEGACY_REQUIRED];
}

message Group {
  message Group {
    int32 v = 1;
  }

  Group group = 1 [
    features.field_presence = LEGACY_REQUIRED,
    features.message_encoding = DELIMITED
  ];
}