syntax = "proto3"; package kava.pricefeed.v1beta1; import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/timestamp.proto"; import "kava/pricefeed/v1beta1/store.proto"; option go_package = "github.com/kava-labs/kava/x/pricefeed/types"; option (gogoproto.equal_all) = true; option (gogoproto.verbose_equal_all) = true; // Query defines the gRPC querier service for pricefeed module service Query { // Params queries all parameters of the pricefeed module. rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { option (google.api.http).get = "/kava/pricefeed/v1beta1/params"; } // Price queries price details based on a market rpc Price(QueryPriceRequest) returns (QueryPriceResponse) { option (google.api.http).get = "/kava/pricefeed/v1beta1/prices/{market_id}"; } // Prices queries all prices rpc Prices(QueryPricesRequest) returns (QueryPricesResponse) { option (google.api.http).get = "/kava/pricefeed/v1beta1/prices"; } // RawPrices queries all raw prices based on a market rpc RawPrices(QueryRawPricesRequest) returns (QueryRawPricesResponse) { option (google.api.http).get = "/kava/pricefeed/v1beta1/rawprices/{market_id}"; } // Oracles queries all oracles based on a market rpc Oracles(QueryOraclesRequest) returns (QueryOraclesResponse) { option (google.api.http).get = "/kava/pricefeed/v1beta1/oracles/{market_id}"; } // Markets queries all markets rpc Markets(QueryMarketsRequest) returns (QueryMarketsResponse) { option (google.api.http).get = "/kava/pricefeed/v1beta1/markets"; } } // QueryParamsRequest defines the request type for querying x/pricefeed // parameters. message QueryParamsRequest {} // QueryParamsResponse defines the response type for querying x/pricefeed // parameters. message QueryParamsResponse { option (gogoproto.goproto_getters) = false; Params params = 1 [(gogoproto.nullable) = false]; } // QueryPriceRequest is the request type for the Query/PriceRequest RPC method. message QueryPriceRequest { option (gogoproto.goproto_getters) = false; string market_id = 1; } // QueryPriceResponse is the response type for the Query/Prices RPC method. message QueryPriceResponse { option (gogoproto.goproto_getters) = false; CurrentPriceResponse price = 1 [(gogoproto.nullable) = false]; } // QueryPricesRequest is the request type for the Query/Prices RPC method. message QueryPricesRequest {} // QueryPricesResponse is the response type for the Query/Prices RPC method. message QueryPricesResponse { option (gogoproto.goproto_getters) = false; repeated CurrentPriceResponse prices = 1 [ (gogoproto.castrepeated) = "CurrentPriceResponses", (gogoproto.nullable) = false ]; } // QueryRawPricesRequest is the request type for the Query/RawPrices RPC method. message QueryRawPricesRequest { option (gogoproto.goproto_getters) = false; string market_id = 1; } // QueryRawPricesResponse is the response type for the Query/RawPrices RPC // method. message QueryRawPricesResponse { option (gogoproto.goproto_getters) = false; repeated PostedPriceResponse raw_prices = 1 [ (gogoproto.castrepeated) = "PostedPriceResponses", (gogoproto.nullable) = false ]; } // QueryOraclesRequest is the request type for the Query/Oracles RPC method. message QueryOraclesRequest { option (gogoproto.goproto_getters) = false; string market_id = 1; } // QueryOraclesResponse is the response type for the Query/Oracles RPC method. message QueryOraclesResponse { option (gogoproto.goproto_getters) = false; // List of oracle addresses repeated string oracles = 1; } // QueryMarketsRequest is the request type for the Query/Markets RPC method. message QueryMarketsRequest {} // QueryMarketsResponse is the response type for the Query/Markets RPC method. message QueryMarketsResponse { option (gogoproto.goproto_getters) = false; // List of markets repeated MarketResponse markets = 1 [ (gogoproto.castrepeated) = "MarketResponses", (gogoproto.nullable) = false ]; } // PostedPriceResponse defines a price for market posted by a specific oracle. message PostedPriceResponse { string market_id = 1 [(gogoproto.customname) = "MarketID"]; string oracle_address = 2; string price = 3 [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false ]; google.protobuf.Timestamp expiry = 4 [ (gogoproto.stdtime) = true, (gogoproto.nullable) = false ]; } // CurrentPriceResponse defines a current price for a particular market in the pricefeed // module. message CurrentPriceResponse { string market_id = 1 [(gogoproto.customname) = "MarketID"]; string price = 2 [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false ]; } // MarketResponse defines an asset in the pricefeed. message MarketResponse { string market_id = 1 [(gogoproto.customname) = "MarketID"]; string base_asset = 2; string quote_asset = 3; repeated string oracles = 4; bool active = 5; }