1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
#[cfg(feature = "block2")]
use block2::*;
use objc2::__framework_prelude::*;
use objc2_app_kit::*;
use objc2_foundation::*;

use crate::*;

// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ASAuthorizationProviderExtensionAuthenticationMethod(pub NSInteger);
impl ASAuthorizationProviderExtensionAuthenticationMethod {
    #[doc(alias = "ASAuthorizationProviderExtensionAuthenticationMethodPassword")]
    pub const Password: Self = Self(1);
    #[doc(alias = "ASAuthorizationProviderExtensionAuthenticationMethodUserSecureEnclaveKey")]
    pub const UserSecureEnclaveKey: Self = Self(2);
    #[doc(alias = "ASAuthorizationProviderExtensionAuthenticationMethodSmartCard")]
    pub const SmartCard: Self = Self(3);
}

unsafe impl Encode for ASAuthorizationProviderExtensionAuthenticationMethod {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for ASAuthorizationProviderExtensionAuthenticationMethod {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

// NS_OPTIONS
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ASAuthorizationProviderExtensionRequestOptions(pub NSUInteger);
impl ASAuthorizationProviderExtensionRequestOptions {
    #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsNone")]
    pub const None: Self = Self(0);
    #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsUserInteractionEnabled")]
    pub const UserInteractionEnabled: Self = Self(1 << 0);
    #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsRegistrationRepair")]
    pub const RegistrationRepair: Self = Self(1 << 1);
    #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsRegistrationSharedDeviceKeys")]
    pub const RegistrationSharedDeviceKeys: Self = Self(1 << 2);
    #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsRegistrationDeviceKeyMigration")]
    pub const RegistrationDeviceKeyMigration: Self = Self(1 << 3);
    #[doc(alias = "ASAuthorizationProviderExtensionRequestOptionsUserKeyInvalid")]
    pub const UserKeyInvalid: Self = Self(1 << 5);
}

unsafe impl Encode for ASAuthorizationProviderExtensionRequestOptions {
    const ENCODING: Encoding = NSUInteger::ENCODING;
}

unsafe impl RefEncode for ASAuthorizationProviderExtensionRequestOptions {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ASAuthorizationProviderExtensionRegistrationResult(pub NSInteger);
impl ASAuthorizationProviderExtensionRegistrationResult {
    #[doc(alias = "ASAuthorizationProviderExtensionRegistrationResultSuccess")]
    pub const Success: Self = Self(0);
    #[doc(alias = "ASAuthorizationProviderExtensionRegistrationResultFailed")]
    pub const Failed: Self = Self(1);
    #[doc(alias = "ASAuthorizationProviderExtensionRegistrationResultUserInterfaceRequired")]
    pub const UserInterfaceRequired: Self = Self(2);
    #[doc(alias = "ASAuthorizationProviderExtensionRegistrationResultFailedNoRetry")]
    pub const FailedNoRetry: Self = Self(3);
}

unsafe impl Encode for ASAuthorizationProviderExtensionRegistrationResult {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for ASAuthorizationProviderExtensionRegistrationResult {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

// NS_OPTIONS
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ASAuthorizationProviderExtensionSupportedGrantTypes(pub NSInteger);
impl ASAuthorizationProviderExtensionSupportedGrantTypes {
    #[doc(alias = "ASAuthorizationProviderExtensionSupportedGrantTypesNone")]
    pub const None: Self = Self(0);
    #[doc(alias = "ASAuthorizationProviderExtensionSupportedGrantTypesPassword")]
    pub const Password: Self = Self(1 << 0);
    #[doc(alias = "ASAuthorizationProviderExtensionSupportedGrantTypesJWTBearer")]
    pub const JWTBearer: Self = Self(1 << 1);
    #[doc(alias = "ASAuthorizationProviderExtensionSupportedGrantTypesSAML1_1")]
    pub const SAML1_1: Self = Self(1 << 2);
    #[doc(alias = "ASAuthorizationProviderExtensionSupportedGrantTypesSAML2_0")]
    pub const SAML2_0: Self = Self(1 << 3);
}

unsafe impl Encode for ASAuthorizationProviderExtensionSupportedGrantTypes {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for ASAuthorizationProviderExtensionSupportedGrantTypes {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ASAuthorizationProviderExtensionPlatformSSOProtocolVersion(pub NSInteger);
impl ASAuthorizationProviderExtensionPlatformSSOProtocolVersion {
    pub const ASAuthorizationProviderExtensionPlatformSSOProtocolVersion1_0: Self = Self(0);
    pub const ASAuthorizationProviderExtensionPlatformSSOProtocolVersion2_0: Self = Self(1);
}

unsafe impl Encode for ASAuthorizationProviderExtensionPlatformSSOProtocolVersion {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for ASAuthorizationProviderExtensionPlatformSSOProtocolVersion {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

extern_protocol!(
    pub unsafe trait ASAuthorizationProviderExtensionRegistrationHandler:
        NSObjectProtocol
    {
        #[cfg(all(
            feature = "ASAuthorizationProviderExtensionLoginManager",
            feature = "block2"
        ))]
        #[method(beginDeviceRegistrationUsingLoginManager:options:completion:)]
        unsafe fn beginDeviceRegistrationUsingLoginManager_options_completion(
            &self,
            login_manager: &ASAuthorizationProviderExtensionLoginManager,
            options: ASAuthorizationProviderExtensionRequestOptions,
            completion: &Block<dyn Fn(ASAuthorizationProviderExtensionRegistrationResult)>,
        );

        #[cfg(all(
            feature = "ASAuthorizationProviderExtensionLoginManager",
            feature = "block2"
        ))]
        #[method(beginUserRegistrationUsingLoginManager:userName:authenticationMethod:options:completion:)]
        unsafe fn beginUserRegistrationUsingLoginManager_userName_authenticationMethod_options_completion(
            &self,
            login_manager: &ASAuthorizationProviderExtensionLoginManager,
            user_name: Option<&NSString>,
            authentication_method: ASAuthorizationProviderExtensionAuthenticationMethod,
            options: ASAuthorizationProviderExtensionRequestOptions,
            completion: &Block<dyn Fn(ASAuthorizationProviderExtensionRegistrationResult)>,
        );

        #[optional]
        #[method(registrationDidComplete)]
        unsafe fn registrationDidComplete(&self);

        #[optional]
        #[method(registrationDidCancel)]
        unsafe fn registrationDidCancel(&self);

        #[optional]
        #[method(supportedGrantTypes)]
        unsafe fn supportedGrantTypes(&self)
            -> ASAuthorizationProviderExtensionSupportedGrantTypes;

        #[optional]
        #[method(protocolVersion)]
        unsafe fn protocolVersion(
            &self,
        ) -> ASAuthorizationProviderExtensionPlatformSSOProtocolVersion;
    }

    unsafe impl ProtocolType for dyn ASAuthorizationProviderExtensionRegistrationHandler {}
);