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!(
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!(
#[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>>>;
#[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>;
);
}
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>;
);
}