/* 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 namespace Data { struct UniqueGift; struct GiftCode; struct CreditsHistoryEntry; } // namespace Data namespace Payments { enum class CheckoutResult; } // namespace Payments namespace Window { class SessionController; } // namespace Window namespace Ui::Text { class CustomEmoji; } // namespace Ui::Text namespace Ui { class GenericBox; class VerticalLayout; void ChooseStarGiftRecipient( not_null controller); void ShowStarGiftBox( not_null controller, not_null peer); void AddUniqueGiftCover( not_null container, rpl::producer data, rpl::producer subtitleOverride = nullptr); void PaintPoints( QPainter &p, base::flat_map &cache, not_null emoji, const Data::UniqueGift &gift, const QRect &rect, float64 shown = 1.); struct StarGiftUpgradeArgs { not_null controller; base::required stargiftId; Fn ready; not_null user; MsgId itemId = 0; int cost = 0; bool canAddSender = false; bool canAddComment = false; bool canAddMyComment = false; bool addDetailsDefault = false; }; void ShowStarGiftUpgradeBox(StarGiftUpgradeArgs &&args); void AddUniqueCloseButton(not_null box); void RequestStarsFormAndSubmit( not_null window, MTPInputInvoice invoice, Fn done); void ShowGiftTransferredToast( base::weak_ptr weak, not_null to, const MTPUpdates &result); } // namespace Ui