mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-12-25 07:45:18 +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
|
in: query
|
||||||
required: false
|
required: false
|
||||||
type: string
|
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
|
- name: pagination.key
|
||||||
description: |-
|
description: |-
|
||||||
key is a value returned in PageResponse.next_key to begin
|
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
|
representing the yearly APR of KAVA tokens that will be
|
||||||
minted during that period
|
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
|
title: Params governance parameters for kavadist module
|
||||||
description: >-
|
description: >-
|
||||||
QueryParamsResponse defines the response type for querying
|
QueryParamsResponse defines the response type for querying
|
||||||
@ -55834,6 +55900,73 @@ definitions:
|
|||||||
time_period:
|
time_period:
|
||||||
type: string
|
type: string
|
||||||
title: RateLimit parameters for rate-limiting the supply of an issued asset
|
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:
|
kava.kavadist.v1beta1.Params:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@ -55863,7 +55996,84 @@ definitions:
|
|||||||
|
|
||||||
representing the yearly APR of KAVA tokens that will be minted
|
representing the yearly APR of KAVA tokens that will be minted
|
||||||
during that period
|
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
|
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:
|
kava.kavadist.v1beta1.Period:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@ -55937,6 +56147,65 @@ definitions:
|
|||||||
|
|
||||||
representing the yearly APR of KAVA tokens that will be minted
|
representing the yearly APR of KAVA tokens that will be minted
|
||||||
during that period
|
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
|
title: Params governance parameters for kavadist module
|
||||||
description: >-
|
description: >-
|
||||||
QueryParamsResponse defines the response type for querying x/kavadist
|
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 |
|
| `depositor` | [string](#string) | | depositor optionally filters deposits by depositor |
|
||||||
| `denom` | [string](#string) | | denom optionally filters deposits by vault denom |
|
| `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. |
|
| `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
|
// denom optionally filters deposits by vault denom
|
||||||
string denom = 2;
|
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.
|
// 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.
|
// QueryDepositsResponse is the response type for the Query/Deposits RPC method.
|
||||||
|
@ -21,7 +21,8 @@ message Params {
|
|||||||
message InfrastructureParams {
|
message InfrastructureParams {
|
||||||
repeated Period infrastructure_periods = 1 [(gogoproto.castrepeated) = "Periods", (gogoproto.nullable) = false];
|
repeated Period infrastructure_periods = 1 [(gogoproto.castrepeated) = "Periods", (gogoproto.nullable) = false];
|
||||||
repeated CoreReward core_rewards = 2 [(gogoproto.castrepeated) = "CoreRewards", (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;
|
option (gogoproto.goproto_stringer) = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,7 +44,7 @@ message PartnerReward {
|
|||||||
(cosmos_proto.scalar) = "cosmos.AddressBytes",
|
(cosmos_proto.scalar) = "cosmos.AddressBytes",
|
||||||
(gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.AccAddress"
|
(gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.AccAddress"
|
||||||
];
|
];
|
||||||
cosmos.base.v1beta1.Coin rewards_per_second = 2[(gogoproto.nullable) = false];
|
cosmos.base.v1beta1.Coin rewards_per_second = 2 [(gogoproto.nullable) = false];
|
||||||
option (gogoproto.goproto_stringer) = true;
|
option (gogoproto.goproto_stringer) = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,4 +68,3 @@ message Period {
|
|||||||
(gogoproto.moretags) = "yaml:\"inflation\""
|
(gogoproto.moretags) = "yaml:\"inflation\""
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ import (
|
|||||||
const (
|
const (
|
||||||
flagDenom = "denom"
|
flagDenom = "denom"
|
||||||
flagOwner = "owner"
|
flagOwner = "owner"
|
||||||
|
flagValueInStakedTokens = "value_in_staked_tokens"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetQueryCmd returns the cli query commands for the earn module
|
// GetQueryCmd returns the cli query commands for the earn module
|
||||||
@ -145,6 +146,10 @@ func queryDepositsCmd() *cobra.Command {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
valueInStakedTokens, err := cmd.Flags().GetBool(flagValueInStakedTokens)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
pageReq, err := client.ReadPageRequest(cmd.Flags())
|
pageReq, err := client.ReadPageRequest(cmd.Flags())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -156,6 +161,7 @@ func queryDepositsCmd() *cobra.Command {
|
|||||||
req := types.NewQueryDepositsRequest(
|
req := types.NewQueryDepositsRequest(
|
||||||
ownerBech,
|
ownerBech,
|
||||||
denom,
|
denom,
|
||||||
|
valueInStakedTokens,
|
||||||
pageReq,
|
pageReq,
|
||||||
)
|
)
|
||||||
res, err := queryClient.Deposits(context.Background(), req)
|
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(flagOwner, "", "(optional) filter for deposits by owner address")
|
||||||
cmd.Flags().String(flagDenom, "", "(optional) filter for deposits by vault denom")
|
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
|
return cmd
|
||||||
}
|
}
|
||||||
|
@ -296,6 +296,19 @@ func (s queryServer) getOneAccountOneVaultDeposit(
|
|||||||
return nil, status.Error(codes.NotFound, err.Error())
|
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{
|
return &types.QueryDepositsResponse{
|
||||||
Deposits: []types.DepositResponse{
|
Deposits: []types.DepositResponse{
|
||||||
{
|
{
|
||||||
@ -397,6 +410,31 @@ func (s queryServer) getOneAccountAllDeposits(
|
|||||||
return nil, status.Error(codes.InvalidArgument, err.Error())
|
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{
|
deposits = append(deposits, types.DepositResponse{
|
||||||
Depositor: depositor.String(),
|
Depositor: depositor.String(),
|
||||||
Shares: accountShare.Shares,
|
Shares: accountShare.Shares,
|
||||||
|
@ -2,6 +2,7 @@ package keeper_test
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/cosmos/cosmos-sdk/baseapp"
|
"github.com/cosmos/cosmos-sdk/baseapp"
|
||||||
@ -14,6 +15,7 @@ import (
|
|||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
"google.golang.org/grpc/status"
|
"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/keeper"
|
||||||
"github.com/kava-labs/kava/x/earn/testutil"
|
"github.com/kava-labs/kava/x/earn/testutil"
|
||||||
"github.com/kava-labs/kava/x/earn/types"
|
"github.com/kava-labs/kava/x/earn/types"
|
||||||
@ -217,32 +219,61 @@ func (suite *grpcQueryTestSuite) TestVault_NotFound() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *grpcQueryTestSuite) TestDeposits() {
|
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"
|
vault1Denom := "usdx"
|
||||||
vault2Denom := "busd"
|
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
|
// Add vaults
|
||||||
suite.CreateVault(vault1Denom, types.StrategyTypes{types.STRATEGY_TYPE_HARD}, false, nil)
|
suite.CreateVault(vault1Denom, types.StrategyTypes{types.STRATEGY_TYPE_HARD}, false, nil)
|
||||||
suite.CreateVault(vault2Denom, 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)
|
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)
|
deposit1Amount := sdk.NewInt64Coin(vault1Denom, 100)
|
||||||
deposit2Amount := sdk.NewInt64Coin(vault2Denom, 200)
|
deposit2Amount := sdk.NewInt64Coin(vault2Denom, 200)
|
||||||
deposit3Amount := sdk.NewInt64Coin(vault3Denom, 200)
|
deposit3Amount := sdk.NewInt64Coin(vault3Denom, 200)
|
||||||
|
deposit4Amount := sdk.NewInt64Coin(vault4Denom, 300)
|
||||||
|
|
||||||
// Accounts
|
// Accounts
|
||||||
acc1 := suite.CreateAccount(startBalance, 0).GetAddress()
|
acc1 := suite.CreateAccount(startBalance, 0).GetAddress()
|
||||||
acc2 := suite.CreateAccount(startBalance, 1).GetAddress()
|
acc2 := delegator
|
||||||
|
|
||||||
// Deposit into each vault from each account - 4 total deposits
|
// Deposit into each vault from each account - 4 total deposits
|
||||||
// Acc 1: usdx + busd
|
// 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)
|
err := suite.Keeper.Deposit(suite.Ctx, acc1, deposit1Amount, types.STRATEGY_TYPE_HARD)
|
||||||
suite.Require().NoError(err)
|
suite.Require().NoError(err)
|
||||||
err = suite.Keeper.Deposit(suite.Ctx, acc1, deposit2Amount, types.STRATEGY_TYPE_HARD)
|
err = suite.Keeper.Deposit(suite.Ctx, acc1, deposit2Amount, types.STRATEGY_TYPE_HARD)
|
||||||
@ -252,12 +283,14 @@ func (suite *grpcQueryTestSuite) TestDeposits() {
|
|||||||
suite.Require().NoError(err)
|
suite.Require().NoError(err)
|
||||||
err = suite.Keeper.Deposit(suite.Ctx, acc2, deposit3Amount, types.STRATEGY_TYPE_SAVINGS)
|
err = suite.Keeper.Deposit(suite.Ctx, acc2, deposit3Amount, types.STRATEGY_TYPE_SAVINGS)
|
||||||
suite.Require().NoError(err)
|
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() {
|
suite.Run("specific vault", func() {
|
||||||
// Query all deposits for account 1
|
// Query all deposits for account 1
|
||||||
res, err := suite.queryClient.Deposits(
|
res, err := suite.queryClient.Deposits(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
types.NewQueryDepositsRequest(acc1.String(), vault1Denom, nil),
|
types.NewQueryDepositsRequest(acc1.String(), vault1Denom, false, nil),
|
||||||
)
|
)
|
||||||
suite.Require().NoError(err)
|
suite.Require().NoError(err)
|
||||||
suite.Require().Len(res.Deposits, 1)
|
suite.Require().Len(res.Deposits, 1)
|
||||||
@ -282,7 +315,7 @@ func (suite *grpcQueryTestSuite) TestDeposits() {
|
|||||||
suite.Run("specific bkava vault", func() {
|
suite.Run("specific bkava vault", func() {
|
||||||
res, err := suite.queryClient.Deposits(
|
res, err := suite.queryClient.Deposits(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
types.NewQueryDepositsRequest(acc2.String(), vault3Denom, nil),
|
types.NewQueryDepositsRequest(acc2.String(), vault3Denom, false, nil),
|
||||||
)
|
)
|
||||||
suite.Require().NoError(err)
|
suite.Require().NoError(err)
|
||||||
suite.Require().Len(res.Deposits, 1)
|
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() {
|
suite.Run("invalid vault", func() {
|
||||||
_, err := suite.queryClient.Deposits(
|
_, err := suite.queryClient.Deposits(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
types.NewQueryDepositsRequest(acc1.String(), "notavaliddenom", nil),
|
types.NewQueryDepositsRequest(acc1.String(), "notavaliddenom", false, nil),
|
||||||
)
|
)
|
||||||
suite.Require().Error(err)
|
suite.Require().Error(err)
|
||||||
suite.Require().ErrorIs(err, status.Errorf(codes.NotFound, "vault for notavaliddenom not found"))
|
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
|
// Query all deposits for account 1
|
||||||
res, err := suite.queryClient.Deposits(
|
res, err := suite.queryClient.Deposits(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
types.NewQueryDepositsRequest(acc1.String(), "", nil),
|
types.NewQueryDepositsRequest(acc1.String(), "", false, nil),
|
||||||
)
|
)
|
||||||
suite.Require().NoError(err)
|
suite.Require().NoError(err)
|
||||||
suite.Require().Len(res.Deposits, 1)
|
suite.Require().Len(res.Deposits, 1)
|
||||||
@ -335,6 +391,40 @@ func (suite *grpcQueryTestSuite) TestDeposits() {
|
|||||||
res.Deposits,
|
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() {
|
func (suite *grpcQueryTestSuite) TestDeposits_NoDeposits() {
|
||||||
@ -353,7 +443,7 @@ func (suite *grpcQueryTestSuite) TestDeposits_NoDeposits() {
|
|||||||
// Query all deposits for account 1
|
// Query all deposits for account 1
|
||||||
res, err := suite.queryClient.Deposits(
|
res, err := suite.queryClient.Deposits(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
types.NewQueryDepositsRequest(acc1.String(), vault1Denom, nil),
|
types.NewQueryDepositsRequest(acc1.String(), vault1Denom, false, nil),
|
||||||
)
|
)
|
||||||
suite.Require().NoError(err)
|
suite.Require().NoError(err)
|
||||||
suite.Require().Len(res.Deposits, 1)
|
suite.Require().Len(res.Deposits, 1)
|
||||||
@ -376,7 +466,7 @@ func (suite *grpcQueryTestSuite) TestDeposits_NoDeposits() {
|
|||||||
// Query all deposits for account 1
|
// Query all deposits for account 1
|
||||||
res, err := suite.queryClient.Deposits(
|
res, err := suite.queryClient.Deposits(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
types.NewQueryDepositsRequest(acc1.String(), "", nil),
|
types.NewQueryDepositsRequest(acc1.String(), "", false, nil),
|
||||||
)
|
)
|
||||||
suite.Require().NoError(err)
|
suite.Require().NoError(err)
|
||||||
suite.Require().Empty(res.Deposits)
|
suite.Require().Empty(res.Deposits)
|
||||||
@ -386,7 +476,7 @@ func (suite *grpcQueryTestSuite) TestDeposits_NoDeposits() {
|
|||||||
func (suite *grpcQueryTestSuite) TestDeposits_NoDepositor() {
|
func (suite *grpcQueryTestSuite) TestDeposits_NoDepositor() {
|
||||||
_, err := suite.queryClient.Deposits(
|
_, err := suite.queryClient.Deposits(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
types.NewQueryDepositsRequest("", "usdx", nil),
|
types.NewQueryDepositsRequest("", "usdx", false, nil),
|
||||||
)
|
)
|
||||||
suite.Require().Error(err)
|
suite.Require().Error(err)
|
||||||
suite.Require().ErrorIs(err, status.Error(codes.InvalidArgument, "depositor is required"))
|
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() {
|
func (suite *grpcQueryTestSuite) TestDeposits_InvalidAddress() {
|
||||||
_, err := suite.queryClient.Deposits(
|
_, err := suite.queryClient.Deposits(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
types.NewQueryDepositsRequest("asdf", "usdx", nil),
|
types.NewQueryDepositsRequest("asdf", "usdx", false, nil),
|
||||||
)
|
)
|
||||||
suite.Require().Error(err)
|
suite.Require().Error(err)
|
||||||
suite.Require().ErrorIs(err, status.Error(codes.InvalidArgument, "Invalid address"))
|
suite.Require().ErrorIs(err, status.Error(codes.InvalidArgument, "Invalid address"))
|
||||||
|
|
||||||
_, err = suite.queryClient.Deposits(
|
_, err = suite.queryClient.Deposits(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
types.NewQueryDepositsRequest("asdf", "", nil),
|
types.NewQueryDepositsRequest("asdf", "", false, nil),
|
||||||
)
|
)
|
||||||
suite.Require().Error(err)
|
suite.Require().Error(err)
|
||||||
suite.Require().ErrorIs(err, status.Error(codes.InvalidArgument, "Invalid address"))
|
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
|
// Query all deposits for account 1
|
||||||
res, err := suite.queryClient.Deposits(
|
res, err := suite.queryClient.Deposits(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
types.NewQueryDepositsRequest(address1.String(), "bkava", nil),
|
types.NewQueryDepositsRequest(address1.String(), "bkava", false, nil),
|
||||||
)
|
)
|
||||||
suite.Require().NoError(err)
|
suite.Require().NoError(err)
|
||||||
suite.Require().Len(res.Deposits, 1)
|
suite.Require().Len(res.Deposits, 1)
|
||||||
@ -475,7 +565,7 @@ func (suite *grpcQueryTestSuite) TestDeposits_bKava() {
|
|||||||
// Query all deposits for account 1
|
// Query all deposits for account 1
|
||||||
res, err := suite.queryClient.Deposits(
|
res, err := suite.queryClient.Deposits(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
types.NewQueryDepositsRequest(address1.String(), "bkava", nil),
|
types.NewQueryDepositsRequest(address1.String(), "bkava", false, nil),
|
||||||
)
|
)
|
||||||
suite.Require().NoError(err)
|
suite.Require().NoError(err)
|
||||||
suite.Require().Len(res.Deposits, 1)
|
suite.Require().Len(res.Deposits, 1)
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
|
||||||
"github.com/kava-labs/kava/app"
|
"github.com/kava-labs/kava/app"
|
||||||
"github.com/kava-labs/kava/x/earn/keeper"
|
"github.com/kava-labs/kava/x/earn/keeper"
|
||||||
"github.com/kava-labs/kava/x/earn/types"
|
"github.com/kava-labs/kava/x/earn/types"
|
||||||
@ -22,6 +23,8 @@ import (
|
|||||||
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
|
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
|
||||||
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
|
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
|
||||||
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
|
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"
|
"github.com/stretchr/testify/suite"
|
||||||
abci "github.com/tendermint/tendermint/abci/types"
|
abci "github.com/tendermint/tendermint/abci/types"
|
||||||
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
|
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
|
||||||
@ -160,6 +163,13 @@ func (suite *Suite) SetupTest() {
|
|||||||
nil,
|
nil,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
stakingParams := stakingtypes.DefaultParams()
|
||||||
|
stakingParams.BondDenom = "ukava"
|
||||||
|
|
||||||
|
stakingGs := stakingtypes.GenesisState{
|
||||||
|
Params: stakingParams,
|
||||||
|
}
|
||||||
|
|
||||||
tApp := app.NewTestApp()
|
tApp := app.NewTestApp()
|
||||||
|
|
||||||
tApp.InitializeFromGenesisStates(
|
tApp.InitializeFromGenesisStates(
|
||||||
@ -167,6 +177,7 @@ func (suite *Suite) SetupTest() {
|
|||||||
pricefeedtypes.ModuleName: tApp.AppCodec().MustMarshalJSON(&pricefeedGS),
|
pricefeedtypes.ModuleName: tApp.AppCodec().MustMarshalJSON(&pricefeedGS),
|
||||||
hardtypes.ModuleName: tApp.AppCodec().MustMarshalJSON(&hardGS),
|
hardtypes.ModuleName: tApp.AppCodec().MustMarshalJSON(&hardGS),
|
||||||
savingstypes.ModuleName: tApp.AppCodec().MustMarshalJSON(&savingsGS),
|
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
|
// EventsContains asserts that the expected event is in the provided events
|
||||||
|
@ -23,11 +23,13 @@ func NewQueryVaultRequest(denom string) *QueryVaultRequest {
|
|||||||
func NewQueryDepositsRequest(
|
func NewQueryDepositsRequest(
|
||||||
depositor string,
|
depositor string,
|
||||||
denom string,
|
denom string,
|
||||||
|
ValueInStakedTokens bool,
|
||||||
pagination *query.PageRequest,
|
pagination *query.PageRequest,
|
||||||
) *QueryDepositsRequest {
|
) *QueryDepositsRequest {
|
||||||
return &QueryDepositsRequest{
|
return &QueryDepositsRequest{
|
||||||
Depositor: depositor,
|
Depositor: depositor,
|
||||||
Denom: denom,
|
Denom: denom,
|
||||||
|
ValueInStakedTokens: ValueInStakedTokens,
|
||||||
Pagination: pagination,
|
Pagination: pagination,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -323,8 +323,10 @@ type QueryDepositsRequest struct {
|
|||||||
Depositor string `protobuf:"bytes,1,opt,name=depositor,proto3" json:"depositor,omitempty"`
|
Depositor string `protobuf:"bytes,1,opt,name=depositor,proto3" json:"depositor,omitempty"`
|
||||||
// denom optionally filters deposits by vault denom
|
// denom optionally filters deposits by vault denom
|
||||||
Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"`
|
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 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{} }
|
func (m *QueryDepositsRequest) Reset() { *m = QueryDepositsRequest{} }
|
||||||
@ -462,61 +464,63 @@ func init() {
|
|||||||
func init() { proto.RegisterFile("kava/earn/v1beta1/query.proto", fileDescriptor_63f8dee2f3192a6b) }
|
func init() { proto.RegisterFile("kava/earn/v1beta1/query.proto", fileDescriptor_63f8dee2f3192a6b) }
|
||||||
|
|
||||||
var fileDescriptor_63f8dee2f3192a6b = []byte{
|
var fileDescriptor_63f8dee2f3192a6b = []byte{
|
||||||
// 855 bytes of a gzipped FileDescriptorProto
|
// 883 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xcd, 0x4f, 0x1b, 0x47,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x4b, 0x6f, 0xeb, 0x44,
|
||||||
0x14, 0xf7, 0xda, 0xd8, 0x82, 0x71, 0xa1, 0xf5, 0xe0, 0x4a, 0xb6, 0x29, 0x6b, 0xb3, 0x14, 0x58,
|
0x14, 0x8e, 0xf3, 0x52, 0x3b, 0xe1, 0x5e, 0xc8, 0x34, 0xa0, 0x24, 0x97, 0x3a, 0xa9, 0x2f, 0xb7,
|
||||||
0x2a, 0x79, 0xb7, 0xb8, 0x52, 0x7b, 0x41, 0x95, 0xea, 0xa2, 0x22, 0x7a, 0xa8, 0xe8, 0xd2, 0x72,
|
0xd7, 0x45, 0x8a, 0x4d, 0x53, 0x09, 0x36, 0x15, 0x12, 0xa1, 0xa2, 0x2a, 0x0b, 0x54, 0x9c, 0xd2,
|
||||||
0xa8, 0x54, 0x59, 0x63, 0x3c, 0x5a, 0x56, 0xd8, 0x3b, 0x66, 0x67, 0xec, 0x96, 0x56, 0x51, 0x24,
|
0x05, 0x12, 0xb2, 0x26, 0xcd, 0xc8, 0xb5, 0x92, 0x78, 0x52, 0xcf, 0x24, 0x50, 0x10, 0x42, 0xaa,
|
||||||
0xa4, 0xdc, 0x23, 0xe5, 0x7f, 0xc8, 0x01, 0xe5, 0xc8, 0x1f, 0xc1, 0x11, 0x91, 0x4b, 0x94, 0x03,
|
0xc4, 0x1e, 0x89, 0xff, 0xc0, 0xa2, 0xeb, 0xfe, 0x88, 0x2e, 0xab, 0xb2, 0x41, 0x2c, 0x5a, 0xda,
|
||||||
0x24, 0x90, 0x73, 0xce, 0x39, 0x46, 0xf3, 0xb1, 0xfe, 0x36, 0x46, 0x39, 0xc1, 0xbe, 0x8f, 0xdf,
|
0xb2, 0x66, 0xcd, 0x12, 0xcd, 0xc3, 0x79, 0xa7, 0xa9, 0x58, 0x25, 0x73, 0x1e, 0xdf, 0xf7, 0x9d,
|
||||||
0xef, 0xf7, 0xde, 0xbc, 0xf7, 0x0c, 0x16, 0x8f, 0x50, 0x1b, 0xd9, 0x18, 0x05, 0xbe, 0xdd, 0xde,
|
0x99, 0x73, 0x8e, 0xc1, 0x6a, 0x0b, 0xf5, 0x91, 0x8d, 0x51, 0x18, 0xd8, 0xfd, 0xcd, 0x06, 0x66,
|
||||||
0xa8, 0x62, 0x86, 0x36, 0xec, 0xe3, 0x16, 0x0e, 0x4e, 0xac, 0x66, 0x40, 0x18, 0x81, 0x29, 0xee,
|
0x68, 0xd3, 0x3e, 0xe9, 0xe1, 0xf0, 0xd4, 0xea, 0x86, 0x84, 0x11, 0x98, 0xe5, 0x6e, 0x8b, 0xbb,
|
||||||
0xb6, 0xb8, 0xdb, 0x52, 0xee, 0x5c, 0xf6, 0x80, 0xd0, 0x06, 0xa1, 0x15, 0x11, 0x60, 0xcb, 0x0f,
|
0x2d, 0xe5, 0x2e, 0x16, 0x8e, 0x08, 0xed, 0x10, 0xea, 0x8a, 0x00, 0x5b, 0x1e, 0x64, 0x74, 0xf1,
|
||||||
0x19, 0x9d, 0xfb, 0x46, 0x7e, 0xd9, 0x55, 0x44, 0xb1, 0x84, 0xe9, 0x80, 0x36, 0x91, 0xeb, 0xf9,
|
0x7d, 0x79, 0xb2, 0x1b, 0x88, 0x62, 0x09, 0x33, 0x00, 0xed, 0x22, 0xcf, 0x0f, 0x10, 0xf3, 0x49,
|
||||||
0x88, 0x79, 0xc4, 0x57, 0xb1, 0x7a, 0x6f, 0x6c, 0x18, 0x75, 0x40, 0xbc, 0xd0, 0x9f, 0x76, 0x89,
|
0xa0, 0x62, 0xf5, 0xd1, 0xd8, 0x28, 0xea, 0x88, 0xf8, 0x91, 0x3f, 0xe7, 0x11, 0x8f, 0x48, 0x0e,
|
||||||
0x4b, 0x24, 0x07, 0xff, 0x4f, 0x59, 0xbf, 0x72, 0x09, 0x71, 0xeb, 0xd8, 0x46, 0x4d, 0xcf, 0x46,
|
0xfe, 0x4f, 0x59, 0xdf, 0xf5, 0x08, 0xf1, 0xda, 0xd8, 0x46, 0x5d, 0xdf, 0x46, 0x41, 0x40, 0x98,
|
||||||
0xbe, 0x4f, 0x98, 0x80, 0x0c, 0xf9, 0xf5, 0xe1, 0x62, 0x9a, 0x28, 0x40, 0x8d, 0xd0, 0x5f, 0x18,
|
0x80, 0x8c, 0xf8, 0xf5, 0xe9, 0x62, 0xba, 0x28, 0x44, 0x9d, 0xc8, 0x5f, 0x9e, 0xf6, 0x53, 0x16,
|
||||||
0xf6, 0x53, 0x16, 0x20, 0x86, 0x5d, 0x55, 0x6f, 0x6e, 0x44, 0x3b, 0xda, 0xa8, 0x55, 0x67, 0xd2,
|
0x22, 0x86, 0x3d, 0x55, 0x6f, 0x71, 0xc6, 0x75, 0xf4, 0x51, 0xaf, 0xcd, 0xa4, 0xdb, 0xc8, 0x01,
|
||||||
0x6d, 0xa4, 0x01, 0xfc, 0x9d, 0x97, 0xb5, 0x2b, 0x50, 0x1d, 0x7c, 0xdc, 0xc2, 0x94, 0x19, 0xbf,
|
0xf8, 0x25, 0x2f, 0x6b, 0x5f, 0xa0, 0x3a, 0xf8, 0xa4, 0x87, 0x29, 0x33, 0xbe, 0x00, 0x2b, 0x63,
|
||||||
0x81, 0xf9, 0x3e, 0x2b, 0x6d, 0x12, 0x9f, 0x62, 0xf8, 0x03, 0x48, 0x48, 0xf6, 0x8c, 0x56, 0xd0,
|
0x56, 0xda, 0x25, 0x01, 0xc5, 0xf0, 0x23, 0x90, 0x96, 0xec, 0x79, 0xad, 0xac, 0x99, 0x99, 0x6a,
|
||||||
0xcc, 0x64, 0x29, 0x6b, 0x0d, 0x35, 0xd3, 0x92, 0x29, 0xe5, 0xa9, 0x8b, 0xeb, 0x7c, 0xc4, 0x51,
|
0xc1, 0x9a, 0xba, 0x4c, 0x4b, 0xa6, 0xd4, 0x92, 0x97, 0x37, 0xa5, 0x98, 0xa3, 0xc2, 0x07, 0x2c,
|
||||||
0xe1, 0x1d, 0x96, 0x7d, 0xce, 0xdc, 0x61, 0xf9, 0x53, 0xb1, 0x84, 0x56, 0xc5, 0xf2, 0x23, 0x48,
|
0x87, 0x9c, 0x79, 0xc0, 0xf2, 0x95, 0x62, 0x89, 0xac, 0x8a, 0xe5, 0x63, 0x90, 0x16, 0x0a, 0x39,
|
||||||
0x08, 0x85, 0x9c, 0x25, 0x66, 0x26, 0x4b, 0x85, 0x11, 0x2c, 0x22, 0x25, 0xcc, 0x08, 0xc9, 0x64,
|
0x4b, 0xc2, 0xcc, 0x54, 0xcb, 0x33, 0x58, 0x44, 0x4a, 0x94, 0x11, 0x91, 0xc9, 0x2c, 0x63, 0x03,
|
||||||
0x96, 0xb1, 0x0e, 0x52, 0x5d, 0x58, 0xc5, 0x05, 0xd3, 0x20, 0x5e, 0xc3, 0x3e, 0x69, 0x08, 0xe5,
|
0x64, 0x87, 0xb0, 0x8a, 0x0b, 0xe6, 0x40, 0xaa, 0x89, 0x03, 0xd2, 0x11, 0xca, 0x97, 0x1d, 0x79,
|
||||||
0x33, 0x8e, 0xfc, 0x30, 0x9c, 0x5e, 0x5d, 0x1d, 0x01, 0x9b, 0x20, 0x2e, 0xa0, 0x54, 0x95, 0x0f,
|
0x30, 0x9c, 0x51, 0x5d, 0x03, 0x01, 0xdb, 0x20, 0x25, 0xa0, 0x54, 0x95, 0x4f, 0xe5, 0x97, 0x49,
|
||||||
0xe5, 0x97, 0x49, 0xc6, 0xfb, 0x28, 0x98, 0xed, 0xc7, 0x1b, 0xc9, 0x0d, 0x1d, 0x00, 0xd4, 0x53,
|
0xc6, 0x3f, 0x71, 0xf0, 0x6c, 0x1c, 0x6f, 0x26, 0x37, 0x74, 0x00, 0x50, 0x4f, 0xe5, 0x63, 0x9a,
|
||||||
0x79, 0x98, 0x66, 0xa2, 0x85, 0x98, 0x39, 0x57, 0xca, 0x8f, 0xa0, 0xda, 0x53, 0xef, 0xf9, 0xc7,
|
0x8f, 0x97, 0x13, 0xe6, 0xf3, 0x6a, 0x69, 0x06, 0x55, 0x5d, 0xbd, 0xe7, 0xc1, 0x69, 0x17, 0xd7,
|
||||||
0x49, 0x13, 0x97, 0x53, 0x67, 0x37, 0xf9, 0xd9, 0x5e, 0x0b, 0x75, 0x7a, 0x50, 0xa0, 0x09, 0xbe,
|
0xb2, 0xe7, 0xb7, 0xa5, 0x67, 0xa3, 0x16, 0xea, 0x8c, 0xa0, 0x40, 0x13, 0xbc, 0xe5, 0xf3, 0x3e,
|
||||||
0xf0, 0xf8, 0x1c, 0x7b, 0x6d, 0xc4, 0x70, 0x45, 0x16, 0x11, 0x2b, 0x68, 0xe6, 0xb4, 0x33, 0xe7,
|
0xf6, 0xfb, 0x88, 0x61, 0x57, 0x16, 0x91, 0x28, 0x6b, 0xe6, 0x92, 0xf3, 0xdc, 0xa7, 0xfb, 0xd2,
|
||||||
0xd1, 0x5d, 0x69, 0x16, 0xda, 0xe0, 0x36, 0x80, 0xa8, 0x5e, 0x27, 0xff, 0xe0, 0x5a, 0xa5, 0x86,
|
0x2c, 0xb4, 0xc1, 0x5d, 0x00, 0x51, 0xbb, 0x4d, 0xbe, 0xc5, 0x4d, 0xb7, 0x89, 0xbb, 0x84, 0xfa,
|
||||||
0x9b, 0x84, 0x7a, 0x8c, 0x04, 0x34, 0x33, 0x55, 0x88, 0x99, 0x33, 0xe5, 0xcc, 0xd5, 0x79, 0x31,
|
0x8c, 0x84, 0x34, 0x9f, 0x2c, 0x27, 0xcc, 0xe5, 0x5a, 0xfe, 0xfa, 0xa2, 0x92, 0x53, 0x63, 0xf0,
|
||||||
0xad, 0xd6, 0xe0, 0xa7, 0x5a, 0x2d, 0xc0, 0x94, 0xee, 0xb1, 0xc0, 0xf3, 0x5d, 0x27, 0xa5, 0x72,
|
0x49, 0xb3, 0x19, 0x62, 0x4a, 0xeb, 0x2c, 0xf4, 0x03, 0xcf, 0xc9, 0xaa, 0x9c, 0x9d, 0x41, 0x0a,
|
||||||
0xb6, 0x3a, 0x29, 0x70, 0x09, 0x7c, 0xc6, 0x08, 0x43, 0xf5, 0x0a, 0x3d, 0x44, 0x01, 0xa6, 0x99,
|
0x5c, 0x03, 0x6f, 0x30, 0xc2, 0x50, 0xdb, 0xa5, 0xc7, 0x28, 0xc4, 0x34, 0x9f, 0x12, 0x35, 0x66,
|
||||||
0xb8, 0xa8, 0x31, 0x29, 0x6c, 0x7b, 0xc2, 0x04, 0xff, 0x06, 0xf2, 0xb3, 0xd2, 0x46, 0xf5, 0x16,
|
0x84, 0xad, 0x2e, 0x4c, 0xf0, 0x1b, 0x20, 0x8f, 0x6e, 0x1f, 0xb5, 0x7b, 0x38, 0x9f, 0xe6, 0x11,
|
||||||
0xce, 0x24, 0x78, 0x44, 0x79, 0x93, 0xf7, 0xec, 0xf5, 0x75, 0x7e, 0xd5, 0xf5, 0xd8, 0x61, 0xab,
|
0xb5, 0x6d, 0x7e, 0x67, 0x7f, 0xde, 0x94, 0xd6, 0x3d, 0x9f, 0x1d, 0xf7, 0x1a, 0xd6, 0x11, 0xe9,
|
||||||
0x6a, 0x1d, 0x90, 0x86, 0x5a, 0x3d, 0xf5, 0xa7, 0x48, 0x6b, 0x47, 0x36, 0xe3, 0x25, 0x5a, 0x3b,
|
0xa8, 0xd1, 0x53, 0x3f, 0x15, 0xda, 0x6c, 0xd9, 0x8c, 0x97, 0x68, 0xed, 0x05, 0xec, 0xfa, 0xa2,
|
||||||
0x3e, 0xbb, 0x3a, 0x2f, 0x02, 0x25, 0x69, 0xc7, 0x67, 0x0e, 0x10, 0x80, 0xfb, 0x1c, 0xcf, 0x78,
|
0x02, 0x94, 0xa4, 0xbd, 0x80, 0x39, 0x40, 0x00, 0x1e, 0x72, 0x3c, 0xe3, 0x4e, 0x03, 0x39, 0xf1,
|
||||||
0xa1, 0x81, 0xb4, 0x78, 0x45, 0xa5, 0x2a, 0x9c, 0x2f, 0xf8, 0x3d, 0x98, 0xe9, 0xd4, 0x26, 0x7b,
|
0x8a, 0x4a, 0x55, 0xd4, 0x5f, 0xf0, 0x43, 0xb0, 0x3c, 0xa8, 0x4d, 0xde, 0xfd, 0x23, 0xa5, 0x0d,
|
||||||
0x7f, 0x4f, 0x69, 0xdd, 0xd0, 0xee, 0x7b, 0x45, 0x7b, 0xdf, 0xeb, 0x17, 0x00, 0xba, 0x2b, 0x2f,
|
0x43, 0x87, 0xef, 0x15, 0x1f, 0x7d, 0xaf, 0x2d, 0xf0, 0x8e, 0xd0, 0xef, 0xfa, 0x81, 0x4b, 0x19,
|
||||||
0xba, 0x9a, 0x2c, 0xad, 0x5a, 0x0a, 0x8b, 0xef, 0xbc, 0x25, 0xcf, 0x4c, 0x77, 0x11, 0x5c, 0xac,
|
0x6a, 0xe1, 0xa6, 0xcb, 0x48, 0x0b, 0x07, 0x54, 0xdd, 0xf0, 0x8a, 0xf0, 0xee, 0x05, 0x75, 0xe1,
|
||||||
0x94, 0x38, 0x3d, 0x99, 0xc6, 0x73, 0x0d, 0x7c, 0x39, 0x20, 0x57, 0xcd, 0xc9, 0x16, 0x98, 0x56,
|
0x3b, 0x10, 0x2e, 0xf8, 0x19, 0x00, 0xc3, 0x3d, 0x91, 0x4f, 0x8a, 0x7e, 0x5a, 0xb7, 0x94, 0x00,
|
||||||
0x22, 0xc2, 0xd1, 0x37, 0x46, 0xcc, 0x83, 0x4a, 0x1b, 0x18, 0xbe, 0x4e, 0x26, 0xdc, 0xee, 0xd3,
|
0xbe, 0x28, 0x2c, 0xb9, 0x9b, 0x86, 0xd3, 0xe3, 0x61, 0x25, 0xdf, 0x19, 0xc9, 0x34, 0x7e, 0xd3,
|
||||||
0x19, 0x15, 0x3a, 0xd7, 0x26, 0xea, 0x94, 0x60, 0x7d, 0x42, 0x3f, 0x68, 0xe0, 0xf3, 0x01, 0xb2,
|
0xc0, 0xdb, 0x13, 0x35, 0xaa, 0xe6, 0xda, 0x01, 0x4b, 0x4a, 0x79, 0x34, 0x2f, 0xc6, 0x8c, 0x26,
|
||||||
0x4f, 0x6e, 0xe9, 0xaf, 0x20, 0xa1, 0xe6, 0x23, 0x2a, 0x0a, 0x5b, 0x1c, 0xb7, 0x53, 0x62, 0x64,
|
0x52, 0x69, 0x13, 0x1d, 0x3b, 0xc8, 0x84, 0xbb, 0x63, 0x3a, 0xe3, 0x42, 0xe7, 0xeb, 0x85, 0x3a,
|
||||||
0xca, 0xf3, 0xbc, 0xa6, 0xb3, 0x9b, 0x7c, 0xb2, 0x6b, 0xa3, 0x8e, 0x42, 0x80, 0x88, 0xaf, 0x27,
|
0x25, 0xd8, 0x98, 0xd0, 0x7f, 0x35, 0xf0, 0xe6, 0x04, 0xd9, 0xff, 0x7e, 0x87, 0xcf, 0x41, 0x5a,
|
||||||
0x1f, 0xa4, 0x98, 0x80, 0xca, 0xf6, 0xd5, 0x16, 0x82, 0xfd, 0x4c, 0x3c, 0xbf, 0xfc, 0xad, 0x82,
|
0x35, 0x55, 0x5c, 0x14, 0xb6, 0x3a, 0x6f, 0x10, 0x45, 0x9f, 0xd5, 0x56, 0x78, 0x4d, 0xe7, 0xb7,
|
||||||
0x31, 0x1f, 0x30, 0x63, 0x3c, 0x81, 0x3a, 0x12, 0xb9, 0xf4, 0x64, 0x0a, 0xc4, 0xc5, 0x1b, 0xc1,
|
0xa5, 0xcc, 0xd0, 0x46, 0x1d, 0x85, 0x00, 0x11, 0x9f, 0x69, 0xde, 0x7d, 0x09, 0x01, 0x55, 0x18,
|
||||||
0xff, 0x40, 0x42, 0x5e, 0x34, 0xb8, 0x32, 0x42, 0xf2, 0xf0, 0xe9, 0xcc, 0xad, 0x4e, 0x0a, 0x93,
|
0xab, 0x2d, 0x02, 0xfb, 0x94, 0xf8, 0x41, 0xed, 0x03, 0x05, 0x63, 0x3e, 0xa1, 0x31, 0x79, 0x02,
|
||||||
0x9d, 0x34, 0x96, 0x4e, 0x5f, 0xbe, 0x7b, 0x16, 0x5d, 0x80, 0x59, 0x7b, 0xdc, 0x89, 0xe7, 0xdc,
|
0x75, 0x24, 0x72, 0xf5, 0xe7, 0x24, 0x48, 0x89, 0x37, 0x82, 0xdf, 0x83, 0xb4, 0x5c, 0x83, 0xf0,
|
||||||
0xf2, 0x34, 0x8e, 0xe7, 0xee, 0x3b, 0xa8, 0xe3, 0xb9, 0xfb, 0x2f, 0xec, 0xbd, 0xdc, 0xf2, 0x88,
|
0xd5, 0x0c, 0xc9, 0xd3, 0xfb, 0xb6, 0xb8, 0xbe, 0x28, 0x4c, 0xde, 0xa4, 0xb1, 0x76, 0xf6, 0xfb,
|
||||||
0xc2, 0xc7, 0x20, 0x2e, 0x0f, 0xc5, 0xd7, 0xf7, 0x62, 0x86, 0xcc, 0x2b, 0x13, 0xa2, 0x14, 0xf1,
|
0xdf, 0xbf, 0xc6, 0x5f, 0xc0, 0x82, 0x3d, 0xef, 0xbb, 0xc0, 0xb9, 0xe5, 0x3e, 0x9d, 0xcf, 0x3d,
|
||||||
0xba, 0x20, 0x5e, 0x86, 0x4b, 0x63, 0x89, 0xed, 0xff, 0xc5, 0xb6, 0x3d, 0x82, 0xa7, 0x1a, 0x98,
|
0xb6, 0x85, 0xe7, 0x73, 0x8f, 0xaf, 0xe5, 0x47, 0xb9, 0xe5, 0xe6, 0x85, 0x3f, 0x81, 0x94, 0xdc,
|
||||||
0x0e, 0x37, 0x04, 0xae, 0x8d, 0x83, 0x1f, 0x58, 0xf9, 0x9c, 0x39, 0x39, 0x50, 0x49, 0x59, 0x16,
|
0x2e, 0xef, 0x3d, 0x8a, 0x19, 0x31, 0xbf, 0x5a, 0x10, 0xa5, 0x88, 0x37, 0x04, 0xf1, 0x4b, 0xb8,
|
||||||
0x52, 0x16, 0xe1, 0xc2, 0x08, 0x29, 0xe1, 0x2e, 0x95, 0xb7, 0x2e, 0xde, 0xea, 0x91, 0x8b, 0x5b,
|
0x36, 0x97, 0xd8, 0xfe, 0x41, 0x8c, 0xe8, 0x8f, 0xf0, 0x4c, 0x03, 0x4b, 0xd1, 0x84, 0xc0, 0xd7,
|
||||||
0x5d, 0xbb, 0xbc, 0xd5, 0xb5, 0x37, 0xb7, 0xba, 0xf6, 0xf4, 0x4e, 0x8f, 0x5c, 0xde, 0xe9, 0x91,
|
0xf3, 0xe0, 0x27, 0xf6, 0x44, 0xd1, 0x5c, 0x1c, 0xa8, 0xa4, 0xbc, 0x14, 0x52, 0x56, 0xe1, 0x8b,
|
||||||
0x57, 0x77, 0x7a, 0xe4, 0xaf, 0xde, 0xd3, 0xc5, 0x41, 0x8a, 0x75, 0x54, 0xa5, 0x12, 0xee, 0x5f,
|
0x19, 0x52, 0xa2, 0x59, 0xaa, 0xed, 0x5c, 0xde, 0xe9, 0xb1, 0xcb, 0x7b, 0x5d, 0xbb, 0xba, 0xd7,
|
||||||
0x09, 0x28, 0x46, 0xab, 0x9a, 0x10, 0x3f, 0xb5, 0xdf, 0x7d, 0x0c, 0x00, 0x00, 0xff, 0xff, 0xf4,
|
0xb5, 0xbf, 0xee, 0x75, 0xed, 0x97, 0x07, 0x3d, 0x76, 0xf5, 0xa0, 0xc7, 0xfe, 0x78, 0xd0, 0x63,
|
||||||
0x79, 0x11, 0x40, 0x9a, 0x08, 0x00, 0x00,
|
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.
|
// 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 = encodeVarintQuery(dAtA, i, uint64(size))
|
||||||
}
|
}
|
||||||
i--
|
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 {
|
if len(m.Denom) > 0 {
|
||||||
i -= len(m.Denom)
|
i -= len(m.Denom)
|
||||||
@ -1262,6 +1276,9 @@ func (m *QueryDepositsRequest) Size() (n int) {
|
|||||||
if l > 0 {
|
if l > 0 {
|
||||||
n += 1 + l + sovQuery(uint64(l))
|
n += 1 + l + sovQuery(uint64(l))
|
||||||
}
|
}
|
||||||
|
if m.ValueInStakedTokens {
|
||||||
|
n += 2
|
||||||
|
}
|
||||||
if m.Pagination != nil {
|
if m.Pagination != nil {
|
||||||
l = m.Pagination.Size()
|
l = m.Pagination.Size()
|
||||||
n += 1 + l + sovQuery(uint64(l))
|
n += 1 + l + sovQuery(uint64(l))
|
||||||
@ -2114,6 +2131,26 @@ func (m *QueryDepositsRequest) Unmarshal(dAtA []byte) error {
|
|||||||
m.Denom = string(dAtA[iNdEx:postIndex])
|
m.Denom = string(dAtA[iNdEx:postIndex])
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
case 3:
|
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 {
|
if wireType != 2 {
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType)
|
return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user