/* 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 template class object_ptr; class PeerData; namespace Data { struct CreditsHistoryEntry; } // namespace Data namespace Main { class SessionShow; } // namespace Main namespace Window { class SessionController; } // namespace Window namespace Ui { class GenericBox; class RpWidget; class VerticalLayout; } // namespace Ui namespace Settings { void FillCreditOptions( std::shared_ptr show, not_null container, not_null peer, int minCredits, Fn paid); [[nodiscard]] not_null AddBalanceWidget( not_null parent, rpl::producer balanceValue, bool rightAlign); void AddWithdrawalWidget( not_null container, not_null controller, not_null peer, rpl::producer secondButtonUrl, rpl::producer availableBalanceValue, rpl::producer dateValue, rpl::producer lockedValue, rpl::producer usdValue); void ReceiptCreditsBox( not_null box, not_null controller, PeerData *premiumBot, const Data::CreditsHistoryEntry &e); void GiftedCreditsBox( not_null box, not_null controller, not_null from, not_null to, int count, TimeId date); void ShowRefundInfoBox( not_null controller, FullMsgId refundItemId); [[nodiscard]] object_ptr GenericEntryPhoto( not_null parent, Fn(Fn update)> callback, int photoSize); [[nodiscard]] object_ptr HistoryEntryPhoto( not_null parent, not_null photo, int photoSize); [[nodiscard]] object_ptr PaidMediaThumbnail( not_null parent, not_null photo, PhotoData *second, int totalCount, int photoSize); struct SmallBalanceBot { UserId botId = 0; }; struct SmallBalanceReaction { ChannelId channelId = 0; }; struct SmallBalanceSource : std::variant< SmallBalanceBot, SmallBalanceReaction> { using variant::variant; }; void SmallBalanceBox( not_null box, std::shared_ptr show, uint64 credits, SmallBalanceSource source, Fn paid); enum class SmallBalanceResult { Success, Blocked, Cancelled, }; void MaybeRequestBalanceIncrease( std::shared_ptr show, uint64 credits, SmallBalanceSource source, Fn done); } // namespace Settings