/* This file is part of Telegram Desktop, the official desktop application for the Telegram messaging service. For license and copyright information please follow this link: https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once #include "settings/settings_type.h" enum class PremiumPreview; namespace Ui { class RpWidget; class GradientButton; } // namespace Ui namespace Main { class Session; } // namespace Main namespace Window { class SessionController; } // namespace Window namespace Settings { [[nodiscard]] Type PremiumId(); void ShowPremium(not_null<::Main::Session*> session, const QString &ref); void ShowPremium( not_null controller, const QString &ref); void ShowGiftPremium( not_null controller, not_null peer, int months, bool me); void ShowEmojiStatusPremium( not_null controller, not_null peer); void StartPremiumPayment( not_null controller, const QString &ref); [[nodiscard]] QString LookupPremiumRef(PremiumPreview section); struct SubscribeButtonArgs final { not_null controller; not_null parent; Fn computeRef; std::optional> text; std::optional gradientStops; Fn computeBotUrl; // nullable }; [[nodiscard]] not_null CreateSubscribeButton( SubscribeButtonArgs &&args); [[nodiscard]] std::vector PremiumPreviewOrder( not_null<::Main::Session*> session); } // namespace Settings