syntax = "proto3";

package ibc.applications.interchain_accounts.v1;

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

import "cosmos_proto/cosmos.proto";
import "gogoproto/gogo.proto";
import "cosmos/auth/v1beta1/auth.proto";

// An InterchainAccount is defined as a BaseAccount & the address of the account owner on the controller chain
message InterchainAccount {
  option (gogoproto.goproto_getters)         = false;
  option (gogoproto.goproto_stringer)        = false;
  option (cosmos_proto.implements_interface) = "InterchainAccountI";

  cosmos.auth.v1beta1.BaseAccount base_account = 1
      [(gogoproto.embed) = true, (gogoproto.moretags) = "yaml:\"base_account\""];
  string account_owner = 2 [(gogoproto.moretags) = "yaml:\"account_owner\""];
}
