syntax = "proto3";

package sample;

import 'vendor.proto';
import 'unscoped.proto';

service SampleService {
  rpc Hello (HelloRequest) returns (HelloResponse) {}
  rpc Hello2 (HelloRequest) returns (CommonMessage) {}
  rpc Hello3 (ProcessRequest) returns (TopLevelMessage) {}
}

service IgnoreService {
  rpc Hello (HelloRequest) returns (HelloResponse) {}
}

message HelloRequest {
  string hello = 1;
  HelloNested nested = 2;
  ShadowedMessage nestedShadowedMessage = 3;

  message HelloNested {
    string hello = 1;
    CommonMessage field = 2;
  }

  message ShadowedMessage {
    int32 item = 1;
  }
}

enum HelloStatus {
  HELLO = 1;
  WORLD = 2;
}

message HelloResponse {
  string world = 1;
  HelloStatus status = 2;
}

message ShadowedMessage {
  string hello = 1;
}
