import Foundation import SwiftSignalKit import Postbox public extension TelegramEngine { final class Payments { private let account: Account init(account: Account) { self.account = account } public func getBankCardInfo(cardNumber: String) -> Signal { return _internal_getBankCardInfo(account: self.account, cardNumber: cardNumber) } public func fetchBotPaymentInvoice(source: BotPaymentInvoiceSource) -> Signal { return _internal_fetchBotPaymentInvoice(postbox: self.account.postbox, network: self.account.network, source: source) } public func fetchBotPaymentForm(source: BotPaymentInvoiceSource, themeParams: [String: Any]?) -> Signal { return _internal_fetchBotPaymentForm(accountPeerId: self.account.peerId, postbox: self.account.postbox, network: self.account.network, source: source, themeParams: themeParams) } public func validateBotPaymentForm(saveInfo: Bool, source: BotPaymentInvoiceSource, formInfo: BotPaymentRequestedInfo) -> Signal { return _internal_validateBotPaymentForm(account: self.account, saveInfo: saveInfo, source: source, formInfo: formInfo) } public func sendBotPaymentForm(source: BotPaymentInvoiceSource, formId: Int64, validatedInfoId: String?, shippingOptionId: String?, tipAmount: Int64?, credentials: BotPaymentCredentials) -> Signal { return _internal_sendBotPaymentForm(account: self.account, formId: formId, source: source, validatedInfoId: validatedInfoId, shippingOptionId: shippingOptionId, tipAmount: tipAmount, credentials: credentials) } public func requestBotPaymentReceipt(messageId: MessageId) -> Signal { return _internal_requestBotPaymentReceipt(account: self.account, messageId: messageId) } public func clearBotPaymentInfo(info: BotPaymentInfo) -> Signal { return _internal_clearBotPaymentInfo(network: self.account.network, info: info) } public func sendAppStoreReceipt(receipt: Data, purpose: AppStoreTransactionPurpose) -> Signal { return _internal_sendAppStoreReceipt(account: self.account, receipt: receipt, purpose: purpose) } public func canPurchasePremium(purpose: AppStoreTransactionPurpose) -> Signal { return _internal_canPurchasePremium(account: self.account, purpose: purpose) } public func checkPremiumGiftCode(slug: String) -> Signal { return _internal_checkPremiumGiftCode(account: self.account, slug: slug) } public func applyPremiumGiftCode(slug: String) -> Signal { return _internal_applyPremiumGiftCode(account: self.account, slug: slug) } public func premiumGiftCodeOptions(peerId: EnginePeer.Id?) -> Signal<[PremiumGiftCodeOption], NoError> { return _internal_premiumGiftCodeOptions(account: self.account, peerId: peerId) } public func premiumGiveawayInfo(peerId: EnginePeer.Id, messageId: EngineMessage.Id) -> Signal { return _internal_getPremiumGiveawayInfo(account: self.account, peerId: peerId, messageId: messageId) } public func launchPrepaidGiveaway(peerId: EnginePeer.Id, id: Int64, additionalPeerIds: [EnginePeer.Id], countries: [String], onlyNewSubscribers: Bool, showWinners: Bool, prizeDescription: String?, randomId: Int64, untilDate: Int32) -> Signal { return _internal_launchPrepaidGiveaway(account: self.account, peerId: peerId, id: id, additionalPeerIds: additionalPeerIds, countries: countries, onlyNewSubscribers: onlyNewSubscribers, showWinners: showWinners, prizeDescription: prizeDescription, randomId: randomId, untilDate: untilDate) } public func starsTopUpOptions() -> Signal<[StarsTopUpOption], NoError> { return _internal_starsTopUpOptions(account: self.account) } public func peerStarsContext(peerId: EnginePeer.Id) -> StarsContext { return StarsContext(account: self.account, peerId: peerId) } public func peerStarsState(peerId: EnginePeer.Id) -> Signal { return _internal_requestStarsState(account: self.account, peerId: peerId, offset: nil) |> map { state in guard let state else { return nil } return StarsContext.State(balance: state.balance, transactions: state.transactions) } } public func sendStarsPaymentForm(formId: Int64, source: BotPaymentInvoiceSource) -> Signal { return _internal_sendStarsPaymentForm(account: self.account, formId: formId, source: source) } } }