syntax = "proto3";

message ApplicationMetadataMessage {
  // Signature of the payload field
  bytes signature = 1;
  // This is the encoded protobuf of the application level message, i.e ChatMessage
  bytes payload = 2;

  // The type of protobuf message sent
  Type type = 3;

  enum Type {
    TYPE_UNKNOWN_UNSPECIFIED = 0;
    TYPE_CHAT_MESSAGE = 1;
    TYPE_CONTACT_UPDATE = 2;
    TYPE_MEMBERSHIP_UPDATE_MESSAGE = 3;
    TYPE_PAIR_INSTALLATION = 4;
    TYPE_SYNC_INSTALLATION = 5;
    TYPE_REQUEST_ADDRESS_FOR_TRANSACTION = 6;
    TYPE_ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION = 7;
    TYPE_DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION = 8;
    TYPE_REQUEST_TRANSACTION = 9;
    TYPE_SEND_TRANSACTION = 10;
    TYPE_DECLINE_REQUEST_TRANSACTION = 11;
    TYPE_SYNC_INSTALLATION_CONTACT = 12;
    TYPE_SYNC_INSTALLATION_ACCOUNT = 13;
    TYPE_SYNC_INSTALLATION_PUBLIC_CHAT = 14;
    TYPE_CONTACT_CODE_ADVERTISEMENT = 15;
    TYPE_PUSH_NOTIFICATION_REGISTRATION = 16;
    TYPE_PUSH_NOTIFICATION_REGISTRATION_RESPONSE = 17;
    TYPE_PUSH_NOTIFICATION_QUERY = 18;
    TYPE_PUSH_NOTIFICATION_QUERY_RESPONSE = 19;
    TYPE_PUSH_NOTIFICATION_REQUEST = 20;
    TYPE_PUSH_NOTIFICATION_RESPONSE = 21;
    TYPE_EMOJI_REACTION = 22;
    TYPE_GROUP_CHAT_INVITATION = 23;
    TYPE_CHAT_IDENTITY = 24;
    TYPE_COMMUNITY_DESCRIPTION = 25;
    TYPE_COMMUNITY_INVITATION = 26;
    TYPE_COMMUNITY_REQUEST_TO_JOIN = 27;
    TYPE_PIN_MESSAGE = 28;
    TYPE_EDIT_MESSAGE = 29;
    TYPE_STATUS_UPDATE = 30;
    TYPE_DELETE_MESSAGE = 31;
    TYPE_SYNC_INSTALLATION_COMMUNITY = 32;
    TYPE_ANONYMOUS_METRIC_BATCH = 33;
  }
}