/* 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 "mtproto/sender.h" class UserData; namespace Api { struct GiftCode; } // namespace Api namespace Data { struct GiveawayStart; struct GiveawayResults; } // namespace Data namespace Ui { class GenericBox; } // namespace Ui namespace Window { class SessionController; class SessionNavigation; } // namespace Window class GiftPremiumValidator final { public: GiftPremiumValidator(not_null controller); void showBox(not_null user); void showChoosePeerBox(); void cancel(); private: const not_null _controller; MTP::Sender _api; mtpRequestId _requestId = 0; rpl::lifetime _manyGiftsLifetime; }; [[nodiscard]] rpl::producer GiftDurationValue(int months); [[nodiscard]] QString GiftDuration(int months); void GiftCodeBox( not_null box, not_null controller, const QString &slug); void GiftCodePendingBox( not_null box, not_null controller, const Api::GiftCode &data); void ResolveGiftCode( not_null controller, const QString &slug, PeerId fromId = 0, PeerId toId = 0); void ResolveGiveawayInfo( not_null controller, not_null peer, MsgId messageId, std::optional start, std::optional results);