// Copyright 2015 gRPC authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

/*option java_multiple_files = true;
option java_package = "io.grpc.examples.helloworld";
option java_outer_classname = "HelloWorldProto";
option objc_class_prefix = "HLW";*/

import "google/protobuf/empty.proto";

package modelresponse;

service ModelResponse {
  rpc Terminate (google.protobuf.Empty) returns (google.protobuf.Empty) {}
  rpc GeneratorReply (MultiStringRequest) returns (MultiGenerationReply) {}
  rpc GeneratorReplyStream (MultiStringRequest) returns (stream MultiGenerationReply) {}
}

message Dictionary {
    map<string, Value> values = 1;
}

message Value {
    oneof oneof_values {
        string svalue = 1;
        int64 ivalue = 2;
        float fvalue = 3;
        bool bvalue = 4;
        Dictionary mvalue = 5;
    }
}

message SingleStringRequest {
  string request = 1;
  map<string,Value> query_kwargs = 2;
}

message MultiStringRequest {
  repeated string request = 1;
  map<string,Value> query_kwargs = 2;
}

message SingleGenerationReply {
  string response = 1;
  string finish_reason = 2;
  int64 prompt_tokens = 3;
  int64 generated_tokens = 4;
  float time_taken = 5;
  float model_time_taken = 6;
}

message MultiGenerationReply {
  repeated SingleGenerationReply response = 1;
}
