syntax = "proto3";
package cosmos.epochs.v1beta1;

import "gogoproto/gogo.proto";
import "google/api/annotations.proto";
import "cosmos/epochs/v1beta1/genesis.proto";
import "cosmos_proto/cosmos.proto";

option go_package = "github.com/cosmos/cosmos-sdk/x/epochs/types";

// Query defines the gRPC querier service.
service Query {
  // EpochInfos provide running epochInfos
  rpc EpochInfos(QueryEpochInfosRequest) returns (QueryEpochInfosResponse) {
    option (google.api.http).get          = "/cosmos/epochs/v1beta1/epochs";
    option (cosmos_proto.method_added_in) = "cosmos-sdk 0.53";
  }
  // CurrentEpoch provide current epoch of specified identifier
  rpc CurrentEpoch(QueryCurrentEpochRequest) returns (QueryCurrentEpochResponse) {
    option (google.api.http).get          = "/cosmos/epochs/v1beta1/current_epoch";
    option (cosmos_proto.method_added_in) = "cosmos-sdk 0.53";
  }
}

// QueryEpochInfosRequest defines the gRPC request structure for
// querying all epoch info.
message QueryEpochInfosRequest {}

// QueryEpochInfosRequest defines the gRPC response structure for
// querying all epoch info.
message QueryEpochInfosResponse {
  repeated EpochInfo epochs = 1 [(gogoproto.nullable) = false];
}

// QueryCurrentEpochRequest defines the gRPC request structure for
// querying an epoch by its identifier.
message QueryCurrentEpochRequest {
  string identifier = 1;
}

// QueryCurrentEpochResponse defines the gRPC response structure for
// querying an epoch by its identifier.
message QueryCurrentEpochResponse {
  int64 current_epoch = 1;
}