use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct SKPaymentQueue;
unsafe impl ClassType for SKPaymentQueue {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl Send for SKPaymentQueue {}
unsafe impl Sync for SKPaymentQueue {}
unsafe impl NSObjectProtocol for SKPaymentQueue {}
extern_methods!(
unsafe impl SKPaymentQueue {
#[method_id(@__retain_semantics Other delegate)]
pub unsafe fn delegate(
&self,
) -> Option<Retained<ProtocolObject<dyn SKPaymentQueueDelegate>>>;
#[method(setDelegate:)]
pub unsafe fn setDelegate(
&self,
delegate: Option<&ProtocolObject<dyn SKPaymentQueueDelegate>>,
);
#[cfg(feature = "SKStorefront")]
#[method_id(@__retain_semantics Other storefront)]
pub unsafe fn storefront(&self) -> Option<Retained<SKStorefront>>;
#[method_id(@__retain_semantics Other defaultQueue)]
pub unsafe fn defaultQueue() -> Retained<Self>;
#[method(canMakePayments)]
pub unsafe fn canMakePayments() -> bool;
#[cfg(feature = "SKPayment")]
#[method(addPayment:)]
pub unsafe fn addPayment(&self, payment: &SKPayment);
#[method(restoreCompletedTransactions)]
pub unsafe fn restoreCompletedTransactions(&self);
#[method(restoreCompletedTransactionsWithApplicationUsername:)]
pub unsafe fn restoreCompletedTransactionsWithApplicationUsername(
&self,
username: Option<&NSString>,
);
#[cfg(feature = "SKPaymentTransaction")]
#[method(finishTransaction:)]
pub unsafe fn finishTransaction(&self, transaction: &SKPaymentTransaction);
#[cfg(feature = "SKDownload")]
#[deprecated = "Hosted content is no longer supported"]
#[method(startDownloads:)]
pub unsafe fn startDownloads(&self, downloads: &NSArray<SKDownload>);
#[cfg(feature = "SKDownload")]
#[deprecated = "Hosted content is no longer supported"]
#[method(pauseDownloads:)]
pub unsafe fn pauseDownloads(&self, downloads: &NSArray<SKDownload>);
#[cfg(feature = "SKDownload")]
#[deprecated = "Hosted content is no longer supported"]
#[method(resumeDownloads:)]
pub unsafe fn resumeDownloads(&self, downloads: &NSArray<SKDownload>);
#[cfg(feature = "SKDownload")]
#[deprecated = "Hosted content is no longer supported"]
#[method(cancelDownloads:)]
pub unsafe fn cancelDownloads(&self, downloads: &NSArray<SKDownload>);
#[method(addTransactionObserver:)]
pub unsafe fn addTransactionObserver(
&self,
observer: &ProtocolObject<dyn SKPaymentTransactionObserver>,
);
#[method(removeTransactionObserver:)]
pub unsafe fn removeTransactionObserver(
&self,
observer: &ProtocolObject<dyn SKPaymentTransactionObserver>,
);
#[method_id(@__retain_semantics Other transactionObservers)]
pub unsafe fn transactionObservers(
&self,
) -> Retained<NSArray<ProtocolObject<dyn SKPaymentTransactionObserver>>>;
#[cfg(feature = "SKPaymentTransaction")]
#[method_id(@__retain_semantics Other transactions)]
pub unsafe fn transactions(&self) -> Retained<NSArray<SKPaymentTransaction>>;
#[method(showPriceConsentIfNeeded)]
pub unsafe fn showPriceConsentIfNeeded(&self);
#[method(presentCodeRedemptionSheet)]
pub unsafe fn presentCodeRedemptionSheet(&self);
}
);
extern_methods!(
unsafe impl SKPaymentQueue {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);
extern_protocol!(
pub unsafe trait SKPaymentQueueDelegate: NSObjectProtocol {
#[cfg(all(feature = "SKPaymentTransaction", feature = "SKStorefront"))]
#[optional]
#[method(paymentQueue:shouldContinueTransaction:inStorefront:)]
unsafe fn paymentQueue_shouldContinueTransaction_inStorefront(
&self,
payment_queue: &SKPaymentQueue,
transaction: &SKPaymentTransaction,
new_storefront: &SKStorefront,
) -> bool;
#[optional]
#[method(paymentQueueShouldShowPriceConsent:)]
unsafe fn paymentQueueShouldShowPriceConsent(&self, payment_queue: &SKPaymentQueue)
-> bool;
}
unsafe impl ProtocolType for dyn SKPaymentQueueDelegate {}
);
extern_protocol!(
pub unsafe trait SKPaymentTransactionObserver: NSObjectProtocol {
#[cfg(feature = "SKPaymentTransaction")]
#[method(paymentQueue:updatedTransactions:)]
unsafe fn paymentQueue_updatedTransactions(
&self,
queue: &SKPaymentQueue,
transactions: &NSArray<SKPaymentTransaction>,
);
#[cfg(feature = "SKPaymentTransaction")]
#[optional]
#[method(paymentQueue:removedTransactions:)]
unsafe fn paymentQueue_removedTransactions(
&self,
queue: &SKPaymentQueue,
transactions: &NSArray<SKPaymentTransaction>,
);
#[optional]
#[method(paymentQueue:restoreCompletedTransactionsFailedWithError:)]
unsafe fn paymentQueue_restoreCompletedTransactionsFailedWithError(
&self,
queue: &SKPaymentQueue,
error: &NSError,
);
#[optional]
#[method(paymentQueueRestoreCompletedTransactionsFinished:)]
unsafe fn paymentQueueRestoreCompletedTransactionsFinished(&self, queue: &SKPaymentQueue);
#[cfg(feature = "SKDownload")]
#[deprecated = "Hosted content is no longer supported"]
#[optional]
#[method(paymentQueue:updatedDownloads:)]
unsafe fn paymentQueue_updatedDownloads(
&self,
queue: &SKPaymentQueue,
downloads: &NSArray<SKDownload>,
);
#[cfg(all(feature = "SKPayment", feature = "SKProduct"))]
#[optional]
#[method(paymentQueue:shouldAddStorePayment:forProduct:)]
unsafe fn paymentQueue_shouldAddStorePayment_forProduct(
&self,
queue: &SKPaymentQueue,
payment: &SKPayment,
product: &SKProduct,
) -> bool;
#[optional]
#[method(paymentQueueDidChangeStorefront:)]
unsafe fn paymentQueueDidChangeStorefront(&self, queue: &SKPaymentQueue);
#[optional]
#[method(paymentQueue:didRevokeEntitlementsForProductIdentifiers:)]
unsafe fn paymentQueue_didRevokeEntitlementsForProductIdentifiers(
&self,
queue: &SKPaymentQueue,
product_identifiers: &NSArray<NSString>,
);
}
unsafe impl ProtocolType for dyn SKPaymentTransactionObserver {}
);