syntax = "proto3";
package ethermint.codec.v1;

import "types/types.proto";
import "third_party/proto/cosmos-proto/cosmos.proto";
import "third_party/proto/cosmos-sdk/x/auth/types/types.proto";
import "third_party/proto/cosmos-sdk/x/auth/vesting/types/types.proto";
import "third_party/proto/cosmos-sdk/x/supply/types/types.proto";

option go_package = "github.com/cosmos/cosmos-sdk/codec";

// Account defines the application-level Account type.
message Account {
  option (cosmos_proto.interface_type) = "*github.com/cosmos/cosmos-sdk/x/auth/exported.Account";

  // sum defines a list of all acceptable concrete Account implementations.
  oneof sum {
    cosmos_sdk.x.auth.v1.BaseAccount                      base_account               = 1;
    cosmos_sdk.x.auth.vesting.v1.ContinuousVestingAccount continuous_vesting_account = 2;
    cosmos_sdk.x.auth.vesting.v1.DelayedVestingAccount    delayed_vesting_account    = 3;
    cosmos_sdk.x.auth.vesting.v1.PeriodicVestingAccount   periodic_vesting_account   = 4;
    cosmos_sdk.x.supply.v1.ModuleAccount                  module_account             = 5;
    ethermint.v1.EthAccount                               eth_account                = 6;
  }
}
