mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-11-04 03:57:44 +00:00 
			
		
		
		
	Add Earn deposits value_in_staked_tokens query parameter (#1325)
				
					
				
			* Add earn deposits query param to return individual vaults value as ukava * Add value_in_staked_tokens param handler to specific vault query * Use separate ukava coins when querying deposits in ukava Avoid usd of sdk.Coins.Add() as those will aggregate ukava amounts
This commit is contained in:
		
							parent
							
								
									c773d874ae
								
							
						
					
					
						commit
						4c879bc4fb
					
				@ -7077,6 +7077,12 @@ paths:
 | 
			
		||||
          in: query
 | 
			
		||||
          required: false
 | 
			
		||||
          type: string
 | 
			
		||||
        - name: value_in_staked_tokens
 | 
			
		||||
          description: respond with vault value in ukava for bkava vaults.
 | 
			
		||||
          in: query
 | 
			
		||||
          required: false
 | 
			
		||||
          type: boolean
 | 
			
		||||
          format: boolean
 | 
			
		||||
        - name: pagination.key
 | 
			
		||||
          description: |-
 | 
			
		||||
            key is a value returned in PageResponse.next_key to begin
 | 
			
		||||
@ -10785,6 +10791,66 @@ paths:
 | 
			
		||||
 | 
			
		||||
                        representing the yearly APR of KAVA tokens that will be
 | 
			
		||||
                        minted during that period
 | 
			
		||||
                  infrastructure_params:
 | 
			
		||||
                    type: object
 | 
			
		||||
                    properties:
 | 
			
		||||
                      infrastructure_periods:
 | 
			
		||||
                        type: array
 | 
			
		||||
                        items:
 | 
			
		||||
                          type: object
 | 
			
		||||
                          properties:
 | 
			
		||||
                            start:
 | 
			
		||||
                              type: string
 | 
			
		||||
                              format: date-time
 | 
			
		||||
                              title: example "2020-03-01T15:20:00Z"
 | 
			
		||||
                            end:
 | 
			
		||||
                              type: string
 | 
			
		||||
                              format: date-time
 | 
			
		||||
                              title: example "2020-06-01T15:20:00Z"
 | 
			
		||||
                            inflation:
 | 
			
		||||
                              type: string
 | 
			
		||||
                              format: byte
 | 
			
		||||
                              title: example "1.000000003022265980"  - 10% inflation
 | 
			
		||||
                          title: >-
 | 
			
		||||
                            Period stores the specified start and end dates, and
 | 
			
		||||
                            the inflation, expressed as a decimal
 | 
			
		||||
 | 
			
		||||
                            representing the yearly APR of KAVA tokens that will
 | 
			
		||||
                            be minted during that period
 | 
			
		||||
                      core_rewards:
 | 
			
		||||
                        type: array
 | 
			
		||||
                        items:
 | 
			
		||||
                          type: object
 | 
			
		||||
                          properties:
 | 
			
		||||
                            address:
 | 
			
		||||
                              type: string
 | 
			
		||||
                              format: byte
 | 
			
		||||
                            weight:
 | 
			
		||||
                              type: string
 | 
			
		||||
                      partner_rewards:
 | 
			
		||||
                        type: array
 | 
			
		||||
                        items:
 | 
			
		||||
                          type: object
 | 
			
		||||
                          properties:
 | 
			
		||||
                            address:
 | 
			
		||||
                              type: string
 | 
			
		||||
                              format: byte
 | 
			
		||||
                            rewards_per_second:
 | 
			
		||||
                              type: object
 | 
			
		||||
                              properties:
 | 
			
		||||
                                denom:
 | 
			
		||||
                                  type: string
 | 
			
		||||
                                amount:
 | 
			
		||||
                                  type: string
 | 
			
		||||
                              description: >-
 | 
			
		||||
                                Coin defines a token with a denomination and an
 | 
			
		||||
                                amount.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                                NOTE: The amount field is an Int which
 | 
			
		||||
                                implements the custom method
 | 
			
		||||
 | 
			
		||||
                                signatures required by gogoproto.
 | 
			
		||||
                title: Params governance parameters for kavadist module
 | 
			
		||||
            description: >-
 | 
			
		||||
              QueryParamsResponse defines the response type for querying
 | 
			
		||||
@ -55834,6 +55900,73 @@ definitions:
 | 
			
		||||
      time_period:
 | 
			
		||||
        type: string
 | 
			
		||||
    title: RateLimit parameters for rate-limiting the supply of an issued asset
 | 
			
		||||
  kava.kavadist.v1beta1.CoreReward:
 | 
			
		||||
    type: object
 | 
			
		||||
    properties:
 | 
			
		||||
      address:
 | 
			
		||||
        type: string
 | 
			
		||||
        format: byte
 | 
			
		||||
      weight:
 | 
			
		||||
        type: string
 | 
			
		||||
  kava.kavadist.v1beta1.InfrastructureParams:
 | 
			
		||||
    type: object
 | 
			
		||||
    properties:
 | 
			
		||||
      infrastructure_periods:
 | 
			
		||||
        type: array
 | 
			
		||||
        items:
 | 
			
		||||
          type: object
 | 
			
		||||
          properties:
 | 
			
		||||
            start:
 | 
			
		||||
              type: string
 | 
			
		||||
              format: date-time
 | 
			
		||||
              title: example "2020-03-01T15:20:00Z"
 | 
			
		||||
            end:
 | 
			
		||||
              type: string
 | 
			
		||||
              format: date-time
 | 
			
		||||
              title: example "2020-06-01T15:20:00Z"
 | 
			
		||||
            inflation:
 | 
			
		||||
              type: string
 | 
			
		||||
              format: byte
 | 
			
		||||
              title: example "1.000000003022265980"  - 10% inflation
 | 
			
		||||
          title: >-
 | 
			
		||||
            Period stores the specified start and end dates, and the inflation,
 | 
			
		||||
            expressed as a decimal
 | 
			
		||||
 | 
			
		||||
            representing the yearly APR of KAVA tokens that will be minted
 | 
			
		||||
            during that period
 | 
			
		||||
      core_rewards:
 | 
			
		||||
        type: array
 | 
			
		||||
        items:
 | 
			
		||||
          type: object
 | 
			
		||||
          properties:
 | 
			
		||||
            address:
 | 
			
		||||
              type: string
 | 
			
		||||
              format: byte
 | 
			
		||||
            weight:
 | 
			
		||||
              type: string
 | 
			
		||||
      partner_rewards:
 | 
			
		||||
        type: array
 | 
			
		||||
        items:
 | 
			
		||||
          type: object
 | 
			
		||||
          properties:
 | 
			
		||||
            address:
 | 
			
		||||
              type: string
 | 
			
		||||
              format: byte
 | 
			
		||||
            rewards_per_second:
 | 
			
		||||
              type: object
 | 
			
		||||
              properties:
 | 
			
		||||
                denom:
 | 
			
		||||
                  type: string
 | 
			
		||||
                amount:
 | 
			
		||||
                  type: string
 | 
			
		||||
              description: >-
 | 
			
		||||
                Coin defines a token with a denomination and an amount.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                NOTE: The amount field is an Int which implements the custom
 | 
			
		||||
                method
 | 
			
		||||
 | 
			
		||||
                signatures required by gogoproto.
 | 
			
		||||
  kava.kavadist.v1beta1.Params:
 | 
			
		||||
    type: object
 | 
			
		||||
    properties:
 | 
			
		||||
@ -55863,7 +55996,84 @@ definitions:
 | 
			
		||||
 | 
			
		||||
            representing the yearly APR of KAVA tokens that will be minted
 | 
			
		||||
            during that period
 | 
			
		||||
      infrastructure_params:
 | 
			
		||||
        type: object
 | 
			
		||||
        properties:
 | 
			
		||||
          infrastructure_periods:
 | 
			
		||||
            type: array
 | 
			
		||||
            items:
 | 
			
		||||
              type: object
 | 
			
		||||
              properties:
 | 
			
		||||
                start:
 | 
			
		||||
                  type: string
 | 
			
		||||
                  format: date-time
 | 
			
		||||
                  title: example "2020-03-01T15:20:00Z"
 | 
			
		||||
                end:
 | 
			
		||||
                  type: string
 | 
			
		||||
                  format: date-time
 | 
			
		||||
                  title: example "2020-06-01T15:20:00Z"
 | 
			
		||||
                inflation:
 | 
			
		||||
                  type: string
 | 
			
		||||
                  format: byte
 | 
			
		||||
                  title: example "1.000000003022265980"  - 10% inflation
 | 
			
		||||
              title: >-
 | 
			
		||||
                Period stores the specified start and end dates, and the
 | 
			
		||||
                inflation, expressed as a decimal
 | 
			
		||||
 | 
			
		||||
                representing the yearly APR of KAVA tokens that will be minted
 | 
			
		||||
                during that period
 | 
			
		||||
          core_rewards:
 | 
			
		||||
            type: array
 | 
			
		||||
            items:
 | 
			
		||||
              type: object
 | 
			
		||||
              properties:
 | 
			
		||||
                address:
 | 
			
		||||
                  type: string
 | 
			
		||||
                  format: byte
 | 
			
		||||
                weight:
 | 
			
		||||
                  type: string
 | 
			
		||||
          partner_rewards:
 | 
			
		||||
            type: array
 | 
			
		||||
            items:
 | 
			
		||||
              type: object
 | 
			
		||||
              properties:
 | 
			
		||||
                address:
 | 
			
		||||
                  type: string
 | 
			
		||||
                  format: byte
 | 
			
		||||
                rewards_per_second:
 | 
			
		||||
                  type: object
 | 
			
		||||
                  properties:
 | 
			
		||||
                    denom:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    amount:
 | 
			
		||||
                      type: string
 | 
			
		||||
                  description: >-
 | 
			
		||||
                    Coin defines a token with a denomination and an amount.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                    NOTE: The amount field is an Int which implements the custom
 | 
			
		||||
                    method
 | 
			
		||||
 | 
			
		||||
                    signatures required by gogoproto.
 | 
			
		||||
    title: Params governance parameters for kavadist module
 | 
			
		||||
  kava.kavadist.v1beta1.PartnerReward:
 | 
			
		||||
    type: object
 | 
			
		||||
    properties:
 | 
			
		||||
      address:
 | 
			
		||||
        type: string
 | 
			
		||||
        format: byte
 | 
			
		||||
      rewards_per_second:
 | 
			
		||||
        type: object
 | 
			
		||||
        properties:
 | 
			
		||||
          denom:
 | 
			
		||||
            type: string
 | 
			
		||||
          amount:
 | 
			
		||||
            type: string
 | 
			
		||||
        description: |-
 | 
			
		||||
          Coin defines a token with a denomination and an amount.
 | 
			
		||||
 | 
			
		||||
          NOTE: The amount field is an Int which implements the custom method
 | 
			
		||||
          signatures required by gogoproto.
 | 
			
		||||
  kava.kavadist.v1beta1.Period:
 | 
			
		||||
    type: object
 | 
			
		||||
    properties:
 | 
			
		||||
@ -55937,6 +56147,65 @@ definitions:
 | 
			
		||||
 | 
			
		||||
                representing the yearly APR of KAVA tokens that will be minted
 | 
			
		||||
                during that period
 | 
			
		||||
          infrastructure_params:
 | 
			
		||||
            type: object
 | 
			
		||||
            properties:
 | 
			
		||||
              infrastructure_periods:
 | 
			
		||||
                type: array
 | 
			
		||||
                items:
 | 
			
		||||
                  type: object
 | 
			
		||||
                  properties:
 | 
			
		||||
                    start:
 | 
			
		||||
                      type: string
 | 
			
		||||
                      format: date-time
 | 
			
		||||
                      title: example "2020-03-01T15:20:00Z"
 | 
			
		||||
                    end:
 | 
			
		||||
                      type: string
 | 
			
		||||
                      format: date-time
 | 
			
		||||
                      title: example "2020-06-01T15:20:00Z"
 | 
			
		||||
                    inflation:
 | 
			
		||||
                      type: string
 | 
			
		||||
                      format: byte
 | 
			
		||||
                      title: example "1.000000003022265980"  - 10% inflation
 | 
			
		||||
                  title: >-
 | 
			
		||||
                    Period stores the specified start and end dates, and the
 | 
			
		||||
                    inflation, expressed as a decimal
 | 
			
		||||
 | 
			
		||||
                    representing the yearly APR of KAVA tokens that will be
 | 
			
		||||
                    minted during that period
 | 
			
		||||
              core_rewards:
 | 
			
		||||
                type: array
 | 
			
		||||
                items:
 | 
			
		||||
                  type: object
 | 
			
		||||
                  properties:
 | 
			
		||||
                    address:
 | 
			
		||||
                      type: string
 | 
			
		||||
                      format: byte
 | 
			
		||||
                    weight:
 | 
			
		||||
                      type: string
 | 
			
		||||
              partner_rewards:
 | 
			
		||||
                type: array
 | 
			
		||||
                items:
 | 
			
		||||
                  type: object
 | 
			
		||||
                  properties:
 | 
			
		||||
                    address:
 | 
			
		||||
                      type: string
 | 
			
		||||
                      format: byte
 | 
			
		||||
                    rewards_per_second:
 | 
			
		||||
                      type: object
 | 
			
		||||
                      properties:
 | 
			
		||||
                        denom:
 | 
			
		||||
                          type: string
 | 
			
		||||
                        amount:
 | 
			
		||||
                          type: string
 | 
			
		||||
                      description: >-
 | 
			
		||||
                        Coin defines a token with a denomination and an amount.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                        NOTE: The amount field is an Int which implements the
 | 
			
		||||
                        custom method
 | 
			
		||||
 | 
			
		||||
                        signatures required by gogoproto.
 | 
			
		||||
        title: Params governance parameters for kavadist module
 | 
			
		||||
    description: >-
 | 
			
		||||
      QueryParamsResponse defines the response type for querying x/kavadist
 | 
			
		||||
 | 
			
		||||
@ -3089,6 +3089,7 @@ QueryDepositsRequest is the request type for the Query/Deposits RPC method.
 | 
			
		||||
| ----- | ---- | ----- | ----------- |
 | 
			
		||||
| `depositor` | [string](#string) |  | depositor optionally filters deposits by depositor |
 | 
			
		||||
| `denom` | [string](#string) |  | denom optionally filters deposits by vault denom |
 | 
			
		||||
| `value_in_staked_tokens` | [bool](#bool) |  | respond with vault value in ukava for bkava vaults |
 | 
			
		||||
| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) |  | pagination defines an optional pagination for the request. |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -104,8 +104,11 @@ message QueryDepositsRequest {
 | 
			
		||||
  // denom optionally filters deposits by vault denom
 | 
			
		||||
  string denom = 2;
 | 
			
		||||
 | 
			
		||||
  // respond with vault value in ukava for bkava vaults
 | 
			
		||||
  bool value_in_staked_tokens = 3;
 | 
			
		||||
 | 
			
		||||
  // pagination defines an optional pagination for the request.
 | 
			
		||||
  cosmos.base.query.v1beta1.PageRequest pagination = 3;
 | 
			
		||||
  cosmos.base.query.v1beta1.PageRequest pagination = 4;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// QueryDepositsResponse is the response type for the Query/Deposits RPC method.
 | 
			
		||||
 | 
			
		||||
@ -21,7 +21,8 @@ message Params {
 | 
			
		||||
message InfrastructureParams {
 | 
			
		||||
  repeated Period     infrastructure_periods = 1 [(gogoproto.castrepeated) = "Periods", (gogoproto.nullable) = false];
 | 
			
		||||
  repeated CoreReward core_rewards       = 2 [(gogoproto.castrepeated) = "CoreRewards", (gogoproto.nullable) = false];
 | 
			
		||||
  repeated PartnerReward partner_rewards = 3 [(gogoproto.castrepeated) = "PartnerRewards", (gogoproto.nullable) = false];
 | 
			
		||||
  repeated PartnerReward partner_rewards = 3
 | 
			
		||||
      [(gogoproto.castrepeated) = "PartnerRewards", (gogoproto.nullable) = false];
 | 
			
		||||
  option (gogoproto.goproto_stringer) = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -67,4 +68,3 @@ message Period {
 | 
			
		||||
    (gogoproto.moretags)   = "yaml:\"inflation\""
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -17,6 +17,7 @@ import (
 | 
			
		||||
const (
 | 
			
		||||
	flagDenom               = "denom"
 | 
			
		||||
	flagOwner               = "owner"
 | 
			
		||||
	flagValueInStakedTokens = "value_in_staked_tokens"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// GetQueryCmd returns the cli query commands for the earn module
 | 
			
		||||
@ -145,6 +146,10 @@ func queryDepositsCmd() *cobra.Command {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			valueInStakedTokens, err := cmd.Flags().GetBool(flagValueInStakedTokens)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			pageReq, err := client.ReadPageRequest(cmd.Flags())
 | 
			
		||||
			if err != nil {
 | 
			
		||||
@ -156,6 +161,7 @@ func queryDepositsCmd() *cobra.Command {
 | 
			
		||||
			req := types.NewQueryDepositsRequest(
 | 
			
		||||
				ownerBech,
 | 
			
		||||
				denom,
 | 
			
		||||
				valueInStakedTokens,
 | 
			
		||||
				pageReq,
 | 
			
		||||
			)
 | 
			
		||||
			res, err := queryClient.Deposits(context.Background(), req)
 | 
			
		||||
@ -171,6 +177,7 @@ func queryDepositsCmd() *cobra.Command {
 | 
			
		||||
 | 
			
		||||
	cmd.Flags().String(flagOwner, "", "(optional) filter for deposits by owner address")
 | 
			
		||||
	cmd.Flags().String(flagDenom, "", "(optional) filter for deposits by vault denom")
 | 
			
		||||
	cmd.Flags().Bool(flagValueInStakedTokens, false, "(optional) get underlying staked tokens for staking derivative vaults")
 | 
			
		||||
 | 
			
		||||
	return cmd
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -296,6 +296,19 @@ func (s queryServer) getOneAccountOneVaultDeposit(
 | 
			
		||||
		return nil, status.Error(codes.NotFound, err.Error())
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if req.ValueInStakedTokens {
 | 
			
		||||
		// Get underlying ukava amount if denom is a derivative
 | 
			
		||||
		if s.keeper.liquidKeeper.IsDerivativeDenom(ctx, req.Denom) {
 | 
			
		||||
			ukavaValue, err := s.keeper.liquidKeeper.GetStakedTokensForDerivatives(ctx, sdk.NewCoins(value))
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				// This should "never" happen if IsDerivativeDenom is true
 | 
			
		||||
				panic("Error getting ukava value for " + req.Denom)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			value = ukavaValue
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &types.QueryDepositsResponse{
 | 
			
		||||
		Deposits: []types.DepositResponse{
 | 
			
		||||
			{
 | 
			
		||||
@ -397,6 +410,31 @@ func (s queryServer) getOneAccountAllDeposits(
 | 
			
		||||
		return nil, status.Error(codes.InvalidArgument, err.Error())
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if req.ValueInStakedTokens {
 | 
			
		||||
		// Plain slice to not sum ukava amounts together. This is not a valid
 | 
			
		||||
		// sdk.Coin due to multiple coins of the same denom, but we need them to
 | 
			
		||||
		// be separate in the response to not be an aggregate amount.
 | 
			
		||||
		var valueInStakedTokens []sdk.Coin
 | 
			
		||||
 | 
			
		||||
		for _, coin := range value {
 | 
			
		||||
			// Non-bkava coins are kept as is
 | 
			
		||||
			if !s.keeper.liquidKeeper.IsDerivativeDenom(ctx, coin.Denom) {
 | 
			
		||||
				valueInStakedTokens = append(valueInStakedTokens, coin)
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Derivative coins are converted to underlying staked tokens
 | 
			
		||||
			ukavaValue, err := s.keeper.liquidKeeper.GetStakedTokensForDerivatives(ctx, sdk.NewCoins(coin))
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				// This should "never" happen if IsDerivativeDenom is true
 | 
			
		||||
				panic("Error getting ukava value for " + coin.Denom)
 | 
			
		||||
			}
 | 
			
		||||
			valueInStakedTokens = append(valueInStakedTokens, ukavaValue)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		value = valueInStakedTokens
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	deposits = append(deposits, types.DepositResponse{
 | 
			
		||||
		Depositor: depositor.String(),
 | 
			
		||||
		Shares:    accountShare.Shares,
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ package keeper_test
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"github.com/cosmos/cosmos-sdk/baseapp"
 | 
			
		||||
@ -14,6 +15,7 @@ import (
 | 
			
		||||
	"google.golang.org/grpc/codes"
 | 
			
		||||
	"google.golang.org/grpc/status"
 | 
			
		||||
 | 
			
		||||
	"github.com/kava-labs/kava/app"
 | 
			
		||||
	"github.com/kava-labs/kava/x/earn/keeper"
 | 
			
		||||
	"github.com/kava-labs/kava/x/earn/testutil"
 | 
			
		||||
	"github.com/kava-labs/kava/x/earn/types"
 | 
			
		||||
@ -217,32 +219,61 @@ func (suite *grpcQueryTestSuite) TestVault_NotFound() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (suite *grpcQueryTestSuite) TestDeposits() {
 | 
			
		||||
	// Validator setup for bkava
 | 
			
		||||
	_, addrs := app.GeneratePrivKeyAddressPairs(5)
 | 
			
		||||
	valAccAddr1, valAccAddr2, delegator := addrs[0], addrs[1], addrs[2]
 | 
			
		||||
	valAddr1 := sdk.ValAddress(valAccAddr1)
 | 
			
		||||
	valAddr2 := sdk.ValAddress(valAccAddr2)
 | 
			
		||||
 | 
			
		||||
	vault1Denom := "usdx"
 | 
			
		||||
	vault2Denom := "busd"
 | 
			
		||||
	vault3Denom := testutil.TestBkavaDenoms[0]
 | 
			
		||||
	vault3Denom := fmt.Sprintf("bkava-%s", valAddr1.String())
 | 
			
		||||
	vault4Denom := fmt.Sprintf("bkava-%s", valAddr2.String())
 | 
			
		||||
 | 
			
		||||
	initialUkavaBalance := sdk.NewInt(1e9)
 | 
			
		||||
	startBalance := sdk.NewCoins(
 | 
			
		||||
		sdk.NewCoin("ukava", initialUkavaBalance),
 | 
			
		||||
		sdk.NewInt64Coin(vault1Denom, 1000),
 | 
			
		||||
		sdk.NewInt64Coin(vault2Denom, 1000),
 | 
			
		||||
		// Bkava isn't actually minted via x/liquid
 | 
			
		||||
		sdk.NewInt64Coin(vault3Denom, 1000),
 | 
			
		||||
		sdk.NewInt64Coin(vault4Denom, 1000),
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	delegateAmount := sdk.NewInt(100e6)
 | 
			
		||||
 | 
			
		||||
	suite.App.FundAccount(suite.Ctx, valAccAddr1, startBalance)
 | 
			
		||||
	suite.App.FundAccount(suite.Ctx, valAccAddr2, startBalance)
 | 
			
		||||
	suite.App.FundAccount(suite.Ctx, delegator, startBalance)
 | 
			
		||||
 | 
			
		||||
	suite.CreateNewUnbondedValidator(valAddr1, initialUkavaBalance)
 | 
			
		||||
	suite.CreateNewUnbondedValidator(valAddr2, initialUkavaBalance)
 | 
			
		||||
	suite.CreateDelegation(valAddr1, delegator, delegateAmount)
 | 
			
		||||
	suite.CreateDelegation(valAddr2, delegator, delegateAmount)
 | 
			
		||||
 | 
			
		||||
	staking.EndBlocker(suite.Ctx, suite.App.GetStakingKeeper())
 | 
			
		||||
 | 
			
		||||
	savingsParams := suite.SavingsKeeper.GetParams(suite.Ctx)
 | 
			
		||||
	savingsParams.SupportedDenoms = append(savingsParams.SupportedDenoms, "bkava")
 | 
			
		||||
	suite.SavingsKeeper.SetParams(suite.Ctx, savingsParams)
 | 
			
		||||
 | 
			
		||||
	// Add vaults
 | 
			
		||||
	suite.CreateVault(vault1Denom, types.StrategyTypes{types.STRATEGY_TYPE_HARD}, false, nil)
 | 
			
		||||
	suite.CreateVault(vault2Denom, types.StrategyTypes{types.STRATEGY_TYPE_HARD}, false, nil)
 | 
			
		||||
	suite.CreateVault("bkava", types.StrategyTypes{types.STRATEGY_TYPE_SAVINGS}, false, nil)
 | 
			
		||||
 | 
			
		||||
	startBalance := sdk.NewCoins(
 | 
			
		||||
		sdk.NewInt64Coin(vault1Denom, 1000),
 | 
			
		||||
		sdk.NewInt64Coin(vault2Denom, 1000),
 | 
			
		||||
		sdk.NewInt64Coin(vault3Denom, 1000),
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	deposit1Amount := sdk.NewInt64Coin(vault1Denom, 100)
 | 
			
		||||
	deposit2Amount := sdk.NewInt64Coin(vault2Denom, 200)
 | 
			
		||||
	deposit3Amount := sdk.NewInt64Coin(vault3Denom, 200)
 | 
			
		||||
	deposit4Amount := sdk.NewInt64Coin(vault4Denom, 300)
 | 
			
		||||
 | 
			
		||||
	// Accounts
 | 
			
		||||
	acc1 := suite.CreateAccount(startBalance, 0).GetAddress()
 | 
			
		||||
	acc2 := suite.CreateAccount(startBalance, 1).GetAddress()
 | 
			
		||||
	acc2 := delegator
 | 
			
		||||
 | 
			
		||||
	// Deposit into each vault from each account - 4 total deposits
 | 
			
		||||
	// Acc 1: usdx + busd
 | 
			
		||||
	// Acc 2: usdx + bkava
 | 
			
		||||
	// Acc 2: usdx + bkava-1 + bkava-2
 | 
			
		||||
	err := suite.Keeper.Deposit(suite.Ctx, acc1, deposit1Amount, types.STRATEGY_TYPE_HARD)
 | 
			
		||||
	suite.Require().NoError(err)
 | 
			
		||||
	err = suite.Keeper.Deposit(suite.Ctx, acc1, deposit2Amount, types.STRATEGY_TYPE_HARD)
 | 
			
		||||
@ -252,12 +283,14 @@ func (suite *grpcQueryTestSuite) TestDeposits() {
 | 
			
		||||
	suite.Require().NoError(err)
 | 
			
		||||
	err = suite.Keeper.Deposit(suite.Ctx, acc2, deposit3Amount, types.STRATEGY_TYPE_SAVINGS)
 | 
			
		||||
	suite.Require().NoError(err)
 | 
			
		||||
	err = suite.Keeper.Deposit(suite.Ctx, acc2, deposit4Amount, types.STRATEGY_TYPE_SAVINGS)
 | 
			
		||||
	suite.Require().NoError(err)
 | 
			
		||||
 | 
			
		||||
	suite.Run("specific vault", func() {
 | 
			
		||||
		// Query all deposits for account 1
 | 
			
		||||
		res, err := suite.queryClient.Deposits(
 | 
			
		||||
			context.Background(),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc1.String(), vault1Denom, nil),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc1.String(), vault1Denom, false, nil),
 | 
			
		||||
		)
 | 
			
		||||
		suite.Require().NoError(err)
 | 
			
		||||
		suite.Require().Len(res.Deposits, 1)
 | 
			
		||||
@ -282,7 +315,7 @@ func (suite *grpcQueryTestSuite) TestDeposits() {
 | 
			
		||||
	suite.Run("specific bkava vault", func() {
 | 
			
		||||
		res, err := suite.queryClient.Deposits(
 | 
			
		||||
			context.Background(),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc2.String(), vault3Denom, nil),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc2.String(), vault3Denom, false, nil),
 | 
			
		||||
		)
 | 
			
		||||
		suite.Require().NoError(err)
 | 
			
		||||
		suite.Require().Len(res.Deposits, 1)
 | 
			
		||||
@ -304,10 +337,33 @@ func (suite *grpcQueryTestSuite) TestDeposits() {
 | 
			
		||||
		)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	suite.Run("specific bkava vault in staked tokens", func() {
 | 
			
		||||
		res, err := suite.queryClient.Deposits(
 | 
			
		||||
			context.Background(),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc2.String(), vault3Denom, true, nil),
 | 
			
		||||
		)
 | 
			
		||||
		suite.Require().NoError(err)
 | 
			
		||||
		suite.Require().Len(res.Deposits, 1)
 | 
			
		||||
		suite.Require().Equal(
 | 
			
		||||
			types.DepositResponse{
 | 
			
		||||
				Depositor: acc2.String(),
 | 
			
		||||
				// Only includes specified deposit shares
 | 
			
		||||
				Shares: types.NewVaultShares(
 | 
			
		||||
					types.NewVaultShare(deposit3Amount.Denom, deposit3Amount.Amount.ToDec()),
 | 
			
		||||
				),
 | 
			
		||||
				// Only the specified vault denom value
 | 
			
		||||
				Value: sdk.NewCoins(
 | 
			
		||||
					sdk.NewCoin("ukava", deposit3Amount.Amount),
 | 
			
		||||
				),
 | 
			
		||||
			},
 | 
			
		||||
			res.Deposits[0],
 | 
			
		||||
		)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	suite.Run("invalid vault", func() {
 | 
			
		||||
		_, err := suite.queryClient.Deposits(
 | 
			
		||||
			context.Background(),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc1.String(), "notavaliddenom", nil),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc1.String(), "notavaliddenom", false, nil),
 | 
			
		||||
		)
 | 
			
		||||
		suite.Require().Error(err)
 | 
			
		||||
		suite.Require().ErrorIs(err, status.Errorf(codes.NotFound, "vault for notavaliddenom not found"))
 | 
			
		||||
@ -317,7 +373,7 @@ func (suite *grpcQueryTestSuite) TestDeposits() {
 | 
			
		||||
		// Query all deposits for account 1
 | 
			
		||||
		res, err := suite.queryClient.Deposits(
 | 
			
		||||
			context.Background(),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc1.String(), "", nil),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc1.String(), "", false, nil),
 | 
			
		||||
		)
 | 
			
		||||
		suite.Require().NoError(err)
 | 
			
		||||
		suite.Require().Len(res.Deposits, 1)
 | 
			
		||||
@ -335,6 +391,40 @@ func (suite *grpcQueryTestSuite) TestDeposits() {
 | 
			
		||||
			res.Deposits,
 | 
			
		||||
		)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	suite.Run("all vaults value in staked tokens", func() {
 | 
			
		||||
		// Query all deposits for account 1 with value in staked tokens
 | 
			
		||||
		res, err := suite.queryClient.Deposits(
 | 
			
		||||
			context.Background(),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc2.String(), "", true, nil),
 | 
			
		||||
		)
 | 
			
		||||
		suite.Require().NoError(err)
 | 
			
		||||
		suite.Require().Len(res.Deposits, 1)
 | 
			
		||||
		suite.Require().Equal(
 | 
			
		||||
			types.DepositResponse{
 | 
			
		||||
				Depositor: acc2.String(),
 | 
			
		||||
				Shares: types.VaultShares{
 | 
			
		||||
					types.NewVaultShare(deposit4Amount.Denom, deposit4Amount.Amount.ToDec()),
 | 
			
		||||
					types.NewVaultShare(deposit3Amount.Denom, deposit3Amount.Amount.ToDec()),
 | 
			
		||||
					types.NewVaultShare(deposit1Amount.Denom, deposit1Amount.Amount.ToDec()),
 | 
			
		||||
				},
 | 
			
		||||
				Value: sdk.Coins{
 | 
			
		||||
					sdk.NewCoin("ukava", deposit4Amount.Amount),
 | 
			
		||||
					sdk.NewCoin("ukava", deposit3Amount.Amount),
 | 
			
		||||
					// Deposit 1 is last as it's the same order as vault shares
 | 
			
		||||
					deposit1Amount,
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			res.Deposits[0],
 | 
			
		||||
		)
 | 
			
		||||
		for i := range res.Deposits[0].Shares {
 | 
			
		||||
			suite.Equal(
 | 
			
		||||
				res.Deposits[0].Shares[i].Amount,
 | 
			
		||||
				res.Deposits[0].Value[i].Amount.ToDec(),
 | 
			
		||||
				"order of deposit value should match shares",
 | 
			
		||||
			)
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (suite *grpcQueryTestSuite) TestDeposits_NoDeposits() {
 | 
			
		||||
@ -353,7 +443,7 @@ func (suite *grpcQueryTestSuite) TestDeposits_NoDeposits() {
 | 
			
		||||
		// Query all deposits for account 1
 | 
			
		||||
		res, err := suite.queryClient.Deposits(
 | 
			
		||||
			context.Background(),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc1.String(), vault1Denom, nil),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc1.String(), vault1Denom, false, nil),
 | 
			
		||||
		)
 | 
			
		||||
		suite.Require().NoError(err)
 | 
			
		||||
		suite.Require().Len(res.Deposits, 1)
 | 
			
		||||
@ -376,7 +466,7 @@ func (suite *grpcQueryTestSuite) TestDeposits_NoDeposits() {
 | 
			
		||||
		// Query all deposits for account 1
 | 
			
		||||
		res, err := suite.queryClient.Deposits(
 | 
			
		||||
			context.Background(),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc1.String(), "", nil),
 | 
			
		||||
			types.NewQueryDepositsRequest(acc1.String(), "", false, nil),
 | 
			
		||||
		)
 | 
			
		||||
		suite.Require().NoError(err)
 | 
			
		||||
		suite.Require().Empty(res.Deposits)
 | 
			
		||||
@ -386,7 +476,7 @@ func (suite *grpcQueryTestSuite) TestDeposits_NoDeposits() {
 | 
			
		||||
func (suite *grpcQueryTestSuite) TestDeposits_NoDepositor() {
 | 
			
		||||
	_, err := suite.queryClient.Deposits(
 | 
			
		||||
		context.Background(),
 | 
			
		||||
		types.NewQueryDepositsRequest("", "usdx", nil),
 | 
			
		||||
		types.NewQueryDepositsRequest("", "usdx", false, nil),
 | 
			
		||||
	)
 | 
			
		||||
	suite.Require().Error(err)
 | 
			
		||||
	suite.Require().ErrorIs(err, status.Error(codes.InvalidArgument, "depositor is required"))
 | 
			
		||||
@ -395,14 +485,14 @@ func (suite *grpcQueryTestSuite) TestDeposits_NoDepositor() {
 | 
			
		||||
func (suite *grpcQueryTestSuite) TestDeposits_InvalidAddress() {
 | 
			
		||||
	_, err := suite.queryClient.Deposits(
 | 
			
		||||
		context.Background(),
 | 
			
		||||
		types.NewQueryDepositsRequest("asdf", "usdx", nil),
 | 
			
		||||
		types.NewQueryDepositsRequest("asdf", "usdx", false, nil),
 | 
			
		||||
	)
 | 
			
		||||
	suite.Require().Error(err)
 | 
			
		||||
	suite.Require().ErrorIs(err, status.Error(codes.InvalidArgument, "Invalid address"))
 | 
			
		||||
 | 
			
		||||
	_, err = suite.queryClient.Deposits(
 | 
			
		||||
		context.Background(),
 | 
			
		||||
		types.NewQueryDepositsRequest("asdf", "", nil),
 | 
			
		||||
		types.NewQueryDepositsRequest("asdf", "", false, nil),
 | 
			
		||||
	)
 | 
			
		||||
	suite.Require().Error(err)
 | 
			
		||||
	suite.Require().ErrorIs(err, status.Error(codes.InvalidArgument, "Invalid address"))
 | 
			
		||||
@ -440,7 +530,7 @@ func (suite *grpcQueryTestSuite) TestDeposits_bKava() {
 | 
			
		||||
		// Query all deposits for account 1
 | 
			
		||||
		res, err := suite.queryClient.Deposits(
 | 
			
		||||
			context.Background(),
 | 
			
		||||
			types.NewQueryDepositsRequest(address1.String(), "bkava", nil),
 | 
			
		||||
			types.NewQueryDepositsRequest(address1.String(), "bkava", false, nil),
 | 
			
		||||
		)
 | 
			
		||||
		suite.Require().NoError(err)
 | 
			
		||||
		suite.Require().Len(res.Deposits, 1)
 | 
			
		||||
@ -475,7 +565,7 @@ func (suite *grpcQueryTestSuite) TestDeposits_bKava() {
 | 
			
		||||
		// Query all deposits for account 1
 | 
			
		||||
		res, err := suite.queryClient.Deposits(
 | 
			
		||||
			context.Background(),
 | 
			
		||||
			types.NewQueryDepositsRequest(address1.String(), "bkava", nil),
 | 
			
		||||
			types.NewQueryDepositsRequest(address1.String(), "bkava", false, nil),
 | 
			
		||||
		)
 | 
			
		||||
		suite.Require().NoError(err)
 | 
			
		||||
		suite.Require().Len(res.Deposits, 1)
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,7 @@ import (
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
 | 
			
		||||
	"github.com/kava-labs/kava/app"
 | 
			
		||||
	"github.com/kava-labs/kava/x/earn/keeper"
 | 
			
		||||
	"github.com/kava-labs/kava/x/earn/types"
 | 
			
		||||
@ -22,6 +23,8 @@ import (
 | 
			
		||||
	authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
			
		||||
	bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
 | 
			
		||||
	govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
 | 
			
		||||
	stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
 | 
			
		||||
	stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
 | 
			
		||||
	"github.com/stretchr/testify/suite"
 | 
			
		||||
	abci "github.com/tendermint/tendermint/abci/types"
 | 
			
		||||
	tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
 | 
			
		||||
@ -160,6 +163,13 @@ func (suite *Suite) SetupTest() {
 | 
			
		||||
		nil,
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	stakingParams := stakingtypes.DefaultParams()
 | 
			
		||||
	stakingParams.BondDenom = "ukava"
 | 
			
		||||
 | 
			
		||||
	stakingGs := stakingtypes.GenesisState{
 | 
			
		||||
		Params: stakingParams,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tApp := app.NewTestApp()
 | 
			
		||||
 | 
			
		||||
	tApp.InitializeFromGenesisStates(
 | 
			
		||||
@ -167,6 +177,7 @@ func (suite *Suite) SetupTest() {
 | 
			
		||||
			pricefeedtypes.ModuleName: tApp.AppCodec().MustMarshalJSON(&pricefeedGS),
 | 
			
		||||
			hardtypes.ModuleName:      tApp.AppCodec().MustMarshalJSON(&hardGS),
 | 
			
		||||
			savingstypes.ModuleName:   tApp.AppCodec().MustMarshalJSON(&savingsGS),
 | 
			
		||||
			stakingtypes.ModuleName:   tApp.AppCodec().MustMarshalJSON(&stakingGs),
 | 
			
		||||
		},
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
@ -357,6 +368,67 @@ func (suite *Suite) SavingsDepositAmountEqual(expected sdk.Coins) {
 | 
			
		||||
	)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
// Staking
 | 
			
		||||
 | 
			
		||||
// CreateNewUnbondedValidator creates a new validator in the staking module.
 | 
			
		||||
// New validators are unbonded until the end blocker is run.
 | 
			
		||||
func (suite *Suite) CreateNewUnbondedValidator(addr sdk.ValAddress, selfDelegation sdk.Int) stakingtypes.Validator {
 | 
			
		||||
	// Create a validator
 | 
			
		||||
	err := suite.deliverMsgCreateValidator(suite.Ctx, addr, suite.NewBondCoin(selfDelegation))
 | 
			
		||||
	suite.Require().NoError(err)
 | 
			
		||||
 | 
			
		||||
	// New validators are created in an unbonded state. Note if the end blocker is run later this validator could become bonded.
 | 
			
		||||
 | 
			
		||||
	validator, found := suite.App.GetStakingKeeper().GetValidator(suite.Ctx, addr)
 | 
			
		||||
	suite.Require().True(found)
 | 
			
		||||
	return validator
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewBondCoin creates a Coin with the current staking denom.
 | 
			
		||||
func (suite *Suite) NewBondCoin(amount sdk.Int) sdk.Coin {
 | 
			
		||||
	stakingDenom := suite.App.GetStakingKeeper().BondDenom(suite.Ctx)
 | 
			
		||||
	return sdk.NewCoin(stakingDenom, amount)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CreateDelegation delegates tokens to a validator.
 | 
			
		||||
func (suite *Suite) CreateDelegation(valAddr sdk.ValAddress, delegator sdk.AccAddress, amount sdk.Int) sdk.Dec {
 | 
			
		||||
	sk := suite.App.GetStakingKeeper()
 | 
			
		||||
 | 
			
		||||
	stakingDenom := sk.BondDenom(suite.Ctx)
 | 
			
		||||
	msg := stakingtypes.NewMsgDelegate(
 | 
			
		||||
		delegator,
 | 
			
		||||
		valAddr,
 | 
			
		||||
		sdk.NewCoin(stakingDenom, amount),
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	msgServer := stakingkeeper.NewMsgServerImpl(sk)
 | 
			
		||||
	_, err := msgServer.Delegate(sdk.WrapSDKContext(suite.Ctx), msg)
 | 
			
		||||
	suite.Require().NoError(err)
 | 
			
		||||
 | 
			
		||||
	del, found := sk.GetDelegation(suite.Ctx, delegator, valAddr)
 | 
			
		||||
	suite.Require().True(found)
 | 
			
		||||
	return del.Shares
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (suite *Suite) deliverMsgCreateValidator(ctx sdk.Context, address sdk.ValAddress, selfDelegation sdk.Coin) error {
 | 
			
		||||
	msg, err := stakingtypes.NewMsgCreateValidator(
 | 
			
		||||
		address,
 | 
			
		||||
		ed25519.GenPrivKey().PubKey(),
 | 
			
		||||
		selfDelegation,
 | 
			
		||||
		stakingtypes.Description{},
 | 
			
		||||
		stakingtypes.NewCommissionRates(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
 | 
			
		||||
		sdk.NewInt(1e6),
 | 
			
		||||
	)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	msgServer := stakingkeeper.NewMsgServerImpl(suite.App.GetStakingKeeper())
 | 
			
		||||
	_, err = msgServer.CreateValidator(sdk.WrapSDKContext(suite.Ctx), msg)
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
// EventsContains asserts that the expected event is in the provided events
 | 
			
		||||
 | 
			
		||||
@ -23,11 +23,13 @@ func NewQueryVaultRequest(denom string) *QueryVaultRequest {
 | 
			
		||||
func NewQueryDepositsRequest(
 | 
			
		||||
	depositor string,
 | 
			
		||||
	denom string,
 | 
			
		||||
	ValueInStakedTokens bool,
 | 
			
		||||
	pagination *query.PageRequest,
 | 
			
		||||
) *QueryDepositsRequest {
 | 
			
		||||
	return &QueryDepositsRequest{
 | 
			
		||||
		Depositor:           depositor,
 | 
			
		||||
		Denom:               denom,
 | 
			
		||||
		ValueInStakedTokens: ValueInStakedTokens,
 | 
			
		||||
		Pagination:          pagination,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -323,8 +323,10 @@ type QueryDepositsRequest struct {
 | 
			
		||||
	Depositor string `protobuf:"bytes,1,opt,name=depositor,proto3" json:"depositor,omitempty"`
 | 
			
		||||
	// denom optionally filters deposits by vault denom
 | 
			
		||||
	Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"`
 | 
			
		||||
	// respond with vault value in ukava for bkava vaults
 | 
			
		||||
	ValueInStakedTokens bool `protobuf:"varint,3,opt,name=value_in_staked_tokens,json=valueInStakedTokens,proto3" json:"value_in_staked_tokens,omitempty"`
 | 
			
		||||
	// pagination defines an optional pagination for the request.
 | 
			
		||||
	Pagination *query.PageRequest `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"`
 | 
			
		||||
	Pagination *query.PageRequest `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *QueryDepositsRequest) Reset()         { *m = QueryDepositsRequest{} }
 | 
			
		||||
@ -462,61 +464,63 @@ func init() {
 | 
			
		||||
func init() { proto.RegisterFile("kava/earn/v1beta1/query.proto", fileDescriptor_63f8dee2f3192a6b) }
 | 
			
		||||
 | 
			
		||||
var fileDescriptor_63f8dee2f3192a6b = []byte{
 | 
			
		||||
	// 855 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xcd, 0x4f, 0x1b, 0x47,
 | 
			
		||||
	0x14, 0xf7, 0xda, 0xd8, 0x82, 0x71, 0xa1, 0xf5, 0xe0, 0x4a, 0xb6, 0x29, 0x6b, 0xb3, 0x14, 0x58,
 | 
			
		||||
	0x2a, 0x79, 0xb7, 0xb8, 0x52, 0x7b, 0x41, 0x95, 0xea, 0xa2, 0x22, 0x7a, 0xa8, 0xe8, 0xd2, 0x72,
 | 
			
		||||
	0xa8, 0x54, 0x59, 0x63, 0x3c, 0x5a, 0x56, 0xd8, 0x3b, 0x66, 0x67, 0xec, 0x96, 0x56, 0x51, 0x24,
 | 
			
		||||
	0xa4, 0xdc, 0x23, 0xe5, 0x7f, 0xc8, 0x01, 0xe5, 0xc8, 0x1f, 0xc1, 0x11, 0x91, 0x4b, 0x94, 0x03,
 | 
			
		||||
	0x24, 0x90, 0x73, 0xce, 0x39, 0x46, 0xf3, 0xb1, 0xfe, 0x36, 0x46, 0x39, 0xc1, 0xbe, 0x8f, 0xdf,
 | 
			
		||||
	0xef, 0xf7, 0xde, 0xbc, 0xf7, 0x0c, 0x16, 0x8f, 0x50, 0x1b, 0xd9, 0x18, 0x05, 0xbe, 0xdd, 0xde,
 | 
			
		||||
	0xa8, 0x62, 0x86, 0x36, 0xec, 0xe3, 0x16, 0x0e, 0x4e, 0xac, 0x66, 0x40, 0x18, 0x81, 0x29, 0xee,
 | 
			
		||||
	0xb6, 0xb8, 0xdb, 0x52, 0xee, 0x5c, 0xf6, 0x80, 0xd0, 0x06, 0xa1, 0x15, 0x11, 0x60, 0xcb, 0x0f,
 | 
			
		||||
	0x19, 0x9d, 0xfb, 0x46, 0x7e, 0xd9, 0x55, 0x44, 0xb1, 0x84, 0xe9, 0x80, 0x36, 0x91, 0xeb, 0xf9,
 | 
			
		||||
	0x88, 0x79, 0xc4, 0x57, 0xb1, 0x7a, 0x6f, 0x6c, 0x18, 0x75, 0x40, 0xbc, 0xd0, 0x9f, 0x76, 0x89,
 | 
			
		||||
	0x4b, 0x24, 0x07, 0xff, 0x4f, 0x59, 0xbf, 0x72, 0x09, 0x71, 0xeb, 0xd8, 0x46, 0x4d, 0xcf, 0x46,
 | 
			
		||||
	0xbe, 0x4f, 0x98, 0x80, 0x0c, 0xf9, 0xf5, 0xe1, 0x62, 0x9a, 0x28, 0x40, 0x8d, 0xd0, 0x5f, 0x18,
 | 
			
		||||
	0xf6, 0x53, 0x16, 0x20, 0x86, 0x5d, 0x55, 0x6f, 0x6e, 0x44, 0x3b, 0xda, 0xa8, 0x55, 0x67, 0xd2,
 | 
			
		||||
	0x6d, 0xa4, 0x01, 0xfc, 0x9d, 0x97, 0xb5, 0x2b, 0x50, 0x1d, 0x7c, 0xdc, 0xc2, 0x94, 0x19, 0xbf,
 | 
			
		||||
	0x81, 0xf9, 0x3e, 0x2b, 0x6d, 0x12, 0x9f, 0x62, 0xf8, 0x03, 0x48, 0x48, 0xf6, 0x8c, 0x56, 0xd0,
 | 
			
		||||
	0xcc, 0x64, 0x29, 0x6b, 0x0d, 0x35, 0xd3, 0x92, 0x29, 0xe5, 0xa9, 0x8b, 0xeb, 0x7c, 0xc4, 0x51,
 | 
			
		||||
	0xe1, 0x1d, 0x96, 0x7d, 0xce, 0xdc, 0x61, 0xf9, 0x53, 0xb1, 0x84, 0x56, 0xc5, 0xf2, 0x23, 0x48,
 | 
			
		||||
	0x08, 0x85, 0x9c, 0x25, 0x66, 0x26, 0x4b, 0x85, 0x11, 0x2c, 0x22, 0x25, 0xcc, 0x08, 0xc9, 0x64,
 | 
			
		||||
	0x96, 0xb1, 0x0e, 0x52, 0x5d, 0x58, 0xc5, 0x05, 0xd3, 0x20, 0x5e, 0xc3, 0x3e, 0x69, 0x08, 0xe5,
 | 
			
		||||
	0x33, 0x8e, 0xfc, 0x30, 0x9c, 0x5e, 0x5d, 0x1d, 0x01, 0x9b, 0x20, 0x2e, 0xa0, 0x54, 0x95, 0x0f,
 | 
			
		||||
	0xe5, 0x97, 0x49, 0xc6, 0xfb, 0x28, 0x98, 0xed, 0xc7, 0x1b, 0xc9, 0x0d, 0x1d, 0x00, 0xd4, 0x53,
 | 
			
		||||
	0x79, 0x98, 0x66, 0xa2, 0x85, 0x98, 0x39, 0x57, 0xca, 0x8f, 0xa0, 0xda, 0x53, 0xef, 0xf9, 0xc7,
 | 
			
		||||
	0x49, 0x13, 0x97, 0x53, 0x67, 0x37, 0xf9, 0xd9, 0x5e, 0x0b, 0x75, 0x7a, 0x50, 0xa0, 0x09, 0xbe,
 | 
			
		||||
	0xf0, 0xf8, 0x1c, 0x7b, 0x6d, 0xc4, 0x70, 0x45, 0x16, 0x11, 0x2b, 0x68, 0xe6, 0xb4, 0x33, 0xe7,
 | 
			
		||||
	0xd1, 0x5d, 0x69, 0x16, 0xda, 0xe0, 0x36, 0x80, 0xa8, 0x5e, 0x27, 0xff, 0xe0, 0x5a, 0xa5, 0x86,
 | 
			
		||||
	0x9b, 0x84, 0x7a, 0x8c, 0x04, 0x34, 0x33, 0x55, 0x88, 0x99, 0x33, 0xe5, 0xcc, 0xd5, 0x79, 0x31,
 | 
			
		||||
	0xad, 0xd6, 0xe0, 0xa7, 0x5a, 0x2d, 0xc0, 0x94, 0xee, 0xb1, 0xc0, 0xf3, 0x5d, 0x27, 0xa5, 0x72,
 | 
			
		||||
	0xb6, 0x3a, 0x29, 0x70, 0x09, 0x7c, 0xc6, 0x08, 0x43, 0xf5, 0x0a, 0x3d, 0x44, 0x01, 0xa6, 0x99,
 | 
			
		||||
	0xb8, 0xa8, 0x31, 0x29, 0x6c, 0x7b, 0xc2, 0x04, 0xff, 0x06, 0xf2, 0xb3, 0xd2, 0x46, 0xf5, 0x16,
 | 
			
		||||
	0xce, 0x24, 0x78, 0x44, 0x79, 0x93, 0xf7, 0xec, 0xf5, 0x75, 0x7e, 0xd5, 0xf5, 0xd8, 0x61, 0xab,
 | 
			
		||||
	0x6a, 0x1d, 0x90, 0x86, 0x5a, 0x3d, 0xf5, 0xa7, 0x48, 0x6b, 0x47, 0x36, 0xe3, 0x25, 0x5a, 0x3b,
 | 
			
		||||
	0x3e, 0xbb, 0x3a, 0x2f, 0x02, 0x25, 0x69, 0xc7, 0x67, 0x0e, 0x10, 0x80, 0xfb, 0x1c, 0xcf, 0x78,
 | 
			
		||||
	0xa1, 0x81, 0xb4, 0x78, 0x45, 0xa5, 0x2a, 0x9c, 0x2f, 0xf8, 0x3d, 0x98, 0xe9, 0xd4, 0x26, 0x7b,
 | 
			
		||||
	0x7f, 0x4f, 0x69, 0xdd, 0xd0, 0xee, 0x7b, 0x45, 0x7b, 0xdf, 0xeb, 0x17, 0x00, 0xba, 0x2b, 0x2f,
 | 
			
		||||
	0xba, 0x9a, 0x2c, 0xad, 0x5a, 0x0a, 0x8b, 0xef, 0xbc, 0x25, 0xcf, 0x4c, 0x77, 0x11, 0x5c, 0xac,
 | 
			
		||||
	0x94, 0x38, 0x3d, 0x99, 0xc6, 0x73, 0x0d, 0x7c, 0x39, 0x20, 0x57, 0xcd, 0xc9, 0x16, 0x98, 0x56,
 | 
			
		||||
	0x22, 0xc2, 0xd1, 0x37, 0x46, 0xcc, 0x83, 0x4a, 0x1b, 0x18, 0xbe, 0x4e, 0x26, 0xdc, 0xee, 0xd3,
 | 
			
		||||
	0x19, 0x15, 0x3a, 0xd7, 0x26, 0xea, 0x94, 0x60, 0x7d, 0x42, 0x3f, 0x68, 0xe0, 0xf3, 0x01, 0xb2,
 | 
			
		||||
	0x4f, 0x6e, 0xe9, 0xaf, 0x20, 0xa1, 0xe6, 0x23, 0x2a, 0x0a, 0x5b, 0x1c, 0xb7, 0x53, 0x62, 0x64,
 | 
			
		||||
	0xca, 0xf3, 0xbc, 0xa6, 0xb3, 0x9b, 0x7c, 0xb2, 0x6b, 0xa3, 0x8e, 0x42, 0x80, 0x88, 0xaf, 0x27,
 | 
			
		||||
	0x1f, 0xa4, 0x98, 0x80, 0xca, 0xf6, 0xd5, 0x16, 0x82, 0xfd, 0x4c, 0x3c, 0xbf, 0xfc, 0xad, 0x82,
 | 
			
		||||
	0x31, 0x1f, 0x30, 0x63, 0x3c, 0x81, 0x3a, 0x12, 0xb9, 0xf4, 0x64, 0x0a, 0xc4, 0xc5, 0x1b, 0xc1,
 | 
			
		||||
	0xff, 0x40, 0x42, 0x5e, 0x34, 0xb8, 0x32, 0x42, 0xf2, 0xf0, 0xe9, 0xcc, 0xad, 0x4e, 0x0a, 0x93,
 | 
			
		||||
	0x9d, 0x34, 0x96, 0x4e, 0x5f, 0xbe, 0x7b, 0x16, 0x5d, 0x80, 0x59, 0x7b, 0xdc, 0x89, 0xe7, 0xdc,
 | 
			
		||||
	0xf2, 0x34, 0x8e, 0xe7, 0xee, 0x3b, 0xa8, 0xe3, 0xb9, 0xfb, 0x2f, 0xec, 0xbd, 0xdc, 0xf2, 0x88,
 | 
			
		||||
	0xc2, 0xc7, 0x20, 0x2e, 0x0f, 0xc5, 0xd7, 0xf7, 0x62, 0x86, 0xcc, 0x2b, 0x13, 0xa2, 0x14, 0xf1,
 | 
			
		||||
	0xba, 0x20, 0x5e, 0x86, 0x4b, 0x63, 0x89, 0xed, 0xff, 0xc5, 0xb6, 0x3d, 0x82, 0xa7, 0x1a, 0x98,
 | 
			
		||||
	0x0e, 0x37, 0x04, 0xae, 0x8d, 0x83, 0x1f, 0x58, 0xf9, 0x9c, 0x39, 0x39, 0x50, 0x49, 0x59, 0x16,
 | 
			
		||||
	0x52, 0x16, 0xe1, 0xc2, 0x08, 0x29, 0xe1, 0x2e, 0x95, 0xb7, 0x2e, 0xde, 0xea, 0x91, 0x8b, 0x5b,
 | 
			
		||||
	0x5d, 0xbb, 0xbc, 0xd5, 0xb5, 0x37, 0xb7, 0xba, 0xf6, 0xf4, 0x4e, 0x8f, 0x5c, 0xde, 0xe9, 0x91,
 | 
			
		||||
	0x57, 0x77, 0x7a, 0xe4, 0xaf, 0xde, 0xd3, 0xc5, 0x41, 0x8a, 0x75, 0x54, 0xa5, 0x12, 0xee, 0x5f,
 | 
			
		||||
	0x09, 0x28, 0x46, 0xab, 0x9a, 0x10, 0x3f, 0xb5, 0xdf, 0x7d, 0x0c, 0x00, 0x00, 0xff, 0xff, 0xf4,
 | 
			
		||||
	0x79, 0x11, 0x40, 0x9a, 0x08, 0x00, 0x00,
 | 
			
		||||
	// 883 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x4b, 0x6f, 0xeb, 0x44,
 | 
			
		||||
	0x14, 0x8e, 0xf3, 0x52, 0x3b, 0xe1, 0x5e, 0xc8, 0x34, 0xa0, 0x24, 0x97, 0x3a, 0xa9, 0x2f, 0xb7,
 | 
			
		||||
	0xd7, 0x45, 0x8a, 0x4d, 0x53, 0x09, 0x36, 0x15, 0x12, 0xa1, 0xa2, 0x2a, 0x0b, 0x54, 0x9c, 0xd2,
 | 
			
		||||
	0x05, 0x12, 0xb2, 0x26, 0xcd, 0xc8, 0xb5, 0x92, 0x78, 0x52, 0xcf, 0x24, 0x50, 0x10, 0x42, 0xaa,
 | 
			
		||||
	0xc4, 0x1e, 0x89, 0xff, 0xc0, 0xa2, 0xeb, 0xfe, 0x88, 0x2e, 0xab, 0xb2, 0x41, 0x2c, 0x5a, 0xda,
 | 
			
		||||
	0xb2, 0x66, 0xcd, 0x12, 0xcd, 0xc3, 0x79, 0xa7, 0xa9, 0x58, 0x25, 0x73, 0x1e, 0xdf, 0xf7, 0x9d,
 | 
			
		||||
	0x99, 0x73, 0x8e, 0xc1, 0x6a, 0x0b, 0xf5, 0x91, 0x8d, 0x51, 0x18, 0xd8, 0xfd, 0xcd, 0x06, 0x66,
 | 
			
		||||
	0x68, 0xd3, 0x3e, 0xe9, 0xe1, 0xf0, 0xd4, 0xea, 0x86, 0x84, 0x11, 0x98, 0xe5, 0x6e, 0x8b, 0xbb,
 | 
			
		||||
	0x2d, 0xe5, 0x2e, 0x16, 0x8e, 0x08, 0xed, 0x10, 0xea, 0x8a, 0x00, 0x5b, 0x1e, 0x64, 0x74, 0xf1,
 | 
			
		||||
	0x7d, 0x79, 0xb2, 0x1b, 0x88, 0x62, 0x09, 0x33, 0x00, 0xed, 0x22, 0xcf, 0x0f, 0x10, 0xf3, 0x49,
 | 
			
		||||
	0xa0, 0x62, 0xf5, 0xd1, 0xd8, 0x28, 0xea, 0x88, 0xf8, 0x91, 0x3f, 0xe7, 0x11, 0x8f, 0x48, 0x0e,
 | 
			
		||||
	0xfe, 0x4f, 0x59, 0xdf, 0xf5, 0x08, 0xf1, 0xda, 0xd8, 0x46, 0x5d, 0xdf, 0x46, 0x41, 0x40, 0x98,
 | 
			
		||||
	0x80, 0x8c, 0xf8, 0xf5, 0xe9, 0x62, 0xba, 0x28, 0x44, 0x9d, 0xc8, 0x5f, 0x9e, 0xf6, 0x53, 0x16,
 | 
			
		||||
	0x22, 0x86, 0x3d, 0x55, 0x6f, 0x71, 0xc6, 0x75, 0xf4, 0x51, 0xaf, 0xcd, 0xa4, 0xdb, 0xc8, 0x01,
 | 
			
		||||
	0xf8, 0x25, 0x2f, 0x6b, 0x5f, 0xa0, 0x3a, 0xf8, 0xa4, 0x87, 0x29, 0x33, 0xbe, 0x00, 0x2b, 0x63,
 | 
			
		||||
	0x56, 0xda, 0x25, 0x01, 0xc5, 0xf0, 0x23, 0x90, 0x96, 0xec, 0x79, 0xad, 0xac, 0x99, 0x99, 0x6a,
 | 
			
		||||
	0xc1, 0x9a, 0xba, 0x4c, 0x4b, 0xa6, 0xd4, 0x92, 0x97, 0x37, 0xa5, 0x98, 0xa3, 0xc2, 0x07, 0x2c,
 | 
			
		||||
	0x87, 0x9c, 0x79, 0xc0, 0xf2, 0x95, 0x62, 0x89, 0xac, 0x8a, 0xe5, 0x63, 0x90, 0x16, 0x0a, 0x39,
 | 
			
		||||
	0x4b, 0xc2, 0xcc, 0x54, 0xcb, 0x33, 0x58, 0x44, 0x4a, 0x94, 0x11, 0x91, 0xc9, 0x2c, 0x63, 0x03,
 | 
			
		||||
	0x64, 0x87, 0xb0, 0x8a, 0x0b, 0xe6, 0x40, 0xaa, 0x89, 0x03, 0xd2, 0x11, 0xca, 0x97, 0x1d, 0x79,
 | 
			
		||||
	0x30, 0x9c, 0x51, 0x5d, 0x03, 0x01, 0xdb, 0x20, 0x25, 0xa0, 0x54, 0x95, 0x4f, 0xe5, 0x97, 0x49,
 | 
			
		||||
	0xc6, 0x3f, 0x71, 0xf0, 0x6c, 0x1c, 0x6f, 0x26, 0x37, 0x74, 0x00, 0x50, 0x4f, 0xe5, 0x63, 0x9a,
 | 
			
		||||
	0x8f, 0x97, 0x13, 0xe6, 0xf3, 0x6a, 0x69, 0x06, 0x55, 0x5d, 0xbd, 0xe7, 0xc1, 0x69, 0x17, 0xd7,
 | 
			
		||||
	0xb2, 0xe7, 0xb7, 0xa5, 0x67, 0xa3, 0x16, 0xea, 0x8c, 0xa0, 0x40, 0x13, 0xbc, 0xe5, 0xf3, 0x3e,
 | 
			
		||||
	0xf6, 0xfb, 0x88, 0x61, 0x57, 0x16, 0x91, 0x28, 0x6b, 0xe6, 0x92, 0xf3, 0xdc, 0xa7, 0xfb, 0xd2,
 | 
			
		||||
	0x2c, 0xb4, 0xc1, 0x5d, 0x00, 0x51, 0xbb, 0x4d, 0xbe, 0xc5, 0x4d, 0xb7, 0x89, 0xbb, 0x84, 0xfa,
 | 
			
		||||
	0x8c, 0x84, 0x34, 0x9f, 0x2c, 0x27, 0xcc, 0xe5, 0x5a, 0xfe, 0xfa, 0xa2, 0x92, 0x53, 0x63, 0xf0,
 | 
			
		||||
	0x49, 0xb3, 0x19, 0x62, 0x4a, 0xeb, 0x2c, 0xf4, 0x03, 0xcf, 0xc9, 0xaa, 0x9c, 0x9d, 0x41, 0x0a,
 | 
			
		||||
	0x5c, 0x03, 0x6f, 0x30, 0xc2, 0x50, 0xdb, 0xa5, 0xc7, 0x28, 0xc4, 0x34, 0x9f, 0x12, 0x35, 0x66,
 | 
			
		||||
	0x84, 0xad, 0x2e, 0x4c, 0xf0, 0x1b, 0x20, 0x8f, 0x6e, 0x1f, 0xb5, 0x7b, 0x38, 0x9f, 0xe6, 0x11,
 | 
			
		||||
	0xb5, 0x6d, 0x7e, 0x67, 0x7f, 0xde, 0x94, 0xd6, 0x3d, 0x9f, 0x1d, 0xf7, 0x1a, 0xd6, 0x11, 0xe9,
 | 
			
		||||
	0xa8, 0xd1, 0x53, 0x3f, 0x15, 0xda, 0x6c, 0xd9, 0x8c, 0x97, 0x68, 0xed, 0x05, 0xec, 0xfa, 0xa2,
 | 
			
		||||
	0x02, 0x94, 0xa4, 0xbd, 0x80, 0x39, 0x40, 0x00, 0x1e, 0x72, 0x3c, 0xe3, 0x4e, 0x03, 0x39, 0xf1,
 | 
			
		||||
	0x8a, 0x4a, 0x55, 0xd4, 0x5f, 0xf0, 0x43, 0xb0, 0x3c, 0xa8, 0x4d, 0xde, 0xfd, 0x23, 0xa5, 0x0d,
 | 
			
		||||
	0x43, 0x87, 0xef, 0x15, 0x1f, 0x7d, 0xaf, 0x2d, 0xf0, 0x8e, 0xd0, 0xef, 0xfa, 0x81, 0x4b, 0x19,
 | 
			
		||||
	0x6a, 0xe1, 0xa6, 0xcb, 0x48, 0x0b, 0x07, 0x54, 0xdd, 0xf0, 0x8a, 0xf0, 0xee, 0x05, 0x75, 0xe1,
 | 
			
		||||
	0x3b, 0x10, 0x2e, 0xf8, 0x19, 0x00, 0xc3, 0x3d, 0x91, 0x4f, 0x8a, 0x7e, 0x5a, 0xb7, 0x94, 0x00,
 | 
			
		||||
	0xbe, 0x28, 0x2c, 0xb9, 0x9b, 0x86, 0xd3, 0xe3, 0x61, 0x25, 0xdf, 0x19, 0xc9, 0x34, 0x7e, 0xd3,
 | 
			
		||||
	0xc0, 0xdb, 0x13, 0x35, 0xaa, 0xe6, 0xda, 0x01, 0x4b, 0x4a, 0x79, 0x34, 0x2f, 0xc6, 0x8c, 0x26,
 | 
			
		||||
	0x52, 0x69, 0x13, 0x1d, 0x3b, 0xc8, 0x84, 0xbb, 0x63, 0x3a, 0xe3, 0x42, 0xe7, 0xeb, 0x85, 0x3a,
 | 
			
		||||
	0x25, 0xd8, 0x98, 0xd0, 0x7f, 0x35, 0xf0, 0xe6, 0x04, 0xd9, 0xff, 0x7e, 0x87, 0xcf, 0x41, 0x5a,
 | 
			
		||||
	0x35, 0x55, 0x5c, 0x14, 0xb6, 0x3a, 0x6f, 0x10, 0x45, 0x9f, 0xd5, 0x56, 0x78, 0x4d, 0xe7, 0xb7,
 | 
			
		||||
	0xa5, 0xcc, 0xd0, 0x46, 0x1d, 0x85, 0x00, 0x11, 0x9f, 0x69, 0xde, 0x7d, 0x09, 0x01, 0x55, 0x18,
 | 
			
		||||
	0xab, 0x2d, 0x02, 0xfb, 0x94, 0xf8, 0x41, 0xed, 0x03, 0x05, 0x63, 0x3e, 0xa1, 0x31, 0x79, 0x02,
 | 
			
		||||
	0x75, 0x24, 0x72, 0xf5, 0xe7, 0x24, 0x48, 0x89, 0x37, 0x82, 0xdf, 0x83, 0xb4, 0x5c, 0x83, 0xf0,
 | 
			
		||||
	0xd5, 0x0c, 0xc9, 0xd3, 0xfb, 0xb6, 0xb8, 0xbe, 0x28, 0x4c, 0xde, 0xa4, 0xb1, 0x76, 0xf6, 0xfb,
 | 
			
		||||
	0xdf, 0xbf, 0xc6, 0x5f, 0xc0, 0x82, 0x3d, 0xef, 0xbb, 0xc0, 0xb9, 0xe5, 0x3e, 0x9d, 0xcf, 0x3d,
 | 
			
		||||
	0xb6, 0x85, 0xe7, 0x73, 0x8f, 0xaf, 0xe5, 0x47, 0xb9, 0xe5, 0xe6, 0x85, 0x3f, 0x81, 0x94, 0xdc,
 | 
			
		||||
	0x2e, 0xef, 0x3d, 0x8a, 0x19, 0x31, 0xbf, 0x5a, 0x10, 0xa5, 0x88, 0x37, 0x04, 0xf1, 0x4b, 0xb8,
 | 
			
		||||
	0x36, 0x97, 0xd8, 0xfe, 0x41, 0x8c, 0xe8, 0x8f, 0xf0, 0x4c, 0x03, 0x4b, 0xd1, 0x84, 0xc0, 0xd7,
 | 
			
		||||
	0xf3, 0xe0, 0x27, 0xf6, 0x44, 0xd1, 0x5c, 0x1c, 0xa8, 0xa4, 0xbc, 0x14, 0x52, 0x56, 0xe1, 0x8b,
 | 
			
		||||
	0x19, 0x52, 0xa2, 0x59, 0xaa, 0xed, 0x5c, 0xde, 0xe9, 0xb1, 0xcb, 0x7b, 0x5d, 0xbb, 0xba, 0xd7,
 | 
			
		||||
	0xb5, 0xbf, 0xee, 0x75, 0xed, 0x97, 0x07, 0x3d, 0x76, 0xf5, 0xa0, 0xc7, 0xfe, 0x78, 0xd0, 0x63,
 | 
			
		||||
	0x5f, 0x8f, 0xee, 0x3b, 0x0e, 0x52, 0x69, 0xa3, 0x06, 0x95, 0x70, 0xdf, 0x49, 0x40, 0xd1, 0x5a,
 | 
			
		||||
	0x8d, 0xb4, 0xf8, 0x3e, 0x6f, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0xea, 0x07, 0xa4, 0x14, 0xcf,
 | 
			
		||||
	0x08, 0x00, 0x00,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reference imports to suppress errors if they are not otherwise used.
 | 
			
		||||
@ -1008,7 +1012,17 @@ func (m *QueryDepositsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
 | 
			
		||||
			i = encodeVarintQuery(dAtA, i, uint64(size))
 | 
			
		||||
		}
 | 
			
		||||
		i--
 | 
			
		||||
		dAtA[i] = 0x1a
 | 
			
		||||
		dAtA[i] = 0x22
 | 
			
		||||
	}
 | 
			
		||||
	if m.ValueInStakedTokens {
 | 
			
		||||
		i--
 | 
			
		||||
		if m.ValueInStakedTokens {
 | 
			
		||||
			dAtA[i] = 1
 | 
			
		||||
		} else {
 | 
			
		||||
			dAtA[i] = 0
 | 
			
		||||
		}
 | 
			
		||||
		i--
 | 
			
		||||
		dAtA[i] = 0x18
 | 
			
		||||
	}
 | 
			
		||||
	if len(m.Denom) > 0 {
 | 
			
		||||
		i -= len(m.Denom)
 | 
			
		||||
@ -1262,6 +1276,9 @@ func (m *QueryDepositsRequest) Size() (n int) {
 | 
			
		||||
	if l > 0 {
 | 
			
		||||
		n += 1 + l + sovQuery(uint64(l))
 | 
			
		||||
	}
 | 
			
		||||
	if m.ValueInStakedTokens {
 | 
			
		||||
		n += 2
 | 
			
		||||
	}
 | 
			
		||||
	if m.Pagination != nil {
 | 
			
		||||
		l = m.Pagination.Size()
 | 
			
		||||
		n += 1 + l + sovQuery(uint64(l))
 | 
			
		||||
@ -2114,6 +2131,26 @@ func (m *QueryDepositsRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			m.Denom = string(dAtA[iNdEx:postIndex])
 | 
			
		||||
			iNdEx = postIndex
 | 
			
		||||
		case 3:
 | 
			
		||||
			if wireType != 0 {
 | 
			
		||||
				return fmt.Errorf("proto: wrong wireType = %d for field ValueInStakedTokens", wireType)
 | 
			
		||||
			}
 | 
			
		||||
			var v int
 | 
			
		||||
			for shift := uint(0); ; shift += 7 {
 | 
			
		||||
				if shift >= 64 {
 | 
			
		||||
					return ErrIntOverflowQuery
 | 
			
		||||
				}
 | 
			
		||||
				if iNdEx >= l {
 | 
			
		||||
					return io.ErrUnexpectedEOF
 | 
			
		||||
				}
 | 
			
		||||
				b := dAtA[iNdEx]
 | 
			
		||||
				iNdEx++
 | 
			
		||||
				v |= int(b&0x7F) << shift
 | 
			
		||||
				if b < 0x80 {
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			m.ValueInStakedTokens = bool(v != 0)
 | 
			
		||||
		case 4:
 | 
			
		||||
			if wireType != 2 {
 | 
			
		||||
				return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user