0g-chain/proto/zgc/pricefeed/v1beta1/query.proto
2024-04-25 15:31:20 +08:00

164 lines
5.0 KiB
Protocol Buffer

syntax = "proto3";
package zgc.pricefeed.v1beta1;
import "gogoproto/gogo.proto";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";
import "zgc/pricefeed/v1beta1/store.proto";
option go_package = "github.com/0glabs/0g-chain/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 = "/0g-chain/pricefeed/v1beta1/params";
}
// Price queries price details based on a market
rpc Price(QueryPriceRequest) returns (QueryPriceResponse) {
option (google.api.http).get = "/0g-chain/pricefeed/v1beta1/prices/{market_id}";
}
// Prices queries all prices
rpc Prices(QueryPricesRequest) returns (QueryPricesResponse) {
option (google.api.http).get = "/0g-chain/pricefeed/v1beta1/prices";
}
// RawPrices queries all raw prices based on a market
rpc RawPrices(QueryRawPricesRequest) returns (QueryRawPricesResponse) {
option (google.api.http).get = "/0g-chain/pricefeed/v1beta1/rawprices/{market_id}";
}
// Oracles queries all oracles based on a market
rpc Oracles(QueryOraclesRequest) returns (QueryOraclesResponse) {
option (google.api.http).get = "/0g-chain/pricefeed/v1beta1/oracles/{market_id}";
}
// Markets queries all markets
rpc Markets(QueryMarketsRequest) returns (QueryMarketsResponse) {
option (google.api.http).get = "/0g-chain/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;
}