objc2-store-kit 0.2.2

Bindings to the StoreKit framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
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!(
    /// Methods declared on superclass `NSObject`
    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 {}
);