/* 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 ChatHelpers { class Show; } // namespace ChatHelpers namespace Data { struct GiftAuctionState; struct ActiveAuctions; struct StarGift; } // namespace Data namespace Info::PeerGifts { struct GiftSendDetails; } // namespace Info::PeerGifts namespace Window { class SessionController; } // namespace Window namespace Ui { class BoxContent; class RoundButton; class GenericBox; [[nodiscard]] rpl::lifetime ShowStarGiftAuction( not_null controller, PeerData *peer, QString slug, Fn finishRequesting, Fn boxClosed); struct AuctionBidBoxArgs { not_null peer; std::shared_ptr show; rpl::producer state; std::unique_ptr details; }; [[nodiscard]] object_ptr MakeAuctionBidBox( AuctionBidBoxArgs &&args); enum class AuctionButtonCountdownType { Join, Place, Preview, }; void SetAuctionButtonCountdownText( not_null button, AuctionButtonCountdownType type, rpl::producer value); void AuctionAboutBox( not_null box, int rounds, int giftsPerRound, Fn close)> understood); [[nodiscard]] TextWithEntities ActiveAuctionsTitle( const Data::ActiveAuctions &auctions); struct ManyAuctionsState { TextWithEntities text; bool someOutbid = false; }; [[nodiscard]] ManyAuctionsState ActiveAuctionsState( const Data::ActiveAuctions &auctions); [[nodiscard]] rpl::producer ActiveAuctionsButton( const Data::ActiveAuctions &auctions); [[nodiscard]] Fn ActiveAuctionsCallback( not_null window, const Data::ActiveAuctions &auctions); } // namespace Ui