syntax = "proto3";

package ibc.applications.interchain_accounts.v1;

option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/types";

import "gogoproto/gogo.proto";

// Metadata defines a set of protocol specific data encoded into the ICS27 channel version bytestring
// See ICS004: https://github.com/cosmos/ibc/tree/master/spec/core/ics-004-channel-and-packet-semantics#Versioning
message Metadata {
  // version defines the ICS27 protocol version
  string version = 1;
  // controller_connection_id is the connection identifier associated with the controller chain
  string controller_connection_id = 2 [(gogoproto.moretags) = "yaml:\"controller_connection_id\""];
  // host_connection_id is the connection identifier associated with the host chain
  string host_connection_id = 3 [(gogoproto.moretags) = "yaml:\"host_connection_id\""];
  // address defines the interchain account address to be fulfilled upon the OnChanOpenTry handshake step
  // NOTE: the address field is empty on the OnChanOpenInit handshake step
  string address = 4;
  // encoding defines the supported codec format
  string encoding = 5;
  // tx_type defines the type of transactions the interchain account can execute
  string tx_type = 6;
}
