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

import "gogoproto/gogo.proto";
import "cosmos/feegrant/v1beta1/feegrant.proto";
import "cosmos/base/query/v1beta1/pagination.proto";
import "google/api/annotations.proto";

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

// Query defines the gRPC querier service.
service Query {

  // FeeAllowance returns fee granted to the grantee by the granter.
  rpc FeeAllowance(QueryFeeAllowanceRequest) returns (QueryFeeAllowanceResponse) {
    option (google.api.http).get = "/cosmos/feegrant/v1beta1/fee_allowance/{granter}/{grantee}";
  }

  // FeeAllowances returns all the grants for address.
  rpc FeeAllowances(QueryFeeAllowancesRequest) returns (QueryFeeAllowancesResponse) {
    option (google.api.http).get = "/cosmos/feegrant/v1beta1/fee_allowances/{grantee}";
  }
}

// QueryFeeAllowanceRequest is the request type for the Query/FeeAllowance RPC method.
message QueryFeeAllowanceRequest {
  string granter = 1;
  string grantee = 2;
}

// QueryFeeAllowanceResponse is the response type for the Query/FeeAllowance RPC method.
message QueryFeeAllowanceResponse {
  // fee_allowance is a fee_allowance granted for grantee by granter.
  cosmos.feegrant.v1beta1.FeeAllowanceGrant fee_allowance = 1;
}

// QueryFeeAllowancesRequest is the request type for the Query/FeeAllowances RPC method.
message QueryFeeAllowancesRequest {
  string grantee = 1;

  // pagination defines an pagination for the request.
  cosmos.base.query.v1beta1.PageRequest pagination = 2;
}

// QueryFeeAllowancesResponse is the response type for the Query/FeeAllowances RPC method.
message QueryFeeAllowancesResponse {
  // fee_allowances are fee_allowance's granted for grantee by granter.
  repeated cosmos.feegrant.v1beta1.FeeAllowanceGrant fee_allowances = 1;

  // pagination defines an pagination for the response.
  cosmos.base.query.v1beta1.PageResponse pagination = 2;
}
