Skip to content

Commit

Permalink
chore(cosmic-proto): ibc-go protos + codegen
Browse files Browse the repository at this point in the history
  • Loading branch information
0xpatrickdev committed Apr 25, 2024
1 parent c7b0f27 commit 5f27c02
Show file tree
Hide file tree
Showing 74 changed files with 27,643 additions and 29 deletions.
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];
}
66 changes: 66 additions & 0 deletions packages/cosmic-proto/proto/ibc/applications/fee/v1/genesis.proto
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\""];
}
16 changes: 16 additions & 0 deletions packages/cosmic-proto/proto/ibc/applications/fee/v1/metadata.proto
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

0 comments on commit 5f27c02

Please sign in to comment.