#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
#ifndef FBSDKGAMINGSERVICESKIT_SWIFT_H
#define FBSDKGAMINGSERVICESKIT_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"

#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif

#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif

#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
# include <ptrauth.h>
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
# ifndef __ptrauth_swift_value_witness_function_pointer
#  define __ptrauth_swift_value_witness_function_pointer(x)
# endif
# ifndef __ptrauth_swift_class_method_pointer
#  define __ptrauth_swift_class_method_pointer(x)
# endif
#pragma clang diagnostic pop
#endif
#endif

#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
#  include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2  __attribute__((__ext_vector_type__(2)));
typedef float swift_float3  __attribute__((__ext_vector_type__(3)));
typedef float swift_float4  __attribute__((__ext_vector_type__(4)));
typedef double swift_double2  __attribute__((__ext_vector_type__(2)));
typedef double swift_double3  __attribute__((__ext_vector_type__(3)));
typedef double swift_double4  __attribute__((__ext_vector_type__(4)));
typedef int swift_int2  __attribute__((__ext_vector_type__(2)));
typedef int swift_int3  __attribute__((__ext_vector_type__(3)));
typedef int swift_int4  __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2  __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3  __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4  __attribute__((__ext_vector_type__(4)));
#endif

#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
#  define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
#  define SWIFT_CLASS_PROPERTY(...) 
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
#  define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
#  define SWIFT_RUNTIME_NAME(X) 
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
#  define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
#  define SWIFT_COMPILE_NAME(X) 
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
#  define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
#  define SWIFT_METHOD_FAMILY(X) 
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
#  define SWIFT_NOESCAPE __attribute__((noescape))
# else
#  define SWIFT_NOESCAPE 
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
#  define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
#  define SWIFT_RELEASES_ARGUMENT 
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
#  define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
#  define SWIFT_WARN_UNUSED_RESULT 
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
#  define SWIFT_NORETURN __attribute__((noreturn))
# else
#  define SWIFT_NORETURN 
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA 
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA 
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA 
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER 
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
#  define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
#  define SWIFT_ENUM_ATTR(_extensibility) 
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
#  define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
#  define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction 
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
#  define SWIFT_EXTERN extern "C"
# else
#  define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT 
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
#  define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
#  define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
#  define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL 
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
@import CoreFoundation;
@import FBSDKCoreKit;
@import FBSDKShareKit;
@import Foundation;
@import ObjectiveC;
#endif

#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"

#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="FBSDKGamingServicesKit",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif

#if defined(__OBJC__)

/// A protocol that a content object must conform to be used in a Gaming Services dialog
SWIFT_PROTOCOL_NAMED("ValidatableProtocol")
@protocol FBSDKValidatable
- (BOOL)validateAndReturnError:(NSError * _Nullable * _Nullable)error;
@end

enum FBSDKChooseContextFilter : NSInteger;
@class NSString;

/// A model for an instant games choose context app switch dialog
SWIFT_CLASS_NAMED("ChooseContextContent")
@interface FBSDKChooseContextContent : NSObject <FBSDKValidatable>
/// This sets the filter which determines which context will show when the user is app switched to the choose context dialog.
@property (nonatomic) enum FBSDKChooseContextFilter filter;
/// This sets the maximum number of participants that the suggested context(s) shown in the dialog should have.
@property (nonatomic) NSInteger maxParticipants;
/// This sets the minimum number of participants that the suggested context(s) shown in the dialog should have.
@property (nonatomic) NSInteger minParticipants;
+ (NSString * _Nonnull)filtersNameForFilters:(enum FBSDKChooseContextFilter)filter SWIFT_WARN_UNUSED_RESULT;
- (BOOL)validateAndReturnError:(NSError * _Nullable * _Nullable)error;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@protocol FBSDKContextDialogDelegate;

/// The protocol sdk dialogs must conform to and implement all the following methods.
SWIFT_PROTOCOL_NAMED("DialogProtocol")
@protocol FBSDKDialog
/// The receiver’s delegate or nil if it doesn’t have a delegate.
@property (nonatomic, weak) id <FBSDKContextDialogDelegate> _Nullable delegate;
/// The content object used to create the specific dialog
@property (nonatomic, strong) id <FBSDKValidatable> _Nullable dialogContent;
/// Begins to show the specfic dialog
/// @return true if the receiver was able to show the dialog, otherwise false.
- (BOOL)show SWIFT_WARN_UNUSED_RESULT;
/// Validates the content for the dialog
- (BOOL)validateAndReturnError:(NSError * _Nullable * _Nullable)error;
@end

@class FBSDKWebDialog;
@protocol _FBSDKWindowFinding;

/// A super class type for the context dialogs classes that show an in-app webview to display content.
SWIFT_CLASS_NAMED("ContextWebDialog")
@interface FBSDKContextWebDialog : NSObject <FBSDKWebDialogDelegate, FBSDKDialog>
@property (nonatomic, strong) id <FBSDKContextDialogDelegate> _Nullable delegate;
@property (nonatomic, strong) id <FBSDKValidatable> _Nullable dialogContent;
@property (nonatomic, strong) FBSDKWebDialog * _Nullable currentWebDialog;
- (BOOL)show SWIFT_WARN_UNUSED_RESULT;
- (BOOL)validateAndReturnError:(NSError * _Nullable * _Nullable)error;
- (void)webDialog:(FBSDKWebDialog * _Nonnull)webDialog didCompleteWithResults:(NSDictionary<NSString *, id> * _Nonnull)results;
- (void)webDialog:(FBSDKWebDialog * _Nonnull)webDialog didFailWithError:(NSError * _Nonnull)error;
- (void)webDialogDidCancel:(FBSDKWebDialog * _Nonnull)webDialog;
/// Depending on the content size within the browser, this method allows for the resizing of web dialog
- (CGRect)createWebDialogFrameWithWidth:(CGFloat)width height:(CGFloat)height windowFinder:(id <_FBSDKWindowFinding> _Nonnull)windowFinder SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class UIApplication;
@class NSURL;

/// A dialog for the choose context through app switch
SWIFT_CLASS_NAMED("ChooseContextDialog")
@interface FBSDKChooseContextDialog : FBSDKContextWebDialog <FBSDKURLOpening>
/// Convenience method to build up a choose context app switch with content and a delegate.
/// @param content The content for the choose context dialog
/// @param delegate The receiver’s delegate.
- (nonnull instancetype)initWithContent:(FBSDKChooseContextContent * _Nonnull)content delegate:(id <FBSDKContextDialogDelegate> _Nonnull)delegate;
- (BOOL)show SWIFT_WARN_UNUSED_RESULT;
- (BOOL)validateAndReturnError:(NSError * _Nullable * _Nullable)error;
- (BOOL)application:(UIApplication * _Nullable)application openURL:(NSURL * _Nullable)url sourceApplication:(NSString * _Nullable)sourceApplication annotation:(id _Nullable)annotation SWIFT_WARN_UNUSED_RESULT;
- (BOOL)canOpenURL:(NSURL * _Nonnull)url forApplication:(UIApplication * _Nullable)application sourceApplication:(NSString * _Nullable)sourceApplication annotation:(id _Nullable)annotation SWIFT_WARN_UNUSED_RESULT;
- (void)applicationDidBecomeActive:(UIApplication * _Nonnull)application;
- (BOOL)isAuthenticationURL:(NSURL * _Nonnull)url SWIFT_WARN_UNUSED_RESULT;
@end


SWIFT_PROTOCOL_NAMED("Showable")
@protocol FBSDKShowable
- (BOOL)show SWIFT_WARN_UNUSED_RESULT;
@end


@interface FBSDKChooseContextDialog (SWIFT_EXTENSION(FBSDKGamingServicesKit)) <FBSDKShowable>
@end

typedef SWIFT_ENUM_NAMED(NSInteger, FBSDKChooseContextFilter, "ChooseContextFilter", open) {
  FBSDKChooseContextFilterNone = 0,
  FBSDKChooseContextFilterExistingChallenges = 1,
  FBSDKChooseContextFilterNewPlayersOnly = 2,
  FBSDKChooseContextFilterNewContextOnly = 3,
};


/// A delegate for context dialogs to communicate with the dialog handler.
/// The delegate is notified with the results of the cross play request as long as the application has permissions to
/// receive the information.  For example, if the person is not signed into the containing app, the shower may not be able
/// to distinguish between completion of a cross play request and cancellation.
SWIFT_PROTOCOL_NAMED("ContextDialogDelegate")
@protocol FBSDKContextDialogDelegate
/// Sent to the delegate when the context dialog completes without error.
/// @param contextDialog The FBSDKContextDialog that completed.
- (void)contextDialogDidComplete:(FBSDKContextWebDialog * _Nonnull)contextDialog;
/// Sent to the delegate when the context dialog encounters an error.
/// @param contextDialog The FBSDKContextDialog that completed.
/// @param error The error.
- (void)contextDialog:(FBSDKContextWebDialog * _Nonnull)contextDialog didFailWithError:(NSError * _Nonnull)error;
/// Sent to the delegate when the cross play request dialog is cancelled.
/// @param contextDialog The FBSDKContextDialog that completed.
- (void)contextDialogDidCancel:(FBSDKContextWebDialog * _Nonnull)contextDialog;
@end

@class FBSDKCreateContextContent;
@class FBSDKSwitchContextContent;

/// A dialog presenter responsible for creating and showing all the dialogs that create, switch,
/// choose and otherwise manipulate the gaming context.
SWIFT_CLASS_NAMED("ContextDialogPresenter")
@interface FBSDKContextDialogPresenter : NSObject
- (nonnull instancetype)init;
/// Convenience method to build up and show an instant games create context dialog with content and delegate.
/// \param content The content for the create context dialog
///
/// \param delegate The receiver’s delegate.
///
- (BOOL)makeAndShowCreateContextDialogWithContent:(FBSDKCreateContextContent * _Nonnull)content delegate:(id <FBSDKContextDialogDelegate> _Nonnull)delegate error:(NSError * _Nullable * _Nullable)error;
/// Convenience method to build up and show an instant games switch context dialog with the giving content and delegate.
/// \param content The content for the switch context dialog
///
/// \param delegate The receiver’s delegate.
///
- (BOOL)makeAndShowSwitchContextDialogWithContent:(FBSDKSwitchContextContent * _Nonnull)content delegate:(id <FBSDKContextDialogDelegate> _Nonnull)delegate error:(NSError * _Nullable * _Nullable)error;
/// Convenience method to build up and show an instant games choose context dialog with content and a delegate.
/// \param content The content for the choose context dialog
///
/// \param delegate The receiver’s delegate.
///
- (void)makeAndShowChooseContextDialogWithContent:(FBSDKChooseContextContent * _Nonnull)content delegate:(id <FBSDKContextDialogDelegate> _Nonnull)delegate;
@end



/// A model for an instant games createAsync cross play request.
SWIFT_CLASS_NAMED("CreateContextContent")
@interface FBSDKCreateContextContent : NSObject <FBSDKValidatable>
/// The ID of the player that is being challenged.
/// @return The ID for the player being challenged
@property (nonatomic, copy) NSString * _Nonnull playerID;
/// Builds a content object that will be use to display a create context dialog
/// @param playerID The player ID of the user being challenged which will be used  to create a game context
- (nonnull instancetype)initDialogContentWithPlayerID:(NSString * _Nonnull)playerID OBJC_DESIGNATED_INITIALIZER;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
- (BOOL)validateAndReturnError:(NSError * _Nullable * _Nullable)error;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A dialog to create a context through a web view
SWIFT_CLASS_NAMED("CreateContextDialog")
@interface FBSDKCreateContextDialog : FBSDKContextWebDialog
/// Builds a context creation web dialog with content and a delegate.
/// @param content The content for the create context dialog
/// @param windowFinder The application window finder that provides the window to display the dialog
/// @param delegate The receiver’s delegate used to let the receiver know a context was created or failure
- (nonnull instancetype)initWithContent:(FBSDKCreateContextContent * _Nonnull)content windowFinder:(id <_FBSDKWindowFinding> _Nonnull)windowFinder delegate:(id <FBSDKContextDialogDelegate> _Nonnull)delegate OBJC_DESIGNATED_INITIALIZER;
- (BOOL)show;
- (BOOL)validateAndReturnError:(NSError * _Nullable * _Nullable)error;
@end


@interface FBSDKCreateContextDialog (SWIFT_EXTENSION(FBSDKGamingServicesKit)) <FBSDKShowable>
@end




SWIFT_CLASS_NAMED("FriendFinderDialog")
@interface FBSDKFriendFinderDialog : NSObject
- (nonnull instancetype)init;
+ (void)launchFriendFinderDialogWithCompletionHandler:(void (^ _Nonnull)(BOOL, NSError * _Nullable))completionHandler;
@end

/// Additional context about the nature of the game request.
typedef SWIFT_ENUM_NAMED(NSUInteger, FBSDKGameRequestActionType, "GameRequestActionType", open) {
/// No action type
  FBSDKGameRequestActionTypeNone = 0,
/// Send action type: The user is sending an object to the friends.
  FBSDKGameRequestActionTypeSend = 1,
/// Ask For action type: The user is asking for an object from friends.
  FBSDKGameRequestActionTypeAskFor = 2,
/// Turn action type: It is the turn of the friends to play against the user in a match.
  FBSDKGameRequestActionTypeTurn = 3,
/// Invite action type: The user is inviting a friend.
  FBSDKGameRequestActionTypeInvite = 4,
};

enum FBSDKGameRequestFilter : NSUInteger;
@class NSCoder;

/// A model for a game request.
SWIFT_CLASS_NAMED("GameRequestContent")
@interface FBSDKGameRequestContent : NSObject <FBSDKSharingValidatable, NSSecureCoding>
/// Used when defining additional context about the nature of the request.
/// The parameter ‘objectID’ is required if the action type is either
/// ‘.send’ or ‘.askFor’.
/// seealso:
/// objectID
@property (nonatomic) enum FBSDKGameRequestActionType actionType;
/// Additional freeform data you may pass for tracking. This will be stored as part of
/// the request objects created. The maximum length is 255 characters.
@property (nonatomic, copy) NSString * _Nullable data;
/// This controls the set of friends someone sees if a multi-friend selector is shown.
/// It is <code>.none</code> by default, meaning that all friends can be shown.
/// If specify as <code>.appUsers</code>, only friends who use the app will be shown.
/// On the other hands, use <code>.appNonUsers</code> to filter only friends who do not use the app.
/// The parameter name is preserved to be consistent with the counter part on desktop.
@property (nonatomic) enum FBSDKGameRequestFilter filters;
/// A plain-text message to be sent as part of the request. This text will surface in the App Center view
/// of the request, but not on the notification jewel. Required parameter.
@property (nonatomic, copy) NSString * _Nonnull message;
/// The Open Graph object ID of the object being sent.
/// seealso:
/// actionType
@property (nonatomic, copy) NSString * _Nonnull objectID;
/// An array of user IDs, usernames or invite tokens (NSString) of people to send request.
/// These may or may not be a friend of the sender. If this is specified by the app,
/// the sender will not have a choice of recipients. If not, the sender will see a multi-friend selector
/// This is equivalent to the “to” parameter when using the web game request dialog.
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull recipients;
/// An array of user IDs that will be included in the dialog as the first suggested friends.
/// Cannot be used together with filters.
/// This is equivalent to the <code>suggestions</code> parameter when using the web game request dialog.
@property (nonatomic, copy) NSArray<NSString *> * _Nonnull recipientSuggestions;
/// The title for the dialog.
@property (nonatomic, copy) NSString * _Nonnull title;
/// The call to action for the dialog.
@property (nonatomic, copy) NSString * _Nonnull cta;
- (BOOL)validateWithOptions:(FBSDKShareBridgeOptions)options error:(NSError * _Nullable * _Nullable)error;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
/// Compares the receiver to another game request content.
/// @param content The other content
/// @return <code>true</code> if the receiver’s values are equal to the other content’s values; otherwise <code>false</code>
- (BOOL)isEqualToGameRequestContent:(FBSDKGameRequestContent * _Nonnull)content SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL supportsSecureCoding;)
+ (BOOL)supportsSecureCoding SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)decoder;
- (void)encodeWithCoder:(NSCoder * _Nonnull)encoder;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@protocol FBSDKGameRequestDialogDelegate;

/// A dialog for sending game requests.
SWIFT_CLASS_NAMED("GameRequestDialog")
@interface FBSDKGameRequestDialog : NSObject
/// The receiver’s delegate or nil if it doesn’t have a delegate.
@property (nonatomic, weak) id <FBSDKGameRequestDialogDelegate> _Nullable delegate;
/// The content for game request.
@property (nonatomic, strong) FBSDKGameRequestContent * _Nonnull content;
/// Specifies whether frictionless requests are enabled.
@property (nonatomic) BOOL isFrictionlessRequestsEnabled;
/// A Boolean value that indicates whether the receiver can initiate a game request.
/// May return <code>false</code> if the appropriate Facebook app is not installed and is required or an access token is
/// required but not available.  This method does not validate the content on the receiver, so this can be checked before
/// building up the content.
/// See <code>validate()</code>
/// @return <code>true</code> if the receiver can share, otherwise <code>false</code>.
@property (nonatomic, readonly) BOOL canShow;
- (nonnull instancetype)initWithContent:(FBSDKGameRequestContent * _Nonnull)content delegate:(id <FBSDKGameRequestDialogDelegate> _Nullable)delegate OBJC_DESIGNATED_INITIALIZER;
/// Convenience method to build up a game request with content and a delegate.
/// @param content The content for the game request.
/// @param delegate The receiver’s delegate.
+ (FBSDKGameRequestDialog * _Nonnull)dialogWithContent:(FBSDKGameRequestContent * _Nonnull)content delegate:(id <FBSDKGameRequestDialogDelegate> _Nullable)delegate SWIFT_WARN_UNUSED_RESULT;
/// Convenience method to build up and show a game request with content and a delegate.
/// @param content The content for the game request.
/// @param delegate The receiver’s delegate.
+ (FBSDKGameRequestDialog * _Nonnull)showWithContent:(FBSDKGameRequestContent * _Nonnull)content delegate:(id <FBSDKGameRequestDialogDelegate> _Nullable)delegate;
/// Begins the game request from the receiver.
/// @return <code>true</code> if the receiver was able to show the dialog, otherwise <code>false</code>.
- (BOOL)show;
/// Validates the content on the receiver.
- (BOOL)validateWithError:(NSError * _Nullable * _Nullable)error;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



@interface FBSDKGameRequestDialog (SWIFT_EXTENSION(FBSDKGamingServicesKit)) <FBSDKWebDialogDelegate>
- (void)webDialog:(FBSDKWebDialog * _Nonnull)webDialog didCompleteWithResults:(NSDictionary<NSString *, id> * _Nonnull)results;
- (void)webDialog:(FBSDKWebDialog * _Nonnull)webDialog didFailWithError:(NSError * _Nonnull)error;
- (void)webDialogDidCancel:(FBSDKWebDialog * _Nonnull)webDialog;
@end


@interface FBSDKGameRequestDialog (SWIFT_EXTENSION(FBSDKGamingServicesKit)) <FBSDKURLOpening>
- (BOOL)application:(UIApplication * _Nullable)application openURL:(NSURL * _Nullable)potentialURL sourceApplication:(NSString * _Nullable)sourceApplication annotation:(id _Nullable)annotation SWIFT_WARN_UNUSED_RESULT;
- (BOOL)canOpenURL:(NSURL * _Nonnull)url forApplication:(UIApplication * _Nullable)application sourceApplication:(NSString * _Nullable)sourceApplication annotation:(id _Nullable)annotation SWIFT_WARN_UNUSED_RESULT;
- (void)applicationDidBecomeActive:(UIApplication * _Nonnull)application;
- (BOOL)isAuthenticationURL:(NSURL * _Nonnull)url SWIFT_WARN_UNUSED_RESULT;
@end


/// A delegate for <code>GameRequestDialog</code>.
/// The delegate is notified with the results of the game request as long as the application has permissions to
/// receive the information.  For example, if the person is not signed into the containing app, the shower may not be able
/// to distinguish between completion of a game request and cancellation.
SWIFT_PROTOCOL_NAMED("GameRequestDialogDelegate")
@protocol FBSDKGameRequestDialogDelegate
/// Sent to the delegate when the game request completes without error.
/// @param gameRequestDialog The <code>GameRequestDialog</code> that completed.
/// @param results The results from the dialog.  This may be nil or empty.
- (void)gameRequestDialog:(FBSDKGameRequestDialog * _Nonnull)gameRequestDialog didCompleteWithResults:(NSDictionary<NSString *, id> * _Nonnull)results;
/// Sent to the delegate when the game request encounters an error.
/// @param gameRequestDialog The <code>GameRequestDialog</code> that completed.
/// @param error The error.
- (void)gameRequestDialog:(FBSDKGameRequestDialog * _Nonnull)gameRequestDialog didFailWithError:(NSError * _Nonnull)error;
/// Sent to the delegate when the game request dialog is cancelled.
/// @param gameRequestDialog The <code>GameRequestDialog</code> that completed.
- (void)gameRequestDialogDidCancel:(FBSDKGameRequestDialog * _Nonnull)gameRequestDialog;
@end

/// Filter for who can be displayed in the multi-friend selector.
typedef SWIFT_ENUM_NAMED(NSUInteger, FBSDKGameRequestFilter, "GameRequestFilter", open) {
/// No filter, all friends can be displayed.
  FBSDKGameRequestFilterNone = 0,
/// Friends using the app can be displayed.
  FBSDKGameRequestFilterAppUsers = 1,
/// Friends not using the app can be displayed.
  FBSDKGameRequestFilterAppNonUsers = 2,
/// All friends can be displayed if FB app is installed.
  FBSDKGameRequestFilterEverybody = 3,
};


SWIFT_CLASS_NAMED("GameRequestURLProvider")
@interface FBSDKGameRequestURLProvider : NSObject
+ (NSURL * _Nullable)createDeepLinkURLWithQueryDictionary:(NSDictionary<NSString *, id> * _Nonnull)queryDictionary SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)filtersNameForFilters:(enum FBSDKGameRequestFilter)filters SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)actionTypeNameForActionType:(enum FBSDKGameRequestActionType)actionType SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end




SWIFT_CLASS_NAMED("GamingContext")
@interface FBSDKGamingContext : NSObject
/// A shared object that holds data about the current user’s game instance which could be solo game or multiplayer game with other users.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, strong) FBSDKGamingContext * _Nullable currentContext;)
+ (FBSDKGamingContext * _Nullable)currentContext SWIFT_WARN_UNUSED_RESULT;
+ (void)setCurrentContext:(FBSDKGamingContext * _Nullable)value;
/// A unique identifier for the current game context. This represents a specific game instance that the user is playing in.
@property (nonatomic, readonly, copy) NSString * _Nonnull identifier;
/// The number of players in the current user’s game instance
@property (nonatomic, readonly) NSInteger size;
- (nullable instancetype)initWithIdentifier:(NSString * _Nonnull)identifier size:(NSInteger)size OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS_NAMED("GamingGroupIntegration")
@interface FBSDKGamingGroupIntegration : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (void)openGroupPageWithCompletionHandler:(void (^ _Nonnull)(BOOL, NSError * _Nullable))completionHandler;
@end

@class FBSDKGamingImageUploaderConfiguration;

SWIFT_CLASS_NAMED("GamingImageUploader")
@interface FBSDKGamingImageUploader : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Runs an upload to a users Gaming Media Library with the given configuration
/// @param configuration model object contain the content that will be uploaded
/// @param completion a callback that is fired dependent on the configuration.
/// Fired when the upload completes or when the users returns to the caller app
/// after the media dialog is shown.
+ (void)uploadImageWithConfiguration:(FBSDKGamingImageUploaderConfiguration * _Nonnull)configuration andResultCompletion:(void (^ _Nonnull)(BOOL, NSDictionary<NSString *, id> * _Nullable, NSError * _Nullable))completion;
/// Runs an upload to a users Gaming Media Library with the given configuration
/// @param configuration model object contain the content that will be uploaded
/// @param completion a callback that is fired dependent on the configuration.
/// Fired when the upload completes or when the users returns to the caller app
/// after the media dialog is shown.
/// @param progressHandler an optional callback that is fired multiple times as
/// bytes are transferred to Facebook.
+ (void)uploadImageWithConfiguration:(FBSDKGamingImageUploaderConfiguration * _Nonnull)configuration completion:(void (^ _Nonnull)(BOOL, NSDictionary<NSString *, id> * _Nullable, NSError * _Nullable))completion andProgressHandler:(void (^ _Nullable)(int64_t, int64_t, int64_t))progressHandler;
@end

@protocol FBSDKGraphRequestConnecting;

@interface FBSDKGamingImageUploader (SWIFT_EXTENSION(FBSDKGamingServicesKit)) <FBSDKGraphRequestConnectionDelegate>
- (void)requestConnection:(id <FBSDKGraphRequestConnecting> _Nonnull)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite;
@end

@class UIImage;

SWIFT_CLASS_NAMED("GamingImageUploaderConfiguration")
@interface FBSDKGamingImageUploaderConfiguration : NSObject
@property (nonatomic, readonly, strong) UIImage * _Nonnull image;
@property (nonatomic, readonly, copy) NSString * _Nullable caption;
@property (nonatomic, readonly) BOOL shouldLaunchMediaDialog;
/// A model for Gaming image upload content to be shared.
/// @param image the image that will be shared.
/// @param caption and optional caption that will appear along side the image on Facebook.
/// @param shouldLaunchMediaDialog whether or not to open the media dialog on Facebook when the upload completes.
- (nonnull instancetype)initWithImage:(UIImage * _Nonnull)image caption:(NSString * _Nullable)caption shouldLaunchMediaDialog:(BOOL)shouldLaunchMediaDialog OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class FBSDKURL;

SWIFT_CLASS_NAMED("GamingPayload")
@interface FBSDKGamingPayload : NSObject
@property (nonatomic, strong) FBSDKURL * _Nonnull URL;
@property (nonatomic, copy) NSString * _Nonnull payload;
- (nonnull instancetype)initWithURL:(FBSDKURL * _Nonnull)URL OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_PROTOCOL_NAMED("GamingPayloadDelegate")
@protocol FBSDKGamingPayloadDelegate <NSObject>
@optional
/// Delegate method will be triggered when a <code>GamingPayloadObserver</code> parses a url with a payload and game request ID
/// @param payload The payload recieved in the url
/// @param gameRequestID The game request ID recieved in the url
- (void)parsedGameRequestURLContaining:(FBSDKGamingPayload * _Nonnull)payload gameRequestID:(NSString * _Nonnull)gameRequestID;
/// Delegate method will be triggered when a <code>GamingPayloadObserver</code> parses a gaming context url with a payload and game context token ID. The current gaming context will be update with the context ID.
/// @param payload The payload recieved in the url
- (void)parsedGamingContextURLContaining:(FBSDKGamingPayload * _Nonnull)payload;
/// Delegate method will be triggered when a <code>GamingPayloadObserver</code> parses a url with a payload and tournament ID
/// @param payload The payload associated with the tournament
/// @param tournamentID The tournament ID the player wants to enter
- (void)parsedTournamentURLContaining:(FBSDKGamingPayload * _Nonnull)payload tournamentID:(NSString * _Nonnull)tournamentID;
@end


SWIFT_CLASS_NAMED("GamingPayloadObserver")
@interface FBSDKGamingPayloadObserver : NSObject
@property (nonatomic, weak) id <FBSDKGamingPayloadDelegate> _Nullable delegate;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
- (nonnull instancetype)initWithDelegate:(id <FBSDKGamingPayloadDelegate> _Nullable)delegate;
@end


@interface FBSDKGamingPayloadObserver (SWIFT_EXTENSION(FBSDKGamingServicesKit)) <FBSDKApplicationObserving>
- (BOOL)application:(UIApplication * _Nonnull)application openURL:(NSURL * _Nonnull)url sourceApplication:(NSString * _Nullable)sourceApplication annotation:(id _Nullable)annotation SWIFT_WARN_UNUSED_RESULT;
@end

@class FBSDKGamingVideoUploaderConfiguration;

SWIFT_CLASS_NAMED("GamingVideoUploader")
@interface FBSDKGamingVideoUploader : NSObject
/// Runs an upload to a users Gaming Media Library with the given configuration
/// @param configuration model object contain the content that will be uploaded
/// @param completion a callback that is fired when the upload completes.
+ (void)uploadVideoWithConfiguration:(FBSDKGamingVideoUploaderConfiguration * _Nonnull)configuration andResultCompletion:(void (^ _Nonnull)(BOOL, NSDictionary<NSString *, id> * _Nullable, NSError * _Nullable))completion;
/// Runs an upload to a users Gaming Media Library with the given configuration
/// @param configuration model object contain the content that will be uploaded
/// @param completion a callback that is fired when the upload completes.
/// @param progressHandler an optional callback that is fired multiple times as bytes are transferred to Facebook.
+ (void)uploadVideoWithConfiguration:(FBSDKGamingVideoUploaderConfiguration * _Nonnull)configuration completion:(void (^ _Nonnull)(BOOL, NSDictionary<NSString *, id> * _Nullable, NSError * _Nullable))completion andProgressHandler:(void (^ _Nullable)(int64_t, int64_t, int64_t))progressHandler;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



SWIFT_CLASS_NAMED("GamingVideoUploaderConfiguration")
@interface FBSDKGamingVideoUploaderConfiguration : NSObject
@property (nonatomic, readonly, copy) NSURL * _Nonnull videoURL;
@property (nonatomic, readonly, copy) NSString * _Nullable caption;
/// A model for Gaming video upload content to be shared.
/// @param videoURL a url to the videos location on local disk.
/// @param caption and optional caption that will appear along side the video on Facebook.
- (nonnull instancetype)initWithVideoURL:(NSURL * _Nonnull)videoURL caption:(NSString * _Nullable)caption OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC22FBSDKGamingServicesKit21ShareTournamentDialog")
@interface ShareTournamentDialog : NSObject <FBSDKURLOpening>
- (BOOL)isAuthenticationURL:(NSURL * _Nonnull)url SWIFT_WARN_UNUSED_RESULT;
- (BOOL)application:(UIApplication * _Nullable)application openURL:(NSURL * _Nullable)url sourceApplication:(NSString * _Nullable)sourceApplication annotation:(id _Nullable)annotation SWIFT_WARN_UNUSED_RESULT;
- (BOOL)canOpenURL:(NSURL * _Nonnull)url forApplication:(UIApplication * _Nullable)application sourceApplication:(NSString * _Nullable)sourceApplication annotation:(id _Nullable)annotation SWIFT_WARN_UNUSED_RESULT;
- (void)applicationDidBecomeActive:(UIApplication * _Nonnull)application;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



/// A model for an instant games switchAsync cross play request.
SWIFT_CLASS_NAMED("SwitchContextContent")
@interface FBSDKSwitchContextContent : NSObject <FBSDKValidatable>
- (nonnull instancetype)initDialogContentWithContextID:(NSString * _Nonnull)contextID OBJC_DESIGNATED_INITIALIZER;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
- (BOOL)validateAndReturnError:(NSError * _Nullable * _Nullable)error;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// A dialog to switch the current gaming context through a web view
SWIFT_CLASS_NAMED("SwitchContextDialog")
@interface FBSDKSwitchContextDialog : FBSDKContextWebDialog <FBSDKShowable>
/// Creates a switch context web dialog with content and a delegate.
/// \param content The content for the switch context dialog
///
/// \param windowFinder The application window finder that provides the window to display the dialog
///
/// \param delegate The receiver’s delegate used to let the receiver know a context switch was successful or failed
///
- (nonnull instancetype)initWithContent:(FBSDKSwitchContextContent * _Nonnull)content windowFinder:(id <_FBSDKWindowFinding> _Nonnull)windowFinder delegate:(id <FBSDKContextDialogDelegate> _Nonnull)delegate OBJC_DESIGNATED_INITIALIZER;
- (BOOL)show SWIFT_WARN_UNUSED_RESULT;
- (BOOL)validateAndReturnError:(NSError * _Nullable * _Nullable)error;
@end





#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#if defined(__cplusplus)
#endif
#pragma clang diagnostic pop
#endif

#else
#error unsupported Swift architecture
#endif
