feat(x/bank): adding DenomOwnersByQuery for denom owners for token (backport #18956) (#19007)

Co-authored-by: gsai967 <153279976+gsai967@users.noreply.github.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
This commit is contained in:
mergify[bot] 2024-01-10 17:56:00 +01:00 committed by GitHub
parent fe4b58b2bd
commit 2a199f57c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 2615 additions and 333 deletions

View File

@ -40,6 +40,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
### Improvements
* (x/bank) [#18956](https://github.com/cosmos/cosmos-sdk/pull/18956) Introduced a new `DenomOwnersByQuery` query method for `DenomOwners`, which accepts the denom value as a query string parameter, resolving issues with denoms containing slashes.
* (x/gov) [#18707](https://github.com/cosmos/cosmos-sdk/pull/18707) Improve genesis validation.
* (x/auth/tx) [#18772](https://github.com/cosmos/cosmos-sdk/pull/18772) Remove misleading gas wanted from tx simulation failure log.
* (client/tx) [#18852](https://github.com/cosmos/cosmos-sdk/pull/18852) Add `WithFromName` to tx factory.

File diff suppressed because it is too large Load Diff

View File

@ -30,6 +30,7 @@ const (
Query_DenomMetadataByQueryString_FullMethodName = "/cosmos.bank.v1beta1.Query/DenomMetadataByQueryString"
Query_DenomsMetadata_FullMethodName = "/cosmos.bank.v1beta1.Query/DenomsMetadata"
Query_DenomOwners_FullMethodName = "/cosmos.bank.v1beta1.Query/DenomOwners"
Query_DenomOwnersByQuery_FullMethodName = "/cosmos.bank.v1beta1.Query/DenomOwnersByQuery"
Query_SendEnabled_FullMethodName = "/cosmos.bank.v1beta1.Query/SendEnabled"
)
@ -72,9 +73,9 @@ type QueryClient interface {
SupplyOf(ctx context.Context, in *QuerySupplyOfRequest, opts ...grpc.CallOption) (*QuerySupplyOfResponse, error)
// Params queries the parameters of x/bank module.
Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadata queries the client metadata of a given coin denomination.
DenomMetadata(ctx context.Context, in *QueryDenomMetadataRequest, opts ...grpc.CallOption) (*QueryDenomMetadataResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadataByQueryString queries the client metadata of a given coin denomination.
DenomMetadataByQueryString(ctx context.Context, in *QueryDenomMetadataByQueryStringRequest, opts ...grpc.CallOption) (*QueryDenomMetadataByQueryStringResponse, error)
// DenomsMetadata queries the client metadata for all registered coin
// denominations.
@ -87,6 +88,11 @@ type QueryClient interface {
//
// Since: cosmos-sdk 0.46
DenomOwners(ctx context.Context, in *QueryDenomOwnersRequest, opts ...grpc.CallOption) (*QueryDenomOwnersResponse, error)
// DenomOwnersByQuery queries for all account addresses that own a particular token
// denomination.
//
// Since: cosmos-sdk 0.50.3
DenomOwnersByQuery(ctx context.Context, in *QueryDenomOwnersByQueryRequest, opts ...grpc.CallOption) (*QueryDenomOwnersByQueryResponse, error)
// SendEnabled queries for SendEnabled entries.
//
// This query only returns denominations that have specific SendEnabled settings.
@ -204,6 +210,15 @@ func (c *queryClient) DenomOwners(ctx context.Context, in *QueryDenomOwnersReque
return out, nil
}
func (c *queryClient) DenomOwnersByQuery(ctx context.Context, in *QueryDenomOwnersByQueryRequest, opts ...grpc.CallOption) (*QueryDenomOwnersByQueryResponse, error) {
out := new(QueryDenomOwnersByQueryResponse)
err := c.cc.Invoke(ctx, Query_DenomOwnersByQuery_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *queryClient) SendEnabled(ctx context.Context, in *QuerySendEnabledRequest, opts ...grpc.CallOption) (*QuerySendEnabledResponse, error) {
out := new(QuerySendEnabledResponse)
err := c.cc.Invoke(ctx, Query_SendEnabled_FullMethodName, in, out, opts...)
@ -252,9 +267,9 @@ type QueryServer interface {
SupplyOf(context.Context, *QuerySupplyOfRequest) (*QuerySupplyOfResponse, error)
// Params queries the parameters of x/bank module.
Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadata queries the client metadata of a given coin denomination.
DenomMetadata(context.Context, *QueryDenomMetadataRequest) (*QueryDenomMetadataResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadataByQueryString queries the client metadata of a given coin denomination.
DenomMetadataByQueryString(context.Context, *QueryDenomMetadataByQueryStringRequest) (*QueryDenomMetadataByQueryStringResponse, error)
// DenomsMetadata queries the client metadata for all registered coin
// denominations.
@ -267,6 +282,11 @@ type QueryServer interface {
//
// Since: cosmos-sdk 0.46
DenomOwners(context.Context, *QueryDenomOwnersRequest) (*QueryDenomOwnersResponse, error)
// DenomOwnersByQuery queries for all account addresses that own a particular token
// denomination.
//
// Since: cosmos-sdk 0.50.3
DenomOwnersByQuery(context.Context, *QueryDenomOwnersByQueryRequest) (*QueryDenomOwnersByQueryResponse, error)
// SendEnabled queries for SendEnabled entries.
//
// This query only returns denominations that have specific SendEnabled settings.
@ -315,6 +335,9 @@ func (UnimplementedQueryServer) DenomsMetadata(context.Context, *QueryDenomsMeta
func (UnimplementedQueryServer) DenomOwners(context.Context, *QueryDenomOwnersRequest) (*QueryDenomOwnersResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DenomOwners not implemented")
}
func (UnimplementedQueryServer) DenomOwnersByQuery(context.Context, *QueryDenomOwnersByQueryRequest) (*QueryDenomOwnersByQueryResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DenomOwnersByQuery not implemented")
}
func (UnimplementedQueryServer) SendEnabled(context.Context, *QuerySendEnabledRequest) (*QuerySendEnabledResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SendEnabled not implemented")
}
@ -529,6 +552,24 @@ func _Query_DenomOwners_Handler(srv interface{}, ctx context.Context, dec func(i
return interceptor(ctx, in, info, handler)
}
func _Query_DenomOwnersByQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryDenomOwnersByQueryRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(QueryServer).DenomOwnersByQuery(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Query_DenomOwnersByQuery_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(QueryServer).DenomOwnersByQuery(ctx, req.(*QueryDenomOwnersByQueryRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Query_SendEnabled_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QuerySendEnabledRequest)
if err := dec(in); err != nil {
@ -598,6 +639,10 @@ var Query_ServiceDesc = grpc.ServiceDesc{
MethodName: "DenomOwners",
Handler: _Query_DenomOwners_Handler,
},
{
MethodName: "DenomOwnersByQuery",
Handler: _Query_DenomOwnersByQuery_Handler,
},
{
MethodName: "SendEnabled",
Handler: _Query_SendEnabled_Handler,

View File

@ -3568,6 +3568,170 @@ paths:
descending order.
Since: cosmos-sdk 0.43
in: query
required: false
type: boolean
tags:
- Query
/cosmos/bank/v1beta1/denom_owners_by_query:
get:
summary: >-
DenomOwnersByQuery queries for all account addresses that own a
particular token
denomination.
description: 'Since: cosmos-sdk 0.50.3'
operationId: DenomOwnersByQuery
responses:
'200':
description: A successful response.
schema:
type: object
properties:
denom_owners:
type: array
items:
type: object
properties:
address:
type: string
description: >-
address defines the address that owns a particular
denomination.
balance:
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.
description: >-
DenomOwner defines structure representing an account that
owns or holds a
particular denominated token. It contains the account
address and account
balance of the denominated token.
Since: cosmos-sdk 0.46
pagination:
description: pagination defines the pagination in the response.
type: object
properties:
next_key:
type: string
format: byte
description: |-
next_key is the key to be passed to PageRequest.key to
query the next page most efficiently. It will be empty if
there are no more results.
total:
type: string
format: uint64
title: >-
total is total number of results available if
PageRequest.count_total
was set, its value is undefined otherwise
description: >-
QueryDenomOwnersByQueryResponse defines the RPC response of a
DenomOwnersByQuery RPC query.
Since: cosmos-sdk 0.50.3
default:
description: An unexpected error response.
schema:
type: object
properties:
error:
type: string
code:
type: integer
format: int32
message:
type: string
details:
type: array
items:
type: object
properties:
type_url:
type: string
value:
type: string
format: byte
parameters:
- name: denom
description: >-
denom defines the coin denomination to query all account holders
for.
in: query
required: false
type: string
- name: pagination.key
description: |-
key is a value returned in PageResponse.next_key to begin
querying the next page most efficiently. Only one of offset or key
should be set.
in: query
required: false
type: string
format: byte
- name: pagination.offset
description: >-
offset is a numeric offset that can be used when key is unavailable.
It is less efficient than using key. Only one of offset or key
should
be set.
in: query
required: false
type: string
format: uint64
- name: pagination.limit
description: >-
limit is the total number of results to be returned in the result
page.
If left empty it will default to a value to be set by each app.
in: query
required: false
type: string
format: uint64
- name: pagination.count_total
description: >-
count_total is set to true to indicate that the result set should
include
a count of the total number of items available for pagination in
UIs.
count_total is only respected when offset is used. It is ignored
when key
is set.
in: query
required: false
type: boolean
- name: pagination.reverse
description: >-
reverse is set to true if results are to be returned in the
descending order.
Since: cosmos-sdk 0.43
in: query
required: false
@ -3787,7 +3951,7 @@ paths:
- Query
/cosmos/bank/v1beta1/denoms_metadata/{denom}:
get:
summary: DenomsMetadata queries the client metadata of a given coin denomination.
summary: DenomMetadata queries the client metadata of a given coin denomination.
operationId: DenomMetadata
responses:
'200':
@ -3921,7 +4085,9 @@ paths:
- Query
/cosmos/bank/v1beta1/denoms_metadata_by_query_string:
get:
summary: DenomsMetadata queries the client metadata of a given coin denomination.
summary: >-
DenomMetadataByQueryString queries the client metadata of a given coin
denomination.
operationId: DenomMetadataByQueryString
responses:
'200':
@ -40496,6 +40662,68 @@ definitions:
Query/DenomMetadata RPC
method.
cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse:
type: object
properties:
denom_owners:
type: array
items:
type: object
properties:
address:
type: string
description: address defines the address that owns a particular denomination.
balance:
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.
description: >-
DenomOwner defines structure representing an account that owns or
holds a
particular denominated token. It contains the account address and
account
balance of the denominated token.
Since: cosmos-sdk 0.46
pagination:
description: pagination defines the pagination in the response.
type: object
properties:
next_key:
type: string
format: byte
description: |-
next_key is the key to be passed to PageRequest.key to
query the next page most efficiently. It will be empty if
there are no more results.
total:
type: string
format: uint64
title: >-
total is total number of results available if
PageRequest.count_total
was set, its value is undefined otherwise
description: >-
QueryDenomOwnersByQueryResponse defines the RPC response of a
DenomOwnersByQuery RPC query.
Since: cosmos-sdk 0.50.3
cosmos.bank.v1beta1.QueryDenomOwnersResponse:
type: object
properties:

View File

@ -77,13 +77,13 @@ service Query {
option (google.api.http).get = "/cosmos/bank/v1beta1/params";
}
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadata queries the client metadata of a given coin denomination.
rpc DenomMetadata(QueryDenomMetadataRequest) returns (QueryDenomMetadataResponse) {
option (cosmos.query.v1.module_query_safe) = true;
option (google.api.http).get = "/cosmos/bank/v1beta1/denoms_metadata/{denom}";
}
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadataByQueryString queries the client metadata of a given coin denomination.
rpc DenomMetadataByQueryString(QueryDenomMetadataByQueryStringRequest)
returns (QueryDenomMetadataByQueryStringResponse) {
option (cosmos.query.v1.module_query_safe) = true;
@ -108,6 +108,15 @@ service Query {
option (google.api.http).get = "/cosmos/bank/v1beta1/denom_owners/{denom}";
}
// DenomOwnersByQuery queries for all account addresses that own a particular token
// denomination.
//
// Since: cosmos-sdk 0.50.3
rpc DenomOwnersByQuery(QueryDenomOwnersByQueryRequest) returns (QueryDenomOwnersByQueryResponse) {
option (cosmos.query.v1.module_query_safe) = true;
option (google.api.http).get = "/cosmos/bank/v1beta1/denom_owners_by_query";
}
// SendEnabled queries for SendEnabled entries.
//
// This query only returns denominations that have specific SendEnabled settings.
@ -354,6 +363,29 @@ message QueryDenomOwnersResponse {
cosmos.base.query.v1beta1.PageResponse pagination = 2;
}
// QueryDenomOwnersByQueryRequest defines the request type for the DenomOwnersByQuery RPC query,
// which queries for a paginated set of all account holders of a particular
// denomination.
//
// Since: cosmos-sdk 0.50.3
message QueryDenomOwnersByQueryRequest {
// denom defines the coin denomination to query all account holders for.
string denom = 1;
// pagination defines an optional pagination for the request.
cosmos.base.query.v1beta1.PageRequest pagination = 2;
}
// QueryDenomOwnersByQueryResponse defines the RPC response of a DenomOwnersByQuery RPC query.
//
// Since: cosmos-sdk 0.50.3
message QueryDenomOwnersByQueryResponse {
repeated DenomOwner denom_owners = 1;
// pagination defines the pagination in the response.
cosmos.base.query.v1beta1.PageResponse pagination = 2;
}
// QuerySendEnabledRequest defines the RPC request for looking up SendEnabled entries.
//
// Since: cosmos-sdk 0.47

View File

@ -229,24 +229,18 @@ func (k BaseKeeper) DenomMetadataByQueryString(c context.Context, req *types.Que
return nil, status.Errorf(codes.InvalidArgument, "empty request")
}
if err := sdk.ValidateDenom(req.Denom); err != nil {
return nil, status.Error(codes.InvalidArgument, err.Error())
res, err := k.DenomMetadata(c, &types.QueryDenomMetadataRequest{
Denom: req.Denom,
})
if err != nil {
return nil, err
}
ctx := sdk.UnwrapSDKContext(c)
metadata, found := k.GetDenomMetaData(ctx, req.Denom)
if !found {
return nil, status.Errorf(codes.NotFound, "client metadata for denom %s", req.Denom)
}
return &types.QueryDenomMetadataByQueryStringResponse{
Metadata: metadata,
}, nil
return &types.QueryDenomMetadataByQueryStringResponse{Metadata: res.Metadata}, nil
}
func (k BaseKeeper) DenomOwners(
goCtx context.Context,
ctx context.Context,
req *types.QueryDenomOwnersRequest,
) (*types.QueryDenomOwnersResponse, error) {
if req == nil {
@ -258,11 +252,11 @@ func (k BaseKeeper) DenomOwners(
}
denomOwners, pageRes, err := query.CollectionPaginate(
goCtx,
ctx,
k.Balances.Indexes.Denom,
req.Pagination,
func(key collections.Pair[string, sdk.AccAddress], value collections.NoValue) (*types.DenomOwner, error) {
amt, err := k.Balances.Get(goCtx, collections.Join(key.K2(), req.Denom))
amt, err := k.Balances.Get(ctx, collections.Join(key.K2(), req.Denom))
if err != nil {
return nil, err
}
@ -306,3 +300,19 @@ func (k BaseKeeper) SendEnabled(goCtx context.Context, req *types.QuerySendEnabl
return resp, nil
}
// DenomOwnersByQuery is identical to DenomOwner query, but receives denom values via query string.
func (k BaseKeeper) DenomOwnersByQuery(ctx context.Context, req *types.QueryDenomOwnersByQueryRequest) (*types.QueryDenomOwnersByQueryResponse, error) {
if req == nil {
return nil, status.Errorf(codes.InvalidArgument, "empty request")
}
resp, err := k.DenomOwners(ctx, &types.QueryDenomOwnersRequest{
Denom: req.Denom,
Pagination: req.Pagination,
})
if err != nil {
return nil, err
}
return &types.QueryDenomOwnersByQueryResponse{DenomOwners: resp.DenomOwners, Pagination: resp.Pagination}, nil
}

View File

@ -805,3 +805,111 @@ func (suite *KeeperTestSuite) TestQuerySendEnabled() {
})
}
}
func (suite *KeeperTestSuite) TestGRPCDenomOwnersByQuery() {
ctx := suite.ctx
keeper := suite.bankKeeper
suite.mockMintCoins(mintAcc)
suite.Require().NoError(keeper.MintCoins(ctx, minttypes.ModuleName, initCoins))
denom := "ibc/123123213123"
newCoins := sdk.NewCoins(sdk.NewCoin(denom, initTokens))
suite.mockMintCoins(mintAcc)
suite.Require().NoError(keeper.MintCoins(ctx, minttypes.ModuleName, newCoins))
for i := 0; i < 10; i++ {
addr := sdk.AccAddress(fmt.Sprintf("account-%d", i))
bal := sdk.NewCoins(sdk.NewCoin(
sdk.DefaultBondDenom,
sdk.TokensFromConsensusPower(initialPower/10, sdk.DefaultPowerReduction),
))
suite.mockSendCoinsFromModuleToAccount(mintAcc, addr)
suite.Require().NoError(keeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, addr, bal))
}
testCases := map[string]struct {
req *types.QueryDenomOwnersByQueryRequest
expPass bool
numAddrs int
hasNext bool
total uint64
}{
"empty request": {
req: &types.QueryDenomOwnersByQueryRequest{},
expPass: false,
},
"invalid denom": {
req: &types.QueryDenomOwnersByQueryRequest{
Denom: "foo",
},
expPass: true,
numAddrs: 0,
hasNext: false,
total: 0,
},
"valid request - page 1": {
req: &types.QueryDenomOwnersByQueryRequest{
Denom: sdk.DefaultBondDenom,
Pagination: &query.PageRequest{
Limit: 6,
CountTotal: true,
},
},
expPass: true,
numAddrs: 6,
hasNext: true,
total: 10,
},
"valid request - page 2": {
req: &types.QueryDenomOwnersByQueryRequest{
Denom: sdk.DefaultBondDenom,
Pagination: &query.PageRequest{
Offset: 6,
Limit: 10,
CountTotal: true,
},
},
expPass: true,
numAddrs: 4,
hasNext: false,
total: 10,
},
"valid request for query": {
req: &types.QueryDenomOwnersByQueryRequest{
Denom: denom,
Pagination: &query.PageRequest{
Limit: 6,
CountTotal: true,
},
},
expPass: true,
numAddrs: 1,
hasNext: false,
total: 1,
},
}
for name, tc := range testCases {
suite.Run(name, func() {
resp, err := suite.queryClient.DenomOwnersByQuery(gocontext.Background(), tc.req)
if tc.expPass {
suite.NoError(err)
suite.NotNil(resp)
suite.Len(resp.DenomOwners, tc.numAddrs)
suite.Equal(tc.total, resp.Pagination.Total)
if tc.hasNext {
suite.NotNil(resp.Pagination.NextKey)
} else {
suite.Nil(resp.Pagination.NextKey)
}
} else {
suite.Require().Error(err)
}
})
}
suite.Require().True(true)
}

View File

@ -1157,6 +1157,121 @@ func (m *QueryDenomOwnersResponse) GetPagination() *query.PageResponse {
return nil
}
// QueryDenomOwnersByQueryRequest defines the request type for the DenomOwnersByQuery RPC query,
// which queries for a paginated set of all account holders of a particular
// denomination.
//
// Since: cosmos-sdk 0.50.3
type QueryDenomOwnersByQueryRequest struct {
// denom defines the coin denomination to query all account holders for.
Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"`
// pagination defines an optional pagination for the request.
Pagination *query.PageRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
}
func (m *QueryDenomOwnersByQueryRequest) Reset() { *m = QueryDenomOwnersByQueryRequest{} }
func (m *QueryDenomOwnersByQueryRequest) String() string { return proto.CompactTextString(m) }
func (*QueryDenomOwnersByQueryRequest) ProtoMessage() {}
func (*QueryDenomOwnersByQueryRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{23}
}
func (m *QueryDenomOwnersByQueryRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *QueryDenomOwnersByQueryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_QueryDenomOwnersByQueryRequest.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 *QueryDenomOwnersByQueryRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryDenomOwnersByQueryRequest.Merge(m, src)
}
func (m *QueryDenomOwnersByQueryRequest) XXX_Size() int {
return m.Size()
}
func (m *QueryDenomOwnersByQueryRequest) XXX_DiscardUnknown() {
xxx_messageInfo_QueryDenomOwnersByQueryRequest.DiscardUnknown(m)
}
var xxx_messageInfo_QueryDenomOwnersByQueryRequest proto.InternalMessageInfo
func (m *QueryDenomOwnersByQueryRequest) GetDenom() string {
if m != nil {
return m.Denom
}
return ""
}
func (m *QueryDenomOwnersByQueryRequest) GetPagination() *query.PageRequest {
if m != nil {
return m.Pagination
}
return nil
}
// QueryDenomOwnersByQueryResponse defines the RPC response of a DenomOwnersByQuery RPC query.
//
// Since: cosmos-sdk 0.50.3
type QueryDenomOwnersByQueryResponse struct {
DenomOwners []*DenomOwner `protobuf:"bytes,1,rep,name=denom_owners,json=denomOwners,proto3" json:"denom_owners,omitempty"`
// pagination defines the pagination in the response.
Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
}
func (m *QueryDenomOwnersByQueryResponse) Reset() { *m = QueryDenomOwnersByQueryResponse{} }
func (m *QueryDenomOwnersByQueryResponse) String() string { return proto.CompactTextString(m) }
func (*QueryDenomOwnersByQueryResponse) ProtoMessage() {}
func (*QueryDenomOwnersByQueryResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9c6fc1939682df13, []int{24}
}
func (m *QueryDenomOwnersByQueryResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *QueryDenomOwnersByQueryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_QueryDenomOwnersByQueryResponse.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 *QueryDenomOwnersByQueryResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryDenomOwnersByQueryResponse.Merge(m, src)
}
func (m *QueryDenomOwnersByQueryResponse) XXX_Size() int {
return m.Size()
}
func (m *QueryDenomOwnersByQueryResponse) XXX_DiscardUnknown() {
xxx_messageInfo_QueryDenomOwnersByQueryResponse.DiscardUnknown(m)
}
var xxx_messageInfo_QueryDenomOwnersByQueryResponse proto.InternalMessageInfo
func (m *QueryDenomOwnersByQueryResponse) GetDenomOwners() []*DenomOwner {
if m != nil {
return m.DenomOwners
}
return nil
}
func (m *QueryDenomOwnersByQueryResponse) GetPagination() *query.PageResponse {
if m != nil {
return m.Pagination
}
return nil
}
// QuerySendEnabledRequest defines the RPC request for looking up SendEnabled entries.
//
// Since: cosmos-sdk 0.47
@ -1172,7 +1287,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{23}
return fileDescriptor_9c6fc1939682df13, []int{25}
}
func (m *QuerySendEnabledRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1229,7 +1344,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{24}
return fileDescriptor_9c6fc1939682df13, []int{26}
}
func (m *QuerySendEnabledResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1296,6 +1411,8 @@ func init() {
proto.RegisterType((*QueryDenomOwnersRequest)(nil), "cosmos.bank.v1beta1.QueryDenomOwnersRequest")
proto.RegisterType((*DenomOwner)(nil), "cosmos.bank.v1beta1.DenomOwner")
proto.RegisterType((*QueryDenomOwnersResponse)(nil), "cosmos.bank.v1beta1.QueryDenomOwnersResponse")
proto.RegisterType((*QueryDenomOwnersByQueryRequest)(nil), "cosmos.bank.v1beta1.QueryDenomOwnersByQueryRequest")
proto.RegisterType((*QueryDenomOwnersByQueryResponse)(nil), "cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse")
proto.RegisterType((*QuerySendEnabledRequest)(nil), "cosmos.bank.v1beta1.QuerySendEnabledRequest")
proto.RegisterType((*QuerySendEnabledResponse)(nil), "cosmos.bank.v1beta1.QuerySendEnabledResponse")
}
@ -1303,88 +1420,91 @@ func init() {
func init() { proto.RegisterFile("cosmos/bank/v1beta1/query.proto", fileDescriptor_9c6fc1939682df13) }
var fileDescriptor_9c6fc1939682df13 = []byte{
// 1283 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xcf, 0x6f, 0x1b, 0x45,
0x14, 0xf6, 0xb4, 0xaa, 0x9b, 0x3c, 0xa7, 0x88, 0x4e, 0x03, 0x4d, 0x37, 0xc4, 0x0e, 0x9b, 0x2a,
0x71, 0x42, 0xb2, 0xdb, 0x38, 0x55, 0x45, 0x4b, 0x88, 0x14, 0xa7, 0xa4, 0x07, 0x84, 0x5a, 0x1c,
0x7a, 0x81, 0x83, 0xb5, 0xf6, 0x0e, 0xc6, 0x8a, 0xbd, 0xeb, 0x7a, 0x36, 0x2d, 0x56, 0x15, 0x09,
0x21, 0x21, 0xf5, 0x06, 0x12, 0x3d, 0x55, 0x42, 0x8a, 0x90, 0x80, 0x0a, 0x24, 0xd4, 0x03, 0x47,
0x8e, 0x1c, 0x7a, 0xac, 0xe0, 0x00, 0xe2, 0x50, 0x50, 0x82, 0xd4, 0xfe, 0x19, 0xc8, 0xf3, 0xc3,
0xbb, 0x6b, 0x8f, 0x37, 0x9b, 0xd4, 0x20, 0xc4, 0xa5, 0xf5, 0xce, 0xbc, 0x37, 0xef, 0x7b, 0xdf,
0x7b, 0xfb, 0xe6, 0xdb, 0x40, 0xa6, 0xec, 0xd2, 0xba, 0x4b, 0xcd, 0x92, 0xe5, 0x6c, 0x9a, 0x37,
0x17, 0x4b, 0xc4, 0xb3, 0x16, 0xcd, 0x1b, 0x5b, 0xa4, 0xd9, 0x32, 0x1a, 0x4d, 0xd7, 0x73, 0xf1,
0x29, 0x6e, 0x60, 0xb4, 0x0d, 0x0c, 0x61, 0xa0, 0xcd, 0x75, 0xbc, 0x28, 0xe1, 0xd6, 0x1d, 0xdf,
0x86, 0x55, 0xa9, 0x3a, 0x96, 0x57, 0x75, 0x1d, 0x7e, 0x80, 0x36, 0x5a, 0x71, 0x2b, 0x2e, 0xfb,
0x69, 0xb6, 0x7f, 0x89, 0xd5, 0x97, 0x2a, 0xae, 0x5b, 0xa9, 0x11, 0xd3, 0x6a, 0x54, 0x4d, 0xcb,
0x71, 0x5c, 0x8f, 0xb9, 0x50, 0xb1, 0x9b, 0x0e, 0x9e, 0x2f, 0x4f, 0x2e, 0xbb, 0x55, 0xa7, 0x67,
0x3f, 0x80, 0x9a, 0x21, 0xe4, 0xfb, 0x67, 0xf8, 0x7e, 0x91, 0x87, 0x15, 0x19, 0xf0, 0xad, 0x71,
0xe1, 0x2a, 0x51, 0x07, 0x93, 0xd5, 0x4e, 0x5a, 0xf5, 0xaa, 0xe3, 0x9a, 0xec, 0x5f, 0xbe, 0xa4,
0x57, 0xe1, 0xd4, 0xdb, 0x6d, 0x8b, 0xbc, 0x55, 0xb3, 0x9c, 0x32, 0x29, 0x90, 0x1b, 0x5b, 0x84,
0x7a, 0x38, 0x07, 0xc7, 0x2d, 0xdb, 0x6e, 0x12, 0x4a, 0xc7, 0xd0, 0x24, 0xca, 0x0e, 0xe7, 0xc7,
0x7e, 0xfe, 0x61, 0x61, 0x54, 0x44, 0x5a, 0xe5, 0x3b, 0x1b, 0x5e, 0xb3, 0xea, 0x54, 0x0a, 0xd2,
0x10, 0x8f, 0xc2, 0x31, 0x9b, 0x38, 0x6e, 0x7d, 0xec, 0x48, 0xdb, 0xa3, 0xc0, 0x1f, 0x2e, 0x0d,
0xdd, 0xd9, 0xc9, 0x24, 0x9e, 0xee, 0x64, 0x12, 0xfa, 0x9b, 0x30, 0x1a, 0x0e, 0x45, 0x1b, 0xae,
0x43, 0x09, 0x5e, 0x82, 0xe3, 0x25, 0xbe, 0xc4, 0x62, 0xa5, 0x72, 0x67, 0x8c, 0x4e, 0x51, 0x28,
0x91, 0x45, 0x31, 0xd6, 0xdc, 0xaa, 0x53, 0x90, 0x96, 0xfa, 0x4f, 0x08, 0x4e, 0xb3, 0xd3, 0x56,
0x6b, 0x35, 0x71, 0x20, 0x7d, 0x16, 0xf0, 0xeb, 0x00, 0x7e, 0x69, 0x59, 0x06, 0xa9, 0xdc, 0x74,
0x08, 0x07, 0x27, 0x52, 0xa2, 0xb9, 0x66, 0x55, 0x24, 0x59, 0x85, 0x80, 0x27, 0x9e, 0x82, 0x13,
0x4d, 0x42, 0xdd, 0xda, 0x4d, 0x52, 0xe4, 0x64, 0x1c, 0x9d, 0x44, 0xd9, 0xa1, 0xc2, 0x88, 0x58,
0xbc, 0xdc, 0xc5, 0xc9, 0x2e, 0x82, 0xb1, 0xde, 0x34, 0x04, 0x31, 0xdb, 0x30, 0x24, 0xd2, 0x6d,
0x27, 0x72, 0x34, 0x92, 0x99, 0xfc, 0xfa, 0xc3, 0xc7, 0x99, 0xc4, 0xb7, 0x7f, 0x64, 0xb2, 0x95,
0xaa, 0xf7, 0xc1, 0x56, 0xc9, 0x28, 0xbb, 0x75, 0xd1, 0x19, 0xe2, 0xbf, 0x05, 0x6a, 0x6f, 0x9a,
0x5e, 0xab, 0x41, 0x28, 0x73, 0xa0, 0xf7, 0x9e, 0x3c, 0x98, 0x1b, 0xa9, 0x91, 0x8a, 0x55, 0x6e,
0x15, 0xdb, 0xbd, 0x47, 0xef, 0x3f, 0x79, 0x30, 0x87, 0x0a, 0x9d, 0x90, 0xf8, 0x8a, 0x82, 0x92,
0x99, 0x7d, 0x29, 0xe1, 0xd8, 0x83, 0x9c, 0xe8, 0x5f, 0x21, 0x98, 0x60, 0x49, 0x6e, 0x34, 0x88,
0x63, 0x5b, 0xa5, 0x1a, 0xf9, 0x0f, 0x55, 0x2c, 0x50, 0x8c, 0xa7, 0x08, 0xd2, 0xfd, 0x70, 0xfe,
0xcf, 0x4a, 0xd2, 0x82, 0x29, 0x65, 0xa6, 0xf9, 0x16, 0xeb, 0xd0, 0x7f, 0x72, 0x0c, 0xbc, 0x07,
0x67, 0xa3, 0x43, 0x3f, 0xcb, 0x58, 0xd8, 0x14, 0x53, 0xe1, 0x1d, 0xd7, 0xb3, 0x6a, 0x1b, 0x5b,
0x8d, 0x46, 0xad, 0x25, 0x73, 0x09, 0xf7, 0x0b, 0x1a, 0x40, 0xbf, 0x3c, 0x96, 0x2f, 0x6f, 0x28,
0x9a, 0x80, 0xdf, 0x82, 0x24, 0x65, 0x2b, 0xff, 0x5e, 0x9f, 0x88, 0x80, 0x83, 0xeb, 0x92, 0x79,
0x31, 0xb1, 0x79, 0x6a, 0x57, 0xdf, 0x97, 0x54, 0x76, 0x4a, 0x8c, 0x02, 0x25, 0xd6, 0xaf, 0xc3,
0x0b, 0x5d, 0xd6, 0x82, 0x8a, 0x65, 0x48, 0x5a, 0x75, 0x77, 0xcb, 0xf1, 0xf6, 0x2d, 0x64, 0x7e,
0xb8, 0x4d, 0x85, 0xc8, 0x86, 0xfb, 0xe8, 0xa3, 0x80, 0xd9, 0xb1, 0xd7, 0xac, 0xa6, 0x55, 0x97,
0x13, 0x43, 0xbf, 0x2e, 0xee, 0x2d, 0xb9, 0x2a, 0x42, 0xad, 0x40, 0xb2, 0xc1, 0x56, 0x44, 0xa8,
0x71, 0x43, 0x71, 0xbf, 0x1b, 0xdc, 0x29, 0x14, 0x8c, 0x7b, 0xe9, 0x36, 0x68, 0xec, 0x58, 0xd6,
0x8a, 0xf4, 0x2d, 0xe2, 0x59, 0xb6, 0xe5, 0x59, 0x03, 0x6e, 0x21, 0xfd, 0x7b, 0x04, 0xe3, 0xca,
0x30, 0x22, 0x8b, 0x75, 0x18, 0xae, 0x8b, 0x35, 0x39, 0x66, 0x26, 0x94, 0x89, 0x48, 0xcf, 0x60,
0x2a, 0xbe, 0xeb, 0xe0, 0x1a, 0x61, 0x11, 0xce, 0xf8, 0x78, 0xbb, 0x59, 0x51, 0x77, 0x43, 0x29,
0xc8, 0x64, 0x4f, 0x86, 0x97, 0x61, 0x48, 0xc2, 0x14, 0x3c, 0xc6, 0x4f, 0xb0, 0xe3, 0xa9, 0xaf,
0xc0, 0x74, 0x6f, 0x8c, 0x7c, 0x8b, 0x77, 0x21, 0x1f, 0x4b, 0x91, 0x18, 0x5d, 0x98, 0xd9, 0xd7,
0x7f, 0xa0, 0x80, 0x6f, 0x89, 0xf1, 0xc4, 0x02, 0x5e, 0xbd, 0xe5, 0x90, 0x26, 0x8d, 0x44, 0x38,
0xa8, 0x4b, 0x4e, 0xff, 0x08, 0x01, 0xf8, 0x41, 0x0f, 0x35, 0xd7, 0x57, 0xfc, 0x79, 0x7c, 0xe4,
0x00, 0xaf, 0x71, 0x67, 0x34, 0x7f, 0x23, 0xa7, 0x65, 0x28, 0x79, 0x41, 0x6f, 0x1e, 0x46, 0x58,
0xc2, 0x45, 0x97, 0xad, 0x8b, 0xa6, 0xcf, 0x28, 0x29, 0xf6, 0xfd, 0x0b, 0x29, 0xdb, 0x3f, 0x6b,
0x90, 0x97, 0x23, 0xaf, 0xd2, 0x06, 0x71, 0xec, 0x37, 0x9c, 0xf6, 0x15, 0x65, 0xcb, 0x2a, 0xbd,
0x08, 0x49, 0x16, 0x92, 0x23, 0x1c, 0x2e, 0x88, 0xa7, 0xae, 0x3a, 0x95, 0x0f, 0x5d, 0xa7, 0xfb,
0x92, 0xa4, 0x50, 0x6c, 0x41, 0xd2, 0x1a, 0x8c, 0x50, 0xe2, 0xd8, 0x45, 0xc2, 0xd7, 0x05, 0x49,
0x93, 0x4a, 0x92, 0x82, 0xfe, 0x29, 0xea, 0x3f, 0x74, 0xb1, 0x54, 0x3e, 0x34, 0x4b, 0xb9, 0x4f,
0x9f, 0x87, 0x63, 0x0c, 0x2a, 0xfe, 0x02, 0xc1, 0x71, 0x71, 0x89, 0xe3, 0xac, 0x12, 0x8d, 0xe2,
0x13, 0x43, 0x9b, 0x8d, 0x61, 0xc9, 0xc3, 0xea, 0xaf, 0xdf, 0x69, 0xb7, 0xd2, 0xc7, 0xbf, 0xfc,
0xf5, 0xf9, 0x91, 0x1c, 0x3e, 0x67, 0xaa, 0xbf, 0x8e, 0xb8, 0x44, 0x32, 0x6f, 0x8b, 0x7e, 0xdd,
0x36, 0x4b, 0x2d, 0x2e, 0xc1, 0xf1, 0x0e, 0x82, 0x54, 0x40, 0x5f, 0xe3, 0xf9, 0xfe, 0x91, 0x7b,
0xbf, 0x26, 0xb4, 0x85, 0x98, 0xd6, 0x02, 0xeb, 0x79, 0x1f, 0xeb, 0x2c, 0x9e, 0x89, 0x89, 0x15,
0xff, 0x88, 0xe0, 0x64, 0x8f, 0xea, 0xc4, 0xb9, 0xfe, 0xa1, 0xfb, 0x49, 0x69, 0x6d, 0xe9, 0x40,
0x3e, 0x02, 0xf4, 0x8a, 0x0f, 0x7a, 0x09, 0x2f, 0x2a, 0x41, 0x53, 0xe9, 0x5c, 0x54, 0xc0, 0xff,
0x15, 0xc1, 0xe9, 0x3e, 0x7a, 0x0e, 0xbf, 0x1a, 0x1f, 0x50, 0x58, 0x7d, 0x6a, 0x17, 0x0f, 0xe1,
0x29, 0x12, 0xba, 0xe2, 0x27, 0xb4, 0x8c, 0x2f, 0x1d, 0x38, 0x21, 0xbf, 0x77, 0xee, 0x22, 0x48,
0x05, 0xe4, 0x5d, 0x54, 0xef, 0xf4, 0x6a, 0xce, 0xa8, 0xde, 0x51, 0x68, 0x46, 0x3d, 0xeb, 0xa3,
0x9e, 0xc0, 0xe3, 0x6a, 0xd4, 0x1c, 0xc6, 0x5d, 0x04, 0x43, 0x52, 0x67, 0xe1, 0x88, 0x37, 0xa9,
0x4b, 0xb9, 0x69, 0x73, 0x71, 0x4c, 0x05, 0x9a, 0x45, 0x1f, 0xcd, 0x34, 0x3e, 0x1b, 0x81, 0xc6,
0x67, 0xeb, 0x13, 0x04, 0x49, 0x2e, 0xae, 0xf0, 0x4c, 0xff, 0x48, 0x21, 0x25, 0xa7, 0x65, 0xf7,
0x37, 0x8c, 0x4f, 0x0f, 0x97, 0x71, 0xf8, 0x3b, 0x04, 0x27, 0x42, 0x97, 0x3a, 0x36, 0xfa, 0x47,
0x51, 0x89, 0x1a, 0xcd, 0x8c, 0x6d, 0x2f, 0xc0, 0x5d, 0xf4, 0xc1, 0x19, 0x78, 0x5e, 0x09, 0x8e,
0xdf, 0x15, 0x45, 0xa9, 0x06, 0xcc, 0xdb, 0x6c, 0x61, 0x1b, 0xff, 0x8e, 0x40, 0xeb, 0x2f, 0x41,
0xf0, 0x6b, 0x31, 0xa1, 0xa8, 0x84, 0x8f, 0xb6, 0x7c, 0x38, 0x67, 0x91, 0xd4, 0xaa, 0x9f, 0xd4,
0x05, 0x7c, 0x3e, 0x4e, 0x52, 0xc5, 0x52, 0xab, 0xc8, 0x2e, 0x90, 0x22, 0xe5, 0xe8, 0xbf, 0x46,
0xf0, 0x5c, 0x58, 0xe6, 0xe2, 0xfd, 0xb8, 0xed, 0xd6, 0xdd, 0xda, 0xb9, 0xf8, 0x0e, 0xf1, 0x7b,
0xb7, 0x0b, 0x38, 0xfe, 0x12, 0x41, 0x2a, 0x20, 0x4d, 0xa2, 0xde, 0xf4, 0x5e, 0xf9, 0x16, 0xf5,
0xa6, 0x2b, 0xf4, 0x8e, 0x7e, 0xc1, 0xc7, 0xf7, 0x0a, 0x9e, 0xed, 0x8f, 0x4f, 0xe8, 0xa1, 0x4e,
0xab, 0xdc, 0x43, 0x90, 0x0a, 0x5c, 0xed, 0x51, 0x20, 0x7b, 0xd5, 0x4b, 0x14, 0x48, 0x85, 0xde,
0xd0, 0x0d, 0x1f, 0xe4, 0x14, 0x7e, 0x59, 0x3d, 0x00, 0x02, 0x7a, 0x24, 0xbf, 0xf6, 0x70, 0x37,
0x8d, 0x1e, 0xed, 0xa6, 0xd1, 0x9f, 0xbb, 0x69, 0xf4, 0xd9, 0x5e, 0x3a, 0xf1, 0x68, 0x2f, 0x9d,
0xf8, 0x6d, 0x2f, 0x9d, 0x78, 0x77, 0x36, 0xf2, 0xcb, 0xf6, 0x43, 0x7e, 0x26, 0xfb, 0xc0, 0x2d,
0x25, 0xd9, 0xdf, 0x25, 0x97, 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xda, 0xbd, 0xa1, 0x0d, 0xba,
0x15, 0x00, 0x00,
// 1336 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x41, 0x6f, 0x1b, 0x45,
0x14, 0xf6, 0xa4, 0xaa, 0x93, 0x3c, 0xa7, 0x48, 0x99, 0x06, 0x9a, 0x6c, 0x88, 0x1d, 0x36, 0x55,
0xe2, 0x84, 0x64, 0xb7, 0x71, 0xa2, 0x42, 0x4b, 0x88, 0x14, 0xa7, 0xa4, 0x07, 0x84, 0x5a, 0x1c,
0x7a, 0x81, 0x83, 0xb5, 0xf6, 0x0e, 0xc6, 0x8a, 0xbd, 0xeb, 0x7a, 0x36, 0x2d, 0xab, 0x2a, 0x08,
0x21, 0x21, 0xf5, 0x88, 0x44, 0x4f, 0x95, 0x90, 0x22, 0x24, 0xa0, 0x02, 0xa9, 0xea, 0x81, 0x03,
0x07, 0x8e, 0x1c, 0x2a, 0x4e, 0x15, 0x1c, 0x40, 0x1c, 0x0a, 0x4a, 0x90, 0xda, 0x9f, 0x81, 0x3c,
0x33, 0xeb, 0xdd, 0xb5, 0xd7, 0xeb, 0x8d, 0x6b, 0xaa, 0xaa, 0x97, 0xc4, 0x9e, 0x79, 0x6f, 0xde,
0xf7, 0xbe, 0x79, 0xf3, 0xe6, 0x1b, 0x43, 0xaa, 0x68, 0xd2, 0xaa, 0x49, 0xd5, 0x82, 0x66, 0xec,
0xa8, 0xd7, 0x96, 0x0b, 0xc4, 0xd2, 0x96, 0xd5, 0xab, 0xbb, 0xa4, 0x6e, 0x2b, 0xb5, 0xba, 0x69,
0x99, 0xf8, 0x24, 0x37, 0x50, 0x1a, 0x06, 0x8a, 0x30, 0x90, 0x16, 0x9a, 0x5e, 0x94, 0x70, 0xeb,
0xa6, 0x6f, 0x4d, 0x2b, 0x95, 0x0d, 0xcd, 0x2a, 0x9b, 0x06, 0x5f, 0x40, 0x1a, 0x2b, 0x99, 0x25,
0x93, 0x7d, 0x54, 0x1b, 0x9f, 0xc4, 0xe8, 0xcb, 0x25, 0xd3, 0x2c, 0x55, 0x88, 0xaa, 0xd5, 0xca,
0xaa, 0x66, 0x18, 0xa6, 0xc5, 0x5c, 0xa8, 0x98, 0x4d, 0x7a, 0xd7, 0x77, 0x56, 0x2e, 0x9a, 0x65,
0xa3, 0x6d, 0xde, 0x83, 0x9a, 0x21, 0xe4, 0xf3, 0x13, 0x7c, 0x3e, 0xcf, 0xc3, 0x8a, 0x0c, 0xf8,
0xd4, 0xa4, 0x70, 0x75, 0x50, 0x7b, 0x93, 0x95, 0x46, 0xb5, 0x6a, 0xd9, 0x30, 0x55, 0xf6, 0x97,
0x0f, 0xc9, 0x65, 0x38, 0xf9, 0x6e, 0xc3, 0x22, 0xab, 0x55, 0x34, 0xa3, 0x48, 0x72, 0xe4, 0xea,
0x2e, 0xa1, 0x16, 0xce, 0xc0, 0xa0, 0xa6, 0xeb, 0x75, 0x42, 0xe9, 0x38, 0x9a, 0x46, 0xe9, 0xe1,
0xec, 0xf8, 0x6f, 0x3f, 0x2e, 0x8d, 0x89, 0x48, 0x1b, 0x7c, 0x66, 0xdb, 0xaa, 0x97, 0x8d, 0x52,
0xce, 0x31, 0xc4, 0x63, 0x70, 0x5c, 0x27, 0x86, 0x59, 0x1d, 0x1f, 0x68, 0x78, 0xe4, 0xf8, 0x97,
0xf3, 0x43, 0x37, 0xf7, 0x53, 0xb1, 0xc7, 0xfb, 0xa9, 0x98, 0xfc, 0x36, 0x8c, 0xf9, 0x43, 0xd1,
0x9a, 0x69, 0x50, 0x82, 0x57, 0x60, 0xb0, 0xc0, 0x87, 0x58, 0xac, 0x44, 0x66, 0x42, 0x69, 0x6e,
0x0a, 0x25, 0xce, 0xa6, 0x28, 0x9b, 0x66, 0xd9, 0xc8, 0x39, 0x96, 0xf2, 0x2f, 0x08, 0x4e, 0xb1,
0xd5, 0x36, 0x2a, 0x15, 0xb1, 0x20, 0x7d, 0x12, 0xf0, 0x5b, 0x00, 0xee, 0xd6, 0xb2, 0x0c, 0x12,
0x99, 0x59, 0x1f, 0x0e, 0x4e, 0xa4, 0x83, 0xe6, 0xb2, 0x56, 0x72, 0xc8, 0xca, 0x79, 0x3c, 0xf1,
0x0c, 0x9c, 0xa8, 0x13, 0x6a, 0x56, 0xae, 0x91, 0x3c, 0x27, 0xe3, 0xd8, 0x34, 0x4a, 0x0f, 0xe5,
0x46, 0xc4, 0xe0, 0x85, 0x16, 0x4e, 0x0e, 0x10, 0x8c, 0xb7, 0xa7, 0x21, 0x88, 0xd9, 0x83, 0x21,
0x91, 0x6e, 0x23, 0x91, 0x63, 0xa1, 0xcc, 0x64, 0xb7, 0xee, 0x3f, 0x4c, 0xc5, 0xbe, 0xff, 0x3b,
0x95, 0x2e, 0x95, 0xad, 0x8f, 0x76, 0x0b, 0x4a, 0xd1, 0xac, 0x8a, 0xca, 0x10, 0xff, 0x96, 0xa8,
0xbe, 0xa3, 0x5a, 0x76, 0x8d, 0x50, 0xe6, 0x40, 0x6f, 0x3f, 0xba, 0xb7, 0x30, 0x52, 0x21, 0x25,
0xad, 0x68, 0xe7, 0x1b, 0xb5, 0x47, 0xef, 0x3c, 0xba, 0xb7, 0x80, 0x72, 0xcd, 0x90, 0xf8, 0x62,
0x00, 0x25, 0x73, 0x5d, 0x29, 0xe1, 0xd8, 0xbd, 0x9c, 0xc8, 0xdf, 0x20, 0x98, 0x62, 0x49, 0x6e,
0xd7, 0x88, 0xa1, 0x6b, 0x85, 0x0a, 0x79, 0x86, 0x76, 0xcc, 0xb3, 0x19, 0x8f, 0x11, 0x24, 0x3b,
0xe1, 0x7c, 0xce, 0xb6, 0xc4, 0x86, 0x99, 0xc0, 0x4c, 0xb3, 0x36, 0xab, 0xd0, 0xff, 0xb3, 0x0d,
0x7c, 0x00, 0xa7, 0xc3, 0x43, 0x3f, 0x49, 0x5b, 0xd8, 0x11, 0x5d, 0xe1, 0x3d, 0xd3, 0xd2, 0x2a,
0xdb, 0xbb, 0xb5, 0x5a, 0xc5, 0x76, 0x72, 0xf1, 0xd7, 0x0b, 0xea, 0x43, 0xbd, 0x3c, 0x74, 0x0e,
0xaf, 0x2f, 0x9a, 0x80, 0x6f, 0x43, 0x9c, 0xb2, 0x91, 0xa7, 0x57, 0x27, 0x22, 0x60, 0xff, 0xaa,
0x64, 0x51, 0x74, 0x6c, 0x9e, 0xda, 0xa5, 0x0f, 0x1d, 0x2a, 0x9b, 0x5b, 0x8c, 0x3c, 0x5b, 0x2c,
0x5f, 0x81, 0x17, 0x5b, 0xac, 0x05, 0x15, 0x6b, 0x10, 0xd7, 0xaa, 0xe6, 0xae, 0x61, 0x75, 0xdd,
0xc8, 0xec, 0x70, 0x83, 0x0a, 0x91, 0x0d, 0xf7, 0x91, 0xc7, 0x00, 0xb3, 0x65, 0x2f, 0x6b, 0x75,
0xad, 0xea, 0x74, 0x0c, 0xf9, 0x8a, 0xb8, 0xb7, 0x9c, 0x51, 0x11, 0x6a, 0x1d, 0xe2, 0x35, 0x36,
0x22, 0x42, 0x4d, 0x2a, 0x01, 0xf7, 0xbb, 0xc2, 0x9d, 0x7c, 0xc1, 0xb8, 0x97, 0xac, 0x83, 0xc4,
0x96, 0x65, 0xa5, 0x48, 0xdf, 0x21, 0x96, 0xa6, 0x6b, 0x96, 0xd6, 0xe7, 0x12, 0x92, 0xef, 0x22,
0x98, 0x0c, 0x0c, 0x23, 0xb2, 0xd8, 0x82, 0xe1, 0xaa, 0x18, 0x73, 0xda, 0xcc, 0x54, 0x60, 0x22,
0x8e, 0xa7, 0x37, 0x15, 0xd7, 0xb5, 0x7f, 0x85, 0xb0, 0x0c, 0x13, 0x2e, 0xde, 0x56, 0x56, 0x82,
0xab, 0xa1, 0xe0, 0x65, 0xb2, 0x2d, 0xc3, 0x0b, 0x30, 0xe4, 0xc0, 0x14, 0x3c, 0x46, 0x4f, 0xb0,
0xe9, 0x29, 0xaf, 0xc3, 0x6c, 0x7b, 0x8c, 0xac, 0xcd, 0xab, 0x90, 0xb7, 0xa5, 0x50, 0x8c, 0x26,
0xcc, 0x75, 0xf5, 0xef, 0x2b, 0xe0, 0xeb, 0xa2, 0x3d, 0xb1, 0x80, 0x97, 0xae, 0x1b, 0xa4, 0x4e,
0x43, 0x11, 0xf6, 0xeb, 0x92, 0x93, 0x3f, 0x45, 0x00, 0x6e, 0xd0, 0x9e, 0xfa, 0xfa, 0xba, 0xdb,
0x8f, 0x07, 0x8e, 0x70, 0x8c, 0x9b, 0xad, 0xf9, 0x3b, 0xa7, 0x5b, 0xfa, 0x92, 0x17, 0xf4, 0x66,
0x61, 0x84, 0x25, 0x9c, 0x37, 0xd9, 0xb8, 0x28, 0xfa, 0x54, 0x20, 0xc5, 0xae, 0x7f, 0x2e, 0xa1,
0xbb, 0x6b, 0xf5, 0xaf, 0xda, 0x3f, 0x11, 0x32, 0xc0, 0x03, 0x54, 0x14, 0xc5, 0xd3, 0xd9, 0xac,
0xbb, 0x08, 0x52, 0x1d, 0x01, 0x3c, 0x8b, 0x84, 0xd9, 0xa2, 0xac, 0xb7, 0x89, 0xa1, 0xbf, 0x65,
0x34, 0xee, 0x74, 0xdd, 0x61, 0xea, 0x25, 0x88, 0xb3, 0x90, 0x1c, 0xe1, 0x70, 0x4e, 0x7c, 0x6b,
0xe1, 0xaa, 0xd8, 0x33, 0x57, 0x77, 0x9c, 0xaa, 0xf2, 0xc5, 0x16, 0x24, 0x6d, 0xc2, 0x08, 0x25,
0x86, 0x9e, 0x27, 0x7c, 0x5c, 0x90, 0x34, 0x1d, 0x48, 0x92, 0xd7, 0x3f, 0x41, 0xdd, 0x2f, 0x2d,
0x2c, 0x15, 0x7b, 0x66, 0x29, 0xf3, 0xeb, 0x28, 0x1c, 0x67, 0x50, 0xf1, 0x57, 0x08, 0x06, 0x85,
0xea, 0xc1, 0xe9, 0x40, 0x34, 0x01, 0x6f, 0x32, 0x69, 0x3e, 0x82, 0x25, 0x0f, 0x2b, 0xbf, 0x79,
0xb3, 0x71, 0xf6, 0x3e, 0xfb, 0xfd, 0xdf, 0x2f, 0x07, 0x32, 0xf8, 0x8c, 0x1a, 0xfc, 0x9c, 0xe4,
0x9a, 0x52, 0xbd, 0x21, 0x0e, 0xf8, 0x9e, 0x5a, 0xb0, 0xf9, 0x9b, 0x05, 0xef, 0x23, 0x48, 0x78,
0x1e, 0x24, 0x78, 0xb1, 0x73, 0xe4, 0xf6, 0xe7, 0x97, 0xb4, 0x14, 0xd1, 0x5a, 0x60, 0x5d, 0x75,
0xb1, 0xce, 0xe3, 0xb9, 0x88, 0x58, 0xf1, 0xcf, 0x08, 0x46, 0xdb, 0x64, 0x3a, 0xce, 0x74, 0x0e,
0xdd, 0xe9, 0xed, 0x21, 0xad, 0x1c, 0xc9, 0x47, 0x80, 0x5e, 0x77, 0x41, 0xaf, 0xe0, 0xe5, 0x40,
0xd0, 0xd4, 0x71, 0xce, 0x07, 0xc0, 0xff, 0x03, 0xc1, 0xa9, 0x0e, 0x02, 0x18, 0xbf, 0x1e, 0x1d,
0x90, 0x5f, 0xae, 0x4b, 0xe7, 0x7a, 0xf0, 0x14, 0x09, 0x5d, 0x74, 0x13, 0x5a, 0xc3, 0xe7, 0x8f,
0x9c, 0x90, 0x5b, 0x3b, 0xb7, 0x10, 0x24, 0x3c, 0x7a, 0x38, 0xac, 0x76, 0xda, 0x45, 0x7a, 0x58,
0xed, 0x04, 0x88, 0x6c, 0x39, 0xed, 0xa2, 0x9e, 0xc2, 0x93, 0xc1, 0xa8, 0x39, 0x8c, 0x5b, 0x08,
0x86, 0x1c, 0x61, 0x8a, 0x43, 0x4e, 0x52, 0x8b, 0xd4, 0x95, 0x16, 0xa2, 0x98, 0x0a, 0x34, 0xcb,
0x2e, 0x9a, 0x59, 0x7c, 0x3a, 0x04, 0x8d, 0xcb, 0xd6, 0xe7, 0x08, 0xe2, 0x5c, 0x8d, 0xe2, 0xb9,
0xce, 0x91, 0x7c, 0xd2, 0x57, 0x4a, 0x77, 0x37, 0x8c, 0x4e, 0x0f, 0xd7, 0xbd, 0xf8, 0x07, 0x04,
0x27, 0x7c, 0x2a, 0x08, 0x2b, 0x9d, 0xa3, 0x04, 0xa9, 0x40, 0x49, 0x8d, 0x6c, 0x2f, 0xc0, 0x9d,
0x73, 0xc1, 0x29, 0x78, 0x31, 0x10, 0x1c, 0xbf, 0x2b, 0xf2, 0x8e, 0x7c, 0x52, 0x6f, 0xb0, 0x81,
0x3d, 0xfc, 0x17, 0x02, 0xa9, 0xb3, 0x66, 0xc3, 0x6f, 0x44, 0x84, 0x12, 0xa4, 0x14, 0xa5, 0xb5,
0xde, 0x9c, 0x45, 0x52, 0x1b, 0x6e, 0x52, 0x67, 0xf1, 0x6a, 0x94, 0xa4, 0xf2, 0x05, 0x3b, 0xcf,
0x2e, 0x90, 0x3c, 0xe5, 0xe8, 0xbf, 0x45, 0xf0, 0x82, 0xff, 0x5d, 0x80, 0xbb, 0x71, 0xdb, 0xfa,
0x50, 0x91, 0xce, 0x44, 0x77, 0x88, 0x5e, 0xbb, 0x2d, 0xc0, 0xf1, 0xd7, 0x08, 0x12, 0x1e, 0x85,
0x12, 0x76, 0xd2, 0xdb, 0xf5, 0x6e, 0xd8, 0x49, 0x0f, 0x10, 0x88, 0xf2, 0x59, 0x17, 0xdf, 0xab,
0x78, 0xbe, 0x33, 0x3e, 0xa1, 0x87, 0x9a, 0xa5, 0xf2, 0x13, 0x02, 0xdc, 0x2e, 0xa3, 0xf0, 0x4a,
0xa4, 0xe8, 0x7e, 0xd5, 0x27, 0xad, 0x1e, 0xcd, 0x49, 0x20, 0x7f, 0xcd, 0x45, 0xbe, 0x88, 0x17,
0xba, 0x22, 0x6f, 0xd6, 0x03, 0xbe, 0x8d, 0x20, 0xe1, 0x51, 0x25, 0x61, 0xfc, 0xb6, 0x0b, 0xaf,
0x30, 0x7e, 0x03, 0xa4, 0x92, 0xac, 0xb8, 0x28, 0x67, 0xf0, 0x2b, 0xc1, 0xbd, 0xcb, 0x23, 0xa5,
0xb2, 0x9b, 0xf7, 0x0f, 0x92, 0xe8, 0xc1, 0x41, 0x12, 0xfd, 0x73, 0x90, 0x44, 0x5f, 0x1c, 0x26,
0x63, 0x0f, 0x0e, 0x93, 0xb1, 0x3f, 0x0f, 0x93, 0xb1, 0xf7, 0xe7, 0x43, 0x7f, 0xc5, 0xf8, 0x98,
0xaf, 0xc9, 0x7e, 0xcc, 0x28, 0xc4, 0xd9, 0x6f, 0xd0, 0x2b, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff,
0x46, 0x5f, 0xc6, 0x98, 0xa6, 0x17, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -1434,9 +1554,9 @@ type QueryClient interface {
SupplyOf(ctx context.Context, in *QuerySupplyOfRequest, opts ...grpc.CallOption) (*QuerySupplyOfResponse, error)
// Params queries the parameters of x/bank module.
Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadata queries the client metadata of a given coin denomination.
DenomMetadata(ctx context.Context, in *QueryDenomMetadataRequest, opts ...grpc.CallOption) (*QueryDenomMetadataResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadataByQueryString queries the client metadata of a given coin denomination.
DenomMetadataByQueryString(ctx context.Context, in *QueryDenomMetadataByQueryStringRequest, opts ...grpc.CallOption) (*QueryDenomMetadataByQueryStringResponse, error)
// DenomsMetadata queries the client metadata for all registered coin
// denominations.
@ -1449,6 +1569,11 @@ type QueryClient interface {
//
// Since: cosmos-sdk 0.46
DenomOwners(ctx context.Context, in *QueryDenomOwnersRequest, opts ...grpc.CallOption) (*QueryDenomOwnersResponse, error)
// DenomOwnersByQuery queries for all account addresses that own a particular token
// denomination.
//
// Since: cosmos-sdk 0.50.3
DenomOwnersByQuery(ctx context.Context, in *QueryDenomOwnersByQueryRequest, opts ...grpc.CallOption) (*QueryDenomOwnersByQueryResponse, error)
// SendEnabled queries for SendEnabled entries.
//
// This query only returns denominations that have specific SendEnabled settings.
@ -1566,6 +1691,15 @@ func (c *queryClient) DenomOwners(ctx context.Context, in *QueryDenomOwnersReque
return out, nil
}
func (c *queryClient) DenomOwnersByQuery(ctx context.Context, in *QueryDenomOwnersByQueryRequest, opts ...grpc.CallOption) (*QueryDenomOwnersByQueryResponse, error) {
out := new(QueryDenomOwnersByQueryResponse)
err := c.cc.Invoke(ctx, "/cosmos.bank.v1beta1.Query/DenomOwnersByQuery", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *queryClient) SendEnabled(ctx context.Context, in *QuerySendEnabledRequest, opts ...grpc.CallOption) (*QuerySendEnabledResponse, error) {
out := new(QuerySendEnabledResponse)
err := c.cc.Invoke(ctx, "/cosmos.bank.v1beta1.Query/SendEnabled", in, out, opts...)
@ -1612,9 +1746,9 @@ type QueryServer interface {
SupplyOf(context.Context, *QuerySupplyOfRequest) (*QuerySupplyOfResponse, error)
// Params queries the parameters of x/bank module.
Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadata queries the client metadata of a given coin denomination.
DenomMetadata(context.Context, *QueryDenomMetadataRequest) (*QueryDenomMetadataResponse, error)
// DenomsMetadata queries the client metadata of a given coin denomination.
// DenomMetadataByQueryString queries the client metadata of a given coin denomination.
DenomMetadataByQueryString(context.Context, *QueryDenomMetadataByQueryStringRequest) (*QueryDenomMetadataByQueryStringResponse, error)
// DenomsMetadata queries the client metadata for all registered coin
// denominations.
@ -1627,6 +1761,11 @@ type QueryServer interface {
//
// Since: cosmos-sdk 0.46
DenomOwners(context.Context, *QueryDenomOwnersRequest) (*QueryDenomOwnersResponse, error)
// DenomOwnersByQuery queries for all account addresses that own a particular token
// denomination.
//
// Since: cosmos-sdk 0.50.3
DenomOwnersByQuery(context.Context, *QueryDenomOwnersByQueryRequest) (*QueryDenomOwnersByQueryResponse, error)
// SendEnabled queries for SendEnabled entries.
//
// This query only returns denominations that have specific SendEnabled settings.
@ -1674,6 +1813,9 @@ func (*UnimplementedQueryServer) DenomsMetadata(ctx context.Context, req *QueryD
func (*UnimplementedQueryServer) DenomOwners(ctx context.Context, req *QueryDenomOwnersRequest) (*QueryDenomOwnersResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DenomOwners not implemented")
}
func (*UnimplementedQueryServer) DenomOwnersByQuery(ctx context.Context, req *QueryDenomOwnersByQueryRequest) (*QueryDenomOwnersByQueryResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DenomOwnersByQuery not implemented")
}
func (*UnimplementedQueryServer) SendEnabled(ctx context.Context, req *QuerySendEnabledRequest) (*QuerySendEnabledResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SendEnabled not implemented")
}
@ -1880,6 +2022,24 @@ func _Query_DenomOwners_Handler(srv interface{}, ctx context.Context, dec func(i
return interceptor(ctx, in, info, handler)
}
func _Query_DenomOwnersByQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QueryDenomOwnersByQueryRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(QueryServer).DenomOwnersByQuery(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/cosmos.bank.v1beta1.Query/DenomOwnersByQuery",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(QueryServer).DenomOwnersByQuery(ctx, req.(*QueryDenomOwnersByQueryRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Query_SendEnabled_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(QuerySendEnabledRequest)
if err := dec(in); err != nil {
@ -1946,6 +2106,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{
MethodName: "DenomOwners",
Handler: _Query_DenomOwners_Handler,
},
{
MethodName: "DenomOwnersByQuery",
Handler: _Query_DenomOwnersByQuery_Handler,
},
{
MethodName: "SendEnabled",
Handler: _Query_SendEnabled_Handler,
@ -2835,6 +2999,97 @@ func (m *QueryDenomOwnersResponse) MarshalToSizedBuffer(dAtA []byte) (int, error
return len(dAtA) - i, nil
}
func (m *QueryDenomOwnersByQueryRequest) 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 *QueryDenomOwnersByQueryRequest) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *QueryDenomOwnersByQueryRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.Pagination != nil {
{
size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintQuery(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x12
}
if len(m.Denom) > 0 {
i -= len(m.Denom)
copy(dAtA[i:], m.Denom)
i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *QueryDenomOwnersByQueryResponse) 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 *QueryDenomOwnersByQueryResponse) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *QueryDenomOwnersByQueryResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.Pagination != nil {
{
size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintQuery(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x12
}
if len(m.DenomOwners) > 0 {
for iNdEx := len(m.DenomOwners) - 1; iNdEx >= 0; iNdEx-- {
{
size, err := m.DenomOwners[iNdEx].MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintQuery(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0xa
}
}
return len(dAtA) - i, nil
}
func (m *QuerySendEnabledRequest) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -3285,6 +3540,42 @@ func (m *QueryDenomOwnersResponse) Size() (n int) {
return n
}
func (m *QueryDenomOwnersByQueryRequest) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.Denom)
if l > 0 {
n += 1 + l + sovQuery(uint64(l))
}
if m.Pagination != nil {
l = m.Pagination.Size()
n += 1 + l + sovQuery(uint64(l))
}
return n
}
func (m *QueryDenomOwnersByQueryResponse) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if len(m.DenomOwners) > 0 {
for _, e := range m.DenomOwners {
l = e.Size()
n += 1 + l + sovQuery(uint64(l))
}
}
if m.Pagination != nil {
l = m.Pagination.Size()
n += 1 + l + sovQuery(uint64(l))
}
return n
}
func (m *QuerySendEnabledRequest) Size() (n int) {
if m == nil {
return 0
@ -5618,6 +5909,244 @@ func (m *QueryDenomOwnersResponse) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *QueryDenomOwnersByQueryRequest) 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: QueryDenomOwnersByQueryRequest: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: QueryDenomOwnersByQueryRequest: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
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
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Pagination == nil {
m.Pagination = &query.PageRequest{}
}
if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipQuery(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthQuery
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *QueryDenomOwnersByQueryResponse) 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: QueryDenomOwnersByQueryResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: QueryDenomOwnersByQueryResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field DenomOwners", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.DenomOwners = append(m.DenomOwners, &DenomOwner{})
if err := m.DenomOwners[len(m.DenomOwners)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowQuery
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Pagination == nil {
m.Pagination = &query.PageResponse{}
}
if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipQuery(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthQuery
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *QuerySendEnabledRequest) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0

View File

@ -609,6 +609,42 @@ func local_request_Query_DenomOwners_0(ctx context.Context, marshaler runtime.Ma
}
var (
filter_Query_DenomOwnersByQuery_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
func request_Query_DenomOwnersByQuery_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryDenomOwnersByQueryRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_DenomOwnersByQuery_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.DenomOwnersByQuery(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_Query_DenomOwnersByQuery_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryDenomOwnersByQueryRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_DenomOwnersByQuery_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.DenomOwnersByQuery(ctx, &protoReq)
return msg, metadata, err
}
var (
filter_Query_SendEnabled_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
@ -904,6 +940,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
})
mux.Handle("GET", pattern_Query_DenomOwnersByQuery_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_DenomOwnersByQuery_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_DenomOwnersByQuery_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_Query_SendEnabled_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@ -1188,6 +1247,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
})
mux.Handle("GET", pattern_Query_DenomOwnersByQuery_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_DenomOwnersByQuery_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_DenomOwnersByQuery_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_Query_SendEnabled_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
@ -1234,6 +1313,8 @@ var (
pattern_Query_DenomOwners_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", "denom_owners", "denom"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_DenomOwnersByQuery_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "bank", "v1beta1", "denom_owners_by_query"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_SendEnabled_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "bank", "v1beta1", "send_enabled"}, "", runtime.AssumeColonVerbOpt(false)))
)
@ -1260,5 +1341,7 @@ var (
forward_Query_DenomOwners_0 = runtime.ForwardResponseMessage
forward_Query_DenomOwnersByQuery_0 = runtime.ForwardResponseMessage
forward_Query_SendEnabled_0 = runtime.ForwardResponseMessage
)

View File

@ -316,6 +316,21 @@ func (mr *MockBankKeeperMockRecorder) DenomOwners(arg0, arg1 interface{}) *gomoc
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DenomOwners", reflect.TypeOf((*MockBankKeeper)(nil).DenomOwners), arg0, arg1)
}
// DenomOwnersByQuery mocks base method.
func (m *MockBankKeeper) DenomOwnersByQuery(arg0 context.Context, arg1 *types0.QueryDenomOwnersByQueryRequest) (*types0.QueryDenomOwnersByQueryResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "DenomOwnersByQuery", arg0, arg1)
ret0, _ := ret[0].(*types0.QueryDenomOwnersByQueryResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// DenomOwnersByQuery indicates an expected call of DenomOwnersByQuery.
func (mr *MockBankKeeperMockRecorder) DenomOwnersByQuery(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DenomOwnersByQuery", reflect.TypeOf((*MockBankKeeper)(nil).DenomOwnersByQuery), arg0, arg1)
}
// DenomsMetadata mocks base method.
func (m *MockBankKeeper) DenomsMetadata(arg0 context.Context, arg1 *types0.QueryDenomsMetadataRequest) (*types0.QueryDenomsMetadataResponse, error) {
m.ctrl.T.Helper()