feat: (x/bank) add spendable balances cmd (#14045)

This commit is contained in:
Facundo Medica 2023-01-05 16:58:41 -03:00 committed by GitHub
parent 5d6236603c
commit 6ac0c3628e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 2403 additions and 446 deletions

View File

@ -39,9 +39,10 @@ Ref: https://keepachangelog.com/en/1.0.0/
### Features
* (x/bank) [#14045](https://github.com/cosmos/cosmos-sdk/pull/14045) Add CLI command `spendable-balances`, which also accepts the flag `--denom`.
* (x/slashing, x/staking) [#14363](https://github.com/cosmos/cosmos-sdk/pull/14363) Add the infraction a validator commited type as an argument to a `SlashWithInfractionReason` keeper method.
* (client) [#13867](https://github.com/cosmos/cosmos-sdk/pull/13867/) Wire AutoCLI commands with SimApp.
* (x/distribution) [#14322](https://github.com/cosmos/cosmos-sdk/pull/14322) Introduce a new gRPC message handler, `DepositValidatorRewardsPool`, that allows explicit funding of a validator's reward pool.
* (x/slashing, x/staking) [#14363](https://github.com/cosmos/cosmos-sdk/pull/14363) Add the infraction a validator committed type as an argument to a `SlashWithInfractionReason` keeper method.
* (x/evidence) [#13740](https://github.com/cosmos/cosmos-sdk/pull/13740) Add new proto field `hash` of type `string` to `QueryEvidenceRequest` which helps to decode the hash properly while using query API.
* (core) [#13306](https://github.com/cosmos/cosmos-sdk/pull/13306) Add a `FormatCoins` function to in `core/coins` to format sdk Coins following the Value Renderers spec.
* (math) [#13306](https://github.com/cosmos/cosmos-sdk/pull/13306) Add `FormatInt` and `FormatDec` functions in `math` to format integers and decimals following the Value Renderers spec.

File diff suppressed because it is too large Load Diff

View File

@ -29,7 +29,7 @@ type QueryClient interface {
// When called from another module, this query might consume a high amount of
// gas if the pagination field is incorrectly set.
AllBalances(ctx context.Context, in *QueryAllBalancesRequest, opts ...grpc.CallOption) (*QueryAllBalancesResponse, error)
// SpendableBalances queries the spenable balance of all coins for a single
// SpendableBalances queries the spendable balance of all coins for a single
// account.
//
// When called from another module, this query might consume a high amount of
@ -37,6 +37,14 @@ type QueryClient interface {
//
// Since: cosmos-sdk 0.46
SpendableBalances(ctx context.Context, in *QuerySpendableBalancesRequest, opts ...grpc.CallOption) (*QuerySpendableBalancesResponse, error)
// SpendableBalanceByDenom queries the spendable balance of a single denom for
// a single account.
//
// When called from another module, this query might consume a high amount of
// gas if the pagination field is incorrectly set.
//
// Since: cosmos-sdk 0.47
SpendableBalanceByDenom(ctx context.Context, in *QuerySpendableBalanceByDenomRequest, opts ...grpc.CallOption) (*QuerySpendableBalanceByDenomResponse, error)
// TotalSupply queries the total supply of all coins.
//
// When called from another module, this query might consume a high amount of
@ -107,6 +115,15 @@ func (c *queryClient) SpendableBalances(ctx context.Context, in *QuerySpendableB
return out, nil
}
func (c *queryClient) SpendableBalanceByDenom(ctx context.Context, in *QuerySpendableBalanceByDenomRequest, opts ...grpc.CallOption) (*QuerySpendableBalanceByDenomResponse, error) {
out := new(QuerySpendableBalanceByDenomResponse)
err := c.cc.Invoke(ctx, "/cosmos.bank.v1beta1.Query/SpendableBalanceByDenom", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *queryClient) TotalSupply(ctx context.Context, in *QueryTotalSupplyRequest, opts ...grpc.CallOption) (*QueryTotalSupplyResponse, error) {
out := new(QueryTotalSupplyResponse)
err := c.cc.Invoke(ctx, "/cosmos.bank.v1beta1.Query/TotalSupply", in, out, opts...)
@ -181,7 +198,7 @@ type QueryServer interface {
// When called from another module, this query might consume a high amount of
// gas if the pagination field is incorrectly set.
AllBalances(context.Context, *QueryAllBalancesRequest) (*QueryAllBalancesResponse, error)
// SpendableBalances queries the spenable balance of all coins for a single
// SpendableBalances queries the spendable balance of all coins for a single
// account.
//
// When called from another module, this query might consume a high amount of
@ -189,6 +206,14 @@ type QueryServer interface {
//
// Since: cosmos-sdk 0.46
SpendableBalances(context.Context, *QuerySpendableBalancesRequest) (*QuerySpendableBalancesResponse, error)
// SpendableBalanceByDenom queries the spendable balance of a single denom for
// a single account.
//
// When called from another module, this query might consume a high amount of
// gas if the pagination field is incorrectly set.
//
// Since: cosmos-sdk 0.47
SpendableBalanceByDenom(context.Context, *QuerySpendableBalanceByDenomRequest) (*QuerySpendableBalanceByDenomResponse, error)
// TotalSupply queries the total supply of all coins.
//
// When called from another module, this query might consume a high amount of
@ -238,6 +263,9 @@ func (UnimplementedQueryServer) AllBalances(context.Context, *QueryAllBalancesRe
func (UnimplementedQueryServer) SpendableBalances(context.Context, *QuerySpendableBalancesRequest) (*QuerySpendableBalancesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SpendableBalances not implemented")
}
func (UnimplementedQueryServer) SpendableBalanceByDenom(context.Context, *QuerySpendableBalanceByDenomRequest) (*QuerySpendableBalanceByDenomResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SpendableBalanceByDenom not implemented")
}
func (UnimplementedQueryServer) TotalSupply(context.Context, *QueryTotalSupplyRequest) (*QueryTotalSupplyResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method TotalSupply not implemented")
}
@ -326,6 +354,24 @@ func _Query_SpendableBalances_Handler(srv interface{}, ctx context.Context, dec
return interceptor(ctx, in, info, handler)
}
func _Query_SpendableBalanceByDenom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QuerySpendableBalanceByDenomRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(QueryServer).SpendableBalanceByDenom(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/cosmos.bank.v1beta1.Query/SpendableBalanceByDenom",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(QueryServer).SpendableBalanceByDenom(ctx, req.(*QuerySpendableBalanceByDenomRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Query_TotalSupply_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryTotalSupplyRequest)
if err := dec(in); err != nil {
@ -471,6 +517,10 @@ var Query_ServiceDesc = grpc.ServiceDesc{
MethodName: "SpendableBalances",
Handler: _Query_SpendableBalances_Handler,
},
{
MethodName: "SpendableBalanceByDenom",
Handler: _Query_SpendableBalanceByDenom_Handler,
},
{
MethodName: "TotalSupply",
Handler: _Query_TotalSupply_Handler,

View File

@ -29,7 +29,7 @@ service Query {
option (google.api.http).get = "/cosmos/bank/v1beta1/balances/{address}";
}
// SpendableBalances queries the spenable balance of all coins for a single
// SpendableBalances queries the spendable balance of all coins for a single
// account.
//
// When called from another module, this query might consume a high amount of
@ -41,6 +41,18 @@ service Query {
option (google.api.http).get = "/cosmos/bank/v1beta1/spendable_balances/{address}";
}
// SpendableBalanceByDenom queries the spendable balance of a single denom for
// a single account.
//
// When called from another module, this query might consume a high amount of
// gas if the pagination field is incorrectly set.
//
// Since: cosmos-sdk 0.47
rpc SpendableBalanceByDenom(QuerySpendableBalanceByDenomRequest) returns (QuerySpendableBalanceByDenomResponse) {
option (cosmos.query.v1.module_query_safe) = true;
option (google.api.http).get = "/cosmos/bank/v1beta1/spendable_balances/{address}/by_denom";
}
// TotalSupply queries the total supply of all coins.
//
// When called from another module, this query might consume a high amount of
@ -178,6 +190,31 @@ message QuerySpendableBalancesResponse {
cosmos.base.query.v1beta1.PageResponse pagination = 2;
}
// QuerySpendableBalanceByDenomRequest defines the gRPC request structure for
// querying an account's spendable balance for a specific denom.
//
// Since: cosmos-sdk 0.47
message QuerySpendableBalanceByDenomRequest {
option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
// address is the address to query balances for.
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// denom is the coin denom to query balances for.
string denom = 2;
}
// QuerySpendableBalanceByDenomResponse defines the gRPC response structure for
// querying an account's spendable balance for a specific denom.
//
// Since: cosmos-sdk 0.47
message QuerySpendableBalanceByDenomResponse {
// balance is the balance of the coin.
cosmos.base.v1beta1.Coin balance = 1;
}
// QueryTotalSupplyRequest is the request type for the Query/TotalSupply RPC
// method.
message QueryTotalSupplyRequest {

View File

@ -31,6 +31,7 @@ func GetQueryCmd() *cobra.Command {
cmd.AddCommand(
GetBalancesCmd(),
GetSpendableBalancesCmd(),
GetCmdQueryTotalSupply(),
GetCmdDenomsMetadata(),
GetCmdQuerySendEnabled(),
@ -108,6 +109,66 @@ Example:
return cmd
}
func GetSpendableBalancesCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "spendable-balances [address]",
Short: "Query for account spendable balances by address",
Example: fmt.Sprintf("$ %s query %s spendable-balances [address]", version.AppName, types.ModuleName),
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
denom, err := cmd.Flags().GetString(FlagDenom)
if err != nil {
return err
}
queryClient := types.NewQueryClient(clientCtx)
addr, err := sdk.AccAddressFromBech32(args[0])
if err != nil {
return err
}
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
ctx := cmd.Context()
if denom == "" {
params := types.NewQuerySpendableBalancesRequest(addr, pageReq)
res, err := queryClient.SpendableBalances(ctx, params)
if err != nil {
return err
}
return clientCtx.PrintProto(res)
}
params := types.NewQuerySpendableBalanceByDenomRequest(addr, denom)
res, err := queryClient.SpendableBalanceByDenom(ctx, params)
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
cmd.Flags().String(FlagDenom, "", "The specific balance denomination to query for")
flags.AddQueryFlagsToCmd(cmd)
flags.AddPaginationFlagsToCmd(cmd, "spendable balances")
return cmd
}
// GetCmdDenomsMetadata defines the cobra command to query client denomination metadata.
func GetCmdDenomsMetadata() *cobra.Command {
cmd := &cobra.Command{

View File

@ -120,6 +120,90 @@ func (s *CLITestSuite) TestGetBalancesCmd() {
}
}
func (s *CLITestSuite) TestGetSpendableBalancesCmd() {
accounts := testutil.CreateKeyringAccounts(s.T(), s.kr, 1)
cmd := cli.GetSpendableBalancesCmd()
cmd.SetOutput(io.Discard)
testCases := []struct {
name string
ctxGen func() client.Context
args []string
expectResult proto.Message
expectErr bool
}{
{
"valid query",
func() client.Context {
bz, _ := s.encCfg.Codec.Marshal(&types.QuerySpendableBalancesResponse{})
c := clitestutil.NewMockTendermintRPC(abci.ResponseQuery{
Value: bz,
})
return s.baseCtx.WithClient(c)
},
[]string{
accounts[0].Address.String(),
fmt.Sprintf("--%s=json", flags.FlagOutput),
},
&types.QuerySpendableBalancesResponse{},
false,
},
{
"valid query with denom flag",
func() client.Context {
bz, _ := s.encCfg.Codec.Marshal(&types.QuerySpendableBalanceByDenomRequest{})
c := clitestutil.NewMockTendermintRPC(abci.ResponseQuery{
Value: bz,
})
return s.baseCtx.WithClient(c)
},
[]string{
accounts[0].Address.String(),
fmt.Sprintf("--%s=json", flags.FlagOutput),
fmt.Sprintf("--%s=photon", cli.FlagDenom),
},
&types.QuerySpendableBalanceByDenomResponse{},
false,
},
{
"invalid Address",
func() client.Context {
return s.baseCtx
},
[]string{
"foo",
},
nil,
true,
},
}
for _, tc := range testCases {
tc := tc
s.Run(tc.name, func() {
var outBuf bytes.Buffer
clientCtx := tc.ctxGen().WithOutput(&outBuf)
ctx := svrcmd.CreateExecuteContext(context.Background())
cmd.SetContext(ctx)
cmd.SetArgs(tc.args)
s.Require().NoError(client.SetCmdClientContextHandler(clientCtx, cmd))
err := cmd.Execute()
if tc.expectErr {
s.Require().Error(err)
} else {
s.Require().NoError(s.encCfg.Codec.UnmarshalJSON(outBuf.Bytes(), tc.expectResult))
s.Require().NoError(err)
}
})
}
}
func (s *CLITestSuite) TestGetCmdDenomsMetadata() {
cmd := cli.GetCmdDenomsMetadata()
cmd.SetOutput(io.Discard)

View File

@ -22,10 +22,6 @@ func (k BaseKeeper) Balance(ctx context.Context, req *types.QueryBalanceRequest)
return nil, status.Error(codes.InvalidArgument, "empty request")
}
if req.Address == "" {
return nil, status.Error(codes.InvalidArgument, "address cannot be empty")
}
if req.Denom == "" {
return nil, status.Error(codes.InvalidArgument, "invalid denom")
}
@ -47,10 +43,6 @@ func (k BaseKeeper) AllBalances(ctx context.Context, req *types.QueryAllBalances
return nil, status.Error(codes.InvalidArgument, "empty request")
}
if req.Address == "" {
return nil, status.Error(codes.InvalidArgument, "address cannot be empty")
}
addr, err := sdk.AccAddressFromBech32(req.Address)
if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid address: %s", err.Error())
@ -113,6 +105,29 @@ func (k BaseKeeper) SpendableBalances(ctx context.Context, req *types.QuerySpend
return &types.QuerySpendableBalancesResponse{Balances: result, Pagination: pageRes}, nil
}
// SpendableBalanceByDenom implements a gRPC query handler for retrieving an account's
// spendable balance for a specific denom.
func (k BaseKeeper) SpendableBalanceByDenom(ctx context.Context, req *types.QuerySpendableBalanceByDenomRequest) (*types.QuerySpendableBalanceByDenomResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
addr, err := sdk.AccAddressFromBech32(req.Address)
if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid address: %s", err.Error())
}
if req.Denom == "" {
return nil, status.Error(codes.InvalidArgument, "invalid denom")
}
sdkCtx := sdk.UnwrapSDKContext(ctx)
spendable := k.SpendableCoin(sdkCtx, addr, req.Denom)
return &types.QuerySpendableBalanceByDenomResponse{Balance: &spendable}, nil
}
// TotalSupply implements the Query/TotalSupply gRPC method
func (k BaseKeeper) TotalSupply(ctx context.Context, req *types.QueryTotalSupplyRequest) (*types.QueryTotalSupplyResponse, error) {
sdkCtx := sdk.UnwrapSDKContext(ctx)

View File

@ -137,6 +137,58 @@ func (suite *KeeperTestSuite) TestSpendableBalances() {
suite.EqualValues(25, res.Balances[1].Amount.Int64())
}
func (suite *KeeperTestSuite) TestSpendableBalanceByDenom() {
ctx := suite.ctx
_, _, addr := testdata.KeyTestPubAddr()
ctx = ctx.WithBlockTime(time.Now())
queryClient := suite.mockQueryClient(ctx)
_, err := queryClient.SpendableBalanceByDenom(ctx, &types.QuerySpendableBalanceByDenomRequest{})
suite.Require().Error(err)
req := types.NewQuerySpendableBalanceByDenomRequest(addr, fooDenom)
acc := authtypes.NewBaseAccountWithAddress(addr)
suite.mockSpendableCoins(ctx, acc)
res, err := queryClient.SpendableBalanceByDenom(ctx, req)
suite.Require().NoError(err)
suite.Require().NotNil(res)
suite.True(res.Balance.IsZero())
fooCoins := newFooCoin(100)
barCoins := newBarCoin(30)
origCoins := sdk.NewCoins(fooCoins, barCoins)
vacc := vestingtypes.NewContinuousVestingAccount(
acc,
sdk.NewCoins(fooCoins),
ctx.BlockTime().Unix(),
ctx.BlockTime().Add(time.Hour).Unix(),
)
suite.mockFundAccount(addr)
suite.Require().NoError(testutil.FundAccount(suite.bankKeeper, suite.ctx, addr, origCoins))
// move time forward for half of the tokens to vest
ctx = ctx.WithBlockTime(ctx.BlockTime().Add(30 * time.Minute))
queryClient = suite.mockQueryClient(ctx)
// check fooCoins first, it has some vested and some vesting
suite.mockSpendableCoins(ctx, vacc)
res, err = queryClient.SpendableBalanceByDenom(ctx, req)
suite.Require().NoError(err)
suite.Require().NotNil(res)
suite.EqualValues(50, res.Balance.Amount.Int64())
// check barCoins, all of it is spendable
req.Denom = barDenom
suite.mockSpendableCoins(ctx, vacc)
res, err = queryClient.SpendableBalanceByDenom(ctx, req)
suite.Require().NoError(err)
suite.Require().NotNil(res)
suite.EqualValues(30, res.Balance.Amount.Int64())
}
func (suite *KeeperTestSuite) TestQueryTotalSupply() {
ctx, queryClient := suite.ctx, suite.queryClient
res, err := queryClient.TotalSupply(gocontext.Background(), &types.QueryTotalSupplyRequest{})

View File

@ -35,6 +35,14 @@ func NewQuerySpendableBalancesRequest(addr sdk.AccAddress, req *query.PageReques
return &QuerySpendableBalancesRequest{Address: addr.String(), Pagination: req}
}
// NewQuerySpendableBalanceByDenomRequest creates a new instance of a
// QuerySpendableBalanceByDenomRequest.
//
//nolint:interfacer
func NewQuerySpendableBalanceByDenomRequest(addr sdk.AccAddress, denom string) *QuerySpendableBalanceByDenomRequest {
return &QuerySpendableBalanceByDenomRequest{Address: addr.String(), Denom: denom}
}
// QueryTotalSupplyParams defines the params for the following queries:
//
// - 'custom/bank/totalSupply'

View File

@ -320,6 +320,99 @@ func (m *QuerySpendableBalancesResponse) GetPagination() *query.PageResponse {
return nil
}
// QuerySpendableBalanceByDenomRequest defines the gRPC request structure for
// querying an account's spendable balance for a specific denom.
//
// Since: cosmos-sdk 0.47
type QuerySpendableBalanceByDenomRequest struct {
// address is the address to query balances for.
Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
// denom is the coin denom to query balances for.
Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"`
}
func (m *QuerySpendableBalanceByDenomRequest) Reset() { *m = QuerySpendableBalanceByDenomRequest{} }
func (m *QuerySpendableBalanceByDenomRequest) String() string { return proto.CompactTextString(m) }
func (*QuerySpendableBalanceByDenomRequest) ProtoMessage() {}
func (*QuerySpendableBalanceByDenomRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{6}
}
func (m *QuerySpendableBalanceByDenomRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *QuerySpendableBalanceByDenomRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_QuerySpendableBalanceByDenomRequest.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *QuerySpendableBalanceByDenomRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_QuerySpendableBalanceByDenomRequest.Merge(m, src)
}
func (m *QuerySpendableBalanceByDenomRequest) XXX_Size() int {
return m.Size()
}
func (m *QuerySpendableBalanceByDenomRequest) XXX_DiscardUnknown() {
xxx_messageInfo_QuerySpendableBalanceByDenomRequest.DiscardUnknown(m)
}
var xxx_messageInfo_QuerySpendableBalanceByDenomRequest proto.InternalMessageInfo
// QuerySpendableBalanceByDenomResponse defines the gRPC response structure for
// querying an account's spendable balance for a specific denom.
//
// Since: cosmos-sdk 0.47
type QuerySpendableBalanceByDenomResponse struct {
// balance is the balance of the coin.
Balance *types.Coin `protobuf:"bytes,1,opt,name=balance,proto3" json:"balance,omitempty"`
}
func (m *QuerySpendableBalanceByDenomResponse) Reset() { *m = QuerySpendableBalanceByDenomResponse{} }
func (m *QuerySpendableBalanceByDenomResponse) String() string { return proto.CompactTextString(m) }
func (*QuerySpendableBalanceByDenomResponse) ProtoMessage() {}
func (*QuerySpendableBalanceByDenomResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{7}
}
func (m *QuerySpendableBalanceByDenomResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *QuerySpendableBalanceByDenomResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_QuerySpendableBalanceByDenomResponse.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *QuerySpendableBalanceByDenomResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_QuerySpendableBalanceByDenomResponse.Merge(m, src)
}
func (m *QuerySpendableBalanceByDenomResponse) XXX_Size() int {
return m.Size()
}
func (m *QuerySpendableBalanceByDenomResponse) XXX_DiscardUnknown() {
xxx_messageInfo_QuerySpendableBalanceByDenomResponse.DiscardUnknown(m)
}
var xxx_messageInfo_QuerySpendableBalanceByDenomResponse proto.InternalMessageInfo
func (m *QuerySpendableBalanceByDenomResponse) GetBalance() *types.Coin {
if m != nil {
return m.Balance
}
return nil
}
// QueryTotalSupplyRequest is the request type for the Query/TotalSupply RPC
// method.
type QueryTotalSupplyRequest struct {
@ -333,7 +426,7 @@ func (m *QueryTotalSupplyRequest) Reset() { *m = QueryTotalSupplyRequest
func (m *QueryTotalSupplyRequest) String() string { return proto.CompactTextString(m) }
func (*QueryTotalSupplyRequest) ProtoMessage() {}
func (*QueryTotalSupplyRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{6}
return fileDescriptor_9c6fc1939682df13, []int{8}
}
func (m *QueryTotalSupplyRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -377,7 +470,7 @@ func (m *QueryTotalSupplyResponse) Reset() { *m = QueryTotalSupplyRespon
func (m *QueryTotalSupplyResponse) String() string { return proto.CompactTextString(m) }
func (*QueryTotalSupplyResponse) ProtoMessage() {}
func (*QueryTotalSupplyResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{7}
return fileDescriptor_9c6fc1939682df13, []int{9}
}
func (m *QueryTotalSupplyResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -430,7 +523,7 @@ func (m *QuerySupplyOfRequest) Reset() { *m = QuerySupplyOfRequest{} }
func (m *QuerySupplyOfRequest) String() string { return proto.CompactTextString(m) }
func (*QuerySupplyOfRequest) ProtoMessage() {}
func (*QuerySupplyOfRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{8}
return fileDescriptor_9c6fc1939682df13, []int{10}
}
func (m *QuerySupplyOfRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -476,7 +569,7 @@ func (m *QuerySupplyOfResponse) Reset() { *m = QuerySupplyOfResponse{} }
func (m *QuerySupplyOfResponse) String() string { return proto.CompactTextString(m) }
func (*QuerySupplyOfResponse) ProtoMessage() {}
func (*QuerySupplyOfResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{9}
return fileDescriptor_9c6fc1939682df13, []int{11}
}
func (m *QuerySupplyOfResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -520,7 +613,7 @@ func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} }
func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) }
func (*QueryParamsRequest) ProtoMessage() {}
func (*QueryParamsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{10}
return fileDescriptor_9c6fc1939682df13, []int{12}
}
func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -558,7 +651,7 @@ func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} }
func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) }
func (*QueryParamsResponse) ProtoMessage() {}
func (*QueryParamsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{11}
return fileDescriptor_9c6fc1939682df13, []int{13}
}
func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -604,7 +697,7 @@ func (m *QueryDenomsMetadataRequest) Reset() { *m = QueryDenomsMetadataR
func (m *QueryDenomsMetadataRequest) String() string { return proto.CompactTextString(m) }
func (*QueryDenomsMetadataRequest) ProtoMessage() {}
func (*QueryDenomsMetadataRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{12}
return fileDescriptor_9c6fc1939682df13, []int{14}
}
func (m *QueryDenomsMetadataRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -653,7 +746,7 @@ func (m *QueryDenomsMetadataResponse) Reset() { *m = QueryDenomsMetadata
func (m *QueryDenomsMetadataResponse) String() string { return proto.CompactTextString(m) }
func (*QueryDenomsMetadataResponse) ProtoMessage() {}
func (*QueryDenomsMetadataResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{13}
return fileDescriptor_9c6fc1939682df13, []int{15}
}
func (m *QueryDenomsMetadataResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -706,7 +799,7 @@ func (m *QueryDenomMetadataRequest) Reset() { *m = QueryDenomMetadataReq
func (m *QueryDenomMetadataRequest) String() string { return proto.CompactTextString(m) }
func (*QueryDenomMetadataRequest) ProtoMessage() {}
func (*QueryDenomMetadataRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{14}
return fileDescriptor_9c6fc1939682df13, []int{16}
}
func (m *QueryDenomMetadataRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -753,7 +846,7 @@ func (m *QueryDenomMetadataResponse) Reset() { *m = QueryDenomMetadataRe
func (m *QueryDenomMetadataResponse) String() string { return proto.CompactTextString(m) }
func (*QueryDenomMetadataResponse) ProtoMessage() {}
func (*QueryDenomMetadataResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{15}
return fileDescriptor_9c6fc1939682df13, []int{17}
}
func (m *QueryDenomMetadataResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -803,7 +896,7 @@ func (m *QueryDenomOwnersRequest) Reset() { *m = QueryDenomOwnersRequest
func (m *QueryDenomOwnersRequest) String() string { return proto.CompactTextString(m) }
func (*QueryDenomOwnersRequest) ProtoMessage() {}
func (*QueryDenomOwnersRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{16}
return fileDescriptor_9c6fc1939682df13, []int{18}
}
func (m *QueryDenomOwnersRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -862,7 +955,7 @@ func (m *DenomOwner) Reset() { *m = DenomOwner{} }
func (m *DenomOwner) String() string { return proto.CompactTextString(m) }
func (*DenomOwner) ProtoMessage() {}
func (*DenomOwner) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{17}
return fileDescriptor_9c6fc1939682df13, []int{19}
}
func (m *DenomOwner) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -918,7 +1011,7 @@ func (m *QueryDenomOwnersResponse) Reset() { *m = QueryDenomOwnersRespon
func (m *QueryDenomOwnersResponse) String() string { return proto.CompactTextString(m) }
func (*QueryDenomOwnersResponse) ProtoMessage() {}
func (*QueryDenomOwnersResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{18}
return fileDescriptor_9c6fc1939682df13, []int{20}
}
func (m *QueryDenomOwnersResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -976,7 +1069,7 @@ func (m *QuerySendEnabledRequest) Reset() { *m = QuerySendEnabledRequest
func (m *QuerySendEnabledRequest) String() string { return proto.CompactTextString(m) }
func (*QuerySendEnabledRequest) ProtoMessage() {}
func (*QuerySendEnabledRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{19}
return fileDescriptor_9c6fc1939682df13, []int{21}
}
func (m *QuerySendEnabledRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1033,7 +1126,7 @@ func (m *QuerySendEnabledResponse) Reset() { *m = QuerySendEnabledRespon
func (m *QuerySendEnabledResponse) String() string { return proto.CompactTextString(m) }
func (*QuerySendEnabledResponse) ProtoMessage() {}
func (*QuerySendEnabledResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{20}
return fileDescriptor_9c6fc1939682df13, []int{22}
}
func (m *QuerySendEnabledResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1083,6 +1176,8 @@ func init() {
proto.RegisterType((*QueryAllBalancesResponse)(nil), "cosmos.bank.v1beta1.QueryAllBalancesResponse")
proto.RegisterType((*QuerySpendableBalancesRequest)(nil), "cosmos.bank.v1beta1.QuerySpendableBalancesRequest")
proto.RegisterType((*QuerySpendableBalancesResponse)(nil), "cosmos.bank.v1beta1.QuerySpendableBalancesResponse")
proto.RegisterType((*QuerySpendableBalanceByDenomRequest)(nil), "cosmos.bank.v1beta1.QuerySpendableBalanceByDenomRequest")
proto.RegisterType((*QuerySpendableBalanceByDenomResponse)(nil), "cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse")
proto.RegisterType((*QueryTotalSupplyRequest)(nil), "cosmos.bank.v1beta1.QueryTotalSupplyRequest")
proto.RegisterType((*QueryTotalSupplyResponse)(nil), "cosmos.bank.v1beta1.QueryTotalSupplyResponse")
proto.RegisterType((*QuerySupplyOfRequest)(nil), "cosmos.bank.v1beta1.QuerySupplyOfRequest")
@ -1103,78 +1198,82 @@ func init() {
func init() { proto.RegisterFile("cosmos/bank/v1beta1/query.proto", fileDescriptor_9c6fc1939682df13) }
var fileDescriptor_9c6fc1939682df13 = []byte{
// 1135 bytes of a gzipped FileDescriptorProto
// 1188 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcf, 0x6f, 0x1b, 0x45,
0x14, 0xf6, 0x14, 0xd5, 0x49, 0x9e, 0x03, 0x52, 0xa7, 0x01, 0x92, 0x0d, 0xb1, 0xcb, 0x82, 0x1a,
0x27, 0x24, 0xbb, 0xb5, 0x03, 0x48, 0x20, 0x88, 0x54, 0xa7, 0x94, 0x03, 0x42, 0x2d, 0x0e, 0xbd,
0x70, 0xb1, 0xc6, 0xde, 0xc1, 0xb5, 0x62, 0xef, 0xb8, 0x9e, 0x35, 0xc5, 0xaa, 0x2a, 0x21, 0x24,
0xa4, 0x1e, 0x91, 0xe8, 0x09, 0x09, 0x11, 0x21, 0x01, 0x15, 0x48, 0x88, 0x03, 0x47, 0xfe, 0x80,
0x5e, 0x90, 0x0a, 0x1c, 0xe8, 0x09, 0x50, 0x82, 0x04, 0x7f, 0x06, 0xf2, 0xfc, 0xf0, 0xee, 0xda,
0xe3, 0x8d, 0x1b, 0x8c, 0x04, 0x97, 0xd6, 0x9e, 0x79, 0x6f, 0xde, 0xf7, 0x7d, 0xef, 0xcd, 0xbc,
0xe7, 0x40, 0xae, 0xc6, 0x78, 0x8b, 0x71, 0xb7, 0x4a, 0xfc, 0x3d, 0xf7, 0x9d, 0x42, 0x95, 0x06,
0xa4, 0xe0, 0x5e, 0xeb, 0xd2, 0x4e, 0xcf, 0x69, 0x77, 0x58, 0xc0, 0xf0, 0x69, 0x69, 0xe0, 0xf4,
0x0d, 0x1c, 0x65, 0x60, 0xad, 0x0f, 0xbc, 0x38, 0x95, 0xd6, 0x03, 0xdf, 0x36, 0xa9, 0x37, 0x7c,
0x12, 0x34, 0x98, 0x2f, 0x0f, 0xb0, 0x16, 0xea, 0xac, 0xce, 0xc4, 0x47, 0xb7, 0xff, 0x49, 0xad,
0x3e, 0x51, 0x67, 0xac, 0xde, 0xa4, 0x2e, 0x69, 0x37, 0x5c, 0xe2, 0xfb, 0x2c, 0x10, 0x2e, 0x5c,
0xed, 0x66, 0xa3, 0xe7, 0xeb, 0x93, 0x6b, 0xac, 0xe1, 0x8f, 0xec, 0x47, 0x50, 0x0b, 0x84, 0x72,
0x7f, 0x49, 0xee, 0x57, 0x64, 0x58, 0xc5, 0x40, 0x6e, 0x2d, 0x2b, 0x57, 0x8d, 0x3a, 0x4a, 0xd6,
0x3a, 0x45, 0x5a, 0x0d, 0x9f, 0xb9, 0xe2, 0x5f, 0xb9, 0x64, 0x37, 0xe0, 0xf4, 0x1b, 0x7d, 0x8b,
0x12, 0x69, 0x12, 0xbf, 0x46, 0xcb, 0xf4, 0x5a, 0x97, 0xf2, 0x00, 0x17, 0x61, 0x86, 0x78, 0x5e,
0x87, 0x72, 0xbe, 0x88, 0xce, 0xa0, 0xfc, 0x5c, 0x69, 0xf1, 0xa7, 0xef, 0x36, 0x17, 0x54, 0xa4,
0xf3, 0x72, 0x67, 0x37, 0xe8, 0x34, 0xfc, 0x7a, 0x59, 0x1b, 0xe2, 0x05, 0x38, 0xe9, 0x51, 0x9f,
0xb5, 0x16, 0x4f, 0xf4, 0x3d, 0xca, 0xf2, 0xcb, 0x8b, 0xb3, 0xb7, 0xf6, 0x73, 0xa9, 0xbf, 0xf6,
0x73, 0x29, 0xfb, 0x35, 0x58, 0x88, 0x87, 0xe2, 0x6d, 0xe6, 0x73, 0x8a, 0xb7, 0x60, 0xa6, 0x2a,
0x97, 0x44, 0xac, 0x4c, 0x71, 0xc9, 0x19, 0x24, 0x85, 0x53, 0x9d, 0x14, 0x67, 0x87, 0x35, 0xfc,
0xb2, 0xb6, 0xb4, 0x3f, 0x45, 0xf0, 0xb8, 0x38, 0xed, 0x7c, 0xb3, 0xa9, 0x0e, 0xe4, 0xff, 0x04,
0xfc, 0x45, 0x80, 0x30, 0xb5, 0x82, 0x41, 0xa6, 0x78, 0x36, 0x86, 0x43, 0x0a, 0xa9, 0xd1, 0x5c,
0x26, 0x75, 0x2d, 0x56, 0x39, 0xe2, 0x19, 0xa1, 0xfb, 0x23, 0x82, 0xc5, 0x51, 0x84, 0x8a, 0x73,
0x13, 0x66, 0x15, 0x93, 0x3e, 0xc6, 0x87, 0x12, 0x49, 0x97, 0x9e, 0xbb, 0xfb, 0x6b, 0x2e, 0xf5,
0xd5, 0x6f, 0xb9, 0x7c, 0xbd, 0x11, 0x5c, 0xed, 0x56, 0x9d, 0x1a, 0x6b, 0xa9, 0xa4, 0xab, 0xff,
0x36, 0xb9, 0xb7, 0xe7, 0x06, 0xbd, 0x36, 0xe5, 0xc2, 0x81, 0xdf, 0xf9, 0xf3, 0xdb, 0x75, 0x54,
0x1e, 0x44, 0xc0, 0xaf, 0x1a, 0xc8, 0xad, 0x1e, 0x49, 0x4e, 0x42, 0x8d, 0xb2, 0xb3, 0x3f, 0x47,
0xb0, 0x22, 0x38, 0xed, 0xb6, 0xa9, 0xef, 0x91, 0x6a, 0x93, 0xfe, 0x37, 0xb5, 0xff, 0x05, 0x41,
0x76, 0x1c, 0xce, 0xff, 0x77, 0x06, 0xf6, 0x54, 0xd9, 0xbf, 0xc9, 0x02, 0xd2, 0xdc, 0xed, 0xb6,
0xdb, 0xcd, 0x9e, 0x96, 0x3e, 0x2e, 0x23, 0x9a, 0x82, 0x8c, 0x3f, 0xe8, 0x12, 0x8e, 0x45, 0x53,
0x02, 0x5e, 0x85, 0x34, 0x17, 0x2b, 0xff, 0x9a, 0x7c, 0xea, 0xfc, 0xe9, 0x89, 0xb7, 0xa1, 0x5e,
0x20, 0xc9, 0xe4, 0xd2, 0xdb, 0x5a, 0xb9, 0xc1, 0xcb, 0x85, 0x22, 0x2f, 0x97, 0x7d, 0x05, 0x1e,
0x1d, 0xb2, 0x56, 0xcc, 0x5f, 0x82, 0x34, 0x69, 0xb1, 0xae, 0x1f, 0x1c, 0xf9, 0x5e, 0x95, 0xe6,
0xfa, 0xcc, 0x15, 0x1b, 0xe9, 0x63, 0x2f, 0x00, 0x16, 0xc7, 0x5e, 0x26, 0x1d, 0xd2, 0xd2, 0xf7,
0xc6, 0xbe, 0xa2, 0xde, 0x61, 0xbd, 0xaa, 0x42, 0x6d, 0x43, 0xba, 0x2d, 0x56, 0x54, 0xa8, 0x65,
0xc7, 0xd0, 0xaf, 0x1c, 0xe9, 0x14, 0x0b, 0x26, 0xbd, 0x6c, 0x0f, 0x2c, 0x71, 0xec, 0x85, 0x3e,
0x23, 0xfe, 0x3a, 0x0d, 0x88, 0x47, 0x02, 0x32, 0xe5, 0x8a, 0xb1, 0xbf, 0x41, 0xb0, 0x6c, 0x0c,
0xa3, 0x58, 0x5c, 0x84, 0xb9, 0x96, 0x5a, 0xd3, 0x97, 0x6d, 0xc5, 0x48, 0x44, 0x7b, 0x46, 0xa9,
0x84, 0xae, 0xd3, 0x2b, 0x84, 0x02, 0x2c, 0x85, 0x78, 0x87, 0x55, 0x31, 0x57, 0x43, 0x35, 0xaa,
0xe4, 0x08, 0xc3, 0x0b, 0x30, 0xab, 0x61, 0x2a, 0x1d, 0x27, 0x27, 0x38, 0xf0, 0xb4, 0xaf, 0xab,
0xcb, 0x2d, 0x62, 0x5c, 0xba, 0xee, 0xd3, 0x0e, 0x4f, 0x04, 0x35, 0xad, 0x97, 0xd3, 0x7e, 0x0f,
0x01, 0x84, 0x41, 0x8f, 0xf5, 0x88, 0x6f, 0x87, 0x5d, 0xfc, 0xc4, 0x03, 0xdc, 0x8a, 0x41, 0x43,
0xff, 0x52, 0xbf, 0x35, 0x31, 0xf2, 0x4a, 0xde, 0x12, 0xcc, 0x0b, 0xc2, 0x15, 0x26, 0xd6, 0x55,
0x0d, 0xe5, 0x8c, 0x12, 0x87, 0xfe, 0xe5, 0x8c, 0x17, 0x9e, 0x35, 0xbd, 0xe2, 0xe9, 0xa9, 0x2c,
0xed, 0x52, 0xdf, 0x7b, 0xc5, 0xef, 0x37, 0x17, 0x4f, 0x67, 0xe9, 0x31, 0x48, 0x8b, 0x90, 0x12,
0xe1, 0x5c, 0x59, 0x7d, 0x1b, 0xca, 0x53, 0xed, 0xd8, 0x79, 0xba, 0xa3, 0x45, 0x8a, 0xc5, 0x56,
0x22, 0xed, 0xc0, 0x3c, 0xa7, 0xbe, 0x57, 0xa1, 0x72, 0x5d, 0x89, 0x74, 0xc6, 0x28, 0x52, 0xd4,
0x3f, 0xc3, 0xc3, 0x2f, 0x43, 0x2a, 0xd5, 0x8e, 0xad, 0x52, 0xf1, 0xfe, 0x3c, 0x9c, 0x14, 0x50,
0xf1, 0x27, 0x08, 0x66, 0x54, 0xfb, 0xc5, 0x79, 0x23, 0x1a, 0xc3, 0x04, 0x6a, 0xad, 0x4d, 0x60,
0x29, 0xc3, 0xda, 0x2f, 0xdf, 0xea, 0x97, 0xd2, 0xfb, 0x3f, 0xff, 0xf1, 0xd1, 0x89, 0x22, 0x3e,
0xe7, 0x9a, 0x87, 0x67, 0xd9, 0x88, 0xdd, 0x1b, 0xaa, 0x5e, 0x6f, 0xba, 0xd5, 0x5e, 0x45, 0x5e,
0xa2, 0x7d, 0x04, 0x99, 0xc8, 0x8c, 0x86, 0x37, 0xc6, 0x47, 0x1e, 0x1d, 0x36, 0xad, 0xcd, 0x09,
0xad, 0x15, 0xd6, 0x67, 0x43, 0xac, 0x6b, 0x78, 0x75, 0x42, 0xac, 0xf8, 0x7b, 0x04, 0xa7, 0x46,
0x46, 0x19, 0x5c, 0x1c, 0x1f, 0x7a, 0xdc, 0x7c, 0x66, 0x6d, 0x3d, 0x90, 0x8f, 0x02, 0xbd, 0x1d,
0x82, 0xde, 0xc2, 0x05, 0x23, 0x68, 0xae, 0x9d, 0x2b, 0x06, 0xf8, 0xb7, 0x11, 0x64, 0x22, 0x23,
0x44, 0x92, 0xc2, 0xa3, 0x73, 0x4d, 0x92, 0xc2, 0x86, 0xb9, 0xc4, 0xce, 0x87, 0x60, 0x57, 0xf0,
0xb2, 0x19, 0xac, 0x84, 0x71, 0x1b, 0xc1, 0xac, 0x6e, 0xee, 0x38, 0xa1, 0xde, 0x86, 0xc6, 0x05,
0x6b, 0x7d, 0x12, 0x53, 0x85, 0xa6, 0x10, 0xa2, 0x39, 0x8b, 0x9f, 0x4e, 0x40, 0x13, 0xd6, 0xe3,
0x07, 0x08, 0xd2, 0xb2, 0xa3, 0xe3, 0xd5, 0xf1, 0x91, 0x62, 0xe3, 0x83, 0x95, 0x3f, 0xda, 0x70,
0x72, 0x79, 0xe4, 0xec, 0x80, 0xbf, 0x46, 0xf0, 0x70, 0xac, 0xdb, 0x61, 0x67, 0x7c, 0x14, 0x53,
0x27, 0xb5, 0xdc, 0x89, 0xed, 0x15, 0xb8, 0x17, 0x42, 0x70, 0x0e, 0xde, 0x30, 0x82, 0x93, 0x2f,
0x6a, 0x45, 0xf7, 0x4c, 0xf7, 0x86, 0x58, 0xb8, 0x89, 0xbf, 0x40, 0xf0, 0x48, 0x7c, 0xfc, 0xc0,
0x47, 0x85, 0x1f, 0x9e, 0x87, 0xac, 0x73, 0x93, 0x3b, 0x4c, 0x9e, 0xde, 0x21, 0xc0, 0xf8, 0x33,
0x04, 0x99, 0x48, 0x8f, 0x4b, 0xba, 0x0c, 0xa3, 0x73, 0x40, 0xd2, 0x65, 0x30, 0x34, 0x4e, 0xfb,
0xf9, 0x10, 0xdf, 0x33, 0x78, 0x6d, 0x3c, 0x3e, 0xd5, 0x58, 0x07, 0x6a, 0x7e, 0x8c, 0x20, 0x13,
0xe9, 0x11, 0x49, 0x20, 0x47, 0xdb, 0x60, 0x12, 0x48, 0x43, 0xe3, 0xb2, 0x9d, 0x10, 0xe4, 0x53,
0xf8, 0x49, 0xf3, 0x1d, 0x89, 0x34, 0xb6, 0xd2, 0xce, 0xdd, 0x83, 0x2c, 0xba, 0x77, 0x90, 0x45,
0xbf, 0x1f, 0x64, 0xd1, 0x87, 0x87, 0xd9, 0xd4, 0xbd, 0xc3, 0x6c, 0xea, 0xfe, 0x61, 0x36, 0xf5,
0xd6, 0x5a, 0xe2, 0x0f, 0x8c, 0x77, 0xe5, 0x99, 0xe2, 0x77, 0x46, 0x35, 0x2d, 0xfe, 0xfe, 0xb1,
0xf5, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x9a, 0xdc, 0xb5, 0x22, 0x12, 0x00, 0x00,
0x14, 0xf6, 0x04, 0xd5, 0x49, 0x9e, 0x4b, 0xa5, 0x4e, 0x03, 0x4d, 0x36, 0xc4, 0x2e, 0xdb, 0xaa,
0xf9, 0x41, 0xb2, 0xdb, 0x38, 0x80, 0x68, 0x55, 0x22, 0xd5, 0x29, 0xed, 0x01, 0xa1, 0x16, 0x87,
0x5e, 0xe0, 0x60, 0xad, 0xbd, 0x83, 0x6b, 0xc5, 0xde, 0x71, 0x3d, 0x6b, 0x8a, 0x55, 0x55, 0x42,
0x48, 0x48, 0x3d, 0x22, 0xd1, 0x13, 0x12, 0x22, 0x42, 0x02, 0x2a, 0x90, 0x10, 0x42, 0x1c, 0xf9,
0x03, 0x7a, 0x41, 0x2a, 0x70, 0x28, 0x27, 0x40, 0x09, 0x12, 0xfc, 0x19, 0xc8, 0xf3, 0xc3, 0xbb,
0x6b, 0x8f, 0x37, 0x9b, 0xd4, 0x95, 0xe8, 0xa5, 0xb5, 0x67, 0xde, 0x9b, 0xf7, 0x7d, 0xef, 0xbd,
0x99, 0xf7, 0x39, 0x90, 0xab, 0x50, 0xd6, 0xa0, 0xcc, 0x2e, 0x3b, 0xde, 0x96, 0xfd, 0xde, 0x6a,
0x99, 0xf8, 0xce, 0xaa, 0x7d, 0xa3, 0x4d, 0x5a, 0x1d, 0xab, 0xd9, 0xa2, 0x3e, 0xc5, 0xc7, 0x84,
0x81, 0xd5, 0x35, 0xb0, 0xa4, 0x81, 0xb1, 0xd4, 0xf3, 0x62, 0x44, 0x58, 0xf7, 0x7c, 0x9b, 0x4e,
0xb5, 0xe6, 0x39, 0x7e, 0x8d, 0x7a, 0xe2, 0x00, 0x63, 0xaa, 0x4a, 0xab, 0x94, 0x7f, 0xb4, 0xbb,
0x9f, 0xe4, 0xea, 0x73, 0x55, 0x4a, 0xab, 0x75, 0x62, 0x3b, 0xcd, 0x9a, 0xed, 0x78, 0x1e, 0xf5,
0xb9, 0x0b, 0x93, 0xbb, 0xd9, 0xf0, 0xf9, 0xea, 0xe4, 0x0a, 0xad, 0x79, 0x03, 0xfb, 0x21, 0xd4,
0x1c, 0xa1, 0xd8, 0x9f, 0x11, 0xfb, 0x25, 0x11, 0x56, 0x32, 0x10, 0x5b, 0xb3, 0xd2, 0x55, 0xa1,
0x0e, 0x93, 0x35, 0x8e, 0x3a, 0x8d, 0x9a, 0x47, 0x6d, 0xfe, 0xaf, 0x58, 0x32, 0x6b, 0x70, 0xec,
0xcd, 0xae, 0x45, 0xc1, 0xa9, 0x3b, 0x5e, 0x85, 0x14, 0xc9, 0x8d, 0x36, 0x61, 0x3e, 0xce, 0xc3,
0xb8, 0xe3, 0xba, 0x2d, 0xc2, 0xd8, 0x34, 0x3a, 0x81, 0x16, 0x26, 0x0b, 0xd3, 0xbf, 0xfe, 0xb8,
0x32, 0x25, 0x23, 0x5d, 0x10, 0x3b, 0x9b, 0x7e, 0xab, 0xe6, 0x55, 0x8b, 0xca, 0x10, 0x4f, 0xc1,
0x21, 0x97, 0x78, 0xb4, 0x31, 0x3d, 0xd6, 0xf5, 0x28, 0x8a, 0x2f, 0xe7, 0x26, 0xee, 0x6c, 0xe7,
0x52, 0xff, 0x6e, 0xe7, 0x52, 0xe6, 0xeb, 0x30, 0x15, 0x0d, 0xc5, 0x9a, 0xd4, 0x63, 0x04, 0xaf,
0xc1, 0x78, 0x59, 0x2c, 0xf1, 0x58, 0x99, 0xfc, 0x8c, 0xd5, 0x2b, 0x0a, 0x23, 0xaa, 0x28, 0xd6,
0x06, 0xad, 0x79, 0x45, 0x65, 0x69, 0x7e, 0x8e, 0xe0, 0x38, 0x3f, 0xed, 0x42, 0xbd, 0x2e, 0x0f,
0x64, 0x8f, 0x02, 0xfe, 0x12, 0x40, 0x50, 0x5a, 0xce, 0x20, 0x93, 0x3f, 0x1d, 0xc1, 0x21, 0x12,
0xa9, 0xd0, 0x5c, 0x75, 0xaa, 0x2a, 0x59, 0xc5, 0x90, 0x67, 0x88, 0xee, 0x2f, 0x08, 0xa6, 0x07,
0x11, 0x4a, 0xce, 0x75, 0x98, 0x90, 0x4c, 0xba, 0x18, 0x9f, 0x8a, 0x25, 0x5d, 0x78, 0xe9, 0xfe,
0x1f, 0xb9, 0xd4, 0x37, 0x7f, 0xe6, 0x16, 0xaa, 0x35, 0xff, 0x7a, 0xbb, 0x6c, 0x55, 0x68, 0x43,
0x16, 0x5d, 0xfe, 0xb7, 0xc2, 0xdc, 0x2d, 0xdb, 0xef, 0x34, 0x09, 0xe3, 0x0e, 0xec, 0xde, 0x3f,
0xdf, 0x2f, 0xa1, 0x62, 0x2f, 0x02, 0xbe, 0xac, 0x21, 0x37, 0xbf, 0x27, 0x39, 0x01, 0x35, 0xcc,
0xce, 0xfc, 0x12, 0xc1, 0x1c, 0xe7, 0xb4, 0xd9, 0x24, 0x9e, 0xeb, 0x94, 0xeb, 0xe4, 0xff, 0x99,
0xfb, 0x87, 0x08, 0xb2, 0xc3, 0x70, 0x3e, 0xd9, 0x15, 0xe8, 0xc0, 0x49, 0x2d, 0xb1, 0x42, 0xe7,
0x62, 0xf7, 0xba, 0x3d, 0xce, 0xfb, 0xfb, 0x0e, 0x9c, 0x8a, 0x0f, 0xfd, 0x28, 0xf7, 0x79, 0x4b,
0x5e, 0xe7, 0xb7, 0xa8, 0xef, 0xd4, 0x37, 0xdb, 0xcd, 0x66, 0xbd, 0xa3, 0xb8, 0x44, 0xdb, 0x03,
0x8d, 0xa0, 0x3d, 0x7e, 0x56, 0x57, 0x33, 0x12, 0x4d, 0xc2, 0xbf, 0x0e, 0x69, 0xc6, 0x57, 0x1e,
0x5b, 0x5b, 0xc8, 0xf3, 0x47, 0xd7, 0x14, 0xcb, 0xf2, 0x65, 0x15, 0x4c, 0xae, 0xbc, 0xab, 0x32,
0xd7, 0xab, 0x28, 0x0a, 0x55, 0xd4, 0xbc, 0x06, 0xcf, 0xf4, 0x59, 0x4b, 0xe6, 0xe7, 0x21, 0xed,
0x34, 0x68, 0xdb, 0xf3, 0xf7, 0xac, 0x5b, 0x61, 0xb2, 0xcb, 0x5c, 0xb2, 0x11, 0x3e, 0xe6, 0x14,
0x60, 0x7e, 0xec, 0x55, 0xa7, 0xe5, 0x34, 0xd4, 0x7b, 0x60, 0x5e, 0x93, 0xf3, 0x45, 0xad, 0xca,
0x50, 0xeb, 0x90, 0x6e, 0xf2, 0x15, 0x19, 0x6a, 0xd6, 0xd2, 0xcc, 0x61, 0x4b, 0x38, 0x45, 0x82,
0x09, 0x2f, 0xd3, 0x05, 0x83, 0x1f, 0xcb, 0x3b, 0x8f, 0xbd, 0x41, 0x7c, 0xc7, 0x75, 0x7c, 0x67,
0xc4, 0x1d, 0x63, 0x7e, 0x87, 0x60, 0x56, 0x1b, 0x46, 0xb2, 0xb8, 0x04, 0x93, 0x0d, 0xb9, 0xa6,
0x1e, 0x91, 0x39, 0x2d, 0x11, 0xe5, 0x19, 0xa6, 0x12, 0xb8, 0x8e, 0xae, 0x11, 0x56, 0x61, 0x26,
0xc0, 0xdb, 0x9f, 0x15, 0x7d, 0x37, 0x94, 0xc3, 0x99, 0x1c, 0x60, 0x78, 0x11, 0x26, 0x14, 0x4c,
0x99, 0xc7, 0xe4, 0x04, 0x7b, 0x9e, 0xe6, 0x4d, 0x79, 0xb9, 0x79, 0x8c, 0x2b, 0x37, 0x3d, 0xd2,
0x62, 0xb1, 0xa0, 0x46, 0x35, 0x11, 0xcc, 0x0f, 0x10, 0x40, 0x10, 0xf4, 0x40, 0xaf, 0xe2, 0x7a,
0xf0, 0x9a, 0x8d, 0xed, 0xe3, 0x56, 0xf4, 0x1e, 0xb6, 0xaf, 0xd5, 0x5b, 0x13, 0x21, 0x2f, 0xd3,
0x5b, 0x80, 0xc3, 0x9c, 0x70, 0x89, 0xf2, 0x75, 0xd9, 0x43, 0x39, 0x6d, 0x8a, 0x03, 0xff, 0x62,
0xc6, 0x0d, 0xce, 0x1a, 0xe5, 0x68, 0x11, 0x55, 0xda, 0x24, 0x9e, 0xfb, 0x9a, 0xd7, 0x7d, 0xe0,
0x5d, 0x55, 0xa5, 0x67, 0x21, 0xcd, 0x43, 0x0a, 0x84, 0x93, 0x45, 0xf9, 0xad, 0xaf, 0x4e, 0x95,
0x03, 0xd7, 0xe9, 0x9e, 0x4a, 0x52, 0x24, 0xb6, 0x4c, 0xd2, 0x06, 0x1c, 0x66, 0xc4, 0x73, 0x4b,
0x44, 0xac, 0xcb, 0x24, 0x9d, 0xd0, 0x26, 0x29, 0xec, 0x9f, 0x61, 0xc1, 0x97, 0xbe, 0x2c, 0x55,
0x0e, 0x9c, 0xa5, 0xfc, 0x0f, 0x47, 0xe0, 0x10, 0x87, 0x8a, 0x3f, 0x43, 0x30, 0x2e, 0x47, 0x20,
0x5e, 0xd0, 0xa2, 0xd1, 0x28, 0x6b, 0x63, 0x31, 0x81, 0xa5, 0x08, 0x6b, 0xbe, 0x7a, 0xa7, 0xdb,
0x4a, 0x1f, 0xfe, 0xf6, 0xf7, 0x27, 0x63, 0x79, 0x7c, 0xc6, 0xd6, 0xff, 0x28, 0x10, 0x02, 0xc3,
0xbe, 0x25, 0xfb, 0xf5, 0xb6, 0x5d, 0xee, 0x94, 0xc4, 0x25, 0xda, 0x46, 0x90, 0x09, 0x69, 0x4f,
0xbc, 0x3c, 0x3c, 0xf2, 0xa0, 0x88, 0x36, 0x56, 0x12, 0x5a, 0x4b, 0xac, 0x2f, 0x06, 0x58, 0x17,
0xf1, 0x7c, 0x42, 0xac, 0xf8, 0x27, 0x04, 0x47, 0x07, 0x24, 0x1a, 0xce, 0x0f, 0x0f, 0x3d, 0x4c,
0x77, 0x1a, 0x6b, 0xfb, 0xf2, 0x91, 0xa0, 0xd7, 0x03, 0xd0, 0x6b, 0x78, 0x55, 0x0b, 0x9a, 0x29,
0xe7, 0x92, 0x06, 0xfe, 0x43, 0x04, 0xc7, 0x87, 0xa8, 0x21, 0xfc, 0x4a, 0x72, 0x40, 0x51, 0xed,
0x66, 0x9c, 0x3d, 0x80, 0xa7, 0x24, 0x74, 0x39, 0x20, 0x74, 0x1e, 0x9f, 0xdb, 0x37, 0xa1, 0xa0,
0x77, 0xee, 0x22, 0xc8, 0x84, 0xc4, 0x51, 0x5c, 0xef, 0x0c, 0x2a, 0xb6, 0xb8, 0xde, 0xd1, 0x28,
0x2e, 0x73, 0x21, 0x40, 0x3d, 0x87, 0x67, 0xf5, 0xa8, 0x05, 0x8c, 0xbb, 0x08, 0x26, 0x94, 0x6c,
0xc1, 0x31, 0x37, 0xa9, 0x4f, 0x08, 0x19, 0x4b, 0x49, 0x4c, 0x25, 0x9a, 0xd5, 0x00, 0xcd, 0x69,
0x7c, 0x2a, 0x06, 0x4d, 0x90, 0xad, 0x8f, 0x10, 0xa4, 0x85, 0x56, 0xc1, 0xf3, 0xc3, 0x23, 0x45,
0x84, 0x91, 0xb1, 0xb0, 0xb7, 0x61, 0xf2, 0xf4, 0x08, 0x55, 0x84, 0xbf, 0x45, 0xf0, 0x74, 0x64,
0x8e, 0x63, 0x6b, 0x78, 0x14, 0x9d, 0x46, 0x30, 0xec, 0xc4, 0xf6, 0x12, 0xdc, 0xd9, 0x00, 0x9c,
0x85, 0x97, 0xb5, 0xe0, 0xc4, 0xac, 0x28, 0x29, 0x35, 0x60, 0xdf, 0xe2, 0x0b, 0xb7, 0xf1, 0x57,
0x08, 0x8e, 0x44, 0x85, 0x15, 0xde, 0x2b, 0x7c, 0xbf, 0xd2, 0x33, 0xce, 0x24, 0x77, 0x48, 0x5e,
0xde, 0x3e, 0xc0, 0xf8, 0x0b, 0x04, 0x99, 0xd0, 0xf4, 0x8e, 0xbb, 0x0c, 0x83, 0x0a, 0x27, 0xee,
0x32, 0x68, 0x24, 0x81, 0xf9, 0x72, 0x80, 0xef, 0x05, 0xbc, 0x38, 0x1c, 0x9f, 0x94, 0x0c, 0xbd,
0x6c, 0x7e, 0x8a, 0x20, 0x13, 0x9a, 0x7e, 0x71, 0x20, 0x07, 0x07, 0x7c, 0x1c, 0x48, 0xcd, 0x48,
0x36, 0xad, 0x00, 0xe4, 0x49, 0xfc, 0xbc, 0xfe, 0x8e, 0x84, 0x46, 0x76, 0x61, 0xe3, 0xfe, 0x4e,
0x16, 0x3d, 0xd8, 0xc9, 0xa2, 0xbf, 0x76, 0xb2, 0xe8, 0xe3, 0xdd, 0x6c, 0xea, 0xc1, 0x6e, 0x36,
0xf5, 0xfb, 0x6e, 0x36, 0xf5, 0xf6, 0x62, 0xec, 0x4f, 0xa7, 0xf7, 0xc5, 0x99, 0xfc, 0x17, 0x54,
0x39, 0xcd, 0xff, 0x62, 0xb5, 0xf6, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf4, 0x2c, 0x27, 0x2a,
0xd4, 0x13, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -1196,7 +1295,7 @@ type QueryClient interface {
// When called from another module, this query might consume a high amount of
// gas if the pagination field is incorrectly set.
AllBalances(ctx context.Context, in *QueryAllBalancesRequest, opts ...grpc.CallOption) (*QueryAllBalancesResponse, error)
// SpendableBalances queries the spenable balance of all coins for a single
// SpendableBalances queries the spendable balance of all coins for a single
// account.
//
// When called from another module, this query might consume a high amount of
@ -1204,6 +1303,14 @@ type QueryClient interface {
//
// Since: cosmos-sdk 0.46
SpendableBalances(ctx context.Context, in *QuerySpendableBalancesRequest, opts ...grpc.CallOption) (*QuerySpendableBalancesResponse, error)
// SpendableBalanceByDenom queries the spendable balance of a single denom for
// a single account.
//
// When called from another module, this query might consume a high amount of
// gas if the pagination field is incorrectly set.
//
// Since: cosmos-sdk 0.47
SpendableBalanceByDenom(ctx context.Context, in *QuerySpendableBalanceByDenomRequest, opts ...grpc.CallOption) (*QuerySpendableBalanceByDenomResponse, error)
// TotalSupply queries the total supply of all coins.
//
// When called from another module, this query might consume a high amount of
@ -1274,6 +1381,15 @@ func (c *queryClient) SpendableBalances(ctx context.Context, in *QuerySpendableB
return out, nil
}
func (c *queryClient) SpendableBalanceByDenom(ctx context.Context, in *QuerySpendableBalanceByDenomRequest, opts ...grpc.CallOption) (*QuerySpendableBalanceByDenomResponse, error) {
out := new(QuerySpendableBalanceByDenomResponse)
err := c.cc.Invoke(ctx, "/cosmos.bank.v1beta1.Query/SpendableBalanceByDenom", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *queryClient) TotalSupply(ctx context.Context, in *QueryTotalSupplyRequest, opts ...grpc.CallOption) (*QueryTotalSupplyResponse, error) {
out := new(QueryTotalSupplyResponse)
err := c.cc.Invoke(ctx, "/cosmos.bank.v1beta1.Query/TotalSupply", in, out, opts...)
@ -1346,7 +1462,7 @@ type QueryServer interface {
// When called from another module, this query might consume a high amount of
// gas if the pagination field is incorrectly set.
AllBalances(context.Context, *QueryAllBalancesRequest) (*QueryAllBalancesResponse, error)
// SpendableBalances queries the spenable balance of all coins for a single
// SpendableBalances queries the spendable balance of all coins for a single
// account.
//
// When called from another module, this query might consume a high amount of
@ -1354,6 +1470,14 @@ type QueryServer interface {
//
// Since: cosmos-sdk 0.46
SpendableBalances(context.Context, *QuerySpendableBalancesRequest) (*QuerySpendableBalancesResponse, error)
// SpendableBalanceByDenom queries the spendable balance of a single denom for
// a single account.
//
// When called from another module, this query might consume a high amount of
// gas if the pagination field is incorrectly set.
//
// Since: cosmos-sdk 0.47
SpendableBalanceByDenom(context.Context, *QuerySpendableBalanceByDenomRequest) (*QuerySpendableBalanceByDenomResponse, error)
// TotalSupply queries the total supply of all coins.
//
// When called from another module, this query might consume a high amount of
@ -1402,6 +1526,9 @@ func (*UnimplementedQueryServer) AllBalances(ctx context.Context, req *QueryAllB
func (*UnimplementedQueryServer) SpendableBalances(ctx context.Context, req *QuerySpendableBalancesRequest) (*QuerySpendableBalancesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SpendableBalances not implemented")
}
func (*UnimplementedQueryServer) SpendableBalanceByDenom(ctx context.Context, req *QuerySpendableBalanceByDenomRequest) (*QuerySpendableBalanceByDenomResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SpendableBalanceByDenom not implemented")
}
func (*UnimplementedQueryServer) TotalSupply(ctx context.Context, req *QueryTotalSupplyRequest) (*QueryTotalSupplyResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method TotalSupply not implemented")
}
@ -1482,6 +1609,24 @@ func _Query_SpendableBalances_Handler(srv interface{}, ctx context.Context, dec
return interceptor(ctx, in, info, handler)
}
func _Query_SpendableBalanceByDenom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QuerySpendableBalanceByDenomRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(QueryServer).SpendableBalanceByDenom(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/cosmos.bank.v1beta1.Query/SpendableBalanceByDenom",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(QueryServer).SpendableBalanceByDenom(ctx, req.(*QuerySpendableBalanceByDenomRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Query_TotalSupply_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryTotalSupplyRequest)
if err := dec(in); err != nil {
@ -1624,6 +1769,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{
MethodName: "SpendableBalances",
Handler: _Query_SpendableBalances_Handler,
},
{
MethodName: "SpendableBalanceByDenom",
Handler: _Query_SpendableBalanceByDenom_Handler,
},
{
MethodName: "TotalSupply",
Handler: _Query_TotalSupply_Handler,
@ -1911,6 +2060,78 @@ func (m *QuerySpendableBalancesResponse) MarshalToSizedBuffer(dAtA []byte) (int,
return len(dAtA) - i, nil
}
func (m *QuerySpendableBalanceByDenomRequest) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *QuerySpendableBalanceByDenomRequest) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *QuerySpendableBalanceByDenomRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if len(m.Denom) > 0 {
i -= len(m.Denom)
copy(dAtA[i:], m.Denom)
i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom)))
i--
dAtA[i] = 0x12
}
if len(m.Address) > 0 {
i -= len(m.Address)
copy(dAtA[i:], m.Address)
i = encodeVarintQuery(dAtA, i, uint64(len(m.Address)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *QuerySpendableBalanceByDenomResponse) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *QuerySpendableBalanceByDenomResponse) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *QuerySpendableBalanceByDenomResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.Balance != nil {
{
size, err := m.Balance.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintQuery(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *QueryTotalSupplyRequest) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -2602,6 +2823,36 @@ func (m *QuerySpendableBalancesResponse) Size() (n int) {
return n
}
func (m *QuerySpendableBalanceByDenomRequest) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Address)
if l > 0 {
n += 1 + l + sovQuery(uint64(l))
}
l = len(m.Denom)
if l > 0 {
n += 1 + l + sovQuery(uint64(l))
}
return n
}
func (m *QuerySpendableBalanceByDenomResponse) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.Balance != nil {
l = m.Balance.Size()
n += 1 + l + sovQuery(uint64(l))
}
return n
}
func (m *QueryTotalSupplyRequest) Size() (n int) {
if m == nil {
return 0
@ -3505,6 +3756,206 @@ func (m *QuerySpendableBalancesResponse) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *QuerySpendableBalanceByDenomRequest) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: QuerySpendableBalanceByDenomRequest: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: QuerySpendableBalanceByDenomRequest: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Address = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Denom = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipQuery(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthQuery
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *QuerySpendableBalanceByDenomResponse) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: QuerySpendableBalanceByDenomResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: QuerySpendableBalanceByDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Balance", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Balance == nil {
m.Balance = &types.Coin{}
}
if err := m.Balance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipQuery(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthQuery
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *QueryTotalSupplyRequest) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0

View File

@ -249,6 +249,78 @@ func local_request_Query_SpendableBalances_0(ctx context.Context, marshaler runt
}
var (
filter_Query_SpendableBalanceByDenom_0 = &utilities.DoubleArray{Encoding: map[string]int{"address": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
)
func request_Query_SpendableBalanceByDenom_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QuerySpendableBalanceByDenomRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["address"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "address")
}
protoReq.Address, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err)
}
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_SpendableBalanceByDenom_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.SpendableBalanceByDenom(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_Query_SpendableBalanceByDenom_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QuerySpendableBalanceByDenomRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["address"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "address")
}
protoReq.Address, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err)
}
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_SpendableBalanceByDenom_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.SpendableBalanceByDenom(ctx, &protoReq)
return msg, metadata, err
}
var (
filter_Query_TotalSupply_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
@ -612,6 +684,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
})
mux.Handle("GET", pattern_Query_SpendableBalanceByDenom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_Query_SpendableBalanceByDenom_0(rctx, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Query_SpendableBalanceByDenom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_Query_TotalSupply_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@ -874,6 +969,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
})
mux.Handle("GET", pattern_Query_SpendableBalanceByDenom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_Query_SpendableBalanceByDenom_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Query_SpendableBalanceByDenom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_Query_TotalSupply_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@ -1024,6 +1139,8 @@ var (
pattern_Query_SpendableBalances_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "bank", "v1beta1", "spendable_balances", "address"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_SpendableBalanceByDenom_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"cosmos", "bank", "v1beta1", "spendable_balances", "address", "by_denom"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_TotalSupply_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "bank", "v1beta1", "supply"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_SupplyOf_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "bank", "v1beta1", "supply", "by_denom"}, "", runtime.AssumeColonVerbOpt(false)))
@ -1046,6 +1163,8 @@ var (
forward_Query_SpendableBalances_0 = runtime.ForwardResponseMessage
forward_Query_SpendableBalanceByDenom_0 = runtime.ForwardResponseMessage
forward_Query_TotalSupply_0 = runtime.ForwardResponseMessage
forward_Query_SupplyOf_0 = runtime.ForwardResponseMessage

View File

@ -788,6 +788,21 @@ func (mr *MockBankKeeperMockRecorder) SetSendEnabled(ctx, denom, value interface
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetSendEnabled", reflect.TypeOf((*MockBankKeeper)(nil).SetSendEnabled), ctx, denom, value)
}
// SpendableBalanceByDenom mocks base method.
func (m *MockBankKeeper) SpendableBalanceByDenom(arg0 context.Context, arg1 *types0.QuerySpendableBalanceByDenomRequest) (*types0.QuerySpendableBalanceByDenomResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SpendableBalanceByDenom", arg0, arg1)
ret0, _ := ret[0].(*types0.QuerySpendableBalanceByDenomResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// SpendableBalanceByDenom indicates an expected call of SpendableBalanceByDenom.
func (mr *MockBankKeeperMockRecorder) SpendableBalanceByDenom(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SpendableBalanceByDenom", reflect.TypeOf((*MockBankKeeper)(nil).SpendableBalanceByDenom), arg0, arg1)
}
// SpendableBalances mocks base method.
func (m *MockBankKeeper) SpendableBalances(arg0 context.Context, arg1 *types0.QuerySpendableBalancesRequest) (*types0.QuerySpendableBalancesResponse, error) {
m.ctrl.T.Helper()