syntax = "proto3";

package wix.personalize.variants_generator.v1;
option java_package = "com.wixpress.personalize.variants.generator.v1";

import "wix/api/validations.proto";
import "wix/api/entity.proto";
import "google/protobuf/wrappers.proto";

/**
  A Variant is a variation of a content with a persona voice.
 */
message Variant {
  // flynt-disable missing-extensible
  // flynt-disable missing-taggable-annotation
  option (wix.api.entity) = {
    fqdn: "wix.personalize.generate_variants.v1.variant"
    segment: PUBLIC
    app_def_id: "f4b79adb-9998-48b2-b637-e45ab5358ca9"
    appendix_files: {
      type: DOCS_CONF,
      path: "appendices/docs"
    }
  };

  // Variant ID.
  google.protobuf.StringValue id = 1 [(wix.api.maxLength) = 5, (wix.api.readOnly) = true];

  // The variant string value.
  string text = 2 [(.wix.api.maxLength) = 10000];

  // The persona voice describes the variant.
  Persona persona = 3;
}

message Persona {
  // The name describes the persona.
  Name name = 1;

  // The tone of voice describes the persona.
  ToneOfVoice tone_of_voice = 2;

  // The emotion describes the persona.
  Emotion emotion = 3;

  // The name persuasion technique the persona.
  PersuasionTechnique persuasion_technique = 4;

  // The formality level describes the persona.
  FormalityLevel formality_level = 5;

  enum Name {
    UNKNOWN_NAME = 0;
    FRIENDLY_GUIDE = 1;
    PROFESSIONAL_EXPERT = 2;
    EMPATHETIC_HELPER = 3;
    ENTHUSIASTIC_INNOVATOR = 4;
    AUTHORITATIVE_LEADER = 5;
    INSPIRATIONAL_MENTOR = 6;
  }

  enum ToneOfVoice {
    UNKNOWN_TONE_OF_VOICE = 0;
    FRIENDLY = 1;
    PROFESSIONAL = 2;
    EMPATHETIC = 3;
    ENTHUSIASTIC = 4;
    AUTHORITATIVE = 5;
    INSPIRATIONAL = 6;
  }

  enum Emotion {
    UNKNOWN_EMOTION = 0;
    JOY = 1;
    TRUST = 2;
    ANTICIPATION = 3;
  }

  enum PersuasionTechnique {
    UNKNOWN_PERSUASION_TECHNIQUE = 0;
    LIKING = 1;
    AUTHORITY = 2;
    SOCIAL_PROOF = 3;
  }

  enum FormalityLevel {
    UNKNOWN_FORMALITY_LEVEL = 0;
    CASUAL = 1;
    FORMAL = 2;
    NEUTRAL = 3;
  }
}
