syntax = "proto3";

package discord_protos.premium_marketing.v1;

message PremiumMarketingComponentProperties {
  message FeatureCard {
    string header = 1;
    string pill = 2;
    string body = 3;
    string image_link = 4;
    string image_link_light_theme = 5;
  }

  enum ButtonAction {
    BUTTON_ACTION_UNSPECIFIED = 0;
    BUTTON_ACTION_OPEN_MARKETING_PAGE = 1;
    BUTTON_ACTION_OPEN_TIER_2_PAYMENT_MODAL = 2;
    BUTTON_ACTION_OPEN_TIER_1_PAYMENT_MODAL = 3;
    BUTTON_ACTION_OPEN_TIER_2_PAYMENT_MODAL_CUSTOM_CONFIRMATION_FOOTER = 4;
    BUTTON_ACTION_OPEN_PLAN_SELECTION_MODAL = 5;
  }

  message SubscriptionButton {
    string copy = 1;
    ButtonAction button_action = 2;
  }

  message Subtitle {
    string link = 1;
    string locale = 2;
    bool is_default = 3;
  }

  message Variant1Storage {
    map<string, string> hero_art_localized_video_links_dark_theme = 1;
    map<string, string> hero_art_localized_video_links_light_theme = 2;
    map<string, string> hero_art_video_subtitle_links = 3;
  }

  message AnnouncementModalVariant1Properties {
    string header = 1;
    string subheader = 2;
    string video_link = 3;
    string help_article_id = 4;
    repeated FeatureCard feature_cards = 5;
    optional SubscriptionButton button = 6;
    string dismiss_key = 7;
    string hero_art_video_link_light_theme = 8;
    string hero_art_image_link_dark_theme = 9;
    string hero_art_image_link_light_theme = 10;
    string modal_top_pill = 11;
    string body = 12;
    repeated Subtitle hero_art_video_subtitles = 13;
    optional Variant1Storage storage = 14;
  }

  message PremiumTab {
    string badge_label = 1;
    string acknowledged_badge_label = 2;
  }

  message MarketingPageBannerButton {
    string copy = 1;
    ButtonAction button_action = 2;
  }

  message MarketingPageBanner {
    string asset_url = 1;
    string header = 2;
    string body = 3;
    string help_article_id = 4;
    optional MarketingPageBannerButton button = 5;
  }

  message PaymentModalBanner {
    string asset_url = 1;
    string header = 2;
    string body = 3;
  }

  message CTAButton {
    string copy = 1;
  }

  message MobileBottomSheet {
    string asset_url = 1;
    string header = 2;
    string body = 3;
    string help_article_id = 4;
    optional CTAButton button = 5;
  }

  message Gradient {
    repeated string colors = 1 [packed = false];
    float angle = 2;
  }

  message GiftIcon {
    string box_animation_url = 1;
    string trinket_animation_url = 2;
    string trinket_glow_animation_url = 3;
    optional Gradient gradient = 4;
  }

  message ThemeAwareAsset {
    string light_url = 1;
    string dark_url = 2;
    string light_static_url = 3;
    string dark_static_url = 4;
  }

  message GiftIconCoachmark {
    string header = 1;
    string body = 2;
    string asset_url = 3;
    optional ThemeAwareAsset asset = 4;
  }

  message GiftPlanSelectionCardBanner {
    string header = 1;
    string desktop_body = 2;
    string mobile_body = 3;
    optional ThemeAwareAsset avatar_asset = 4;
    string banner_asset_url = 5;
    string background_asset_url = 6;
    string card_asset_url = 7;
    optional Gradient gradient = 8;
    optional ThemeAwareAsset banner_asset = 9;
    optional ThemeAwareAsset background_asset = 10;
    optional ThemeAwareAsset card_asset = 11;
    optional ThemeAwareAsset mobile_banner_asset = 12;
  }

  message GiftCustomizationBanner {
    string asset_url = 1;
    string desktop_body = 2;
    string mobile_body = 3;
    optional Gradient gradient = 4;
    string background_asset_url = 5;
    optional ThemeAwareAsset asset = 6;
    optional ThemeAwareAsset background_asset = 7;
    optional ThemeAwareAsset mobile_background_asset = 8;
  }

  message BillingSettingsNitroGiftBanner {
    string asset_url = 1;
    string header = 2;
    string body = 3;
    string background_asset_url = 4;
    optional Gradient gradient = 5;
    string text_color = 6;
    string additional_terms = 7;
    optional ThemeAwareAsset asset = 8;
    optional ThemeAwareAsset background_asset = 9;
  }

  message GiftReminderNagbar {
    string body = 1;
  }

  message GiftReminderCoachmark {
    string header = 1;
    string body = 2;
    string asset_url = 3;
    optional ThemeAwareAsset asset = 4;
  }

  message PremiumTabTooltip {
    string header = 1;
    string body = 2;
    optional ThemeAwareAsset asset = 3;
  }

  string content_identifier = 3;
  oneof properties {
    string placeholder = 1;
    AnnouncementModalVariant1Properties announcement_modal_variant_1 = 2;
    PremiumTab premium_tab = 4;
    MarketingPageBanner marketing_page_banner = 5;
    PaymentModalBanner payment_modal_banner = 6;
    MobileBottomSheet mobile_bottom_sheet = 7;
    GiftIcon gift_icon = 8;
    GiftIconCoachmark gift_icon_coachmark = 9;
    GiftPlanSelectionCardBanner gift_plan_selection_card_banner = 10;
    GiftCustomizationBanner gift_customization_banner = 11;
    BillingSettingsNitroGiftBanner billing_settings_nitro_gift_banner = 12;
    GiftReminderNagbar gift_reminder_nagbar = 13;
    GiftReminderCoachmark gift_reminder_coachmark = 14;
    PremiumTabTooltip premium_tab_tooltip = 15;
  }

}
