objc2-pass-kit 0.3.2

Bindings to the PassKit framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
#[cfg(feature = "objc2-app-kit")]
#[cfg(target_os = "macos")]
use objc2_app_kit::*;
use objc2_foundation::*;

use crate::*;

extern_protocol!(
    /// [Apple's documentation](https://developer.apple.com/documentation/passkit/pkpaymentauthorizationcontrollerdelegate?language=objc)
    pub unsafe trait PKPaymentAuthorizationControllerDelegate: NSObjectProtocol {
        #[unsafe(method(paymentAuthorizationControllerDidFinish:))]
        #[unsafe(method_family = none)]
        unsafe fn paymentAuthorizationControllerDidFinish(
            &self,
            controller: &PKPaymentAuthorizationController,
            mtm: MainThreadMarker,
        );

        #[cfg(all(
            feature = "PKPayment",
            feature = "PKPaymentRequestStatus",
            feature = "block2"
        ))]
        #[optional]
        #[unsafe(method(paymentAuthorizationController:didAuthorizePayment:handler:))]
        #[unsafe(method_family = none)]
        unsafe fn paymentAuthorizationController_didAuthorizePayment_handler(
            &self,
            controller: &PKPaymentAuthorizationController,
            payment: &PKPayment,
            completion: &block2::DynBlock<dyn Fn(NonNull<PKPaymentAuthorizationResult>)>,
            mtm: MainThreadMarker,
        );

        #[cfg(all(feature = "PKConstants", feature = "PKPayment", feature = "block2"))]
        #[deprecated = "Use paymentAuthorizationController:didAuthorizePayment:handler: instead to provide more granular errors"]
        #[optional]
        #[unsafe(method(paymentAuthorizationController:didAuthorizePayment:completion:))]
        #[unsafe(method_family = none)]
        unsafe fn paymentAuthorizationController_didAuthorizePayment_completion(
            &self,
            controller: &PKPaymentAuthorizationController,
            payment: &PKPayment,
            completion: &block2::DynBlock<dyn Fn(PKPaymentAuthorizationStatus)>,
        );

        #[optional]
        #[unsafe(method(paymentAuthorizationControllerWillAuthorizePayment:))]
        #[unsafe(method_family = none)]
        unsafe fn paymentAuthorizationControllerWillAuthorizePayment(
            &self,
            controller: &PKPaymentAuthorizationController,
            mtm: MainThreadMarker,
        );

        #[cfg(all(feature = "PKPaymentRequestStatus", feature = "block2"))]
        #[optional]
        #[unsafe(method(paymentAuthorizationController:didRequestMerchantSessionUpdate:))]
        #[unsafe(method_family = none)]
        unsafe fn paymentAuthorizationController_didRequestMerchantSessionUpdate(
            &self,
            controller: &PKPaymentAuthorizationController,
            handler: &block2::DynBlock<dyn Fn(NonNull<PKPaymentRequestMerchantSessionUpdate>)>,
            mtm: MainThreadMarker,
        );

        #[cfg(all(feature = "PKPaymentRequestStatus", feature = "block2"))]
        #[optional]
        #[unsafe(method(paymentAuthorizationController:didChangeCouponCode:handler:))]
        #[unsafe(method_family = none)]
        unsafe fn paymentAuthorizationController_didChangeCouponCode_handler(
            &self,
            controller: &PKPaymentAuthorizationController,
            coupon_code: &NSString,
            completion: &block2::DynBlock<dyn Fn(NonNull<PKPaymentRequestCouponCodeUpdate>)>,
            mtm: MainThreadMarker,
        );

        #[cfg(all(
            feature = "PKPaymentRequestStatus",
            feature = "PKPaymentSummaryItem",
            feature = "PKShippingMethod",
            feature = "block2"
        ))]
        #[optional]
        #[unsafe(method(paymentAuthorizationController:didSelectShippingMethod:handler:))]
        #[unsafe(method_family = none)]
        unsafe fn paymentAuthorizationController_didSelectShippingMethod_handler(
            &self,
            controller: &PKPaymentAuthorizationController,
            shipping_method: &PKShippingMethod,
            completion: &block2::DynBlock<dyn Fn(NonNull<PKPaymentRequestShippingMethodUpdate>)>,
            mtm: MainThreadMarker,
        );

        #[cfg(all(
            feature = "PKContact",
            feature = "PKPaymentRequestStatus",
            feature = "block2"
        ))]
        #[optional]
        #[unsafe(method(paymentAuthorizationController:didSelectShippingContact:handler:))]
        #[unsafe(method_family = none)]
        unsafe fn paymentAuthorizationController_didSelectShippingContact_handler(
            &self,
            controller: &PKPaymentAuthorizationController,
            contact: &PKContact,
            completion: &block2::DynBlock<dyn Fn(NonNull<PKPaymentRequestShippingContactUpdate>)>,
            mtm: MainThreadMarker,
        );

        #[cfg(all(
            feature = "PKPaymentMethod",
            feature = "PKPaymentRequestStatus",
            feature = "block2"
        ))]
        #[optional]
        #[unsafe(method(paymentAuthorizationController:didSelectPaymentMethod:handler:))]
        #[unsafe(method_family = none)]
        unsafe fn paymentAuthorizationController_didSelectPaymentMethod_handler(
            &self,
            controller: &PKPaymentAuthorizationController,
            payment_method: &PKPaymentMethod,
            completion: &block2::DynBlock<dyn Fn(NonNull<PKPaymentRequestPaymentMethodUpdate>)>,
            mtm: MainThreadMarker,
        );

        #[cfg(all(
            feature = "PKConstants",
            feature = "PKPaymentSummaryItem",
            feature = "PKShippingMethod",
            feature = "block2"
        ))]
        #[deprecated = "Use paymentAuthorizationController:didSelectShippingMethod:handler: instead to provide more granular errors"]
        #[optional]
        #[unsafe(method(paymentAuthorizationController:didSelectShippingMethod:completion:))]
        #[unsafe(method_family = none)]
        unsafe fn paymentAuthorizationController_didSelectShippingMethod_completion(
            &self,
            controller: &PKPaymentAuthorizationController,
            shipping_method: &PKShippingMethod,
            completion: &block2::DynBlock<
                dyn Fn(PKPaymentAuthorizationStatus, NonNull<NSArray<PKPaymentSummaryItem>>),
            >,
        );

        #[cfg(all(
            feature = "PKConstants",
            feature = "PKContact",
            feature = "PKPaymentSummaryItem",
            feature = "PKShippingMethod",
            feature = "block2"
        ))]
        #[deprecated = "Use paymentAuthorizationController:didSelectShippingContact:handler: instead to provide more granular errors"]
        #[optional]
        #[unsafe(method(paymentAuthorizationController:didSelectShippingContact:completion:))]
        #[unsafe(method_family = none)]
        unsafe fn paymentAuthorizationController_didSelectShippingContact_completion(
            &self,
            controller: &PKPaymentAuthorizationController,
            contact: &PKContact,
            completion: &block2::DynBlock<
                dyn Fn(
                    PKPaymentAuthorizationStatus,
                    NonNull<NSArray<PKShippingMethod>>,
                    NonNull<NSArray<PKPaymentSummaryItem>>,
                ),
            >,
        );

        #[cfg(all(
            feature = "PKPaymentMethod",
            feature = "PKPaymentSummaryItem",
            feature = "block2"
        ))]
        #[deprecated = "Use paymentAuthorizationController:didSelectPaymentMethod:handler: instead to provide more granular errors"]
        #[optional]
        #[unsafe(method(paymentAuthorizationController:didSelectPaymentMethod:completion:))]
        #[unsafe(method_family = none)]
        unsafe fn paymentAuthorizationController_didSelectPaymentMethod_completion(
            &self,
            controller: &PKPaymentAuthorizationController,
            payment_method: &PKPaymentMethod,
            completion: &block2::DynBlock<dyn Fn(NonNull<NSArray<PKPaymentSummaryItem>>)>,
        );

        #[cfg(feature = "objc2-app-kit")]
        #[cfg(target_os = "macos")]
        #[unsafe(method(presentationWindowForPaymentAuthorizationController:))]
        #[unsafe(method_family = none)]
        unsafe fn presentationWindowForPaymentAuthorizationController(
            &self,
            controller: &PKPaymentAuthorizationController,
            mtm: MainThreadMarker,
        ) -> Option<Retained<NSWindow>>;
    }
);

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/passkit/pkpaymentauthorizationcontroller?language=objc)
    #[unsafe(super(NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct PKPaymentAuthorizationController;
);

extern_conformance!(
    unsafe impl NSObjectProtocol for PKPaymentAuthorizationController {}
);

impl PKPaymentAuthorizationController {
    extern_methods!(
        #[unsafe(method(canMakePayments))]
        #[unsafe(method_family = none)]
        pub unsafe fn canMakePayments() -> bool;

        #[cfg(feature = "PKConstants")]
        #[unsafe(method(canMakePaymentsUsingNetworks:))]
        #[unsafe(method_family = none)]
        pub unsafe fn canMakePaymentsUsingNetworks(
            supported_networks: &NSArray<PKPaymentNetwork>,
        ) -> bool;

        #[cfg(all(feature = "PKConstants", feature = "PKPaymentRequest"))]
        #[unsafe(method(canMakePaymentsUsingNetworks:capabilities:))]
        #[unsafe(method_family = none)]
        pub unsafe fn canMakePaymentsUsingNetworks_capabilities(
            supported_networks: &NSArray<PKPaymentNetwork>,
            capabilties: PKMerchantCapability,
        ) -> bool;

        #[unsafe(method(delegate))]
        #[unsafe(method_family = none)]
        pub unsafe fn delegate(
            &self,
        ) -> Option<Retained<ProtocolObject<dyn PKPaymentAuthorizationControllerDelegate>>>;

        /// Setter for [`delegate`][Self::delegate].
        ///
        /// This is a [weak property][objc2::topics::weak_property].
        #[unsafe(method(setDelegate:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setDelegate(
            &self,
            delegate: Option<&ProtocolObject<dyn PKPaymentAuthorizationControllerDelegate>>,
        );

        #[cfg(feature = "PKPaymentRequest")]
        #[unsafe(method(initWithPaymentRequest:))]
        #[unsafe(method_family = init)]
        pub unsafe fn initWithPaymentRequest(
            this: Allocated<Self>,
            request: &PKPaymentRequest,
        ) -> Retained<Self>;

        #[cfg(feature = "block2")]
        #[unsafe(method(presentWithCompletion:))]
        #[unsafe(method_family = none)]
        pub unsafe fn presentWithCompletion(
            &self,
            completion: Option<&block2::DynBlock<dyn Fn(Bool)>>,
        );

        #[cfg(feature = "block2")]
        #[unsafe(method(dismissWithCompletion:))]
        #[unsafe(method_family = none)]
        pub unsafe fn dismissWithCompletion(&self, completion: Option<&block2::DynBlock<dyn Fn()>>);

        #[unsafe(method(supportsDisbursements))]
        #[unsafe(method_family = none)]
        pub unsafe fn supportsDisbursements() -> bool;

        #[cfg(feature = "PKConstants")]
        #[unsafe(method(supportsDisbursementsUsingNetworks:))]
        #[unsafe(method_family = none)]
        pub unsafe fn supportsDisbursementsUsingNetworks(
            supported_networks: &NSArray<PKPaymentNetwork>,
        ) -> bool;

        #[cfg(all(feature = "PKConstants", feature = "PKPaymentRequest"))]
        #[unsafe(method(supportsDisbursementsUsingNetworks:capabilities:))]
        #[unsafe(method_family = none)]
        pub unsafe fn supportsDisbursementsUsingNetworks_capabilities(
            supported_networks: &NSArray<PKPaymentNetwork>,
            capabilties: PKMerchantCapability,
        ) -> bool;

        #[cfg(feature = "PKDisbursementRequest")]
        #[unsafe(method(initWithDisbursementRequest:))]
        #[unsafe(method_family = init)]
        pub unsafe fn initWithDisbursementRequest(
            this: Allocated<Self>,
            request: &PKDisbursementRequest,
        ) -> Retained<Self>;
    );
}

/// Methods declared on superclass `NSObject`.
impl PKPaymentAuthorizationController {
    extern_methods!(
        #[unsafe(method(init))]
        #[unsafe(method_family = init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[unsafe(method(new))]
        #[unsafe(method_family = new)]
        pub unsafe fn new() -> Retained<Self>;
    );
}