diff --git a/CHANGELOG.md b/CHANGELOG.md index f7f6e0ca08..cc8ab5f790 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ - [2472](https://github.com/umee-network/umee/pull/2472) un-wire the `crisis` module from umee app. - [2500](https://github.com/umee-network/umee/pull/2500) (x/leverage): add Rewards Auction fees and `params.rewards_auction_factor`. - [2506](https://github.com/umee-network/umee/pull/2506) (ics20): support leverage/MsgRepay in Memo +- [2527](https://github.com/umee-network/umee/pull/2527) (x/leverage):add `accounts_summary` grpc-web api and cli query to leverage module. ### Improvements diff --git a/app/app.go b/app/app.go index 6e0fcc1146..cc85084074 100644 --- a/app/app.go +++ b/app/app.go @@ -490,7 +490,9 @@ func New( app.LeverageKeeper = leveragekeeper.NewKeeper( appCodec, keys[leveragetypes.ModuleName], + keys[authtypes.StoreKey], app.BankKeeper, + app.AccountKeeper, app.OracleKeeper, app.UGovKeeperB.EmergencyGroup, cast.ToBool(appOpts.Get(leveragetypes.FlagEnableLiquidatorQuery)), diff --git a/proto/umee/leverage/v1/query.proto b/proto/umee/leverage/v1/query.proto index 9d957c7ffb..3ecb42ca4c 100644 --- a/proto/umee/leverage/v1/query.proto +++ b/proto/umee/leverage/v1/query.proto @@ -6,6 +6,7 @@ import "umee/leverage/v1/genesis.proto"; import "umee/leverage/v1/leverage.proto"; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; +import "cosmos/base/query/v1beta1/pagination.proto"; option go_package = "github.com/umee-network/umee/v6/x/leverage/types"; @@ -54,6 +55,12 @@ service Query { option (google.api.http).get = "/umee/leverage/v1/account_summary"; } + // AccountSummaries queries USD values representing an account's total positions and borrowing limits. It requires oracle prices to return successfully. + rpc AccountSummaries(QueryAccountSummaries) + returns (QueryAccountSummariesResponse) { + option (google.api.http).get = "/umee/leverage/v1/accounts_summary"; + } + // LiquidationTargets queries a list of all borrower account addresses eligible for liquidation. rpc LiquidationTargets(QueryLiquidationTargets) returns (QueryLiquidationTargetsResponse) { @@ -341,6 +348,25 @@ message QueryAccountSummaryResponse { ]; } +// QueryAccountSummaries defines the request structure for the AccountSummaries gRPC service handler. +message QueryAccountSummaries { + // pagination defines an optional pagination for the request. + cosmos.base.query.v1beta1.PageRequest pagination = 1; +} + +// AccountSummary is holds account_summary with address. +message AccountSummary { + string address = 1; + QueryAccountSummaryResponse account_summary = 2; +} + +// QueryAccountSummariesResponse defines the response structure for the AccountSummaries gRPC service handler. +message QueryAccountSummariesResponse { + repeated AccountSummary account_summaries = 1; + // pagination defines the pagination in the response. + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} + // QueryLiquidationTargets defines the request structure for the LiquidationTargets gRPC service handler. message QueryLiquidationTargets {} diff --git a/x/leverage/client/cli/query.go b/x/leverage/client/cli/query.go index 88c1367cd2..e19264420a 100644 --- a/x/leverage/client/cli/query.go +++ b/x/leverage/client/cli/query.go @@ -34,6 +34,7 @@ func GetQueryCmd() *cobra.Command { QueryMarketSummary(), QueryAccountBalances(), QueryAccountSummary(), + QueryAccountSummaries(), QueryLiquidationTargets(), QueryBadDebts(), QueryMaxWithdraw(), @@ -206,6 +207,39 @@ func QueryAccountSummary() *cobra.Command { return cmd } +// QueryAccountSummaries creates a Cobra command to query the USD +// values representing an all account's positions and borrowing limits. +func QueryAccountSummaries() *cobra.Command { + cmd := &cobra.Command{ + Use: "account-summaries", + Args: cobra.NoArgs, + Short: "Query the position USD values and borrowing limits for an all accounts.", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + pageReq, err := client.ReadPageRequest(cmd.Flags()) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + req := &types.QueryAccountSummaries{ + Pagination: pageReq, + } + resp, err := queryClient.AccountSummaries(cmd.Context(), req) + return cli.PrintOrErr(resp, err, clientCtx) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + flags.AddPaginationFlagsToCmd(cmd, "account-summaries") + + return cmd +} + // QueryLiquidationTargets creates a Cobra command to query for // all eligible liquidation targets. func QueryLiquidationTargets() *cobra.Command { diff --git a/x/leverage/keeper/accounts_summary.go b/x/leverage/keeper/accounts_summary.go new file mode 100644 index 0000000000..c040c87ca0 --- /dev/null +++ b/x/leverage/keeper/accounts_summary.go @@ -0,0 +1,153 @@ +package keeper + +import ( + "context" + + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/query" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/umee-network/umee/v6/util/coin" + "github.com/umee-network/umee/v6/x/leverage/types" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func (q Querier) accountSummary(ctx sdk.Context, addr sdk.AccAddress) (*types.QueryAccountSummaryResponse, error) { + supplied, err := q.GetAllSupplied(ctx, addr) + if err != nil { + return nil, err + } + collateral := q.GetBorrowerCollateral(ctx, addr) + borrowed := q.GetBorrowerBorrows(ctx, addr) + + // the following price calculations use the most recent prices if spot prices are missing + lastSuppliedValue, err := q.VisibleTokenValue(ctx, supplied, types.PriceModeQuery) + if err != nil { + return nil, err + } + lastBorrowedValue, err := q.VisibleTokenValue(ctx, borrowed, types.PriceModeQuery) + if err != nil { + return nil, err + } + lastCollateralValue, err := q.VisibleCollateralValue(ctx, collateral, types.PriceModeQuery) + if err != nil { + return nil, err + } + + // these use leverage-like prices: the lower of spot or historic price for supplied tokens and higher for borrowed. + // unlike transactions, this query will use expired prices instead of skipping them. + suppliedValue, err := q.VisibleTokenValue(ctx, supplied, types.PriceModeQueryLow) + if err != nil { + return nil, err + } + collateralValue, err := q.VisibleCollateralValue(ctx, collateral, types.PriceModeQueryLow) + if err != nil { + return nil, err + } + borrowedValue, err := q.VisibleTokenValue(ctx, borrowed, types.PriceModeQueryHigh) + if err != nil { + return nil, err + } + + resp := &types.QueryAccountSummaryResponse{ + SuppliedValue: suppliedValue, + CollateralValue: collateralValue, + BorrowedValue: borrowedValue, + SpotSuppliedValue: lastSuppliedValue, + SpotCollateralValue: lastCollateralValue, + SpotBorrowedValue: lastBorrowedValue, + } + + // values computed from position use the same prices found in leverage logic: + // using the lower of spot or historic prices for each collateral token + // and the higher of spot or historic prices for each borrowed token + // skips collateral tokens with missing prices, but errors on borrow tokens missing prices + // (for oracle errors only the relevant response fields will be left nil) + ap, err := q.GetAccountPosition(ctx, addr, false) + if nonOracleError(err) { + return nil, err + } + if err == nil { + // on missing borrow price, borrow limit is nil + borrowLimit := ap.Limit() + resp.BorrowLimit = &borrowLimit + } + + // liquidation threshold shown here as it is used in leverage logic: using spot prices. + // skips borrowed tokens with missing prices, but errors on collateral missing prices + // (for oracle errors only the relevant response fields will be left nil) + ap, err = q.GetAccountPosition(ctx, addr, true) + if nonOracleError(err) { + return nil, err + } + if err == nil { + // on missing collateral price, liquidation threshold is nil + liquidationThreshold := ap.Limit() + resp.LiquidationThreshold = &liquidationThreshold + } + + return resp, nil +} + +// AccountSummaries implements types.QueryServer. +func (q Querier) AccountSummaries(goCtx context.Context, req *types.QueryAccountSummaries) ( + *types.QueryAccountSummariesResponse, error, +) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + ctx := sdk.UnwrapSDKContext(goCtx) + // get the all accounts + store := ctx.KVStore(q.akStoreKey) + accountsStore := prefix.NewStore(store, authtypes.AddressStoreKeyPrefix) + + var accounts []*types.AccountSummary + pageRes, err := query.Paginate(accountsStore, req.Pagination, func(key, value []byte) error { + acc, err := q.authKeeper.UnmarshalAccount(value) + if err != nil { + return err + } + balance := q.bankKeeper.GetAllBalances(ctx, acc.GetAddress()) + hasUToken := false + for _, c := range balance { + if coin.HasUTokenPrefix(c.Denom) { + hasUToken = true + break + } + } + if hasUToken { + accSummary, err := q.accountSummary(ctx, acc.GetAddress()) + if err != nil { + return err + } + accounts = append(accounts, &types.AccountSummary{ + Address: acc.GetAddress().String(), + AccountSummary: accSummary, + }) + } + return nil + }) + + return &types.QueryAccountSummariesResponse{AccountSummaries: accounts, Pagination: pageRes}, err +} + +// AccountSummary implements types.QueryServer. +func (q Querier) AccountSummary( + goCtx context.Context, + req *types.QueryAccountSummary, +) (*types.QueryAccountSummaryResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + if req.Address == "" { + return nil, status.Error(codes.InvalidArgument, "empty address") + } + + ctx := sdk.UnwrapSDKContext(goCtx) + addr, err := sdk.AccAddressFromBech32(req.Address) + if err != nil { + return nil, err + } + return q.accountSummary(ctx, addr) +} diff --git a/x/leverage/keeper/grpc_query.go b/x/leverage/keeper/grpc_query.go index d05381fa3e..3f00d43b98 100644 --- a/x/leverage/keeper/grpc_query.go +++ b/x/leverage/keeper/grpc_query.go @@ -241,100 +241,6 @@ func (q Querier) AccountBalances( }, nil } -func (q Querier) AccountSummary( - goCtx context.Context, - req *types.QueryAccountSummary, -) (*types.QueryAccountSummaryResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "empty request") - } - if req.Address == "" { - return nil, status.Error(codes.InvalidArgument, "empty address") - } - - ctx := sdk.UnwrapSDKContext(goCtx) - - addr, err := sdk.AccAddressFromBech32(req.Address) - if err != nil { - return nil, err - } - - supplied, err := q.GetAllSupplied(ctx, addr) - if err != nil { - return nil, err - } - collateral := q.GetBorrowerCollateral(ctx, addr) - borrowed := q.GetBorrowerBorrows(ctx, addr) - - // the following price calculations use the most recent prices if spot prices are missing - lastSuppliedValue, err := q.VisibleTokenValue(ctx, supplied, types.PriceModeQuery) - if err != nil { - return nil, err - } - lastBorrowedValue, err := q.VisibleTokenValue(ctx, borrowed, types.PriceModeQuery) - if err != nil { - return nil, err - } - lastCollateralValue, err := q.VisibleCollateralValue(ctx, collateral, types.PriceModeQuery) - if err != nil { - return nil, err - } - - // these use leverage-like prices: the lower of spot or historic price for supplied tokens and higher for borrowed. - // unlike transactions, this query will use expired prices instead of skipping them. - suppliedValue, err := q.VisibleTokenValue(ctx, supplied, types.PriceModeQueryLow) - if err != nil { - return nil, err - } - collateralValue, err := q.VisibleCollateralValue(ctx, collateral, types.PriceModeQueryLow) - if err != nil { - return nil, err - } - borrowedValue, err := q.VisibleTokenValue(ctx, borrowed, types.PriceModeQueryHigh) - if err != nil { - return nil, err - } - - resp := &types.QueryAccountSummaryResponse{ - SuppliedValue: suppliedValue, - CollateralValue: collateralValue, - BorrowedValue: borrowedValue, - SpotSuppliedValue: lastSuppliedValue, - SpotCollateralValue: lastCollateralValue, - SpotBorrowedValue: lastBorrowedValue, - } - - // values computed from position use the same prices found in leverage logic: - // using the lower of spot or historic prices for each collateral token - // and the higher of spot or historic prices for each borrowed token - // skips collateral tokens with missing prices, but errors on borrow tokens missing prices - // (for oracle errors only the relevant response fields will be left nil) - ap, err := q.GetAccountPosition(ctx, addr, false) - if nonOracleError(err) { - return nil, err - } - if err == nil { - // on missing borrow price, borrow limit is nil - borrowLimit := ap.Limit() - resp.BorrowLimit = &borrowLimit - } - - // liquidation threshold shown here as it is used in leverage logic: using spot prices. - // skips borrowed tokens with missing prices, but errors on collateral missing prices - // (for oracle errors only the relevant response fields will be left nil) - ap, err = q.GetAccountPosition(ctx, addr, true) - if nonOracleError(err) { - return nil, err - } - if err == nil { - // on missing collateral price, liquidation threshold is nil - liquidationThreshold := ap.Limit() - resp.LiquidationThreshold = &liquidationThreshold - } - - return resp, nil -} - func (q Querier) LiquidationTargets( goCtx context.Context, req *types.QueryLiquidationTargets, diff --git a/x/leverage/keeper/internal_test.go b/x/leverage/keeper/internal_test.go index 1a003ee365..fa37912291 100644 --- a/x/leverage/keeper/internal_test.go +++ b/x/leverage/keeper/internal_test.go @@ -4,6 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" "github.com/umee-network/umee/v6/tests/accs" "github.com/umee-network/umee/v6/x/leverage/types" @@ -22,14 +23,18 @@ type TestKeeper struct { func NewTestKeeper( cdc codec.Codec, storeKey storetypes.StoreKey, + akStoreKey storetypes.StoreKey, bk types.BankKeeper, + ak authkeeper.AccountKeeper, ok types.OracleKeeper, enableLiquidatorQuery bool, ) (Keeper, TestKeeper) { k := NewKeeper( cdc, storeKey, + akStoreKey, bk, + ak, ok, ugovmocks.NewSimpleEmergencyGroupBuilder(), enableLiquidatorQuery, diff --git a/x/leverage/keeper/keeper.go b/x/leverage/keeper/keeper.go index 840563691d..68752d3aa7 100644 --- a/x/leverage/keeper/keeper.go +++ b/x/leverage/keeper/keeper.go @@ -7,6 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/umee-network/umee/v6/util/coin" @@ -17,7 +18,9 @@ import ( type Keeper struct { cdc codec.BinaryCodec storeKey storetypes.StoreKey + akStoreKey storetypes.StoreKey bankKeeper types.BankKeeper + authKeeper authkeeper.AccountKeeper oracleKeeper types.OracleKeeper ugov ugov.EmergencyGroupBuilder liquidatorQueryEnabled bool @@ -30,7 +33,9 @@ type Keeper struct { func NewKeeper( cdc codec.BinaryCodec, storeKey storetypes.StoreKey, + akStoreKey storetypes.StoreKey, b types.BankKeeper, + ak authkeeper.AccountKeeper, o types.OracleKeeper, ugov ugov.EmergencyGroupBuilder, enableLiquidatorQuery bool, @@ -44,6 +49,8 @@ func NewKeeper( ugov: ugov, liquidatorQueryEnabled: enableLiquidatorQuery, rewardsAuction: rewardsAuction, + akStoreKey: akStoreKey, + authKeeper: ak, } } diff --git a/x/leverage/keeper/suite_test.go b/x/leverage/keeper/suite_test.go index 1101b000fa..f5d475a918 100644 --- a/x/leverage/keeper/suite_test.go +++ b/x/leverage/keeper/suite_test.go @@ -10,6 +10,7 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" "github.com/stretchr/testify/suite" @@ -67,7 +68,9 @@ func (s *IntegrationTestSuite) SetupTest() { k, tk := keeper.NewTestKeeper( app.AppCodec(), app.GetKey(types.ModuleName), + app.GetKey(authtypes.StoreKey), app.BankKeeper, + app.AccountKeeper, s.mockOracle, true, ) diff --git a/x/leverage/types/query.pb.go b/x/leverage/types/query.pb.go index 06c1acf7fa..c77b1c9cea 100644 --- a/x/leverage/types/query.pb.go +++ b/x/leverage/types/query.pb.go @@ -9,6 +9,7 @@ import ( fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" + query "github.com/cosmos/cosmos-sdk/types/query" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -688,6 +689,124 @@ func (m *QueryAccountSummaryResponse) XXX_DiscardUnknown() { var xxx_messageInfo_QueryAccountSummaryResponse proto.InternalMessageInfo +// QueryAccountSummaries defines the request structure for the AccountSummaries gRPC service handler. +type QueryAccountSummaries struct { + // pagination defines an optional pagination for the request. + Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryAccountSummaries) Reset() { *m = QueryAccountSummaries{} } +func (m *QueryAccountSummaries) String() string { return proto.CompactTextString(m) } +func (*QueryAccountSummaries) ProtoMessage() {} +func (*QueryAccountSummaries) Descriptor() ([]byte, []int) { + return fileDescriptor_1e8137dcabb0ccc7, []int{15} +} +func (m *QueryAccountSummaries) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAccountSummaries) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAccountSummaries.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryAccountSummaries) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAccountSummaries.Merge(m, src) +} +func (m *QueryAccountSummaries) XXX_Size() int { + return m.Size() +} +func (m *QueryAccountSummaries) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAccountSummaries.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAccountSummaries proto.InternalMessageInfo + +// AccountSummary is holds account_summary with address. +type AccountSummary struct { + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + AccountSummary *QueryAccountSummaryResponse `protobuf:"bytes,2,opt,name=account_summary,json=accountSummary,proto3" json:"account_summary,omitempty"` +} + +func (m *AccountSummary) Reset() { *m = AccountSummary{} } +func (m *AccountSummary) String() string { return proto.CompactTextString(m) } +func (*AccountSummary) ProtoMessage() {} +func (*AccountSummary) Descriptor() ([]byte, []int) { + return fileDescriptor_1e8137dcabb0ccc7, []int{16} +} +func (m *AccountSummary) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AccountSummary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AccountSummary.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AccountSummary) XXX_Merge(src proto.Message) { + xxx_messageInfo_AccountSummary.Merge(m, src) +} +func (m *AccountSummary) XXX_Size() int { + return m.Size() +} +func (m *AccountSummary) XXX_DiscardUnknown() { + xxx_messageInfo_AccountSummary.DiscardUnknown(m) +} + +var xxx_messageInfo_AccountSummary proto.InternalMessageInfo + +// QueryAccountSummariesResponse defines the response structure for the AccountSummaries gRPC service handler. +type QueryAccountSummariesResponse struct { + AccountSummaries []*AccountSummary `protobuf:"bytes,1,rep,name=account_summaries,json=accountSummaries,proto3" json:"account_summaries,omitempty"` + // pagination defines the pagination in the response. + Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryAccountSummariesResponse) Reset() { *m = QueryAccountSummariesResponse{} } +func (m *QueryAccountSummariesResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAccountSummariesResponse) ProtoMessage() {} +func (*QueryAccountSummariesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_1e8137dcabb0ccc7, []int{17} +} +func (m *QueryAccountSummariesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAccountSummariesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAccountSummariesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryAccountSummariesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAccountSummariesResponse.Merge(m, src) +} +func (m *QueryAccountSummariesResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryAccountSummariesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAccountSummariesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAccountSummariesResponse proto.InternalMessageInfo + // QueryLiquidationTargets defines the request structure for the LiquidationTargets gRPC service handler. type QueryLiquidationTargets struct { } @@ -696,7 +815,7 @@ func (m *QueryLiquidationTargets) Reset() { *m = QueryLiquidationTargets func (m *QueryLiquidationTargets) String() string { return proto.CompactTextString(m) } func (*QueryLiquidationTargets) ProtoMessage() {} func (*QueryLiquidationTargets) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{15} + return fileDescriptor_1e8137dcabb0ccc7, []int{18} } func (m *QueryLiquidationTargets) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -735,7 +854,7 @@ func (m *QueryLiquidationTargetsResponse) Reset() { *m = QueryLiquidatio func (m *QueryLiquidationTargetsResponse) String() string { return proto.CompactTextString(m) } func (*QueryLiquidationTargetsResponse) ProtoMessage() {} func (*QueryLiquidationTargetsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{16} + return fileDescriptor_1e8137dcabb0ccc7, []int{19} } func (m *QueryLiquidationTargetsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -773,7 +892,7 @@ func (m *QueryBadDebts) Reset() { *m = QueryBadDebts{} } func (m *QueryBadDebts) String() string { return proto.CompactTextString(m) } func (*QueryBadDebts) ProtoMessage() {} func (*QueryBadDebts) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{17} + return fileDescriptor_1e8137dcabb0ccc7, []int{20} } func (m *QueryBadDebts) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -812,7 +931,7 @@ func (m *QueryBadDebtsResponse) Reset() { *m = QueryBadDebtsResponse{} } func (m *QueryBadDebtsResponse) String() string { return proto.CompactTextString(m) } func (*QueryBadDebtsResponse) ProtoMessage() {} func (*QueryBadDebtsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{18} + return fileDescriptor_1e8137dcabb0ccc7, []int{21} } func (m *QueryBadDebtsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -853,7 +972,7 @@ func (m *QueryMaxWithdraw) Reset() { *m = QueryMaxWithdraw{} } func (m *QueryMaxWithdraw) String() string { return proto.CompactTextString(m) } func (*QueryMaxWithdraw) ProtoMessage() {} func (*QueryMaxWithdraw) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{19} + return fileDescriptor_1e8137dcabb0ccc7, []int{22} } func (m *QueryMaxWithdraw) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -894,7 +1013,7 @@ func (m *QueryMaxWithdrawResponse) Reset() { *m = QueryMaxWithdrawRespon func (m *QueryMaxWithdrawResponse) String() string { return proto.CompactTextString(m) } func (*QueryMaxWithdrawResponse) ProtoMessage() {} func (*QueryMaxWithdrawResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{20} + return fileDescriptor_1e8137dcabb0ccc7, []int{23} } func (m *QueryMaxWithdrawResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -935,7 +1054,7 @@ func (m *QueryMaxBorrow) Reset() { *m = QueryMaxBorrow{} } func (m *QueryMaxBorrow) String() string { return proto.CompactTextString(m) } func (*QueryMaxBorrow) ProtoMessage() {} func (*QueryMaxBorrow) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{21} + return fileDescriptor_1e8137dcabb0ccc7, []int{24} } func (m *QueryMaxBorrow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -974,7 +1093,7 @@ func (m *QueryMaxBorrowResponse) Reset() { *m = QueryMaxBorrowResponse{} func (m *QueryMaxBorrowResponse) String() string { return proto.CompactTextString(m) } func (*QueryMaxBorrowResponse) ProtoMessage() {} func (*QueryMaxBorrowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{22} + return fileDescriptor_1e8137dcabb0ccc7, []int{25} } func (m *QueryMaxBorrowResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1022,7 +1141,7 @@ func (m *QueryInspect) Reset() { *m = QueryInspect{} } func (m *QueryInspect) String() string { return proto.CompactTextString(m) } func (*QueryInspect) ProtoMessage() {} func (*QueryInspect) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{23} + return fileDescriptor_1e8137dcabb0ccc7, []int{26} } func (m *QueryInspect) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1060,7 +1179,7 @@ func (m *QueryInspectAccount) Reset() { *m = QueryInspectAccount{} } func (m *QueryInspectAccount) String() string { return proto.CompactTextString(m) } func (*QueryInspectAccount) ProtoMessage() {} func (*QueryInspectAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{24} + return fileDescriptor_1e8137dcabb0ccc7, []int{27} } func (m *QueryInspectAccount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1100,7 +1219,7 @@ func (m *QueryInspectResponse) Reset() { *m = QueryInspectResponse{} } func (m *QueryInspectResponse) String() string { return proto.CompactTextString(m) } func (*QueryInspectResponse) ProtoMessage() {} func (*QueryInspectResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{25} + return fileDescriptor_1e8137dcabb0ccc7, []int{28} } func (m *QueryInspectResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1138,7 +1257,7 @@ func (m *QueryInspectAccountResponse) Reset() { *m = QueryInspectAccount func (m *QueryInspectAccountResponse) String() string { return proto.CompactTextString(m) } func (*QueryInspectAccountResponse) ProtoMessage() {} func (*QueryInspectAccountResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{26} + return fileDescriptor_1e8137dcabb0ccc7, []int{29} } func (m *QueryInspectAccountResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1184,7 +1303,7 @@ func (m *InspectAccount) Reset() { *m = InspectAccount{} } func (m *InspectAccount) String() string { return proto.CompactTextString(m) } func (*InspectAccount) ProtoMessage() {} func (*InspectAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{27} + return fileDescriptor_1e8137dcabb0ccc7, []int{30} } func (m *InspectAccount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1227,7 +1346,7 @@ func (m *RiskInfo) Reset() { *m = RiskInfo{} } func (m *RiskInfo) String() string { return proto.CompactTextString(m) } func (*RiskInfo) ProtoMessage() {} func (*RiskInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{28} + return fileDescriptor_1e8137dcabb0ccc7, []int{31} } func (m *RiskInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1268,7 +1387,7 @@ func (m *DecBalances) Reset() { *m = DecBalances{} } func (m *DecBalances) String() string { return proto.CompactTextString(m) } func (*DecBalances) ProtoMessage() {} func (*DecBalances) Descriptor() ([]byte, []int) { - return fileDescriptor_1e8137dcabb0ccc7, []int{29} + return fileDescriptor_1e8137dcabb0ccc7, []int{32} } func (m *DecBalances) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1313,6 +1432,9 @@ func init() { proto.RegisterType((*QueryAccountBalancesResponse)(nil), "umee.leverage.v1.QueryAccountBalancesResponse") proto.RegisterType((*QueryAccountSummary)(nil), "umee.leverage.v1.QueryAccountSummary") proto.RegisterType((*QueryAccountSummaryResponse)(nil), "umee.leverage.v1.QueryAccountSummaryResponse") + proto.RegisterType((*QueryAccountSummaries)(nil), "umee.leverage.v1.QueryAccountSummaries") + proto.RegisterType((*AccountSummary)(nil), "umee.leverage.v1.AccountSummary") + proto.RegisterType((*QueryAccountSummariesResponse)(nil), "umee.leverage.v1.QueryAccountSummariesResponse") proto.RegisterType((*QueryLiquidationTargets)(nil), "umee.leverage.v1.QueryLiquidationTargets") proto.RegisterType((*QueryLiquidationTargetsResponse)(nil), "umee.leverage.v1.QueryLiquidationTargetsResponse") proto.RegisterType((*QueryBadDebts)(nil), "umee.leverage.v1.QueryBadDebts") @@ -1333,131 +1455,140 @@ func init() { func init() { proto.RegisterFile("umee/leverage/v1/query.proto", fileDescriptor_1e8137dcabb0ccc7) } var fileDescriptor_1e8137dcabb0ccc7 = []byte{ - // 1984 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x99, 0xcf, 0x6f, 0x1b, 0xc7, - 0x15, 0xc7, 0xb5, 0x92, 0x45, 0x51, 0x8f, 0xa2, 0x24, 0x8f, 0x65, 0x7b, 0x4d, 0x4b, 0x24, 0xbd, - 0xb6, 0x6c, 0xc5, 0x89, 0x48, 0x5b, 0x06, 0x8c, 0xa6, 0xbf, 0x4d, 0xab, 0x45, 0x1d, 0x38, 0x81, - 0xbc, 0x8e, 0x13, 0x38, 0x69, 0x43, 0x0c, 0x97, 0x63, 0x6a, 0xa1, 0xe5, 0x2e, 0xbd, 0xb3, 0x94, - 0xc5, 0x02, 0xb9, 0x04, 0xe8, 0xad, 0x2d, 0x1a, 0x14, 0x3d, 0xf4, 0xd8, 0x6b, 0x6f, 0xfd, 0x2b, - 0xaa, 0x63, 0x80, 0x5e, 0x8a, 0x16, 0x55, 0x5b, 0xbb, 0xe8, 0x21, 0x97, 0xfe, 0x03, 0x3d, 0x14, - 0xf3, 0x93, 0x4b, 0x2e, 0x29, 0x51, 0x8b, 0xea, 0x24, 0xce, 0xce, 0x7b, 0x9f, 0xf7, 0x9d, 0x37, - 0xbf, 0x47, 0xb0, 0xda, 0x6d, 0x13, 0x52, 0xf5, 0xc8, 0x3e, 0x09, 0x71, 0x8b, 0x54, 0xf7, 0xef, - 0x56, 0x5f, 0x76, 0x49, 0xd8, 0xab, 0x74, 0xc2, 0x20, 0x0a, 0xd0, 0x32, 0xab, 0xad, 0xa8, 0xda, - 0xca, 0xfe, 0xdd, 0xc2, 0x6a, 0x2b, 0x08, 0x5a, 0x1e, 0xa9, 0xe2, 0x8e, 0x5b, 0xc5, 0xbe, 0x1f, - 0x44, 0x38, 0x72, 0x03, 0x9f, 0x0a, 0xfb, 0x42, 0x31, 0x41, 0x6b, 0x11, 0x9f, 0x50, 0x57, 0xd5, - 0x97, 0x12, 0xf5, 0x9a, 0x2d, 0x0c, 0x56, 0x5a, 0x41, 0x2b, 0xe0, 0x3f, 0xab, 0xec, 0x97, 0xc2, - 0x3a, 0x01, 0x6d, 0x07, 0xb4, 0xda, 0xc0, 0x94, 0x39, 0x35, 0x48, 0x84, 0xef, 0x56, 0x9d, 0xc0, - 0xf5, 0x45, 0xbd, 0x95, 0x87, 0xdc, 0x13, 0xa6, 0x7a, 0x07, 0x87, 0xb8, 0x4d, 0xad, 0xf7, 0xe1, - 0x42, 0xac, 0x68, 0x13, 0xda, 0x09, 0x7c, 0x4a, 0xd0, 0x7d, 0xc8, 0x74, 0xf8, 0x17, 0xd3, 0x28, - 0x1b, 0x1b, 0xb9, 0x2d, 0xb3, 0x32, 0xdc, 0xba, 0x8a, 0xf0, 0xa8, 0x9d, 0x3b, 0x3c, 0x2a, 0x4d, - 0xd9, 0xd2, 0xda, 0xba, 0x0f, 0x17, 0x39, 0xce, 0x26, 0x2d, 0x97, 0x46, 0x24, 0x24, 0xcd, 0x0f, - 0x83, 0x3d, 0xe2, 0x53, 0xb4, 0x06, 0xc0, 0x14, 0xd5, 0x9b, 0xc4, 0x0f, 0xda, 0x1c, 0x3a, 0x6f, - 0xcf, 0xb3, 0x2f, 0xdb, 0xec, 0x83, 0xf5, 0x09, 0xac, 0x8d, 0xf4, 0xd3, 0x82, 0xde, 0x85, 0x6c, - 0xc8, 0xeb, 0xc2, 0x9e, 0x69, 0x94, 0x67, 0x36, 0x72, 0x5b, 0x97, 0x93, 0x92, 0xb8, 0x8f, 0x54, - 0xa4, 0xcd, 0x2d, 0x0b, 0xca, 0x23, 0xd9, 0x1f, 0xbb, 0xd1, 0xee, 0xfb, 0x38, 0xdc, 0x23, 0x11, - 0xb5, 0x5c, 0xd8, 0x38, 0xc9, 0x46, 0x4b, 0xf9, 0x0e, 0xcc, 0xb5, 0xc5, 0x27, 0xa9, 0x64, 0x6d, - 0x8c, 0x12, 0xe1, 0x28, 0xf5, 0x28, 0x1f, 0xeb, 0x97, 0x06, 0xe4, 0x62, 0xd5, 0xe8, 0x1e, 0xcc, - 0x46, 0xac, 0x28, 0x33, 0x7d, 0x42, 0xb3, 0x84, 0x2d, 0x7a, 0x0f, 0x32, 0x82, 0x67, 0x4e, 0x73, - 0xaf, 0x77, 0x92, 0x5e, 0xbc, 0x3d, 0x22, 0xc6, 0xd3, 0x6e, 0xbb, 0x8d, 0x59, 0xe3, 0x44, 0x0b, - 0x54, 0x9f, 0x09, 0x82, 0x75, 0x1b, 0x10, 0xb7, 0x7d, 0xda, 0x21, 0x8e, 0x8b, 0xbd, 0x07, 0x94, - 0x92, 0x88, 0xa2, 0x15, 0x98, 0x8d, 0xf7, 0x95, 0x28, 0x58, 0x3f, 0x86, 0x42, 0xd2, 0x56, 0x67, - 0xe6, 0xbb, 0x30, 0xdb, 0xc1, 0x6e, 0xa8, 0xf2, 0x62, 0x25, 0x45, 0xc5, 0xfd, 0x76, 0xb0, 0x1b, - 0xaa, 0x56, 0x71, 0x37, 0xad, 0x64, 0x40, 0xf5, 0x18, 0x25, 0xff, 0x5d, 0x90, 0x52, 0x46, 0x36, - 0x11, 0x5d, 0x83, 0x05, 0xda, 0x6b, 0x37, 0x02, 0x6f, 0x60, 0xc4, 0xe5, 0xc4, 0x37, 0x3e, 0xe6, - 0x50, 0x01, 0xb2, 0xe4, 0xa0, 0x13, 0xf8, 0xc4, 0x17, 0x59, 0xcc, 0xdb, 0xba, 0x8c, 0x9e, 0xc0, - 0x42, 0x10, 0x62, 0xc7, 0x23, 0xf5, 0x4e, 0xe8, 0x3a, 0xc4, 0x9c, 0x61, 0xee, 0xb5, 0xca, 0xe1, - 0x51, 0xc9, 0xf8, 0xcb, 0x51, 0xe9, 0x66, 0xcb, 0x8d, 0x76, 0xbb, 0x8d, 0x8a, 0x13, 0xb4, 0xab, - 0x72, 0xba, 0x89, 0x3f, 0x9b, 0xb4, 0xb9, 0x57, 0x8d, 0x7a, 0x1d, 0x42, 0x2b, 0xdb, 0xc4, 0xb1, - 0x73, 0x82, 0xb1, 0xc3, 0x10, 0xe8, 0x00, 0x56, 0xba, 0xbc, 0x27, 0xeb, 0xe4, 0xc0, 0xd9, 0xc5, - 0x7e, 0x8b, 0xd4, 0x43, 0x1c, 0x11, 0xf3, 0x1c, 0x47, 0xff, 0x90, 0xe5, 0x61, 0x72, 0xf4, 0xd7, - 0x47, 0xa5, 0x95, 0x6e, 0x94, 0xa4, 0xd9, 0x48, 0xc4, 0xf8, 0x81, 0xfc, 0x68, 0xe3, 0x88, 0xa0, - 0x4f, 0x01, 0x68, 0xb7, 0xd3, 0xf1, 0x7a, 0xf5, 0x07, 0x3b, 0xcf, 0xcd, 0x59, 0x1e, 0xef, 0xdb, - 0xa7, 0x8e, 0xa7, 0x18, 0xb8, 0xd3, 0xb3, 0xe7, 0xc5, 0xef, 0x07, 0x3b, 0xcf, 0x19, 0xbc, 0x11, - 0x84, 0x61, 0xf0, 0x8a, 0xc3, 0x33, 0x69, 0xe1, 0x92, 0xc1, 0xe1, 0xe2, 0x37, 0x83, 0xbf, 0x07, - 0x59, 0x1e, 0xc9, 0x25, 0x4d, 0x73, 0x4e, 0x77, 0xc1, 0xa4, 0xe8, 0x47, 0x7e, 0x64, 0x6b, 0x7f, - 0xc6, 0x0a, 0x09, 0x25, 0xe1, 0x3e, 0x69, 0x9a, 0xd9, 0x74, 0x2c, 0xe5, 0x8f, 0x3e, 0x00, 0x70, - 0x02, 0xcf, 0xc3, 0x11, 0x09, 0xb1, 0x67, 0xce, 0xa7, 0xa2, 0xc5, 0x08, 0x4c, 0x9b, 0x68, 0x34, - 0x69, 0x9a, 0x90, 0x4e, 0x9b, 0xf2, 0x47, 0x8f, 0x61, 0xde, 0x73, 0x5f, 0x76, 0xdd, 0xa6, 0x1b, - 0xf5, 0xcc, 0x5c, 0x2a, 0x58, 0x1f, 0x80, 0x9e, 0xc1, 0x62, 0x1b, 0x1f, 0xb8, 0xed, 0x6e, 0xbb, - 0x2e, 0x22, 0x98, 0x0b, 0xa9, 0x90, 0x79, 0x49, 0xa9, 0x71, 0x08, 0xfa, 0x09, 0x20, 0x85, 0x8d, - 0x25, 0x32, 0x9f, 0x0a, 0x7d, 0x5e, 0x92, 0x1e, 0xf6, 0xf3, 0xf9, 0x29, 0x9c, 0x6f, 0xbb, 0x3e, - 0xc7, 0xf7, 0x73, 0xb1, 0x98, 0x8a, 0xbe, 0x2c, 0x41, 0x8f, 0x75, 0x4a, 0x9a, 0x90, 0x97, 0x13, - 0x59, 0xcc, 0x02, 0x73, 0x89, 0x83, 0xbf, 0x77, 0x3a, 0xf0, 0xd7, 0x47, 0xa5, 0xbc, 0x9c, 0xc1, - 0x02, 0x63, 0x2f, 0x08, 0xea, 0x53, 0x5e, 0x42, 0xcf, 0x61, 0x19, 0xef, 0x63, 0xd7, 0xc3, 0x0d, - 0x8f, 0xa8, 0xd4, 0x2f, 0xa7, 0x6a, 0xc1, 0x92, 0xe6, 0xf4, 0x93, 0xdf, 0x47, 0xbf, 0x72, 0xa3, - 0xdd, 0x66, 0x88, 0x5f, 0x99, 0xe7, 0xd3, 0x25, 0x5f, 0x93, 0x3e, 0x96, 0x20, 0xd4, 0x82, 0xcb, - 0x7d, 0x7c, 0xbf, 0x77, 0xdd, 0x9f, 0x12, 0x13, 0xa5, 0x8a, 0x71, 0x49, 0xe3, 0x1e, 0xc6, 0x69, - 0xa8, 0x01, 0x17, 0xe5, 0x22, 0xbd, 0xeb, 0xd2, 0x28, 0x08, 0x5d, 0x47, 0xae, 0xd6, 0x17, 0x52, - 0xad, 0xd6, 0x17, 0x04, 0xec, 0x47, 0x92, 0x25, 0x56, 0xed, 0x4b, 0x90, 0x21, 0x61, 0x18, 0x84, - 0xd4, 0x5c, 0xe1, 0x3b, 0x88, 0x2c, 0x59, 0x77, 0x60, 0x85, 0xef, 0x3e, 0x0f, 0x1c, 0x27, 0xe8, - 0xfa, 0x51, 0x0d, 0x7b, 0xd8, 0x77, 0x08, 0x45, 0x26, 0xcc, 0xe1, 0x66, 0x33, 0x24, 0x94, 0xca, - 0x2d, 0x47, 0x15, 0xad, 0xbf, 0x4d, 0xc3, 0xea, 0x28, 0x17, 0xbd, 0x65, 0xb5, 0x62, 0x8b, 0x9d, - 0xd8, 0x40, 0xaf, 0x54, 0x84, 0xd0, 0x0a, 0x3b, 0x28, 0x55, 0xe4, 0x61, 0xae, 0xf2, 0x30, 0x70, - 0xfd, 0xda, 0x1d, 0x96, 0xc3, 0xdf, 0xff, 0xbd, 0xb4, 0x31, 0x41, 0xe3, 0x98, 0x03, 0x8d, 0xad, - 0x84, 0x7b, 0x03, 0xab, 0xd7, 0xf4, 0xff, 0x3f, 0x54, 0x7c, 0x69, 0x6b, 0xc5, 0x96, 0xb6, 0x99, - 0x33, 0x68, 0x95, 0x82, 0x5b, 0x55, 0x79, 0x92, 0x95, 0xe9, 0x55, 0xa7, 0x87, 0xf1, 0x1d, 0xf2, - 0x45, 0x06, 0xae, 0x8e, 0xf0, 0xd0, 0xfd, 0xf1, 0x0c, 0x16, 0x55, 0xca, 0xea, 0xfb, 0xd8, 0xeb, - 0x12, 0x01, 0x38, 0xd5, 0xf0, 0x65, 0xe3, 0x2a, 0xaf, 0x28, 0x1f, 0x31, 0x08, 0x9b, 0xd8, 0xfd, - 0xf4, 0x48, 0xf0, 0x74, 0x2a, 0xf0, 0x52, 0x9f, 0x23, 0xd0, 0xcf, 0x60, 0x51, 0xa5, 0x43, 0x82, - 0x67, 0xd2, 0x29, 0x56, 0x14, 0x81, 0x7d, 0x02, 0x0b, 0x72, 0x7b, 0xf6, 0xdc, 0xb6, 0x1b, 0xc9, - 0x13, 0xcb, 0xa9, 0x0f, 0x43, 0x82, 0xf1, 0x98, 0x21, 0x90, 0x03, 0x17, 0xc5, 0xc2, 0xcc, 0xaf, - 0x44, 0xf5, 0x68, 0x37, 0x24, 0x74, 0x37, 0xf0, 0x9a, 0xf2, 0x74, 0x72, 0x5a, 0xf6, 0x4a, 0x0c, - 0xf6, 0xa1, 0x62, 0xa1, 0xcf, 0xe0, 0x02, 0xed, 0x04, 0x51, 0x7d, 0xa8, 0x17, 0x33, 0xa9, 0x72, - 0x72, 0x9e, 0xa1, 0x9e, 0x0e, 0xf4, 0x64, 0x03, 0x2e, 0x72, 0x7e, 0xa2, 0x3b, 0xe7, 0x52, 0x45, - 0xe0, 0x62, 0x1f, 0x0e, 0x75, 0xa9, 0x6a, 0xc3, 0x50, 0xbf, 0x66, 0xd3, 0xb7, 0xa1, 0x16, 0xef, - 0x5b, 0xeb, 0x0a, 0x5c, 0xe6, 0x73, 0xe0, 0x71, 0x2c, 0x81, 0x38, 0x6c, 0xb1, 0x8b, 0xca, 0xb7, - 0xa0, 0x34, 0xa6, 0x4a, 0x4f, 0x11, 0x13, 0xe6, 0x22, 0xf1, 0x89, 0xaf, 0x58, 0xf3, 0xb6, 0x2a, - 0x5a, 0x4b, 0x90, 0xe7, 0xce, 0x35, 0xdc, 0xdc, 0x26, 0x8d, 0x88, 0x5a, 0xb6, 0xbc, 0x19, 0xaa, - 0x0f, 0xb1, 0x9b, 0xdd, 0x00, 0x83, 0xad, 0x0f, 0x89, 0x6b, 0x83, 0x74, 0x52, 0x57, 0x29, 0x15, - 0xa4, 0x06, 0xcb, 0xf2, 0x0a, 0x70, 0xa0, 0x77, 0x9f, 0xb1, 0xf3, 0xbd, 0x7f, 0x8f, 0x98, 0x8e, - 0xdf, 0x23, 0xfe, 0x6d, 0x80, 0x39, 0x0c, 0xd1, 0xda, 0x08, 0xcc, 0x89, 0x4d, 0x99, 0x9e, 0xc5, - 0x8a, 0xac, 0xd8, 0xc8, 0x81, 0x4c, 0x24, 0xa2, 0x9c, 0xc1, 0x62, 0x2c, 0xd1, 0xd6, 0xf7, 0x61, - 0x51, 0xb5, 0x53, 0x9e, 0x03, 0x4e, 0x9b, 0xaa, 0xcf, 0xe1, 0xd2, 0x20, 0x41, 0xe7, 0xa9, 0xdf, - 0x00, 0xe3, 0xec, 0x1a, 0xf0, 0x73, 0x03, 0x16, 0x78, 0xfc, 0x47, 0x3e, 0xed, 0x10, 0x27, 0x62, - 0x7b, 0xb3, 0xb8, 0xcf, 0x49, 0xf9, 0xb2, 0xc4, 0x2e, 0x76, 0x7a, 0xcb, 0x61, 0x0d, 0x30, 0x62, - 0xa7, 0xe3, 0xe2, 0xc0, 0xde, 0x37, 0xc3, 0x6b, 0xe3, 0xdb, 0xd5, 0x25, 0xc8, 0x34, 0xd9, 0xc5, - 0x29, 0xe4, 0xab, 0x9c, 0x61, 0xcb, 0x12, 0x5a, 0x86, 0x19, 0x2f, 0xda, 0xe7, 0xcb, 0x93, 0x61, - 0xb3, 0x9f, 0x7a, 0xbf, 0x91, 0x6a, 0xe4, 0x26, 0x72, 0xcc, 0x7e, 0x73, 0x20, 0x8f, 0x0c, 0xd2, - 0x41, 0x27, 0x6f, 0x1b, 0xe4, 0x8d, 0x87, 0xe8, 0x9b, 0x73, 0x39, 0x39, 0x05, 0x06, 0xc3, 0xc8, - 0x99, 0xd0, 0x77, 0x64, 0x8d, 0x7e, 0x81, 0x5d, 0xaf, 0x1b, 0x12, 0x31, 0x8a, 0xe6, 0x6d, 0x5d, - 0xb6, 0xb0, 0xdc, 0xe8, 0x06, 0x19, 0x5a, 0x40, 0x4d, 0xe7, 0x2b, 0x94, 0x8f, 0x10, 0x93, 0xc6, - 0xd7, 0x7e, 0xd6, 0x1f, 0x0c, 0x58, 0x9c, 0x34, 0x13, 0xe8, 0x3e, 0x64, 0xb1, 0x8f, 0xbd, 0x1e, - 0x75, 0xa9, 0x7c, 0xbf, 0x28, 0x24, 0x03, 0xda, 0x2e, 0xdd, 0x7b, 0xe4, 0xbf, 0x08, 0x6c, 0x6d, - 0x8b, 0xde, 0x85, 0x6c, 0x27, 0xa0, 0x2e, 0x5b, 0x89, 0x78, 0xd7, 0x8d, 0x7c, 0x7a, 0xd9, 0x26, - 0x8e, 0x3e, 0x5a, 0x69, 0x73, 0x84, 0xe0, 0x9c, 0xeb, 0xbf, 0x08, 0xc4, 0xde, 0x65, 0xf3, 0xdf, - 0xd6, 0x67, 0x90, 0x55, 0x41, 0x58, 0xfa, 0xd4, 0xc2, 0xc8, 0xd5, 0x1a, 0xb6, 0x2e, 0xa3, 0x32, - 0xe4, 0x62, 0x6b, 0xa0, 0x1c, 0x52, 0xf1, 0x4f, 0x6c, 0xbe, 0x7c, 0xa4, 0xf7, 0x5b, 0xc3, 0x16, - 0x05, 0xeb, 0x3f, 0x06, 0xe4, 0x62, 0x6a, 0xd0, 0xcb, 0x81, 0xb1, 0x27, 0x7a, 0x7a, 0x75, 0xe4, - 0x4c, 0xd9, 0x26, 0x0e, 0x9f, 0x2c, 0xf7, 0xe4, 0x64, 0x79, 0x7b, 0xb2, 0x05, 0x3e, 0x79, 0xfa, - 0x6a, 0x0f, 0x4c, 0x85, 0x33, 0x0a, 0xa8, 0x43, 0x6c, 0xfd, 0x75, 0x11, 0x66, 0xf9, 0x48, 0x43, - 0x1d, 0xc8, 0x88, 0x07, 0x42, 0xb4, 0x36, 0xe6, 0x69, 0x4a, 0x54, 0x17, 0xd6, 0x8f, 0xad, 0x56, - 0x63, 0xd4, 0x2a, 0x7f, 0xf1, 0xa7, 0x7f, 0xfd, 0x7a, 0xba, 0x80, 0xcc, 0x6a, 0xe2, 0x59, 0x54, - 0x3c, 0x3d, 0xa2, 0xdf, 0x1a, 0xb0, 0x9c, 0x78, 0x76, 0xbc, 0x35, 0x86, 0x3e, 0x6c, 0x58, 0xa8, - 0x4e, 0x68, 0xa8, 0x05, 0xbd, 0xcd, 0x05, 0xad, 0xa3, 0xeb, 0x49, 0x41, 0xa1, 0xf6, 0xa9, 0x8b, - 0xa5, 0x0b, 0xfd, 0xd1, 0x80, 0xab, 0xc7, 0x3c, 0x2d, 0xa2, 0xad, 0x09, 0xa3, 0xc7, 0x7c, 0x0a, - 0xdf, 0x3c, 0xbd, 0x8f, 0x16, 0xff, 0x0d, 0x2e, 0x7e, 0x0b, 0xdd, 0x99, 0x40, 0x3c, 0xbf, 0x21, - 0xd6, 0xe5, 0xeb, 0x25, 0xfa, 0x85, 0x01, 0xf9, 0xc1, 0x87, 0xc2, 0x1b, 0x63, 0x74, 0x0c, 0x58, - 0x15, 0xde, 0x99, 0xc4, 0x4a, 0xeb, 0xdb, 0xe0, 0xfa, 0x2c, 0x54, 0x4e, 0xea, 0xa3, 0xc2, 0xa1, - 0x8e, 0x45, 0x74, 0xa6, 0x67, 0xf0, 0xb9, 0xf0, 0xc6, 0x24, 0x4f, 0xa1, 0x85, 0x53, 0x3d, 0x98, - 0x1e, 0xa7, 0x47, 0x24, 0xa6, 0x4e, 0x65, 0xf4, 0xdf, 0x18, 0xb0, 0x34, 0x7c, 0x27, 0xbc, 0x39, - 0x26, 0xd6, 0x90, 0x5d, 0xa1, 0x32, 0x99, 0x9d, 0x56, 0x75, 0x9b, 0xab, 0xba, 0x81, 0xac, 0xa4, - 0x2a, 0x2c, 0x5c, 0xea, 0x0d, 0xa5, 0xe1, 0x4b, 0x03, 0x16, 0x87, 0x6e, 0x46, 0xeb, 0xc7, 0x87, - 0x53, 0x99, 0xda, 0x9c, 0xc8, 0x4c, 0x8b, 0x7a, 0x8b, 0x8b, 0xba, 0x8e, 0xae, 0x8d, 0x17, 0xa5, - 0x72, 0xf5, 0x3b, 0x03, 0x50, 0xf2, 0x70, 0x89, 0xde, 0x1a, 0x13, 0x30, 0x69, 0x5a, 0xb8, 0x3b, - 0xb1, 0xa9, 0xd6, 0xb7, 0xc9, 0xf5, 0xdd, 0x42, 0xeb, 0x49, 0x7d, 0x03, 0x37, 0x12, 0x29, 0xa6, - 0x07, 0x59, 0x75, 0x62, 0x45, 0xa5, 0x31, 0xd1, 0x94, 0x41, 0xe1, 0xd6, 0x09, 0x06, 0x5a, 0xc4, - 0x75, 0x2e, 0x62, 0x0d, 0x5d, 0x4d, 0x8a, 0x68, 0xe0, 0x66, 0xbd, 0xc9, 0xc3, 0xfd, 0xcc, 0x80, - 0x5c, 0xfc, 0x64, 0x6b, 0x8d, 0x1d, 0xb2, 0xda, 0xa6, 0x70, 0xfb, 0x64, 0x1b, 0x2d, 0xe2, 0x26, - 0x17, 0x51, 0x46, 0xc5, 0x51, 0x83, 0xfa, 0x40, 0x3f, 0x0c, 0xa1, 0xcf, 0x61, 0xbe, 0x7f, 0x66, - 0x2c, 0x8f, 0x0f, 0x20, 0x2c, 0x0a, 0x1b, 0x27, 0x59, 0x68, 0x01, 0x37, 0xb8, 0x80, 0x22, 0x5a, - 0x1d, 0x2d, 0x40, 0xec, 0x2a, 0x28, 0x82, 0x39, 0x75, 0xe0, 0x2b, 0x8e, 0x41, 0xcb, 0xfa, 0xc2, - 0xcd, 0xe3, 0xeb, 0x75, 0xe0, 0x6b, 0x3c, 0xf0, 0x55, 0x74, 0x25, 0x19, 0xd8, 0x95, 0xa1, 0xbe, - 0x4c, 0x9e, 0x67, 0xd6, 0x8f, 0xa7, 0x4b, 0xb3, 0xb1, 0xf3, 0x65, 0xf4, 0xe1, 0xeb, 0xb8, 0xf9, - 0x22, 0xb5, 0x6c, 0xca, 0x79, 0x53, 0xfb, 0xe0, 0xf0, 0x9f, 0xc5, 0xa9, 0xc3, 0xd7, 0x45, 0xe3, - 0xab, 0xd7, 0x45, 0xe3, 0x1f, 0xaf, 0x8b, 0xc6, 0xaf, 0xde, 0x14, 0xa7, 0xbe, 0x7a, 0x53, 0x9c, - 0xfa, 0xf3, 0x9b, 0xe2, 0xd4, 0x27, 0x77, 0x62, 0x5b, 0x36, 0x43, 0x6d, 0xfa, 0x24, 0x7a, 0x15, - 0x84, 0x7b, 0x82, 0xbb, 0x7f, 0xbf, 0x7a, 0xd0, 0x87, 0xf3, 0x0d, 0xbc, 0x91, 0xe1, 0xff, 0x11, - 0xbc, 0xf7, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xab, 0x99, 0xab, 0x86, 0xd8, 0x1c, 0x00, 0x00, + // 2117 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0xcd, 0x6f, 0x1b, 0xc7, + 0x15, 0xd7, 0x4a, 0x11, 0x25, 0x3d, 0xea, 0x73, 0x2c, 0xdb, 0x6b, 0x5a, 0xa2, 0xe4, 0xb5, 0xf5, + 0x11, 0x27, 0x22, 0x6d, 0x19, 0x30, 0x9a, 0x7e, 0x9b, 0x56, 0xd3, 0x3a, 0xb0, 0x03, 0x79, 0x1d, + 0x3b, 0x70, 0xd2, 0x86, 0x18, 0x92, 0x63, 0x6a, 0xa0, 0xe5, 0x2e, 0xbd, 0xb3, 0x94, 0xa5, 0x02, + 0xb9, 0x18, 0xe8, 0xad, 0x2d, 0x1a, 0x14, 0x05, 0xda, 0x63, 0xaf, 0xbd, 0xf5, 0xd4, 0x3f, 0xa1, + 0x3e, 0x06, 0xe8, 0xa5, 0x28, 0x50, 0xb5, 0xb5, 0x8b, 0x1e, 0x72, 0xe9, 0xad, 0xa7, 0x1e, 0x8a, + 0xf9, 0xe4, 0x2e, 0x97, 0x94, 0x48, 0xa2, 0x3a, 0x89, 0xb3, 0xf3, 0xde, 0xef, 0xfd, 0xde, 0x9b, + 0x79, 0x33, 0xef, 0x8d, 0x60, 0xa9, 0xd5, 0x20, 0xa4, 0xe8, 0x91, 0x03, 0x12, 0xe2, 0x3a, 0x29, + 0x1e, 0xdc, 0x2c, 0x3e, 0x6f, 0x91, 0xf0, 0xa8, 0xd0, 0x0c, 0x83, 0x28, 0x40, 0xf3, 0x7c, 0xb6, + 0xa0, 0x67, 0x0b, 0x07, 0x37, 0x73, 0x4b, 0xf5, 0x20, 0xa8, 0x7b, 0xa4, 0x88, 0x9b, 0xb4, 0x88, + 0x7d, 0x3f, 0x88, 0x70, 0x44, 0x03, 0x9f, 0x49, 0xf9, 0x5c, 0x3e, 0x85, 0x56, 0x27, 0x3e, 0x61, + 0x54, 0xcf, 0xaf, 0xa4, 0xe6, 0x0d, 0xb6, 0x14, 0x58, 0xac, 0x07, 0xf5, 0x40, 0xfc, 0x2c, 0xf2, + 0x5f, 0x1a, 0xb6, 0x1a, 0xb0, 0x46, 0xc0, 0x8a, 0x15, 0xcc, 0xb8, 0x52, 0x85, 0x44, 0xf8, 0x66, + 0xb1, 0x1a, 0x50, 0x5f, 0xcd, 0x5f, 0x8f, 0xcf, 0x0b, 0xfe, 0x46, 0xaa, 0x89, 0xeb, 0xd4, 0x17, + 0x1c, 0xa5, 0xac, 0x33, 0x03, 0xd9, 0x87, 0x5c, 0x62, 0x17, 0x87, 0xb8, 0xc1, 0x9c, 0x07, 0x70, + 0x2e, 0x36, 0x74, 0x09, 0x6b, 0x06, 0x3e, 0x23, 0xe8, 0x36, 0x64, 0x9a, 0xe2, 0x8b, 0x6d, 0xad, + 0x5a, 0x9b, 0xd9, 0x6d, 0xbb, 0xd0, 0x19, 0x89, 0x82, 0xd4, 0x28, 0xbd, 0xf5, 0xea, 0x78, 0x65, + 0xc4, 0x55, 0xd2, 0xce, 0x6d, 0x38, 0x2f, 0xe0, 0x5c, 0x52, 0xa7, 0x2c, 0x22, 0x21, 0xa9, 0x7d, + 0x14, 0xec, 0x13, 0x9f, 0xa1, 0x65, 0x00, 0xce, 0xae, 0x5c, 0x23, 0x7e, 0xd0, 0x10, 0xa0, 0x53, + 0xee, 0x14, 0xff, 0xb2, 0xc3, 0x3f, 0x38, 0x9f, 0xc0, 0x72, 0x57, 0x3d, 0x43, 0xe8, 0x3d, 0x98, + 0x0c, 0xc5, 0x5c, 0x78, 0x64, 0x5b, 0xab, 0x63, 0x9b, 0xd9, 0xed, 0x8b, 0x69, 0x4a, 0x42, 0x47, + 0x31, 0x32, 0xe2, 0x8e, 0x03, 0xab, 0x5d, 0xb1, 0x3f, 0xa6, 0xd1, 0xde, 0x03, 0x1c, 0xee, 0x93, + 0x88, 0x39, 0x14, 0x36, 0x4f, 0x93, 0x31, 0x54, 0xbe, 0x05, 0x13, 0x0d, 0xf9, 0x49, 0x31, 0x59, + 0xee, 0xc1, 0x44, 0x2a, 0x2a, 0x3e, 0x5a, 0xc7, 0xf9, 0xb9, 0x05, 0xd9, 0xd8, 0x34, 0xba, 0x05, + 0xe3, 0x11, 0x1f, 0xaa, 0x48, 0x9f, 0xe2, 0x96, 0x94, 0x45, 0x1f, 0x40, 0x46, 0xe2, 0xd9, 0xa3, + 0x42, 0xeb, 0xdd, 0xb4, 0x96, 0xf0, 0x47, 0xda, 0x78, 0xd4, 0x6a, 0x34, 0x30, 0x77, 0x4e, 0x7a, + 0xa0, 0xd7, 0x4c, 0x22, 0x38, 0xd7, 0x01, 0x09, 0xd9, 0x47, 0x4d, 0x52, 0xa5, 0xd8, 0xbb, 0xc3, + 0x18, 0x89, 0x18, 0x5a, 0x84, 0xf1, 0xf8, 0x5a, 0xc9, 0x81, 0xf3, 0x43, 0xc8, 0xa5, 0x65, 0x4d, + 0x64, 0xbe, 0x0d, 0xe3, 0x4d, 0x4c, 0x43, 0x1d, 0x17, 0x27, 0x4d, 0x2a, 0xae, 0xb7, 0x8b, 0x69, + 0xa8, 0xbd, 0x12, 0x6a, 0x86, 0x49, 0x82, 0x75, 0x0f, 0x26, 0xff, 0x9d, 0x56, 0x54, 0xba, 0xba, + 0x88, 0xae, 0xc0, 0x34, 0x3b, 0x6a, 0x54, 0x02, 0x2f, 0xb1, 0xe3, 0xb2, 0xf2, 0x9b, 0xd8, 0x73, + 0x28, 0x07, 0x93, 0xe4, 0xb0, 0x19, 0xf8, 0xc4, 0x97, 0x51, 0x9c, 0x71, 0xcd, 0x18, 0x3d, 0x84, + 0xe9, 0x20, 0xc4, 0x55, 0x8f, 0x94, 0x9b, 0x21, 0xad, 0x12, 0x7b, 0x8c, 0xab, 0x97, 0x0a, 0xaf, + 0x8e, 0x57, 0xac, 0xbf, 0x1c, 0xaf, 0xac, 0xd7, 0x69, 0xb4, 0xd7, 0xaa, 0x14, 0xaa, 0x41, 0xa3, + 0xa8, 0x52, 0x4f, 0xfe, 0xd9, 0x62, 0xb5, 0xfd, 0x62, 0x74, 0xd4, 0x24, 0xac, 0xb0, 0x43, 0xaa, + 0x6e, 0x56, 0x62, 0xec, 0x72, 0x08, 0x74, 0x08, 0x8b, 0x2d, 0xb1, 0x92, 0x65, 0x72, 0x58, 0xdd, + 0xc3, 0x7e, 0x9d, 0x94, 0x43, 0x1c, 0x11, 0xfb, 0x2d, 0x01, 0xfd, 0x3e, 0x8f, 0x43, 0xff, 0xd0, + 0x5f, 0x1d, 0xaf, 0x2c, 0xb6, 0xa2, 0x34, 0x9a, 0x8b, 0xa4, 0x8d, 0xef, 0xa9, 0x8f, 0x2e, 0x8e, + 0x08, 0xfa, 0x14, 0x80, 0xb5, 0x9a, 0x4d, 0xef, 0xa8, 0x7c, 0x67, 0xf7, 0xa9, 0x3d, 0x2e, 0xec, + 0x7d, 0x73, 0x60, 0x7b, 0x1a, 0x03, 0x37, 0x8f, 0xdc, 0x29, 0xf9, 0xfb, 0xce, 0xee, 0x53, 0x0e, + 0x5e, 0x09, 0xc2, 0x30, 0x78, 0x21, 0xc0, 0x33, 0xc3, 0x82, 0x2b, 0x0c, 0x01, 0x2e, 0x7f, 0x73, + 0xf0, 0x0f, 0x60, 0x52, 0x58, 0xa2, 0xa4, 0x66, 0x4f, 0x98, 0x25, 0xe8, 0x17, 0xfa, 0x9e, 0x1f, + 0xb9, 0x46, 0x9f, 0x63, 0x85, 0x84, 0x91, 0xf0, 0x80, 0xd4, 0xec, 0xc9, 0xe1, 0xb0, 0xb4, 0x3e, + 0xfa, 0x10, 0xa0, 0x1a, 0x78, 0x1e, 0x8e, 0x48, 0x88, 0x3d, 0x7b, 0x6a, 0x28, 0xb4, 0x18, 0x02, + 0xe7, 0x26, 0x9d, 0x26, 0x35, 0x1b, 0x86, 0xe3, 0xa6, 0xf5, 0xd1, 0x7d, 0x98, 0xf2, 0xe8, 0xf3, + 0x16, 0xad, 0xd1, 0xe8, 0xc8, 0xce, 0x0e, 0x05, 0xd6, 0x06, 0x40, 0x8f, 0x61, 0xb6, 0x81, 0x0f, + 0x69, 0xa3, 0xd5, 0x28, 0x4b, 0x0b, 0xf6, 0xf4, 0x50, 0x90, 0x33, 0x0a, 0xa5, 0x24, 0x40, 0xd0, + 0x8f, 0x00, 0x69, 0xd8, 0x58, 0x20, 0x67, 0x86, 0x82, 0x5e, 0x50, 0x48, 0x77, 0xdb, 0xf1, 0xfc, + 0x14, 0x16, 0x1a, 0xd4, 0x17, 0xf0, 0xed, 0x58, 0xcc, 0x0e, 0x85, 0x3e, 0xaf, 0x80, 0xee, 0x9b, + 0x90, 0xd4, 0x60, 0x46, 0x25, 0xb2, 0xcc, 0x02, 0x7b, 0x4e, 0x00, 0x7f, 0x67, 0x30, 0xe0, 0xaf, + 0x8e, 0x57, 0x66, 0x54, 0x06, 0x4b, 0x18, 0x77, 0x5a, 0xa2, 0x3e, 0x12, 0x23, 0xf4, 0x14, 0xe6, + 0xf1, 0x01, 0xa6, 0x1e, 0xae, 0x78, 0x44, 0x87, 0x7e, 0x7e, 0x28, 0x0f, 0xe6, 0x0c, 0x4e, 0x3b, + 0xf8, 0x6d, 0xe8, 0x17, 0x34, 0xda, 0xab, 0x85, 0xf8, 0x85, 0xbd, 0x30, 0x5c, 0xf0, 0x0d, 0xd2, + 0xc7, 0x0a, 0x08, 0xd5, 0xe1, 0x62, 0x1b, 0xbe, 0xbd, 0xba, 0xf4, 0xc7, 0xc4, 0x46, 0x43, 0xd9, + 0xb8, 0x60, 0xe0, 0xee, 0xc6, 0xd1, 0x50, 0x05, 0xce, 0xab, 0x43, 0x7a, 0x8f, 0xb2, 0x28, 0x08, + 0x69, 0x55, 0x9d, 0xd6, 0xe7, 0x86, 0x3a, 0xad, 0xcf, 0x49, 0xb0, 0x1f, 0x28, 0x2c, 0x79, 0x6a, + 0x5f, 0x80, 0x0c, 0x09, 0xc3, 0x20, 0x64, 0xf6, 0xa2, 0xb8, 0x41, 0xd4, 0xc8, 0xb9, 0x01, 0x8b, + 0xe2, 0xf6, 0xb9, 0x53, 0xad, 0x06, 0x2d, 0x3f, 0x2a, 0x61, 0x0f, 0xfb, 0x55, 0xc2, 0x90, 0x0d, + 0x13, 0xb8, 0x56, 0x0b, 0x09, 0x63, 0xea, 0xca, 0xd1, 0x43, 0xe7, 0xaf, 0xa3, 0xb0, 0xd4, 0x4d, + 0xc5, 0x5c, 0x59, 0xf5, 0xd8, 0x61, 0x27, 0x2f, 0xd0, 0x4b, 0x05, 0x49, 0xb4, 0xc0, 0x0b, 0xa5, + 0x82, 0x2a, 0xe9, 0x0a, 0x77, 0x03, 0xea, 0x97, 0x6e, 0xf0, 0x18, 0xfe, 0xee, 0x6f, 0x2b, 0x9b, + 0x7d, 0x38, 0xc7, 0x15, 0x58, 0xec, 0x24, 0xdc, 0x4f, 0x9c, 0x5e, 0xa3, 0xff, 0x7f, 0x53, 0xf1, + 0xa3, 0xad, 0x1e, 0x3b, 0xda, 0xc6, 0xce, 0xc0, 0x2b, 0x0d, 0xee, 0x14, 0x55, 0x25, 0xab, 0xc2, + 0xab, 0xab, 0x87, 0xde, 0x0b, 0xf2, 0x32, 0x03, 0x97, 0xbb, 0x68, 0x98, 0xf5, 0x78, 0x0c, 0xb3, + 0x3a, 0x64, 0xe5, 0x03, 0xec, 0xb5, 0x88, 0x04, 0x18, 0x68, 0xfb, 0xf2, 0x7d, 0x35, 0xa3, 0x51, + 0x9e, 0x70, 0x10, 0x9e, 0xd8, 0xed, 0xf0, 0x28, 0xe0, 0xd1, 0xa1, 0x80, 0xe7, 0xda, 0x38, 0x12, + 0xfa, 0x31, 0xcc, 0xea, 0x70, 0x28, 0xe0, 0xb1, 0xe1, 0x18, 0x6b, 0x14, 0x09, 0xfb, 0x10, 0xa6, + 0xd5, 0xf5, 0xec, 0xd1, 0x06, 0x8d, 0x54, 0xc5, 0x32, 0x70, 0x31, 0x24, 0x31, 0xee, 0x73, 0x08, + 0x54, 0x85, 0xf3, 0xf2, 0x60, 0x16, 0xad, 0x49, 0x39, 0xda, 0x0b, 0x09, 0xdb, 0x0b, 0xbc, 0x9a, + 0xaa, 0x4e, 0x06, 0xc5, 0x5e, 0x8c, 0x81, 0x7d, 0xa4, 0xb1, 0xd0, 0x67, 0x70, 0x8e, 0x35, 0x83, + 0xa8, 0xdc, 0xb1, 0x8a, 0x99, 0xa1, 0x62, 0xb2, 0xc0, 0xa1, 0x1e, 0x25, 0x56, 0xb2, 0x02, 0xe7, + 0x05, 0x7e, 0x6a, 0x39, 0x27, 0x86, 0xb2, 0x20, 0xc8, 0xde, 0xed, 0x58, 0x52, 0xed, 0x43, 0xc7, + 0xba, 0x4e, 0x0e, 0xef, 0x43, 0x29, 0xbe, 0xb6, 0x4e, 0x59, 0x35, 0x6c, 0x89, 0x1c, 0xa0, 0x84, + 0xa1, 0xf7, 0x01, 0xda, 0xbd, 0xa3, 0xea, 0x4d, 0xd6, 0x13, 0x99, 0x2b, 0x1b, 0x65, 0x9d, 0xbf, + 0xbb, 0xb8, 0x4e, 0x5c, 0xf2, 0xbc, 0x45, 0x58, 0xe4, 0xc6, 0x34, 0x9d, 0x97, 0x16, 0xcc, 0xf6, + 0x9b, 0x92, 0xe8, 0x09, 0xcc, 0x61, 0x29, 0x5b, 0x66, 0x52, 0x58, 0xf5, 0x37, 0x5b, 0x3d, 0xfa, + 0x9b, 0xee, 0xa9, 0xeb, 0xce, 0xe2, 0xc4, 0x77, 0xe7, 0x0f, 0x96, 0xea, 0x2f, 0x3b, 0xdd, 0x34, + 0xc9, 0xfe, 0x00, 0x16, 0x92, 0x96, 0x29, 0xd1, 0x6d, 0xcc, 0x6a, 0xda, 0x76, 0x87, 0xd9, 0x79, + 0xdc, 0x19, 0xbd, 0xef, 0x27, 0xa2, 0x27, 0x7d, 0xd8, 0x38, 0x35, 0x7a, 0x8a, 0x7d, 0x3c, 0x7c, + 0x97, 0xe0, 0xa2, 0x20, 0x7e, 0x3f, 0xb6, 0xc1, 0x71, 0x58, 0xe7, 0x8d, 0xe4, 0x37, 0x60, 0xa5, + 0xc7, 0x94, 0xf1, 0xca, 0x86, 0x89, 0x48, 0x7e, 0x12, 0xbe, 0x4c, 0xb9, 0x7a, 0xe8, 0xcc, 0xc1, + 0x8c, 0x50, 0x2e, 0xe1, 0xda, 0x0e, 0xa9, 0x44, 0xcc, 0x71, 0xd5, 0x46, 0xd0, 0x1f, 0x62, 0x9d, + 0x77, 0x02, 0x83, 0x9f, 0xdf, 0xa9, 0x78, 0x28, 0x25, 0xdd, 0xea, 0x6a, 0x23, 0x25, 0x98, 0x57, + 0x2d, 0xda, 0xa1, 0xa9, 0x0e, 0x7a, 0x2f, 0xbe, 0xe9, 0xf3, 0x46, 0xe3, 0x7d, 0xde, 0xbf, 0x2c, + 0xb0, 0x3b, 0x41, 0x0c, 0x37, 0x02, 0x13, 0xb2, 0x68, 0x62, 0x67, 0x71, 0x63, 0x6a, 0x6c, 0x54, + 0x85, 0x4c, 0x24, 0xad, 0x9c, 0xc1, 0x65, 0xa9, 0xa0, 0x9d, 0xef, 0xc2, 0xac, 0xf6, 0x53, 0xd5, + 0x69, 0x83, 0x86, 0xea, 0x73, 0xb8, 0x90, 0x44, 0x30, 0x71, 0x6a, 0x3b, 0x60, 0x9d, 0x9d, 0x03, + 0x3f, 0xb5, 0x60, 0x5a, 0xd8, 0xbf, 0xe7, 0xb3, 0x26, 0xa9, 0x46, 0xbc, 0x76, 0x92, 0xfd, 0xb6, + 0xa2, 0xaf, 0x46, 0xbc, 0xf1, 0x36, 0x25, 0x01, 0x77, 0xc0, 0x8a, 0x75, 0x2f, 0xf9, 0x44, 0x6d, + 0x32, 0x26, 0x66, 0xe3, 0xe5, 0xc4, 0x05, 0xc8, 0xd4, 0x78, 0x63, 0x1b, 0x8a, 0x5b, 0xc8, 0x72, + 0xd5, 0x08, 0xcd, 0xc3, 0x98, 0x17, 0x1d, 0x88, 0xeb, 0xc3, 0x72, 0xf9, 0x4f, 0x53, 0x0f, 0x28, + 0x36, 0x2a, 0x65, 0x4f, 0xa8, 0x07, 0x0e, 0x55, 0x49, 0xa7, 0x14, 0x4c, 0xf0, 0x76, 0x40, 0x75, + 0xa4, 0x24, 0x3c, 0xe1, 0x48, 0x48, 0x9a, 0x51, 0x99, 0xd0, 0x56, 0xe4, 0x4e, 0x3f, 0xc3, 0xd4, + 0x6b, 0x85, 0x44, 0xee, 0xa2, 0x29, 0xd7, 0x8c, 0x1d, 0xac, 0x0a, 0x91, 0x24, 0x86, 0x21, 0x50, + 0x32, 0xf1, 0x0a, 0xd5, 0x41, 0xdc, 0xaf, 0x7d, 0xa3, 0xe7, 0xfc, 0xde, 0x82, 0xd9, 0x7e, 0x23, + 0x81, 0x6e, 0xc3, 0x24, 0xf6, 0xb1, 0x77, 0xc4, 0x28, 0x53, 0x67, 0x57, 0x2e, 0x6d, 0xd0, 0xa5, + 0x6c, 0xff, 0x9e, 0xff, 0x2c, 0x70, 0x8d, 0x2c, 0x7a, 0x0f, 0x26, 0x9b, 0x01, 0xa3, 0xe2, 0xcc, + 0x1b, 0x13, 0x7a, 0x5d, 0x9e, 0xc6, 0x76, 0x48, 0xd5, 0x94, 0xbe, 0x46, 0x1c, 0x21, 0x78, 0x8b, + 0xfa, 0xcf, 0x02, 0x59, 0x5b, 0xb8, 0xe2, 0xb7, 0xf3, 0x19, 0x4c, 0x6a, 0x23, 0x3c, 0x7c, 0xfa, + 0xe2, 0x12, 0x6c, 0x2d, 0xd7, 0x8c, 0xd1, 0x2a, 0x64, 0x63, 0x67, 0xa0, 0xda, 0x52, 0xf1, 0x4f, + 0x3c, 0x5f, 0x9e, 0x98, 0x7a, 0xc8, 0x72, 0xe5, 0xc0, 0xf9, 0xb7, 0x05, 0xd9, 0x18, 0x1b, 0xf4, + 0x3c, 0xb1, 0xf7, 0xe4, 0x4a, 0x2f, 0x75, 0xcd, 0x94, 0x1d, 0x52, 0x15, 0xc9, 0x72, 0x4b, 0x25, + 0xcb, 0x3b, 0xfd, 0x5d, 0xc0, 0xe9, 0xea, 0xb8, 0x91, 0x48, 0x85, 0x33, 0x32, 0x68, 0x4c, 0x6c, + 0xff, 0x67, 0x0e, 0xc6, 0xc5, 0x4e, 0x43, 0x4d, 0xc8, 0xc8, 0x07, 0x5c, 0xb4, 0xdc, 0xe3, 0x6a, + 0x95, 0xd3, 0xb9, 0xb5, 0x13, 0xa7, 0xf5, 0x1e, 0x75, 0x56, 0x5f, 0xfe, 0xe9, 0x9f, 0xbf, 0x1c, + 0xcd, 0x21, 0xbb, 0x98, 0x7a, 0xe2, 0x96, 0x4f, 0xc3, 0xe8, 0x37, 0x16, 0xcc, 0xa7, 0x9e, 0x85, + 0x37, 0x7a, 0xa0, 0x77, 0x0a, 0xe6, 0x8a, 0x7d, 0x0a, 0x1a, 0x42, 0xef, 0x08, 0x42, 0x6b, 0xe8, + 0x6a, 0x9a, 0x50, 0x68, 0x74, 0xca, 0xf2, 0xe8, 0x42, 0x7f, 0xb4, 0xe0, 0xf2, 0x09, 0x4f, 0xbf, + 0x68, 0xbb, 0x4f, 0xeb, 0x31, 0x9d, 0xdc, 0xd7, 0x07, 0xd7, 0x31, 0xe4, 0xbf, 0x26, 0xc8, 0x6f, + 0xa3, 0x1b, 0x7d, 0x90, 0x17, 0x1d, 0x7c, 0x59, 0xbd, 0x2e, 0xa3, 0x9f, 0x59, 0x30, 0x93, 0x7c, + 0xc8, 0xbd, 0xd6, 0x83, 0x47, 0x42, 0x2a, 0xf7, 0x6e, 0x3f, 0x52, 0x86, 0xdf, 0xa6, 0xe0, 0xe7, + 0xa0, 0xd5, 0x34, 0x3f, 0x26, 0x15, 0xca, 0x58, 0x5a, 0xe7, 0x7c, 0x92, 0xcf, 0xb9, 0xd7, 0xfa, + 0x79, 0xaa, 0xce, 0x0d, 0xf4, 0xa0, 0x7d, 0x12, 0x1f, 0x19, 0x18, 0x5d, 0x4e, 0xa2, 0x5f, 0x59, + 0x30, 0xd7, 0xd9, 0xb3, 0xaf, 0x9f, 0x5c, 0x5c, 0x6a, 0xb9, 0x5c, 0xa1, 0x3f, 0x39, 0xc3, 0xea, + 0xba, 0x60, 0x75, 0x0d, 0x39, 0x69, 0x56, 0xba, 0xd6, 0xac, 0x68, 0x0e, 0x5f, 0xa4, 0xcb, 0xe4, + 0xb5, 0xbe, 0x6a, 0xde, 0xdc, 0x60, 0xa5, 0xb1, 0xf3, 0xb6, 0x20, 0x75, 0x15, 0x5d, 0xe9, 0x4d, + 0x4a, 0xc7, 0xea, 0xd7, 0x16, 0xcc, 0xa7, 0xfa, 0x82, 0x8d, 0x7e, 0xcc, 0x51, 0xd2, 0x3b, 0x63, + 0x7b, 0x95, 0xe0, 0x7d, 0x84, 0x8b, 0x19, 0x6a, 0xbf, 0xb5, 0x00, 0xa5, 0xeb, 0x5e, 0xf4, 0x76, + 0x0f, 0x9b, 0x69, 0xd1, 0xdc, 0xcd, 0xbe, 0x45, 0x0d, 0xc1, 0x2d, 0x41, 0x70, 0x03, 0xad, 0xa5, + 0x09, 0x26, 0x9a, 0x59, 0x45, 0xe6, 0x08, 0x26, 0x75, 0x31, 0x8d, 0x56, 0x7a, 0x58, 0xd3, 0x02, + 0xb9, 0x8d, 0x53, 0x04, 0x0c, 0x89, 0xab, 0x82, 0xc4, 0x32, 0xba, 0x9c, 0x26, 0x51, 0xc1, 0xb5, + 0x72, 0x4d, 0x98, 0xfb, 0x89, 0x05, 0xd9, 0x78, 0xd1, 0xed, 0xf4, 0xcc, 0x26, 0x23, 0x93, 0xbb, + 0x7e, 0xba, 0x8c, 0x21, 0xb1, 0x2e, 0x48, 0xac, 0xa2, 0x7c, 0xb7, 0x7c, 0x3b, 0x34, 0x6f, 0x8a, + 0xe8, 0x73, 0x98, 0x6a, 0x97, 0xb3, 0xab, 0xbd, 0x0d, 0x48, 0x89, 0xdc, 0xe6, 0x69, 0x12, 0x86, + 0xc0, 0x35, 0x41, 0x20, 0x8f, 0x96, 0xba, 0x13, 0x90, 0x17, 0x1e, 0x8a, 0x60, 0x42, 0xd7, 0xa2, + 0xf9, 0x1e, 0xd0, 0x6a, 0x3e, 0xb7, 0x7e, 0xf2, 0xbc, 0x31, 0x7c, 0x45, 0x18, 0xbe, 0x8c, 0x2e, + 0xa5, 0x0d, 0x53, 0x65, 0xea, 0x8b, 0x74, 0xa9, 0xb5, 0x76, 0x32, 0xba, 0x12, 0xeb, 0x99, 0xca, + 0xdd, 0xeb, 0xc2, 0x93, 0x52, 0x59, 0x71, 0xd9, 0x52, 0x89, 0x53, 0xfa, 0xf0, 0xd5, 0x3f, 0xf2, + 0x23, 0xaf, 0x5e, 0xe7, 0xad, 0x2f, 0x5f, 0xe7, 0xad, 0xbf, 0xbf, 0xce, 0x5b, 0xbf, 0x78, 0x93, + 0x1f, 0xf9, 0xf2, 0x4d, 0x7e, 0xe4, 0xcf, 0x6f, 0xf2, 0x23, 0x9f, 0xdc, 0x88, 0x55, 0x13, 0x1c, + 0x6a, 0xcb, 0x27, 0xd1, 0x8b, 0x20, 0xdc, 0x97, 0xb8, 0x07, 0xb7, 0x8b, 0x87, 0x6d, 0x70, 0x51, + 0x5b, 0x54, 0x32, 0xe2, 0x9f, 0xc9, 0xb7, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0x9f, 0xe8, 0x36, + 0xd2, 0x3f, 0x1f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1486,6 +1617,8 @@ type QueryClient interface { AccountBalances(ctx context.Context, in *QueryAccountBalances, opts ...grpc.CallOption) (*QueryAccountBalancesResponse, error) // AccountSummary queries USD values representing an account's total positions and borrowing limits. It requires oracle prices to return successfully. AccountSummary(ctx context.Context, in *QueryAccountSummary, opts ...grpc.CallOption) (*QueryAccountSummaryResponse, error) + // AccountSummaries queries USD values representing an account's total positions and borrowing limits. It requires oracle prices to return successfully. + AccountSummaries(ctx context.Context, in *QueryAccountSummaries, opts ...grpc.CallOption) (*QueryAccountSummariesResponse, error) // LiquidationTargets queries a list of all borrower account addresses eligible for liquidation. LiquidationTargets(ctx context.Context, in *QueryLiquidationTargets, opts ...grpc.CallOption) (*QueryLiquidationTargetsResponse, error) // BadDebts queries a list of borrow positions that have been marked for bad debt repayment. @@ -1576,6 +1709,15 @@ func (c *queryClient) AccountSummary(ctx context.Context, in *QueryAccountSummar return out, nil } +func (c *queryClient) AccountSummaries(ctx context.Context, in *QueryAccountSummaries, opts ...grpc.CallOption) (*QueryAccountSummariesResponse, error) { + out := new(QueryAccountSummariesResponse) + err := c.cc.Invoke(ctx, "/umee.leverage.v1.Query/AccountSummaries", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *queryClient) LiquidationTargets(ctx context.Context, in *QueryLiquidationTargets, opts ...grpc.CallOption) (*QueryLiquidationTargetsResponse, error) { out := new(QueryLiquidationTargetsResponse) err := c.cc.Invoke(ctx, "/umee.leverage.v1.Query/LiquidationTargets", in, out, opts...) @@ -1646,6 +1788,8 @@ type QueryServer interface { AccountBalances(context.Context, *QueryAccountBalances) (*QueryAccountBalancesResponse, error) // AccountSummary queries USD values representing an account's total positions and borrowing limits. It requires oracle prices to return successfully. AccountSummary(context.Context, *QueryAccountSummary) (*QueryAccountSummaryResponse, error) + // AccountSummaries queries USD values representing an account's total positions and borrowing limits. It requires oracle prices to return successfully. + AccountSummaries(context.Context, *QueryAccountSummaries) (*QueryAccountSummariesResponse, error) // LiquidationTargets queries a list of all borrower account addresses eligible for liquidation. LiquidationTargets(context.Context, *QueryLiquidationTargets) (*QueryLiquidationTargetsResponse, error) // BadDebts queries a list of borrow positions that have been marked for bad debt repayment. @@ -1690,6 +1834,9 @@ func (*UnimplementedQueryServer) AccountBalances(ctx context.Context, req *Query func (*UnimplementedQueryServer) AccountSummary(ctx context.Context, req *QueryAccountSummary) (*QueryAccountSummaryResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AccountSummary not implemented") } +func (*UnimplementedQueryServer) AccountSummaries(ctx context.Context, req *QueryAccountSummaries) (*QueryAccountSummariesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AccountSummaries not implemented") +} func (*UnimplementedQueryServer) LiquidationTargets(ctx context.Context, req *QueryLiquidationTargets) (*QueryLiquidationTargetsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method LiquidationTargets not implemented") } @@ -1839,6 +1986,24 @@ func _Query_AccountSummary_Handler(srv interface{}, ctx context.Context, dec fun return interceptor(ctx, in, info, handler) } +func _Query_AccountSummaries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAccountSummaries) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).AccountSummaries(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/umee.leverage.v1.Query/AccountSummaries", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).AccountSummaries(ctx, req.(*QueryAccountSummaries)) + } + return interceptor(ctx, in, info, handler) +} + func _Query_LiquidationTargets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(QueryLiquidationTargets) if err := dec(in); err != nil { @@ -1979,6 +2144,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "AccountSummary", Handler: _Query_AccountSummary_Handler, }, + { + MethodName: "AccountSummaries", + Handler: _Query_AccountSummaries_Handler, + }, { MethodName: "LiquidationTargets", Handler: _Query_LiquidationTargets_Handler, @@ -2789,6 +2958,132 @@ func (m *QueryAccountSummaryResponse) MarshalToSizedBuffer(dAtA []byte) (int, er return len(dAtA) - i, nil } +func (m *QueryAccountSummaries) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryAccountSummaries) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAccountSummaries) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *AccountSummary) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AccountSummary) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AccountSummary) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.AccountSummary != nil { + { + size, err := m.AccountSummary.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryAccountSummariesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryAccountSummariesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAccountSummariesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.AccountSummaries) > 0 { + for iNdEx := len(m.AccountSummaries) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AccountSummaries[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func (m *QueryLiquidationTargets) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -3659,31 +3954,56 @@ func (m *QueryAccountSummaryResponse) Size() (n int) { return n } -func (m *QueryLiquidationTargets) Size() (n int) { +func (m *QueryAccountSummaries) Size() (n int) { if m == nil { return 0 } var l int _ = l + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } return n } -func (m *QueryLiquidationTargetsResponse) Size() (n int) { +func (m *AccountSummary) Size() (n int) { if m == nil { return 0 } var l int _ = l - if len(m.Targets) > 0 { - for _, s := range m.Targets { - l = len(s) + l = len(m.Address) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.AccountSummary != nil { + l = m.AccountSummary.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAccountSummariesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.AccountSummaries) > 0 { + for _, e := range m.AccountSummaries { + l = e.Size() n += 1 + l + sovQuery(uint64(l)) } } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } return n } -func (m *QueryBadDebts) Size() (n int) { +func (m *QueryLiquidationTargets) Size() (n int) { if m == nil { return 0 } @@ -3692,22 +4012,46 @@ func (m *QueryBadDebts) Size() (n int) { return n } -func (m *QueryBadDebtsResponse) Size() (n int) { +func (m *QueryLiquidationTargetsResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l if len(m.Targets) > 0 { - for _, e := range m.Targets { - l = e.Size() + for _, s := range m.Targets { + l = len(s) n += 1 + l + sovQuery(uint64(l)) } } return n } -func (m *QueryMaxWithdraw) Size() (n int) { +func (m *QueryBadDebts) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryBadDebtsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Targets) > 0 { + for _, e := range m.Targets { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryMaxWithdraw) Size() (n int) { if m == nil { return 0 } @@ -6071,6 +6415,330 @@ func (m *QueryAccountSummaryResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *QueryAccountSummaries) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryAccountSummaries: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAccountSummaries: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AccountSummary) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AccountSummary: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AccountSummary: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccountSummary", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AccountSummary == nil { + m.AccountSummary = &QueryAccountSummaryResponse{} + } + if err := m.AccountSummary.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryAccountSummariesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryAccountSummariesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAccountSummariesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccountSummaries", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AccountSummaries = append(m.AccountSummaries, &AccountSummary{}) + if err := m.AccountSummaries[len(m.AccountSummaries)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *QueryLiquidationTargets) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/leverage/types/query.pb.gw.go b/x/leverage/types/query.pb.gw.go index 1e9f7ccf3d..9d9dc203bb 100644 --- a/x/leverage/types/query.pb.gw.go +++ b/x/leverage/types/query.pb.gw.go @@ -249,6 +249,42 @@ func local_request_Query_AccountSummary_0(ctx context.Context, marshaler runtime } +var ( + filter_Query_AccountSummaries_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_AccountSummaries_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAccountSummaries + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_AccountSummaries_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.AccountSummaries(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_AccountSummaries_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAccountSummaries + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_AccountSummaries_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.AccountSummaries(ctx, &protoReq) + return msg, metadata, err + +} + func request_Query_LiquidationTargets_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryLiquidationTargets var metadata runtime.ServerMetadata @@ -596,6 +632,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_AccountSummaries_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_AccountSummaries_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_AccountSummaries_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Query_LiquidationTargets_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -915,6 +974,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_AccountSummaries_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_AccountSummaries_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_AccountSummaries_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Query_LiquidationTargets_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1053,6 +1132,8 @@ var ( pattern_Query_AccountSummary_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"umee", "leverage", "v1", "account_summary"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_AccountSummaries_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"umee", "leverage", "v1", "accounts_summary"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_LiquidationTargets_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"umee", "leverage", "v1", "liquidation_targets"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_BadDebts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"umee", "leverage", "v1", "bad_debts"}, "", runtime.AssumeColonVerbOpt(false))) @@ -1081,6 +1162,8 @@ var ( forward_Query_AccountSummary_0 = runtime.ForwardResponseMessage + forward_Query_AccountSummaries_0 = runtime.ForwardResponseMessage + forward_Query_LiquidationTargets_0 = runtime.ForwardResponseMessage forward_Query_BadDebts_0 = runtime.ForwardResponseMessage