/* 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 "api/api_statistics_sender.h" #include "data/data_credits.h" #include "data/data_credits_earn.h" #include "mtproto/sender.h" namespace Main { class Session; } // namespace Main class UserData; namespace Api { class CreditsTopupOptions final { public: CreditsTopupOptions(not_null peer); [[nodiscard]] rpl::producer request(); [[nodiscard]] Data::CreditTopupOptions options() const; private: const not_null _peer; Data::CreditTopupOptions _options; MTP::Sender _api; }; class CreditsStatus final { public: CreditsStatus(not_null peer); void request( const Data::CreditsStatusSlice::OffsetToken &token, Fn done); private: const not_null _peer; mtpRequestId _requestId = 0; MTP::Sender _api; }; class CreditsHistory final { public: CreditsHistory(not_null peer, bool in, bool out); void request( const Data::CreditsStatusSlice::OffsetToken &token, Fn done); void requestSubscriptions( const Data::CreditsStatusSlice::OffsetToken &token, Fn done); private: using HistoryTL = MTPpayments_GetStarsTransactions; const not_null _peer; const HistoryTL::Flags _flags; mtpRequestId _requestId = 0; MTP::Sender _api; }; class CreditsEarnStatistics final : public StatisticsRequestSender { public: explicit CreditsEarnStatistics(not_null); [[nodiscard]] rpl::producer request(); [[nodiscard]] Data::CreditsEarnStatistics data() const; private: Data::CreditsEarnStatistics _data; bool _isUser = false; mtpRequestId _requestId = 0; }; [[nodiscard]] rpl::producer> PremiumPeerBot( not_null session); } // namespace Api