syntax = "proto3";

package testpbpulsar;

import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";
import "cosmos_proto/cosmos.proto";
import "cosmos/base/query/v1beta1/pagination.proto";
import "cosmos/base/v1beta1/coin.proto";
import "testpbpulsar/query.proto";

service Msg {
  // Send a request and returns the request as a response.
  rpc Send(MsgRequest) returns (MsgResponse) {
    option (cosmos_proto.method_added_in) = "cosmos-sdk v0.50.0";
  };

  rpc Clawback(MsgClawbackRequest) returns (MsgClawbackResponse) {
    option (cosmos_proto.method_added_in) = "cosmos-sdk v0.51.0";
  }
}

message MsgRequest {
  // u32 is an uint32
  uint32                                u32        = 1;
  uint64                                u64        = 2;
  string                                str        = 3;
  bytes                                 bz         = 4;
  google.protobuf.Timestamp             timestamp  = 5;
  google.protobuf.Duration              duration   = 6;
  int32                                 i32        = 7;
  int64                                 i64        = 10;
  bool                                  a_bool     = 15;
  testpbpulsar.Enum                     an_enum    = 16;
  testpbpulsar.AMessage                 a_message  = 17;
  cosmos.base.v1beta1.Coin              a_coin     = 18;
  string                                an_address = 19 [(cosmos_proto.scalar) = "cosmos.AddressString"];
  cosmos.base.query.v1beta1.PageRequest page       = 20;
  repeated bool                         bools      = 21;
  repeated uint32                       uints      = 22;
  repeated string                       strings    = 23;
  repeated testpbpulsar.Enum enums                 = 24;
  repeated google.protobuf.Duration durations      = 25;
  repeated testpbpulsar.AMessage some_messages     = 26;

  int32    positional1                                  = 27;
  string   positional2                                  = 28;
  repeated cosmos.base.v1beta1.Coin positional3_varargs = 29;

  string deprecated_field           = 30;
  string shorthand_deprecated_field = 31;
  bool   hidden_bool                = 32;
  string a_validator_address        = 33 [(cosmos_proto.scalar) = "cosmos.ValidatorAddressString"];
}

message MsgResponse {
  MsgRequest request = 1;
}

message MsgClawbackRequest {}

message MsgClawbackResponse {}
