Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(cosmic-proto): include ibc-go #9287

Merged
merged 3 commits into from
Apr 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/cosmic-proto/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@
"types": "./dist/codegen/cosmos/staking/v1beta1/tx.d.ts",
"default": "./dist/codegen/cosmos/staking/v1beta1/tx.js"
},
"./ibc/applications/transfer/v1/tx.js": {
"types": "./dist/codegen/ibc/applications/transfer/v1/tx.d.ts",
"default": "./dist/codegen/ibc/applications/transfer/v1/tx.js"
},
"./google/protobuf/any": {
"types": "./dist/codegen/google/protobuf/any.d.ts",
"default": "./dist/codegen/google/protobuf/any.js"
Expand Down
17 changes: 17 additions & 0 deletions packages/cosmic-proto/proto/ibc/applications/fee/v1/ack.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
syntax = "proto3";

package ibc.applications.fee.v1;

option go_package = "github.com/cosmos/ibc-go/v6/modules/apps/29-fee/types";

import "gogoproto/gogo.proto";

// IncentivizedAcknowledgement is the acknowledgement format to be used by applications wrapped in the fee middleware
message IncentivizedAcknowledgement {
// the underlying app acknowledgement bytes
bytes app_acknowledgement = 1 [(gogoproto.moretags) = "yaml:\"app_acknowledgement\""];
// the relayer address which submits the recv packet message
string forward_relayer_address = 2 [(gogoproto.moretags) = "yaml:\"forward_relayer_address\""];
// success flag of the base application callback
bool underlying_app_success = 3 [(gogoproto.moretags) = "yaml:\"underlying_app_successl\""];
}
56 changes: 56 additions & 0 deletions packages/cosmic-proto/proto/ibc/applications/fee/v1/fee.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
syntax = "proto3";

package ibc.applications.fee.v1;

option go_package = "github.com/cosmos/ibc-go/v6/modules/apps/29-fee/types";

import "cosmos/base/v1beta1/coin.proto";
import "gogoproto/gogo.proto";
import "ibc/core/channel/v1/channel.proto";

// Fee defines the ICS29 receive, acknowledgement and timeout fees
message Fee {
// the packet receive fee
repeated cosmos.base.v1beta1.Coin recv_fee = 1 [
(gogoproto.moretags) = "yaml:\"recv_fee\"",
(gogoproto.nullable) = false,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
// the packet acknowledgement fee
repeated cosmos.base.v1beta1.Coin ack_fee = 2 [
(gogoproto.moretags) = "yaml:\"ack_fee\"",
(gogoproto.nullable) = false,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
// the packet timeout fee
repeated cosmos.base.v1beta1.Coin timeout_fee = 3 [
(gogoproto.moretags) = "yaml:\"timeout_fee\"",
(gogoproto.nullable) = false,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
}

// PacketFee contains ICS29 relayer fees, refund address and optional list of permitted relayers
message PacketFee {
// fee encapsulates the recv, ack and timeout fees associated with an IBC packet
Fee fee = 1 [(gogoproto.nullable) = false];
// the refund address for unspent fees
string refund_address = 2 [(gogoproto.moretags) = "yaml:\"refund_address\""];
// optional list of relayers permitted to receive fees
repeated string relayers = 3;
}

// PacketFees contains a list of type PacketFee
message PacketFees {
// list of packet fees
repeated PacketFee packet_fees = 1 [(gogoproto.moretags) = "yaml:\"packet_fees\"", (gogoproto.nullable) = false];
}

// IdentifiedPacketFees contains a list of type PacketFee and associated PacketId
message IdentifiedPacketFees {
// unique packet identifier comprised of the channel ID, port ID and sequence
ibc.core.channel.v1.PacketId packet_id = 1
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"packet_id\""];
// list of packet fees
repeated PacketFee packet_fees = 2 [(gogoproto.moretags) = "yaml:\"packet_fees\"", (gogoproto.nullable) = false];
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
syntax = "proto3";

package ibc.applications.fee.v1;

option go_package = "github.com/cosmos/ibc-go/v6/modules/apps/29-fee/types";

import "gogoproto/gogo.proto";
import "ibc/applications/fee/v1/fee.proto";
import "ibc/core/channel/v1/channel.proto";

// GenesisState defines the ICS29 fee middleware genesis state
message GenesisState {
// list of identified packet fees
repeated IdentifiedPacketFees identified_fees = 1
[(gogoproto.moretags) = "yaml:\"identified_fees\"", (gogoproto.nullable) = false];
// list of fee enabled channels
repeated FeeEnabledChannel fee_enabled_channels = 2
[(gogoproto.moretags) = "yaml:\"fee_enabled_channels\"", (gogoproto.nullable) = false];
// list of registered payees
repeated RegisteredPayee registered_payees = 3
[(gogoproto.moretags) = "yaml:\"registered_payees\"", (gogoproto.nullable) = false];
// list of registered counterparty payees
repeated RegisteredCounterpartyPayee registered_counterparty_payees = 4
[(gogoproto.moretags) = "yaml:\"registered_counterparty_payees\"", (gogoproto.nullable) = false];
// list of forward relayer addresses
repeated ForwardRelayerAddress forward_relayers = 5
[(gogoproto.moretags) = "yaml:\"forward_relayers\"", (gogoproto.nullable) = false];
}

// FeeEnabledChannel contains the PortID & ChannelID for a fee enabled channel
message FeeEnabledChannel {
// unique port identifier
string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""];
// unique channel identifier
string channel_id = 2 [(gogoproto.moretags) = "yaml:\"channel_id\""];
}

// RegisteredPayee contains the relayer address and payee address for a specific channel
message RegisteredPayee {
// unique channel identifier
string channel_id = 1 [(gogoproto.moretags) = "yaml:\"channel_id\""];
// the relayer address
string relayer = 2;
// the payee address
string payee = 3;
}

// RegisteredCounterpartyPayee contains the relayer address and counterparty payee address for a specific channel (used
// for recv fee distribution)
message RegisteredCounterpartyPayee {
// unique channel identifier
string channel_id = 1 [(gogoproto.moretags) = "yaml:\"channel_id\""];
// the relayer address
string relayer = 2;
// the counterparty payee address
string counterparty_payee = 3 [(gogoproto.moretags) = "yaml:\"counterparty_payee\""];
}

// ForwardRelayerAddress contains the forward relayer address and PacketId used for async acknowledgements
message ForwardRelayerAddress {
// the forward relayer address
string address = 1;
// unique packet identifer comprised of the channel ID, port ID and sequence
ibc.core.channel.v1.PacketId packet_id = 2
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"packet_id\""];
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
syntax = "proto3";

package ibc.applications.fee.v1;

option go_package = "github.com/cosmos/ibc-go/v6/modules/apps/29-fee/types";

import "gogoproto/gogo.proto";

// Metadata defines the ICS29 channel specific metadata encoded into the channel version bytestring
// See ICS004: https://github.com/cosmos/ibc/tree/master/spec/core/ics-004-channel-and-packet-semantics#Versioning
message Metadata {
// fee_version defines the ICS29 fee version
string fee_version = 1 [(gogoproto.moretags) = "yaml:\"fee_version\""];
// app_version defines the underlying application version, which may or may not be a JSON encoded bytestring
string app_version = 2 [(gogoproto.moretags) = "yaml:\"app_version\""];
}
222 changes: 222 additions & 0 deletions packages/cosmic-proto/proto/ibc/applications/fee/v1/query.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
syntax = "proto3";

package ibc.applications.fee.v1;

option go_package = "github.com/cosmos/ibc-go/v6/modules/apps/29-fee/types";

import "gogoproto/gogo.proto";
import "google/api/annotations.proto";
import "cosmos/base/v1beta1/coin.proto";
import "cosmos/base/query/v1beta1/pagination.proto";
import "ibc/applications/fee/v1/fee.proto";
import "ibc/applications/fee/v1/genesis.proto";
import "ibc/core/channel/v1/channel.proto";

// Query defines the ICS29 gRPC querier service.
service Query {
// IncentivizedPackets returns all incentivized packets and their associated fees
rpc IncentivizedPackets(QueryIncentivizedPacketsRequest) returns (QueryIncentivizedPacketsResponse) {
option (google.api.http).get = "/ibc/apps/fee/v1/incentivized_packets";
}

// IncentivizedPacket returns all packet fees for a packet given its identifier
rpc IncentivizedPacket(QueryIncentivizedPacketRequest) returns (QueryIncentivizedPacketResponse) {
option (google.api.http).get =
"/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/"
"{packet_id.sequence}/incentivized_packet";
}

// Gets all incentivized packets for a specific channel
rpc IncentivizedPacketsForChannel(QueryIncentivizedPacketsForChannelRequest)
returns (QueryIncentivizedPacketsForChannelResponse) {
option (google.api.http).get = "/ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/incentivized_packets";
}

// TotalRecvFees returns the total receive fees for a packet given its identifier
rpc TotalRecvFees(QueryTotalRecvFeesRequest) returns (QueryTotalRecvFeesResponse) {
option (google.api.http).get = "/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/"
"sequences/{packet_id.sequence}/total_recv_fees";
}

// TotalAckFees returns the total acknowledgement fees for a packet given its identifier
rpc TotalAckFees(QueryTotalAckFeesRequest) returns (QueryTotalAckFeesResponse) {
option (google.api.http).get = "/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/"
"sequences/{packet_id.sequence}/total_ack_fees";
}

// TotalTimeoutFees returns the total timeout fees for a packet given its identifier
rpc TotalTimeoutFees(QueryTotalTimeoutFeesRequest) returns (QueryTotalTimeoutFeesResponse) {
option (google.api.http).get = "/ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/"
"sequences/{packet_id.sequence}/total_timeout_fees";
}

// Payee returns the registered payee address for a specific channel given the relayer address
rpc Payee(QueryPayeeRequest) returns (QueryPayeeResponse) {
option (google.api.http).get = "/ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/payee";
}

// CounterpartyPayee returns the registered counterparty payee for forward relaying
rpc CounterpartyPayee(QueryCounterpartyPayeeRequest) returns (QueryCounterpartyPayeeResponse) {
option (google.api.http).get = "/ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/counterparty_payee";
}

// FeeEnabledChannels returns a list of all fee enabled channels
rpc FeeEnabledChannels(QueryFeeEnabledChannelsRequest) returns (QueryFeeEnabledChannelsResponse) {
option (google.api.http).get = "/ibc/apps/fee/v1/fee_enabled";
}

// FeeEnabledChannel returns true if the provided port and channel identifiers belong to a fee enabled channel
rpc FeeEnabledChannel(QueryFeeEnabledChannelRequest) returns (QueryFeeEnabledChannelResponse) {
option (google.api.http).get = "/ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/fee_enabled";
}
}

// QueryIncentivizedPacketsRequest defines the request type for the IncentivizedPackets rpc
message QueryIncentivizedPacketsRequest {
// pagination defines an optional pagination for the request.
cosmos.base.query.v1beta1.PageRequest pagination = 1;
// block height at which to query
uint64 query_height = 2;
}

// QueryIncentivizedPacketsResponse defines the response type for the IncentivizedPackets rpc
message QueryIncentivizedPacketsResponse {
// list of identified fees for incentivized packets
repeated ibc.applications.fee.v1.IdentifiedPacketFees incentivized_packets = 1 [(gogoproto.nullable) = false];
}

// QueryIncentivizedPacketRequest defines the request type for the IncentivizedPacket rpc
message QueryIncentivizedPacketRequest {
// unique packet identifier comprised of channel ID, port ID and sequence
ibc.core.channel.v1.PacketId packet_id = 1 [(gogoproto.nullable) = false];
// block height at which to query
uint64 query_height = 2;
}

// QueryIncentivizedPacketsResponse defines the response type for the IncentivizedPacket rpc
message QueryIncentivizedPacketResponse {
// the identified fees for the incentivized packet
ibc.applications.fee.v1.IdentifiedPacketFees incentivized_packet = 1 [(gogoproto.nullable) = false];
}

// QueryIncentivizedPacketsForChannelRequest defines the request type for querying for all incentivized packets
// for a specific channel
message QueryIncentivizedPacketsForChannelRequest {
// pagination defines an optional pagination for the request.
cosmos.base.query.v1beta1.PageRequest pagination = 1;
string port_id = 2;
string channel_id = 3;
// Height to query at
uint64 query_height = 4;
}

// QueryIncentivizedPacketsResponse defines the response type for the incentivized packets RPC
message QueryIncentivizedPacketsForChannelResponse {
// Map of all incentivized_packets
repeated ibc.applications.fee.v1.IdentifiedPacketFees incentivized_packets = 1;
}

// QueryTotalRecvFeesRequest defines the request type for the TotalRecvFees rpc
message QueryTotalRecvFeesRequest {
// the packet identifier for the associated fees
ibc.core.channel.v1.PacketId packet_id = 1 [(gogoproto.nullable) = false];
}

// QueryTotalRecvFeesResponse defines the response type for the TotalRecvFees rpc
message QueryTotalRecvFeesResponse {
// the total packet receive fees
repeated cosmos.base.v1beta1.Coin recv_fees = 1 [
(gogoproto.moretags) = "yaml:\"recv_fees\"",
(gogoproto.nullable) = false,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
}

// QueryTotalAckFeesRequest defines the request type for the TotalAckFees rpc
message QueryTotalAckFeesRequest {
// the packet identifier for the associated fees
ibc.core.channel.v1.PacketId packet_id = 1 [(gogoproto.nullable) = false];
}

// QueryTotalAckFeesResponse defines the response type for the TotalAckFees rpc
message QueryTotalAckFeesResponse {
// the total packet acknowledgement fees
repeated cosmos.base.v1beta1.Coin ack_fees = 1 [
(gogoproto.moretags) = "yaml:\"ack_fees\"",
(gogoproto.nullable) = false,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
}

// QueryTotalTimeoutFeesRequest defines the request type for the TotalTimeoutFees rpc
message QueryTotalTimeoutFeesRequest {
// the packet identifier for the associated fees
ibc.core.channel.v1.PacketId packet_id = 1 [(gogoproto.nullable) = false];
}

// QueryTotalTimeoutFeesResponse defines the response type for the TotalTimeoutFees rpc
message QueryTotalTimeoutFeesResponse {
// the total packet timeout fees
repeated cosmos.base.v1beta1.Coin timeout_fees = 1 [
(gogoproto.moretags) = "yaml:\"timeout_fees\"",
(gogoproto.nullable) = false,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
}

// QueryPayeeRequest defines the request type for the Payee rpc
message QueryPayeeRequest {
// unique channel identifier
string channel_id = 1 [(gogoproto.moretags) = "yaml:\"channel_id\""];
// the relayer address to which the distribution address is registered
string relayer = 2;
}

// QueryPayeeResponse defines the response type for the Payee rpc
message QueryPayeeResponse {
// the payee address to which packet fees are paid out
string payee_address = 1 [(gogoproto.moretags) = "yaml:\"payee_address\""];
}

// QueryCounterpartyPayeeRequest defines the request type for the CounterpartyPayee rpc
message QueryCounterpartyPayeeRequest {
// unique channel identifier
string channel_id = 1 [(gogoproto.moretags) = "yaml:\"channel_id\""];
// the relayer address to which the counterparty is registered
string relayer = 2;
}

// QueryCounterpartyPayeeResponse defines the response type for the CounterpartyPayee rpc
message QueryCounterpartyPayeeResponse {
// the counterparty payee address used to compensate forward relaying
string counterparty_payee = 1 [(gogoproto.moretags) = "yaml:\"counterparty_payee\""];
}

// QueryFeeEnabledChannelsRequest defines the request type for the FeeEnabledChannels rpc
message QueryFeeEnabledChannelsRequest {
// pagination defines an optional pagination for the request.
cosmos.base.query.v1beta1.PageRequest pagination = 1;
// block height at which to query
uint64 query_height = 2;
}

// QueryFeeEnabledChannelsResponse defines the response type for the FeeEnabledChannels rpc
message QueryFeeEnabledChannelsResponse {
// list of fee enabled channels
repeated ibc.applications.fee.v1.FeeEnabledChannel fee_enabled_channels = 1
[(gogoproto.moretags) = "yaml:\"fee_enabled_channels\"", (gogoproto.nullable) = false];
}

// QueryFeeEnabledChannelRequest defines the request type for the FeeEnabledChannel rpc
message QueryFeeEnabledChannelRequest {
// unique port identifier
string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""];
// unique channel identifier
string channel_id = 2 [(gogoproto.moretags) = "yaml:\"channel_id\""];
}

// QueryFeeEnabledChannelResponse defines the response type for the FeeEnabledChannel rpc
message QueryFeeEnabledChannelResponse {
// boolean flag representing the fee enabled channel status
bool fee_enabled = 1 [(gogoproto.moretags) = "yaml:\"fee_enabled\""];
}
Loading
Loading