syntax = "proto3";

package beaconchain.v2;

// An address of 160 bits.
//
// As a separate type so that the API is clearer.
message Address {
  fixed64 x0 = 1;
  fixed64 x1 = 2;
  fixed32 x2 = 3;
}

// Unsigned integer of 256 bits.
message U256 {
  fixed64 x0 = 1;
  fixed64 x1 = 2;
  fixed64 x2 = 3;
  fixed64 x3 = 4;
}

// Byte array of 256 bits.
message B256 {
  fixed64 x0 = 1;
  fixed64 x1 = 2;
  fixed64 x2 = 3;
  fixed64 x3 = 4;
}

// Byte array of 384 bits.
message B384 {
  fixed64 x0 = 1;
  fixed64 x1 = 2;
  fixed64 x2 = 3;
  fixed64 x3 = 4;
  fixed64 x4 = 5;
  fixed64 x5 = 6;
}

// Unsigned integer of 128 bits.
message U128 {
  fixed64 x0 = 1;
  fixed64 x1 = 2;
}

// Validator status
enum ValidatorStatus {
  VALIDATOR_STATUS_UNKNOWN = 0;
  VALIDATOR_STATUS_PENDING_INITIALIZED = 1;
  VALIDATOR_STATUS_PENDING_QUEUED = 2;
  VALIDATOR_STATUS_ACTIVE_ONGOING = 3;
  VALIDATOR_STATUS_ACTIVE_EXITING = 4;
  VALIDATOR_STATUS_ACTIVE_SLASHED = 5;
  VALIDATOR_STATUS_EXITED_UNSLASHED = 6;
  VALIDATOR_STATUS_EXITED_SLASHED = 7;
  VALIDATOR_STATUS_WITHDRAWAL_POSSIBLE = 8;
  VALIDATOR_STATUS_WITHDRAWAL_DONE = 9;
}
