import type { NobjcObject } from "objc-js";
import type { _ASAuthorizationProviderExtensionLoginManager } from "./ASAuthorizationProviderExtensionLoginManager.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSData } from "../Foundation/NSData.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { ASAuthorizationProviderExtensionAuthenticationMethod } from "./ASAuthorizationProviderExtensionAuthenticationMethod.js";
import type { ASAuthorizationProviderExtensionKeyType } from "./ASAuthorizationProviderExtensionKeyType.js";
import type { ASAuthorizationProviderExtensionPlatformSSOProtocolVersion } from "./ASAuthorizationProviderExtensionPlatformSSOProtocolVersion.js";
import type { ASAuthorizationProviderExtensionRegistrationResult } from "./ASAuthorizationProviderExtensionRegistrationResult.js";
import type { ASAuthorizationProviderExtensionRequestOptions } from "./ASAuthorizationProviderExtensionRequestOptions.js";
import type { ASAuthorizationProviderExtensionSupportedGrantTypes } from "./ASAuthorizationProviderExtensionSupportedGrantTypes.js";
export interface _ASAuthorizationProviderExtensionRegistrationHandler {
    /**
     * @abstract This initiates device registration process for the SSO extension. @param loginManager The login manager used to interface with Platform SSO. @param options The request options that apply to the request. @param completion The completion to call to continue device registration.
     */
    beginDeviceRegistrationUsingLoginManager$options$completion$?(loginManager: _ASAuthorizationProviderExtensionLoginManager, options: ASAuthorizationProviderExtensionRequestOptions, completion: (result: ASAuthorizationProviderExtensionRegistrationResult) => void): void;
    /**
     * @abstract This initiates user registration process for the user and the extension. @param loginManager The login manager used to interface with Platform SSO. @param userName The username for the user registration. @param authenticationMethod The authentication method to be used for the user. @param options The request options that apply to the request. @param completion The completion to call to continue user registration.
     */
    beginUserRegistrationUsingLoginManager$userName$authenticationMethod$options$completion$?(loginManager: _ASAuthorizationProviderExtensionLoginManager, userName: _NSString | null, authenticationMethod: ASAuthorizationProviderExtensionAuthenticationMethod, options: ASAuthorizationProviderExtensionRequestOptions, completion: (result: ASAuthorizationProviderExtensionRegistrationResult) => void): void;
    /**
     * @abstract Call to extension to free any resources used by the extension during registration. It will be called once after all current registration calls are complete.
     */
    registrationDidComplete?(): void;
    /** @abstract Call to extension when the registration has been cancelled. */
    registrationDidCancel?(): void;
    /** @abstract The grant types supported by the identity provider. */
    supportedGrantTypes?(): ASAuthorizationProviderExtensionSupportedGrantTypes;
    /** @abstract The protocol version supported by the identity provider. */
    protocolVersion?(): ASAuthorizationProviderExtensionPlatformSSOProtocolVersion;
    /**
     * @abstract The specified keyType will rotate to a new key. The rotation is complete when the completion handler is called. This is only called by the system for automatic key rotation.
     */
    keyWillRotateForKeyType$newKey$loginManager$completion$?(keyType: ASAuthorizationProviderExtensionKeyType, newKey: NobjcObject, loginManager: _ASAuthorizationProviderExtensionLoginManager, completion: (success: boolean) => void): void;
    /**
     * @abstract Request the display names for the supplied group identifiers. The completion key is the identifier and the value is the display name.
     */
    displayNamesForGroups$loginManager$completion$?(groups: _NSArray, loginManager: _ASAuthorizationProviderExtensionLoginManager, completion: (fullNames: _NSDictionary) => void): void;
    /** @abstract Request the profile picture for the current user in jpeg format. */
    profilePictureForUserUsingLoginManager$completion$?(loginManager: _ASAuthorizationProviderExtensionLoginManager, completion: (jpegData: _NSData) => void): void;
    /** @abstract The supported device signing algorithms. */
    supportedDeviceSigningAlgorithms?(): _NSArray;
    /** @abstract The supported device encryption algorithms. */
    supportedDeviceEncryptionAlgorithms?(): _NSArray;
    /** @abstract The supported user Secure Enclave Key signing algorithms. */
    supportedUserSecureEnclaveKeySigningAlgorithms?(): _NSArray;
}
