syntax = "proto3"; package kava.cdp.v1beta1; import "cosmos/auth/v1beta1/auth.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; import "cosmos/base/v1beta1/coin.proto"; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "google/protobuf/timestamp.proto"; import "kava/cdp/v1beta1/cdp.proto"; import "kava/cdp/v1beta1/genesis.proto"; option go_package = "github.com/kava-labs/kava/x/cdp/types"; // Query defines the gRPC querier service for cdp module service Query { // Params queries all parameters of the cdp module. rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { option (google.api.http).get = "/kava/cdp/v1beta1/params"; } // Accounts queries the CDP module accounts. rpc Accounts(QueryAccountsRequest) returns (QueryAccountsResponse) { option (google.api.http).get = "/kava/cdp/v1beta1/accounts"; } // TotalPrincipal queries the total principal of a given collateral type. rpc TotalPrincipal(QueryTotalPrincipalRequest) returns (QueryTotalPrincipalResponse) { option (google.api.http).get = "/kava/cdp/v1beta1/totalPrincipal"; } // TotalCollateral queries the total collateral of a given collateral type. rpc TotalCollateral(QueryTotalCollateralRequest) returns (QueryTotalCollateralResponse) { option (google.api.http).get = "/kava/cdp/v1beta1/totalCollateral"; } // Cdps queries all active CDPs. rpc Cdps(QueryCdpsRequest) returns (QueryCdpsResponse) { option (google.api.http).get = "/kava/cdp/v1beta1/cdps"; } // Cdp queries a CDP with the input owner address and collateral type. rpc Cdp(QueryCdpRequest) returns (QueryCdpResponse) { option (google.api.http).get = "/kava/cdp/v1beta1/cdps/{owner}/{collateral_type}"; } // Deposits queries deposits associated with the CDP owned by an address for a collateral type. rpc Deposits(QueryDepositsRequest) returns (QueryDepositsResponse) { option (google.api.http).get = "/kava/cdp/v1beta1/cdps/deposits/{owner}/{collateral_type}"; } } // QueryParamsRequest defines the request type for the Query/Params RPC method. message QueryParamsRequest {} // QueryParamsResponse defines the response type for the Query/Params RPC method. message QueryParamsResponse { option (gogoproto.equal) = false; option (gogoproto.goproto_getters) = false; Params params = 1 [(gogoproto.nullable) = false]; } // QueryAccountsRequest defines the request type for the Query/Accounts RPC method. message QueryAccountsRequest {} // QueryAccountsResponse defines the response type for the Query/Accounts RPC method. message QueryAccountsResponse { repeated cosmos.auth.v1beta1.ModuleAccount accounts = 1 [(gogoproto.nullable) = false]; } // QueryCdpRequest defines the request type for the Query/Cdp RPC method. message QueryCdpRequest { string collateral_type = 1; string owner = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; } // QueryCdpResponse defines the response type for the Query/Cdp RPC method. message QueryCdpResponse { CDPResponse cdp = 1 [(gogoproto.nullable) = false]; } // QueryCdpsRequest is the params for a filtered CDP query, the request type for the Query/Cdps RPC method. message QueryCdpsRequest { string collateral_type = 1; string owner = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; uint64 id = 3 [(gogoproto.customname) = "ID"]; // sdk.Dec as a string string ratio = 4; cosmos.base.query.v1beta1.PageRequest pagination = 5; } // QueryCdpsResponse defines the response type for the Query/Cdps RPC method. message QueryCdpsResponse { repeated CDPResponse cdps = 1 [ (gogoproto.castrepeated) = "CDPResponses", (gogoproto.nullable) = false ]; cosmos.base.query.v1beta1.PageResponse pagination = 2; } // QueryDepositsRequest defines the request type for the Query/Deposits RPC method. message QueryDepositsRequest { string collateral_type = 1; string owner = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; } // QueryDepositsResponse defines the response type for the Query/Deposits RPC method. message QueryDepositsResponse { repeated Deposit deposits = 1 [ (gogoproto.castrepeated) = "Deposits", (gogoproto.nullable) = false ]; } // QueryTotalPrincipalRequest defines the request type for the Query/TotalPrincipal RPC method. message QueryTotalPrincipalRequest { string collateral_type = 1; } // QueryTotalPrincipalResponse defines the response type for the Query/TotalPrincipal RPC method. message QueryTotalPrincipalResponse { repeated TotalPrincipal total_principal = 1 [ (gogoproto.castrepeated) = "TotalPrincipals", (gogoproto.nullable) = false ]; } // QueryTotalCollateralRequest defines the request type for the Query/TotalCollateral RPC method. message QueryTotalCollateralRequest { string collateral_type = 1; } // QueryTotalCollateralResponse defines the response type for the Query/TotalCollateral RPC method. message QueryTotalCollateralResponse { repeated TotalCollateral total_collateral = 1 [ (gogoproto.castrepeated) = "TotalCollaterals", (gogoproto.nullable) = false ]; } // CDPResponse defines the state of a single collateralized debt position. message CDPResponse { uint64 id = 1 [(gogoproto.customname) = "ID"]; string owner = 2; string type = 3; cosmos.base.v1beta1.Coin collateral = 4 [(gogoproto.nullable) = false]; cosmos.base.v1beta1.Coin principal = 5 [(gogoproto.nullable) = false]; cosmos.base.v1beta1.Coin accumulated_fees = 6 [(gogoproto.nullable) = false]; google.protobuf.Timestamp fees_updated = 7 [ (gogoproto.stdtime) = true, (gogoproto.nullable) = false ]; string interest_factor = 8; cosmos.base.v1beta1.Coin collateral_value = 9 [(gogoproto.nullable) = false]; string collateralization_ratio = 10; }