syntax = "proto3";
package forge;

import "google/protobuf/timestamp.proto";
import "google/protobuf/any.proto";

message TransactionMessage {
  bytes from = 1;
  uint64 nonce = 2;
  bytes public_key = 3;
  bytes signature = 4;
  oneof value {
    TransferMessage transfer = 10;
    google.protobuf.Any any = 50;
  }
}

message TransferMessage {
  bytes to = 1;
  uint64 total = 2;
}

message AccountState {
  uint64 balance = 1;
  uint64 nonce = 2;
  uint64 num_txs = 3;
  bytes address = 4;
  bytes owner = 5;

  // 5-9 reserve for future
  
  bytes genesis_tx = 10;
  bytes renaissance_tx = 11;
  google.protobuf.Timestamp genesis_time = 12;
  google.protobuf.Timestamp renaissance_time = 13;
  
  // 14-49 reserve for future
  
  google.protobuf.Any data = 50;
}
