Skip to content

Commit

Permalink
Token factory allow list proto changes
Browse files Browse the repository at this point in the history
  • Loading branch information
dssei committed Sep 13, 2024
1 parent 5e40d59 commit 0c29f85
Show file tree
Hide file tree
Showing 9 changed files with 426 additions and 30 deletions.
34 changes: 26 additions & 8 deletions packages/proto/proto/tokenfactory/query.proto
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ service Query {
// DenomAuthorityMetadata defines a gRPC query method for fetching
// DenomAuthorityMetadata for a particular denom.
rpc DenomAuthorityMetadata(QueryDenomAuthorityMetadataRequest)
returns (QueryDenomAuthorityMetadataResponse) {
returns (QueryDenomAuthorityMetadataResponse) {
option (google.api.http).get =
"/sei-protocol/seichain/tokenfactory/denoms/{denom}/authority_metadata";
"/sei-protocol/seichain/tokenfactory/denoms/{denom}/authority_metadata";
}

// DenomsMetadata defines a gRPC query method for fetching
Expand All @@ -35,9 +35,14 @@ service Query {
// DenomsFromCreator defines a gRPC query method for fetching all
// denominations created by a specific admin/creator.
rpc DenomsFromCreator(QueryDenomsFromCreatorRequest)
returns (QueryDenomsFromCreatorResponse) {
returns (QueryDenomsFromCreatorResponse) {
option (google.api.http).get =
"/sei-protocol/seichain/tokenfactory/denoms_from_creator/{creator}";
"/sei-protocol/seichain/tokenfactory/denoms_from_creator/{creator}";
}

// DenomAllowList defines a gRPC query method for fetching the denom allow list
rpc DenomAllowList(QueryDenomAllowListRequest) returns (QueryDenomAllowListResponse) {
option (google.api.http).get = "/sei-protocol/seichain/tokenfactory/denoms/allow_list";
}

}
Expand All @@ -48,13 +53,13 @@ message QueryParamsRequest {}
// QueryParamsResponse is the response type for the Query/Params RPC method.
message QueryParamsResponse {
// params defines the parameters of the module.
Params params = 1 [ (gogoproto.nullable) = false ];
Params params = 1 [(gogoproto.nullable) = false];
}

// QueryDenomAuthorityMetadataRequest defines the request structure for the
// DenomAuthorityMetadata gRPC query.
message QueryDenomAuthorityMetadataRequest {
string denom = 1 [ (gogoproto.moretags) = "yaml:\"denom\"" ];
string denom = 1 [(gogoproto.moretags) = "yaml:\"denom\""];
}

// QueryDenomAuthorityMetadataResponse defines the response structure for the
Expand All @@ -69,13 +74,13 @@ message QueryDenomAuthorityMetadataResponse {
// QueryDenomsFromCreatorRequest defines the request structure for the
// DenomsFromCreator gRPC query.
message QueryDenomsFromCreatorRequest {
string creator = 1 [ (gogoproto.moretags) = "yaml:\"creator\"" ];
string creator = 1 [(gogoproto.moretags) = "yaml:\"creator\""];
}

// QueryDenomsFromCreatorRequest defines the response structure for the
// DenomsFromCreator gRPC query.
message QueryDenomsFromCreatorResponse {
repeated string denoms = 1 [ (gogoproto.moretags) = "yaml:\"denoms\"" ];
repeated string denoms = 1 [(gogoproto.moretags) = "yaml:\"denoms\""];
}

// QueryDenomMetadataRequest is the request type for the DenomMetadata gRPC method.
Expand All @@ -90,3 +95,16 @@ message QueryDenomMetadataResponse {
// metadata describes and provides all the client information for the requested token.
cosmos.bank.v1beta1.Metadata metadata = 1 [(gogoproto.nullable) = false];
}

// QueryDenomAllowListRequest is the request type for the DenomAllowList gRPC method
message QueryDenomAllowListRequest {
// denom is the coin denom to query the allowlist for.
string denom = 1;
}

// QueryDenomAllowListResponse is the response type for the DenomAllowList gRPC
// method.
message QueryDenomAllowListResponse {
// allow_list provides addresses allowed for the requested token.
cosmos.bank.v1beta1.AllowList allow_list = 1 [(gogoproto.nullable) = false];
}
32 changes: 14 additions & 18 deletions packages/proto/proto/tokenfactory/tx.proto
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,12 @@ option go_package = "github.com/sei-protocol/sei-chain/x/tokenfactory/types";
// Msg defines the tokefactory module's gRPC message service.
service Msg {
rpc CreateDenom(MsgCreateDenom) returns (MsgCreateDenomResponse);
rpc UpdateDenom(MsgUpdateDenom) returns (MsgUpdateDenomResponse);
rpc Mint(MsgMint) returns (MsgMintResponse);
rpc Burn(MsgBurn) returns (MsgBurnResponse);
rpc ChangeAdmin(MsgChangeAdmin) returns (MsgChangeAdminResponse);
rpc SetDenomMetadata(MsgSetDenomMetadata)
returns (MsgSetDenomMetadataResponse);

// ForceTransfer is deactivated for now because we need to think through edge
// cases rpc ForceTransfer(MsgForceTransfer) returns
// (MsgForceTransferResponse);
}

// MsgCreateDenom defines the message structure for the CreateDenom gRPC service
Expand All @@ -34,6 +31,7 @@ message MsgCreateDenom {
string sender = 1 [ (gogoproto.moretags) = "yaml:\"sender\"" ];
// subdenom can be up to 44 "alphanumeric" characters long.
string subdenom = 2 [ (gogoproto.moretags) = "yaml:\"subdenom\"" ];
cosmos.bank.v1beta1.AllowList allow_list = 3 [ (gogoproto.moretags) = "yaml:\"allow_list\"", (gogoproto.nullable) = true ];
}

// MsgCreateDenomResponse is the return value of MsgCreateDenom
Expand Down Expand Up @@ -79,20 +77,6 @@ message MsgChangeAdmin {
// MsgChangeAdmin message.
message MsgChangeAdminResponse {}

// message MsgForceTransfer {
// string sender = 1 [ (gogoproto.moretags) = "yaml:\"sender\"" ];
// cosmos.base.v1beta1.Coin amount = 2 [
// (gogoproto.moretags) = "yaml:\"amount\"",
// (gogoproto.nullable) = false
// ];
// string transferFromAddress = 3
// [ (gogoproto.moretags) = "yaml:\"transfer_from_address\"" ];
// string transferToAddress = 4
// [ (gogoproto.moretags) = "yaml:\"transfer_to_address\"" ];
// }

// message MsgForceTransferResponse {}

// MsgSetDenomMetadata is the sdk.Msg type for allowing an admin account to set
// the denom's bank metadata
message MsgSetDenomMetadata {
Expand All @@ -103,3 +87,15 @@ message MsgSetDenomMetadata {
// MsgSetDenomMetadataResponse defines the response structure for an executed
// MsgSetDenomMetadata message.
message MsgSetDenomMetadataResponse {}

// MsgUpdateDenom is the sdk.Msg allowing an admin to update the denom
message MsgUpdateDenom {
string sender = 1 [ (gogoproto.moretags) = "yaml:\"sender\"" ];
// subdenom can be up to 44 "alphanumeric" characters long.
string subdenom = 2 [ (gogoproto.moretags) = "yaml:\"subdenom\"" ];
cosmos.bank.v1beta1.AllowList allow_list = 3 [ (gogoproto.moretags) = "yaml:\"allow_list\"", (gogoproto.nullable) = true ];
}


// MsgUpdateDenomResponse defines the response structure for an executed MsgUpdateDenom message.
message MsgUpdateDenomResponse {}
16 changes: 15 additions & 1 deletion packages/proto/src/codegen/tokenfactory/query.lcd.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ import {
QueryDenomMetadataRequest,
QueryDenomMetadataResponseSDKType,
QueryDenomsFromCreatorRequest,
QueryDenomsFromCreatorResponseSDKType
QueryDenomsFromCreatorResponseSDKType,
QueryDenomAllowListRequest,
QueryDenomAllowListResponseSDKType
} from './query';
export class LCDQueryClient {
req: LCDClient;
Expand All @@ -17,6 +19,7 @@ export class LCDQueryClient {
this.denomAuthorityMetadata = this.denomAuthorityMetadata.bind(this);
this.denomMetadata = this.denomMetadata.bind(this);
this.denomsFromCreator = this.denomsFromCreator.bind(this);
this.denomAllowList = this.denomAllowList.bind(this);
}
/* Params defines a gRPC query method that returns the tokenfactory module's
parameters. */
Expand Down Expand Up @@ -48,4 +51,15 @@ export class LCDQueryClient {
const endpoint = `sei-protocol/seichain/tokenfactory/denoms_from_creator/${params.creator}`;
return await this.req.get<QueryDenomsFromCreatorResponseSDKType>(endpoint);
}
/* DenomAllowList defines a gRPC query method for fetching the denom allow list */
async denomAllowList(params: QueryDenomAllowListRequest): Promise<QueryDenomAllowListResponseSDKType> {
const options: any = {
params: {}
};
if (typeof params?.denom !== 'undefined') {
options.params.denom = params.denom;
}
const endpoint = `sei-protocol/seichain/tokenfactory/denoms/allow_list`;
return await this.req.get<QueryDenomAllowListResponseSDKType>(endpoint, options);
}
}
15 changes: 14 additions & 1 deletion packages/proto/src/codegen/tokenfactory/query.rpc.Query.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import {
QueryDenomMetadataRequest,
QueryDenomMetadataResponse,
QueryDenomsFromCreatorRequest,
QueryDenomsFromCreatorResponse
QueryDenomsFromCreatorResponse,
QueryDenomAllowListRequest,
QueryDenomAllowListResponse
} from './query';
/** Query defines the gRPC querier service. */
export interface Query {
Expand All @@ -33,6 +35,8 @@ export interface Query {
* denominations created by a specific admin/creator.
*/
denomsFromCreator(request: QueryDenomsFromCreatorRequest): Promise<QueryDenomsFromCreatorResponse>;
/** DenomAllowList defines a gRPC query method for fetching the denom allow list */
denomAllowList(request: QueryDenomAllowListRequest): Promise<QueryDenomAllowListResponse>;
}
export class QueryClientImpl implements Query {
private readonly rpc: TxRpc;
Expand All @@ -42,6 +46,7 @@ export class QueryClientImpl implements Query {
this.denomAuthorityMetadata = this.denomAuthorityMetadata.bind(this);
this.denomMetadata = this.denomMetadata.bind(this);
this.denomsFromCreator = this.denomsFromCreator.bind(this);
this.denomAllowList = this.denomAllowList.bind(this);
}
params(request: QueryParamsRequest = {}): Promise<QueryParamsResponse> {
const data = QueryParamsRequest.encode(request).finish();
Expand All @@ -63,6 +68,11 @@ export class QueryClientImpl implements Query {
const promise = this.rpc.request('seiprotocol.seichain.tokenfactory.Query', 'DenomsFromCreator', data);
return promise.then((data) => QueryDenomsFromCreatorResponse.decode(new BinaryReader(data)));
}
denomAllowList(request: QueryDenomAllowListRequest): Promise<QueryDenomAllowListResponse> {
const data = QueryDenomAllowListRequest.encode(request).finish();
const promise = this.rpc.request('seiprotocol.seichain.tokenfactory.Query', 'DenomAllowList', data);
return promise.then((data) => QueryDenomAllowListResponse.decode(new BinaryReader(data)));
}
}
export const createRpcQueryExtension = (base: QueryClient) => {
const rpc = createProtobufRpcClient(base);
Expand All @@ -79,6 +89,9 @@ export const createRpcQueryExtension = (base: QueryClient) => {
},
denomsFromCreator(request: QueryDenomsFromCreatorRequest): Promise<QueryDenomsFromCreatorResponse> {
return queryService.denomsFromCreator(request);
},
denomAllowList(request: QueryDenomAllowListRequest): Promise<QueryDenomAllowListResponse> {
return queryService.denomAllowList(request);
}
};
};
158 changes: 158 additions & 0 deletions packages/proto/src/codegen/tokenfactory/query.ts
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,51 @@ export interface QueryDenomMetadataResponseAminoMsg {
export interface QueryDenomMetadataResponseSDKType {
metadata: MetadataSDKType | undefined;
}
/** QueryDenomAllowListRequest is the request type for the DenomAllowList gRPC method */
export interface QueryDenomAllowListRequest {
/** denom is the coin denom to query the allowlist for. */
denom: string;
}
export interface QueryDenomAllowListRequestProtoMsg {
typeUrl: '/seiprotocol.seichain.tokenfactory.QueryDenomAllowListRequest';
value: Uint8Array;
}
/** QueryDenomAllowListRequest is the request type for the DenomAllowList gRPC method */
export interface QueryDenomAllowListRequestAmino {
/** denom is the coin denom to query the allowlist for. */
denom?: string;
}
export interface QueryDenomAllowListRequestAminoMsg {
type: '/seiprotocol.seichain.tokenfactory.QueryDenomAllowListRequest';
value: QueryDenomAllowListRequestAmino;
}
/** QueryDenomAllowListRequest is the request type for the DenomAllowList gRPC method */
export interface QueryDenomAllowListRequestSDKType {
denom: string;
}
/**
* QueryDenomAllowListResponse is the response type for the DenomAllowList gRPC
* method.
*/
export interface QueryDenomAllowListResponse {}
export interface QueryDenomAllowListResponseProtoMsg {
typeUrl: '/seiprotocol.seichain.tokenfactory.QueryDenomAllowListResponse';
value: Uint8Array;
}
/**
* QueryDenomAllowListResponse is the response type for the DenomAllowList gRPC
* method.
*/
export interface QueryDenomAllowListResponseAmino {}
export interface QueryDenomAllowListResponseAminoMsg {
type: '/seiprotocol.seichain.tokenfactory.QueryDenomAllowListResponse';
value: QueryDenomAllowListResponseAmino;
}
/**
* QueryDenomAllowListResponse is the response type for the DenomAllowList gRPC
* method.
*/
export interface QueryDenomAllowListResponseSDKType {}
function createBaseQueryParamsRequest(): QueryParamsRequest {
return {};
}
Expand Down Expand Up @@ -700,3 +745,116 @@ export const QueryDenomMetadataResponse = {
};
}
};
function createBaseQueryDenomAllowListRequest(): QueryDenomAllowListRequest {
return {
denom: ''
};
}
export const QueryDenomAllowListRequest = {
typeUrl: '/seiprotocol.seichain.tokenfactory.QueryDenomAllowListRequest',
encode(message: QueryDenomAllowListRequest, writer: BinaryWriter = BinaryWriter.create()): BinaryWriter {
if (message.denom !== '') {
writer.uint32(10).string(message.denom);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): QueryDenomAllowListRequest {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseQueryDenomAllowListRequest();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1:
message.denom = reader.string();
break;
default:
reader.skipType(tag & 7);
break;
}
}
return message;
},
fromPartial(object: Partial<QueryDenomAllowListRequest>): QueryDenomAllowListRequest {
const message = createBaseQueryDenomAllowListRequest();
message.denom = object.denom ?? '';
return message;
},
fromAmino(object: QueryDenomAllowListRequestAmino): QueryDenomAllowListRequest {
const message = createBaseQueryDenomAllowListRequest();
if (object.denom !== undefined && object.denom !== null) {
message.denom = object.denom;
}
return message;
},
toAmino(message: QueryDenomAllowListRequest): QueryDenomAllowListRequestAmino {
const obj: any = {};
obj.denom = message.denom === '' ? undefined : message.denom;
return obj;
},
fromAminoMsg(object: QueryDenomAllowListRequestAminoMsg): QueryDenomAllowListRequest {
return QueryDenomAllowListRequest.fromAmino(object.value);
},
fromProtoMsg(message: QueryDenomAllowListRequestProtoMsg): QueryDenomAllowListRequest {
return QueryDenomAllowListRequest.decode(message.value);
},
toProto(message: QueryDenomAllowListRequest): Uint8Array {
return QueryDenomAllowListRequest.encode(message).finish();
},
toProtoMsg(message: QueryDenomAllowListRequest): QueryDenomAllowListRequestProtoMsg {
return {
typeUrl: '/seiprotocol.seichain.tokenfactory.QueryDenomAllowListRequest',
value: QueryDenomAllowListRequest.encode(message).finish()
};
}
};
function createBaseQueryDenomAllowListResponse(): QueryDenomAllowListResponse {
return {};
}
export const QueryDenomAllowListResponse = {
typeUrl: '/seiprotocol.seichain.tokenfactory.QueryDenomAllowListResponse',
encode(_: QueryDenomAllowListResponse, writer: BinaryWriter = BinaryWriter.create()): BinaryWriter {
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): QueryDenomAllowListResponse {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseQueryDenomAllowListResponse();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
default:
reader.skipType(tag & 7);
break;
}
}
return message;
},
fromPartial(_: Partial<QueryDenomAllowListResponse>): QueryDenomAllowListResponse {
const message = createBaseQueryDenomAllowListResponse();
return message;
},
fromAmino(_: QueryDenomAllowListResponseAmino): QueryDenomAllowListResponse {
const message = createBaseQueryDenomAllowListResponse();
return message;
},
toAmino(_: QueryDenomAllowListResponse): QueryDenomAllowListResponseAmino {
const obj: any = {};
return obj;
},
fromAminoMsg(object: QueryDenomAllowListResponseAminoMsg): QueryDenomAllowListResponse {
return QueryDenomAllowListResponse.fromAmino(object.value);
},
fromProtoMsg(message: QueryDenomAllowListResponseProtoMsg): QueryDenomAllowListResponse {
return QueryDenomAllowListResponse.decode(message.value);
},
toProto(message: QueryDenomAllowListResponse): Uint8Array {
return QueryDenomAllowListResponse.encode(message).finish();
},
toProtoMsg(message: QueryDenomAllowListResponse): QueryDenomAllowListResponseProtoMsg {
return {
typeUrl: '/seiprotocol.seichain.tokenfactory.QueryDenomAllowListResponse',
value: QueryDenomAllowListResponse.encode(message).finish()
};
}
};
Loading

0 comments on commit 0c29f85

Please sign in to comment.