// This file is generated by `bindgen` and checked into the repository so
// downstream users do NOT need clang/LLVM (libclang) installed.
//
// Regenerate (requires libclang):
// `cargo clean && cargo build -p eos-sys --no-default-features --features bindgen`
/* automatically generated by rust-bindgen 0.71.1 */

pub const EOS_USE_DLLEXPORT: u32 = 1;
pub const EOS_TRUE: u32 = 1;
pub const EOS_FALSE: u32 = 0;
pub const EOS_EPICACCOUNTID_MAX_LENGTH: u32 = 32;
pub const EOS_PRODUCTUSERID_MAX_LENGTH: u32 = 32;
pub const EOS_OPT_Unknown: u32 = 0;
pub const EOS_OPT_Epic: u32 = 100;
pub const EOS_OPT_PSN: u32 = 1000;
pub const EOS_OPT_Nintendo: u32 = 2000;
pub const EOS_OPT_XBL: u32 = 3000;
pub const EOS_OPT_Steam: u32 = 4000;
pub const EOS_IPT_Steam: &[u8; 6] = b"STEAM\0";
pub const EOS_INTEGRATEDPLATFORM_OPTIONS_API_LATEST: u32 = 1;
pub const EOS_INTEGRATEDPLATFORM_STEAM_OPTIONS_API_LATEST: u32 = 3;
pub const EOS_INTEGRATEDPLATFORM_STEAM_MAX_STEAMAPIINTERFACEVERSIONSARRAY_SIZE: u32 = 4096;
pub const EOS_INTEGRATEDPLATFORM_CREATEINTEGRATEDPLATFORMOPTIONSCONTAINER_API_LATEST: u32 = 1;
pub const EOS_INTEGRATEDPLATFORMOPTIONSCONTAINER_ADD_API_LATEST: u32 = 1;
pub const EOS_INTEGRATEDPLATFORM_SETUSERLOGINSTATUS_API_LATEST: u32 = 1;
pub const EOS_INTEGRATEDPLATFORM_ADDNOTIFYUSERLOGINSTATUSCHANGED_API_LATEST: u32 = 1;
pub const EOS_INTEGRATEDPLATFORM_SETUSERPRELOGOUTCALLBACK_API_LATEST: u32 = 1;
pub const EOS_INTEGRATEDPLATFORM_CLEARUSERPRELOGOUTCALLBACK_API_LATEST: u32 = 1;
pub const EOS_INTEGRATEDPLATFORM_FINALIZEDEFERREDUSERLOGOUT_API_LATEST: u32 = 1;
pub const EOS_PLATFORM_CLIENTCREDENTIALS_CLIENTID_MAX_LENGTH: u32 = 64;
pub const EOS_PLATFORM_CLIENTCREDENTIALS_CLIENTSECRET_MAX_LENGTH: u32 = 64;
pub const EOS_PLATFORM_RTCOPTIONS_API_LATEST: u32 = 3;
pub const EOS_COUNTRYCODE_MAX_LENGTH: u32 = 4;
pub const EOS_COUNTRYCODE_MAX_BUFFER_LEN: u32 = 5;
pub const EOS_LOCALECODE_MAX_LENGTH: u32 = 9;
pub const EOS_LOCALECODE_MAX_BUFFER_LEN: u32 = 10;
pub const EOS_PLATFORM_OPTIONS_API_LATEST: u32 = 15;
pub const EOS_PF_LOADING_IN_EDITOR: u32 = 1;
pub const EOS_PF_DISABLE_OVERLAY: u32 = 2;
pub const EOS_PF_DISABLE_SOCIAL_OVERLAY: u32 = 4;
pub const EOS_PF_RESERVED1: u32 = 8;
pub const EOS_PF_WINDOWS_ENABLE_OVERLAY_D3D9: u32 = 16;
pub const EOS_PF_WINDOWS_ENABLE_OVERLAY_D3D10: u32 = 32;
pub const EOS_PF_WINDOWS_ENABLE_OVERLAY_OPENGL: u32 = 64;
pub const EOS_PF_CONSOLE_ENABLE_OVERLAY_AUTOMATIC_UNLOADING: u32 = 128;
pub const EOS_PF_ENABLE_OVERLAY_DEBUG_LOGGING: u32 = 256;
pub const EOS_PLATFORM_OPTIONS_PRODUCTID_MAX_LENGTH: u32 = 64;
pub const EOS_PLATFORM_OPTIONS_SANDBOXID_MAX_LENGTH: u32 = 64;
pub const EOS_PLATFORM_OPTIONS_ENCRYPTIONKEY_LENGTH: u32 = 64;
pub const EOS_PLATFORM_OPTIONS_DEPLOYMENTID_MAX_LENGTH: u32 = 64;
pub const EOS_PLATFORM_GETDESKTOPCROSSPLAYSTATUS_API_LATEST: u32 = 1;
pub const EOS_PLATFORM_CHECKFORLAUNCHERANDRESTART_ENV_VAR: &[u8; 21] = b"EOS_LAUNCHED_BY_EPIC\0";
pub const EOS_INITIALIZE_THREADAFFINITY_API_LATEST: u32 = 4;
pub const EOS_INITIALIZE_API_LATEST: u32 = 5;
pub const EOS_INITIALIZEOPTIONS_PRODUCTNAME_MAX_LENGTH: u32 = 64;
pub const EOS_INITIALIZEOPTIONS_PRODUCTVERSION_MAX_LENGTH: u32 = 64;
pub const EOS_METRICS_BEGINPLAYERSESSION_API_LATEST: u32 = 1;
pub const EOS_METRICS_ENDPLAYERSESSION_API_LATEST: u32 = 1;
pub const EOS_AUTH_ACCOUNTFEATURERESTRICTEDINFO_API_LATEST: u32 = 1;
pub const EOS_AUTH_TOKEN_API_LATEST: u32 = 2;
pub const EOS_AUTH_CREDENTIALS_API_LATEST: u32 = 4;
pub const EOS_AUTH_PINGRANTINFO_API_LATEST: u32 = 2;
pub const EOS_LF_NO_USER_INTERFACE: u32 = 1;
pub const EOS_AUTH_LOGIN_API_LATEST: u32 = 3;
pub const EOS_AUTH_LOGOUT_API_LATEST: u32 = 1;
pub const EOS_AUTH_LINKACCOUNT_API_LATEST: u32 = 1;
pub const EOS_AUTH_VERIFYUSERAUTH_API_LATEST: u32 = 1;
pub const EOS_AUTH_COPYUSERAUTHTOKEN_API_LATEST: u32 = 1;
pub const EOS_AUTH_COPYIDTOKEN_API_LATEST: u32 = 1;
pub const EOS_AUTH_IDTOKEN_API_LATEST: u32 = 1;
pub const EOS_AUTH_QUERYIDTOKEN_API_LATEST: u32 = 1;
pub const EOS_AUTH_VERIFYIDTOKEN_API_LATEST: u32 = 1;
pub const EOS_AUTH_ADDNOTIFYLOGINSTATUSCHANGED_API_LATEST: u32 = 1;
pub const EOS_AUTH_DELETEPERSISTENTAUTH_API_LATEST: u32 = 2;
pub const EOS_ECOM_ENTITLEMENT_API_LATEST: u32 = 2;
pub const EOS_ECOM_ENTITLEMENT_ENDTIMESTAMP_UNDEFINED: i32 = -1;
pub const EOS_ECOM_ITEMOWNERSHIP_API_LATEST: u32 = 1;
pub const EOS_ECOM_CATALOGITEM_API_LATEST: u32 = 1;
pub const EOS_ECOM_CATALOGITEM_ENTITLEMENTENDTIMESTAMP_UNDEFINED: i32 = -1;
pub const EOS_ECOM_CATALOGITEMID_MAX_LENGTH: u32 = 32;
pub const EOS_ECOM_CATALOGOFFER_API_LATEST: u32 = 5;
pub const EOS_ECOM_CATALOGOFFER_EXPIRATIONTIMESTAMP_UNDEFINED: i32 = -1;
pub const EOS_ECOM_CATALOGOFFER_RELEASEDATETIMESTAMP_UNDEFINED: i32 = -1;
pub const EOS_ECOM_CATALOGOFFER_EFFECTIVEDATETIMESTAMP_UNDEFINED: i32 = -1;
pub const EOS_ECOM_CATALOGOFFERID_MAX_LENGTH: u32 = 32;
pub const EOS_ECOM_KEYIMAGEINFO_API_LATEST: u32 = 1;
pub const EOS_ECOM_CATALOGRELEASE_API_LATEST: u32 = 1;
pub const EOS_ECOM_CHECKOUTENTRY_API_LATEST: u32 = 1;
pub const EOS_ECOM_QUERYOWNERSHIP_API_LATEST: u32 = 2;
pub const EOS_ECOM_QUERYOWNERSHIP_MAX_CATALOG_IDS: u32 = 400;
pub const EOS_ECOM_QUERYOWNERSHIPBYSANDBOXIDSOPTIONS_API_LATEST: u32 = 1;
pub const EOS_ECOM_QUERYOWNERSHIP_MAX_SANDBOX_IDS: u32 = 10;
pub const EOS_ECOM_QUERYOWNERSHIPTOKEN_API_LATEST: u32 = 2;
pub const EOS_ECOM_QUERYOWNERSHIPTOKEN_MAX_CATALOGITEM_IDS: u32 = 32;
pub const EOS_ECOM_QUERYENTITLEMENTS_API_LATEST: u32 = 3;
pub const EOS_ECOM_QUERYENTITLEMENTS_MAX_ENTITLEMENT_IDS: u32 = 256;
pub const EOS_ECOM_QUERYENTITLEMENTTOKEN_API_LATEST: u32 = 1;
pub const EOS_ECOM_QUERYENTITLEMENTTOKEN_MAX_ENTITLEMENT_IDS: u32 = 32;
pub const EOS_ECOM_QUERYOFFERS_API_LATEST: u32 = 1;
pub const EOS_ECOM_CHECKOUT_API_LATEST: u32 = 2;
pub const EOS_ECOM_CHECKOUT_MAX_ENTRIES: u32 = 10;
pub const EOS_ECOM_TRANSACTIONID_MAXIMUM_LENGTH: u32 = 64;
pub const EOS_ECOM_TRANSACTIONID_MAX_LENGTH: u32 = 64;
pub const EOS_ECOM_REDEEMENTITLEMENTS_API_LATEST: u32 = 2;
pub const EOS_ECOM_REDEEMENTITLEMENTS_MAX_IDS: u32 = 32;
pub const EOS_ECOM_ENTITLEMENTID_MAX_LENGTH: u32 = 32;
pub const EOS_ECOM_GETLASTREDEEMEDENTITLEMENTSCOUNT_API_LATEST: u32 = 1;
pub const EOS_ECOM_COPYLASTREDEEMEDENTITLEMENTBYINDEX_API_LATEST: u32 = 1;
pub const EOS_ECOM_GETLASTREDEEMENTITLEMENTSRESULTCOUNT_API_LATEST: u32 = 1;
pub const EOS_ECOM_COPYLASTREDEEMENTITLEMENTSRESULTBYINDEX_API_LATEST: u32 = 1;
pub const EOS_ECOM_GETENTITLEMENTSCOUNT_API_LATEST: u32 = 1;
pub const EOS_ECOM_GETENTITLEMENTSBYNAMECOUNT_API_LATEST: u32 = 1;
pub const EOS_ECOM_COPYENTITLEMENTBYINDEX_API_LATEST: u32 = 1;
pub const EOS_ECOM_COPYENTITLEMENTBYNAMEANDINDEX_API_LATEST: u32 = 1;
pub const EOS_ECOM_COPYENTITLEMENTBYID_API_LATEST: u32 = 2;
pub const EOS_ECOM_GETOFFERCOUNT_API_LATEST: u32 = 1;
pub const EOS_ECOM_COPYOFFERBYINDEX_API_LATEST: u32 = 3;
pub const EOS_ECOM_COPYOFFERBYID_API_LATEST: u32 = 3;
pub const EOS_ECOM_GETOFFERITEMCOUNT_API_LATEST: u32 = 1;
pub const EOS_ECOM_COPYOFFERITEMBYINDEX_API_LATEST: u32 = 1;
pub const EOS_ECOM_COPYITEMBYID_API_LATEST: u32 = 1;
pub const EOS_ECOM_GETOFFERIMAGEINFOCOUNT_API_LATEST: u32 = 1;
pub const EOS_ECOM_COPYOFFERIMAGEINFOBYINDEX_API_LATEST: u32 = 1;
pub const EOS_ECOM_GETITEMIMAGEINFOCOUNT_API_LATEST: u32 = 1;
pub const EOS_ECOM_COPYITEMIMAGEINFOBYINDEX_API_LATEST: u32 = 1;
pub const EOS_ECOM_GETITEMRELEASECOUNT_API_LATEST: u32 = 1;
pub const EOS_ECOM_COPYITEMRELEASEBYINDEX_API_LATEST: u32 = 1;
pub const EOS_ECOM_GETTRANSACTIONCOUNT_API_LATEST: u32 = 1;
pub const EOS_ECOM_COPYTRANSACTIONBYINDEX_API_LATEST: u32 = 1;
pub const EOS_ECOM_COPYTRANSACTIONBYID_API_LATEST: u32 = 1;
pub const EOS_ECOM_TRANSACTION_GETENTITLEMENTSCOUNT_API_LATEST: u32 = 1;
pub const EOS_ECOM_TRANSACTION_COPYENTITLEMENTBYINDEX_API_LATEST: u32 = 1;
pub const EOS_UI_EVENTID_INVALID: u32 = 0;
pub const EOS_UI_SHOWFRIENDS_API_LATEST: u32 = 1;
pub const EOS_UI_HIDEFRIENDS_API_LATEST: u32 = 1;
pub const EOS_UI_GETFRIENDSVISIBLE_API_LATEST: u32 = 1;
pub const EOS_UI_GETFRIENDSEXCLUSIVEINPUT_API_LATEST: u32 = 1;
pub const EOS_UI_ADDNOTIFYDISPLAYSETTINGSUPDATED_API_LATEST: u32 = 1;
pub const EOS_UI_SETTOGGLEFRIENDSKEY_API_LATEST: u32 = 1;
pub const EOS_UI_GETTOGGLEFRIENDSKEY_API_LATEST: u32 = 1;
pub const EOS_UI_SETTOGGLEFRIENDSBUTTON_API_LATEST: u32 = 1;
pub const EOS_UI_GETTOGGLEFRIENDSBUTTON_API_LATEST: u32 = 1;
pub const EOS_UI_SETDISPLAYPREFERENCE_API_LATEST: u32 = 1;
pub const EOS_UI_ACKNOWLEDGEEVENTID_API_LATEST: u32 = 1;
pub const EOS_UI_ACKNOWLEDGECORRELATIONID_API_LATEST: u32 = 1;
pub const EOS_UI_REPORTINPUTSTATE_API_LATEST: u32 = 2;
pub const EOS_UI_PREPRESENT_API_LATEST: u32 = 1;
pub const EOS_UI_SHOWBLOCKPLAYER_API_LATEST: u32 = 1;
pub const EOS_UI_SHOWREPORTPLAYER_API_LATEST: u32 = 1;
pub const EOS_UI_SHOWNATIVEPROFILE_API_LATEST: u32 = 1;
pub const EOS_UI_PAUSESOCIALOVERLAY_API_LATEST: u32 = 1;
pub const EOS_UI_ISSOCIALOVERLAYPAUSED_API_LATEST: u32 = 1;
pub const EOS_UI_RECT_API_LATEST: u32 = 1;
pub const EOS_UI_ADDNOTIFYMEMORYMONITOR_API_LATEST: u32 = 1;
pub const EOS_UI_ADDNOTIFYMEMORYMONITOROPTIONS_API_LATEST: u32 = 1;
pub const EOS_UI_CONFIGUREONSCREENKEYBOARD_API_LATEST: u32 = 1;
pub const EOS_UI_ADDNOTIFYONSCREENKEYBOARDREQUESTED_API_LATEST: u32 = 1;
pub const EOS_FRIENDS_QUERYFRIENDS_API_LATEST: u32 = 1;
pub const EOS_FRIENDS_SENDINVITE_API_LATEST: u32 = 1;
pub const EOS_FRIENDS_ACCEPTINVITE_API_LATEST: u32 = 1;
pub const EOS_FRIENDS_REJECTINVITE_API_LATEST: u32 = 1;
pub const EOS_FRIENDS_GETFRIENDSCOUNT_API_LATEST: u32 = 1;
pub const EOS_FRIENDS_GETFRIENDATINDEX_API_LATEST: u32 = 1;
pub const EOS_FRIENDS_GETSTATUS_API_LATEST: u32 = 1;
pub const EOS_FRIENDS_ADDNOTIFYFRIENDSUPDATE_API_LATEST: u32 = 1;
pub const EOS_FRIENDS_GETBLOCKEDUSERSCOUNT_API_LATEST: u32 = 1;
pub const EOS_FRIENDS_GETBLOCKEDUSERATINDEX_API_LATEST: u32 = 1;
pub const EOS_FRIENDS_ADDNOTIFYBLOCKEDUSERSUPDATE_API_LATEST: u32 = 1;
pub const EOS_PRESENCE_DATARECORD_API_LATEST: u32 = 1;
pub const EOS_PRESENCE_INFO_API_LATEST: u32 = 3;
pub const EOS_PRESENCE_QUERYPRESENCE_API_LATEST: u32 = 1;
pub const EOS_PRESENCE_HASPRESENCE_API_LATEST: u32 = 1;
pub const EOS_PRESENCE_COPYPRESENCE_API_LATEST: u32 = 3;
pub const EOS_PRESENCE_CREATEPRESENCEMODIFICATION_API_LATEST: u32 = 1;
pub const EOS_PRESENCE_SETPRESENCE_API_LATEST: u32 = 1;
pub const EOS_PRESENCE_ADDNOTIFYONPRESENCECHANGED_API_LATEST: u32 = 1;
pub const EOS_PRESENCE_ADDNOTIFYJOINGAMEACCEPTED_API_LATEST: u32 = 2;
pub const EOS_PRESENCE_GETJOININFO_API_LATEST: u32 = 1;
pub const EOS_PRESENCEMODIFICATION_SETJOININFO_API_LATEST: u32 = 1;
pub const EOS_PRESENCE_DATA_MAX_KEYS: u32 = 32;
pub const EOS_PRESENCE_DATA_MAX_KEY_LENGTH: u32 = 64;
pub const EOS_PRESENCE_DATA_MAX_VALUE_LENGTH: u32 = 255;
pub const EOS_PRESENCE_RICH_TEXT_MAX_VALUE_LENGTH: u32 = 255;
pub const EOS_PRESENCE_KEY_PLATFORM_PRESENCE: &[u8; 21] = b"EOS_PlatformPresence\0";
pub const EOS_PRESENCEMODIFICATION_SETSTATUS_API_LATEST: u32 = 1;
pub const EOS_PRESENCE_SETSTATUS_API_LATEST: u32 = 1;
pub const EOS_PRESENCEMODIFICATION_SETRAWRICHTEXT_API_LATEST: u32 = 1;
pub const EOS_PRESENCE_SETRAWRICHTEXT_API_LATEST: u32 = 1;
pub const EOS_PRESENCEMODIFICATION_SETDATA_API_LATEST: u32 = 1;
pub const EOS_PRESENCE_SETDATA_API_LATEST: u32 = 1;
pub const EOS_PRESENCEMODIFICATION_DATARECORDID_API_LATEST: u32 = 1;
pub const EOS_PRESENCEMODIFICATION_DELETEDATA_API_LATEST: u32 = 1;
pub const EOS_PRESENCE_DELETEDATA_API_LATEST: u32 = 1;
pub const EOS_P2P_MAX_PACKET_SIZE: u32 = 1170;
pub const EOS_P2P_MAX_CONNECTIONS: u32 = 32;
pub const EOS_P2P_SOCKETID_API_LATEST: u32 = 1;
pub const EOS_P2P_SOCKETID_SOCKETNAME_SIZE: u32 = 33;
pub const EOS_P2P_SENDPACKET_API_LATEST: u32 = 3;
pub const EOS_P2P_GETNEXTRECEIVEDPACKETSIZE_API_LATEST: u32 = 2;
pub const EOS_P2P_RECEIVEPACKET_API_LATEST: u32 = 2;
pub const EOS_P2P_ADDNOTIFYPEERCONNECTIONREQUEST_API_LATEST: u32 = 1;
pub const EOS_P2P_ADDNOTIFYPEERCONNECTIONESTABLISHED_API_LATEST: u32 = 1;
pub const EOS_P2P_ADDNOTIFYPEERCONNECTIONINTERRUPTED_API_LATEST: u32 = 1;
pub const EOS_P2P_ADDNOTIFYPEERCONNECTIONCLOSED_API_LATEST: u32 = 1;
pub const EOS_P2P_ACCEPTCONNECTION_API_LATEST: u32 = 1;
pub const EOS_P2P_CLOSECONNECTION_API_LATEST: u32 = 1;
pub const EOS_P2P_CLOSECONNECTIONS_API_LATEST: u32 = 1;
pub const EOS_P2P_QUERYNATTYPE_API_LATEST: u32 = 1;
pub const EOS_P2P_GETNATTYPE_API_LATEST: u32 = 1;
pub const EOS_P2P_SETRELAYCONTROL_API_LATEST: u32 = 1;
pub const EOS_P2P_GETRELAYCONTROL_API_LATEST: u32 = 1;
pub const EOS_P2P_SETPORTRANGE_API_LATEST: u32 = 1;
pub const EOS_P2P_GETPORTRANGE_API_LATEST: u32 = 1;
pub const EOS_P2P_MAX_QUEUE_SIZE_UNLIMITED: u32 = 0;
pub const EOS_P2P_SETPACKETQUEUESIZE_API_LATEST: u32 = 1;
pub const EOS_P2P_GETPACKETQUEUEINFO_API_LATEST: u32 = 1;
pub const EOS_P2P_ADDNOTIFYINCOMINGPACKETQUEUEFULL_API_LATEST: u32 = 1;
pub const EOS_P2P_CLEARPACKETQUEUE_API_LATEST: u32 = 1;
pub const EOS_SESSIONMODIFICATION_MAX_SESSION_ATTRIBUTES: u32 = 64;
pub const EOS_SESSIONMODIFICATION_MAX_SESSION_ATTRIBUTE_LENGTH: u32 = 64;
pub const EOS_SESSIONMODIFICATION_MIN_SESSIONIDOVERRIDE_LENGTH: u32 = 16;
pub const EOS_SESSIONMODIFICATION_MAX_SESSIONIDOVERRIDE_LENGTH: u32 = 64;
pub const EOS_SESSIONS_CREATESESSIONMODIFICATION_API_LATEST: u32 = 5;
pub const EOS_SESSIONS_UPDATESESSIONMODIFICATION_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_INVITEID_MAX_LENGTH: u32 = 64;
pub const EOS_SESSIONS_SENDINVITE_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_REJECTINVITE_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_QUERYINVITES_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_GETINVITECOUNT_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_GETINVITEIDBYINDEX_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_CREATESESSIONSEARCH_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_UPDATESESSION_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_DESTROYSESSION_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_JOINSESSION_API_LATEST: u32 = 2;
pub const EOS_SESSIONS_STARTSESSION_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_ENDSESSION_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_REGISTERPLAYERS_API_LATEST: u32 = 3;
pub const EOS_SESSIONS_UNREGISTERPLAYERS_API_LATEST: u32 = 2;
pub const EOS_SESSIONMODIFICATION_SETBUCKETID_API_LATEST: u32 = 1;
pub const EOS_SESSIONMODIFICATION_SETHOSTADDRESS_API_LATEST: u32 = 1;
pub const EOS_SESSIONMODIFICATION_SETPERMISSIONLEVEL_API_LATEST: u32 = 1;
pub const EOS_SESSIONMODIFICATION_SETJOININPROGRESSALLOWED_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_MAXREGISTEREDPLAYERS: u32 = 1000;
pub const EOS_SESSIONMODIFICATION_SETMAXPLAYERS_API_LATEST: u32 = 1;
pub const EOS_SESSIONMODIFICATION_SETINVITESALLOWED_API_LATEST: u32 = 1;
pub const EOS_SESSIONMODIFICATION_SETALLOWEDPLATFORMIDS_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_SEARCH_BUCKET_ID: &[u8; 7] = b"bucket\0";
pub const EOS_SESSIONS_SEARCH_EMPTY_SERVERS_ONLY: &[u8; 10] = b"emptyonly\0";
pub const EOS_SESSIONS_SEARCH_NONEMPTY_SERVERS_ONLY: &[u8; 13] = b"nonemptyonly\0";
pub const EOS_SESSIONS_SEARCH_MINSLOTSAVAILABLE: &[u8; 18] = b"minslotsavailable\0";
pub const EOS_SESSIONS_ATTRIBUTEDATA_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_SESSIONATTRIBUTEDATA_API_LATEST: u32 = 1;
pub const EOS_ACTIVESESSION_COPYINFO_API_LATEST: u32 = 1;
pub const EOS_ACTIVESESSION_GETREGISTEREDPLAYERCOUNT_API_LATEST: u32 = 1;
pub const EOS_ACTIVESESSION_GETREGISTEREDPLAYERBYINDEX_API_LATEST: u32 = 1;
pub const EOS_SESSIONDETAILS_ATTRIBUTE_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_SESSIONATTRIBUTE_API_LATEST: u32 = 1;
pub const EOS_SESSIONMODIFICATION_ADDATTRIBUTE_API_LATEST: u32 = 2;
pub const EOS_SESSIONMODIFICATION_REMOVEATTRIBUTE_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_MAX_SEARCH_RESULTS: u32 = 200;
pub const EOS_SESSIONSEARCH_SETMAXSEARCHRESULTS_API_LATEST: u32 = 1;
pub const EOS_SESSIONSEARCH_FIND_API_LATEST: u32 = 2;
pub const EOS_SESSIONSEARCH_GETSEARCHRESULTCOUNT_API_LATEST: u32 = 1;
pub const EOS_SESSIONSEARCH_COPYSEARCHRESULTBYINDEX_API_LATEST: u32 = 1;
pub const EOS_SESSIONSEARCH_SETSESSIONID_API_LATEST: u32 = 1;
pub const EOS_SESSIONSEARCH_SETTARGETUSERID_API_LATEST: u32 = 1;
pub const EOS_SESSIONSEARCH_SETPARAMETER_API_LATEST: u32 = 1;
pub const EOS_SESSIONSEARCH_REMOVEPARAMETER_API_LATEST: u32 = 1;
pub const EOS_SESSIONDETAILS_SETTINGS_API_LATEST: u32 = 4;
pub const EOS_SESSIONDETAILS_INFO_API_LATEST: u32 = 2;
pub const EOS_SESSIONDETAILS_COPYINFO_API_LATEST: u32 = 1;
pub const EOS_SESSIONDETAILS_GETSESSIONATTRIBUTECOUNT_API_LATEST: u32 = 1;
pub const EOS_SESSIONDETAILS_COPYSESSIONATTRIBUTEBYINDEX_API_LATEST: u32 = 1;
pub const EOS_SESSIONDETAILS_COPYSESSIONATTRIBUTEBYKEY_API_LATEST: u32 = 1;
pub const EOS_ACTIVESESSION_INFO_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_COPYACTIVESESSIONHANDLE_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_ADDNOTIFYSESSIONINVITERECEIVED_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_ADDNOTIFYSESSIONINVITEACCEPTED_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_ADDNOTIFYSESSIONINVITEREJECTED_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_ADDNOTIFYJOINSESSIONACCEPTED_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_COPYSESSIONHANDLEBYINVITEID_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_COPYSESSIONHANDLEBYUIEVENTID_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_COPYSESSIONHANDLEFORPRESENCE_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_ISUSERINSESSION_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_DUMPSESSIONSTATE_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_ADDNOTIFYLEAVESESSIONREQUESTED_API_LATEST: u32 = 1;
pub const EOS_SESSIONS_ADDNOTIFYSENDSESSIONNATIVEINVITEREQUESTED_API_LATEST: u32 = 1;
pub const EOS_LOBBY_MAX_LOBBIES: u32 = 16;
pub const EOS_LOBBY_MAX_LOBBY_MEMBERS: u32 = 64;
pub const EOS_LOBBY_MAX_SEARCH_RESULTS: u32 = 200;
pub const EOS_LOBBY_MIN_LOBBYIDOVERRIDE_LENGTH: u32 = 4;
pub const EOS_LOBBY_MAX_LOBBYIDOVERRIDE_LENGTH: u32 = 60;
pub const EOS_LOBBYMODIFICATION_MAX_ATTRIBUTES: u32 = 64;
pub const EOS_LOBBYMODIFICATION_MAX_ATTRIBUTE_LENGTH: u32 = 64;
pub const EOS_LOBBYDETAILS_INFO_API_LATEST: u32 = 3;
pub const EOS_LOBBY_LOCALRTCOPTIONS_API_LATEST: u32 = 2;
pub const EOS_LOBBY_CREATELOBBY_API_LATEST: u32 = 10;
pub const EOS_LOBBY_DESTROYLOBBY_API_LATEST: u32 = 1;
pub const EOS_LOBBY_JOINLOBBY_API_LATEST: u32 = 5;
pub const EOS_LOBBY_JOINLOBBYBYID_API_LATEST: u32 = 3;
pub const EOS_LOBBY_LEAVELOBBY_API_LATEST: u32 = 1;
pub const EOS_LOBBY_UPDATELOBBYMODIFICATION_API_LATEST: u32 = 1;
pub const EOS_LOBBY_UPDATELOBBY_API_LATEST: u32 = 1;
pub const EOS_LOBBY_JOINRTCROOM_API_LATEST: u32 = 1;
pub const EOS_LOBBY_LEAVERTCROOM_API_LATEST: u32 = 1;
pub const EOS_LOBBY_PROMOTEMEMBER_API_LATEST: u32 = 1;
pub const EOS_LOBBY_KICKMEMBER_API_LATEST: u32 = 1;
pub const EOS_LOBBY_HARDMUTEMEMBER_API_LATEST: u32 = 1;
pub const EOS_LOBBY_ADDNOTIFYLOBBYUPDATERECEIVED_API_LATEST: u32 = 1;
pub const EOS_LOBBY_ADDNOTIFYLOBBYMEMBERUPDATERECEIVED_API_LATEST: u32 = 1;
pub const EOS_LOBBY_ADDNOTIFYLOBBYMEMBERSTATUSRECEIVED_API_LATEST: u32 = 1;
pub const EOS_LOBBY_INVITEID_MAX_LENGTH: u32 = 64;
pub const EOS_LOBBY_ADDNOTIFYLOBBYINVITERECEIVED_API_LATEST: u32 = 1;
pub const EOS_LOBBY_ADDNOTIFYLOBBYINVITEACCEPTED_API_LATEST: u32 = 1;
pub const EOS_LOBBY_ADDNOTIFYJOINLOBBYACCEPTED_API_LATEST: u32 = 1;
pub const EOS_LOBBY_ADDNOTIFYLOBBYINVITEREJECTED_API_LATEST: u32 = 1;
pub const EOS_LOBBY_ADDNOTIFYSENDLOBBYNATIVEINVITEREQUESTED_API_LATEST: u32 = 1;
pub const EOS_LOBBY_COPYLOBBYDETAILSHANDLEBYINVITEID_API_LATEST: u32 = 1;
pub const EOS_LOBBY_COPYLOBBYDETAILSHANDLEBYUIEVENTID_API_LATEST: u32 = 1;
pub const EOS_LOBBY_CREATELOBBYSEARCH_API_LATEST: u32 = 1;
pub const EOS_LOBBY_SENDINVITE_API_LATEST: u32 = 1;
pub const EOS_LOBBY_REJECTINVITE_API_LATEST: u32 = 1;
pub const EOS_LOBBY_QUERYINVITES_API_LATEST: u32 = 1;
pub const EOS_LOBBY_GETINVITECOUNT_API_LATEST: u32 = 1;
pub const EOS_LOBBY_GETINVITEIDBYINDEX_API_LATEST: u32 = 1;
pub const EOS_LOBBY_COPYLOBBYDETAILSHANDLE_API_LATEST: u32 = 1;
pub const EOS_LOBBY_GETRTCROOMNAME_API_LATEST: u32 = 1;
pub const EOS_LOBBY_ISRTCROOMCONNECTED_API_LATEST: u32 = 1;
pub const EOS_LOBBY_ADDNOTIFYRTCROOMCONNECTIONCHANGED_API_LATEST: u32 = 2;
pub const EOS_LOBBY_SEARCH_BUCKET_ID: &[u8; 7] = b"bucket\0";
pub const EOS_LOBBY_SEARCH_MINCURRENTMEMBERS: &[u8; 18] = b"mincurrentmembers\0";
pub const EOS_LOBBY_SEARCH_MINSLOTSAVAILABLE: &[u8; 18] = b"minslotsavailable\0";
pub const EOS_LOBBY_ATTRIBUTEDATA_API_LATEST: u32 = 1;
pub const EOS_LOBBY_ATTRIBUTE_API_LATEST: u32 = 1;
pub const EOS_LOBBY_GETCONNECTSTRING_API_LATEST: u32 = 1;
pub const EOS_LOBBY_GETCONNECTSTRING_BUFFER_SIZE: u32 = 256;
pub const EOS_LOBBY_PARSECONNECTSTRING_API_LATEST: u32 = 1;
pub const EOS_LOBBY_PARSECONNECTSTRING_BUFFER_SIZE: u32 = 256;
pub const EOS_LOBBYMODIFICATION_SETBUCKETID_API_LATEST: u32 = 1;
pub const EOS_LOBBYMODIFICATION_SETPERMISSIONLEVEL_API_LATEST: u32 = 1;
pub const EOS_LOBBYMODIFICATION_SETMAXMEMBERS_API_LATEST: u32 = 1;
pub const EOS_LOBBYMODIFICATION_SETINVITESALLOWED_API_LATEST: u32 = 1;
pub const EOS_LOBBYMODIFICATION_ADDATTRIBUTE_API_LATEST: u32 = 2;
pub const EOS_LOBBYMODIFICATION_REMOVEATTRIBUTE_API_LATEST: u32 = 1;
pub const EOS_LOBBYMODIFICATION_ADDMEMBERATTRIBUTE_API_LATEST: u32 = 2;
pub const EOS_LOBBYMODIFICATION_REMOVEMEMBERATTRIBUTE_API_LATEST: u32 = 1;
pub const EOS_LOBBYMODIFICATION_SETALLOWEDPLATFORMIDS_API_LATEST: u32 = 1;
pub const EOS_LOBBYDETAILS_GETLOBBYOWNER_API_LATEST: u32 = 1;
pub const EOS_LOBBYDETAILS_COPYINFO_API_LATEST: u32 = 1;
pub const EOS_LOBBYDETAILS_GETATTRIBUTECOUNT_API_LATEST: u32 = 1;
pub const EOS_LOBBYDETAILS_COPYATTRIBUTEBYINDEX_API_LATEST: u32 = 1;
pub const EOS_LOBBYDETAILS_COPYATTRIBUTEBYKEY_API_LATEST: u32 = 1;
pub const EOS_LOBBYDETAILS_GETMEMBERATTRIBUTECOUNT_API_LATEST: u32 = 1;
pub const EOS_LOBBYDETAILS_COPYMEMBERATTRIBUTEBYINDEX_API_LATEST: u32 = 1;
pub const EOS_LOBBYDETAILS_COPYMEMBERATTRIBUTEBYKEY_API_LATEST: u32 = 1;
pub const EOS_LOBBYDETAILS_GETMEMBERCOUNT_API_LATEST: u32 = 1;
pub const EOS_LOBBYDETAILS_GETMEMBERBYINDEX_API_LATEST: u32 = 1;
pub const EOS_LOBBYSEARCH_FIND_API_LATEST: u32 = 1;
pub const EOS_LOBBYSEARCH_SETLOBBYID_API_LATEST: u32 = 1;
pub const EOS_LOBBYSEARCH_SETTARGETUSERID_API_LATEST: u32 = 1;
pub const EOS_LOBBYSEARCH_SETPARAMETER_API_LATEST: u32 = 1;
pub const EOS_LOBBYSEARCH_REMOVEPARAMETER_API_LATEST: u32 = 1;
pub const EOS_LOBBYSEARCH_SETMAXRESULTS_API_LATEST: u32 = 1;
pub const EOS_LOBBYSEARCH_GETSEARCHRESULTCOUNT_API_LATEST: u32 = 1;
pub const EOS_LOBBYSEARCH_COPYSEARCHRESULTBYINDEX_API_LATEST: u32 = 1;
pub const EOS_LOBBYDETAILS_COPYMEMBERINFO_API_LATEST: u32 = 1;
pub const EOS_LOBBYDETAILS_MEMBERINFO_API_LATEST: u32 = 1;
pub const EOS_LOBBY_ADDNOTIFYLEAVELOBBYREQUESTED_API_LATEST: u32 = 1;
pub const EOS_USERINFO_QUERYUSERINFO_API_LATEST: u32 = 1;
pub const EOS_USERINFO_QUERYUSERINFOBYDISPLAYNAME_API_LATEST: u32 = 1;
pub const EOS_USERINFO_QUERYUSERINFOBYEXTERNALACCOUNT_API_LATEST: u32 = 1;
pub const EOS_USERINFO_MAX_DISPLAYNAME_CHARACTERS: u32 = 16;
pub const EOS_USERINFO_MAX_DISPLAYNAME_UTF8_LENGTH: u32 = 64;
pub const EOS_USERINFO_COPYUSERINFO_API_LATEST: u32 = 3;
pub const EOS_USERINFO_EXTERNALUSERINFO_API_LATEST: u32 = 2;
pub const EOS_USERINFO_GETEXTERNALUSERINFOCOUNT_API_LATEST: u32 = 1;
pub const EOS_USERINFO_COPYEXTERNALUSERINFOBYINDEX_API_LATEST: u32 = 1;
pub const EOS_USERINFO_COPYEXTERNALUSERINFOBYACCOUNTTYPE_API_LATEST: u32 = 1;
pub const EOS_USERINFO_COPYEXTERNALUSERINFOBYACCOUNTID_API_LATEST: u32 = 1;
pub const EOS_USERINFO_BESTDISPLAYNAME_API_LATEST: u32 = 1;
pub const EOS_USERINFO_COPYBESTDISPLAYNAME_API_LATEST: u32 = 1;
pub const EOS_USERINFO_COPYBESTDISPLAYNAMEWITHPLATFORM_API_LATEST: u32 = 1;
pub const EOS_USERINFO_GETLOCALPLATFORMTYPE_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_FILENAME_MAX_LENGTH_BYTES: u32 = 64;
pub const EOS_PLAYERDATASTORAGE_TIME_UNDEFINED: i32 = -1;
pub const EOS_PLAYERDATASTORAGE_FILEMETADATA_API_LATEST: u32 = 3;
pub const EOS_PLAYERDATASTORAGE_QUERYFILE_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_QUERYFILEOPTIONS_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_QUERYFILELIST_API_LATEST: u32 = 2;
pub const EOS_PLAYERDATASTORAGE_QUERYFILELISTOPTIONS_API_LATEST: u32 = 2;
pub const EOS_PLAYERDATASTORAGE_GETFILEMETADATACOUNT_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_GETFILEMETADATACOUNTOPTIONS_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_COPYFILEMETADATAATINDEX_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_COPYFILEMETADATAATINDEXOPTIONS_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_COPYFILEMETADATABYFILENAME_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_COPYFILEMETADATABYFILENAMEOPTIONS_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_DUPLICATEFILE_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_DUPLICATEFILEOPTIONS_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_DELETEFILE_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_DELETEFILEOPTIONS_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_READFILE_API_LATEST: u32 = 2;
pub const EOS_PLAYERDATASTORAGE_READFILEOPTIONS_API_LATEST: u32 = 2;
pub const EOS_PLAYERDATASTORAGE_WRITEFILE_API_LATEST: u32 = 2;
pub const EOS_PLAYERDATASTORAGE_WRITEFILEOPTIONS_API_LATEST: u32 = 2;
pub const EOS_PLAYERDATASTORAGE_DELETECACHE_API_LATEST: u32 = 1;
pub const EOS_PLAYERDATASTORAGE_DELETECACHEOPTIONS_API_LATEST: u32 = 1;
pub const EOS_TITLESTORAGE_FILENAME_MAX_LENGTH_BYTES: u32 = 64;
pub const EOS_TITLESTORAGE_FILEMETADATA_API_LATEST: u32 = 2;
pub const EOS_TITLESTORAGE_QUERYFILE_API_LATEST: u32 = 1;
pub const EOS_TITLESTORAGE_QUERYFILEOPTIONS_API_LATEST: u32 = 1;
pub const EOS_TITLESTORAGE_QUERYFILELIST_API_LATEST: u32 = 1;
pub const EOS_TITLESTORAGE_QUERYFILELISTOPTIONS_API_LATEST: u32 = 1;
pub const EOS_TITLESTORAGE_GETFILEMETADATACOUNT_API_LATEST: u32 = 1;
pub const EOS_TITLESTORAGE_GETFILEMETADATACOUNTOPTIONS_API_LATEST: u32 = 1;
pub const EOS_TITLESTORAGE_COPYFILEMETADATAATINDEX_API_LATEST: u32 = 1;
pub const EOS_TITLESTORAGE_COPYFILEMETADATAATINDEXOPTIONS_API_LATEST: u32 = 1;
pub const EOS_TITLESTORAGE_COPYFILEMETADATABYFILENAME_API_LATEST: u32 = 1;
pub const EOS_TITLESTORAGE_COPYFILEMETADATABYFILENAMEOPTIONS_API_LATEST: u32 = 1;
pub const EOS_TITLESTORAGE_READFILE_API_LATEST: u32 = 2;
pub const EOS_TITLESTORAGE_READFILEOPTIONS_API_LATEST: u32 = 2;
pub const EOS_TITLESTORAGE_DELETECACHE_API_LATEST: u32 = 1;
pub const EOS_TITLESTORAGE_DELETECACHEOPTIONS_API_LATEST: u32 = 1;
pub const EOS_CONNECT_EXTERNAL_ACCOUNT_ID_MAX_LENGTH: u32 = 256;
pub const EOS_CONNECT_CREDENTIALS_API_LATEST: u32 = 1;
pub const EOS_CONNECT_USERLOGININFO_DISPLAYNAME_MAX_LENGTH: u32 = 32;
pub const EOS_CONNECT_USERLOGININFO_API_LATEST: u32 = 2;
pub const EOS_CONNECT_LOGIN_API_LATEST: u32 = 2;
pub const EOS_CONNECT_LOGOUT_API_LATEST: u32 = 1;
pub const EOS_CONNECT_CREATEUSER_API_LATEST: u32 = 1;
pub const EOS_CONNECT_LINKACCOUNT_API_LATEST: u32 = 1;
pub const EOS_CONNECT_UNLINKACCOUNT_API_LATEST: u32 = 1;
pub const EOS_CONNECT_CREATEDEVICEID_API_LATEST: u32 = 1;
pub const EOS_CONNECT_CREATEDEVICEID_DEVICEMODEL_MAX_LENGTH: u32 = 64;
pub const EOS_CONNECT_DELETEDEVICEID_API_LATEST: u32 = 1;
pub const EOS_CONNECT_TRANSFERDEVICEIDACCOUNT_API_LATEST: u32 = 1;
pub const EOS_CONNECT_QUERYEXTERNALACCOUNTMAPPINGS_API_LATEST: u32 = 1;
pub const EOS_CONNECT_QUERYEXTERNALACCOUNTMAPPINGS_MAX_ACCOUNT_IDS: u32 = 128;
pub const EOS_CONNECT_GETEXTERNALACCOUNTMAPPING_API_LATEST: u32 = 1;
pub const EOS_CONNECT_GETEXTERNALACCOUNTMAPPINGS_API_LATEST: u32 = 1;
pub const EOS_CONNECT_QUERYPRODUCTUSERIDMAPPINGS_API_LATEST: u32 = 2;
pub const EOS_CONNECT_GETPRODUCTUSERIDMAPPING_API_LATEST: u32 = 1;
pub const EOS_CONNECT_GETPRODUCTUSEREXTERNALACCOUNTCOUNT_API_LATEST: u32 = 1;
pub const EOS_CONNECT_COPYPRODUCTUSEREXTERNALACCOUNTBYINDEX_API_LATEST: u32 = 1;
pub const EOS_CONNECT_COPYPRODUCTUSEREXTERNALACCOUNTBYACCOUNTTYPE_API_LATEST: u32 = 1;
pub const EOS_CONNECT_COPYPRODUCTUSEREXTERNALACCOUNTBYACCOUNTID_API_LATEST: u32 = 1;
pub const EOS_CONNECT_COPYPRODUCTUSERINFO_API_LATEST: u32 = 1;
pub const EOS_CONNECT_TIME_UNDEFINED: i32 = -1;
pub const EOS_CONNECT_EXTERNALACCOUNTINFO_API_LATEST: u32 = 1;
pub const EOS_CONNECT_ADDNOTIFYAUTHEXPIRATION_API_LATEST: u32 = 1;
pub const EOS_CONNECT_ADDNOTIFYLOGINSTATUSCHANGED_API_LATEST: u32 = 1;
pub const EOS_CONNECT_IDTOKEN_API_LATEST: u32 = 1;
pub const EOS_CONNECT_COPYIDTOKEN_API_LATEST: u32 = 1;
pub const EOS_CONNECT_VERIFYIDTOKEN_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_QUERYDEFINITIONS_API_LATEST: u32 = 3;
pub const EOS_ACHIEVEMENTS_STATTHRESHOLDS_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_STATTHRESHOLD_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_PLAYERSTATINFO_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_DEFINITIONV2_API_LATEST: u32 = 2;
pub const EOS_ACHIEVEMENTS_GETACHIEVEMENTDEFINITIONCOUNT_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_COPYACHIEVEMENTDEFINITIONV2BYINDEX_API_LATEST: u32 = 2;
pub const EOS_ACHIEVEMENTS_COPYDEFINITIONV2BYINDEX_API_LATEST: u32 = 2;
pub const EOS_ACHIEVEMENTS_COPYACHIEVEMENTDEFINITIONV2BYACHIEVEMENTID_API_LATEST: u32 = 2;
pub const EOS_ACHIEVEMENTS_COPYDEFINITIONV2BYACHIEVEMENTID_API_LATEST: u32 = 2;
pub const EOS_ACHIEVEMENTS_QUERYPLAYERACHIEVEMENTS_API_LATEST: u32 = 2;
pub const EOS_ACHIEVEMENTS_ACHIEVEMENT_UNLOCKTIME_UNDEFINED: i32 = -1;
pub const EOS_ACHIEVEMENTS_PLAYERACHIEVEMENT_API_LATEST: u32 = 2;
pub const EOS_ACHIEVEMENTS_GETPLAYERACHIEVEMENTCOUNT_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_COPYPLAYERACHIEVEMENTBYINDEX_API_LATEST: u32 = 2;
pub const EOS_ACHIEVEMENTS_COPYPLAYERACHIEVEMENTBYACHIEVEMENTID_API_LATEST: u32 = 2;
pub const EOS_ACHIEVEMENTS_UNLOCKACHIEVEMENTS_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_ADDNOTIFYACHIEVEMENTSUNLOCKEDV2_API_LATEST: u32 = 2;
pub const EOS_ACHIEVEMENTS_DEFINITION_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_COPYDEFINITIONBYINDEX_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_COPYDEFINITIONBYACHIEVEMENTID_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_UNLOCKEDACHIEVEMENT_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_GETUNLOCKEDACHIEVEMENTCOUNT_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_COPYUNLOCKEDACHIEVEMENTBYINDEX_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_COPYUNLOCKEDACHIEVEMENTBYACHIEVEMENTID_API_LATEST: u32 = 1;
pub const EOS_ACHIEVEMENTS_ADDNOTIFYACHIEVEMENTSUNLOCKED_API_LATEST: u32 = 1;
pub const EOS_STATS_INGESTDATA_API_LATEST: u32 = 1;
pub const EOS_STATS_MAX_INGEST_STATS: u32 = 3000;
pub const EOS_STATS_INGESTSTAT_API_LATEST: u32 = 3;
pub const EOS_STATS_MAX_QUERY_STATS: u32 = 1000;
pub const EOS_STATS_QUERYSTATS_API_LATEST: u32 = 3;
pub const EOS_STATS_TIME_UNDEFINED: i32 = -1;
pub const EOS_STATS_STAT_API_LATEST: u32 = 1;
pub const EOS_STATS_GETSTATSCOUNT_API_LATEST: u32 = 1;
pub const EOS_STATS_GETSTATCOUNT_API_LATEST: u32 = 1;
pub const EOS_STATS_COPYSTATBYINDEX_API_LATEST: u32 = 1;
pub const EOS_STATS_COPYSTATBYNAME_API_LATEST: u32 = 1;
pub const EOS_LEADERBOARDS_TIME_UNDEFINED: i32 = -1;
pub const EOS_LEADERBOARDS_QUERYLEADERBOARDDEFINITIONS_API_LATEST: u32 = 2;
pub const EOS_LEADERBOARDS_DEFINITION_API_LATEST: u32 = 1;
pub const EOS_LEADERBOARDS_GETLEADERBOARDDEFINITIONCOUNT_API_LATEST: u32 = 1;
pub const EOS_LEADERBOARDS_COPYLEADERBOARDDEFINITIONBYINDEX_API_LATEST: u32 = 1;
pub const EOS_LEADERBOARDS_COPYLEADERBOARDDEFINITIONBYLEADERBOARDID_API_LATEST: u32 = 1;
pub const EOS_LEADERBOARDS_USERSCORESQUERYSTATINFO_API_LATEST: u32 = 1;
pub const EOS_LEADERBOARDS_QUERYLEADERBOARDUSERSCORES_API_LATEST: u32 = 2;
pub const EOS_LEADERBOARDS_LEADERBOARDUSERSCORE_API_LATEST: u32 = 1;
pub const EOS_LEADERBOARDS_GETLEADERBOARDUSERSCORECOUNT_API_LATEST: u32 = 1;
pub const EOS_LEADERBOARDS_COPYLEADERBOARDUSERSCOREBYINDEX_API_LATEST: u32 = 1;
pub const EOS_LEADERBOARDS_COPYLEADERBOARDUSERSCOREBYUSERID_API_LATEST: u32 = 1;
pub const EOS_LEADERBOARDS_QUERYLEADERBOARDRANKS_API_LATEST: u32 = 2;
pub const EOS_LEADERBOARDS_LEADERBOARDRECORD_API_LATEST: u32 = 2;
pub const EOS_LEADERBOARDS_GETLEADERBOARDRECORDCOUNT_API_LATEST: u32 = 1;
pub const EOS_LEADERBOARDS_COPYLEADERBOARDRECORDBYINDEX_API_LATEST: u32 = 2;
pub const EOS_LEADERBOARDS_COPYLEADERBOARDRECORDBYUSERID_API_LATEST: u32 = 2;
pub const EOS_MOD_IDENTIFIER_API_LATEST: u32 = 1;
pub const EOS_MODS_INSTALLMOD_API_LATEST: u32 = 1;
pub const EOS_MODS_UNINSTALLMOD_API_LATEST: u32 = 1;
pub const EOS_MODS_ENUMERATEMODS_API_LATEST: u32 = 1;
pub const EOS_MODS_COPYMODINFO_API_LATEST: u32 = 1;
pub const EOS_MODS_MODINFO_API_LATEST: u32 = 1;
pub const EOS_MODS_UPDATEMOD_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCOMMON_SETCLIENTDETAILS_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCOMMON_SETGAMESESSIONID_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCOMMON_REGISTEREVENT_CUSTOMEVENTBASE: u32 = 268435456;
pub const EOS_ANTICHEATCOMMON_REGISTEREVENT_MAX_PARAMDEFSCOUNT: u32 = 12;
pub const EOS_ANTICHEATCOMMON_REGISTEREVENT_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCOMMON_LOGEVENT_STRING_MAX_LENGTH: u32 = 39;
pub const EOS_ANTICHEATCOMMON_LOGEVENT_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCOMMON_LOGGAMEROUNDSTART_API_LATEST: u32 = 2;
pub const EOS_ANTICHEATCOMMON_LOGGAMEROUNDEND_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCOMMON_LOGPLAYERSPAWN_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCOMMON_LOGPLAYERDESPAWN_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCOMMON_LOGPLAYERREVIVE_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCOMMON_LOGPLAYERTICK_API_LATEST: u32 = 3;
pub const EOS_ANTICHEATCOMMON_LOGPLAYERUSEWEAPON_WEAPONNAME_MAX_LENGTH: u32 = 32;
pub const EOS_ANTICHEATCOMMON_LOGPLAYERUSEWEAPON_API_LATEST: u32 = 2;
pub const EOS_ANTICHEATCOMMON_LOGPLAYERUSEABILITY_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCOMMON_LOGPLAYERTAKEDAMAGE_API_LATEST: u32 = 4;
pub const EOS_ANTICHEATCLIENT_ONMESSAGETOSERVERCALLBACK_MAX_MESSAGE_SIZE: u32 = 512;
pub const EOS_ANTICHEATCLIENT_ONMESSAGETOPEERCALLBACK_MAX_MESSAGE_SIZE: u32 = 512;
pub const EOS_ANTICHEATCLIENT_ADDNOTIFYMESSAGETOSERVER_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_ADDNOTIFYMESSAGETOPEER_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_ADDNOTIFYPEERACTIONREQUIRED_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_ADDNOTIFYPEERAUTHSTATUSCHANGED_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_ADDNOTIFYCLIENTINTEGRITYVIOLATED_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_BEGINSESSION_API_LATEST: u32 = 3;
pub const EOS_ANTICHEATCLIENT_ENDSESSION_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_RESERVED01_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_RESERVED02_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_GETMODULEBUILDID_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_ADDEXTERNALINTEGRITYCATALOG_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_RECEIVEMESSAGEFROMSERVER_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_GETPROTECTMESSAGEOUTPUTLENGTH_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_PROTECTMESSAGE_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_UNPROTECTMESSAGE_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_REGISTERPEER_MIN_AUTHENTICATIONTIMEOUT: u32 = 40;
pub const EOS_ANTICHEATCLIENT_REGISTERPEER_MAX_AUTHENTICATIONTIMEOUT: u32 = 120;
pub const EOS_ANTICHEATCLIENT_REGISTERPEER_API_LATEST: u32 = 3;
pub const EOS_ANTICHEATCLIENT_UNREGISTERPEER_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_RECEIVEMESSAGEFROMPEER_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATCLIENT_POLLSTATUS_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATSERVER_ONMESSAGETOCLIENTCALLBACK_MAX_MESSAGE_SIZE: u32 = 512;
pub const EOS_ANTICHEATSERVER_ADDNOTIFYMESSAGETOCLIENT_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATSERVER_ADDNOTIFYCLIENTACTIONREQUIRED_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATSERVER_ADDNOTIFYCLIENTAUTHSTATUSCHANGED_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATSERVER_BEGINSESSION_MIN_REGISTERTIMEOUT: u32 = 10;
pub const EOS_ANTICHEATSERVER_BEGINSESSION_MAX_REGISTERTIMEOUT: u32 = 120;
pub const EOS_ANTICHEATSERVER_BEGINSESSION_API_LATEST: u32 = 3;
pub const EOS_ANTICHEATSERVER_ENDSESSION_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATSERVER_REGISTERCLIENT_API_LATEST: u32 = 3;
pub const EOS_ANTICHEATSERVER_UNREGISTERCLIENT_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATSERVER_RECEIVEMESSAGEFROMCLIENT_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATSERVER_SETCLIENTNETWORKSTATE_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATSERVER_GETPROTECTMESSAGEOUTPUTLENGTH_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATSERVER_PROTECTMESSAGE_API_LATEST: u32 = 1;
pub const EOS_ANTICHEATSERVER_UNPROTECTMESSAGE_API_LATEST: u32 = 1;
pub const EOS_REPORTS_REPORTMESSAGE_MAX_LENGTH: u32 = 512;
pub const EOS_REPORTS_REPORTCONTEXT_MAX_LENGTH: u32 = 4096;
pub const EOS_REPORTS_SENDPLAYERBEHAVIORREPORT_API_LATEST: u32 = 2;
pub const EOS_SANCTIONS_PLAYERSANCTION_API_LATEST: u32 = 2;
pub const EOS_SANCTIONS_QUERYACTIVEPLAYERSANCTIONS_API_LATEST: u32 = 2;
pub const EOS_SANCTIONS_GETPLAYERSANCTIONCOUNT_API_LATEST: u32 = 1;
pub const EOS_SANCTIONS_COPYPLAYERSANCTIONBYINDEX_API_LATEST: u32 = 1;
pub const EOS_SANCTIONS_CREATEPLAYERSANCTIONAPPEAL_API_LATEST: u32 = 1;
pub const EOS_KWS_MAX_PERMISSIONS: u32 = 16;
pub const EOS_KWS_MAX_PERMISSION_LENGTH: u32 = 32;
pub const EOS_KWS_PERMISSIONSTATUS_API_LATEST: u32 = 1;
pub const EOS_KWS_QUERYAGEGATE_API_LATEST: u32 = 1;
pub const EOS_KWS_CREATEUSER_API_LATEST: u32 = 1;
pub const EOS_KWS_QUERYPERMISSIONS_API_LATEST: u32 = 1;
pub const EOS_KWS_UPDATEPARENTEMAIL_API_LATEST: u32 = 1;
pub const EOS_KWS_REQUESTPERMISSIONS_API_LATEST: u32 = 1;
pub const EOS_KWS_GETPERMISSIONSCOUNT_API_LATEST: u32 = 1;
pub const EOS_KWS_COPYPERMISSIONBYINDEX_API_LATEST: u32 = 1;
pub const EOS_KWS_GETPERMISSIONBYKEY_API_LATEST: u32 = 1;
pub const EOS_KWS_ADDNOTIFYPERMISSIONSUPDATERECEIVED_API_LATEST: u32 = 1;
pub const EOS_RTC_JOINROOM_API_LATEST: u32 = 1;
pub const EOS_RTC_JOINROOMFLAGS_ENABLE_ECHO: u32 = 1;
pub const EOS_RTC_JOINROOMFLAGS_ENABLE_DATACHANNEL: u32 = 4;
pub const EOS_RTC_JOINROOMFLAGS_RESERVED_VOICE_FEATURE: u32 = 8;
pub const EOS_RTC_OPTION_KEY_MAXCHARCOUNT: u32 = 256;
pub const EOS_RTC_OPTION_VALUE_MAXCHARCOUNT: u32 = 256;
pub const EOS_RTC_OPTION_API_LATEST: u32 = 1;
pub const EOS_RTC_LEAVEROOM_API_LATEST: u32 = 1;
pub const EOS_RTC_BLOCKPARTICIPANT_API_LATEST: u32 = 1;
pub const EOS_RTC_ADDNOTIFYDISCONNECTED_API_LATEST: u32 = 1;
pub const EOS_RTC_PARTICIPANTMETADATA_KEY_MAXCHARCOUNT: u32 = 256;
pub const EOS_RTC_PARTICIPANTMETADATA_VALUE_MAXCHARCOUNT: u32 = 256;
pub const EOS_RTC_PARTICIPANTMETADATA_API_LATEST: u32 = 1;
pub const EOS_RTC_ADDNOTIFYPARTICIPANTSTATUSCHANGED_API_LATEST: u32 = 1;
pub const EOS_RTC_ADDNOTIFYROOMBEFOREJOIN_API_LATEST: u32 = 1;
pub const EOS_RTC_SETSETTING_API_LATEST: u32 = 1;
pub const EOS_RTC_SETROOMSETTING_API_LATEST: u32 = 1;
pub const EOS_RTC_ADDNOTIFYROOMSTATISTICSUPDATED_API_LATEST: u32 = 1;
pub const EOS_RTCADMIN_QUERYJOINROOMTOKEN_API_LATEST: u32 = 2;
pub const EOS_RTCADMIN_USERTOKEN_API_LATEST: u32 = 1;
pub const EOS_RTCADMIN_COPYUSERTOKENBYINDEX_API_LATEST: u32 = 2;
pub const EOS_RTCADMIN_COPYUSERTOKENBYUSERID_API_LATEST: u32 = 2;
pub const EOS_RTCADMIN_KICK_API_LATEST: u32 = 1;
pub const EOS_RTCADMIN_SETPARTICIPANTHARDMUTE_API_LATEST: u32 = 1;
pub const EOS_INVALID_PROGRESSIONSNAPSHOTID: u32 = 0;
pub const EOS_PROGRESSIONSNAPSHOT_BEGINSNAPSHOT_API_LATEST: u32 = 1;
pub const EOS_PROGRESSIONSNAPSHOT_ADDPROGRESSION_API_LATEST: u32 = 1;
pub const EOS_PROGRESSIONSNAPSHOT_SUBMITSNAPSHOT_API_LATEST: u32 = 1;
pub const EOS_PROGRESSIONSNAPSHOT_ENDSNAPSHOT_API_LATEST: u32 = 1;
pub const EOS_PROGRESSIONSNAPSHOT_DELETESNAPSHOT_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_MAX_PAYLOAD_LENGTH: u32 = 500;
pub const EOS_CUSTOMINVITES_SETCUSTOMINVITE_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_SENDCUSTOMINVITE_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_ADDNOTIFYCUSTOMINVITERECEIVED_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_ADDNOTIFYCUSTOMINVITEACCEPTED_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_ADDNOTIFYCUSTOMINVITEREJECTED_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_FINALIZEINVITE_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_SENDREQUESTTOJOIN_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_ADDNOTIFYREQUESTTOJOINRESPONSERECEIVED_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_ADDNOTIFYREQUESTTOJOINRECEIVED_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_ACCEPTREQUESTTOJOIN_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_REJECTREQUESTTOJOIN_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_ADDNOTIFYSENDCUSTOMNATIVEINVITEREQUESTED_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_ADDNOTIFYREQUESTTOJOINACCEPTED_API_LATEST: u32 = 1;
pub const EOS_CUSTOMINVITES_ADDNOTIFYREQUESTTOJOINREJECTED_API_LATEST: u32 = 1;
pub type EOS_Bool = i32;
#[doc = " Successful result. no further error processing needed"]
pub const EOS_EResult_EOS_Success: EOS_EResult = 0;
#[doc = " Failed due to no connection"]
pub const EOS_EResult_EOS_NoConnection: EOS_EResult = 1;
#[doc = " Failed login due to invalid credentials"]
pub const EOS_EResult_EOS_InvalidCredentials: EOS_EResult = 2;
#[doc = " Failed due to invalid or missing user"]
pub const EOS_EResult_EOS_InvalidUser: EOS_EResult = 3;
#[doc = " Failed due to invalid or missing authentication token for user (e.g. not logged in)"]
pub const EOS_EResult_EOS_InvalidAuth: EOS_EResult = 4;
#[doc = " Failed due to invalid access"]
pub const EOS_EResult_EOS_AccessDenied: EOS_EResult = 5;
#[doc = " If the client does not possess the permission required"]
pub const EOS_EResult_EOS_MissingPermissions: EOS_EResult = 6;
#[doc = " If the token provided does not represent an account"]
pub const EOS_EResult_EOS_Token_Not_Account: EOS_EResult = 7;
#[doc = " Throttled due to too many requests"]
pub const EOS_EResult_EOS_TooManyRequests: EOS_EResult = 8;
#[doc = " Async request was already pending"]
pub const EOS_EResult_EOS_AlreadyPending: EOS_EResult = 9;
#[doc = " Invalid parameters specified for request"]
pub const EOS_EResult_EOS_InvalidParameters: EOS_EResult = 10;
#[doc = " Invalid request"]
pub const EOS_EResult_EOS_InvalidRequest: EOS_EResult = 11;
#[doc = " Failed due to unable to parse or recognize a backend response"]
pub const EOS_EResult_EOS_UnrecognizedResponse: EOS_EResult = 12;
#[doc = " Incompatible client for backend version"]
pub const EOS_EResult_EOS_IncompatibleVersion: EOS_EResult = 13;
#[doc = " Not configured correctly for use"]
pub const EOS_EResult_EOS_NotConfigured: EOS_EResult = 14;
#[doc = " Already configured for use."]
pub const EOS_EResult_EOS_AlreadyConfigured: EOS_EResult = 15;
#[doc = " Feature not available on this implementation"]
pub const EOS_EResult_EOS_NotImplemented: EOS_EResult = 16;
#[doc = " Operation was canceled (likely by user)"]
pub const EOS_EResult_EOS_Canceled: EOS_EResult = 17;
#[doc = " The requested information was not found"]
pub const EOS_EResult_EOS_NotFound: EOS_EResult = 18;
#[doc = " An error occurred during an asynchronous operation, and it will be retried. Callbacks receiving this result will be called again in the future."]
pub const EOS_EResult_EOS_OperationWillRetry: EOS_EResult = 19;
#[doc = " The request had no effect"]
pub const EOS_EResult_EOS_NoChange: EOS_EResult = 20;
#[doc = " The request attempted to use multiple or inconsistent API versions"]
pub const EOS_EResult_EOS_VersionMismatch: EOS_EResult = 21;
#[doc = " A maximum limit was exceeded on the client, different from EOS_TooManyRequests"]
pub const EOS_EResult_EOS_LimitExceeded: EOS_EResult = 22;
#[doc = " Feature or client ID performing the operation has been disabled."]
pub const EOS_EResult_EOS_Disabled: EOS_EResult = 23;
#[doc = " Duplicate entry not allowed"]
pub const EOS_EResult_EOS_DuplicateNotAllowed: EOS_EResult = 24;
#[doc = " Required parameters are missing. DEPRECATED: This error is no longer used."]
pub const EOS_EResult_EOS_MissingParameters_DEPRECATED: EOS_EResult = 25;
#[doc = " Sandbox ID is invalid"]
pub const EOS_EResult_EOS_InvalidSandboxId: EOS_EResult = 26;
#[doc = " Request timed out"]
pub const EOS_EResult_EOS_TimedOut: EOS_EResult = 27;
#[doc = " A query returned some but not all of the requested results."]
pub const EOS_EResult_EOS_PartialResult: EOS_EResult = 28;
#[doc = " Client is missing the whitelisted role"]
pub const EOS_EResult_EOS_Missing_Role: EOS_EResult = 29;
#[doc = " Client is missing the whitelisted feature"]
pub const EOS_EResult_EOS_Missing_Feature: EOS_EResult = 30;
#[doc = " The sandbox given to the backend is invalid"]
pub const EOS_EResult_EOS_Invalid_Sandbox: EOS_EResult = 31;
#[doc = " The deployment given to the backend is invalid"]
pub const EOS_EResult_EOS_Invalid_Deployment: EOS_EResult = 32;
#[doc = " The product ID specified to the backend is invalid"]
pub const EOS_EResult_EOS_Invalid_Product: EOS_EResult = 33;
#[doc = " The product user ID specified to the backend is invalid"]
pub const EOS_EResult_EOS_Invalid_ProductUserID: EOS_EResult = 34;
#[doc = " There was a failure with the backend service"]
pub const EOS_EResult_EOS_ServiceFailure: EOS_EResult = 35;
#[doc = " Cache directory is not set in platform options."]
pub const EOS_EResult_EOS_CacheDirectoryMissing: EOS_EResult = 36;
#[doc = " Cache directory is not accessible."]
pub const EOS_EResult_EOS_CacheDirectoryInvalid: EOS_EResult = 37;
#[doc = " The request failed because resource was in an invalid state"]
pub const EOS_EResult_EOS_InvalidState: EOS_EResult = 38;
#[doc = " Request is in progress"]
pub const EOS_EResult_EOS_RequestInProgress: EOS_EResult = 39;
#[doc = " Application is suspended"]
pub const EOS_EResult_EOS_ApplicationSuspended: EOS_EResult = 40;
#[doc = " Network is disconnected"]
pub const EOS_EResult_EOS_NetworkDisconnected: EOS_EResult = 41;
#[doc = " Given output buffer is insufficient to complete the operation"]
pub const EOS_EResult_EOS_InsufficientOutputBuffer: EOS_EResult = 42;
#[doc = " The associated feature or action is not enabled in the client policy"]
pub const EOS_EResult_EOS_ClientPolicyMissingAction: EOS_EResult = 43;
#[doc = " Account locked due to login failures"]
pub const EOS_EResult_EOS_Auth_AccountLocked: EOS_EResult = 1001;
#[doc = " Account locked by update operation."]
pub const EOS_EResult_EOS_Auth_AccountLockedForUpdate: EOS_EResult = 1002;
#[doc = " Refresh token used was invalid"]
pub const EOS_EResult_EOS_Auth_InvalidRefreshToken: EOS_EResult = 1003;
#[doc = " Invalid access token, typically when switching between backend environments"]
pub const EOS_EResult_EOS_Auth_InvalidToken: EOS_EResult = 1004;
#[doc = " Invalid bearer token"]
pub const EOS_EResult_EOS_Auth_AuthenticationFailure: EOS_EResult = 1005;
#[doc = " Invalid platform token"]
pub const EOS_EResult_EOS_Auth_InvalidPlatformToken: EOS_EResult = 1006;
#[doc = " Auth parameters are not associated with this account"]
pub const EOS_EResult_EOS_Auth_WrongAccount: EOS_EResult = 1007;
#[doc = " Auth parameters are not associated with this client"]
pub const EOS_EResult_EOS_Auth_WrongClient: EOS_EResult = 1008;
#[doc = " Full account is required"]
pub const EOS_EResult_EOS_Auth_FullAccountRequired: EOS_EResult = 1009;
#[doc = " Headless account is required"]
pub const EOS_EResult_EOS_Auth_HeadlessAccountRequired: EOS_EResult = 1010;
#[doc = " Password reset is required"]
pub const EOS_EResult_EOS_Auth_PasswordResetRequired: EOS_EResult = 1011;
#[doc = " Password was previously used and cannot be reused"]
pub const EOS_EResult_EOS_Auth_PasswordCannotBeReused: EOS_EResult = 1012;
#[doc = " Authorization code/exchange code has expired"]
pub const EOS_EResult_EOS_Auth_Expired: EOS_EResult = 1013;
#[doc = " Consent has not been given by the user"]
pub const EOS_EResult_EOS_Auth_ScopeConsentRequired: EOS_EResult = 1014;
#[doc = " The application has no profile on the backend"]
pub const EOS_EResult_EOS_Auth_ApplicationNotFound: EOS_EResult = 1015;
#[doc = " The requested consent wasn't found on the backend"]
pub const EOS_EResult_EOS_Auth_ScopeNotFound: EOS_EResult = 1016;
#[doc = " This account has been denied access to login"]
pub const EOS_EResult_EOS_Auth_AccountFeatureRestricted: EOS_EResult = 1017;
#[doc = " The overlay failed to load the Account Portal. This can range from general overlay failure, to overlay failed to connect to the web server, to overlay failed to render the web page."]
pub const EOS_EResult_EOS_Auth_AccountPortalLoadError: EOS_EResult = 1018;
#[doc = " An attempted login has failed due to the user needing to take corrective action on their account."]
pub const EOS_EResult_EOS_Auth_CorrectiveActionRequired: EOS_EResult = 1019;
#[doc = " Pin grant code initiated"]
pub const EOS_EResult_EOS_Auth_PinGrantCode: EOS_EResult = 1020;
#[doc = " Pin grant code attempt expired"]
pub const EOS_EResult_EOS_Auth_PinGrantExpired: EOS_EResult = 1021;
#[doc = " Pin grant code attempt pending"]
pub const EOS_EResult_EOS_Auth_PinGrantPending: EOS_EResult = 1022;
#[doc = " External auth source did not yield an account"]
pub const EOS_EResult_EOS_Auth_ExternalAuthNotLinked: EOS_EResult = 1030;
#[doc = " External auth access revoked"]
pub const EOS_EResult_EOS_Auth_ExternalAuthRevoked: EOS_EResult = 1032;
#[doc = " External auth token cannot be interpreted"]
pub const EOS_EResult_EOS_Auth_ExternalAuthInvalid: EOS_EResult = 1033;
#[doc = " External auth cannot be linked to his account due to restrictions"]
pub const EOS_EResult_EOS_Auth_ExternalAuthRestricted: EOS_EResult = 1034;
#[doc = " External auth cannot be used for login"]
pub const EOS_EResult_EOS_Auth_ExternalAuthCannotLogin: EOS_EResult = 1035;
#[doc = " External auth is expired"]
pub const EOS_EResult_EOS_Auth_ExternalAuthExpired: EOS_EResult = 1036;
#[doc = " External auth cannot be removed since it's the last possible way to login"]
pub const EOS_EResult_EOS_Auth_ExternalAuthIsLastLoginType: EOS_EResult = 1037;
#[doc = " Exchange code not found"]
pub const EOS_EResult_EOS_Auth_ExchangeCodeNotFound: EOS_EResult = 1040;
#[doc = " Originating exchange code session has expired"]
pub const EOS_EResult_EOS_Auth_OriginatingExchangeCodeSessionExpired: EOS_EResult = 1041;
#[doc = " The account has been disabled and cannot be used for authentication"]
pub const EOS_EResult_EOS_Auth_AccountNotActive: EOS_EResult = 1050;
#[doc = " MFA challenge required"]
pub const EOS_EResult_EOS_Auth_MFARequired: EOS_EResult = 1060;
#[doc = " Parental locks are in place"]
pub const EOS_EResult_EOS_Auth_ParentalControls: EOS_EResult = 1070;
#[doc = " Korea real ID association required but missing"]
pub const EOS_EResult_EOS_Auth_NoRealId: EOS_EResult = 1080;
#[doc = " Silent login failed when EOS_LF_NO_USER_INTERFACE was specified, and user interaction is needed before the user can be logged in."]
pub const EOS_EResult_EOS_Auth_UserInterfaceRequired: EOS_EResult = 1090;
#[doc = " An outgoing friend invitation is awaiting acceptance; sending another invite to the same user is erroneous"]
pub const EOS_EResult_EOS_Friends_InviteAwaitingAcceptance: EOS_EResult = 2000;
#[doc = " There is no friend invitation to accept/reject"]
pub const EOS_EResult_EOS_Friends_NoInvitation: EOS_EResult = 2001;
#[doc = " Users are already friends, so sending another invite is erroneous"]
pub const EOS_EResult_EOS_Friends_AlreadyFriends: EOS_EResult = 2003;
#[doc = " Users are not friends, so deleting the friend is erroneous"]
pub const EOS_EResult_EOS_Friends_NotFriends: EOS_EResult = 2004;
#[doc = " Remote user has too many invites to receive new invites"]
pub const EOS_EResult_EOS_Friends_TargetUserTooManyInvites: EOS_EResult = 2005;
#[doc = " Local user has too many invites to send new invites"]
pub const EOS_EResult_EOS_Friends_LocalUserTooManyInvites: EOS_EResult = 2006;
#[doc = " Remote user has too many friends to make a new friendship"]
pub const EOS_EResult_EOS_Friends_TargetUserFriendLimitExceeded: EOS_EResult = 2007;
#[doc = " Local user has too many friends to make a new friendship"]
pub const EOS_EResult_EOS_Friends_LocalUserFriendLimitExceeded: EOS_EResult = 2008;
#[doc = " Request data was null or invalid"]
pub const EOS_EResult_EOS_Presence_DataInvalid: EOS_EResult = 3000;
#[doc = " Request contained too many or too few unique data items, or the request would overflow the maximum amount of data allowed"]
pub const EOS_EResult_EOS_Presence_DataLengthInvalid: EOS_EResult = 3001;
#[doc = " Request contained data with an invalid key"]
pub const EOS_EResult_EOS_Presence_DataKeyInvalid: EOS_EResult = 3002;
#[doc = " Request contained data with a key too long or too short"]
pub const EOS_EResult_EOS_Presence_DataKeyLengthInvalid: EOS_EResult = 3003;
#[doc = " Request contained data with an invalid value"]
pub const EOS_EResult_EOS_Presence_DataValueInvalid: EOS_EResult = 3004;
#[doc = " Request contained data with a value too long"]
pub const EOS_EResult_EOS_Presence_DataValueLengthInvalid: EOS_EResult = 3005;
#[doc = " Request contained an invalid rich text string"]
pub const EOS_EResult_EOS_Presence_RichTextInvalid: EOS_EResult = 3006;
#[doc = " Request contained a rich text string that was too long"]
pub const EOS_EResult_EOS_Presence_RichTextLengthInvalid: EOS_EResult = 3007;
#[doc = " Request contained an invalid status state"]
pub const EOS_EResult_EOS_Presence_StatusInvalid: EOS_EResult = 3008;
#[doc = " Request created with a template - rich text is not supported"]
pub const EOS_EResult_EOS_Presence_RichTextNotSupported: EOS_EResult = 3009;
#[doc = " Request not created with a template - rich text expected"]
pub const EOS_EResult_EOS_Presence_TemplateNotSupported: EOS_EResult = 3010;
#[doc = " Invalid Rich Presence Template ID"]
pub const EOS_EResult_EOS_Presence_TemplateIdInvalid: EOS_EResult = 3011;
#[doc = " Template type value is not supported"]
pub const EOS_EResult_EOS_Presence_TemplateTypeInvalid: EOS_EResult = 3012;
#[doc = " Template key is null or not supplied"]
pub const EOS_EResult_EOS_Presence_TemplateKeyInvalid: EOS_EResult = 3013;
#[doc = " Template value, if type is a string, is null or not supplie"]
pub const EOS_EResult_EOS_Presence_TemplateValueInvalid: EOS_EResult = 3014;
#[doc = " Template id was not found for the product or deployment"]
pub const EOS_EResult_EOS_Presence_TemplateNotFound: EOS_EResult = 3015;
#[doc = " Failed to format template with given vairable data"]
pub const EOS_EResult_EOS_Presence_TemplateInvalidVariableInput: EOS_EResult = 3016;
#[doc = " Localization server failed to format template"]
pub const EOS_EResult_EOS_Presence_TemplateLocalizationServerError: EOS_EResult = 3017;
#[doc = " Unknown error formatting template"]
pub const EOS_EResult_EOS_Presence_TemplateUnknownError: EOS_EResult = 3018;
#[doc = " The entitlement retrieved is stale, requery for updated information"]
pub const EOS_EResult_EOS_Ecom_EntitlementStale: EOS_EResult = 4000;
#[doc = " The offer retrieved is stale, requery for updated information"]
pub const EOS_EResult_EOS_Ecom_CatalogOfferStale: EOS_EResult = 4001;
#[doc = " The item or associated structure retrieved is stale, requery for updated information"]
pub const EOS_EResult_EOS_Ecom_CatalogItemStale: EOS_EResult = 4002;
#[doc = " The one or more offers has an invalid price. This may be caused by the price setup."]
pub const EOS_EResult_EOS_Ecom_CatalogOfferPriceInvalid: EOS_EResult = 4003;
#[doc = " The checkout page failed to load"]
pub const EOS_EResult_EOS_Ecom_CheckoutLoadError: EOS_EResult = 4004;
#[doc = " The player closed the purchase flow overlay after clicking the purchase button. The purchase may still go through, and the game needs to query unredeemed entitlements for a short time."]
pub const EOS_EResult_EOS_Ecom_PurchaseProcessing: EOS_EResult = 4005;
#[doc = " Session is already in progress"]
pub const EOS_EResult_EOS_Sessions_SessionInProgress: EOS_EResult = 5000;
#[doc = " Too many players to register with this session"]
pub const EOS_EResult_EOS_Sessions_TooManyPlayers: EOS_EResult = 5001;
#[doc = " Client has no permissions to access this session"]
pub const EOS_EResult_EOS_Sessions_NoPermission: EOS_EResult = 5002;
#[doc = " Session already exists in the system"]
pub const EOS_EResult_EOS_Sessions_SessionAlreadyExists: EOS_EResult = 5003;
#[doc = " Session lock required for operation"]
pub const EOS_EResult_EOS_Sessions_InvalidLock: EOS_EResult = 5004;
#[doc = " Invalid session reference"]
pub const EOS_EResult_EOS_Sessions_InvalidSession: EOS_EResult = 5005;
#[doc = " Sandbox ID associated with auth didn't match"]
pub const EOS_EResult_EOS_Sessions_SandboxNotAllowed: EOS_EResult = 5006;
#[doc = " Invite failed to send"]
pub const EOS_EResult_EOS_Sessions_InviteFailed: EOS_EResult = 5007;
#[doc = " Invite was not found with the service"]
pub const EOS_EResult_EOS_Sessions_InviteNotFound: EOS_EResult = 5008;
#[doc = " This client may not modify the session"]
pub const EOS_EResult_EOS_Sessions_UpsertNotAllowed: EOS_EResult = 5009;
#[doc = " Backend nodes unavailable to process request"]
pub const EOS_EResult_EOS_Sessions_AggregationFailed: EOS_EResult = 5010;
#[doc = " Individual backend node is as capacity"]
pub const EOS_EResult_EOS_Sessions_HostAtCapacity: EOS_EResult = 5011;
#[doc = " Sandbox on node is at capacity"]
pub const EOS_EResult_EOS_Sessions_SandboxAtCapacity: EOS_EResult = 5012;
#[doc = " An anonymous operation was attempted on a non anonymous session"]
pub const EOS_EResult_EOS_Sessions_SessionNotAnonymous: EOS_EResult = 5013;
#[doc = " Session is currently out of sync with the backend, data is saved locally but needs to sync with backend"]
pub const EOS_EResult_EOS_Sessions_OutOfSync: EOS_EResult = 5014;
#[doc = " User has received too many invites"]
pub const EOS_EResult_EOS_Sessions_TooManyInvites: EOS_EResult = 5015;
#[doc = " Presence session already exists for the client"]
pub const EOS_EResult_EOS_Sessions_PresenceSessionExists: EOS_EResult = 5016;
#[doc = " Deployment on node is at capacity"]
pub const EOS_EResult_EOS_Sessions_DeploymentAtCapacity: EOS_EResult = 5017;
#[doc = " Session operation not allowed"]
pub const EOS_EResult_EOS_Sessions_NotAllowed: EOS_EResult = 5018;
#[doc = " Session operation not allowed"]
pub const EOS_EResult_EOS_Sessions_PlayerSanctioned: EOS_EResult = 5019;
#[doc = " Request filename was invalid"]
pub const EOS_EResult_EOS_PlayerDataStorage_FilenameInvalid: EOS_EResult = 6000;
#[doc = " Request filename was too long"]
pub const EOS_EResult_EOS_PlayerDataStorage_FilenameLengthInvalid: EOS_EResult = 6001;
#[doc = " Request filename contained invalid characters"]
pub const EOS_EResult_EOS_PlayerDataStorage_FilenameInvalidChars: EOS_EResult = 6002;
#[doc = " Request operation would grow file too large"]
pub const EOS_EResult_EOS_PlayerDataStorage_FileSizeTooLarge: EOS_EResult = 6003;
#[doc = " Request file length is not valid"]
pub const EOS_EResult_EOS_PlayerDataStorage_FileSizeInvalid: EOS_EResult = 6004;
#[doc = " Request file handle is not valid"]
pub const EOS_EResult_EOS_PlayerDataStorage_FileHandleInvalid: EOS_EResult = 6005;
#[doc = " Request data is invalid"]
pub const EOS_EResult_EOS_PlayerDataStorage_DataInvalid: EOS_EResult = 6006;
#[doc = " Request data length was invalid"]
pub const EOS_EResult_EOS_PlayerDataStorage_DataLengthInvalid: EOS_EResult = 6007;
#[doc = " Request start index was invalid"]
pub const EOS_EResult_EOS_PlayerDataStorage_StartIndexInvalid: EOS_EResult = 6008;
#[doc = " Request is in progress"]
pub const EOS_EResult_EOS_PlayerDataStorage_RequestInProgress: EOS_EResult = 6009;
#[doc = " User is marked as throttled which means he can't perform some operations because limits are exceeded."]
pub const EOS_EResult_EOS_PlayerDataStorage_UserThrottled: EOS_EResult = 6010;
#[doc = " Encryption key is not set during SDK init."]
pub const EOS_EResult_EOS_PlayerDataStorage_EncryptionKeyNotSet: EOS_EResult = 6011;
#[doc = " User data callback returned error (EOS_PlayerDataStorage_EWriteResult::EOS_WR_FailRequest or EOS_PlayerDataStorage_EReadResult::EOS_RR_FailRequest)"]
pub const EOS_EResult_EOS_PlayerDataStorage_UserErrorFromDataCallback: EOS_EResult = 6012;
#[doc = " User is trying to read file that has header from newer version of SDK. Game/SDK needs to be updated."]
pub const EOS_EResult_EOS_PlayerDataStorage_FileHeaderHasNewerVersion: EOS_EResult = 6013;
#[doc = " The file is corrupted. In some cases retry can fix the issue."]
pub const EOS_EResult_EOS_PlayerDataStorage_FileCorrupted: EOS_EResult = 6014;
#[doc = " EOS Auth service deemed the external token invalid"]
pub const EOS_EResult_EOS_Connect_ExternalTokenValidationFailed: EOS_EResult = 7000;
#[doc = " EOS Auth user already exists"]
pub const EOS_EResult_EOS_Connect_UserAlreadyExists: EOS_EResult = 7001;
#[doc = " EOS Auth expired"]
pub const EOS_EResult_EOS_Connect_AuthExpired: EOS_EResult = 7002;
#[doc = " EOS Auth invalid token"]
pub const EOS_EResult_EOS_Connect_InvalidToken: EOS_EResult = 7003;
#[doc = " EOS Auth doesn't support this token type"]
pub const EOS_EResult_EOS_Connect_UnsupportedTokenType: EOS_EResult = 7004;
#[doc = " EOS Auth Account link failure"]
pub const EOS_EResult_EOS_Connect_LinkAccountFailed: EOS_EResult = 7005;
#[doc = " EOS Auth External service for validation was unavailable"]
pub const EOS_EResult_EOS_Connect_ExternalServiceUnavailable: EOS_EResult = 7006;
#[doc = " EOS Auth External Service configuration failure with Dev Portal"]
pub const EOS_EResult_EOS_Connect_ExternalServiceConfigurationFailure: EOS_EResult = 7007;
#[doc = " EOS Auth Account link failure. Tried to link Nintendo Network Service Account without first linking Nintendo Account. DEPRECATED: The requirement has been removed and this error is no longer used."]
pub const EOS_EResult_EOS_Connect_LinkAccountFailedMissingNintendoIdAccount_DEPRECATED:
    EOS_EResult = 7008;
#[doc = " The social overlay page failed to load"]
pub const EOS_EResult_EOS_UI_SocialOverlayLoadError: EOS_EResult = 8000;
#[doc = " Virtual Memory Functions are an inconsistent mix of functions and nullptrs"]
pub const EOS_EResult_EOS_UI_InconsistentVirtualMemoryFunctions: EOS_EResult = 8001;
#[doc = " Client has no permissions to modify this lobby"]
pub const EOS_EResult_EOS_Lobby_NotOwner: EOS_EResult = 9000;
#[doc = " Lobby lock required for operation"]
pub const EOS_EResult_EOS_Lobby_InvalidLock: EOS_EResult = 9001;
#[doc = " Lobby already exists in the system"]
pub const EOS_EResult_EOS_Lobby_LobbyAlreadyExists: EOS_EResult = 9002;
#[doc = " Lobby is already in progress"]
pub const EOS_EResult_EOS_Lobby_SessionInProgress: EOS_EResult = 9003;
#[doc = " Too many players to register with this lobby"]
pub const EOS_EResult_EOS_Lobby_TooManyPlayers: EOS_EResult = 9004;
#[doc = " Client has no permissions to access this lobby"]
pub const EOS_EResult_EOS_Lobby_NoPermission: EOS_EResult = 9005;
#[doc = " Invalid lobby session reference"]
pub const EOS_EResult_EOS_Lobby_InvalidSession: EOS_EResult = 9006;
#[doc = " Sandbox ID associated with auth didn't match"]
pub const EOS_EResult_EOS_Lobby_SandboxNotAllowed: EOS_EResult = 9007;
#[doc = " Invite failed to send"]
pub const EOS_EResult_EOS_Lobby_InviteFailed: EOS_EResult = 9008;
#[doc = " Invite was not found with the service"]
pub const EOS_EResult_EOS_Lobby_InviteNotFound: EOS_EResult = 9009;
#[doc = " This client may not modify the lobby"]
pub const EOS_EResult_EOS_Lobby_UpsertNotAllowed: EOS_EResult = 9010;
#[doc = " Backend nodes unavailable to process request"]
pub const EOS_EResult_EOS_Lobby_AggregationFailed: EOS_EResult = 9011;
#[doc = " Individual backend node is as capacity"]
pub const EOS_EResult_EOS_Lobby_HostAtCapacity: EOS_EResult = 9012;
#[doc = " Sandbox on node is at capacity"]
pub const EOS_EResult_EOS_Lobby_SandboxAtCapacity: EOS_EResult = 9013;
#[doc = " User has received too many invites"]
pub const EOS_EResult_EOS_Lobby_TooManyInvites: EOS_EResult = 9014;
#[doc = " Deployment on node is at capacity"]
pub const EOS_EResult_EOS_Lobby_DeploymentAtCapacity: EOS_EResult = 9015;
#[doc = " Lobby operation not allowed"]
pub const EOS_EResult_EOS_Lobby_NotAllowed: EOS_EResult = 9016;
#[doc = " While restoring a lost connection lobby ownership changed and only local member data was updated"]
pub const EOS_EResult_EOS_Lobby_MemberUpdateOnly: EOS_EResult = 9017;
#[doc = " Presence lobby already exists for the client"]
pub const EOS_EResult_EOS_Lobby_PresenceLobbyExists: EOS_EResult = 9018;
#[doc = " Operation requires lobby with voice enabled"]
pub const EOS_EResult_EOS_Lobby_VoiceNotEnabled: EOS_EResult = 9019;
#[doc = " The client platform does not match the allowed platform list for the lobby."]
pub const EOS_EResult_EOS_Lobby_PlatformNotAllowed: EOS_EResult = 9020;
#[doc = " User callback that receives data from storage returned error."]
pub const EOS_EResult_EOS_TitleStorage_UserErrorFromDataCallback: EOS_EResult = 10000;
#[doc = " User forgot to set Encryption key during platform init. Title Storage can't work without it."]
pub const EOS_EResult_EOS_TitleStorage_EncryptionKeyNotSet: EOS_EResult = 10001;
#[doc = " Downloaded file is corrupted."]
pub const EOS_EResult_EOS_TitleStorage_FileCorrupted: EOS_EResult = 10002;
#[doc = " Downloaded file's format is newer than client SDK version."]
pub const EOS_EResult_EOS_TitleStorage_FileHeaderHasNewerVersion: EOS_EResult = 10003;
#[doc = " ModSdk process is already running. This error comes from the EOSSDK."]
pub const EOS_EResult_EOS_Mods_ModSdkProcessIsAlreadyRunning: EOS_EResult = 11000;
#[doc = " ModSdk command is empty. Either the ModSdk configuration file is missing or the manifest location is empty."]
pub const EOS_EResult_EOS_Mods_ModSdkCommandIsEmpty: EOS_EResult = 11001;
#[doc = " Creation of the ModSdk process failed. This error comes from the SDK."]
pub const EOS_EResult_EOS_Mods_ModSdkProcessCreationFailed: EOS_EResult = 11002;
#[doc = " A critical error occurred in the external ModSdk process that we were unable to resolve."]
pub const EOS_EResult_EOS_Mods_CriticalError: EOS_EResult = 11003;
#[doc = " A internal error occurred in the external ModSdk process that we were unable to resolve."]
pub const EOS_EResult_EOS_Mods_ToolInternalError: EOS_EResult = 11004;
#[doc = " A IPC failure occurred in the external ModSdk process."]
pub const EOS_EResult_EOS_Mods_IPCFailure: EOS_EResult = 11005;
#[doc = " A invalid IPC response received in the external ModSdk process."]
pub const EOS_EResult_EOS_Mods_InvalidIPCResponse: EOS_EResult = 11006;
#[doc = " A URI Launch failure occurred in the external ModSdk process."]
pub const EOS_EResult_EOS_Mods_URILaunchFailure: EOS_EResult = 11007;
#[doc = " Attempting to perform an action with a mod that is not installed. This error comes from the external ModSdk process."]
pub const EOS_EResult_EOS_Mods_ModIsNotInstalled: EOS_EResult = 11008;
#[doc = " Attempting to perform an action on a game that the user doesn't own. This error comes from the external ModSdk process."]
pub const EOS_EResult_EOS_Mods_UserDoesNotOwnTheGame: EOS_EResult = 11009;
#[doc = " Invalid result of the request to get the offer for the mod. This error comes from the external ModSdk process."]
pub const EOS_EResult_EOS_Mods_OfferRequestByIdInvalidResult: EOS_EResult = 11010;
#[doc = " Could not find the offer for the mod. This error comes from the external ModSdk process."]
pub const EOS_EResult_EOS_Mods_CouldNotFindOffer: EOS_EResult = 11011;
#[doc = " Request to get the offer for the mod failed. This error comes from the external ModSdk process."]
pub const EOS_EResult_EOS_Mods_OfferRequestByIdFailure: EOS_EResult = 11012;
#[doc = " Request to purchase the mod failed. This error comes from the external ModSdk process."]
pub const EOS_EResult_EOS_Mods_PurchaseFailure: EOS_EResult = 11013;
#[doc = " Attempting to perform an action on a game that is not installed or is partially installed. This error comes from the external ModSdk process."]
pub const EOS_EResult_EOS_Mods_InvalidGameInstallInfo: EOS_EResult = 11014;
#[doc = " Failed to get manifest location. Either the ModSdk configuration file is missing or the manifest location is empty"]
pub const EOS_EResult_EOS_Mods_CannotGetManifestLocation: EOS_EResult = 11015;
#[doc = " Attempting to perform an action with a mod that does not support the current operating system."]
pub const EOS_EResult_EOS_Mods_UnsupportedOS: EOS_EResult = 11016;
#[doc = " The anti-cheat client protection is not available. Check that the game was started using the anti-cheat bootstrapper."]
pub const EOS_EResult_EOS_AntiCheat_ClientProtectionNotAvailable: EOS_EResult = 12000;
#[doc = " The current anti-cheat mode is incorrect for using this API"]
pub const EOS_EResult_EOS_AntiCheat_InvalidMode: EOS_EResult = 12001;
#[doc = " The ProductId provided to the anti-cheat client helper executable does not match what was used to initialize the EOS SDK"]
pub const EOS_EResult_EOS_AntiCheat_ClientProductIdMismatch: EOS_EResult = 12002;
#[doc = " The SandboxId provided to the anti-cheat client helper executable does not match what was used to initialize the EOS SDK"]
pub const EOS_EResult_EOS_AntiCheat_ClientSandboxIdMismatch: EOS_EResult = 12003;
#[doc = " (ProtectMessage/UnprotectMessage) No session key is available, but it is required to complete this operation"]
pub const EOS_EResult_EOS_AntiCheat_ProtectMessageSessionKeyRequired: EOS_EResult = 12004;
#[doc = " (ProtectMessage/UnprotectMessage) Message integrity is invalid"]
pub const EOS_EResult_EOS_AntiCheat_ProtectMessageValidationFailed: EOS_EResult = 12005;
#[doc = " (ProtectMessage/UnprotectMessage) Initialization failed"]
pub const EOS_EResult_EOS_AntiCheat_ProtectMessageInitializationFailed: EOS_EResult = 12006;
#[doc = " (RegisterPeer) Peer is already registered"]
pub const EOS_EResult_EOS_AntiCheat_PeerAlreadyRegistered: EOS_EResult = 12007;
#[doc = " (UnregisterPeer) Peer does not exist"]
pub const EOS_EResult_EOS_AntiCheat_PeerNotFound: EOS_EResult = 12008;
#[doc = " (ReceiveMessageFromPeer) Invalid call: Peer is not protected"]
pub const EOS_EResult_EOS_AntiCheat_PeerNotProtected: EOS_EResult = 12009;
#[doc = " The DeploymentId provided to the anti-cheat client helper executable does not match what was used to initialize the EOS SDK"]
pub const EOS_EResult_EOS_AntiCheat_ClientDeploymentIdMismatch: EOS_EResult = 12010;
#[doc = " EOS Connect DeviceID auth method is not supported for anti-cheat"]
pub const EOS_EResult_EOS_AntiCheat_DeviceIdAuthIsNotSupported: EOS_EResult = 12011;
#[doc = " EOS RTC room cannot accept more participants"]
pub const EOS_EResult_EOS_RTC_TooManyParticipants: EOS_EResult = 13000;
#[doc = " EOS RTC room already exists"]
pub const EOS_EResult_EOS_RTC_RoomAlreadyExists: EOS_EResult = 13001;
#[doc = " The user kicked out from the room"]
pub const EOS_EResult_EOS_RTC_UserKicked: EOS_EResult = 13002;
#[doc = " The user is banned"]
pub const EOS_EResult_EOS_RTC_UserBanned: EOS_EResult = 13003;
#[doc = " EOS RTC room was left successfully"]
pub const EOS_EResult_EOS_RTC_RoomWasLeft: EOS_EResult = 13004;
#[doc = " Connection dropped due to long timeout"]
pub const EOS_EResult_EOS_RTC_ReconnectionTimegateExpired: EOS_EResult = 13005;
#[doc = " EOS RTC room was left due to platform release"]
pub const EOS_EResult_EOS_RTC_ShutdownInvoked: EOS_EResult = 13006;
#[doc = " EOS RTC operation failed because the user is in the local user's block list"]
pub const EOS_EResult_EOS_RTC_UserIsInBlocklist: EOS_EResult = 13007;
#[doc = " Failed to allocate resources"]
pub const EOS_EResult_EOS_RTC_AllocationFailed: EOS_EResult = 13009;
#[doc = " Failed to join room due to voice moderation mode mismatch"]
pub const EOS_EResult_EOS_RTC_VoiceModerationModeMismatch: EOS_EResult = 13010;
#[doc = " EOS RTC record buffer was empty"]
pub const EOS_EResult_EOS_RTC_EmptyRecord: EOS_EResult = 13011;
#[doc = " Failed to join room due to room options mismatch"]
pub const EOS_EResult_EOS_RTC_RoomOptionsMismatch: EOS_EResult = 13012;
#[doc = " The number of available Snapshot IDs have all been exhausted."]
pub const EOS_EResult_EOS_ProgressionSnapshot_SnapshotIdUnavailable: EOS_EResult = 14000;
#[doc = " The KWS user does not have a parental email associated with the account.  The parent account was unlinked or deleted"]
pub const EOS_EResult_EOS_KWS_ParentEmailMissing: EOS_EResult = 15000;
#[doc = " The KWS user is no longer a minor and trying to update the parent email"]
pub const EOS_EResult_EOS_KWS_UserGraduated: EOS_EResult = 15001;
#[doc = " EOS Android VM not stored"]
pub const EOS_EResult_EOS_Android_JavaVMNotStored: EOS_EResult = 17000;
#[doc = " EOS Android if Reserved is set it must reference stored VM"]
pub const EOS_EResult_EOS_Android_ReservedMustReferenceLocalVM: EOS_EResult = 17001;
#[doc = " EOS Android Reserved must not be provided"]
pub const EOS_EResult_EOS_Android_ReservedMustBeNull: EOS_EResult = 17002;
#[doc = " Patch required before the user can use the privilege"]
pub const EOS_EResult_EOS_Permission_RequiredPatchAvailable: EOS_EResult = 18000;
#[doc = " System update required before the user can use the privilege"]
pub const EOS_EResult_EOS_Permission_RequiredSystemUpdate: EOS_EResult = 18001;
#[doc = " Parental control failure usually"]
pub const EOS_EResult_EOS_Permission_AgeRestrictionFailure: EOS_EResult = 18002;
#[doc = " Premium Account Subscription required but not available"]
pub const EOS_EResult_EOS_Permission_AccountTypeFailure: EOS_EResult = 18003;
#[doc = " User restricted from chat"]
pub const EOS_EResult_EOS_Permission_ChatRestriction: EOS_EResult = 18004;
#[doc = " User restricted from User Generated Content"]
pub const EOS_EResult_EOS_Permission_UGCRestriction: EOS_EResult = 18005;
#[doc = " Online play is restricted"]
pub const EOS_EResult_EOS_Permission_OnlinePlayRestricted: EOS_EResult = 18006;
#[doc = " The application was not launched through the Bootstrapper. Desktop crossplay functionality is unavailable."]
pub const EOS_EResult_EOS_DesktopCrossplay_ApplicationNotBootstrapped: EOS_EResult = 19000;
#[doc = " The redistributable service is not installed."]
pub const EOS_EResult_EOS_DesktopCrossplay_ServiceNotInstalled: EOS_EResult = 19001;
#[doc = " The desktop crossplay service failed to start."]
pub const EOS_EResult_EOS_DesktopCrossplay_ServiceStartFailed: EOS_EResult = 19002;
#[doc = " The desktop crossplay service is no longer running for an unknown reason."]
pub const EOS_EResult_EOS_DesktopCrossplay_ServiceNotRunning: EOS_EResult = 19003;
#[doc = " When sending the custom invite failed."]
pub const EOS_EResult_EOS_CustomInvites_InviteFailed: EOS_EResult = 20000;
#[doc = " The best display name could not be safely determined."]
pub const EOS_EResult_EOS_UserInfo_BestDisplayNameIndeterminate: EOS_EResult = 22000;
#[doc = " OnNetworkRequested_DEPRECATED callback not set when initializing platform"]
pub const EOS_EResult_EOS_ConsoleInit_OnNetworkRequestedDeprecatedCallbackNotSet: EOS_EResult =
    23000;
#[doc = " CacheStorageSizeKB must be a multiple of 16"]
pub const EOS_EResult_EOS_ConsoleInit_CacheStorage_SizeKBNotMultipleOf16: EOS_EResult = 23001;
#[doc = " CacheStorageSizeKB is less than the minimum allowed"]
pub const EOS_EResult_EOS_ConsoleInit_CacheStorage_SizeKBBelowMinimumSize: EOS_EResult = 23002;
#[doc = " CacheStorageSizeKB is greater than the maximum allowed (4000 MB)"]
pub const EOS_EResult_EOS_ConsoleInit_CacheStorage_SizeKBExceedsMaximumSize: EOS_EResult = 23003;
#[doc = " CacheStorageIndex is out of its allowed range"]
pub const EOS_EResult_EOS_ConsoleInit_CacheStorage_IndexOutOfRangeRange: EOS_EResult = 23004;
#[doc = " An unexpected error that we cannot identify has occurred."]
pub const EOS_EResult_EOS_UnexpectedError: EOS_EResult = 2147483647;
pub const EOS_EResult___EOS_EResult_PAD_INT32__: EOS_EResult = 2147483647;
#[doc = " Enum flags for all possible result values of operations in the SDK."]
pub type EOS_EResult = ::std::os::raw::c_int;
unsafe extern "C" {
    #[doc = " Returns a string representation of an EOS_EResult.\n The return value is never null.\n The return value must not be freed.\n\n Example: EOS_EResult_ToString(EOS_Success) returns \"EOS_Success\""]
    pub fn EOS_EResult_ToString(Result: EOS_EResult) -> *const ::std::os::raw::c_char;
}
unsafe extern "C" {
    #[doc = " Returns whether a result is to be considered the final result, or false if the callback that returned this result\n will be called again either after some time or from another action.\n\n @param Result The result to check against being a final result for an operation\n @return True if this result means the operation is complete, false otherwise"]
    pub fn EOS_EResult_IsOperationComplete(Result: EOS_EResult) -> EOS_Bool;
}
unsafe extern "C" {
    #[doc = " Encode a byte array into hex encoded string\n\n @return An EOS_EResult that indicates whether the byte array was converted and copied into the OutBuffer.\n         EOS_Success if the encoding was successful and passed out in OutBuffer\n         EOS_InvalidParameters if you pass a null pointer on invalid length for any of the parameters\n         EOS_LimitExceeded - The OutBuffer is not large enough to receive the encoding. InOutBufferLength contains the required minimum length to perform the operation successfully."]
    pub fn EOS_ByteArray_ToString(
        ByteArray: *const u8,
        Length: u32,
        OutBuffer: *mut ::std::os::raw::c_char,
        InOutBufferLength: *mut u32,
    ) -> EOS_EResult;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_EpicAccountIdDetails {
    _unused: [u8; 0],
}
#[doc = " A handle to a user's Epic Account ID\n This ID is associated with a specific login associated with Epic Account Services\n\n @see EOS_Auth_Login"]
pub type EOS_EpicAccountId = *mut EOS_EpicAccountIdDetails;
unsafe extern "C" {
    #[doc = " Check whether or not the given Epic Account ID is considered valid\n NOTE: This will return true for any EOS_EpicAccountId created with EOS_EpicAccountId_FromString as there is no validation\n\n @param AccountId The Epic Account ID to check for validity\n @return EOS_TRUE if the EOS_EpicAccountId is valid, otherwise EOS_FALSE"]
    pub fn EOS_EpicAccountId_IsValid(AccountId: EOS_EpicAccountId) -> EOS_Bool;
}
unsafe extern "C" {
    #[doc = " Retrieve a null-terminated stringified Epic Account ID from an EOS_EpicAccountId. This is useful for replication of Epic Account IDs in multiplayer games.\n This string will be no larger than EOS_EPICACCOUNTID_MAX_LENGTH + 1 and will only contain UTF8-encoded printable characters as well as a null-terminator.\n\n @param AccountId The Epic Account ID for which to retrieve the stringified version.\n @param OutBuffer The buffer into which the character data should be written\n @param InOutBufferLength The size of the OutBuffer in characters.\n                          The input buffer should include enough space to be null-terminated.\n                          When the function returns, this parameter will be filled with the length of the string copied into OutBuffer including the null-termination character.\n\n @return An EOS_EResult that indicates whether the Epic Account ID string was copied into the OutBuffer.\n         EOS_Success - The OutBuffer was filled, and InOutBufferLength contains the number of characters copied into OutBuffer including the null-terminator.\n         EOS_InvalidParameters - Either OutBuffer or InOutBufferLength were passed as NULL parameters.\n         EOS_InvalidUser - The AccountId is invalid and cannot be stringified.\n         EOS_LimitExceeded - The OutBuffer is not large enough to receive the Epic Account ID string. InOutBufferLength contains the required minimum length to perform the operation successfully."]
    pub fn EOS_EpicAccountId_ToString(
        AccountId: EOS_EpicAccountId,
        OutBuffer: *mut ::std::os::raw::c_char,
        InOutBufferLength: *mut i32,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Retrieve an EOS_EpicAccountId from a raw string representing an Epic Account ID. The input string must be null-terminated.\n NOTE: There is no validation on the string format, this should only be used with values serialized from legitimate sources such as EOS_EpicAccountId_ToString\n\n @param AccountIdString The stringified account ID for which to retrieve the Epic Account ID\n @return The EOS_EpicAccountId that corresponds to the AccountIdString"]
    pub fn EOS_EpicAccountId_FromString(
        AccountIdString: *const ::std::os::raw::c_char,
    ) -> EOS_EpicAccountId;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_ProductUserIdDetails {
    _unused: [u8; 0],
}
#[doc = " A handle to a user's Product User ID (game services related ecosystem)\n This ID is associated with any of the external account providers (of which Epic Account Services is one)\n\n @see EOS_Connect_Login\n @see EOS_EExternalCredentialType"]
pub type EOS_ProductUserId = *mut EOS_ProductUserIdDetails;
unsafe extern "C" {
    #[doc = " Check whether or not the given account unique ID is considered valid\n NOTE: This will return true for any EOS_ProductUserId created with EOS_ProductUserId_FromString as there is no validation\n\n @param AccountId The Product User ID to check for validity\n @return EOS_TRUE if the EOS_ProductUserId is valid, otherwise EOS_FALSE"]
    pub fn EOS_ProductUserId_IsValid(AccountId: EOS_ProductUserId) -> EOS_Bool;
}
unsafe extern "C" {
    #[doc = " Retrieve a null-terminated stringified Product User ID from an EOS_ProductUserId. This is useful for replication of Product User IDs in multiplayer games.\n This string will be no larger than EOS_PRODUCTUSERID_MAX_LENGTH + 1 and will only contain UTF8-encoded printable characters as well as the null-terminator.\n\n @param AccountId The Product User ID for which to retrieve the stringified version.\n @param OutBuffer The buffer into which the character data should be written\n @param InOutBufferLength The size of the OutBuffer in characters.\n                          The input buffer should include enough space to be null-terminated.\n                          When the function returns, this parameter will be filled with the length of the string copied into OutBuffer including the null-termination character.\n\n @return An EOS_EResult that indicates whether the Product User ID string was copied into the OutBuffer.\n         EOS_Success - The OutBuffer was filled, and InOutBufferLength contains the number of characters copied into OutBuffer including the null-terminator.\n         EOS_InvalidParameters - Either OutBuffer or InOutBufferLength were passed as NULL parameters.\n         EOS_InvalidUser - The AccountId is invalid and cannot be stringified.\n         EOS_LimitExceeded - The OutBuffer is not large enough to receive the Product User ID string. InOutBufferLength contains the required minimum length to perform the operation successfully."]
    pub fn EOS_ProductUserId_ToString(
        AccountId: EOS_ProductUserId,
        OutBuffer: *mut ::std::os::raw::c_char,
        InOutBufferLength: *mut i32,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Retrieve an EOS_ProductUserId from a raw string representing an Epic Online Services Product User ID. The input string must be null-terminated.\n NOTE: There is no validation on the string format, this should only be used with values serialized from legitimate sources such as EOS_ProductUserId_ToString\n\n @param ProductUserIdString The stringified product user ID for which to retrieve the Epic Online Services Product User ID\n @return The EOS_ProductUserId that corresponds to the ProductUserIdString"]
    pub fn EOS_ProductUserId_FromString(
        ProductUserIdString: *const ::std::os::raw::c_char,
    ) -> EOS_ProductUserId;
}
#[doc = " Handle to an existing registered notification (0 is an invalid handle)"]
pub type EOS_NotificationId = u64;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_ContinuanceTokenDetails {
    _unused: [u8; 0],
}
#[doc = " A handle to a continuance token @see eos_connect.h"]
pub type EOS_ContinuanceToken = *mut EOS_ContinuanceTokenDetails;
unsafe extern "C" {
    #[doc = " Retrieve a null-terminated stringified continuance token from an EOS_ContinuanceToken.\n\n To get the required buffer size, call once with OutBuffer set to NULL, InOutBufferLength will contain the buffer size needed.\n Call again with valid params to get the stringified continuance token which will only contain UTF8-encoded printable characters as well as the null-terminator.\n\n @param ContinuanceToken The continuance token for which to retrieve the stringified version.\n @param OutBuffer The buffer into which the character data should be written\n @param InOutBufferLength The size of the OutBuffer in characters.\n                          The input buffer should include enough space to be null-terminated.\n                          When the function returns, this parameter will be filled with the length of the string copied into OutBuffer including the null-termination character.\n\n @return An EOS_EResult that indicates whether the continuance token string was copied into the OutBuffer.\n         EOS_Success - The OutBuffer was filled, and InOutBufferLength contains the number of characters copied into OutBuffer including the null-terminator.\n         EOS_InvalidParameters - Either OutBuffer or InOutBufferLength were passed as NULL parameters.\n         EOS_InvalidUser - The AccountId is invalid and cannot be stringified.\n         EOS_LimitExceeded - The OutBuffer is not large enough to receive the continuance token string. InOutBufferLength contains the required minimum length to perform the operation successfully."]
    pub fn EOS_ContinuanceToken_ToString(
        ContinuanceToken: EOS_ContinuanceToken,
        OutBuffer: *mut ::std::os::raw::c_char,
        InOutBufferLength: *mut i32,
    ) -> EOS_EResult;
}
#[doc = " Player has not logged in or chosen a local profile"]
pub const EOS_ELoginStatus_EOS_LS_NotLoggedIn: EOS_ELoginStatus = 0;
#[doc = " Player is using a local profile but is not logged in"]
pub const EOS_ELoginStatus_EOS_LS_UsingLocalProfile: EOS_ELoginStatus = 1;
#[doc = " Player has been validated by the platform specific authentication service"]
pub const EOS_ELoginStatus_EOS_LS_LoggedIn: EOS_ELoginStatus = 2;
pub const EOS_ELoginStatus___EOS_ELoginStatus_PAD_INT32__: EOS_ELoginStatus = 2147483647;
#[doc = " All possible states of a local user\n\n @see EOS_Auth_AddNotifyLoginStatusChanged\n @see EOS_Auth_GetLoginStatus\n @see EOS_Auth_Login\n @see EOS_Connect_AddNotifyLoginStatusChanged\n @see EOS_Connect_GetLoginStatus\n @see EOS_Connect_Login"]
pub type EOS_ELoginStatus = ::std::os::raw::c_int;
#[doc = " Boolean value (true/false)"]
pub const EOS_EAttributeType_EOS_AT_BOOLEAN: EOS_EAttributeType = 0;
#[doc = " 64 bit integers"]
pub const EOS_EAttributeType_EOS_AT_INT64: EOS_EAttributeType = 1;
#[doc = " Double/floating point precision"]
pub const EOS_EAttributeType_EOS_AT_DOUBLE: EOS_EAttributeType = 2;
#[doc = " UTF8 Strings"]
pub const EOS_EAttributeType_EOS_AT_STRING: EOS_EAttributeType = 3;
pub const EOS_EAttributeType___EOS_EAttributeType_PAD_INT32__: EOS_EAttributeType = 2147483647;
#[doc = " Supported types of data that can be stored with inside an attribute (used by sessions/lobbies/etc)\n\n @see EOS_LobbySearch_SetParameter\n @see EOS_SessionSearch_SetParameter"]
pub type EOS_EAttributeType = ::std::os::raw::c_int;
#[doc = " Supported types of data that can be stored with inside an attribute (used by sessions/lobbies/etc)\n\n @see EOS_LobbySearch_SetParameter\n @see EOS_SessionSearch_SetParameter"]
pub use self::EOS_EAttributeType as EOS_ESessionAttributeType;
#[doc = " Supported types of data that can be stored with inside an attribute (used by sessions/lobbies/etc)\n\n @see EOS_LobbySearch_SetParameter\n @see EOS_SessionSearch_SetParameter"]
pub use self::EOS_EAttributeType as EOS_ELobbyAttributeType;
#[doc = " Value must equal the one stored in the attribute"]
pub const EOS_EComparisonOp_EOS_CO_EQUAL: EOS_EComparisonOp = 0;
#[doc = " Value must not equal the one stored in the attribute"]
pub const EOS_EComparisonOp_EOS_CO_NOTEQUAL: EOS_EComparisonOp = 1;
#[doc = " Value must be strictly greater than the one stored in the attribute"]
pub const EOS_EComparisonOp_EOS_CO_GREATERTHAN: EOS_EComparisonOp = 2;
#[doc = " Value must be greater than or equal to the one stored in the attribute"]
pub const EOS_EComparisonOp_EOS_CO_GREATERTHANOREQUAL: EOS_EComparisonOp = 3;
#[doc = " Value must be strictly less than the one stored in the attribute"]
pub const EOS_EComparisonOp_EOS_CO_LESSTHAN: EOS_EComparisonOp = 4;
#[doc = " Value must be less than or equal to the one stored in the attribute"]
pub const EOS_EComparisonOp_EOS_CO_LESSTHANOREQUAL: EOS_EComparisonOp = 5;
#[doc = " Prefer values nearest the one specified ie. abs(SearchValue-SessionValue) closest to 0"]
pub const EOS_EComparisonOp_EOS_CO_DISTANCE: EOS_EComparisonOp = 6;
#[doc = " Value stored in the attribute may be any from a specified list"]
pub const EOS_EComparisonOp_EOS_CO_ANYOF: EOS_EComparisonOp = 7;
#[doc = " Value stored in the attribute may NOT be any from a specified list"]
pub const EOS_EComparisonOp_EOS_CO_NOTANYOF: EOS_EComparisonOp = 8;
#[doc = " This one value is a part of a collection. Supported in EOS_SessionSearch_SetParameter only."]
pub const EOS_EComparisonOp_EOS_CO_ONEOF: EOS_EComparisonOp = 9;
#[doc = " This one value is NOT part of a collection. Supported in EOS_SessionSearch_SetParameter only."]
pub const EOS_EComparisonOp_EOS_CO_NOTONEOF: EOS_EComparisonOp = 10;
#[doc = " This value is a CASE SENSITIVE substring of an attribute"]
pub const EOS_EComparisonOp_EOS_CO_CONTAINS: EOS_EComparisonOp = 11;
#[doc = " This value is a regex match of an attribute"]
pub const EOS_EComparisonOp_EOS_CO_REGEXMATCH: EOS_EComparisonOp = 12;
#[doc = " This array or string value's size must be equal to the one stored in the attribute"]
pub const EOS_EComparisonOp_EOS_CO_SIZE: EOS_EComparisonOp = 13;
pub const EOS_EComparisonOp___EOS_EComparisonOp_PAD_INT32__: EOS_EComparisonOp = 2147483647;
#[doc = " All comparison operators associated with attributes.\n\n @see EOS_LobbySearch_SetParameter\n @see EOS_SessionSearch_SetParameter"]
pub type EOS_EComparisonOp = ::std::os::raw::c_int;
#[doc = " All comparison operators associated with attributes.\n\n @see EOS_LobbySearch_SetParameter\n @see EOS_SessionSearch_SetParameter"]
pub use self::EOS_EComparisonOp as EOS_EOnlineComparisonOp;
#[doc = " External account is associated with Epic Games"]
pub const EOS_EExternalAccountType_EOS_EAT_EPIC: EOS_EExternalAccountType = 0;
#[doc = " External account is associated with Steam"]
pub const EOS_EExternalAccountType_EOS_EAT_STEAM: EOS_EExternalAccountType = 1;
#[doc = " External account is associated with PlayStation(TM)Network"]
pub const EOS_EExternalAccountType_EOS_EAT_PSN: EOS_EExternalAccountType = 2;
#[doc = " External account is associated with Xbox Live"]
pub const EOS_EExternalAccountType_EOS_EAT_XBL: EOS_EExternalAccountType = 3;
#[doc = " External account is associated with Discord"]
pub const EOS_EExternalAccountType_EOS_EAT_DISCORD: EOS_EExternalAccountType = 4;
#[doc = " External account is associated with GOG"]
pub const EOS_EExternalAccountType_EOS_EAT_GOG: EOS_EExternalAccountType = 5;
#[doc = " External account is associated with Nintendo\n\n With both EOS Connect and EOS UserInfo APIs, the associated account type is Nintendo Service Account ID.\n Local user authentication is possible using Nintendo Account ID, while the account type does not get exposed to the SDK in queries related to linked accounts information."]
pub const EOS_EExternalAccountType_EOS_EAT_NINTENDO: EOS_EExternalAccountType = 6;
#[doc = " External account is associated with Uplay"]
pub const EOS_EExternalAccountType_EOS_EAT_UPLAY: EOS_EExternalAccountType = 7;
#[doc = " External account is associated with an OpenID Provider"]
pub const EOS_EExternalAccountType_EOS_EAT_OPENID: EOS_EExternalAccountType = 8;
#[doc = " External account is associated with Apple"]
pub const EOS_EExternalAccountType_EOS_EAT_APPLE: EOS_EExternalAccountType = 9;
#[doc = " External account is associated with Google"]
pub const EOS_EExternalAccountType_EOS_EAT_GOOGLE: EOS_EExternalAccountType = 10;
#[doc = " External account is associated with Oculus"]
pub const EOS_EExternalAccountType_EOS_EAT_OCULUS: EOS_EExternalAccountType = 11;
#[doc = " External account is associated with itch.io"]
pub const EOS_EExternalAccountType_EOS_EAT_ITCHIO: EOS_EExternalAccountType = 12;
#[doc = " External account is associated with Amazon"]
pub const EOS_EExternalAccountType_EOS_EAT_AMAZON: EOS_EExternalAccountType = 13;
#[doc = " External account is associated with Viveport"]
pub const EOS_EExternalAccountType_EOS_EAT_VIVEPORT: EOS_EExternalAccountType = 14;
pub const EOS_EExternalAccountType___EOS_EExternalAccountType_PAD_INT32__:
    EOS_EExternalAccountType = 2147483647;
#[doc = " All supported external account providers\n\n @see EOS_Connect_QueryExternalAccountMappings"]
pub type EOS_EExternalAccountType = ::std::os::raw::c_int;
#[doc = " Epic Account Services Token\n\n Using ID Token is preferred, retrieved with EOS_Auth_CopyIdToken that returns EOS_Auth_IdToken::JsonWebToken.\n Using Auth Token is supported for backwards compatibility, retrieved with EOS_Auth_CopyUserAuthToken that returns EOS_Auth_Token::AccessToken.\n\n Supported with EOS_Connect_Login.\n\n @see EOS_Auth_CopyIdToken\n @see EOS_Auth_CopyUserAuthToken"]
pub const EOS_EExternalCredentialType_EOS_ECT_EPIC: EOS_EExternalCredentialType = 0;
#[doc = " Steam Encrypted App Ticket\n Note that EOS_ECT_STEAM_APP_TICKET is deprecated for use with EOS_Auth_Login. Use EOS_ECT_STEAM_SESSION_TICKET instead.\n\n Generated using the ISteamUser::RequestEncryptedAppTicket API of Steamworks SDK.\n For ticket generation parameters, use pDataToInclude(NULL) and cbDataToInclude(0).\n\n The retrieved App Ticket byte buffer needs to be converted into a hex-encoded UTF-8 string (e.g. \"FA87097A..\") before passing it to the EOS_Connect_Login API.\n EOS_ByteArray_ToString can be used for this conversion.\n\n Supported with EOS_Connect_Login.\n\n @see EOS_ECT_STEAM_SESSION_TICKET"]
pub const EOS_EExternalCredentialType_EOS_ECT_STEAM_APP_TICKET: EOS_EExternalCredentialType = 1;
#[doc = " PlayStation(TM)Network ID Token\n\n Retrieved from the PlayStation(R) SDK. Please see first-party documentation for additional information.\n\n Supported with EOS_Auth_Login, EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_PSN_ID_TOKEN: EOS_EExternalCredentialType = 2;
#[doc = " Xbox Live XSTS Token\n\n Retrieved from the GDK and XDK. Please see first-party documentation for additional information.\n\n Supported with EOS_Auth_Login, EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_XBL_XSTS_TOKEN: EOS_EExternalCredentialType = 3;
#[doc = " Discord Access Token\n\n Retrieved using the ApplicationManager::GetOAuth2Token API of Discord SDK.\n\n Supported with EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_DISCORD_ACCESS_TOKEN: EOS_EExternalCredentialType = 4;
#[doc = " GOG Galaxy Encrypted App Ticket\n\n Generated using the IUser::RequestEncryptedAppTicket API of GOG Galaxy SDK.\n For ticket generation parameters, use data(NULL) and dataSize(0).\n\n The retrieved App Ticket byte buffer needs to be converted into a hex-encoded UTF-8 string (e.g. \"FA87097A..\") before passing it to the EOS_Connect_Login API.\n For C/C++ API integration, use the EOS_ByteArray_ToString API for the conversion.\n For C# integration, you can use <see cref=\"Helper.ToHexString\" /> for the conversion.\n\n Supported with EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_GOG_SESSION_TICKET: EOS_EExternalCredentialType = 5;
#[doc = " Nintendo Account ID Token\n\n Identifies a Nintendo user account and is acquired through web flow authentication where the local user logs in using their email address/sign-in ID and password.\n This is the common Nintendo account that users login with outside the Nintendo Switch device.\n\n Supported with EOS_Auth_Login, EOS_Connect_Login.\n\n Note: EOS_Auth_Login usage is restricted to Epic first party products only, attempting to use it will result in authentication failures."]
pub const EOS_EExternalCredentialType_EOS_ECT_NINTENDO_ID_TOKEN: EOS_EExternalCredentialType = 6;
#[doc = " Nintendo Service Account ID Token (NSA ID)\n\n The NSA ID identifies uniquely the local Nintendo Switch device. The authentication token is acquired locally without explicit user credentials.\n As such, it is the primary authentication method for seamless login on Nintendo Switch.\n\n The NSA ID is not exposed directly to the user and does not provide any means for login outside the local device.\n Because of this, Nintendo Switch users will need to link their Nintendo Account or another external user account\n to their Product User ID in order to share their game progression across other platforms. Otherwise, the user will\n not be able to login to their existing Product User ID on another platform due to missing login credentials to use.\n It is recommended that the game explicitly communicates this restriction to the user so that they will know to add\n the first linked external account on the Nintendo Switch device and then proceed with login on another platform.\n\n In addition to sharing cross-platform game progression, linking the Nintendo Account or another external account\n will allow preserving the game progression permanently. Otherwise, the game progression will be tied only to the\n local device. In case the user loses access to their local device, they will not be able to recover the game\n progression if it is only associated with this account type.\n\n Supported with EOS_Auth_Login, EOS_Connect_Login.\n\n Note: EOS_Auth_Login usage is restricted to Epic first party products only, attempting to use it will result in authentication failures."]
pub const EOS_EExternalCredentialType_EOS_ECT_NINTENDO_NSA_ID_TOKEN: EOS_EExternalCredentialType =
    7;
#[doc = " Uplay Access Token\n\n Supported with EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_UPLAY_ACCESS_TOKEN: EOS_EExternalCredentialType = 8;
#[doc = " OpenID Provider Access Token\n\n Supported with EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_OPENID_ACCESS_TOKEN: EOS_EExternalCredentialType = 9;
#[doc = " Device ID access token that identifies the current locally logged in user profile on the local device.\n The local user profile here refers to the operating system user login, for example the user's Windows Account\n or on a mobile device the default active user profile.\n\n This credential type is used to automatically login the local user using the EOS Connect Device ID feature.\n\n The intended use of the Device ID feature is to allow automatically logging in the user on a mobile device\n and to allow playing the game without requiring the user to necessarily login using a real user account at all.\n This makes a seamless first-time experience possible and allows linking the local device with a real external\n user account at a later time, sharing the same EOS_ProductUserId that is being used with the Device ID feature.\n\n Supported with EOS_Connect_Login.\n\n @see EOS_Connect_CreateDeviceId"]
pub const EOS_EExternalCredentialType_EOS_ECT_DEVICEID_ACCESS_TOKEN: EOS_EExternalCredentialType =
    10;
#[doc = " Apple ID Token\n\n Supported with EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_APPLE_ID_TOKEN: EOS_EExternalCredentialType = 11;
#[doc = " Google ID Token\n\n Supported with EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_GOOGLE_ID_TOKEN: EOS_EExternalCredentialType = 12;
#[doc = " Oculus User ID and Nonce\n\n Call ovr_User_GetUserProof(), or Platform.User.GetUserProof() if you are using Unity, to retrieve the nonce.\n Then pass the local User ID and the Nonce as a \"{UserID}|{Nonce}\" formatted string for the EOS_Connect_Login Token parameter.\n\n Note that in order to successfully retrieve a valid non-zero id for the local user using ovr_User_GetUser(),\n your Oculus App needs to be configured in the Oculus Developer Dashboard to have the User ID feature enabled.\n\n Supported with EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_OCULUS_USERID_NONCE: EOS_EExternalCredentialType = 13;
#[doc = " itch.io JWT Access Token\n\n Use the itch.io app manifest to receive a JWT access token for the local user via the ITCHIO_API_KEY process environment variable.\n The itch.io access token is valid for 7 days after which the game needs to be restarted by the user as otherwise EOS Connect\n authentication session can no longer be refreshed.\n\n Supported with EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_ITCHIO_JWT: EOS_EExternalCredentialType = 14;
#[doc = " itch.io Key Access Token\n\n This access token type is retrieved through the OAuth 2.0 authentication flow for the itch.io application.\n\n Supported with EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_ITCHIO_KEY: EOS_EExternalCredentialType = 15;
#[doc = " Epic Games ID Token\n\n Acquired using EOS_Auth_CopyIdToken that returns EOS_Auth_IdToken::JsonWebToken.\n\n Supported with EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_EPIC_ID_TOKEN: EOS_EExternalCredentialType = 16;
#[doc = " Amazon Access Token\n\n Supported with EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_AMAZON_ACCESS_TOKEN: EOS_EExternalCredentialType = 17;
#[doc = " Steam Auth Session Ticket\n\n Generated using the ISteamUser::GetAuthTicketForWebApi API of Steamworks SDK.\n\n @attention\n The pchIdentity input parameter of GetAuthTicketForWebApi API must be set to a valid non-empty string value.\n The string value used by the game client must match identically to the backend-configured value in EOS Dev Portal.\n The recommended value to use is \"epiconlineservices\" in lowercase, matching the default value for new Steam identity provider credentials in EOS Dev Portal.\n This identifier is important for security reasons to prevent session hijacking. Applications must use a dedicated unique identity identifier for Session Tickets passed to the EOS SDK APIs.\n Session Tickets using the EOS-assigned identifier must not be used with anything else than the EOS SDK APIs. You must use a different identifier when generating Session Tickets to authenticate with other parties.\n\n @warning\n To update an already live game to use the new GetAuthTicketForWebApi API instead of the deprecated GetAuthSessionTicket API, follow these steps in this order to prevent breaking the live game for players:\n 1. Update your game client code to use the new ISteamUser::GetAuthTicketForWebApi API.\n 2. Publish the new game client update to end-users.\n 3. Update the existing Steam identity provider credentials entry in EOS Dev Portal to use the same identity string identifier as the game client.\n\n @example\n SteamUser()->GetAuthTicketForWebApi(\"epiconlineservices\");\n\n The retrieved Auth Session Ticket byte buffer needs to be converted into a hex-encoded UTF-8 string (e.g. \"FA87097A..\") before passing it to the EOS_Auth_Login or EOS_Connect_Login APIs.\n EOS_ByteArray_ToString can be used for this conversion.\n\n Supported with EOS_Auth_Login, EOS_Connect_Login.\n\n @version 1.15.1+"]
pub const EOS_EExternalCredentialType_EOS_ECT_STEAM_SESSION_TICKET: EOS_EExternalCredentialType =
    18;
#[doc = " VIVEPORT User Session Token\n\n Supported with EOS_Connect_Login."]
pub const EOS_EExternalCredentialType_EOS_ECT_VIVEPORT_USER_TOKEN: EOS_EExternalCredentialType = 19;
pub const EOS_EExternalCredentialType___EOS_EExternalCredentialType_PAD_INT32__:
    EOS_EExternalCredentialType = 2147483647;
#[doc = " List of the supported identity providers to authenticate a user.\n\n The type of authentication token is specific to each provider.\n Tokens in string format should be passed as-is to the function.\n Tokens retrieved as raw byte arrays should be converted into a hex-encoded UTF-8 string (e.g. \"FA87097A..\") before being passed to the function.\n EOS_ByteArray_ToString can be used for this conversion.\n\n @see EOS_Auth_Login\n @see EOS_Connect_Login"]
pub type EOS_EExternalCredentialType = ::std::os::raw::c_int;
#[doc = " This type is used to distinguish between different supported integrated platforms.\n Integrated platforms which are common across multiple host platforms will be defined here."]
pub type EOS_IntegratedPlatformType = *const ::std::os::raw::c_char;
#[doc = " This type is used to distinguish between different online platforms."]
pub type EOS_OnlinePlatformType = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_IntegratedPlatformOptionsContainerHandle {
    _unused: [u8; 0],
}
pub type EOS_HIntegratedPlatformOptionsContainer =
    *mut EOS_IntegratedPlatformOptionsContainerHandle;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_IntegratedPlatformHandle {
    _unused: [u8; 0],
}
pub type EOS_HIntegratedPlatform = *mut EOS_IntegratedPlatformHandle;
#[doc = " The integrated platform library should be disabled. This is equivalent to providing no flags."]
pub const EOS_EIntegratedPlatformManagementFlags_EOS_IPMF_Disabled:
    EOS_EIntegratedPlatformManagementFlags = 1;
#[doc = " The integrated platform library is managed by the calling application. EOS SDK should only hook into an existing instance of the integrated platform library."]
pub const EOS_EIntegratedPlatformManagementFlags_EOS_IPMF_LibraryManagedByApplication:
    EOS_EIntegratedPlatformManagementFlags = 2;
#[doc = " EOS SDK should fully manage the integrated platform library. It will do this by performing the load, initialize, tick and unload operations as necessary."]
pub const EOS_EIntegratedPlatformManagementFlags_EOS_IPMF_LibraryManagedBySDK:
    EOS_EIntegratedPlatformManagementFlags = 4;
#[doc = " The EOS SDK should not mirror the EOS rich presence with the Integrated Platform.\n The default behavior is for EOS SDK to share local presence with the Integrated Platform."]
pub const EOS_EIntegratedPlatformManagementFlags_EOS_IPMF_DisablePresenceMirroring:
    EOS_EIntegratedPlatformManagementFlags = 8;
#[doc = " EOS SDK should not perform any sessions management through the Integrated Platform.\n The default behavior is for EOS SDK to perform sessions management through the Integrated Platform.\n Sessions management includes:\n    - sharing the lobby and session presence enabled games with the Integrated Platform.\n    - handling Social Overlay join button events which cannot be handled by normal processing of Epic Services.\n    - handling Social Overlay invite button events which cannot be handled by normal processing of Epic Services.\n    - handling startup requests from the Integrated Platform to immediately join a game due to in invite while offline.\n\n @see EOS_Lobby_AddNotifySendLobbyNativeInviteRequested"]
pub const EOS_EIntegratedPlatformManagementFlags_EOS_IPMF_DisableSDKManagedSessions:
    EOS_EIntegratedPlatformManagementFlags = 16;
#[doc = " Some features within the EOS SDK may wish to know a preference of Integrated Platform versus EOS.\n When determining an absolute platform preference those with this flag will be skipped.\n The IntegratedPlatforms list is provided via the EOS_Platform_Options during EOS_Platform_Create.\n\n The primary usage of the EOS_IPMF_PreferEOSIdentity and EOS_IPMF_PreferIntegratedIdentity flags is with game invites\n from the Social Overlay.\n\n For game invites from the Social Overlay the EOS SDK will follow these rules:\n     - If the only account ID we can determine for the target player is an EAS ID then the EOS system will be used.\n     - If the only account ID we can determine for the target player is an integrated platform ID then the integrated platform system will be used.\n     - If both are available then the EOS SDK will operate in 1 of 3 modes:\n         - no preference identified: use both the EOS and integrated platform systems.\n         - PreferEOS: Use EOS if the target is an EAS friend and is either online in EAS or not online for the integrated platform.\n         - PreferIntegrated: Use integrated platform if the target is an integrated platform friend and is either online in the integrated platform or not online for EAS.\n     - If the integrated platform fails to send then try EAS if was not already used."]
pub const EOS_EIntegratedPlatformManagementFlags_EOS_IPMF_PreferEOSIdentity:
    EOS_EIntegratedPlatformManagementFlags = 32;
#[doc = " Some features within the EOS SDK may wish to know a preference of Integrated Platform versus EOS.\n For further explanation see EOS_IPMF_PreferEOSIdentity.\n\n @see EOS_IPMF_PreferEOSIdentity"]
pub const EOS_EIntegratedPlatformManagementFlags_EOS_IPMF_PreferIntegratedIdentity:
    EOS_EIntegratedPlatformManagementFlags = 64;
#[doc = " By default the EOS SDK will attempt to detect the login/logout events of local users and update local states accordingly. Setting this flag will disable this functionality,\n relying on the application to process login/logout events and notify EOS SDK. It is not possible for the EOS SDK to do this on all platforms, making this flag not always\n optional.\n\n This flag must be set to use the manual platform user login/logout functions, even on platforms where it is not possible for the EOS SDK to detect login/logout events,\n making this a required flag for correct Integrated Platform behavior on those platforms."]
pub const EOS_EIntegratedPlatformManagementFlags_EOS_IPMF_ApplicationManagedIdentityLogin:
    EOS_EIntegratedPlatformManagementFlags = 128;
pub const EOS_EIntegratedPlatformManagementFlags___EOS_EIntegratedPlatformManagementFlags_PAD_INT32__ : EOS_EIntegratedPlatformManagementFlags = 2147483647 ;
#[doc = " These flags are used to determine how a specific Integrated Platform will be managed."]
pub type EOS_EIntegratedPlatformManagementFlags = ::std::os::raw::c_int;
#[doc = " Initialization options to use with EOS_Platform_Options for integrated platforms.\n\n @see EOS_Platform_Options"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_IntegratedPlatform_Options {
    #[doc = " API Version: Set this to EOS_INTEGRATEDPLATFORM_OPTIONS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The type to be initialized."]
    pub Type: EOS_IntegratedPlatformType,
    #[doc = " Identifies how to initialize the IntegratedPlatform."]
    pub Flags: EOS_EIntegratedPlatformManagementFlags,
    #[doc = " Options specific to this integrated platform type.\n This parameter is either required or set to NULL based on the platform type.\n\n @see EOS_IntegratedPlatform_Steam_Options"]
    pub InitOptions: *const ::std::os::raw::c_void,
}
impl Default for _tagEOS_IntegratedPlatform_Options {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Initialization options to use with EOS_Platform_Options for integrated platforms.\n\n @see EOS_Platform_Options"]
pub type EOS_IntegratedPlatform_Options = _tagEOS_IntegratedPlatform_Options;
#[doc = " Required initialization options to use with EOS_IntegratedPlatform_Options for Steam.\n Steamworks API needs to be at least v1.13\n Steam Sanitization requires at least v1.45\n Starting Steamworks v1.58a onwards, SteamApiInterfaceVersionsArray is required when EOS_IPMF_LibraryManagedBySDK is set.\n\n @see EOS_IntegratedPlatform_Options"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_IntegratedPlatform_Steam_Options {
    #[doc = " API Version: Set this to EOS_INTEGRATEDPLATFORM_STEAM_OPTIONS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Usage of this parameter is dependent on the specified EOS_EIntegratedPlatformManagementFlags.\n\n Optional with EOS_IPMF_LibraryManagedByApplication.\n Set to override the loaded library basename, or use NULL to assume the default basename by platform:\n\n - Linux: libsteam_api.so,\n - macOS: libsteam_api.dylib,\n - Windows 32-bit: steam_api.dll,\n - Windows 64-bit: steam_api64.dll.\n\n Required with EOS_IPMF_LibraryManagedBySDK.\n Set to a fully qualified file path to the Steamworks SDK runtime library on disk."]
    pub OverrideLibraryPath: *const ::std::os::raw::c_char,
    #[doc = " Used to specify the major version of the Steam SDK your game is compiled against, e.g.:\n\n Options.SteamMajorVersion = 1;"]
    pub SteamMajorVersion: u32,
    #[doc = " Used to specify the minor version of the Steam SDK your game is compiled against, e.g.:\n\n Options.SteamMinorVersion = 58;"]
    pub SteamMinorVersion: u32,
    #[doc = " A pointer to a series of null terminated steam interface version names supported by the current steam dll.\n\n This field is only required when the Integrated Platform Management flags has EOS_IPMF_LibraryManagedBySDK set. Else must be set to NULL.\n\n Starting v1.58 the Steam initialization API requires this new field during initialization for version check validations.\n\n Note: The pointer must be valid until after the execution of the EOS_IntegratedPlatformOptionsContainer_Add method.\n\n This value must be constructed from the corresponding steam_api.h header of the steam dll version that is shipped with the game.\n In the steam_api.h header, look for SteamAPI_InitEx() and copy the value of pszInternalCheckInterfaceVersions as it is.\n\n For example in v1.58a its this:\n \tconst char SteamInterfaceVersionsArray[] =\n\t\tSTEAMUTILS_INTERFACE_VERSION \"\\0\"\n\t\tSTEAMNETWORKINGUTILS_INTERFACE_VERSION \"\\0\"\n\t\t...\n\t\tSTEAMUSER_INTERFACE_VERSION \"\\0\"\n\t\tSTEAMVIDEO_INTERFACE_VERSION \"\\0\"\n      \"\\0\";"]
    pub SteamApiInterfaceVersionsArray: *const ::std::os::raw::c_char,
    #[doc = " Size of the SteamApiInterfaceVersionsArray in bytes. Cannot exceed EOS_INTEGRATEDPLATFORM_STEAM_MAX_STEAMAPIINTERFACEVERSIONSARRAY_SIZE.\n\n This field is only required when the Integrated Platform Management flags has EOS_IPMF_LibraryManagedBySDK set. Else must be set to 0.\n\n Note: Since SteamInterfaceVersionsArray contains a series of null terminated strings, please ensure that strlen() is NOT used to calculate this field.\n For instance, you can use the following to get the array length:\n  const char SteamInterfaceVersionsArray[] =\n      STEAMUTILS_INTERFACE_VERSION \"\\0\"\n\t\tSTEAMNETWORKINGUTILS_INTERFACE_VERSION \"\\0\"\n      ...\n\t\tSTEAMVIDEO_INTERFACE_VERSION \"\\0\"\n      \"\\0\";\n\n  uint32_t SteamApiInterfaceVersionsArrayBytes = sizeof(SteamApiInterfaceVersionsArray) // Note: sizeof() takes into account the last \"\\0\" of the string literal;"]
    pub SteamApiInterfaceVersionsArrayBytes: u32,
}
impl Default for _tagEOS_IntegratedPlatform_Steam_Options {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Required initialization options to use with EOS_IntegratedPlatform_Options for Steam.\n Steamworks API needs to be at least v1.13\n Steam Sanitization requires at least v1.45\n Starting Steamworks v1.58a onwards, SteamApiInterfaceVersionsArray is required when EOS_IPMF_LibraryManagedBySDK is set.\n\n @see EOS_IntegratedPlatform_Options"]
pub type EOS_IntegratedPlatform_Steam_Options = _tagEOS_IntegratedPlatform_Steam_Options;
#[doc = " Data for the EOS_IntegratedPlatform_CreateIntegratedPlatformOptionsContainer function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_IntegratedPlatform_CreateIntegratedPlatformOptionsContainerOptions {
    #[doc = " API Version: Set this to EOS_INTEGRATEDPLATFORM_CREATEINTEGRATEDPLATFORMOPTIONSCONTAINER_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Data for the EOS_IntegratedPlatform_CreateIntegratedPlatformOptionsContainer function."]
pub type EOS_IntegratedPlatform_CreateIntegratedPlatformOptionsContainerOptions =
    _tagEOS_IntegratedPlatform_CreateIntegratedPlatformOptionsContainerOptions;
unsafe extern "C" {
    #[doc = " Creates an integrated platform options container handle. This handle can used to add multiple options to your container which will then be applied with EOS_Platform_Create.\n The resulting handle must be released by calling EOS_IntegratedPlatformOptionsContainer_Release once it has been passed to EOS_Platform_Create.\n\n @param Options structure containing operation input parameters.\n @param OutIntegratedPlatformOptionsContainerHandle Pointer to an integrated platform options container handle to be set if successful.\n @return Success if we successfully created the integrated platform options container handle pointed at in OutIntegratedPlatformOptionsContainerHandle, or an error result if the input data was invalid.\n\n @see EOS_IntegratedPlatformOptionsContainer_Release\n @see EOS_Platform_Create\n @see EOS_IntegratedPlatformOptionsContainer_Add"]
    pub fn EOS_IntegratedPlatform_CreateIntegratedPlatformOptionsContainer(
        Options: *const EOS_IntegratedPlatform_CreateIntegratedPlatformOptionsContainerOptions,
        OutIntegratedPlatformOptionsContainerHandle: *mut EOS_HIntegratedPlatformOptionsContainer,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_HIntegratedPlatformOptionsContainer handle. This must be called on Handles retrieved from EOS_IntegratedPlatform_CreateIntegratedPlatformOptionsContainer.\n This can be safely called on a NULL integrated platform options container handle.\n\n @param IntegratedPlatformOptionsContainerHandle The integrated platform options container handle to release.\n\n @see EOS_IntegratedPlatform_CreateIntegratedPlatformOptionsContainer"]
    pub fn EOS_IntegratedPlatformOptionsContainer_Release(
        IntegratedPlatformOptionsContainerHandle: EOS_HIntegratedPlatformOptionsContainer,
    );
}
#[doc = " Data for the EOS_IntegratedPlatformOptionsContainer_Add function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_IntegratedPlatformOptionsContainer_AddOptions {
    #[doc = " API Version: Set this to EOS_INTEGRATEDPLATFORMOPTIONSCONTAINER_ADD_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The integrated platform options to add."]
    pub Options: *const EOS_IntegratedPlatform_Options,
}
impl Default for _tagEOS_IntegratedPlatformOptionsContainer_AddOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_IntegratedPlatformOptionsContainer_Add function."]
pub type EOS_IntegratedPlatformOptionsContainer_AddOptions =
    _tagEOS_IntegratedPlatformOptionsContainer_AddOptions;
#[doc = " Input parameters for the EOS_IntegratedPlatform_SetUserLoginStatus function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_IntegratedPlatform_SetUserLoginStatusOptions {
    #[doc = " API Version: Set this to EOS_INTEGRATEDPLATFORM_SETUSERLOGINSTATUS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The integrated platform this user belongs to."]
    pub PlatformType: EOS_IntegratedPlatformType,
    #[doc = " String version of the integrated platform-dependent user id."]
    pub LocalPlatformUserId: *const ::std::os::raw::c_char,
    #[doc = " The login status of the provided user"]
    pub CurrentLoginStatus: EOS_ELoginStatus,
}
impl Default for _tagEOS_IntegratedPlatform_SetUserLoginStatusOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_IntegratedPlatform_SetUserLoginStatus function."]
pub type EOS_IntegratedPlatform_SetUserLoginStatusOptions =
    _tagEOS_IntegratedPlatform_SetUserLoginStatusOptions;
#[doc = " Input parameters for the EOS_IntegratedPlatform_AddNotifyUserLoginStatusChanged function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_IntegratedPlatform_AddNotifyUserLoginStatusChangedOptions {
    #[doc = " API Version: Set this to EOS_INTEGRATEDPLATFORM_ADDNOTIFYUSERLOGINSTATUSCHANGED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_IntegratedPlatform_AddNotifyUserLoginStatusChanged function."]
pub type EOS_IntegratedPlatform_AddNotifyUserLoginStatusChangedOptions =
    _tagEOS_IntegratedPlatform_AddNotifyUserLoginStatusChangedOptions;
#[doc = " Data about which integrated platform and which user that had a login status change and what the login status changed to."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_IntegratedPlatform_UserLoginStatusChangedCallbackInfo {
    #[doc = " Context that was passed into EOS_IntegratedPlatform_AddNotifyUserLoginStatusChanged"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The integrated platform of the local platform user."]
    pub PlatformType: EOS_IntegratedPlatformType,
    #[doc = " String version of platform's user id."]
    pub LocalPlatformUserId: *const ::std::os::raw::c_char,
    #[doc = " The Epic Games Account ID associated with this Integrated Platform's User (if there is one)"]
    pub AccountId: EOS_EpicAccountId,
    #[doc = " The EOS Product User ID associated with this Integrated Platform's User (if there is one)"]
    pub ProductUserId: EOS_ProductUserId,
    #[doc = " The login status prior to this change."]
    pub PreviousLoginStatus: EOS_ELoginStatus,
    #[doc = " The login status at the time of this notification."]
    pub CurrentLoginStatus: EOS_ELoginStatus,
}
impl Default for _tagEOS_IntegratedPlatform_UserLoginStatusChangedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data about which integrated platform and which user that had a login status change and what the login status changed to."]
pub type EOS_IntegratedPlatform_UserLoginStatusChangedCallbackInfo =
    _tagEOS_IntegratedPlatform_UserLoginStatusChangedCallbackInfo;
#[doc = " The callback function for when a local integrated platform user's login status has changed."]
pub type EOS_IntegratedPlatform_OnUserLoginStatusChangedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_IntegratedPlatform_UserLoginStatusChangedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_IntegratedPlatform_SetUserPreLogoutCallback function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_IntegratedPlatform_SetUserPreLogoutCallbackOptions {
    #[doc = " API Version: Set this to EOS_INTEGRATEDPLATFORM_SETUSERPRELOGOUTCALLBACK_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_IntegratedPlatform_SetUserPreLogoutCallback function."]
pub type EOS_IntegratedPlatform_SetUserPreLogoutCallbackOptions =
    _tagEOS_IntegratedPlatform_SetUserPreLogoutCallbackOptions;
#[doc = " The application accepts the user being logged-out. all cached data for the user will be cleared immediately and any pending\n actions canceled."]
pub const EOS_EIntegratedPlatformPreLogoutAction_EOS_IPLA_ProcessLogoutImmediately:
    EOS_EIntegratedPlatformPreLogoutAction = 0;
#[doc = " Instead of the user being logged-out, the SDK will wait for a call to EOS_IntegratedPlatform_FinalizeDeferredUserLogout with the\n expected login state of the user. If the expected state matches the current state, the user will continue to be logged-in or they\n will be logged-out, depending on the value of the expected state. This lets the application choose to ask the user if they meant\n to logout if it wishes, possibly preventing losing any unsaved changes, such as game progress, leaving a multiplayer match, or\n similar.\n\n @see EOS_IntegratedPlatform_FinalizeDeferredUserLogout"]
pub const EOS_EIntegratedPlatformPreLogoutAction_EOS_IPLA_DeferLogout:
    EOS_EIntegratedPlatformPreLogoutAction = 1;
pub const EOS_EIntegratedPlatformPreLogoutAction___EOS_EIntegratedPlatformPreLogoutAction_PAD_INT32__ : EOS_EIntegratedPlatformPreLogoutAction = 2147483647 ;
#[doc = " The return value for the EOS_IntegratedPlatform_OnUserPreLogoutCallback callback function. This signifies what the application wants to do for\n the provided user of the integrated platform."]
pub type EOS_EIntegratedPlatformPreLogoutAction = ::std::os::raw::c_int;
#[doc = " Data passed to the application in the EOS_IntegratedPlatform_OnUserPreLogoutCallback function. This contains which user and associated\n Integrated Platform that was detected as logged-out."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_IntegratedPlatform_UserPreLogoutCallbackInfo {
    #[doc = " Context that was passed into EOS_IntegratedPlatform_SetUserPreLogoutCallback"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The integrated platform the local user logged-out of."]
    pub PlatformType: EOS_IntegratedPlatformType,
    #[doc = " String version of platform-dependent user id."]
    pub LocalPlatformUserId: *const ::std::os::raw::c_char,
    #[doc = " The Epic Games Account ID associated with this Integrated Platform's User (if there is one)"]
    pub AccountId: EOS_EpicAccountId,
    #[doc = " The EOS Product User ID associated with this Integrated Platform's User (if there is one)"]
    pub ProductUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_IntegratedPlatform_UserPreLogoutCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data passed to the application in the EOS_IntegratedPlatform_OnUserPreLogoutCallback function. This contains which user and associated\n Integrated Platform that was detected as logged-out."]
pub type EOS_IntegratedPlatform_UserPreLogoutCallbackInfo =
    _tagEOS_IntegratedPlatform_UserPreLogoutCallbackInfo;
#[doc = " The callback function for when an integrated platform user is detected to have logged-out."]
pub type EOS_IntegratedPlatform_OnUserPreLogoutCallback = ::std::option::Option<
    unsafe extern "C" fn(
        Data: *const EOS_IntegratedPlatform_UserPreLogoutCallbackInfo,
    ) -> EOS_EIntegratedPlatformPreLogoutAction,
>;
#[doc = " Input parameters for the EOS_IntegratedPlatform_ClearUserPreLogoutCallback function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_IntegratedPlatform_ClearUserPreLogoutCallbackOptions {
    #[doc = " API Version: Set this to EOS_INTEGRATEDPLATFORM_CLEARUSERPRELOGOUTCALLBACK_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_IntegratedPlatform_ClearUserPreLogoutCallback function."]
pub type EOS_IntegratedPlatform_ClearUserPreLogoutCallbackOptions =
    _tagEOS_IntegratedPlatform_ClearUserPreLogoutCallbackOptions;
#[doc = " Input parameters for the EOS_IntegratedPlatform_FinalizeDeferredUserLogout function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_IntegratedPlatform_FinalizeDeferredUserLogoutOptions {
    #[doc = " API Version: Set this to EOS_INTEGRATEDPLATFORM_FINALIZEDEFERREDUSERLOGOUT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The integrated platform this user belongs to."]
    pub PlatformType: EOS_IntegratedPlatformType,
    #[doc = " String version of the integrated platform-dependent user id."]
    pub LocalPlatformUserId: *const ::std::os::raw::c_char,
    #[doc = " The logged-in state the user is expected to be (EOS_LS_LoggedIn or EOS_LS_NotLoggedIn). If the provided\n state does not match internal EOS state, this function will return in failure. If the state is incorrect,\n the application should wait and attempt to call the function again next tick, after both updating its own\n state from the system and calling EOS_Platform_Tick, allowing the SDK to update its state from the system\n as well."]
    pub ExpectedLoginStatus: EOS_ELoginStatus,
}
impl Default for _tagEOS_IntegratedPlatform_FinalizeDeferredUserLogoutOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_IntegratedPlatform_FinalizeDeferredUserLogout function."]
pub type EOS_IntegratedPlatform_FinalizeDeferredUserLogoutOptions =
    _tagEOS_IntegratedPlatform_FinalizeDeferredUserLogoutOptions;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_PlatformHandle {
    _unused: [u8; 0],
}
pub type EOS_HPlatform = *mut EOS_PlatformHandle;
#[doc = " Client credentials."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Platform_ClientCredentials {
    #[doc = " Client ID of the service permissions entry. Set to NULL if no service permissions are used. Max length is EOS_PLATFORM_CLIENTCREDENTIALS_CLIENTID_MAX_LENGTH."]
    pub ClientId: *const ::std::os::raw::c_char,
    #[doc = " Client secret for accessing the set of permissions. Set to NULL if no service permissions are used. Max length is EOS_PLATFORM_CLIENTCREDENTIALS_CLIENTSECRET_MAX_LENGTH."]
    pub ClientSecret: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Platform_ClientCredentials {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Client credentials."]
pub type EOS_Platform_ClientCredentials = _tagEOS_Platform_ClientCredentials;
#[doc = " Upon entering a background application status, all logged in users leave any RTC rooms. All subsequent attempts to join any RTC rooms will be rejected.\n Upon returning to a foreground application status, all subsequent attempts to join any RTC rooms will be allowed."]
pub const EOS_ERTCBackgroundMode_EOS_RTCBM_LeaveRooms: EOS_ERTCBackgroundMode = 0;
#[doc = " Application status has no effect on RTC rooms. Audio is captured from input devices and is played to output devices.\n Games should obtain consent from users and otherwise make users aware this is occurring."]
pub const EOS_ERTCBackgroundMode_EOS_RTCBM_KeepRoomsAlive: EOS_ERTCBackgroundMode = 1;
pub const EOS_ERTCBackgroundMode___EOS_ERTCBackgroundMode_PAD_INT32__: EOS_ERTCBackgroundMode =
    2147483647;
#[doc = " All background modes supported by the RTC components"]
pub type EOS_ERTCBackgroundMode = ::std::os::raw::c_int;
#[doc = " Platform RTC options."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Platform_RTCOptions {
    #[doc = " API Version: Set this to EOS_PLATFORM_RTCOPTIONS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " This field is for platform specific initialization if any.\n\n If provided then the structure will be located in \"PLATFORM_NAME\"/eos_\"PLATFORM_NAME\".h.\n The structure will be named EOS_\"PLATFORM_NAME\"_RTCOptions."]
    pub PlatformSpecificOptions: *mut ::std::os::raw::c_void,
    #[doc = " Configures RTC behavior upon entering to any background application statuses"]
    pub BackgroundMode: EOS_ERTCBackgroundMode,
    #[doc = " Reserved field, should be nullptr by default"]
    pub Reserved: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Platform_RTCOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Platform RTC options."]
pub type EOS_Platform_RTCOptions = _tagEOS_Platform_RTCOptions;
#[doc = " Platform options for EOS_Platform_Create."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Platform_Options {
    #[doc = " API Version: Set this to EOS_PLATFORM_OPTIONS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " A reserved field that should always be nulled."]
    pub Reserved: *mut ::std::os::raw::c_void,
    #[doc = " The product ID for the running application, found on the dev portal. Max length is EOS_PLATFORM_OPTIONS_PRODUCTID_MAX_LENGTH."]
    pub ProductId: *const ::std::os::raw::c_char,
    #[doc = " The sandbox ID for the running application, found on the dev portal. Max length is EOS_PLATFORM_OPTIONS_SANDBOXID_MAX_LENGTH."]
    pub SandboxId: *const ::std::os::raw::c_char,
    #[doc = " Set of service permissions associated with the running application"]
    pub ClientCredentials: EOS_Platform_ClientCredentials,
    #[doc = " Set this to EOS_FALSE if the application is running as a client with a local user, otherwise set to EOS_TRUE (e.g. for a dedicated game server)"]
    pub bIsServer: EOS_Bool,
    #[doc = " Used by Player Data Storage and Title Storage. Must be null initialized if unused. 256-bit Encryption Key for file encryption in hexadecimal format; EOS_PLATFORM_OPTIONS_ENCRYPTIONKEY_LENGTH hex chars."]
    pub EncryptionKey: *const ::std::os::raw::c_char,
    #[doc = " The override country code to use for the logged in user. (EOS_COUNTRYCODE_MAX_LENGTH)"]
    pub OverrideCountryCode: *const ::std::os::raw::c_char,
    #[doc = " The override locale code to use for the logged in user. This follows ISO 639. (EOS_LOCALECODE_MAX_LENGTH)"]
    pub OverrideLocaleCode: *const ::std::os::raw::c_char,
    #[doc = " The deployment ID for the running application, found on the dev portal. Max length is EOS_PLATFORM_OPTIONS_DEPLOYMENTID_MAX_LENGTH."]
    pub DeploymentId: *const ::std::os::raw::c_char,
    #[doc = " Platform creation flags, e.g. EOS_PF_LOADING_IN_EDITOR. This is a bitwise-or union of the defined flags."]
    pub Flags: u64,
    #[doc = " Used by Player Data Storage and Title Storage. Must be null initialized if unused. Cache directory path. Absolute path to the folder that is going to be used for caching temporary data. The path is created if it's missing."]
    pub CacheDirectory: *const ::std::os::raw::c_char,
    #[doc = " A budget, measured in milliseconds, for EOS_Platform_Tick to do its work. When the budget is met or exceeded (or if no work is available), EOS_Platform_Tick will return.\n This allows your game to amortize the cost of SDK work across multiple frames in the event that a lot of work is queued for processing.\n Zero is interpreted as \"perform all available work\"."]
    pub TickBudgetInMilliseconds: u32,
    #[doc = " RTC options. Setting to NULL will disable RTC features (e.g. voice)"]
    pub RTCOptions: *const EOS_Platform_RTCOptions,
    #[doc = " A handle that contains all the options for setting up integrated platforms.\n When set to NULL, the EOS Integrated Platform behavior for the host platform will be disabled."]
    pub IntegratedPlatformOptionsContainerHandle: EOS_HIntegratedPlatformOptionsContainer,
    #[doc = " Pointer to EOS_\"PLATFORM_NAME\"_SystemSpecificOptions. This structure will be located in \"PLATFORM_NAME\"/eos_\"PLATFORM_NAME\".h"]
    pub SystemSpecificOptions: *const ::std::os::raw::c_void,
    #[doc = " Number of seconds for a task to wait for the network to become available before timing out with an EOS_TimedOut error.\n This timeout period applies when the network status is not EOS_NS_Online. Tasks that need the network will queue for up to\n this timeout until EOS_Platform_SetNetworkStatus is used to set the network status to online.\n\n Pass a null pointer to use the default.\n Otherwise, pass a pointer to a double containing the number of seconds for tasks that are waiting for network to time out.\n\n @see EOS_Platform_SetNetworkStatus\n @see EOS_ENetworkStatus"]
    pub TaskNetworkTimeoutSeconds: *mut f64,
}
impl Default for _tagEOS_Platform_Options {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Platform options for EOS_Platform_Create."]
pub type EOS_Platform_Options = _tagEOS_Platform_Options;
#[doc = " Xbox only.\n\n Notifies the SDK that the application has entered constrained mode.\n While in constrained mode, the application has reduced access to reserved system resources."]
pub const EOS_EApplicationStatus_EOS_AS_BackgroundConstrained: EOS_EApplicationStatus = 0;
#[doc = " Xbox only.\n\n Notifies the SDK that the application has returned from constrained mode,\n and is back to running in a regular state with full access to system resources.\n\n The SDK will handle this state change and automatically transition its active state to EOS_AS_Foreground.\n As result, after the application has set the EOS_AS_BackgroundUnconstrained state,\n calling EOS_Platform_GetApplicationStatus will return EOS_AS_Foreground as the persisted active state."]
pub const EOS_EApplicationStatus_EOS_AS_BackgroundUnconstrained: EOS_EApplicationStatus = 1;
#[doc = " Notifies the SDK that the application has been put into suspended state by the platform system."]
pub const EOS_EApplicationStatus_EOS_AS_BackgroundSuspended: EOS_EApplicationStatus = 2;
#[doc = " Notifies the SDK that the application has been resumed from suspended state.\n\n This is the default active state on all platforms."]
pub const EOS_EApplicationStatus_EOS_AS_Foreground: EOS_EApplicationStatus = 3;
pub const EOS_EApplicationStatus___EOS_EApplicationStatus_PAD_INT32__: EOS_EApplicationStatus =
    2147483647;
#[doc = " All possible states of the application."]
pub type EOS_EApplicationStatus = ::std::os::raw::c_int;
unsafe extern "C" {
    #[doc = " Gets the string representation of an EOS_EApplicationStatus value.\n\n Example: EOS_EApplicationStatus_ToString(EOS_EApplicationStatus::EOS_AS_Foreground) returns \"EOS_AS_Foreground\".\n\n @param ApplicationStatus EOS_EApplicationStatus value to get as string.\n\n @return Pointer to a static string representing the input enum value.\n         The returned string is guaranteed to be non-null, and must not be freed by the application."]
    pub fn EOS_EApplicationStatus_ToString(
        ApplicationStatus: EOS_EApplicationStatus,
    ) -> *const ::std::os::raw::c_char;
}
#[doc = " Networking unavailable."]
pub const EOS_ENetworkStatus_EOS_NS_Disabled: EOS_ENetworkStatus = 0;
#[doc = " Not connected to the internet. Only local area networking (LAN) may be available."]
pub const EOS_ENetworkStatus_EOS_NS_Offline: EOS_ENetworkStatus = 1;
#[doc = " Connected to the internet."]
pub const EOS_ENetworkStatus_EOS_NS_Online: EOS_ENetworkStatus = 2;
pub const EOS_ENetworkStatus___EOS_ENetworkStatus_PAD_INT32__: EOS_ENetworkStatus = 2147483647;
#[doc = " All possible states of the network."]
pub type EOS_ENetworkStatus = ::std::os::raw::c_int;
unsafe extern "C" {
    #[doc = " Gets the string representation of an EOS_ENetworkStatus value.\n\n Example: EOS_ENetworkStatus_ToString(EOS_ENetworkStatus::EOS_NS_Online) returns \"EOS_NS_Online\".\n\n @param NetworkStatus EOS_ENetworkStatus value to get as string.\n\n @return Pointer to a static string representing the input enum value.\n         The returned string is guaranteed to be non-null, and must not be freed by the application."]
    pub fn EOS_ENetworkStatus_ToString(
        NetworkStatus: EOS_ENetworkStatus,
    ) -> *const ::std::os::raw::c_char;
}
#[doc = " Desktop crossplay is ready to use."]
pub const EOS_EDesktopCrossplayStatus_EOS_DCS_OK: EOS_EDesktopCrossplayStatus = 0;
#[doc = " The application was not launched through the Bootstrapper."]
pub const EOS_EDesktopCrossplayStatus_EOS_DCS_ApplicationNotBootstrapped:
    EOS_EDesktopCrossplayStatus = 1;
#[doc = " The redistributable service is not installed."]
pub const EOS_EDesktopCrossplayStatus_EOS_DCS_ServiceNotInstalled: EOS_EDesktopCrossplayStatus = 2;
#[doc = " The service failed to start."]
pub const EOS_EDesktopCrossplayStatus_EOS_DCS_ServiceStartFailed: EOS_EDesktopCrossplayStatus = 3;
#[doc = " The service was started successfully, but is no longer running in the background, for an unknown reason."]
pub const EOS_EDesktopCrossplayStatus_EOS_DCS_ServiceNotRunning: EOS_EDesktopCrossplayStatus = 4;
#[doc = " The application has explicitly disabled the overlay through SDK initialization flags."]
pub const EOS_EDesktopCrossplayStatus_EOS_DCS_OverlayDisabled: EOS_EDesktopCrossplayStatus = 5;
#[doc = " The overlay is not installed.\n\n As the overlay is automatically installed and kept up-to-date by the redistributable service,\n this indicates that the user may have separately manually removed the installed overlay files."]
pub const EOS_EDesktopCrossplayStatus_EOS_DCS_OverlayNotInstalled: EOS_EDesktopCrossplayStatus = 6;
#[doc = " The overlay was not loaded due to failing trust check on the digital signature of the file on disk.\n\n This error typically indicates one of the following root causes:\n - The Operating System's local certificate store is out of date.\n - The local system clock has skewed and is in the wrong time.\n - The file has been tampered with.\n - The file trust check timed out, either due to an issue with the local system or network connectivity.\n\n The first troubleshooting steps should be to check for any available Operating System updates,\n for example using the Windows Update, as well as verifying that the system time is correctly set."]
pub const EOS_EDesktopCrossplayStatus_EOS_DCS_OverlayTrustCheckFailed: EOS_EDesktopCrossplayStatus =
    7;
#[doc = " The overlay failed to load."]
pub const EOS_EDesktopCrossplayStatus_EOS_DCS_OverlayLoadFailed: EOS_EDesktopCrossplayStatus = 8;
pub const EOS_EDesktopCrossplayStatus___EOS_EDesktopCrossplayStatus_PAD_INT32__:
    EOS_EDesktopCrossplayStatus = 2147483647;
#[doc = " Possible statuses for the availability of desktop crossplay functionality.\n\n @see EOS_Platform_GetDesktopCrossplayStatus"]
pub type EOS_EDesktopCrossplayStatus = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_Platform_GetDesktopCrossplayStatus function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Platform_GetDesktopCrossplayStatusOptions {
    #[doc = " API Version: Set this to EOS_PLATFORM_GETDESKTOPCROSSPLAYSTATUS_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Platform_GetDesktopCrossplayStatus function."]
pub type EOS_Platform_GetDesktopCrossplayStatusOptions =
    _tagEOS_Platform_GetDesktopCrossplayStatusOptions;
#[doc = " Output parameters for the EOS_Platform_GetDesktopCrossplayStatus function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Platform_DesktopCrossplayStatusInfo {
    #[doc = " Status for the availability of desktop crossplay functionality.\n\n It is recommended to include this value in application logs, and as part of\n any player-facing error screens to help troubleshooting possible issues."]
    pub Status: EOS_EDesktopCrossplayStatus,
    #[doc = " This field is set when the Status is EOS_DCS_ServiceStartFailed.\n\n Possible values for this field are not documented. However, it is recommended\n to be also included in application logs, and as part of any player-facing\n error screens."]
    pub ServiceInitResult: i32,
}
impl Default for _tagEOS_Platform_DesktopCrossplayStatusInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Platform_GetDesktopCrossplayStatus function."]
pub type EOS_Platform_DesktopCrossplayStatusInfo = _tagEOS_Platform_DesktopCrossplayStatusInfo;
#[doc = " Function prototype type definition for functions that allocate memory.\n\n Functions passed to EOS_Initialize to serve as memory allocators should return a pointer to the allocated memory.\n\n The returned pointer should have at least SizeInBytes available capacity and the memory address should be a multiple of Alignment.\n The SDK will always call the provided function with an Alignment that is a power of 2.\n Allocation failures should return a null pointer."]
pub type EOS_AllocateMemoryFunc = ::std::option::Option<
    unsafe extern "C" fn(SizeInBytes: usize, Alignment: usize) -> *mut ::std::os::raw::c_void,
>;
#[doc = " Function prototype type definition for functions that reallocate memory.\n\n Functions passed to EOS_Initialize to serve as memory reallocators should return a pointer to the reallocated memory.\n The returned pointer should have at least SizeInBytes available capacity and the memory address should be a multiple of alignment.\n The SDK will always call the provided function with an Alignment that is a power of 2.\n Reallocation failures should return a null pointer."]
pub type EOS_ReallocateMemoryFunc = ::std::option::Option<
    unsafe extern "C" fn(
        Pointer: *mut ::std::os::raw::c_void,
        SizeInBytes: usize,
        Alignment: usize,
    ) -> *mut ::std::os::raw::c_void,
>;
#[doc = " Function prototype type definition for functions that release memory.\n\n When the SDK is done with memory that has been allocated by a custom allocator passed to EOS_Initialize, it will call the corresponding memory release function."]
pub type EOS_ReleaseMemoryFunc =
    ::std::option::Option<unsafe extern "C" fn(Pointer: *mut ::std::os::raw::c_void)>;
#[doc = " Options for initializing defining thread affinity for use by Epic Online Services SDK.\n Set the affinity to 0 to allow EOS SDK to use a platform specific default value."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Initialize_ThreadAffinity {
    #[doc = " API Version: Set this to EOS_INITIALIZE_THREADAFFINITY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Any thread related to network management that is not IO."]
    pub NetworkWork: u64,
    #[doc = " Any thread that will interact with a storage device."]
    pub StorageIo: u64,
    #[doc = " Any thread that will generate web socket IO."]
    pub WebSocketIo: u64,
    #[doc = " Any thread that will generate IO related to P2P traffic and management."]
    pub P2PIo: u64,
    #[doc = " Any thread that will generate http request IO."]
    pub HttpRequestIo: u64,
    #[doc = " Any thread that will generate IO related to RTC traffic and management."]
    pub RTCIo: u64,
    #[doc = " Main thread of the external overlay"]
    pub EmbeddedOverlayMainThread: u64,
    #[doc = " Worker threads of the external overlay"]
    pub EmbeddedOverlayWorkerThreads: u64,
    #[doc = " Any thread that process cryptography work"]
    pub CryptographyWork: u64,
}
#[doc = " Options for initializing defining thread affinity for use by Epic Online Services SDK.\n Set the affinity to 0 to allow EOS SDK to use a platform specific default value."]
pub type EOS_Initialize_ThreadAffinity = _tagEOS_Initialize_ThreadAffinity;
#[doc = " Options for initializing the Epic Online Services SDK."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_InitializeOptions {
    #[doc = " API Version: Set this to EOS_INITIALIZE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " A custom memory allocator, if desired."]
    pub AllocateMemoryFunction: EOS_AllocateMemoryFunc,
    #[doc = " A corresponding memory reallocator. If the AllocateMemoryFunction is nulled, then this field must also be nulled."]
    pub ReallocateMemoryFunction: EOS_ReallocateMemoryFunc,
    #[doc = " A corresponding memory releaser. If the AllocateMemoryFunction is nulled, then this field must also be nulled."]
    pub ReleaseMemoryFunction: EOS_ReleaseMemoryFunc,
    #[doc = " The name of the product using the Epic Online Services SDK.\n\n The name string is required to be non-empty and at maximum of EOS_INITIALIZEOPTIONS_PRODUCTNAME_MAX_LENGTH bytes long.\n The string buffer can consist of the following characters:\n A-Z, a-z, 0-9, dot, underscore, space, exclamation mark, question mark, and sign, hyphen, parenthesis, plus, minus, colon."]
    pub ProductName: *const ::std::os::raw::c_char,
    #[doc = " Product version of the running application.\n\n The version string is required to be non-empty and at maximum of EOS_INITIALIZEOPTIONS_PRODUCTVERSION_MAX_LENGTH bytes long.\n The string buffer can consist of the following characters:\n A-Z, a-z, 0-9, dot, underscore, space, exclamation mark, question mark, and sign, hyphen, parenthesis, plus, minus, colon."]
    pub ProductVersion: *const ::std::os::raw::c_char,
    #[doc = " A reserved field that should always be nulled."]
    pub Reserved: *mut ::std::os::raw::c_void,
    #[doc = " This field is for system specific initialization if any.\n\n If provided then the structure will be located in <System>/eos_<system>.h.\n The structure will be named EOS_<System>_InitializeOptions."]
    pub SystemInitializeOptions: *mut ::std::os::raw::c_void,
    #[doc = " The thread affinity override values for each category of thread."]
    pub OverrideThreadAffinity: *mut EOS_Initialize_ThreadAffinity,
}
impl Default for _tagEOS_InitializeOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Options for initializing the Epic Online Services SDK."]
pub type EOS_InitializeOptions = _tagEOS_InitializeOptions;
unsafe extern "C" {
    #[doc = " Initialize the Epic Online Services SDK.\n\n Before calling any other function in the SDK, clients must call this function.\n\n This function must only be called one time and must have a corresponding EOS_Shutdown call.\n\n @param Options - The initialization options to use for the SDK.\n @return An EOS_EResult is returned to indicate success or an error.\n\n EOS_Success is returned if the SDK successfully initializes.\n EOS_AlreadyConfigured is returned if the function has already been called.\n EOS_InvalidParameters is returned if the provided options are invalid."]
    pub fn EOS_Initialize(Options: *const EOS_InitializeOptions) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Tear down the Epic Online Services SDK.\n\n Once this function has been called, no more SDK calls are permitted; calling anything after EOS_Shutdown will result in undefined behavior.\n @return An EOS_EResult is returned to indicate success or an error.\n EOS_Success is returned if the SDK is successfully torn down.\n EOS_NotConfigured is returned if a successful call to EOS_Initialize has not been made.\n EOS_UnexpectedError is returned if EOS_Shutdown has already been called."]
    pub fn EOS_Shutdown() -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Create a single Epic Online Services Platform Instance.\n\n The platform instance is used to gain access to the various Epic Online Services.\n\n This function returns an opaque handle to the platform instance, and that handle must be passed to EOS_Platform_Release to release the instance.\n\n @return An opaque handle to the platform instance."]
    pub fn EOS_Platform_Create(Options: *const EOS_Platform_Options) -> EOS_HPlatform;
}
unsafe extern "C" {
    #[doc = " Release an Epic Online Services platform instance previously returned from EOS_Platform_Create.\n\n This function should only be called once per instance returned by EOS_Platform_Create. Undefined behavior will result in calling it with a single instance more than once.\n Typically only a single platform instance needs to be created during the lifetime of a game.\n You should release each platform instance before calling the EOS_Shutdown function."]
    pub fn EOS_Platform_Release(Handle: EOS_HPlatform);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_MetricsHandle {
    _unused: [u8; 0],
}
pub type EOS_HMetrics = *mut EOS_MetricsHandle;
#[doc = " The game controller type is unknown."]
pub const EOS_EUserControllerType_EOS_UCT_Unknown: EOS_EUserControllerType = 0;
#[doc = " Mouse and keyboard controller."]
pub const EOS_EUserControllerType_EOS_UCT_MouseKeyboard: EOS_EUserControllerType = 1;
#[doc = " Gamepad controller."]
pub const EOS_EUserControllerType_EOS_UCT_GamepadControl: EOS_EUserControllerType = 2;
#[doc = " Touch controller."]
pub const EOS_EUserControllerType_EOS_UCT_TouchControl: EOS_EUserControllerType = 3;
pub const EOS_EUserControllerType___EOS_EUserControllerType_PAD_INT32__: EOS_EUserControllerType =
    2147483647;
#[doc = " User game controller types."]
pub type EOS_EUserControllerType = ::std::os::raw::c_int;
#[doc = " An Epic Account ID."]
pub const EOS_EMetricsAccountIdType_EOS_MAIT_Epic: EOS_EMetricsAccountIdType = 0;
#[doc = " An external service Account ID."]
pub const EOS_EMetricsAccountIdType_EOS_MAIT_External: EOS_EMetricsAccountIdType = 1;
pub const EOS_EMetricsAccountIdType___EOS_EMetricsAccountIdType_PAD_INT32__:
    EOS_EMetricsAccountIdType = 2147483647;
#[doc = " Account ID type for EOS_Metrics_BeginPlayerSession and EOS_Metrics_EndPlayerSession."]
pub type EOS_EMetricsAccountIdType = ::std::os::raw::c_int;
#[doc = " BeginPlayerSession."]
#[repr(C)]
#[derive(Copy, Clone)]
pub struct _tagEOS_Metrics_BeginPlayerSessionOptions {
    #[doc = " API Version: Set this to EOS_METRICS_BEGINPLAYERSESSION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Account ID type that is set in the union."]
    pub AccountIdType: EOS_EMetricsAccountIdType,
    #[doc = " The Account ID for the player whose session is beginning."]
    pub AccountId: _tagEOS_Metrics_BeginPlayerSessionOptions__bindgen_ty_1,
    #[doc = " The in-game display name for the user as UTF-8 string."]
    pub DisplayName: *const ::std::os::raw::c_char,
    #[doc = " The user's game controller type."]
    pub ControllerType: EOS_EUserControllerType,
    #[doc = " IP address of the game server hosting the game session. For a localhost session, set to NULL.\n\n @details Must be in either one of the following IPv4 or IPv6 string formats:\n * \"127.0.0.1\".\n * \"1200:0000:AB00:1234:0000:2552:7777:1313\".\n If both IPv4 and IPv6 addresses are available, use the IPv6 address."]
    pub ServerIp: *const ::std::os::raw::c_char,
    #[doc = " Optional, application-defined custom match session identifier. If the identifier is not used, set to NULL.\n\n @details The game can tag each game session with a custom session match identifier,\n which will be shown in the Played Sessions listing at the user profile dashboard."]
    pub GameSessionId: *const ::std::os::raw::c_char,
}
#[doc = " The Account ID for the player whose session is beginning."]
#[repr(C)]
#[derive(Copy, Clone)]
pub union _tagEOS_Metrics_BeginPlayerSessionOptions__bindgen_ty_1 {
    #[doc = " An Epic Account ID. Set this field when AccountIdType is set to EOS_MAIT_Epic."]
    pub Epic: EOS_EpicAccountId,
    #[doc = " An Account ID for another service. Set this field when AccountIdType is set to EOS_MAIT_External."]
    pub External: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Metrics_BeginPlayerSessionOptions__bindgen_ty_1 {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
impl Default for _tagEOS_Metrics_BeginPlayerSessionOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " BeginPlayerSession."]
pub type EOS_Metrics_BeginPlayerSessionOptions = _tagEOS_Metrics_BeginPlayerSessionOptions;
#[doc = " EndPlayerSession."]
#[repr(C)]
#[derive(Copy, Clone)]
pub struct _tagEOS_Metrics_EndPlayerSessionOptions {
    #[doc = " API Version: Set this to EOS_METRICS_ENDPLAYERSESSION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Account ID type that is set in the union."]
    pub AccountIdType: EOS_EMetricsAccountIdType,
    #[doc = " The Account ID for the player whose session is ending."]
    pub AccountId: _tagEOS_Metrics_EndPlayerSessionOptions__bindgen_ty_1,
}
#[doc = " The Account ID for the player whose session is ending."]
#[repr(C)]
#[derive(Copy, Clone)]
pub union _tagEOS_Metrics_EndPlayerSessionOptions__bindgen_ty_1 {
    #[doc = " An Epic Account ID. Set this field when AccountIdType is set to EOS_MAIT_Epic."]
    pub Epic: EOS_EpicAccountId,
    #[doc = " An Account ID for another service. Set this field when AccountIdType is set to EOS_MAIT_External."]
    pub External: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Metrics_EndPlayerSessionOptions__bindgen_ty_1 {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
impl Default for _tagEOS_Metrics_EndPlayerSessionOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " EndPlayerSession."]
pub type EOS_Metrics_EndPlayerSessionOptions = _tagEOS_Metrics_EndPlayerSessionOptions;
#[doc = " Intermediate data needed to complete account restriction verification during login flow, returned by EOS_Auth_LoginCallbackInfo when the ResultCode is EOS_Auth_AccountFeatureRestricted.\n The URI inside should be exposed to the user for entry in a web browser. The URI must be copied out of this struct before completion of the callback."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_AccountFeatureRestrictedInfo {
    #[doc = " API Version: Set this to EOS_AUTH_ACCOUNTFEATURERESTRICTEDINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The end-user verification URI. Users must be asked to open the page in a browser to address the restrictions."]
    pub VerificationURI: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Auth_AccountFeatureRestrictedInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Intermediate data needed to complete account restriction verification during login flow, returned by EOS_Auth_LoginCallbackInfo when the ResultCode is EOS_Auth_AccountFeatureRestricted.\n The URI inside should be exposed to the user for entry in a web browser. The URI must be copied out of this struct before completion of the callback."]
pub type EOS_Auth_AccountFeatureRestrictedInfo = _tagEOS_Auth_AccountFeatureRestrictedInfo;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_AuthHandle {
    _unused: [u8; 0],
}
pub type EOS_HAuth = *mut EOS_AuthHandle;
#[doc = " Login using account email address and password.\n\n Note: This login method is restricted to Epic Games internal use only. Do not use."]
pub const EOS_ELoginCredentialType_EOS_LCT_Password: EOS_ELoginCredentialType = 0;
#[doc = " A short-lived one-time use exchange code to login the local user.\n\n @details Typically retrieved via command-line parameters provided by a launcher that generated the exchange code for this application.\n When started, the application is expected to consume the exchange code by using the EOS_Auth_Login API as soon as possible.\n This is needed in order to authenticate the local user before the exchange code would expire.\n Attempting to consume an already expired exchange code will return EOS_EResult::EOS_Auth_ExchangeCodeNotFound error by the EOS_Auth_Login API."]
pub const EOS_ELoginCredentialType_EOS_LCT_ExchangeCode: EOS_ELoginCredentialType = 1;
#[doc = " Used by standalone applications distributed outside the supported game platforms such as Epic Games Store or Steam, and on Nintendo Switch.\n\n Persistent Auth is used in conjunction with the EOS_LCT_AccountPortal login method for automatic login of the local user across multiple runs of the application.\n\n Standalone applications implement the login sequence as follows:\n 1. Application calls EOS_Auth_Login with EOS_LCT_PersistentAuth, using a previously stored Epic refresh token for an automatic user login.\n 2. If automatic login fails, the application discards the Epic refresh token used as defunct, and proceeds to call EOS_Auth_Login with EOS_LCT_AccountPortal to prompt the user for manual login.\n\n @note On Desktop and Mobile platforms, the persistent refresh token is automatically managed by the SDK that stores it in the keychain of the currently logged in user of the local device.\n On Nintendo Switch, after a successful login the refresh token must be retrieved using the EOS_Auth_CopyUserAuthToken API and stored by the application specifically for the active Nintendo Switch user.\n\n @see EOS_LCT_AccountPortal"]
pub const EOS_ELoginCredentialType_EOS_LCT_PersistentAuth: EOS_ELoginCredentialType = 2;
#[doc = " Not supported. Superseded by EOS_LCT_ExternalAuth login method.\n\n @see EOS_LCT_ExternalAuth"]
pub const EOS_ELoginCredentialType_EOS_LCT_DeviceCode: EOS_ELoginCredentialType = 3;
#[doc = " Login with named credentials hosted by the EOS SDK Developer Authentication Tool.\n\n @note Used for development purposes only."]
pub const EOS_ELoginCredentialType_EOS_LCT_Developer: EOS_ELoginCredentialType = 4;
#[doc = " Refresh token that was retrieved from a previous call to EOS_Auth_Login API in another local process context.\n Mainly used in conjunction with custom desktop launcher applications.\n\n @details Can be used for example when launching the game from Epic Games Launcher and having an intermediate process\n in-between that requires authenticating the user before eventually starting the actual game client application.\n In such scenario, an intermediate launcher will log in the user by consuming the exchange code it received from the\n Epic Games Launcher. To allow the game client to also authenticate the user, it can copy the refresh token using the\n EOS_Auth_CopyUserAuthToken API and pass it via launch parameters to the started game client. The game client can then\n use the refresh token to log in the user."]
pub const EOS_ELoginCredentialType_EOS_LCT_RefreshToken: EOS_ELoginCredentialType = 5;
#[doc = " Used by standalone applications distributed outside the supported game platforms such as Epic Games Store or Steam, and on Nintendo Switch.\n\n Login using the built-in user onboarding experience provided by the SDK, which will automatically store a persistent\n refresh token to enable automatic user login for consecutive application runs on the local device. Applications are\n expected to attempt automatic login using the EOS_LCT_PersistentAuth login method, and fall back to EOS_LCT_AccountPortal\n to prompt users for manual login.\n\n @note On Windows, using this login method requires applications to be started through the EOS Bootstrapper application\n and to have the local Epic Online Services redistributable installed on the local system. See EOS_Platform_GetDesktopCrossplayStatus\n for adding a readiness check prior to calling EOS_Auth_Login.\n\n @see EOS_LCT_PersistentAuth"]
pub const EOS_ELoginCredentialType_EOS_LCT_AccountPortal: EOS_ELoginCredentialType = 6;
#[doc = " Login using external account provider credentials, such as PlayStation(TM)Network, Steam, and Xbox Live.\n\n This is the intended login method on PlayStation® and Xbox console devices.\n On Desktop and Mobile, used when launched through any of the commonly supported platform clients.\n\n @details The user is seamlessly logged in to their Epic account using an external account access token.\n If the local platform account is already linked with the user's Epic account, the login will succeed and EOS_EResult::EOS_Success is returned.\n When the local platform account has not been linked with an Epic account yet,\n EOS_EResult::EOS_InvalidUser is returned and the EOS_ContinuanceToken will be set in the EOS_Auth_LoginCallbackInfo data.\n If EOS_EResult::EOS_InvalidUser is returned,\n the application should proceed to call the EOS_Auth_LinkAccount API with the EOS_ContinuanceToken to continue with the external account login\n and to link the external account at the end of the login flow.\n\n @details Login flow when the platform user account has not been linked with an Epic account yet:\n 1. Game calls EOS_Auth_Login with the EOS_LCT_ExternalAuth credential type.\n 2. EOS_Auth_Login returns EOS_EResult::EOS_InvalidUser with a non-null EOS_ContinuanceToken in the EOS_Auth_LoginCallbackInfo data.\n 3. Game calls EOS_Auth_LinkAccount with the EOS_ContinuanceToken to initiate the login flow for linking the platform account with the user's Epic account.\n 4. The user is taken automatically to the Epic accounts user onboarding flow managed by the SDK.\n 5. Once the user completes the login, cancels it or if the login flow times out, EOS_Auth_LinkAccount invokes the completion callback to the caller.\n    - If the user was logged in successfully, EOS_EResult::EOS_Success is returned in the EOS_Auth_LoginCallbackInfo. Otherwise, an error result code is returned accordingly.\n\n @note On Windows, using this login method requires applications to be started through the EOS Bootstrapper application\n and to have the local Epic Online Services redistributable installed on the local system. See EOS_Platform_GetDesktopCrossplayStatus\n for adding a readiness check prior to calling EOS_Auth_Login."]
pub const EOS_ELoginCredentialType_EOS_LCT_ExternalAuth: EOS_ELoginCredentialType = 7;
pub const EOS_ELoginCredentialType___EOS_ELoginCredentialType_PAD_INT32__:
    EOS_ELoginCredentialType = 2147483647;
#[doc = " All possible types of login methods, availability depends on permissions granted to the client.\n\n @see EOS_Auth_Login\n @see EOS_Auth_Credentials"]
pub type EOS_ELoginCredentialType = ::std::os::raw::c_int;
#[doc = " Auth token is for a validated client"]
pub const EOS_EAuthTokenType_EOS_ATT_Client: EOS_EAuthTokenType = 0;
#[doc = " Auth token is for a validated user"]
pub const EOS_EAuthTokenType_EOS_ATT_User: EOS_EAuthTokenType = 1;
pub const EOS_EAuthTokenType___EOS_EAuthTokenType_PAD_INT32__: EOS_EAuthTokenType = 2147483647;
#[doc = " Types of auth tokens\n\n @see EOS_Auth_CopyUserAuthToken\n @see EOS_Auth_Token"]
pub type EOS_EAuthTokenType = ::std::os::raw::c_int;
#[doc = " A structure that contains an auth token.\n These structures are created by EOS_Auth_CopyUserAuthToken and must be passed to EOS_Auth_Token_Release."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_Token {
    #[doc = " API Version: Set this to EOS_AUTH_TOKEN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the app related to the client ID involved with this token"]
    pub App: *const ::std::os::raw::c_char,
    #[doc = " Client ID that requested this token"]
    pub ClientId: *const ::std::os::raw::c_char,
    #[doc = " The Epic Account ID associated with this auth token"]
    pub AccountId: EOS_EpicAccountId,
    #[doc = " Access token for the current user login session"]
    pub AccessToken: *const ::std::os::raw::c_char,
    #[doc = " Time before the access token expires, in seconds, relative to the call to EOS_Auth_CopyUserAuthToken"]
    pub ExpiresIn: f64,
    #[doc = " Absolute time in UTC before the access token expires, in ISO 8601 format"]
    pub ExpiresAt: *const ::std::os::raw::c_char,
    #[doc = " Type of auth token"]
    pub AuthType: EOS_EAuthTokenType,
    #[doc = " Refresh token.\n\n @see EOS_ELoginCredentialType::EOS_LCT_RefreshToken"]
    pub RefreshToken: *const ::std::os::raw::c_char,
    #[doc = " Time before the access token expires, in seconds, relative to the call to EOS_Auth_CopyUserAuthToken"]
    pub RefreshExpiresIn: f64,
    #[doc = " Absolute time in UTC before the refresh token expires, in ISO 8601 format"]
    pub RefreshExpiresAt: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Auth_Token {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " A structure that contains an auth token.\n These structures are created by EOS_Auth_CopyUserAuthToken and must be passed to EOS_Auth_Token_Release."]
pub type EOS_Auth_Token = _tagEOS_Auth_Token;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_Auth_Token structure. This must be called on data retrieved from EOS_Auth_CopyUserAuthToken.\n\n @param AuthToken The auth token structure to be released.\n\n @see EOS_Auth_Token\n @see EOS_Auth_CopyUserAuthToken"]
    pub fn EOS_Auth_Token_Release(AuthToken: *mut EOS_Auth_Token);
}
#[doc = " Login credentials filled as part of the EOS_Auth_LoginOptions struct for EOS_Auth_Login API.\n\n Required input parameters to be set depend on the login credential type.\n Any parameters not being used must be set to NULL. Otherwise, EOS_InvalidParameters error is returned.\n\n EOS_LCT_Password\t\t\t| ID is the email address, and Token is the password.\n EOS_LCT_ExchangeCode\t\t| Set ID to NULL. Token is the exchange code.\n EOS_LCT_PersistentAuth\t| Set ID to NULL. On console platforms, Token is the long-lived refresh token. Otherwise, set to NULL.\n EOS_LCT_Developer\t\t| Set ID as the host (e.g. localhost:6547). Token is the credential name registered in the EOS Developer Authentication Tool.\n EOS_LCT_RefreshToken\t\t| Set ID to NULL. Token is the refresh token.\n EOS_LCT_AccountPortal\t| Set ID and Token to NULL. SystemAuthCredentialsOptions may be required on mobile platforms.\n EOS_LCT_ExternalAuth\t\t| Set ID to NULL or the External Account ID that belongs to the external auth token. Token is the external auth token specified by ExternalType. External Account IDs set to the ID are expected as either base-10 numeric strings for integer-based external Account IDs, or the actual string for everything else. If ID is provided, login will automatically be cancelled if the EOS SDK is able to and does detect the external account signing-out. If ID is provided, it must match the external account ID belonging to the auth-token, or login will fail.\n\n @see EOS_ELoginCredentialType\n @see EOS_Auth_Login\n @see EOS_Auth_DeletePersistentAuthOptions"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_Credentials {
    #[doc = " API Version: Set this to EOS_AUTH_CREDENTIALS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Authentication ID value based on the used EOS_ELoginCredentialType.\n If not used, must be set to NULL."]
    pub Id: *const ::std::os::raw::c_char,
    #[doc = " Authentication Token value based on the used EOS_ELoginCredentialType.\n If not used, must be set to NULL."]
    pub Token: *const ::std::os::raw::c_char,
    #[doc = " Login credentials type based on the authentication method used."]
    pub Type: EOS_ELoginCredentialType,
    #[doc = " This field is for system specific options, if any.\n\n If provided, the structure will be located in (System)/eos_(system).h.\n The structure will be named EOS_(System)_Auth_CredentialsOptions."]
    pub SystemAuthCredentialsOptions: *mut ::std::os::raw::c_void,
    #[doc = " Type of external login. Needed to identify the external auth method to use.\n Used when login type is set to EOS_LCT_ExternalAuth, ignored for other EOS_ELoginCredentialType methods."]
    pub ExternalType: EOS_EExternalCredentialType,
}
impl Default for _tagEOS_Auth_Credentials {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Login credentials filled as part of the EOS_Auth_LoginOptions struct for EOS_Auth_Login API.\n\n Required input parameters to be set depend on the login credential type.\n Any parameters not being used must be set to NULL. Otherwise, EOS_InvalidParameters error is returned.\n\n EOS_LCT_Password\t\t\t| ID is the email address, and Token is the password.\n EOS_LCT_ExchangeCode\t\t| Set ID to NULL. Token is the exchange code.\n EOS_LCT_PersistentAuth\t| Set ID to NULL. On console platforms, Token is the long-lived refresh token. Otherwise, set to NULL.\n EOS_LCT_Developer\t\t| Set ID as the host (e.g. localhost:6547). Token is the credential name registered in the EOS Developer Authentication Tool.\n EOS_LCT_RefreshToken\t\t| Set ID to NULL. Token is the refresh token.\n EOS_LCT_AccountPortal\t| Set ID and Token to NULL. SystemAuthCredentialsOptions may be required on mobile platforms.\n EOS_LCT_ExternalAuth\t\t| Set ID to NULL or the External Account ID that belongs to the external auth token. Token is the external auth token specified by ExternalType. External Account IDs set to the ID are expected as either base-10 numeric strings for integer-based external Account IDs, or the actual string for everything else. If ID is provided, login will automatically be cancelled if the EOS SDK is able to and does detect the external account signing-out. If ID is provided, it must match the external account ID belonging to the auth-token, or login will fail.\n\n @see EOS_ELoginCredentialType\n @see EOS_Auth_Login\n @see EOS_Auth_DeletePersistentAuthOptions"]
pub type EOS_Auth_Credentials = _tagEOS_Auth_Credentials;
#[doc = " Intermediate data for completing Epic account login, when neither the in-game overlay or a platform browser is used.\n The EOS_Auth_PinGrantInfo struct is returned as part of the EOS_Auth_LoginCallbackInfo and EOS_Auth_LinkAccountCallbackInfo structs.\n The data inside should be exposed to the user for entry on a secondary device.\n All data must be copied out before the completion of this callback."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_PinGrantInfo {
    #[doc = " API Version: Set this to EOS_AUTH_PINGRANTINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Code the user must input on an external device to activate the login."]
    pub UserCode: *const ::std::os::raw::c_char,
    #[doc = " The end-user verification URI. Users can be asked to manually type this into their browser."]
    pub VerificationURI: *const ::std::os::raw::c_char,
    #[doc = " Time the user has, in seconds, to complete the process or else timeout."]
    pub ExpiresIn: i32,
    #[doc = " A verification URI that includes the user code. Useful for non-textual transmission."]
    pub VerificationURIComplete: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Auth_PinGrantInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Intermediate data for completing Epic account login, when neither the in-game overlay or a platform browser is used.\n The EOS_Auth_PinGrantInfo struct is returned as part of the EOS_Auth_LoginCallbackInfo and EOS_Auth_LinkAccountCallbackInfo structs.\n The data inside should be exposed to the user for entry on a secondary device.\n All data must be copied out before the completion of this callback."]
pub type EOS_Auth_PinGrantInfo = _tagEOS_Auth_PinGrantInfo;
#[doc = " Default value, no permissions required"]
pub const EOS_EAuthScopeFlags_EOS_AS_NoFlags: EOS_EAuthScopeFlags = 0;
#[doc = " Permissions to see your account ID, display name, and language"]
pub const EOS_EAuthScopeFlags_EOS_AS_BasicProfile: EOS_EAuthScopeFlags = 1;
#[doc = " Permissions to see a list of your friends who use this application"]
pub const EOS_EAuthScopeFlags_EOS_AS_FriendsList: EOS_EAuthScopeFlags = 2;
#[doc = " Permissions to set your online presence and see presence of your friends"]
pub const EOS_EAuthScopeFlags_EOS_AS_Presence: EOS_EAuthScopeFlags = 4;
#[doc = " Permissions to manage the Epic friends list. This scope is restricted to Epic first party products, and attempting to use it will result in authentication failures."]
pub const EOS_EAuthScopeFlags_EOS_AS_FriendsManagement: EOS_EAuthScopeFlags = 8;
#[doc = " Permissions to see email in the response when fetching information for a user. This scope is restricted to Epic first party products, and attempting to use it will result in authentication failures."]
pub const EOS_EAuthScopeFlags_EOS_AS_Email: EOS_EAuthScopeFlags = 16;
#[doc = " Permissions to see your country"]
pub const EOS_EAuthScopeFlags_EOS_AS_Country: EOS_EAuthScopeFlags = 32;
pub const EOS_EAuthScopeFlags___EOS_EAuthScopeFlags_PAD_INT32__: EOS_EAuthScopeFlags = 2147483647;
#[doc = " Flags that describe user permissions"]
pub type EOS_EAuthScopeFlags = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_Auth_Login function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_LoginOptions {
    #[doc = " API Version: Set this to EOS_AUTH_LOGIN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Credentials specified for a given login method."]
    pub Credentials: *const EOS_Auth_Credentials,
    #[doc = " Auth scope flags are permissions to request from the user while they are logging in. This is a bitwise-or union of EOS_EAuthScopeFlags flags defined above."]
    pub ScopeFlags: EOS_EAuthScopeFlags,
    #[doc = " Optional flags for the desired login behavior, e.g. EOS_LF_NO_USER_INTERFACE. This is a bitwise-or union of the defined flags."]
    pub LoginFlags: u64,
}
impl Default for _tagEOS_Auth_LoginOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Auth_Login function."]
pub type EOS_Auth_LoginOptions = _tagEOS_Auth_LoginOptions;
#[doc = " Output parameters for the EOS_Auth_Login Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_LoginCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Auth_Login."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user who has logged in."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Optional data that may be returned in the middle of the login flow, when neither the in-game overlay or a platform browser is used.\n This data is present when the ResultCode is EOS_Auth_PinGrantCode."]
    pub PinGrantInfo: *const EOS_Auth_PinGrantInfo,
    #[doc = " If the user was not found with external auth credentials passed into EOS_Auth_Login, this continuance token can be passed to EOS_Auth_LinkAccount to continue the flow."]
    pub ContinuanceToken: EOS_ContinuanceToken,
    #[doc = " Deprecated field that is no longer used."]
    pub AccountFeatureRestrictedInfo_DEPRECATED: *const EOS_Auth_AccountFeatureRestrictedInfo,
    #[doc = " The Epic Account ID that has been previously selected to be used for the current application.\n Applications should use this ID to authenticate with online backend services that store game-scoped data for users.\n\n Note: This ID may be different from LocalUserId if the user has previously merged Epic accounts into the account\n represented by LocalUserId, and one of the accounts that got merged had game data associated with it for the application."]
    pub SelectedAccountId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Auth_LoginCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Auth_Login Function."]
pub type EOS_Auth_LoginCallbackInfo = _tagEOS_Auth_LoginCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Auth_Login\n @param Data A EOS_Auth_LoginCallbackInfo containing the output information and result"]
pub type EOS_Auth_OnLoginCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Auth_LoginCallbackInfo)>;
#[doc = " Input parameters for the EOS_Auth_Logout function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_LogoutOptions {
    #[doc = " API Version: Set this to EOS_AUTH_LOGOUT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user who is being logged out"]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Auth_LogoutOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Auth_Logout function."]
pub type EOS_Auth_LogoutOptions = _tagEOS_Auth_LogoutOptions;
#[doc = " Output parameters for the EOS_Auth_Logout Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_LogoutCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Auth_Login"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user requesting the information"]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Auth_LogoutCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Auth_Logout Function."]
pub type EOS_Auth_LogoutCallbackInfo = _tagEOS_Auth_LogoutCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Auth_Logout\n @param Data A EOS_Auth_LogoutCallbackInfo containing the output information and result"]
pub type EOS_Auth_OnLogoutCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Auth_LogoutCallbackInfo)>;
#[doc = " Default flag used for a standard account linking operation.\n\n This flag is set when using a continuance token received from a previous call to the EOS_Auth_Login API,\n when the local user has not yet been successfully logged in to an Epic Account yet."]
pub const EOS_ELinkAccountFlags_EOS_LA_NoFlags: EOS_ELinkAccountFlags = 0;
#[doc = " Specified when the EOS_ContinuanceToken describes a Nintendo NSA ID account type.\n\n This flag is used only with, and must be set, when the continuance token was received from a previous call\n to the EOS_Auth_Login API using the EOS_EExternalCredentialType::EOS_ECT_NINTENDO_NSA_ID_TOKEN login type."]
pub const EOS_ELinkAccountFlags_EOS_LA_NintendoNsaId: EOS_ELinkAccountFlags = 1;
pub const EOS_ELinkAccountFlags___EOS_ELinkAccountFlags_PAD_INT32__: EOS_ELinkAccountFlags =
    2147483647;
#[doc = " Flags used to describe how the account linking operation is to be performed.\n\n @see EOS_Auth_LinkAccount"]
pub type EOS_ELinkAccountFlags = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_Auth_LinkAccount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_LinkAccountOptions {
    #[doc = " API Version: Set this to EOS_AUTH_LINKACCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Combination of the enumeration flags to specify how the account linking operation will be performed."]
    pub LinkAccountFlags: EOS_ELinkAccountFlags,
    #[doc = " Continuance token received from a previous call to the EOS_Auth_Login API.\n\n A continuance token is received in the case when the external account used for login was not found to be linked\n against any existing Epic Account. In such case, the application needs to proceed with an account linking operation in which case\n the user is first asked to create a new account or login into their existing Epic Account, and then link their external account to it.\n Alternatively, the application may suggest the user to login using another external account that they have already linked to their existing Epic Account.\n In this flow, the external account is typically the currently logged in local platform user account.\n It can also be another external user account that the user is offered to login with."]
    pub ContinuanceToken: EOS_ContinuanceToken,
    #[doc = " The Epic Account ID of the logged in local user whose Epic Account will be linked with the local Nintendo NSA ID Account. By default set to NULL.\n\n This parameter is only used and required to be set when EOS_ELinkAccountFlags::EOS_LA_NintendoNsaId is specified.\n Otherwise, set to NULL, as the standard account linking and login flow using continuance token will handle logging in the user to their Epic Account."]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Auth_LinkAccountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Auth_LinkAccount function."]
pub type EOS_Auth_LinkAccountOptions = _tagEOS_Auth_LinkAccountOptions;
#[doc = " Output parameters for the EOS_Auth_LinkAccount Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_LinkAccountCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Auth_LinkAccount."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user whose account has been linked during login."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Optional data that may be returned in the middle of the login flow, when neither the in-game overlay or a platform browser is used.\n This data is present when the ResultCode is EOS_Auth_PinGrantCode."]
    pub PinGrantInfo: *const EOS_Auth_PinGrantInfo,
    #[doc = " The Epic Account ID that has been previously selected to be used for the current application.\n Applications should use this ID to authenticate with online backend services that store game-scoped data for users.\n\n Note: This ID may be different from LocalUserId if the user has previously merged Epic accounts into the account\n represented by LocalUserId, and one of the accounts that got merged had game data associated with it for the application."]
    pub SelectedAccountId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Auth_LinkAccountCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Auth_LinkAccount Function."]
pub type EOS_Auth_LinkAccountCallbackInfo = _tagEOS_Auth_LinkAccountCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Auth_LinkAccount\n @param Data A EOS_Auth_LinkAccountCallbackInfo containing the output information and result"]
pub type EOS_Auth_OnLinkAccountCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Auth_LinkAccountCallbackInfo)>;
#[doc = " Input parameters for the EOS_Auth_VerifyUserAuth function.\n This operation is destructive, the pointer will remain the same but the data pointers inside will update"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_VerifyUserAuthOptions {
    #[doc = " API Version: Set this to EOS_AUTH_VERIFYUSERAUTH_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Auth token to verify against the backend service"]
    pub AuthToken: *const EOS_Auth_Token,
}
impl Default for _tagEOS_Auth_VerifyUserAuthOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Auth_VerifyUserAuth function.\n This operation is destructive, the pointer will remain the same but the data pointers inside will update"]
pub type EOS_Auth_VerifyUserAuthOptions = _tagEOS_Auth_VerifyUserAuthOptions;
#[doc = " Output parameters for the EOS_Auth_VerifyUserAuth Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_VerifyUserAuthCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Auth_Login"]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Auth_VerifyUserAuthCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Auth_VerifyUserAuth Function."]
pub type EOS_Auth_VerifyUserAuthCallbackInfo = _tagEOS_Auth_VerifyUserAuthCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Auth_VerifyUserAuth\n @param Data A EOS_Auth_VerifyUserAuthCallbackInfo containing the output information and result"]
pub type EOS_Auth_OnVerifyUserAuthCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Auth_VerifyUserAuthCallbackInfo)>;
#[doc = " Input parameters for the EOS_Auth_CopyUserAuthToken function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Auth_CopyUserAuthTokenOptions {
    #[doc = " API Version: Set this to EOS_AUTH_COPYUSERAUTHTOKEN_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Auth_CopyUserAuthToken function."]
pub type EOS_Auth_CopyUserAuthTokenOptions = _tagEOS_Auth_CopyUserAuthTokenOptions;
#[doc = " Input parameters for the EOS_Auth_CopyIdToken function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_CopyIdTokenOptions {
    #[doc = " API Version: Set this to EOS_AUTH_COPYIDTOKEN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user being queried."]
    pub AccountId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Auth_CopyIdTokenOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Auth_CopyIdToken function."]
pub type EOS_Auth_CopyIdTokenOptions = _tagEOS_Auth_CopyIdTokenOptions;
#[doc = " A structure that contains an ID token.\n These structures are created by EOS_Auth_CopyIdToken and must be passed to EOS_Auth_IdToken_Release when finished."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_IdToken {
    #[doc = " API Version: Set this to EOS_AUTH_IDTOKEN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID described by the ID token.\n Use EOS_EpicAccountId_FromString to populate this field when validating a received ID token."]
    pub AccountId: EOS_EpicAccountId,
    #[doc = " The ID token as a Json Web Token (JWT) string."]
    pub JsonWebToken: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Auth_IdToken {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " A structure that contains an ID token.\n These structures are created by EOS_Auth_CopyIdToken and must be passed to EOS_Auth_IdToken_Release when finished."]
pub type EOS_Auth_IdToken = _tagEOS_Auth_IdToken;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_Auth_IdToken structure. This must be called on data retrieved from EOS_Auth_CopyIdToken.\n\n @param IdToken The ID token structure to be released.\n\n @see EOS_Auth_IdToken\n @see EOS_Auth_CopyIdToken"]
    pub fn EOS_Auth_IdToken_Release(IdToken: *mut EOS_Auth_IdToken);
}
#[doc = " Input parameters for the EOS_Auth_QueryIdToken function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_QueryIdTokenOptions {
    #[doc = " API Version: Set this to EOS_AUTH_QUERYIDTOKEN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local authenticated user."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The target Epic Account ID for which to query an ID token.\n This account id may be the same as the input LocalUserId or another merged account id associated with the local user's Epic account.\n\n An ID token for the selected account id of a locally authenticated user will always be readily available.\n To retrieve it for the selected account ID, you can use EOS_Auth_CopyIdToken directly after a successful user login."]
    pub TargetAccountId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Auth_QueryIdTokenOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Auth_QueryIdToken function."]
pub type EOS_Auth_QueryIdTokenOptions = _tagEOS_Auth_QueryIdTokenOptions;
#[doc = " Output parameters for the EOS_Auth_QueryIdToken Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_QueryIdTokenCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Auth_QueryIdToken"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local authenticated user."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The target Epic Account ID for which the ID token was retrieved."]
    pub TargetAccountId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Auth_QueryIdTokenCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Auth_QueryIdToken Function."]
pub type EOS_Auth_QueryIdTokenCallbackInfo = _tagEOS_Auth_QueryIdTokenCallbackInfo;
#[doc = " Function prototype definition for callbacks passed into EOS_Auth_QueryIdToken.\n\n @param Data A EOS_Auth_QueryIdTokenCallbackInfo containing the output information and result."]
pub type EOS_Auth_OnQueryIdTokenCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Auth_QueryIdTokenCallbackInfo)>;
#[doc = " Input parameters for the EOS_Auth_VerifyIdToken function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_VerifyIdTokenOptions {
    #[doc = " API Version: Set this to EOS_AUTH_VERIFYIDTOKEN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID token to verify.\n Use EOS_EpicAccountId_FromString to populate the AccountId field of this struct."]
    pub IdToken: *const EOS_Auth_IdToken,
}
impl Default for _tagEOS_Auth_VerifyIdTokenOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Auth_VerifyIdToken function."]
pub type EOS_Auth_VerifyIdTokenOptions = _tagEOS_Auth_VerifyIdTokenOptions;
#[doc = " Output parameters for the EOS_Auth_VerifyIdToken Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_VerifyIdTokenCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Auth_VerifyIdToken"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Epic Account Services Application ID."]
    pub ApplicationId: *const ::std::os::raw::c_char,
    #[doc = " Client ID of the authorized client."]
    pub ClientId: *const ::std::os::raw::c_char,
    #[doc = " Product ID."]
    pub ProductId: *const ::std::os::raw::c_char,
    #[doc = " Sandbox ID."]
    pub SandboxId: *const ::std::os::raw::c_char,
    #[doc = " Deployment ID."]
    pub DeploymentId: *const ::std::os::raw::c_char,
    #[doc = " Epic Account display name.\n\n This value may be set to an empty string."]
    pub DisplayName: *const ::std::os::raw::c_char,
    #[doc = " Flag set to indicate whether external account information is present.\n Applications must always first check this value to be set before attempting\n to read the ExternalAccountIdType, ExternalAccountId, ExternalAccountDisplayName and Platform fields.\n\n This flag is set when the user has logged in to their Epic Account using external account credentials, e.g. through local platform authentication."]
    pub bIsExternalAccountInfoPresent: EOS_Bool,
    #[doc = " The identity provider that the user logged in with to their Epic Account.\n\n If bIsExternalAccountInfoPresent is set, this field describes the external account type."]
    pub ExternalAccountIdType: EOS_EExternalAccountType,
    #[doc = " The external account ID of the logged in user.\n\n This value may be set to an empty string."]
    pub ExternalAccountId: *const ::std::os::raw::c_char,
    #[doc = " The external account display name.\n\n This value may be set to an empty string."]
    pub ExternalAccountDisplayName: *const ::std::os::raw::c_char,
    #[doc = " Platform that the user is connected from.\n\n This value may be set to an empty string."]
    pub Platform: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Auth_VerifyIdTokenCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Auth_VerifyIdToken Function."]
pub type EOS_Auth_VerifyIdTokenCallbackInfo = _tagEOS_Auth_VerifyIdTokenCallbackInfo;
#[doc = " Function prototype definition for callbacks passed into EOS_Auth_VerifyIdToken.\n\n @param Data A EOS_Auth_VerifyIdTokenCallbackInfo containing the output information and result."]
pub type EOS_Auth_OnVerifyIdTokenCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Auth_VerifyIdTokenCallbackInfo)>;
#[doc = " Input parameters for the EOS_Auth_AddNotifyLoginStatusChanged Function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Auth_AddNotifyLoginStatusChangedOptions {
    #[doc = " API Version: Set this to EOS_AUTH_ADDNOTIFYLOGINSTATUSCHANGED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Auth_AddNotifyLoginStatusChanged Function."]
pub type EOS_Auth_AddNotifyLoginStatusChangedOptions =
    _tagEOS_Auth_AddNotifyLoginStatusChangedOptions;
#[doc = " Input parameters for the EOS_Auth_DeletePersistentAuth function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_DeletePersistentAuthOptions {
    #[doc = " API Version: Set this to EOS_AUTH_DELETEPERSISTENTAUTH_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " A long-lived refresh token that is used with the EOS_LCT_PersistentAuth login type and is to be revoked from the authentication server. Only used on Console platforms.\n On Desktop and Mobile platforms, set this parameter to NULL."]
    pub RefreshToken: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Auth_DeletePersistentAuthOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Auth_DeletePersistentAuth function."]
pub type EOS_Auth_DeletePersistentAuthOptions = _tagEOS_Auth_DeletePersistentAuthOptions;
#[doc = " Output parameters for the EOS_Auth_DeletePersistentAuth Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_DeletePersistentAuthCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Auth_DeletePersistentAuth"]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Auth_DeletePersistentAuthCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Auth_DeletePersistentAuth Function."]
pub type EOS_Auth_DeletePersistentAuthCallbackInfo = _tagEOS_Auth_DeletePersistentAuthCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Auth_DeletePersistentAuth\n @param Data A EOS_Auth_DeletePersistentAuthCallbackInfo containing the output information and result"]
pub type EOS_Auth_OnDeletePersistentAuthCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Auth_DeletePersistentAuthCallbackInfo),
>;
#[doc = " Output parameters for the EOS_Auth_OnLoginStatusChangedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Auth_LoginStatusChangedCallbackInfo {
    #[doc = " Context that was passed into EOS_Auth_AddNotifyLoginStatusChanged"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user whose status has changed"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The status prior to the change"]
    pub PrevStatus: EOS_ELoginStatus,
    #[doc = " The status at the time of the notification"]
    pub CurrentStatus: EOS_ELoginStatus,
}
impl Default for _tagEOS_Auth_LoginStatusChangedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Auth_OnLoginStatusChangedCallback Function."]
pub type EOS_Auth_LoginStatusChangedCallbackInfo = _tagEOS_Auth_LoginStatusChangedCallbackInfo;
#[doc = " Function prototype definition for notifications that come from EOS_Auth_AddNotifyLoginStatusChanged\n\n @param Data A EOS_Auth_LoginStatusChangedCallbackInfo containing the output information and result"]
pub type EOS_Auth_OnLoginStatusChangedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Auth_LoginStatusChangedCallbackInfo),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_EcomHandle {
    _unused: [u8; 0],
}
pub type EOS_HEcom = *mut EOS_EcomHandle;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_Ecom_TransactionHandle {
    _unused: [u8; 0],
}
#[doc = " This handle is copied when EOS_Ecom_CopyTransactionById or EOS_Ecom_CopyTransactionByIndex is called.\n A EOS_Ecom_CheckoutCallbackInfo provides the ID for the copy.\n After being copied, EOS_Ecom_Transaction_Release must be called.\n\n @see EOS_Ecom_CheckoutCallbackInfo\n @see EOS_Ecom_CopyTransactionById\n @see EOS_Ecom_CopyTransactionByIndex\n @see EOS_Ecom_Transaction_Release"]
pub type EOS_Ecom_HTransaction = *mut EOS_Ecom_TransactionHandle;
#[doc = " A unique identifier for a catalog item defined and stored with the backend catalog service.\n A catalog item represents a distinct object within the catalog.  When acquired by an account, an\n entitlement is granted that references a specific catalog item."]
pub type EOS_Ecom_CatalogItemId = *const ::std::os::raw::c_char;
#[doc = " A unique identifier for a catalog offer defined and stored with the backend catalog service.\n A catalog offer is a purchasable collection of 1 or more items, associated with a price (which\n could be 0).  When an offer is purchased an entitlement is granted for each of the items\n referenced by the offer."]
pub type EOS_Ecom_CatalogOfferId = *const ::std::os::raw::c_char;
#[doc = " An identifier which is defined on a catalog item and stored with the backend catalog service.\n The entitlement name may not be unique.  A catalog may be configured with multiple items with the\n same entitlement name in order to define a logical grouping of entitlements.  This is used to\n retrieve all entitlements granted to an account grouped in this way.\n\n @see EOS_Ecom_QueryEntitlements"]
pub type EOS_Ecom_EntitlementName = *const ::std::os::raw::c_char;
#[doc = " A unique identifier for an entitlement owned by an account.  An entitlement is always associated\n with a single account.  The entitlement ID is provided to allow redeeming the entitlement as\n well as identify individual entitlement grants.\n\n @see EOS_Ecom_QueryEntitlements\n @see EOS_Ecom_RedeemEntitlements"]
pub type EOS_Ecom_EntitlementId = *const ::std::os::raw::c_char;
#[doc = " A unique identifier for the Sandbox.\n\n @see EOS_Ecom_QueryOwnershipBySandboxIds"]
pub type EOS_Ecom_SandboxId = *const ::std::os::raw::c_char;
#[doc = " The catalog item is not owned by the local user"]
pub const EOS_EOwnershipStatus_EOS_OS_NotOwned: EOS_EOwnershipStatus = 0;
#[doc = " The catalog item is owned by the local user"]
pub const EOS_EOwnershipStatus_EOS_OS_Owned: EOS_EOwnershipStatus = 1;
pub const EOS_EOwnershipStatus___EOS_EOwnershipStatus_PAD_INT32__: EOS_EOwnershipStatus =
    2147483647;
#[doc = " An enumeration of the different ownership statuses."]
pub type EOS_EOwnershipStatus = ::std::os::raw::c_int;
#[doc = " This entitlement is intended to persist."]
pub const EOS_EEcomItemType_EOS_EIT_Durable: EOS_EEcomItemType = 0;
#[doc = " This entitlement is intended to be transient and redeemed.\n\n @see EOS_Ecom_RedeemEntitlements"]
pub const EOS_EEcomItemType_EOS_EIT_Consumable: EOS_EEcomItemType = 1;
#[doc = " This entitlement has a type that is not currently intended for an in-game store."]
pub const EOS_EEcomItemType_EOS_EIT_Other: EOS_EEcomItemType = 2;
pub const EOS_EEcomItemType___EOS_EEcomItemType_PAD_INT32__: EOS_EEcomItemType = 2147483647;
#[doc = " An enumeration defining the type of catalog item.  The primary use is to identify how the item is expended."]
pub type EOS_EEcomItemType = ::std::os::raw::c_int;
#[doc = " Current orientation will be used"]
pub const EOS_ECheckoutOrientation_EOS_ECO_Default: EOS_ECheckoutOrientation = 0;
#[doc = " Portrait orientation"]
pub const EOS_ECheckoutOrientation_EOS_ECO_Portrait: EOS_ECheckoutOrientation = 1;
#[doc = " Landscape orientation"]
pub const EOS_ECheckoutOrientation_EOS_ECO_Landscape: EOS_ECheckoutOrientation = 2;
pub const EOS_ECheckoutOrientation___EOS_ECheckoutOrientation_PAD_INT32__:
    EOS_ECheckoutOrientation = 2147483647;
#[doc = " An enumeration defining the possible orientation for the checkout page. This will be used on mobile."]
pub type EOS_ECheckoutOrientation = ::std::os::raw::c_int;
#[doc = " Contains information about a single entitlement associated with an account. Instances of this structure are\n created by EOS_Ecom_CopyEntitlementByIndex, EOS_Ecom_CopyEntitlementByNameAndIndex, or EOS_Ecom_CopyEntitlementById.\n They must be passed to EOS_Ecom_Entitlement_Release."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_Entitlement {
    #[doc = " API Version: Set this to EOS_ECOM_ENTITLEMENT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the entitlement"]
    pub EntitlementName: EOS_Ecom_EntitlementName,
    #[doc = " ID of the entitlement owned by an account"]
    pub EntitlementId: EOS_Ecom_EntitlementId,
    #[doc = " ID of the item associated with the offer which granted this entitlement"]
    pub CatalogItemId: EOS_Ecom_CatalogItemId,
    #[doc = " If queried using pagination then ServerIndex represents the index of the entitlement as it\n exists on the server.  If not queried using pagination then ServerIndex will be -1."]
    pub ServerIndex: i32,
    #[doc = " If true then the catalog has this entitlement marked as redeemed"]
    pub bRedeemed: EOS_Bool,
    #[doc = " If not -1 then this is a POSIX timestamp that this entitlement will end"]
    pub EndTimestamp: i64,
}
impl Default for _tagEOS_Ecom_Entitlement {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single entitlement associated with an account. Instances of this structure are\n created by EOS_Ecom_CopyEntitlementByIndex, EOS_Ecom_CopyEntitlementByNameAndIndex, or EOS_Ecom_CopyEntitlementById.\n They must be passed to EOS_Ecom_Entitlement_Release."]
pub type EOS_Ecom_Entitlement = _tagEOS_Ecom_Entitlement;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_Ecom_Entitlement structure. This must be called on data\n retrieved from EOS_Ecom_CopyEntitlementByIndex and EOS_Ecom_CopyEntitlementById.\n\n @param Entitlement - The entitlement structure to be released\n\n @see EOS_Ecom_Entitlement\n @see EOS_Ecom_CopyEntitlementByIndex\n @see EOS_Ecom_CopyEntitlementById"]
    pub fn EOS_Ecom_Entitlement_Release(Entitlement: *mut EOS_Ecom_Entitlement);
}
#[doc = " Contains information about a single item ownership associated with an account. This structure is\n returned as part of the EOS_Ecom_QueryOwnershipCallbackInfo structure."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_ItemOwnership {
    #[doc = " API Version: Set this to EOS_ECOM_ITEMOWNERSHIP_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " ID of the catalog item"]
    pub Id: EOS_Ecom_CatalogItemId,
    #[doc = " Is this catalog item owned by the local user"]
    pub OwnershipStatus: EOS_EOwnershipStatus,
}
impl Default for _tagEOS_Ecom_ItemOwnership {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single item ownership associated with an account. This structure is\n returned as part of the EOS_Ecom_QueryOwnershipCallbackInfo structure."]
pub type EOS_Ecom_ItemOwnership = _tagEOS_Ecom_ItemOwnership;
#[doc = " Contains information about a single item within the catalog. Instances of this structure are created\n by EOS_Ecom_CopyOfferItemByIndex. They must be passed to EOS_Ecom_CatalogItem_Release."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CatalogItem {
    #[doc = " API Version: Set this to EOS_ECOM_CATALOGITEM_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product namespace in which this item exists"]
    pub CatalogNamespace: *const ::std::os::raw::c_char,
    #[doc = " The ID of this item"]
    pub Id: EOS_Ecom_CatalogItemId,
    #[doc = " The entitlement name associated with this item"]
    pub EntitlementName: EOS_Ecom_EntitlementName,
    #[doc = " Localized UTF-8 title of this item"]
    pub TitleText: *const ::std::os::raw::c_char,
    #[doc = " Localized UTF-8 description of this item"]
    pub DescriptionText: *const ::std::os::raw::c_char,
    #[doc = " Localized UTF-8 long description of this item"]
    pub LongDescriptionText: *const ::std::os::raw::c_char,
    #[doc = " Localized UTF-8 technical details of this item"]
    pub TechnicalDetailsText: *const ::std::os::raw::c_char,
    #[doc = " Localized UTF-8 developer of this item"]
    pub DeveloperText: *const ::std::os::raw::c_char,
    #[doc = " The type of item as defined in the catalog"]
    pub ItemType: EOS_EEcomItemType,
    #[doc = " If not -1 then this is the POSIX timestamp that the entitlement will end"]
    pub EntitlementEndTimestamp: i64,
}
impl Default for _tagEOS_Ecom_CatalogItem {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single item within the catalog. Instances of this structure are created\n by EOS_Ecom_CopyOfferItemByIndex. They must be passed to EOS_Ecom_CatalogItem_Release."]
pub type EOS_Ecom_CatalogItem = _tagEOS_Ecom_CatalogItem;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_Ecom_CatalogItem structure. This must be called on data\n retrieved from EOS_Ecom_CopyOfferItemByIndex.\n\n @param CatalogItem - The catalog item structure to be released\n\n @see EOS_Ecom_CatalogItem\n @see EOS_Ecom_CopyOfferItemByIndex"]
    pub fn EOS_Ecom_CatalogItem_Release(CatalogItem: *mut EOS_Ecom_CatalogItem);
}
#[doc = " Contains information about a single offer within the catalog. Instances of this structure are\n created by EOS_Ecom_CopyOfferByIndex. They must be passed to EOS_Ecom_CatalogOffer_Release.\n Prices are stored in the lowest denomination for the associated currency.  If CurrencyCode is\n \"USD\" then a price of 299 represents \"$2.99\"."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CatalogOffer {
    #[doc = " API Version: Set this to EOS_ECOM_CATALOGOFFER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The index of this offer as it exists on the server.\n This is useful for understanding pagination data."]
    pub ServerIndex: i32,
    #[doc = " Product namespace in which this offer exists"]
    pub CatalogNamespace: *const ::std::os::raw::c_char,
    #[doc = " The ID of this offer"]
    pub Id: EOS_Ecom_CatalogOfferId,
    #[doc = " Localized UTF-8 title of this offer"]
    pub TitleText: *const ::std::os::raw::c_char,
    #[doc = " Localized UTF-8 description of this offer"]
    pub DescriptionText: *const ::std::os::raw::c_char,
    #[doc = " Localized UTF-8 long description of this offer"]
    pub LongDescriptionText: *const ::std::os::raw::c_char,
    #[doc = " Deprecated.\n EOS_Ecom_CatalogItem::TechnicalDetailsText is still valid."]
    pub TechnicalDetailsText_DEPRECATED: *const ::std::os::raw::c_char,
    #[doc = " The Currency Code for this offer"]
    pub CurrencyCode: *const ::std::os::raw::c_char,
    #[doc = " If this value is EOS_Success then OriginalPrice, CurrentPrice, and DiscountPercentage contain valid data.\n Otherwise this value represents the error that occurred on the price query."]
    pub PriceResult: EOS_EResult,
    #[doc = " The original price of this offer as a 32-bit number is deprecated."]
    pub OriginalPrice_DEPRECATED: u32,
    #[doc = " The current price including discounts of this offer as a 32-bit number is deprecated.."]
    pub CurrentPrice_DEPRECATED: u32,
    #[doc = " A value from 0 to 100 define the percentage of the OrignalPrice that the CurrentPrice represents"]
    pub DiscountPercentage: u8,
    #[doc = " Contains the POSIX timestamp that the offer expires or -1 if it does not expire"]
    pub ExpirationTimestamp: i64,
    #[doc = " The number of times that the requesting account has purchased this offer.\n This value is deprecated and the backend no longer returns this value."]
    pub PurchasedCount_DEPRECATED: u32,
    #[doc = " The maximum number of times that the offer can be purchased.\n A negative value implies there is no limit."]
    pub PurchaseLimit: i32,
    #[doc = " True if the user can purchase this offer."]
    pub bAvailableForPurchase: EOS_Bool,
    #[doc = " The original price of this offer as a 64-bit number."]
    pub OriginalPrice64: u64,
    #[doc = " The current price including discounts of this offer as a 64-bit number."]
    pub CurrentPrice64: u64,
    #[doc = " The decimal point for the provided price.  For example, DecimalPoint '2' and CurrentPrice64 '12345' would be '123.45'."]
    pub DecimalPoint: u32,
    #[doc = " Timestamp indicating when the time when the offer was released. Can be ignored if set to -1."]
    pub ReleaseDateTimestamp: i64,
    #[doc = " Timestamp indicating the effective date of the offer. Can be ignored if set to -1."]
    pub EffectiveDateTimestamp: i64,
}
impl Default for _tagEOS_Ecom_CatalogOffer {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single offer within the catalog. Instances of this structure are\n created by EOS_Ecom_CopyOfferByIndex. They must be passed to EOS_Ecom_CatalogOffer_Release.\n Prices are stored in the lowest denomination for the associated currency.  If CurrencyCode is\n \"USD\" then a price of 299 represents \"$2.99\"."]
pub type EOS_Ecom_CatalogOffer = _tagEOS_Ecom_CatalogOffer;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_Ecom_CatalogOffer structure. This must be called on data\n retrieved from EOS_Ecom_CopyOfferByIndex.\n\n @param CatalogOffer - The catalog offer structure to be released\n\n @see EOS_Ecom_CatalogOffer\n @see EOS_Ecom_CopyOfferByIndex"]
    pub fn EOS_Ecom_CatalogOffer_Release(CatalogOffer: *mut EOS_Ecom_CatalogOffer);
}
#[doc = " Contains information about a key image used by the catalog.  Instances of this structure are\n created by EOS_Ecom_CopyItemImageInfoByIndex.  They must be passed to EOS_Ecom_KeyImageInfo_Release.\n A Key Image is defined within Dev Portal and is associated with a Catalog Item.  A Key Image is\n intended to be used to provide imagery for an in-game store.\n\n @see EOS_Ecom_CopyItemImageInfoByIndex\n @see EOS_Ecom_KeyImageInfo_Release"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_KeyImageInfo {
    #[doc = " API Version: Set this to EOS_ECOM_KEYIMAGEINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Describes the usage of the image (ex: home_thumbnail)"]
    pub Type: *const ::std::os::raw::c_char,
    #[doc = " The URL of the image"]
    pub Url: *const ::std::os::raw::c_char,
    #[doc = " The expected width in pixels of the image"]
    pub Width: u32,
    #[doc = " The expected height in pixels of the image"]
    pub Height: u32,
}
impl Default for _tagEOS_Ecom_KeyImageInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a key image used by the catalog.  Instances of this structure are\n created by EOS_Ecom_CopyItemImageInfoByIndex.  They must be passed to EOS_Ecom_KeyImageInfo_Release.\n A Key Image is defined within Dev Portal and is associated with a Catalog Item.  A Key Image is\n intended to be used to provide imagery for an in-game store.\n\n @see EOS_Ecom_CopyItemImageInfoByIndex\n @see EOS_Ecom_KeyImageInfo_Release"]
pub type EOS_Ecom_KeyImageInfo = _tagEOS_Ecom_KeyImageInfo;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_Ecom_KeyImageInfo structure. This must be called on data\n retrieved from EOS_Ecom_CopyItemImageInfoByIndex.\n\n @param KeyImageInfo - The key image info structure to be released\n\n @see EOS_Ecom_KeyImageInfo\n @see EOS_Ecom_CopyItemImageInfoByIndex"]
    pub fn EOS_Ecom_KeyImageInfo_Release(KeyImageInfo: *mut EOS_Ecom_KeyImageInfo);
}
#[doc = " Contains information about a single release within the catalog. Instances of this structure are\n created by EOS_Ecom_CopyItemReleaseByIndex. They must be passed to EOS_Ecom_CatalogRelease_Release."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CatalogRelease {
    #[doc = " API Version: Set this to EOS_ECOM_CATALOGRELEASE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The number of APP IDs"]
    pub CompatibleAppIdCount: u32,
    #[doc = " A list of compatible APP IDs"]
    pub CompatibleAppIds: *mut *const ::std::os::raw::c_char,
    #[doc = " The number of platforms"]
    pub CompatiblePlatformCount: u32,
    #[doc = " A list of compatible Platforms"]
    pub CompatiblePlatforms: *mut *const ::std::os::raw::c_char,
    #[doc = " Release note for compatible versions"]
    pub ReleaseNote: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Ecom_CatalogRelease {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single release within the catalog. Instances of this structure are\n created by EOS_Ecom_CopyItemReleaseByIndex. They must be passed to EOS_Ecom_CatalogRelease_Release."]
pub type EOS_Ecom_CatalogRelease = _tagEOS_Ecom_CatalogRelease;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_Ecom_CatalogRelease structure. This must be called on\n data retrieved from EOS_Ecom_CopyItemReleaseByIndex.\n\n @param CatalogRelease - The catalog release structure to be released\n\n @see EOS_Ecom_CatalogRelease\n @see EOS_Ecom_CopyItemReleaseByIndex"]
    pub fn EOS_Ecom_CatalogRelease_Release(CatalogRelease: *mut EOS_Ecom_CatalogRelease);
}
#[doc = " Contains information about a request to purchase a single offer.  This structure is set as part\n of the EOS_Ecom_CheckoutOptions structure."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CheckoutEntry {
    #[doc = " API Version: Set this to EOS_ECOM_CHECKOUTENTRY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the offer to purchase"]
    pub OfferId: EOS_Ecom_CatalogOfferId,
}
impl Default for _tagEOS_Ecom_CheckoutEntry {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a request to purchase a single offer.  This structure is set as part\n of the EOS_Ecom_CheckoutOptions structure."]
pub type EOS_Ecom_CheckoutEntry = _tagEOS_Ecom_CheckoutEntry;
#[doc = " Input parameters for the EOS_Ecom_QueryOwnership function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_QueryOwnershipOptions {
    #[doc = " API Version: Set this to EOS_ECOM_QUERYOWNERSHIP_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose ownership to query"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The array of Catalog Item IDs to check for ownership"]
    pub CatalogItemIds: *mut EOS_Ecom_CatalogItemId,
    #[doc = " The number of Catalog Item IDs to in the array"]
    pub CatalogItemIdCount: u32,
    #[doc = " Optional product namespace, if not the one specified during initialization"]
    pub CatalogNamespace: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Ecom_QueryOwnershipOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_QueryOwnership function."]
pub type EOS_Ecom_QueryOwnershipOptions = _tagEOS_Ecom_QueryOwnershipOptions;
#[doc = " Output parameters for the EOS_Ecom_QueryOwnership Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_QueryOwnershipCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Ecom_QueryOwnership"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user whose ownership was queried"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " List of catalog items and their ownership status"]
    pub ItemOwnership: *const EOS_Ecom_ItemOwnership,
    #[doc = " Number of ownership results are included in this callback"]
    pub ItemOwnershipCount: u32,
}
impl Default for _tagEOS_Ecom_QueryOwnershipCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Ecom_QueryOwnership Function."]
pub type EOS_Ecom_QueryOwnershipCallbackInfo = _tagEOS_Ecom_QueryOwnershipCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Ecom_QueryOwnership\n @param Data A EOS_Ecom_QueryOwnershipCallbackInfo containing the output information and result"]
pub type EOS_Ecom_OnQueryOwnershipCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Ecom_QueryOwnershipCallbackInfo)>;
#[doc = " Input parameters for the EOS_Ecom_QueryOwnershipBySandboxIds function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_QueryOwnershipBySandboxIdsOptions {
    #[doc = " API Version: Set this to EOS_ECOM_QUERYOWNERSHIPBYSANDBOXIDSOPTIONS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose ownership to query."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The array of Sandbox IDs to check for ownership."]
    pub SandboxIds: *mut EOS_Ecom_SandboxId,
    #[doc = " The number of Sandbox IDs in the query."]
    pub SandboxIdsCount: u32,
}
impl Default for _tagEOS_Ecom_QueryOwnershipBySandboxIdsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_QueryOwnershipBySandboxIds function."]
pub type EOS_Ecom_QueryOwnershipBySandboxIdsOptions =
    _tagEOS_Ecom_QueryOwnershipBySandboxIdsOptions;
#[doc = " Contains all owned catalog items for a sandbox ID. This structure is\n returned as part of the EOS_Ecom_QueryOwnershipBySandboxIdsCallbackInfo structure.\n Note: The SandboxID and CatalogItemId strings will not remain valid after EOS_Ecom_OnQueryOwnershipBySandboxIdsCallback, so a copy should be as needed."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_SandboxIdItemOwnership {
    #[doc = " SandboxId"]
    pub SandboxId: EOS_Ecom_SandboxId,
    #[doc = " List of all owned catalog items for this SandboxId"]
    pub OwnedCatalogItemIds: *const EOS_Ecom_CatalogItemId,
    #[doc = " Number of owned catalog items for this SandboxId"]
    pub OwnedCatalogItemIdsCount: u32,
}
impl Default for _tagEOS_Ecom_SandboxIdItemOwnership {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains all owned catalog items for a sandbox ID. This structure is\n returned as part of the EOS_Ecom_QueryOwnershipBySandboxIdsCallbackInfo structure.\n Note: The SandboxID and CatalogItemId strings will not remain valid after EOS_Ecom_OnQueryOwnershipBySandboxIdsCallback, so a copy should be as needed."]
pub type EOS_Ecom_SandboxIdItemOwnership = _tagEOS_Ecom_SandboxIdItemOwnership;
#[doc = " Output parameters for the EOS_Ecom_QueryOwnershipBySandboxIds Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_QueryOwnershipBySandboxIdsCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Ecom_QueryOwnership"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user whose ownership was queried"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " List of SandboxIds and their corresponding owned catalog item Ids. If there are no ownership items, the OwnedCatalogItemIdsCount is 0 and OwnedCatalogItemIds is null."]
    pub SandboxIdItemOwnerships: *const EOS_Ecom_SandboxIdItemOwnership,
    #[doc = " Number of ownership results are included in this callback"]
    pub SandboxIdItemOwnershipsCount: u32,
}
impl Default for _tagEOS_Ecom_QueryOwnershipBySandboxIdsCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Ecom_QueryOwnershipBySandboxIds Function."]
pub type EOS_Ecom_QueryOwnershipBySandboxIdsCallbackInfo =
    _tagEOS_Ecom_QueryOwnershipBySandboxIdsCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Ecom_QueryOwnershipBySandboxIds\n @param Data A EOS_Ecom_QueryOwnershipBySandboxIdsCallbackInfo containing the output information and result"]
pub type EOS_Ecom_OnQueryOwnershipBySandboxIdsCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Ecom_QueryOwnershipBySandboxIdsCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Ecom_QueryOwnershipToken function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_QueryOwnershipTokenOptions {
    #[doc = " API Version: Set this to EOS_ECOM_QUERYOWNERSHIPTOKEN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose ownership token you want to query"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The array of Catalog Item IDs to check for ownership, matching in number to the CatalogItemIdCount"]
    pub CatalogItemIds: *mut EOS_Ecom_CatalogItemId,
    #[doc = " The number of catalog item IDs to query"]
    pub CatalogItemIdCount: u32,
    #[doc = " Optional product namespace, if not the one specified during initialization"]
    pub CatalogNamespace: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Ecom_QueryOwnershipTokenOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_QueryOwnershipToken function."]
pub type EOS_Ecom_QueryOwnershipTokenOptions = _tagEOS_Ecom_QueryOwnershipTokenOptions;
#[doc = " Output parameters for the EOS_Ecom_QueryOwnershipToken Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_QueryOwnershipTokenCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Ecom_QueryOwnershipToken"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user whose ownership token was queried"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Ownership token containing details about the catalog items queried"]
    pub OwnershipToken: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Ecom_QueryOwnershipTokenCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Ecom_QueryOwnershipToken Function."]
pub type EOS_Ecom_QueryOwnershipTokenCallbackInfo = _tagEOS_Ecom_QueryOwnershipTokenCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Ecom_QueryOwnershipToken\n @param Data A EOS_Ecom_QueryOwnershipTokenCallbackInfo containing the output information and result"]
pub type EOS_Ecom_OnQueryOwnershipTokenCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Ecom_QueryOwnershipTokenCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Ecom_QueryEntitlements function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_QueryEntitlementsOptions {
    #[doc = " API Version: Set this to EOS_ECOM_QUERYENTITLEMENTS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose Entitlements you want to retrieve"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " An array of Entitlement Names that you want to check"]
    pub EntitlementNames: *mut EOS_Ecom_EntitlementName,
    #[doc = " The number of Entitlement Names included in the array, up to EOS_ECOM_QUERYENTITLEMENTS_MAX_ENTITLEMENT_IDS; use zero to request all Entitlements associated with the user's Epic Online Services account."]
    pub EntitlementNameCount: u32,
    #[doc = " If true, Entitlements that have been redeemed will be included in the results."]
    pub bIncludeRedeemed: EOS_Bool,
    #[doc = " If not provided then the SandboxId is used as the catalog namespace"]
    pub OverrideCatalogNamespace: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Ecom_QueryEntitlementsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_QueryEntitlements function."]
pub type EOS_Ecom_QueryEntitlementsOptions = _tagEOS_Ecom_QueryEntitlementsOptions;
#[doc = " Output parameters for the EOS_Ecom_QueryEntitlements Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_QueryEntitlementsCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Ecom_QueryEntitlements"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user whose entitlement was queried"]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Ecom_QueryEntitlementsCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Ecom_QueryEntitlements Function."]
pub type EOS_Ecom_QueryEntitlementsCallbackInfo = _tagEOS_Ecom_QueryEntitlementsCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Ecom_QueryOwnershipToken\n @param Data A EOS_Ecom_QueryEntitlementsCallbackInfo containing the output information and result"]
pub type EOS_Ecom_OnQueryEntitlementsCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Ecom_QueryEntitlementsCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Ecom_QueryEntitlementToken function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_QueryEntitlementTokenOptions {
    #[doc = " API Version: Set this to EOS_ECOM_QUERYENTITLEMENTTOKEN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose Entitlements you want to retrieve"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " An array of Entitlement Names that you want to check"]
    pub EntitlementNames: *mut EOS_Ecom_EntitlementName,
    #[doc = " The number of Entitlement Names included in the array, up to EOS_ECOM_QUERYENTITLEMENTTOKEN_MAX_ENTITLEMENT_IDS; use zero to request all Entitlements associated with the user's Epic Online Services account."]
    pub EntitlementNameCount: u32,
}
impl Default for _tagEOS_Ecom_QueryEntitlementTokenOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_QueryEntitlementToken function."]
pub type EOS_Ecom_QueryEntitlementTokenOptions = _tagEOS_Ecom_QueryEntitlementTokenOptions;
#[doc = " Output parameters for the EOS_Ecom_QueryEntitlementToken Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_QueryEntitlementTokenCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Ecom_QueryEntitlementToken"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user whose entitlement was queried"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Entitlements token containing details about the catalog items queried"]
    pub EntitlementToken: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Ecom_QueryEntitlementTokenCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Ecom_QueryEntitlementToken Function."]
pub type EOS_Ecom_QueryEntitlementTokenCallbackInfo =
    _tagEOS_Ecom_QueryEntitlementTokenCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Ecom_QueryEntitlementToken.\n @param Data A EOS_Ecom_QueryEntitlementTokenCallbackInfo containing the output information and result."]
pub type EOS_Ecom_OnQueryEntitlementTokenCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Ecom_QueryEntitlementTokenCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Ecom_QueryOffers function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_QueryOffersOptions {
    #[doc = " API Version: Set this to EOS_ECOM_QUERYOFFERS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose offer to query"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " If not provided then the SandboxId is used as the catalog namespace"]
    pub OverrideCatalogNamespace: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Ecom_QueryOffersOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_QueryOffers function."]
pub type EOS_Ecom_QueryOffersOptions = _tagEOS_Ecom_QueryOffersOptions;
#[doc = " Output parameters for the EOS_Ecom_QueryOffers Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_QueryOffersCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Ecom_QueryOffers"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user whose offer was queried; needed for localization of Catalog Item (Item) description text and pricing information"]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Ecom_QueryOffersCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Ecom_QueryOffers Function."]
pub type EOS_Ecom_QueryOffersCallbackInfo = _tagEOS_Ecom_QueryOffersCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Ecom_QueryOffers. When one or more cached offers have an invalid price, the callback returns the result code EOS_EResult::EOS_Ecom_CatalogOfferPriceInvalid.\n @param Data A EOS_Ecom_QueryOffersCallbackInfo containing the output information and result"]
pub type EOS_Ecom_OnQueryOffersCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Ecom_QueryOffersCallbackInfo)>;
#[doc = " Input parameters for the EOS_Ecom_Checkout function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CheckoutOptions {
    #[doc = " API Version: Set this to EOS_ECOM_CHECKOUT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user who is making the purchase"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The catalog namespace will be the current Sandbox ID (in EOS_Platform_Options) unless overridden by this field"]
    pub OverrideCatalogNamespace: *const ::std::os::raw::c_char,
    #[doc = " The number of EOS_Ecom_CheckoutEntry elements contained in Entries"]
    pub EntryCount: u32,
    #[doc = " An array of EOS_Ecom_CheckoutEntry elements, each containing the details of a single offer"]
    pub Entries: *const EOS_Ecom_CheckoutEntry,
    #[doc = " Preferred device orientation, specifies Default, Portrait or Landscape.\n This is used only on mobile platforms currently.\n SDK can use it to optimize how the Checkout page should be displayed.\n Please check the mobile SDK documentation for additional required setup."]
    pub PreferredOrientation: EOS_ECheckoutOrientation,
}
impl Default for _tagEOS_Ecom_CheckoutOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_Checkout function."]
pub type EOS_Ecom_CheckoutOptions = _tagEOS_Ecom_CheckoutOptions;
#[doc = " Output parameters for the EOS_Ecom_Checkout Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CheckoutCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful request, otherwise one of the error codes is returned. See eos_common.h"]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Ecom_Checkout"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the user who initiated the purchase"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The transaction ID which can be used to obtain an EOS_Ecom_HTransaction using EOS_Ecom_CopyTransactionById."]
    pub TransactionId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Ecom_CheckoutCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Ecom_Checkout Function."]
pub type EOS_Ecom_CheckoutCallbackInfo = _tagEOS_Ecom_CheckoutCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Ecom_Checkout\n @param Data A EOS_Ecom_CheckoutCallbackInfo containing the output information and result"]
pub type EOS_Ecom_OnCheckoutCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Ecom_CheckoutCallbackInfo)>;
#[doc = " Input parameters for the EOS_Ecom_RedeemEntitlements function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_RedeemEntitlementsOptions {
    #[doc = " API Version: Set this to EOS_ECOM_REDEEMENTITLEMENTS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user who is redeeming Entitlements"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The number of Entitlements to redeem"]
    pub EntitlementIdCount: u32,
    #[doc = " The array of Entitlements to redeem"]
    pub EntitlementIds: *mut EOS_Ecom_EntitlementId,
}
impl Default for _tagEOS_Ecom_RedeemEntitlementsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_RedeemEntitlements function."]
pub type EOS_Ecom_RedeemEntitlementsOptions = _tagEOS_Ecom_RedeemEntitlementsOptions;
#[doc = " Output parameters for the EOS_Ecom_RedeemEntitlements Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_RedeemEntitlementsCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful request, otherwise one of the error codes is returned. See eos_common.h"]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Ecom_RedeemEntitlements"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the user who has redeemed entitlements"]
    pub LocalUserId: EOS_EpicAccountId,
    pub RedeemedEntitlementIdsCount: u32,
    pub PreviouslyRedeemedEntitlementIdsCount: u32,
    pub InvalidEntitlementIdsCount: u32,
}
impl Default for _tagEOS_Ecom_RedeemEntitlementsCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Ecom_RedeemEntitlements Function."]
pub type EOS_Ecom_RedeemEntitlementsCallbackInfo = _tagEOS_Ecom_RedeemEntitlementsCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Ecom_RedeemEntitlements\n @param Data A EOS_Ecom_RedeemEntitlementsCallbackInfo containing the output information and result"]
pub type EOS_Ecom_OnRedeemEntitlementsCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Ecom_RedeemEntitlementsCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Ecom_GetLastRedeemedEntitlementsCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_GetLastRedeemedEntitlementsCountOptions {
    #[doc = " API Version: Set this to EOS_ECOM_GETLASTREDEEMEDENTITLEMENTSCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user for who to retrieve the last redeemed entitlements count"]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Ecom_GetLastRedeemedEntitlementsCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_GetLastRedeemedEntitlementsCount function."]
pub type EOS_Ecom_GetLastRedeemedEntitlementsCountOptions =
    _tagEOS_Ecom_GetLastRedeemedEntitlementsCountOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyLastRedeemedEntitlementByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyLastRedeemedEntitlementByIndexOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYLASTREDEEMEDENTITLEMENTBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose last redeemed entitlement id is being copied"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Index of the last redeemed entitlement id to retrieve from the cache"]
    pub RedeemedEntitlementIndex: u32,
}
impl Default for _tagEOS_Ecom_CopyLastRedeemedEntitlementByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyLastRedeemedEntitlementByIndex function."]
pub type EOS_Ecom_CopyLastRedeemedEntitlementByIndexOptions =
    _tagEOS_Ecom_CopyLastRedeemedEntitlementByIndexOptions;
#[doc = " List of entitlements in the Redeem Entitlements result that were redeemed."]
pub const EOS_ERedeemEntitlementsResultListType_EOS_ERERLT_Redeemed:
    EOS_ERedeemEntitlementsResultListType = 0;
#[doc = " List of entitlements in the Redeem Entitlements result that were previously redeemed."]
pub const EOS_ERedeemEntitlementsResultListType_EOS_ERERLT_PreviouslyRedeemed:
    EOS_ERedeemEntitlementsResultListType = 1;
#[doc = " List of entitlements in the Redeem Entitlements result that are invalid."]
pub const EOS_ERedeemEntitlementsResultListType_EOS_ERERLT_Invalid:
    EOS_ERedeemEntitlementsResultListType = 2;
pub const EOS_ERedeemEntitlementsResultListType___EOS_ERedeemEntitlementsResultListType_PAD_INT32__ : EOS_ERedeemEntitlementsResultListType = 2147483647 ;
#[doc = " An enumeration defining the different entitlement list types in the Redeem Entitlements result."]
pub type EOS_ERedeemEntitlementsResultListType = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_Ecom_GetLastRedeemEntitlementsResultCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_GetLastRedeemEntitlementsResultCountOptions {
    #[doc = " API Version: Set this to EOS_ECOM_GETLASTREDEEMENTITLEMENTSRESULTCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user for who to retrieve the last redeemed entitlements count"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Redeem Entitlements Result Type."]
    pub ResultType: EOS_ERedeemEntitlementsResultListType,
}
impl Default for _tagEOS_Ecom_GetLastRedeemEntitlementsResultCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_GetLastRedeemEntitlementsResultCount function."]
pub type EOS_Ecom_GetLastRedeemEntitlementsResultCountOptions =
    _tagEOS_Ecom_GetLastRedeemEntitlementsResultCountOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyLastRedeemEntitlementsResultByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyLastRedeemEntitlementsResultByIndexOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYLASTREDEEMENTITLEMENTSRESULTBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose last redeemed entitlement id is being copied"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Index of the entitlement of the given result type."]
    pub EntitlementIndex: u32,
    #[doc = " The Redeem Entitlements Result Type."]
    pub ResultType: EOS_ERedeemEntitlementsResultListType,
}
impl Default for _tagEOS_Ecom_CopyLastRedeemEntitlementsResultByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyLastRedeemEntitlementsResultByIndex function."]
pub type EOS_Ecom_CopyLastRedeemEntitlementsResultByIndexOptions =
    _tagEOS_Ecom_CopyLastRedeemEntitlementsResultByIndexOptions;
#[doc = " Input parameters for the EOS_Ecom_GetEntitlementsCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_GetEntitlementsCountOptions {
    #[doc = " API Version: Set this to EOS_ECOM_GETENTITLEMENTSCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user for which to retrieve the entitlement count"]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Ecom_GetEntitlementsCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_GetEntitlementsCount function."]
pub type EOS_Ecom_GetEntitlementsCountOptions = _tagEOS_Ecom_GetEntitlementsCountOptions;
#[doc = " Input parameters for the EOS_Ecom_GetEntitlementsByNameCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_GetEntitlementsByNameCountOptions {
    #[doc = " API Version: Set this to EOS_ECOM_GETENTITLEMENTSBYNAMECOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user for which to retrieve the entitlement count"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Name of the entitlement to count in the cache"]
    pub EntitlementName: EOS_Ecom_EntitlementName,
}
impl Default for _tagEOS_Ecom_GetEntitlementsByNameCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_GetEntitlementsByNameCount function."]
pub type EOS_Ecom_GetEntitlementsByNameCountOptions =
    _tagEOS_Ecom_GetEntitlementsByNameCountOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyEntitlementByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyEntitlementByIndexOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYENTITLEMENTBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose entitlement is being copied"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Index of the entitlement to retrieve from the cache"]
    pub EntitlementIndex: u32,
}
impl Default for _tagEOS_Ecom_CopyEntitlementByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyEntitlementByIndex function."]
pub type EOS_Ecom_CopyEntitlementByIndexOptions = _tagEOS_Ecom_CopyEntitlementByIndexOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyEntitlementByNameAndIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyEntitlementByNameAndIndexOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYENTITLEMENTBYNAMEANDINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose entitlement is being copied"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Name of the entitlement to retrieve from the cache"]
    pub EntitlementName: EOS_Ecom_EntitlementName,
    #[doc = " Index of the entitlement within the named set to retrieve from the cache."]
    pub Index: u32,
}
impl Default for _tagEOS_Ecom_CopyEntitlementByNameAndIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyEntitlementByNameAndIndex function."]
pub type EOS_Ecom_CopyEntitlementByNameAndIndexOptions =
    _tagEOS_Ecom_CopyEntitlementByNameAndIndexOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyEntitlementById function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyEntitlementByIdOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYENTITLEMENTBYID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose entitlement is being copied"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " ID of the entitlement to retrieve from the cache"]
    pub EntitlementId: EOS_Ecom_EntitlementId,
}
impl Default for _tagEOS_Ecom_CopyEntitlementByIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyEntitlementById function."]
pub type EOS_Ecom_CopyEntitlementByIdOptions = _tagEOS_Ecom_CopyEntitlementByIdOptions;
#[doc = " Input parameters for the EOS_Ecom_GetOfferCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_GetOfferCountOptions {
    #[doc = " API Version: Set this to EOS_ECOM_GETOFFERCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose offers are being accessed"]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Ecom_GetOfferCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_GetOfferCount function."]
pub type EOS_Ecom_GetOfferCountOptions = _tagEOS_Ecom_GetOfferCountOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyOfferByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyOfferByIndexOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYOFFERBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose offer is being copied"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The index of the offer to get."]
    pub OfferIndex: u32,
}
impl Default for _tagEOS_Ecom_CopyOfferByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyOfferByIndex function."]
pub type EOS_Ecom_CopyOfferByIndexOptions = _tagEOS_Ecom_CopyOfferByIndexOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyOfferById function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyOfferByIdOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYOFFERBYID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose offer is being copied"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The ID of the offer to get."]
    pub OfferId: EOS_Ecom_CatalogOfferId,
}
impl Default for _tagEOS_Ecom_CopyOfferByIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyOfferById function."]
pub type EOS_Ecom_CopyOfferByIdOptions = _tagEOS_Ecom_CopyOfferByIdOptions;
#[doc = " Input parameters for the EOS_Ecom_GetOfferItemCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_GetOfferItemCountOptions {
    #[doc = " API Version: Set this to EOS_ECOM_GETOFFERITEMCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user who made the initial request for the Catalog Offer through EOS_Ecom_QueryOffers"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " An ID that corresponds to a cached Catalog Offer (retrieved by EOS_Ecom_CopyOfferByIndex)"]
    pub OfferId: EOS_Ecom_CatalogOfferId,
}
impl Default for _tagEOS_Ecom_GetOfferItemCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_GetOfferItemCount function."]
pub type EOS_Ecom_GetOfferItemCountOptions = _tagEOS_Ecom_GetOfferItemCountOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyOfferItemByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyOfferItemByIndexOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYOFFERITEMBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose item is being copied"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The ID of the offer to get the items for."]
    pub OfferId: EOS_Ecom_CatalogOfferId,
    #[doc = " The index of the item to get."]
    pub ItemIndex: u32,
}
impl Default for _tagEOS_Ecom_CopyOfferItemByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyOfferItemByIndex function."]
pub type EOS_Ecom_CopyOfferItemByIndexOptions = _tagEOS_Ecom_CopyOfferItemByIndexOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyItemById function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyItemByIdOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYITEMBYID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose item is being copied"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The ID of the item to get."]
    pub ItemId: EOS_Ecom_CatalogItemId,
}
impl Default for _tagEOS_Ecom_CopyItemByIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyItemById function."]
pub type EOS_Ecom_CopyItemByIdOptions = _tagEOS_Ecom_CopyItemByIdOptions;
#[doc = " Input parameters for the EOS_Ecom_GetOfferImageInfoCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_GetOfferImageInfoCountOptions {
    #[doc = " API Version: Set this to EOS_ECOM_GETOFFERIMAGEINFOCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose offer image is being accessed."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The ID of the offer to get the images for."]
    pub OfferId: EOS_Ecom_CatalogOfferId,
}
impl Default for _tagEOS_Ecom_GetOfferImageInfoCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_GetOfferImageInfoCount function."]
pub type EOS_Ecom_GetOfferImageInfoCountOptions = _tagEOS_Ecom_GetOfferImageInfoCountOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyOfferImageInfoByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyOfferImageInfoByIndexOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYOFFERIMAGEINFOBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose offer image is being copied."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The ID of the offer to get the images for."]
    pub OfferId: EOS_Ecom_CatalogOfferId,
    #[doc = " The index of the image to get."]
    pub ImageInfoIndex: u32,
}
impl Default for _tagEOS_Ecom_CopyOfferImageInfoByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyOfferImageInfoByIndex function."]
pub type EOS_Ecom_CopyOfferImageInfoByIndexOptions = _tagEOS_Ecom_CopyOfferImageInfoByIndexOptions;
#[doc = " Input parameters for the EOS_Ecom_GetItemImageInfoCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_GetItemImageInfoCountOptions {
    #[doc = " API Version: Set this to EOS_ECOM_GETITEMIMAGEINFOCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose item image is being accessed"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The ID of the item to get the images for."]
    pub ItemId: EOS_Ecom_CatalogItemId,
}
impl Default for _tagEOS_Ecom_GetItemImageInfoCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_GetItemImageInfoCount function."]
pub type EOS_Ecom_GetItemImageInfoCountOptions = _tagEOS_Ecom_GetItemImageInfoCountOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyItemImageInfoByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyItemImageInfoByIndexOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYITEMIMAGEINFOBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose item image is being copied"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The ID of the item to get the images for."]
    pub ItemId: EOS_Ecom_CatalogItemId,
    #[doc = " The index of the image to get."]
    pub ImageInfoIndex: u32,
}
impl Default for _tagEOS_Ecom_CopyItemImageInfoByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyItemImageInfoByIndex function."]
pub type EOS_Ecom_CopyItemImageInfoByIndexOptions = _tagEOS_Ecom_CopyItemImageInfoByIndexOptions;
#[doc = " Input parameters for the EOS_Ecom_GetItemReleaseCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_GetItemReleaseCountOptions {
    #[doc = " API Version: Set this to EOS_ECOM_GETITEMRELEASECOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose item release is being accessed"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The ID of the item to get the releases for."]
    pub ItemId: EOS_Ecom_CatalogItemId,
}
impl Default for _tagEOS_Ecom_GetItemReleaseCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_GetItemReleaseCount function."]
pub type EOS_Ecom_GetItemReleaseCountOptions = _tagEOS_Ecom_GetItemReleaseCountOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyItemReleaseByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyItemReleaseByIndexOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYITEMRELEASEBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose item release is being copied"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The ID of the item to get the releases for."]
    pub ItemId: EOS_Ecom_CatalogItemId,
    #[doc = " The index of the release to get."]
    pub ReleaseIndex: u32,
}
impl Default for _tagEOS_Ecom_CopyItemReleaseByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyItemReleaseByIndex function."]
pub type EOS_Ecom_CopyItemReleaseByIndexOptions = _tagEOS_Ecom_CopyItemReleaseByIndexOptions;
#[doc = " Input parameters for the EOS_Ecom_GetTransactionCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_GetTransactionCountOptions {
    #[doc = " API Version: Set this to EOS_ECOM_GETTRANSACTIONCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user whose transaction count to get"]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Ecom_GetTransactionCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_GetTransactionCount function."]
pub type EOS_Ecom_GetTransactionCountOptions = _tagEOS_Ecom_GetTransactionCountOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyTransactionByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyTransactionByIndexOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYTRANSACTIONBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user who is associated with the transaction"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The index of the transaction to get"]
    pub TransactionIndex: u32,
}
impl Default for _tagEOS_Ecom_CopyTransactionByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyTransactionByIndex function."]
pub type EOS_Ecom_CopyTransactionByIndexOptions = _tagEOS_Ecom_CopyTransactionByIndexOptions;
#[doc = " Input parameters for the EOS_Ecom_CopyTransactionById function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Ecom_CopyTransactionByIdOptions {
    #[doc = " API Version: Set this to EOS_ECOM_COPYTRANSACTIONBYID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local user who is associated with the transaction"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The ID of the transaction to get"]
    pub TransactionId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Ecom_CopyTransactionByIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Ecom_CopyTransactionById function."]
pub type EOS_Ecom_CopyTransactionByIdOptions = _tagEOS_Ecom_CopyTransactionByIdOptions;
#[doc = " Input parameters for the EOS_Ecom_Transaction_GetEntitlementsCount function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Ecom_Transaction_GetEntitlementsCountOptions {
    #[doc = " API Version: Set this to EOS_ECOM_TRANSACTION_GETENTITLEMENTSCOUNT_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Ecom_Transaction_GetEntitlementsCount function."]
pub type EOS_Ecom_Transaction_GetEntitlementsCountOptions =
    _tagEOS_Ecom_Transaction_GetEntitlementsCountOptions;
#[doc = " Input parameters for the EOS_Ecom_Transaction_CopyEntitlementByIndex function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Ecom_Transaction_CopyEntitlementByIndexOptions {
    #[doc = " API Version: Set this to EOS_ECOM_TRANSACTION_COPYENTITLEMENTBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The index of the entitlement to get"]
    pub EntitlementIndex: u32,
}
#[doc = " Input parameters for the EOS_Ecom_Transaction_CopyEntitlementByIndex function."]
pub type EOS_Ecom_Transaction_CopyEntitlementByIndexOptions =
    _tagEOS_Ecom_Transaction_CopyEntitlementByIndexOptions;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_Ecom_HTransaction.  Is expected to be called after\n being received from a EOS_Ecom_CheckoutCallbackInfo.\n\n @param Transaction A handle to a transaction.\n\n @see EOS_Ecom_CheckoutCallbackInfo\n @see EOS_Ecom_GetTransactionCount\n @see EOS_Ecom_CopyTransactionByIndex"]
    pub fn EOS_Ecom_Transaction_Release(Transaction: EOS_Ecom_HTransaction);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_UIHandle {
    _unused: [u8; 0],
}
#[doc = " Handle to the UI interface"]
pub type EOS_HUI = *mut EOS_UIHandle;
#[doc = " ID representing a specific UI event."]
pub type EOS_UI_EventId = u64;
#[doc = " Input parameters for the EOS_UI_ShowFriends function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_ShowFriendsOptions {
    #[doc = " API Version: Set this to EOS_UI_SHOWFRIENDS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user whose friend list is being shown."]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UI_ShowFriendsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UI_ShowFriends function."]
pub type EOS_UI_ShowFriendsOptions = _tagEOS_UI_ShowFriendsOptions;
#[doc = " Output parameters for the EOS_UI_ShowFriends function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_ShowFriendsCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_UI_ShowFriends"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the user whose friend list is being shown."]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UI_ShowFriendsCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_UI_ShowFriends function."]
pub type EOS_UI_ShowFriendsCallbackInfo = _tagEOS_UI_ShowFriendsCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_UI_ShowFriends\n @param Data A EOS_UI_ShowFriendsCallbackInfo containing the output information and result"]
pub type EOS_UI_OnShowFriendsCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_UI_ShowFriendsCallbackInfo)>;
#[doc = " Input parameters for the EOS_UI_HideFriends function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_HideFriendsOptions {
    #[doc = " API Version: Set this to EOS_UI_HIDEFRIENDS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user whose friend list is being shown."]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UI_HideFriendsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UI_HideFriends function."]
pub type EOS_UI_HideFriendsOptions = _tagEOS_UI_HideFriendsOptions;
#[doc = " Output parameters for the EOS_UI_HideFriends function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_HideFriendsCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_UI_HideFriends"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the user whose friend list is being shown."]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UI_HideFriendsCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_UI_HideFriends function."]
pub type EOS_UI_HideFriendsCallbackInfo = _tagEOS_UI_HideFriendsCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_UI_HideFriends\n @param Data A EOS_UI_HideFriendsCallbackInfo containing the output information and result"]
pub type EOS_UI_OnHideFriendsCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_UI_HideFriendsCallbackInfo)>;
#[doc = " Input parameters for the EOS_UI_GetFriendsVisible function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_GetFriendsVisibleOptions {
    #[doc = " API Version: Set this to EOS_UI_GETFRIENDSVISIBLE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user whose overlay is being checked."]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UI_GetFriendsVisibleOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UI_GetFriendsVisible function."]
pub type EOS_UI_GetFriendsVisibleOptions = _tagEOS_UI_GetFriendsVisibleOptions;
#[doc = " Input parameters for the EOS_UI_GetFriendsExclusiveInput function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_GetFriendsExclusiveInputOptions {
    #[doc = " API Version: Set this to EOS_UI_GETFRIENDSEXCLUSIVEINPUT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user whose overlay is being checked."]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UI_GetFriendsExclusiveInputOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UI_GetFriendsExclusiveInput function."]
pub type EOS_UI_GetFriendsExclusiveInputOptions = _tagEOS_UI_GetFriendsExclusiveInputOptions;
#[doc = " Input parameters for the EOS_UI_AddNotifyDisplaySettingsUpdated function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_UI_AddNotifyDisplaySettingsUpdatedOptions {
    #[doc = " API Version: Set this to EOS_UI_ADDNOTIFYDISPLAYSETTINGSUPDATED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_UI_AddNotifyDisplaySettingsUpdated function."]
pub type EOS_UI_AddNotifyDisplaySettingsUpdatedOptions =
    _tagEOS_UI_AddNotifyDisplaySettingsUpdatedOptions;
#[doc = " Output parameters for the EOS_UI_AddNotifyDisplaySettingsUpdated function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_OnDisplaySettingsUpdatedCallbackInfo {
    #[doc = " Context that was passed into EOS_UI_AddNotifyDisplaySettingsUpdated"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " True when any portion of the overlay is visible."]
    pub bIsVisible: EOS_Bool,
    #[doc = " True when the overlay has switched to exclusive input mode.\n While in exclusive input mode, no keyboard or mouse input will be sent to the game."]
    pub bIsExclusiveInput: EOS_Bool,
}
impl Default for _tagEOS_UI_OnDisplaySettingsUpdatedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_UI_AddNotifyDisplaySettingsUpdated function."]
pub type EOS_UI_OnDisplaySettingsUpdatedCallbackInfo =
    _tagEOS_UI_OnDisplaySettingsUpdatedCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_UI_AddNotifyDisplaySettingsUpdated\n @param Data A EOS_UI_OnDisplaySettingsUpdatedCallbackInfo containing the current display state."]
pub type EOS_UI_OnDisplaySettingsUpdatedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_UI_OnDisplaySettingsUpdatedCallbackInfo),
>;
pub const EOS_UI_EKeyCombination_EOS_UIK_ModifierShift: EOS_UI_EKeyCombination = 16;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyTypeMask: EOS_UI_EKeyCombination = 65535;
pub const EOS_UI_EKeyCombination_EOS_UIK_ModifierMask: EOS_UI_EKeyCombination = -65536;
pub const EOS_UI_EKeyCombination_EOS_UIK_Shift: EOS_UI_EKeyCombination = 65536;
pub const EOS_UI_EKeyCombination_EOS_UIK_Control: EOS_UI_EKeyCombination = 131072;
pub const EOS_UI_EKeyCombination_EOS_UIK_Alt: EOS_UI_EKeyCombination = 262144;
pub const EOS_UI_EKeyCombination_EOS_UIK_Meta: EOS_UI_EKeyCombination = 524288;
pub const EOS_UI_EKeyCombination_EOS_UIK_ValidModifierMask: EOS_UI_EKeyCombination = 983040;
pub const EOS_UI_EKeyCombination_EOS_UIK_None: EOS_UI_EKeyCombination = 0;
pub const EOS_UI_EKeyCombination_EOS_UIK_Space: EOS_UI_EKeyCombination = 1;
pub const EOS_UI_EKeyCombination_EOS_UIK_Backspace: EOS_UI_EKeyCombination = 2;
pub const EOS_UI_EKeyCombination_EOS_UIK_Tab: EOS_UI_EKeyCombination = 3;
pub const EOS_UI_EKeyCombination_EOS_UIK_Escape: EOS_UI_EKeyCombination = 4;
pub const EOS_UI_EKeyCombination_EOS_UIK_PageUp: EOS_UI_EKeyCombination = 5;
pub const EOS_UI_EKeyCombination_EOS_UIK_PageDown: EOS_UI_EKeyCombination = 6;
pub const EOS_UI_EKeyCombination_EOS_UIK_End: EOS_UI_EKeyCombination = 7;
pub const EOS_UI_EKeyCombination_EOS_UIK_Home: EOS_UI_EKeyCombination = 8;
pub const EOS_UI_EKeyCombination_EOS_UIK_Insert: EOS_UI_EKeyCombination = 9;
pub const EOS_UI_EKeyCombination_EOS_UIK_Delete: EOS_UI_EKeyCombination = 10;
pub const EOS_UI_EKeyCombination_EOS_UIK_Left: EOS_UI_EKeyCombination = 11;
pub const EOS_UI_EKeyCombination_EOS_UIK_Up: EOS_UI_EKeyCombination = 12;
pub const EOS_UI_EKeyCombination_EOS_UIK_Right: EOS_UI_EKeyCombination = 13;
pub const EOS_UI_EKeyCombination_EOS_UIK_Down: EOS_UI_EKeyCombination = 14;
pub const EOS_UI_EKeyCombination_EOS_UIK_Key0: EOS_UI_EKeyCombination = 15;
pub const EOS_UI_EKeyCombination_EOS_UIK_Key1: EOS_UI_EKeyCombination = 16;
pub const EOS_UI_EKeyCombination_EOS_UIK_Key2: EOS_UI_EKeyCombination = 17;
pub const EOS_UI_EKeyCombination_EOS_UIK_Key3: EOS_UI_EKeyCombination = 18;
pub const EOS_UI_EKeyCombination_EOS_UIK_Key4: EOS_UI_EKeyCombination = 19;
pub const EOS_UI_EKeyCombination_EOS_UIK_Key5: EOS_UI_EKeyCombination = 20;
pub const EOS_UI_EKeyCombination_EOS_UIK_Key6: EOS_UI_EKeyCombination = 21;
pub const EOS_UI_EKeyCombination_EOS_UIK_Key7: EOS_UI_EKeyCombination = 22;
pub const EOS_UI_EKeyCombination_EOS_UIK_Key8: EOS_UI_EKeyCombination = 23;
pub const EOS_UI_EKeyCombination_EOS_UIK_Key9: EOS_UI_EKeyCombination = 24;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyA: EOS_UI_EKeyCombination = 25;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyB: EOS_UI_EKeyCombination = 26;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyC: EOS_UI_EKeyCombination = 27;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyD: EOS_UI_EKeyCombination = 28;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyE: EOS_UI_EKeyCombination = 29;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyF: EOS_UI_EKeyCombination = 30;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyG: EOS_UI_EKeyCombination = 31;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyH: EOS_UI_EKeyCombination = 32;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyI: EOS_UI_EKeyCombination = 33;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyJ: EOS_UI_EKeyCombination = 34;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyK: EOS_UI_EKeyCombination = 35;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyL: EOS_UI_EKeyCombination = 36;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyM: EOS_UI_EKeyCombination = 37;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyN: EOS_UI_EKeyCombination = 38;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyO: EOS_UI_EKeyCombination = 39;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyP: EOS_UI_EKeyCombination = 40;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyQ: EOS_UI_EKeyCombination = 41;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyR: EOS_UI_EKeyCombination = 42;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyS: EOS_UI_EKeyCombination = 43;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyT: EOS_UI_EKeyCombination = 44;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyU: EOS_UI_EKeyCombination = 45;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyV: EOS_UI_EKeyCombination = 46;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyW: EOS_UI_EKeyCombination = 47;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyX: EOS_UI_EKeyCombination = 48;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyY: EOS_UI_EKeyCombination = 49;
pub const EOS_UI_EKeyCombination_EOS_UIK_KeyZ: EOS_UI_EKeyCombination = 50;
pub const EOS_UI_EKeyCombination_EOS_UIK_Numpad0: EOS_UI_EKeyCombination = 51;
pub const EOS_UI_EKeyCombination_EOS_UIK_Numpad1: EOS_UI_EKeyCombination = 52;
pub const EOS_UI_EKeyCombination_EOS_UIK_Numpad2: EOS_UI_EKeyCombination = 53;
pub const EOS_UI_EKeyCombination_EOS_UIK_Numpad3: EOS_UI_EKeyCombination = 54;
pub const EOS_UI_EKeyCombination_EOS_UIK_Numpad4: EOS_UI_EKeyCombination = 55;
pub const EOS_UI_EKeyCombination_EOS_UIK_Numpad5: EOS_UI_EKeyCombination = 56;
pub const EOS_UI_EKeyCombination_EOS_UIK_Numpad6: EOS_UI_EKeyCombination = 57;
pub const EOS_UI_EKeyCombination_EOS_UIK_Numpad7: EOS_UI_EKeyCombination = 58;
pub const EOS_UI_EKeyCombination_EOS_UIK_Numpad8: EOS_UI_EKeyCombination = 59;
pub const EOS_UI_EKeyCombination_EOS_UIK_Numpad9: EOS_UI_EKeyCombination = 60;
pub const EOS_UI_EKeyCombination_EOS_UIK_NumpadAsterisk: EOS_UI_EKeyCombination = 61;
pub const EOS_UI_EKeyCombination_EOS_UIK_NumpadPlus: EOS_UI_EKeyCombination = 62;
pub const EOS_UI_EKeyCombination_EOS_UIK_NumpadMinus: EOS_UI_EKeyCombination = 63;
pub const EOS_UI_EKeyCombination_EOS_UIK_NumpadPeriod: EOS_UI_EKeyCombination = 64;
pub const EOS_UI_EKeyCombination_EOS_UIK_NumpadDivide: EOS_UI_EKeyCombination = 65;
pub const EOS_UI_EKeyCombination_EOS_UIK_F1: EOS_UI_EKeyCombination = 66;
pub const EOS_UI_EKeyCombination_EOS_UIK_F2: EOS_UI_EKeyCombination = 67;
pub const EOS_UI_EKeyCombination_EOS_UIK_F3: EOS_UI_EKeyCombination = 68;
pub const EOS_UI_EKeyCombination_EOS_UIK_F4: EOS_UI_EKeyCombination = 69;
pub const EOS_UI_EKeyCombination_EOS_UIK_F5: EOS_UI_EKeyCombination = 70;
pub const EOS_UI_EKeyCombination_EOS_UIK_F6: EOS_UI_EKeyCombination = 71;
pub const EOS_UI_EKeyCombination_EOS_UIK_F7: EOS_UI_EKeyCombination = 72;
pub const EOS_UI_EKeyCombination_EOS_UIK_F8: EOS_UI_EKeyCombination = 73;
pub const EOS_UI_EKeyCombination_EOS_UIK_F9: EOS_UI_EKeyCombination = 74;
pub const EOS_UI_EKeyCombination_EOS_UIK_F10: EOS_UI_EKeyCombination = 75;
pub const EOS_UI_EKeyCombination_EOS_UIK_F11: EOS_UI_EKeyCombination = 76;
pub const EOS_UI_EKeyCombination_EOS_UIK_F12: EOS_UI_EKeyCombination = 77;
pub const EOS_UI_EKeyCombination_EOS_UIK_F13: EOS_UI_EKeyCombination = 78;
pub const EOS_UI_EKeyCombination_EOS_UIK_F14: EOS_UI_EKeyCombination = 79;
pub const EOS_UI_EKeyCombination_EOS_UIK_F15: EOS_UI_EKeyCombination = 80;
pub const EOS_UI_EKeyCombination_EOS_UIK_F16: EOS_UI_EKeyCombination = 81;
pub const EOS_UI_EKeyCombination_EOS_UIK_F17: EOS_UI_EKeyCombination = 82;
pub const EOS_UI_EKeyCombination_EOS_UIK_F18: EOS_UI_EKeyCombination = 83;
pub const EOS_UI_EKeyCombination_EOS_UIK_F19: EOS_UI_EKeyCombination = 84;
pub const EOS_UI_EKeyCombination_EOS_UIK_F20: EOS_UI_EKeyCombination = 85;
pub const EOS_UI_EKeyCombination_EOS_UIK_F21: EOS_UI_EKeyCombination = 86;
pub const EOS_UI_EKeyCombination_EOS_UIK_F22: EOS_UI_EKeyCombination = 87;
pub const EOS_UI_EKeyCombination_EOS_UIK_F23: EOS_UI_EKeyCombination = 88;
pub const EOS_UI_EKeyCombination_EOS_UIK_F24: EOS_UI_EKeyCombination = 89;
pub const EOS_UI_EKeyCombination_EOS_UIK_OemPlus: EOS_UI_EKeyCombination = 90;
pub const EOS_UI_EKeyCombination_EOS_UIK_OemComma: EOS_UI_EKeyCombination = 91;
pub const EOS_UI_EKeyCombination_EOS_UIK_OemMinus: EOS_UI_EKeyCombination = 92;
pub const EOS_UI_EKeyCombination_EOS_UIK_OemPeriod: EOS_UI_EKeyCombination = 93;
pub const EOS_UI_EKeyCombination_EOS_UIK_Oem1: EOS_UI_EKeyCombination = 94;
pub const EOS_UI_EKeyCombination_EOS_UIK_Oem2: EOS_UI_EKeyCombination = 95;
pub const EOS_UI_EKeyCombination_EOS_UIK_Oem3: EOS_UI_EKeyCombination = 96;
pub const EOS_UI_EKeyCombination_EOS_UIK_Oem4: EOS_UI_EKeyCombination = 97;
pub const EOS_UI_EKeyCombination_EOS_UIK_Oem5: EOS_UI_EKeyCombination = 98;
pub const EOS_UI_EKeyCombination_EOS_UIK_Oem6: EOS_UI_EKeyCombination = 99;
pub const EOS_UI_EKeyCombination_EOS_UIK_Oem7: EOS_UI_EKeyCombination = 100;
pub const EOS_UI_EKeyCombination_EOS_UIK_Oem8: EOS_UI_EKeyCombination = 101;
pub const EOS_UI_EKeyCombination_EOS_UIK_MaxKeyType: EOS_UI_EKeyCombination = 102;
pub const EOS_UI_EKeyCombination___EOS_UI_EKeyCombination_PAD_INT32__: EOS_UI_EKeyCombination =
    2147483647;
pub type EOS_UI_EKeyCombination = ::std::os::raw::c_int;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_None: EOS_UI_EInputStateButtonFlags = 0;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_DPad_Left: EOS_UI_EInputStateButtonFlags = 1;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_DPad_Right: EOS_UI_EInputStateButtonFlags = 2;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_DPad_Down: EOS_UI_EInputStateButtonFlags = 4;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_DPad_Up: EOS_UI_EInputStateButtonFlags = 8;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_FaceButton_Left: EOS_UI_EInputStateButtonFlags =
    16;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_FaceButton_Right: EOS_UI_EInputStateButtonFlags =
    32;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_FaceButton_Bottom: EOS_UI_EInputStateButtonFlags =
    64;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_FaceButton_Top: EOS_UI_EInputStateButtonFlags =
    128;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_LeftShoulder: EOS_UI_EInputStateButtonFlags = 256;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_RightShoulder: EOS_UI_EInputStateButtonFlags =
    512;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_LeftTrigger: EOS_UI_EInputStateButtonFlags = 1024;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_RightTrigger: EOS_UI_EInputStateButtonFlags =
    2048;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_Special_Left: EOS_UI_EInputStateButtonFlags =
    4096;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_Special_Right: EOS_UI_EInputStateButtonFlags =
    8192;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_LeftThumbstick: EOS_UI_EInputStateButtonFlags =
    16384;
pub const EOS_UI_EInputStateButtonFlags_EOS_UISBF_RightThumbstick: EOS_UI_EInputStateButtonFlags =
    32768;
pub const EOS_UI_EInputStateButtonFlags___EOS_UI_EInputStateButtonFlags_PAD_INT32__:
    EOS_UI_EInputStateButtonFlags = 2147483647;
#[doc = " Flags used in EOS_UI_ReportInputStateOptions to identify buttons which are down."]
pub type EOS_UI_EInputStateButtonFlags = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_UI_SetToggleFriendsKey function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_SetToggleFriendsKeyOptions {
    #[doc = " API Version: Set this to EOS_UI_SETTOGGLEFRIENDSKEY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The new key combination which will be used to toggle the friends overlay.\n The combination can be any set of modifiers and one key.\n A value of EOS_UIK_None will cause the key to revert to the default."]
    pub KeyCombination: EOS_UI_EKeyCombination,
}
impl Default for _tagEOS_UI_SetToggleFriendsKeyOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UI_SetToggleFriendsKey function."]
pub type EOS_UI_SetToggleFriendsKeyOptions = _tagEOS_UI_SetToggleFriendsKeyOptions;
#[doc = " Input parameters for the EOS_UI_GetToggleFriendsKey function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_UI_GetToggleFriendsKeyOptions {
    #[doc = " API Version: Set this to EOS_UI_GETTOGGLEFRIENDSKEY_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_UI_GetToggleFriendsKey function."]
pub type EOS_UI_GetToggleFriendsKeyOptions = _tagEOS_UI_GetToggleFriendsKeyOptions;
#[doc = " Input parameters for the EOS_UI_SetToggleFriendsButton function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_SetToggleFriendsButtonOptions {
    #[doc = " API Version: Set this to EOS_UI_SETTOGGLEFRIENDSBUTTON_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The button combination to toggle the friends-list page.\n It can be any combination of the following buttons (which can include the left or right shoulder buttons (EOS_UISBF_LeftShoulder or EOS_UISBF_RightShoulder)):\n\n - EOS_UI_EInputStateButtonFlags::EOS_UISBF_LeftTrigger\n - EOS_UI_EInputStateButtonFlags::EOS_UISBF_RightTrigger\n - EOS_UI_EInputStateButtonFlags::EOS_UISBF_Special_Left\n - EOS_UI_EInputStateButtonFlags::EOS_UISBF_Special_Right\n - EOS_UI_EInputStateButtonFlags::EOS_UISBF_LeftThumbstick\n - EOS_UI_EInputStateButtonFlags::EOS_UISBF_RightThumbstick\n\n The default value is No Button. Set the value to EOS_UISBF_None to revert to the default."]
    pub ButtonCombination: EOS_UI_EInputStateButtonFlags,
}
impl Default for _tagEOS_UI_SetToggleFriendsButtonOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UI_SetToggleFriendsButton function."]
pub type EOS_UI_SetToggleFriendsButtonOptions = _tagEOS_UI_SetToggleFriendsButtonOptions;
#[doc = " Input parameters for the EOS_UI_GetToggleFriendsButton function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_UI_GetToggleFriendsButtonOptions {
    #[doc = " API Version: Set this to EOS_UI_GETTOGGLEFRIENDSBUTTON_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_UI_GetToggleFriendsButton function."]
pub type EOS_UI_GetToggleFriendsButtonOptions = _tagEOS_UI_GetToggleFriendsButtonOptions;
#[doc = " The top left corner"]
pub const EOS_UI_ENotificationLocation_EOS_UNL_TopLeft: EOS_UI_ENotificationLocation = 0;
#[doc = " The top right corner"]
pub const EOS_UI_ENotificationLocation_EOS_UNL_TopRight: EOS_UI_ENotificationLocation = 1;
#[doc = " The bottom left corner"]
pub const EOS_UI_ENotificationLocation_EOS_UNL_BottomLeft: EOS_UI_ENotificationLocation = 2;
#[doc = " The bottom right corner"]
pub const EOS_UI_ENotificationLocation_EOS_UNL_BottomRight: EOS_UI_ENotificationLocation = 3;
pub const EOS_UI_ENotificationLocation___EOS_UI_ENotificationLocation_PAD_INT32__:
    EOS_UI_ENotificationLocation = 2147483647;
#[doc = " Notification locations to be used to set the preference\n for pop-up.\n\n @see EOS_UI_SetDisplayPreference"]
pub type EOS_UI_ENotificationLocation = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_UI_SetDisplayPreference function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_SetDisplayPreferenceOptions {
    #[doc = " API Version: Set this to EOS_UI_SETDISPLAYPREFERENCE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Preference for notification pop-up locations."]
    pub NotificationLocation: EOS_UI_ENotificationLocation,
}
impl Default for _tagEOS_UI_SetDisplayPreferenceOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UI_SetDisplayPreference function."]
pub type EOS_UI_SetDisplayPreferenceOptions = _tagEOS_UI_SetDisplayPreferenceOptions;
#[doc = " Input parameters for the EOS_UI_AcknowledgeEventId."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_AcknowledgeEventIdOptions {
    #[doc = " API Version: Set this to EOS_UI_ACKNOWLEDGEEVENTID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID being acknowledged."]
    pub UiEventId: EOS_UI_EventId,
    #[doc = " The result to use for the acknowledgment.\n When acknowledging EOS_Presence_JoinGameAcceptedCallbackInfo this should be the\n result code from the JoinSession call."]
    pub Result: EOS_EResult,
}
impl Default for _tagEOS_UI_AcknowledgeEventIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UI_AcknowledgeEventId."]
pub type EOS_UI_AcknowledgeEventIdOptions = _tagEOS_UI_AcknowledgeEventIdOptions;
#[doc = " Input parameters for the EOS_UI_ReportInputState function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_ReportInputStateOptions {
    #[doc = " API Version: Set this to EOS_UI_REPORTINPUTSTATE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Flags to identify the current buttons which are pressed."]
    pub ButtonDownFlags: EOS_UI_EInputStateButtonFlags,
    #[doc = " Whether the current platform and configuration uses the right face button as the default accept button.\n When this flag is true, the right face button is the accept action, and the down face button is the cancel action.\n When this flag is false, the right face button is the cancel action, and the down face button is the accept action."]
    pub bAcceptIsFaceButtonRight: EOS_Bool,
    #[doc = " The current state of the mouse button."]
    pub bMouseButtonDown: EOS_Bool,
    #[doc = " The current x-position of the mouse."]
    pub MousePosX: u32,
    #[doc = " The current y-position of the mouse."]
    pub MousePosY: u32,
    #[doc = " The gamepad or player index"]
    pub GamepadIndex: u32,
    #[doc = " Left analog stick horizontal movement in [-1, 1]. Negative for left, positive for right"]
    pub LeftStickX: f32,
    #[doc = " Left analog stick vertical movement in [-1, 1]. Negative for up, positive for down"]
    pub LeftStickY: f32,
    #[doc = " Right analog stick horizontal movement in [-1, 1]. Negative for left, positive for right"]
    pub RightStickX: f32,
    #[doc = " Right analog stick vertical movement in [-1, 1]. Negative for up, positive for down"]
    pub RightStickY: f32,
    #[doc = " Left trigger analog value in [0, 1]"]
    pub LeftTrigger: f32,
    #[doc = " Right trigger analog value in [0, 1]"]
    pub RightTrigger: f32,
}
impl Default for _tagEOS_UI_ReportInputStateOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UI_ReportInputState function."]
pub type EOS_UI_ReportInputStateOptions = _tagEOS_UI_ReportInputStateOptions;
#[doc = " Parameters for the EOS_UI_PrePresent function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_PrePresentOptions {
    #[doc = " API Version: Set this to EOS_UI_PREPRESENT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Platform specific data."]
    pub PlatformSpecificData: *const ::std::os::raw::c_void,
}
impl Default for _tagEOS_UI_PrePresentOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Parameters for the EOS_UI_PrePresent function."]
pub type EOS_UI_PrePresentOptions = _tagEOS_UI_PrePresentOptions;
#[doc = " Parameters for the EOS_UI_ShowBlockPlayer function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_ShowBlockPlayerOptions {
    #[doc = " API Version: Set this to EOS_UI_SHOWBLOCKPLAYER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Online Services Account ID of the user who is requesting the Block."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Online Services Account ID of the user whose is being Blocked."]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UI_ShowBlockPlayerOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Parameters for the EOS_UI_ShowBlockPlayer function."]
pub type EOS_UI_ShowBlockPlayerOptions = _tagEOS_UI_ShowBlockPlayerOptions;
#[doc = " Output parameters for the EOS_UI_ShowBlockPlayer function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_OnShowBlockPlayerCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_UI_ShowBlockPlayer"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Online Services Account ID of the user who requested the block."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Online Services Account ID of the user who was to be blocked."]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UI_OnShowBlockPlayerCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_UI_ShowBlockPlayer function."]
pub type EOS_UI_OnShowBlockPlayerCallbackInfo = _tagEOS_UI_OnShowBlockPlayerCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_UI_ShowBlockPlayer\n @param Data A EOS_UI_OnShowBlockPlayerCallbackInfo containing the output information and result"]
pub type EOS_UI_OnShowBlockPlayerCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_UI_OnShowBlockPlayerCallbackInfo)>;
#[doc = " Parameters for the EOS_UI_ShowReportPlayer function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_ShowReportPlayerOptions {
    #[doc = " API Version: Set this to EOS_UI_SHOWREPORTPLAYER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Online Services Account ID of the user who is requesting the Report."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Online Services Account ID of the user whose is being Reported."]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UI_ShowReportPlayerOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Parameters for the EOS_UI_ShowReportPlayer function."]
pub type EOS_UI_ShowReportPlayerOptions = _tagEOS_UI_ShowReportPlayerOptions;
#[doc = " Output parameters for the EOS_UI_ShowReportPlayer function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_OnShowReportPlayerCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_UI_ShowReportPlayer"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Online Services Account ID of the user who requested the Report."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Online Services Account ID of the user who was to be Reported."]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UI_OnShowReportPlayerCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_UI_ShowReportPlayer function."]
pub type EOS_UI_OnShowReportPlayerCallbackInfo = _tagEOS_UI_OnShowReportPlayerCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_UI_ShowReportPlayer\n @param Data A EOS_UI_OnShowReportPlayerCallbackInfo containing the output information and result"]
pub type EOS_UI_OnShowReportPlayerCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_UI_OnShowReportPlayerCallbackInfo)>;
#[doc = " Parameters for the EOS_UI_ShowNativeProfile function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_ShowNativeProfileOptions {
    #[doc = " API Version: Set this to EOS_UI_SHOWNATIVEPROFILE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Online Services Account ID of the user who is requesting the profile."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Online Services Account ID of the user whose profile is being requested."]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UI_ShowNativeProfileOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Parameters for the EOS_UI_ShowNativeProfile function."]
pub type EOS_UI_ShowNativeProfileOptions = _tagEOS_UI_ShowNativeProfileOptions;
#[doc = " Output parameters for the EOS_UI_ShowNativeProfile function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_ShowNativeProfileCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_UI_ShowNativeProfile"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Online Services Account ID of the user who requested the profile."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Online Services Account ID of the user who was to have a profile shown."]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UI_ShowNativeProfileCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_UI_ShowNativeProfile function."]
pub type EOS_UI_ShowNativeProfileCallbackInfo = _tagEOS_UI_ShowNativeProfileCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_UI_ShowNativeProfile\n @param Data A EOS_UI_ShowNativeProfileCallbackInfo containing the output information and result"]
pub type EOS_UI_OnShowNativeProfileCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_UI_ShowNativeProfileCallbackInfo)>;
#[doc = " Input parameters for the EOS_UI_PauseSocialOverlay function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_UI_PauseSocialOverlayOptions {
    #[doc = " API Version: Set this to EOS_UI_PAUSESOCIALOVERLAY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The desired bIsPaused state of the overlay."]
    pub bIsPaused: EOS_Bool,
}
#[doc = " Input parameters for the EOS_UI_PauseSocialOverlay function."]
pub type EOS_UI_PauseSocialOverlayOptions = _tagEOS_UI_PauseSocialOverlayOptions;
#[doc = " Input parameters for the EOS_UI_IsSocialOverlayPaused function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_UI_IsSocialOverlayPausedOptions {
    #[doc = " API Version: Set this to EOS_UI_ISSOCIALOVERLAYPAUSED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_UI_IsSocialOverlayPaused function."]
pub type EOS_UI_IsSocialOverlayPausedOptions = _tagEOS_UI_IsSocialOverlayPausedOptions;
#[doc = " A rectangle."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_UI_Rect {
    #[doc = " API Version: Set this to EOS_UI_RECT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Left coordinate."]
    pub X: i32,
    #[doc = " Top coordinate."]
    pub Y: i32,
    #[doc = " Width."]
    pub Width: u32,
    #[doc = " Height."]
    pub Height: u32,
}
#[doc = " A rectangle."]
pub type EOS_UI_Rect = _tagEOS_UI_Rect;
#[doc = " A structure representing a memory monitoring message."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_MemoryMonitorCallbackInfo {
    #[doc = " Context that was passed into EOS_UI_AddNotifyMemoryMonitor"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " This field is for system specific memory monitor report.\n\n If provided then the structure will be located in eos_<platform>_ui.h\n The structure will be named EOS_<platform>_MemoryMonitorReport."]
    pub SystemMemoryMonitorReport: *const ::std::os::raw::c_void,
}
impl Default for _tagEOS_UI_MemoryMonitorCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " A structure representing a memory monitoring message."]
pub type EOS_UI_MemoryMonitorCallbackInfo = _tagEOS_UI_MemoryMonitorCallbackInfo;
#[doc = " Input parameters for the EOS_UI_AddNotifyMemoryMonitor function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_UI_AddNotifyMemoryMonitorOptions {
    #[doc = " API Version: Set this to EOS_UI_ADDNOTIFYMEMORYMONITOR_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_UI_AddNotifyMemoryMonitor function."]
pub type EOS_UI_AddNotifyMemoryMonitorOptions = _tagEOS_UI_AddNotifyMemoryMonitorOptions;
#[doc = " Function prototype definition for callbacks passed to EOS_UI_AddNotifyMemoryMonitor\n @param Data A EOS_UI_MemoryMonitorCallbackInfo containing the output information and result"]
pub type EOS_UI_OnMemoryMonitorCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_UI_MemoryMonitorCallbackInfo)>;
#[doc = " Do nothing when an on screen keyboard is requested. This effectively disables on screen keyboards."]
pub const EOS_UI_EOnScreenKeyboardBehavior_EOS_UIOSKB_None: EOS_UI_EOnScreenKeyboardBehavior = 0;
#[doc = " Receive a notification when an on screen keyboard is requested. Use this to implement custom on screen keyboard logic."]
pub const EOS_UI_EOnScreenKeyboardBehavior_EOS_UIOSKB_Notification:
    EOS_UI_EOnScreenKeyboardBehavior = 1;
#[doc = " Try to launch the native on screen keyboard when one is requested."]
pub const EOS_UI_EOnScreenKeyboardBehavior_EOS_UIOSKB_Native: EOS_UI_EOnScreenKeyboardBehavior = 2;
pub const EOS_UI_EOnScreenKeyboardBehavior___EOS_UI_EOnScreenKeyboardBehavior_PAD_INT32__:
    EOS_UI_EOnScreenKeyboardBehavior = 2147483647;
#[doc = " An on screen keyboard behavior."]
pub type EOS_UI_EOnScreenKeyboardBehavior = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_UI_ConfigureOnScreenKeyboard function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_ConfigureOnScreenKeyboardOptions {
    #[doc = " API Version: Set this to EOS_UI_CONFIGUREONSCREENKEYBOARD_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The behavior of the on screen keyboard."]
    pub Behavior: EOS_UI_EOnScreenKeyboardBehavior,
    #[doc = " Whether to enable device checks.\n When enabled, the overlay will use a number of heuristics based on the device's configuration to determine whether an on screen keyboard should be requested.\n When disabled, on screen keyboards will always be requested regardless of device configuration.\n Note, by setting environment variable \"EOS_OVERLAY_OSK\" to 0, on screen keyboard requests will always fail, and by setting it to 1, device checks will always succeed."]
    pub bIsDeviceChecksEnabled: EOS_Bool,
}
impl Default for _tagEOS_UI_ConfigureOnScreenKeyboardOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UI_ConfigureOnScreenKeyboard function."]
pub type EOS_UI_ConfigureOnScreenKeyboardOptions = _tagEOS_UI_ConfigureOnScreenKeyboardOptions;
#[doc = " No on screen keyboard."]
pub const EOS_UI_EOnScreenKeyboardType_EOS_UIOSKT_None: EOS_UI_EOnScreenKeyboardType = 0;
#[doc = " The default on screen keyboard."]
pub const EOS_UI_EOnScreenKeyboardType_EOS_UIOSKT_Default: EOS_UI_EOnScreenKeyboardType = 1;
#[doc = " The text on screen keyboard."]
pub const EOS_UI_EOnScreenKeyboardType_EOS_UIOSKT_Text: EOS_UI_EOnScreenKeyboardType = 2;
#[doc = " The telephone number on screen keyboard."]
pub const EOS_UI_EOnScreenKeyboardType_EOS_UIOSKT_TelephoneNumber: EOS_UI_EOnScreenKeyboardType = 3;
#[doc = " The URL on screen keyboard."]
pub const EOS_UI_EOnScreenKeyboardType_EOS_UIOSKT_URL: EOS_UI_EOnScreenKeyboardType = 4;
#[doc = " The email on screen keyboard."]
pub const EOS_UI_EOnScreenKeyboardType_EOS_UIOSKT_Email: EOS_UI_EOnScreenKeyboardType = 5;
#[doc = " The numeric on screen keyboard."]
pub const EOS_UI_EOnScreenKeyboardType_EOS_UIOSKT_Numeric: EOS_UI_EOnScreenKeyboardType = 6;
#[doc = " The decimal on screen keyboard."]
pub const EOS_UI_EOnScreenKeyboardType_EOS_UIOSKT_Decimal: EOS_UI_EOnScreenKeyboardType = 7;
#[doc = " The search on screen keyboard."]
pub const EOS_UI_EOnScreenKeyboardType_EOS_UIOSKT_Search: EOS_UI_EOnScreenKeyboardType = 8;
pub const EOS_UI_EOnScreenKeyboardType___EOS_UI_EOnScreenKeyboardType_PAD_INT32__:
    EOS_UI_EOnScreenKeyboardType = 2147483647;
#[doc = " An on screen keyboard type."]
pub type EOS_UI_EOnScreenKeyboardType = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_UI_AddNotifyOnScreenKeyboardRequested function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_UI_AddNotifyOnScreenKeyboardRequestedOptions {
    #[doc = " API Version: Set this to EOS_UI_ADDNOTIFYONSCREENKEYBOARDREQUESTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_UI_AddNotifyOnScreenKeyboardRequested function."]
pub type EOS_UI_AddNotifyOnScreenKeyboardRequestedOptions =
    _tagEOS_UI_AddNotifyOnScreenKeyboardRequestedOptions;
#[doc = " Output parameters for the EOS_UI_AddNotifyOnScreenKeyboardRequested function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UI_OnScreenKeyboardRequestedCallbackInfo {
    #[doc = " Context that was passed into EOS_UI_AddNotifyOnScreenKeyboardRequested"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The type of on screen keyboard being requested."]
    pub Type: EOS_UI_EOnScreenKeyboardType,
}
impl Default for _tagEOS_UI_OnScreenKeyboardRequestedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_UI_AddNotifyOnScreenKeyboardRequested function."]
pub type EOS_UI_OnScreenKeyboardRequestedCallbackInfo =
    _tagEOS_UI_OnScreenKeyboardRequestedCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_UI_AddNotifyOnScreenKeyboardRequested.\n @param Data A EOS_UI_OnScreenKeyboardRequestedCallbackInfo containing notification data."]
pub type EOS_UI_OnScreenKeyboardRequestedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_UI_OnScreenKeyboardRequestedCallbackInfo),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_FriendsHandle {
    _unused: [u8; 0],
}
pub type EOS_HFriends = *mut EOS_FriendsHandle;
#[doc = " Input parameters for the EOS_Friends_QueryFriends function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_QueryFriendsOptions {
    #[doc = " API Version: Set this to EOS_FRIENDS_QUERYFRIENDS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local, logged-in user whose friends list you want to retrieve"]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Friends_QueryFriendsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Friends_QueryFriends function."]
pub type EOS_Friends_QueryFriendsOptions = _tagEOS_Friends_QueryFriendsOptions;
#[doc = " Output parameters for the EOS_Friends_QueryFriends Function. These parameters are received through the callback provided to EOS_Friends_QueryFriends"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_QueryFriendsCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Friends_QueryFriends"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the user whose friends were queried"]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Friends_QueryFriendsCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Friends_QueryFriends Function. These parameters are received through the callback provided to EOS_Friends_QueryFriends"]
pub type EOS_Friends_QueryFriendsCallbackInfo = _tagEOS_Friends_QueryFriendsCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Friends_QueryFriends\n @param Data A EOS_Friends_QueryFriendsCallbackInfo containing the output information and result"]
pub type EOS_Friends_OnQueryFriendsCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Friends_QueryFriendsCallbackInfo)>;
#[doc = " Input parameters for the EOS_Friends_SendInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_SendInviteOptions {
    #[doc = " API Version: Set this to EOS_FRIENDS_SENDINVITE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local, logged-in user who is sending the friends list invitation"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user who is receiving the friends list invitation"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Friends_SendInviteOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Friends_SendInvite function."]
pub type EOS_Friends_SendInviteOptions = _tagEOS_Friends_SendInviteOptions;
#[doc = " Output parameters for the EOS_Friends_SendInvite API."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_SendInviteCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned if the invitation was sent, otherwise one of the error codes is returned. See eos_common.h"]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Friends_SendInvite"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the user who sent the friends list invitation"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user to whom the friends list invitation was sent"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Friends_SendInviteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Friends_SendInvite API."]
pub type EOS_Friends_SendInviteCallbackInfo = _tagEOS_Friends_SendInviteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Friends_SendInvite\n @param Data A EOS_Friends_SendInviteCallbackInfo containing the output information and result."]
pub type EOS_Friends_OnSendInviteCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Friends_SendInviteCallbackInfo)>;
#[doc = " Input parameters for the EOS_Friends_AcceptInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_AcceptInviteOptions {
    #[doc = " API Version: Set this to EOS_FRIENDS_ACCEPTINVITE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local, logged-in user who is accepting the friends list invitation"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user who sent the friends list invitation"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Friends_AcceptInviteOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Friends_AcceptInvite function."]
pub type EOS_Friends_AcceptInviteOptions = _tagEOS_Friends_AcceptInviteOptions;
#[doc = " Output parameters for the EOS_Friends_AcceptInvite Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_AcceptInviteCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned if an invite was accepted, otherwise one of the error codes is returned. See eos_common.h"]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that is passed into EOS_Friends_AcceptInvite"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the user who is accepting the friends list invitation"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user who sent the local user a friends list invitation"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Friends_AcceptInviteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Friends_AcceptInvite Function."]
pub type EOS_Friends_AcceptInviteCallbackInfo = _tagEOS_Friends_AcceptInviteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Friends_AcceptInvite\n @param Data A EOS_Friends_AcceptInviteCallbackInfo containing the output information and result."]
pub type EOS_Friends_OnAcceptInviteCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Friends_AcceptInviteCallbackInfo)>;
#[doc = " Input parameters for the EOS_Friends_RejectInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_RejectInviteOptions {
    #[doc = " API Version: Set this to EOS_FRIENDS_REJECTINVITE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local, logged-in user who is rejecting a friends list invitation"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user who sent the friends list invitation"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Friends_RejectInviteOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Friends_RejectInvite function."]
pub type EOS_Friends_RejectInviteOptions = _tagEOS_Friends_RejectInviteOptions;
#[doc = " Output parameters for the EOS_Friends_RejectInvite Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_RejectInviteCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned if an invite was accepted, otherwise one of the error codes is returned. See eos_common.h"]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that is passed into EOS_Friends_RejectInvite"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the user who is rejecting the friends list invitation"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user who sent the friends list invitation"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Friends_RejectInviteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Friends_RejectInvite Function."]
pub type EOS_Friends_RejectInviteCallbackInfo = _tagEOS_Friends_RejectInviteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Friends_RejectInvite\n @param Data A EOS_Friends_RejectInviteCallbackInfo containing output information and the result."]
pub type EOS_Friends_OnRejectInviteCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Friends_RejectInviteCallbackInfo)>;
#[doc = " Input parameters for the EOS_Friends_GetFriendsCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_GetFriendsCountOptions {
    #[doc = " API Version: Set this to EOS_FRIENDS_GETFRIENDSCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user whose friends should be counted"]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Friends_GetFriendsCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Friends_GetFriendsCount function."]
pub type EOS_Friends_GetFriendsCountOptions = _tagEOS_Friends_GetFriendsCountOptions;
#[doc = " Input parameters for the EOS_Friends_GetFriendAtIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_GetFriendAtIndexOptions {
    #[doc = " API Version: Set this to EOS_FRIENDS_GETFRIENDATINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user whose friend list is being queried"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Index into the friend list. This value must be between 0 and EOS_Friends_GetFriendsCount-1 inclusively."]
    pub Index: i32,
}
impl Default for _tagEOS_Friends_GetFriendAtIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Friends_GetFriendAtIndex function."]
pub type EOS_Friends_GetFriendAtIndexOptions = _tagEOS_Friends_GetFriendAtIndexOptions;
#[doc = " The two accounts have no friendship status."]
pub const EOS_EFriendsStatus_EOS_FS_NotFriends: EOS_EFriendsStatus = 0;
#[doc = " The local account has sent a friend invite to the other account.\n\n NOTE: EOS_FS_InviteSent is not returned by EOS_Friends_GetStatus or in EOS_Friends_AddNotifyFriendsUpdate callbacks unless\n       the local account was logged in with the EOS_AS_FriendsManagement authentication scope. Friend invites are managed\n       automatically by the Social Overlay."]
pub const EOS_EFriendsStatus_EOS_FS_InviteSent: EOS_EFriendsStatus = 1;
#[doc = " The other account has sent a friend invite to the local account.\n\n NOTE: EOS_FS_InviteReceived is not returned by EOS_Friends_GetStatus or in EOS_Friends_AddNotifyFriendsUpdate callbacks unless\n       the local account was logged in with the EOS_AS_FriendsManagement authentication scope. Friend invites are managed\n       automatically by the Social Overlay."]
pub const EOS_EFriendsStatus_EOS_FS_InviteReceived: EOS_EFriendsStatus = 2;
#[doc = " The accounts have accepted friendship."]
pub const EOS_EFriendsStatus_EOS_FS_Friends: EOS_EFriendsStatus = 3;
pub const EOS_EFriendsStatus___EOS_EFriendsStatus_PAD_INT32__: EOS_EFriendsStatus = 2147483647;
#[doc = " An enumeration of the different friendship statuses."]
pub type EOS_EFriendsStatus = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_Friends_GetStatus function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_GetStatusOptions {
    #[doc = " API Version: Set this to EOS_FRIENDS_GETSTATUS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local, logged in user"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user whose friendship status with the local user is being queried"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Friends_GetStatusOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Friends_GetStatus function."]
pub type EOS_Friends_GetStatusOptions = _tagEOS_Friends_GetStatusOptions;
#[doc = " Input parameters for the EOS_Friends_AddNotifyFriendsUpdate function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Friends_AddNotifyFriendsUpdateOptions {
    #[doc = " API Version: Set this to EOS_FRIENDS_ADDNOTIFYFRIENDSUPDATE_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Friends_AddNotifyFriendsUpdate function."]
pub type EOS_Friends_AddNotifyFriendsUpdateOptions = _tagEOS_Friends_AddNotifyFriendsUpdateOptions;
#[doc = " Structure containing information about a friend status update."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_OnFriendsUpdateInfo {
    #[doc = " Client-specified data passed into EOS_Friends_AddNotifyFriendsUpdate"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user who is receiving the update"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user whose status is being updated."]
    pub TargetUserId: EOS_EpicAccountId,
    #[doc = " The previous status of the user."]
    pub PreviousStatus: EOS_EFriendsStatus,
    #[doc = " The current status of the user."]
    pub CurrentStatus: EOS_EFriendsStatus,
}
impl Default for _tagEOS_Friends_OnFriendsUpdateInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about a friend status update."]
pub type EOS_Friends_OnFriendsUpdateInfo = _tagEOS_Friends_OnFriendsUpdateInfo;
#[doc = " Callback for information related to a friend status update."]
pub type EOS_Friends_OnFriendsUpdateCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Friends_OnFriendsUpdateInfo)>;
#[doc = " Input parameters for the EOS_Friends_GetBlockedUsersCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_GetBlockedUsersCountOptions {
    #[doc = " API Version: Set this to EOS_FRIENDS_GETBLOCKEDUSERSCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user whose blocked users should be counted."]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Friends_GetBlockedUsersCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Friends_GetBlockedUsersCount function."]
pub type EOS_Friends_GetBlockedUsersCountOptions = _tagEOS_Friends_GetBlockedUsersCountOptions;
#[doc = " Input parameters for the EOS_Friends_GetBlockedUserAtIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_GetBlockedUserAtIndexOptions {
    #[doc = " API Version: Set this to EOS_FRIENDS_GETBLOCKEDUSERATINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user whose blocked users list is being queried."]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Index into the blocked users list. This value must be between 0 and EOS_Friends_GetBlockedUsersCount-1 inclusively."]
    pub Index: i32,
}
impl Default for _tagEOS_Friends_GetBlockedUserAtIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Friends_GetBlockedUserAtIndex function."]
pub type EOS_Friends_GetBlockedUserAtIndexOptions = _tagEOS_Friends_GetBlockedUserAtIndexOptions;
#[doc = " Input parameters for the EOS_Friends_AddNotifyBlockedUsersUpdate function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Friends_AddNotifyBlockedUsersUpdateOptions {
    #[doc = " API Version: Set this to EOS_FRIENDS_ADDNOTIFYBLOCKEDUSERSUPDATE_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Friends_AddNotifyBlockedUsersUpdate function."]
pub type EOS_Friends_AddNotifyBlockedUsersUpdateOptions =
    _tagEOS_Friends_AddNotifyBlockedUsersUpdateOptions;
#[doc = " Structure containing information about a blocklist update."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Friends_OnBlockedUsersUpdateInfo {
    #[doc = " Client-specified data passed into EOS_Friends_AddNotifyBlockedUsersUpdate"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user who is receiving the update"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user whose blocked status is being updated."]
    pub TargetUserId: EOS_EpicAccountId,
    #[doc = " TargetUserId block status (blocked or not)."]
    pub bBlocked: EOS_Bool,
}
impl Default for _tagEOS_Friends_OnBlockedUsersUpdateInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about a blocklist update."]
pub type EOS_Friends_OnBlockedUsersUpdateInfo = _tagEOS_Friends_OnBlockedUsersUpdateInfo;
#[doc = " Callback for information related to a blocklist update."]
pub type EOS_Friends_OnBlockedUsersUpdateCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Friends_OnBlockedUsersUpdateInfo)>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_PresenceHandle {
    _unused: [u8; 0],
}
pub type EOS_HPresence = *mut EOS_PresenceHandle;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_PresenceModificationHandle {
    _unused: [u8; 0],
}
pub type EOS_HPresenceModification = *mut EOS_PresenceModificationHandle;
#[doc = " The status of the account is offline or not known"]
pub const EOS_Presence_EStatus_EOS_PS_Offline: EOS_Presence_EStatus = 0;
#[doc = " The status of the account is online"]
pub const EOS_Presence_EStatus_EOS_PS_Online: EOS_Presence_EStatus = 1;
#[doc = " The status of the account is away"]
pub const EOS_Presence_EStatus_EOS_PS_Away: EOS_Presence_EStatus = 2;
#[doc = " The status of the account is away, and has been away for a while"]
pub const EOS_Presence_EStatus_EOS_PS_ExtendedAway: EOS_Presence_EStatus = 3;
#[doc = " The status of the account is do-not-disturb"]
pub const EOS_Presence_EStatus_EOS_PS_DoNotDisturb: EOS_Presence_EStatus = 4;
pub const EOS_Presence_EStatus___EOS_Presence_EStatus_PAD_INT32__: EOS_Presence_EStatus =
    2147483647;
#[doc = " Presence Status states of a user\n\n @see EOS_Presence_CopyPresence\n @see EOS_PresenceModification_SetStatus"]
pub type EOS_Presence_EStatus = ::std::os::raw::c_int;
#[doc = " An individual presence data record that belongs to a EOS_Presence_Info object. This object is released when its parent EOS_Presence_Info object is released.\n\n @see EOS_Presence_Info"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Presence_DataRecord {
    #[doc = " API Version: Set this to EOS_PRESENCE_DATARECORD_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The name of this data"]
    pub Key: *const ::std::os::raw::c_char,
    #[doc = " The value of this data"]
    pub Value: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Presence_DataRecord {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " An individual presence data record that belongs to a EOS_Presence_Info object. This object is released when its parent EOS_Presence_Info object is released.\n\n @see EOS_Presence_Info"]
pub type EOS_Presence_DataRecord = _tagEOS_Presence_DataRecord;
#[doc = " All the known presence information for a specific user. This object must be released by calling EOS_Presence_Info_Release.\n\n @see EOS_Presence_CopyPresence\n @see EOS_Presence_Info_Release"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Presence_Info {
    #[doc = " API Version: Set this to EOS_PRESENCE_INFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The status of the user"]
    pub Status: EOS_Presence_EStatus,
    #[doc = " The Epic Account ID of the user"]
    pub UserId: EOS_EpicAccountId,
    #[doc = " The product ID that the user is logged in from"]
    pub ProductId: *const ::std::os::raw::c_char,
    #[doc = " The version of the product the user is logged in from"]
    pub ProductVersion: *const ::std::os::raw::c_char,
    #[doc = " The platform of that the user is logged in from"]
    pub Platform: *const ::std::os::raw::c_char,
    #[doc = " Rich text of the user."]
    pub RichText: *const ::std::os::raw::c_char,
    #[doc = " The count of records available"]
    pub RecordsCount: i32,
    #[doc = " The first data record, or NULL if RecordsCount is not at least 1"]
    pub Records: *const EOS_Presence_DataRecord,
    #[doc = " The user-facing name for the product the user is logged in from"]
    pub ProductName: *const ::std::os::raw::c_char,
    #[doc = " The integrated platform that the user is logged in with"]
    pub IntegratedPlatform: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Presence_Info {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " All the known presence information for a specific user. This object must be released by calling EOS_Presence_Info_Release.\n\n @see EOS_Presence_CopyPresence\n @see EOS_Presence_Info_Release"]
pub type EOS_Presence_Info = _tagEOS_Presence_Info;
#[doc = " Data for the EOS_Presence_QueryPresence function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Presence_QueryPresenceOptions {
    #[doc = " API Version: Set this to EOS_PRESENCE_QUERYPRESENCE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local, logged-in user making the request"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user whose presence data you want to retrieve; this value must be either the user making the request, or a friend of that user"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Presence_QueryPresenceOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_Presence_QueryPresence function"]
pub type EOS_Presence_QueryPresenceOptions = _tagEOS_Presence_QueryPresenceOptions;
#[doc = " The result meta-data for a presence query."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Presence_QueryPresenceCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful query, other codes indicate an error"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into EOS_Presence_QueryPresence"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user who made this request"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user whose presence was potentially queried"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Presence_QueryPresenceCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " The result meta-data for a presence query."]
pub type EOS_Presence_QueryPresenceCallbackInfo = _tagEOS_Presence_QueryPresenceCallbackInfo;
#[doc = " Callback for information related to EOS_Presence_QueryPresence finishing."]
pub type EOS_Presence_OnQueryPresenceCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Presence_QueryPresenceCallbackInfo),
>;
#[doc = " Data for the EOS_Presence_HasPresence function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Presence_HasPresenceOptions {
    #[doc = " API Version: Set this to EOS_PRESENCE_HASPRESENCE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local, logged-in user making the request"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user whose cached presence data you want to locate"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Presence_HasPresenceOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_Presence_HasPresence function."]
pub type EOS_Presence_HasPresenceOptions = _tagEOS_Presence_HasPresenceOptions;
#[doc = " Data for the EOS_Presence_CopyPresence function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Presence_CopyPresenceOptions {
    #[doc = " API Version: Set this to EOS_PRESENCE_COPYPRESENCE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local, logged-in user making the request"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user whose cached presence data you want to copy from the cache"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Presence_CopyPresenceOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_Presence_CopyPresence function."]
pub type EOS_Presence_CopyPresenceOptions = _tagEOS_Presence_CopyPresenceOptions;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_Presence_Info structure and its sub-objects. This must be called on data retrieved from EOS_Presence_CopyPresence.\n This can be safely called on a NULL presence info object.\n\n @param PresenceInfo The presence info structure to be release"]
    pub fn EOS_Presence_Info_Release(PresenceInfo: *mut EOS_Presence_Info);
}
#[doc = " Data for the EOS_Presence_CreatePresenceModification function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Presence_CreatePresenceModificationOptions {
    #[doc = " API Version: Set this to EOS_PRESENCE_CREATEPRESENCEMODIFICATION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local, logged-in user making the request"]
    pub LocalUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Presence_CreatePresenceModificationOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_Presence_CreatePresenceModification function."]
pub type EOS_Presence_CreatePresenceModificationOptions =
    _tagEOS_Presence_CreatePresenceModificationOptions;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_HPresenceModification handle. This must be called on Handles retrieved from EOS_Presence_CreatePresenceModification.\n This can be safely called on a NULL presence modification handle. This also may be safely called while a call to SetPresence is still pending.\n\n @param PresenceModificationHandle The presence modification handle to release\n\n @see EOS_Presence_CreatePresenceModification"]
    pub fn EOS_PresenceModification_Release(PresenceModificationHandle: EOS_HPresenceModification);
}
#[doc = " Data for the EOS_Presence_SetPresence function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Presence_SetPresenceOptions {
    #[doc = " API Version: Set this to EOS_PRESENCE_SETPRESENCE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local, logged-in user making the request"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The handle to the presence update"]
    pub PresenceModificationHandle: EOS_HPresenceModification,
}
impl Default for _tagEOS_Presence_SetPresenceOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_Presence_SetPresence function."]
pub type EOS_Presence_SetPresenceOptions = _tagEOS_Presence_SetPresenceOptions;
#[doc = " The result meta-data from setting a user's presence."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Presence_SetPresenceCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned if presence was successfully set, other codes indicate an error"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into EOS_Presence_SetPresence"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user that had their presence set"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Result code for the Rich presence operation. EOS_Success is returned if the Rich presence was successfully set, other code indicates an error."]
    pub RichPresenceResultCode: EOS_EResult,
}
impl Default for _tagEOS_Presence_SetPresenceCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " The result meta-data from setting a user's presence."]
pub type EOS_Presence_SetPresenceCallbackInfo = _tagEOS_Presence_SetPresenceCallbackInfo;
#[doc = " Callback for information related to EOS_Presence_SetPresence finishing."]
pub type EOS_Presence_SetPresenceCompleteCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Presence_SetPresenceCallbackInfo)>;
#[doc = " Data for the EOS_Presence_AddNotifyOnPresenceChanged function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Presence_AddNotifyOnPresenceChangedOptions {
    #[doc = " API Version: Set this to EOS_PRESENCE_ADDNOTIFYONPRESENCECHANGED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Data for the EOS_Presence_AddNotifyOnPresenceChanged function."]
pub type EOS_Presence_AddNotifyOnPresenceChangedOptions =
    _tagEOS_Presence_AddNotifyOnPresenceChangedOptions;
#[doc = " Data containing which users presence has changed"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Presence_PresenceChangedCallbackInfo {
    #[doc = " Client-specified data passed into EOS_Presence_AddNotifyOnPresenceChanged"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local user who is being informed for PresenceUserId's presence change"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user who had their presence changed"]
    pub PresenceUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Presence_PresenceChangedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing which users presence has changed"]
pub type EOS_Presence_PresenceChangedCallbackInfo = _tagEOS_Presence_PresenceChangedCallbackInfo;
#[doc = " Input parameters for the EOS_Presence_AddNotifyJoinGameAccepted function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Presence_AddNotifyJoinGameAcceptedOptions {
    #[doc = " API Version: Set this to EOS_PRESENCE_ADDNOTIFYJOINGAMEACCEPTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Presence_AddNotifyJoinGameAccepted function."]
pub type EOS_Presence_AddNotifyJoinGameAcceptedOptions =
    _tagEOS_Presence_AddNotifyJoinGameAcceptedOptions;
#[doc = " Output parameters for the EOS_Presence_OnJoinGameAcceptedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Presence_JoinGameAcceptedCallbackInfo {
    #[doc = " Context that was passed into EOS_Presence_AddNotifyJoinGameAccepted"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Join Info custom game-data string to use to join the target user.\n Set to a null pointer to delete the value."]
    pub JoinInfo: *const ::std::os::raw::c_char,
    #[doc = " The Epic Account ID of the user who accepted the invitation"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the user who sent the invitation"]
    pub TargetUserId: EOS_EpicAccountId,
    #[doc = " If the value is not EOS_UI_EVENTID_INVALID then it must be passed back to the SDK using EOS_UI_AcknowledgeEventId.\n This should be done after attempting to join the game and either succeeding or failing to connect.\n This is necessary to allow the Social Overlay UI to manage the `Join` button."]
    pub UiEventId: EOS_UI_EventId,
}
impl Default for _tagEOS_Presence_JoinGameAcceptedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Presence_OnJoinGameAcceptedCallback Function."]
pub type EOS_Presence_JoinGameAcceptedCallbackInfo = _tagEOS_Presence_JoinGameAcceptedCallbackInfo;
#[doc = " Function prototype definition for notifications that come from EOS_Presence_AddNotifyJoinGameAccepted\n\n @param Data A EOS_Presence_JoinGameAcceptedCallbackInfo containing the output information and result\n\n @note EOS_UI_AcknowledgeEventId must be called with any valid UiEventId passed via the data."]
pub type EOS_Presence_OnJoinGameAcceptedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Presence_JoinGameAcceptedCallbackInfo),
>;
#[doc = " Callback for information related to notifications from EOS_Presence_AddNotifyOnPresenceChanged triggering."]
pub type EOS_Presence_OnPresenceChangedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Presence_PresenceChangedCallbackInfo),
>;
#[doc = " Data for the EOS_Presence_GetJoinInfo function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Presence_GetJoinInfoOptions {
    #[doc = " API Version: Set this to EOS_PRESENCE_GETJOININFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The local user's Epic Account ID"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID to query for join info; this value must either be a logged-in local user, or a friend of that user"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_Presence_GetJoinInfoOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_Presence_GetJoinInfo function."]
pub type EOS_Presence_GetJoinInfoOptions = _tagEOS_Presence_GetJoinInfoOptions;
#[doc = " Data for the EOS_PresenceModification_SetJoinInfo function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PresenceModification_SetJoinInfoOptions {
    #[doc = " API Version: Set this to EOS_PRESENCEMODIFICATION_SETJOININFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The string which will be advertised as this player's join info.\n An application is expected to freely define the meaning of this string to use for connecting to an active game session.\n The string should not exceed EOS_PRESENCEMODIFICATION_JOININFO_MAX_LENGTH in length.\n This affects the ability of the Social Overlay to show game related actions to take in the player's social graph.\n\n @note The Social Overlay can handle only one of the following three options at a time:\n * using the bPresenceEnabled flags within the Sessions interface\n * using the bPresenceEnabled flags within the Lobby interface\n * using EOS_PresenceModification_SetJoinInfo\n\n @see EOS_Lobby_CreateLobbyOptions\n @see EOS_Lobby_JoinLobbyOptions\n @see EOS_Sessions_CreateSessionModificationOptions\n @see EOS_Sessions_JoinSessionOptions"]
    pub JoinInfo: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_PresenceModification_SetJoinInfoOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_PresenceModification_SetJoinInfo function."]
pub type EOS_PresenceModification_SetJoinInfoOptions =
    _tagEOS_PresenceModification_SetJoinInfoOptions;
#[doc = " Data for the EOS_PresenceModification_SetStatus function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PresenceModification_SetStatusOptions {
    #[doc = " API Version: Set this to EOS_PRESENCEMODIFICATION_SETSTATUS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The status of the user"]
    pub Status: EOS_Presence_EStatus,
}
impl Default for _tagEOS_PresenceModification_SetStatusOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_PresenceModification_SetStatus function."]
pub type EOS_PresenceModification_SetStatusOptions = _tagEOS_PresenceModification_SetStatusOptions;
#[doc = " Data for the EOS_PresenceModification_SetRawRichText API."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PresenceModification_SetRawRichTextOptions {
    #[doc = " API Version: Set this to EOS_PRESENCEMODIFICATION_SETRAWRICHTEXT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The status of the user"]
    pub RichText: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_PresenceModification_SetRawRichTextOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_PresenceModification_SetRawRichText API."]
pub type EOS_PresenceModification_SetRawRichTextOptions =
    _tagEOS_PresenceModification_SetRawRichTextOptions;
#[doc = " Data for the EOS_PresenceModification_SetData function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PresenceModification_SetDataOptions {
    #[doc = " API Version: Set this to EOS_PRESENCEMODIFICATION_SETDATA_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The count of records to set"]
    pub RecordsCount: i32,
    #[doc = " The pointer to start of a sequential array of Presence DataRecords"]
    pub Records: *const EOS_Presence_DataRecord,
}
impl Default for _tagEOS_PresenceModification_SetDataOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_PresenceModification_SetData function."]
pub type EOS_PresenceModification_SetDataOptions = _tagEOS_PresenceModification_SetDataOptions;
#[doc = " Data for identifying which data records should be deleted."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PresenceModification_DataRecordId {
    #[doc = " API Version: Set this to EOS_PRESENCEMODIFICATION_DATARECORDID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The key to be deleted from the data record"]
    pub Key: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_PresenceModification_DataRecordId {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for identifying which data records should be deleted."]
pub type EOS_PresenceModification_DataRecordId = _tagEOS_PresenceModification_DataRecordId;
#[doc = " Data for the EOS_PresenceModification_DeleteData function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PresenceModification_DeleteDataOptions {
    #[doc = " API Version: Set this to EOS_PRESENCEMODIFICATION_DELETEDATA_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The count of data keys to delete"]
    pub RecordsCount: i32,
    #[doc = " The pointer to start of a sequential array"]
    pub Records: *const EOS_PresenceModification_DataRecordId,
}
impl Default for _tagEOS_PresenceModification_DeleteDataOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_PresenceModification_DeleteData function."]
pub type EOS_PresenceModification_DeleteDataOptions =
    _tagEOS_PresenceModification_DeleteDataOptions;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_P2PHandle {
    _unused: [u8; 0],
}
pub type EOS_HP2P = *mut EOS_P2PHandle;
#[doc = " NAT type either unknown (remote) or we are unable to determine it (local)"]
pub const EOS_ENATType_EOS_NAT_Unknown: EOS_ENATType = 0;
#[doc = " All peers can directly-connect to you"]
pub const EOS_ENATType_EOS_NAT_Open: EOS_ENATType = 1;
#[doc = " You can directly-connect to other Moderate and Open peers"]
pub const EOS_ENATType_EOS_NAT_Moderate: EOS_ENATType = 2;
#[doc = " You can only directly-connect to Open peers"]
pub const EOS_ENATType_EOS_NAT_Strict: EOS_ENATType = 3;
pub const EOS_ENATType___EOS_ENATType_PAD_INT32__: EOS_ENATType = 2147483647;
#[doc = " Categories of NAT strictness."]
pub type EOS_ENATType = ::std::os::raw::c_int;
#[doc = " P2P Socket ID\n\n The Socket ID contains an application-defined name for the connection between a local person and another peer.\n\n When a remote user receives a connection request from you, they will receive this information.  It can be important\n to only accept connections with a known socket-name and/or from a known user, to prevent leaking of private\n information, such as a user's IP address. Using the socket name as a secret key can help prevent such leaks. Shared\n private data, like a private match's Session ID are good candidates for a socket name."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_SocketId {
    #[doc = " API Version: Set this to EOS_P2P_SOCKETID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " A name for the connection. Must be a NULL-terminated string of between 1-32 alpha-numeric characters (A-Z, a-z, 0-9, '-', '_', ' ', '+', '=', '.')"]
    pub SocketName: [::std::os::raw::c_char; 33usize],
}
impl Default for _tagEOS_P2P_SocketId {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " P2P Socket ID\n\n The Socket ID contains an application-defined name for the connection between a local person and another peer.\n\n When a remote user receives a connection request from you, they will receive this information.  It can be important\n to only accept connections with a known socket-name and/or from a known user, to prevent leaking of private\n information, such as a user's IP address. Using the socket name as a secret key can help prevent such leaks. Shared\n private data, like a private match's Session ID are good candidates for a socket name."]
pub type EOS_P2P_SocketId = _tagEOS_P2P_SocketId;
#[doc = " Packets will only be sent once and may be received out of order"]
pub const EOS_EPacketReliability_EOS_PR_UnreliableUnordered: EOS_EPacketReliability = 0;
#[doc = " Packets may be sent multiple times and may be received out of order"]
pub const EOS_EPacketReliability_EOS_PR_ReliableUnordered: EOS_EPacketReliability = 1;
#[doc = " Packets may be sent multiple times and will be received in order"]
pub const EOS_EPacketReliability_EOS_PR_ReliableOrdered: EOS_EPacketReliability = 2;
pub const EOS_EPacketReliability___EOS_EPacketReliability_PAD_INT32__: EOS_EPacketReliability =
    2147483647;
#[doc = " Types of packet reliability.\n\n Ordered packets will only be ordered relative to other ordered packets. Reliable/unreliable and ordered/unordered communication\n can be sent on the same Socket ID and Channel."]
pub type EOS_EPacketReliability = ::std::os::raw::c_int;
#[doc = " Structure containing information about the data being sent and to which player"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_SendPacketOptions {
    #[doc = " API Version: Set this to EOS_P2P_SENDPACKET_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who is sending this packet"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the Peer you would like to send a packet to"]
    pub RemoteUserId: EOS_ProductUserId,
    #[doc = " The socket ID for data you are sending in this packet"]
    pub SocketId: *const EOS_P2P_SocketId,
    #[doc = " Channel associated with this data"]
    pub Channel: u8,
    #[doc = " The size of the data to be sent to the RemoteUser"]
    pub DataLengthBytes: u32,
    #[doc = " The data to be sent to the RemoteUser"]
    pub Data: *const ::std::os::raw::c_void,
    #[doc = " If false and we do not already have an established connection to the peer, this data will be dropped"]
    pub bAllowDelayedDelivery: EOS_Bool,
    #[doc = " Sets the reliability of the delivery of this packet. The reliability can be `EOS_PR_UnreliableUnordered`, `EOS_PR_ReliableUnordered`, or `EOS_PR_ReliableOrdered`."]
    pub Reliability: EOS_EPacketReliability,
    #[doc = " If set to EOS_TRUE, EOS_P2P_SendPacket will not automatically establish a connection with the RemoteUserId and will require explicit calls to\n EOS_P2P_AcceptConnection first whenever the connection is closed. If set to EOS_FALSE, EOS_P2P_SendPacket will automatically accept and start\n the connection any time it is called and the connection is not already open."]
    pub bDisableAutoAcceptConnection: EOS_Bool,
}
impl Default for _tagEOS_P2P_SendPacketOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about the data being sent and to which player"]
pub type EOS_P2P_SendPacketOptions = _tagEOS_P2P_SendPacketOptions;
#[doc = " Structure containing information about who would like to receive a packet."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_GetNextReceivedPacketSizeOptions {
    #[doc = " API Version: Set this to EOS_P2P_GETNEXTRECEIVEDPACKETSIZE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who is receiving the packet"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " An optional channel to request the data for. If NULL, we're retrieving the size of the next packet on any channel."]
    pub RequestedChannel: *const u8,
}
impl Default for _tagEOS_P2P_GetNextReceivedPacketSizeOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about who would like to receive a packet."]
pub type EOS_P2P_GetNextReceivedPacketSizeOptions = _tagEOS_P2P_GetNextReceivedPacketSizeOptions;
#[doc = " Structure containing information about who would like to receive a packet, and how much data can be stored safely."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_ReceivePacketOptions {
    #[doc = " API Version: Set this to EOS_P2P_RECEIVEPACKET_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the user who is receiving the packet"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The maximum amount of data in bytes that can be safely copied to OutData in the function call"]
    pub MaxDataSizeBytes: u32,
    #[doc = " An optional channel to request the data for. If NULL, we're retrieving the next packet on any channel"]
    pub RequestedChannel: *const u8,
}
impl Default for _tagEOS_P2P_ReceivePacketOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about who would like to receive a packet, and how much data can be stored safely."]
pub type EOS_P2P_ReceivePacketOptions = _tagEOS_P2P_ReceivePacketOptions;
#[doc = " Structure containing information about who would like connection notifications, and about which socket."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_AddNotifyPeerConnectionRequestOptions {
    #[doc = " API Version: Set this to EOS_P2P_ADDNOTIFYPEERCONNECTIONREQUEST_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the user who is listening for incoming connection requests"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The optional socket ID to listen for, used as a filter for incoming connection requests; If NULL, incoming connection requests will not be filtered"]
    pub SocketId: *const EOS_P2P_SocketId,
}
impl Default for _tagEOS_P2P_AddNotifyPeerConnectionRequestOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about who would like connection notifications, and about which socket."]
pub type EOS_P2P_AddNotifyPeerConnectionRequestOptions =
    _tagEOS_P2P_AddNotifyPeerConnectionRequestOptions;
#[doc = " Structure containing information about an incoming connection request."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_OnIncomingConnectionRequestInfo {
    #[doc = " Client-specified data passed into EOS_Presence_AddNotifyOnPresenceChanged"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who is being requested to open a P2P session with RemoteUserId"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the remote user who requested a peer connection with the local user"]
    pub RemoteUserId: EOS_ProductUserId,
    #[doc = " The ID of the socket the Remote User wishes to communicate on"]
    pub SocketId: *const EOS_P2P_SocketId,
}
impl Default for _tagEOS_P2P_OnIncomingConnectionRequestInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about an incoming connection request."]
pub type EOS_P2P_OnIncomingConnectionRequestInfo = _tagEOS_P2P_OnIncomingConnectionRequestInfo;
#[doc = " Callback for information related to incoming connection requests."]
pub type EOS_P2P_OnIncomingConnectionRequestCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_P2P_OnIncomingConnectionRequestInfo),
>;
#[doc = " Structure containing information about which connections should be notified"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_AddNotifyPeerConnectionEstablishedOptions {
    #[doc = " API Version: Set this to EOS_P2P_ADDNOTIFYPEERCONNECTIONESTABLISHED_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who would like to receive notifications"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The optional socket ID, used as a filter for established connections. If NULL, this function handler will be called for all sockets"]
    pub SocketId: *const EOS_P2P_SocketId,
}
impl Default for _tagEOS_P2P_AddNotifyPeerConnectionEstablishedOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about which connections should be notified"]
pub type EOS_P2P_AddNotifyPeerConnectionEstablishedOptions =
    _tagEOS_P2P_AddNotifyPeerConnectionEstablishedOptions;
#[doc = " The connection is brand new"]
pub const EOS_EConnectionEstablishedType_EOS_CET_NewConnection: EOS_EConnectionEstablishedType = 0;
#[doc = " The connection is reestablished (reconnection)"]
pub const EOS_EConnectionEstablishedType_EOS_CET_Reconnection: EOS_EConnectionEstablishedType = 1;
pub const EOS_EConnectionEstablishedType___EOS_EConnectionEstablishedType_PAD_INT32__:
    EOS_EConnectionEstablishedType = 2147483647;
#[doc = " Type of established connection"]
pub type EOS_EConnectionEstablishedType = ::std::os::raw::c_int;
#[doc = " There is no established connection"]
pub const EOS_ENetworkConnectionType_EOS_NCT_NoConnection: EOS_ENetworkConnectionType = 0;
#[doc = " A direct connection to the peer over the Internet or Local Network"]
pub const EOS_ENetworkConnectionType_EOS_NCT_DirectConnection: EOS_ENetworkConnectionType = 1;
#[doc = " A relayed connection using Epic-provided servers to the peer over the Internet"]
pub const EOS_ENetworkConnectionType_EOS_NCT_RelayedConnection: EOS_ENetworkConnectionType = 2;
pub const EOS_ENetworkConnectionType___EOS_ENetworkConnectionType_PAD_INT32__:
    EOS_ENetworkConnectionType = 2147483647;
#[doc = " Types of network connections."]
pub type EOS_ENetworkConnectionType = ::std::os::raw::c_int;
#[doc = " Structure containing information about a connection being established"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_OnPeerConnectionEstablishedInfo {
    #[doc = " Client-specified data passed into EOS_P2P_AddNotifyPeerConnectionEstablished"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who is being notified of a connection being established"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the remote user who this connection was with"]
    pub RemoteUserId: EOS_ProductUserId,
    #[doc = " The socket ID of the connection being established"]
    pub SocketId: *const EOS_P2P_SocketId,
    #[doc = " Information if this is a new connection or reconnection"]
    pub ConnectionType: EOS_EConnectionEstablishedType,
    #[doc = " What type of network connection is being used for this connection"]
    pub NetworkType: EOS_ENetworkConnectionType,
}
impl Default for _tagEOS_P2P_OnPeerConnectionEstablishedInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about a connection being established"]
pub type EOS_P2P_OnPeerConnectionEstablishedInfo = _tagEOS_P2P_OnPeerConnectionEstablishedInfo;
#[doc = " Callback for information related to new connections being established"]
pub type EOS_P2P_OnPeerConnectionEstablishedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_P2P_OnPeerConnectionEstablishedInfo),
>;
#[doc = " Structure containing information about who would like notifications about interrupted connections, and for which socket."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_AddNotifyPeerConnectionInterruptedOptions {
    #[doc = " API Version: Set this to EOS_P2P_ADDNOTIFYPEERCONNECTIONINTERRUPTED_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who would like notifications"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " An optional socket ID to filter interrupted connections on. If NULL, this function handler will be called for all interrupted connections"]
    pub SocketId: *const EOS_P2P_SocketId,
}
impl Default for _tagEOS_P2P_AddNotifyPeerConnectionInterruptedOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about who would like notifications about interrupted connections, and for which socket."]
pub type EOS_P2P_AddNotifyPeerConnectionInterruptedOptions =
    _tagEOS_P2P_AddNotifyPeerConnectionInterruptedOptions;
#[doc = " Structure containing information about an connection request that is that was interrupted."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_OnPeerConnectionInterruptedInfo {
    #[doc = " Client-specified data passed into EOS_Presence_AddNotifyOnPresenceChanged"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The local user who is being notified of a connection that was interrupted"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the remote user who this connection was with"]
    pub RemoteUserId: EOS_ProductUserId,
    #[doc = " The socket ID of the connection that was interrupted"]
    pub SocketId: *const EOS_P2P_SocketId,
}
impl Default for _tagEOS_P2P_OnPeerConnectionInterruptedInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about an connection request that is that was interrupted."]
pub type EOS_P2P_OnPeerConnectionInterruptedInfo = _tagEOS_P2P_OnPeerConnectionInterruptedInfo;
#[doc = " Callback for information related to open connections that are interrupted."]
pub type EOS_P2P_OnPeerConnectionInterruptedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_P2P_OnPeerConnectionInterruptedInfo),
>;
#[doc = " Structure containing information about who would like notifications about closed connections, and for which socket."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_AddNotifyPeerConnectionClosedOptions {
    #[doc = " API Version: Set this to EOS_P2P_ADDNOTIFYPEERCONNECTIONCLOSED_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who would like notifications"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The optional socket ID to listen for to be closed. If NULL, this function handler will be called for all closed connections"]
    pub SocketId: *const EOS_P2P_SocketId,
}
impl Default for _tagEOS_P2P_AddNotifyPeerConnectionClosedOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about who would like notifications about closed connections, and for which socket."]
pub type EOS_P2P_AddNotifyPeerConnectionClosedOptions =
    _tagEOS_P2P_AddNotifyPeerConnectionClosedOptions;
#[doc = " The connection was closed for unknown reasons. This most notably happens during application shutdown."]
pub const EOS_EConnectionClosedReason_EOS_CCR_Unknown: EOS_EConnectionClosedReason = 0;
#[doc = " The connection was at least locally accepted, but was closed by the local user via a call to EOS_P2P_CloseConnection / EOS_P2P_CloseConnections."]
pub const EOS_EConnectionClosedReason_EOS_CCR_ClosedByLocalUser: EOS_EConnectionClosedReason = 1;
#[doc = " The connection was at least locally accepted, but was gracefully closed by the remote user via a call to EOS_P2P_CloseConnection / EOS_P2P_CloseConnections."]
pub const EOS_EConnectionClosedReason_EOS_CCR_ClosedByPeer: EOS_EConnectionClosedReason = 2;
#[doc = " The connection was at least locally accepted, but was not remotely accepted in time."]
pub const EOS_EConnectionClosedReason_EOS_CCR_TimedOut: EOS_EConnectionClosedReason = 3;
#[doc = " The connection was accepted, but the connection could not be created due to too many other existing connections"]
pub const EOS_EConnectionClosedReason_EOS_CCR_TooManyConnections: EOS_EConnectionClosedReason = 4;
#[doc = " The connection was accepted, The remote user sent an invalid message"]
pub const EOS_EConnectionClosedReason_EOS_CCR_InvalidMessage: EOS_EConnectionClosedReason = 5;
#[doc = " The connection was accepted, but the remote user sent us invalid data"]
pub const EOS_EConnectionClosedReason_EOS_CCR_InvalidData: EOS_EConnectionClosedReason = 6;
#[doc = " The connection was accepted, but we failed to ever establish a connection with the remote user due to connectivity issues."]
pub const EOS_EConnectionClosedReason_EOS_CCR_ConnectionFailed: EOS_EConnectionClosedReason = 7;
#[doc = " The connection was accepted and established, but the peer silently went away."]
pub const EOS_EConnectionClosedReason_EOS_CCR_ConnectionClosed: EOS_EConnectionClosedReason = 8;
#[doc = " The connection was locally accepted, but we failed to negotiate a connection with the remote user. This most commonly occurs if the local user goes offline or is logged-out during the connection process."]
pub const EOS_EConnectionClosedReason_EOS_CCR_NegotiationFailed: EOS_EConnectionClosedReason = 9;
#[doc = " The connection was accepted, but there was an internal error occurred and the connection cannot be created or continue."]
pub const EOS_EConnectionClosedReason_EOS_CCR_UnexpectedError: EOS_EConnectionClosedReason = 10;
#[doc = " The connection was ignored because no connection listeners were bound."]
pub const EOS_EConnectionClosedReason_EOS_CCR_ConnectionIgnored: EOS_EConnectionClosedReason = 11;
pub const EOS_EConnectionClosedReason___EOS_EConnectionClosedReason_PAD_INT32__:
    EOS_EConnectionClosedReason = 2147483647;
#[doc = " Reasons why a P2P connection was closed"]
pub type EOS_EConnectionClosedReason = ::std::os::raw::c_int;
#[doc = " Structure containing information about an connection request that is being closed."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_OnRemoteConnectionClosedInfo {
    #[doc = " Client-specified data passed into EOS_Presence_AddNotifyOnPresenceChanged"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The local user who is being notified of a connection being closed"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the remote user who this connection was with"]
    pub RemoteUserId: EOS_ProductUserId,
    #[doc = " The socket ID of the connection being closed"]
    pub SocketId: *const EOS_P2P_SocketId,
    #[doc = " The reason the connection was closed (if known)"]
    pub Reason: EOS_EConnectionClosedReason,
}
impl Default for _tagEOS_P2P_OnRemoteConnectionClosedInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about an connection request that is being closed."]
pub type EOS_P2P_OnRemoteConnectionClosedInfo = _tagEOS_P2P_OnRemoteConnectionClosedInfo;
#[doc = " Callback for information related to open connections being closed."]
pub type EOS_P2P_OnRemoteConnectionClosedCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_P2P_OnRemoteConnectionClosedInfo)>;
#[doc = " Structure containing information about who would like to accept a connection, and which connection."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_AcceptConnectionOptions {
    #[doc = " API Version: Set this to EOS_P2P_ACCEPTCONNECTION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who is accepting any pending or future connections with RemoteUserId"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the remote user who has either sent a connection request or is expected to in the future"]
    pub RemoteUserId: EOS_ProductUserId,
    #[doc = " The socket ID of the connection to accept on"]
    pub SocketId: *const EOS_P2P_SocketId,
}
impl Default for _tagEOS_P2P_AcceptConnectionOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about who would like to accept a connection, and which connection."]
pub type EOS_P2P_AcceptConnectionOptions = _tagEOS_P2P_AcceptConnectionOptions;
#[doc = " Structure containing information about who would like to close a connection, and which connection."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_CloseConnectionOptions {
    #[doc = " API Version: Set this to EOS_P2P_CLOSECONNECTION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who would like to close a previously accepted connection (or decline a pending invite)"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the remote user to disconnect from (or to reject a pending invite from)"]
    pub RemoteUserId: EOS_ProductUserId,
    #[doc = " The socket ID of the connection to close (or optionally NULL to not accept any connection requests from the Remote User)"]
    pub SocketId: *const EOS_P2P_SocketId,
}
impl Default for _tagEOS_P2P_CloseConnectionOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about who would like to close a connection, and which connection."]
pub type EOS_P2P_CloseConnectionOptions = _tagEOS_P2P_CloseConnectionOptions;
#[doc = " Structure containing information about who would like to close connections, and by what socket ID"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_CloseConnectionsOptions {
    #[doc = " API Version: Set this to EOS_P2P_CLOSECONNECTIONS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who would like to close all connections that use a particular socket ID"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The socket ID of the connections to close"]
    pub SocketId: *const EOS_P2P_SocketId,
}
impl Default for _tagEOS_P2P_CloseConnectionsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about who would like to close connections, and by what socket ID"]
pub type EOS_P2P_CloseConnectionsOptions = _tagEOS_P2P_CloseConnectionsOptions;
#[doc = " Structure containing information needed to query NAT-types"]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_P2P_QueryNATTypeOptions {
    #[doc = " API Version: Set this to EOS_P2P_QUERYNATTYPE_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Structure containing information needed to query NAT-types"]
pub type EOS_P2P_QueryNATTypeOptions = _tagEOS_P2P_QueryNATTypeOptions;
#[doc = " Structure containing information about the local network NAT type"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_OnQueryNATTypeCompleteInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful query, other codes indicate an error"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into EOS_P2P_QueryNATType"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The queried NAT type"]
    pub NATType: EOS_ENATType,
}
impl Default for _tagEOS_P2P_OnQueryNATTypeCompleteInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about the local network NAT type"]
pub type EOS_P2P_OnQueryNATTypeCompleteInfo = _tagEOS_P2P_OnQueryNATTypeCompleteInfo;
#[doc = " Callback for information related to our NAT type query completing."]
pub type EOS_P2P_OnQueryNATTypeCompleteCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_P2P_OnQueryNATTypeCompleteInfo)>;
#[doc = " Structure containing information needed to get previously queried NAT-types"]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_P2P_GetNATTypeOptions {
    #[doc = " API Version: Set this to EOS_P2P_GETNATTYPE_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Structure containing information needed to get previously queried NAT-types"]
pub type EOS_P2P_GetNATTypeOptions = _tagEOS_P2P_GetNATTypeOptions;
#[doc = " Peer connections will never attempt to use relay servers. Clients with restrictive NATs may not be able to connect to peers."]
pub const EOS_ERelayControl_EOS_RC_NoRelays: EOS_ERelayControl = 0;
#[doc = " Peer connections will attempt to use relay servers, but only after direct connection attempts fail. This is the default value if not changed."]
pub const EOS_ERelayControl_EOS_RC_AllowRelays: EOS_ERelayControl = 1;
#[doc = " Peer connections will only ever use relay servers. This will add latency to all connections, but will hide IP Addresses from peers."]
pub const EOS_ERelayControl_EOS_RC_ForceRelays: EOS_ERelayControl = 2;
pub const EOS_ERelayControl___EOS_ERelayControl_PAD_INT32__: EOS_ERelayControl = 2147483647;
#[doc = " Setting for controlling whether relay servers are used.\n\n Please see the following EOS_ERelayControl value compatibility-chart to better understand how changing this value\n can affect compatibility between clients with different settings. Connections between clients using\n Incompatible settings may succeed in limited scenarios but should be treated as though they will consistently fail.\n\n +------------------------------+---------------------+-------------------------------+---------------------+\n |                              |   EOS_RC_NoRelays   |  EOS_RC_AllowRelays (Default) |  EOS_RC_ForceRelays |\n +------------------------------+---------------------+-------------------------------+---------------------+\n | EOS_RC_NoRelays              |  Compatible         |  Compatible                   |  Incompatible       |\n | EOS_RC_AllowRelays (Default) |  Compatible         |  Compatible                   |  Compatible         |\n | EOS_RC_ForceRelays           |  Incompatible       |  Compatible                   |  Compatible         |\n +------------------------------+---------------------+-------------------------------+---------------------+"]
pub type EOS_ERelayControl = ::std::os::raw::c_int;
#[doc = " Structure containing information about new relay configurations."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_SetRelayControlOptions {
    #[doc = " API Version: Set this to EOS_P2P_SETRELAYCONTROL_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The requested level of relay servers for P2P connections. This setting is only applied to new P2P connections, or when existing P2P connections\n reconnect during a temporary connectivity outage. Peers with an incompatible setting to the local setting will not be able to connect."]
    pub RelayControl: EOS_ERelayControl,
}
impl Default for _tagEOS_P2P_SetRelayControlOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about new relay configurations."]
pub type EOS_P2P_SetRelayControlOptions = _tagEOS_P2P_SetRelayControlOptions;
#[doc = " Structure containing information about getting the relay control setting."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_P2P_GetRelayControlOptions {
    #[doc = " API Version: Set this to EOS_P2P_GETRELAYCONTROL_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Structure containing information about getting the relay control setting."]
pub type EOS_P2P_GetRelayControlOptions = _tagEOS_P2P_GetRelayControlOptions;
#[doc = " Structure containing information about new port range settings."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_P2P_SetPortRangeOptions {
    #[doc = " API Version: Set this to EOS_P2P_SETPORTRANGE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ideal port to use for P2P traffic. The default value is 7777. If set to 0, the OS will choose a port. If set to 0, MaxAdditionalPortsToTry must be set to 0."]
    pub Port: u16,
    #[doc = " The maximum amount of additional ports to try if Port is unavailable. Ports will be tried from Port to Port + MaxAdditionalPortsToTry\n inclusive, until one is available or we run out of ports. If no ports are available, P2P connections will fail. The default value is 99."]
    pub MaxAdditionalPortsToTry: u16,
}
#[doc = " Structure containing information about new port range settings."]
pub type EOS_P2P_SetPortRangeOptions = _tagEOS_P2P_SetPortRangeOptions;
#[doc = " Structure containing information about getting the configured port range settings."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_P2P_GetPortRangeOptions {
    #[doc = " API Version: Set this to EOS_P2P_GETPORTRANGE_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Structure containing information about getting the configured port range settings."]
pub type EOS_P2P_GetPortRangeOptions = _tagEOS_P2P_GetPortRangeOptions;
#[doc = " Structure containing information about new packet queue size settings."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_P2P_SetPacketQueueSizeOptions {
    #[doc = " API Version: Set this to EOS_P2P_SETPACKETQUEUESIZE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ideal maximum amount of bytes the Incoming packet queue can consume"]
    pub IncomingPacketQueueMaxSizeBytes: u64,
    #[doc = " The ideal maximum amount of bytes the Outgoing packet queue can consume"]
    pub OutgoingPacketQueueMaxSizeBytes: u64,
}
#[doc = " Structure containing information about new packet queue size settings."]
pub type EOS_P2P_SetPacketQueueSizeOptions = _tagEOS_P2P_SetPacketQueueSizeOptions;
#[doc = " Structure containing information needed to get the current packet queue information."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_P2P_GetPacketQueueInfoOptions {
    #[doc = " API Version: Set this to EOS_P2P_GETPACKETQUEUEINFO_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Structure containing information needed to get the current packet queue information."]
pub type EOS_P2P_GetPacketQueueInfoOptions = _tagEOS_P2P_GetPacketQueueInfoOptions;
#[doc = " Information related to the current state of the packet queues. It is possible for the current size\n to be larger than the maximum size if the maximum size changes or if the maximum queue size is\n set to EOS_P2P_MAX_QUEUE_SIZE_UNLIMITED."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_P2P_PacketQueueInfo {
    #[doc = " The maximum size in bytes of the incoming packet queue"]
    pub IncomingPacketQueueMaxSizeBytes: u64,
    #[doc = " The current size in bytes of the incoming packet queue"]
    pub IncomingPacketQueueCurrentSizeBytes: u64,
    #[doc = " The current number of queued packets in the incoming packet queue"]
    pub IncomingPacketQueueCurrentPacketCount: u64,
    #[doc = " The maximum size in bytes of the outgoing packet queue"]
    pub OutgoingPacketQueueMaxSizeBytes: u64,
    #[doc = " The current size in bytes of the outgoing packet queue"]
    pub OutgoingPacketQueueCurrentSizeBytes: u64,
    #[doc = " The current amount of queued packets in the outgoing packet queue"]
    pub OutgoingPacketQueueCurrentPacketCount: u64,
}
#[doc = " Information related to the current state of the packet queues. It is possible for the current size\n to be larger than the maximum size if the maximum size changes or if the maximum queue size is\n set to EOS_P2P_MAX_QUEUE_SIZE_UNLIMITED."]
pub type EOS_P2P_PacketQueueInfo = _tagEOS_P2P_PacketQueueInfo;
#[doc = " Structure containing information about what version of the EOS_P2P_AddNotifyIncomingPacketQueueFull function is supported."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_P2P_AddNotifyIncomingPacketQueueFullOptions {
    #[doc = " API Version: Set this to EOS_P2P_ADDNOTIFYINCOMINGPACKETQUEUEFULL_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Structure containing information about what version of the EOS_P2P_AddNotifyIncomingPacketQueueFull function is supported."]
pub type EOS_P2P_AddNotifyIncomingPacketQueueFullOptions =
    _tagEOS_P2P_AddNotifyIncomingPacketQueueFullOptions;
#[doc = " Structure containing information about the packet queue's state and the incoming packet that would overflow the queue"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_OnIncomingPacketQueueFullInfo {
    #[doc = " Client-specified data passed into AddNotifyIncomingPacketQueueFull"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The maximum size in bytes the incoming packet queue is allowed to use"]
    pub PacketQueueMaxSizeBytes: u64,
    #[doc = " The current size in bytes the incoming packet queue is currently using"]
    pub PacketQueueCurrentSizeBytes: u64,
    #[doc = " The Product User ID of the local user who is receiving the packet that would overflow the queue"]
    pub OverflowPacketLocalUserId: EOS_ProductUserId,
    #[doc = " The channel the incoming packet is for"]
    pub OverflowPacketChannel: u8,
    #[doc = " The size in bytes of the incoming packet (and related metadata) that would overflow the queue"]
    pub OverflowPacketSizeBytes: u32,
}
impl Default for _tagEOS_P2P_OnIncomingPacketQueueFullInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about the packet queue's state and the incoming packet that would overflow the queue"]
pub type EOS_P2P_OnIncomingPacketQueueFullInfo = _tagEOS_P2P_OnIncomingPacketQueueFullInfo;
#[doc = " Callback for information related to incoming connection requests."]
pub type EOS_P2P_OnIncomingPacketQueueFullCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_P2P_OnIncomingPacketQueueFullInfo)>;
#[doc = " Structure containing information about the packet queue to be cleared"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_P2P_ClearPacketQueueOptions {
    #[doc = " API Version: Set this to EOS_P2P_CLEARPACKETQUEUE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user for whom we want to clear the queued packets"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID to who (outgoing) or from who (incoming) packets are queued"]
    pub RemoteUserId: EOS_ProductUserId,
    #[doc = " The socket used for packets to be cleared"]
    pub SocketId: *const EOS_P2P_SocketId,
}
impl Default for _tagEOS_P2P_ClearPacketQueueOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about the packet queue to be cleared"]
pub type EOS_P2P_ClearPacketQueueOptions = _tagEOS_P2P_ClearPacketQueueOptions;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_SessionsHandle {
    _unused: [u8; 0],
}
#[doc = " Handle to the sessions interface"]
pub type EOS_HSessions = *mut EOS_SessionsHandle;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_SessionModificationHandle {
    _unused: [u8; 0],
}
#[doc = " Handle to the calls responsible for creating/updating sessions"]
pub type EOS_HSessionModification = *mut EOS_SessionModificationHandle;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_ActiveSessionHandle {
    _unused: [u8; 0],
}
#[doc = " Handle to a single named session that exists locally"]
pub type EOS_HActiveSession = *mut EOS_ActiveSessionHandle;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_SessionDetailsHandle {
    _unused: [u8; 0],
}
#[doc = " Handle to a single session that may be part of a named session, search result, or invite"]
pub type EOS_HSessionDetails = *mut EOS_SessionDetailsHandle;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_SessionSearchHandle {
    _unused: [u8; 0],
}
#[doc = " Handle to the calls responsible for creating a search object"]
pub type EOS_HSessionSearch = *mut EOS_SessionSearchHandle;
unsafe extern "C" {
    #[doc = " Release the memory associated with session modification.\n This must be called on data retrieved from EOS_Sessions_CreateSessionModification or EOS_Sessions_UpdateSessionModification\n\n @param SessionModificationHandle - The session modification handle to release\n\n @see EOS_Sessions_CreateSessionModification\n @see EOS_Sessions_UpdateSessionModification"]
    pub fn EOS_SessionModification_Release(SessionModificationHandle: EOS_HSessionModification);
}
unsafe extern "C" {
    #[doc = " Release the memory associated with an active session.\n This must be called on data retrieved from EOS_Sessions_CopyActiveSessionHandle\n\n @param ActiveSessionHandle - The active session handle to release\n\n @see EOS_Sessions_CopyActiveSessionHandle"]
    pub fn EOS_ActiveSession_Release(ActiveSessionHandle: EOS_HActiveSession);
}
unsafe extern "C" {
    #[doc = " Release the memory associated with a single session. This must be called on data retrieved from EOS_SessionSearch_CopySearchResultByIndex.\n\n @param SessionHandle - The session handle to release\n\n @see EOS_SessionSearch_CopySearchResultByIndex"]
    pub fn EOS_SessionDetails_Release(SessionHandle: EOS_HSessionDetails);
}
unsafe extern "C" {
    #[doc = " Release the memory associated with a session search. This must be called on data retrieved from EOS_Sessions_CreateSessionSearch.\n\n @param SessionSearchHandle - The session search handle to release\n\n @see EOS_Sessions_CreateSessionSearch"]
    pub fn EOS_SessionSearch_Release(SessionSearchHandle: EOS_HSessionSearch);
}
#[doc = " An online session has not been created yet"]
pub const EOS_EOnlineSessionState_EOS_OSS_NoSession: EOS_EOnlineSessionState = 0;
#[doc = " An online session is in the process of being created"]
pub const EOS_EOnlineSessionState_EOS_OSS_Creating: EOS_EOnlineSessionState = 1;
#[doc = " Session has been created but the session hasn't started (pre match lobby)"]
pub const EOS_EOnlineSessionState_EOS_OSS_Pending: EOS_EOnlineSessionState = 2;
#[doc = " Session has been asked to start (may take time due to communication with backend)"]
pub const EOS_EOnlineSessionState_EOS_OSS_Starting: EOS_EOnlineSessionState = 3;
#[doc = " The current session has started. Sessions with join in progress disabled are no longer joinable"]
pub const EOS_EOnlineSessionState_EOS_OSS_InProgress: EOS_EOnlineSessionState = 4;
#[doc = " The session is still valid, but the session is no longer being played (post match lobby)"]
pub const EOS_EOnlineSessionState_EOS_OSS_Ending: EOS_EOnlineSessionState = 5;
#[doc = " The session is closed and any stats committed"]
pub const EOS_EOnlineSessionState_EOS_OSS_Ended: EOS_EOnlineSessionState = 6;
#[doc = " The session is being destroyed"]
pub const EOS_EOnlineSessionState_EOS_OSS_Destroying: EOS_EOnlineSessionState = 7;
pub const EOS_EOnlineSessionState___EOS_EOnlineSessionState_PAD_INT32__: EOS_EOnlineSessionState =
    2147483647;
#[doc = " All possible states of an existing named session"]
pub type EOS_EOnlineSessionState = ::std::os::raw::c_int;
#[doc = " Don't advertise via the online service"]
pub const EOS_ESessionAttributeAdvertisementType_EOS_SAAT_DontAdvertise:
    EOS_ESessionAttributeAdvertisementType = 0;
#[doc = " Advertise via the online service only"]
pub const EOS_ESessionAttributeAdvertisementType_EOS_SAAT_Advertise:
    EOS_ESessionAttributeAdvertisementType = 1;
pub const EOS_ESessionAttributeAdvertisementType___EOS_ESessionAttributeAdvertisementType_PAD_INT32__ : EOS_ESessionAttributeAdvertisementType = 2147483647 ;
#[doc = " Advertisement properties for a single attribute associated with a session"]
pub type EOS_ESessionAttributeAdvertisementType = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_Sessions_CreateSessionModification function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_CreateSessionModificationOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_CREATESESSIONMODIFICATION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the session to create"]
    pub SessionName: *const ::std::os::raw::c_char,
    #[doc = " Bucket ID associated with the session"]
    pub BucketId: *const ::std::os::raw::c_char,
    #[doc = " Maximum number of players allowed in the session"]
    pub MaxPlayers: u32,
    #[doc = " The Product User ID of the local user associated with the session"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Determines whether or not this session should be the one associated with the local user's presence information.\n If true, this session will be associated with presence. Only one session at a time can have this flag true.\n This affects the ability of the Social Overlay to show game related actions to take in the user's social graph.\n\n @note The Social Overlay can handle only one of the following three options at a time:\n * using the bPresenceEnabled flags within the Sessions interface\n * using the bPresenceEnabled flags within the Lobby interface\n * using EOS_PresenceModification_SetJoinInfo\n\n @see EOS_PresenceModification_SetJoinInfoOptions\n @see EOS_Lobby_CreateLobbyOptions\n @see EOS_Lobby_JoinLobbyOptions\n @see EOS_Sessions_JoinSessionOptions"]
    pub bPresenceEnabled: EOS_Bool,
    #[doc = " Optional session id - set to a globally unique value to override the backend assignment\n If not specified the backend service will assign one to the session.  Do not mix and match.\n This value can be of size [EOS_SESSIONMODIFICATION_MIN_SESSIONIDOVERRIDE_LENGTH, EOS_SESSIONMODIFICATION_MAX_SESSIONIDOVERRIDE_LENGTH]"]
    pub SessionId: *const ::std::os::raw::c_char,
    #[doc = " If true, sanctioned players can neither join nor register with this session and, in the case of join,\n will return EOS_EResult code EOS_Sessions_PlayerSanctioned"]
    pub bSanctionsEnabled: EOS_Bool,
    #[doc = " Array of platform IDs indicating the player platforms allowed to register with the session. Platform IDs are\n found in the EOS header file (eos_common.h), for example EOS_OPT_Epic. For some platforms the value will be\n in the EOS Platform specific header file. If null, the session will be unrestricted."]
    pub AllowedPlatformIds: *const u32,
    #[doc = " Number of platform IDs in the array"]
    pub AllowedPlatformIdsCount: u32,
}
impl Default for _tagEOS_Sessions_CreateSessionModificationOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_CreateSessionModification function."]
pub type EOS_Sessions_CreateSessionModificationOptions =
    _tagEOS_Sessions_CreateSessionModificationOptions;
#[doc = " Input parameters for the EOS_Sessions_UpdateSessionModification function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_UpdateSessionModificationOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_UPDATESESSIONMODIFICATION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the session to update"]
    pub SessionName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_UpdateSessionModificationOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_UpdateSessionModification function."]
pub type EOS_Sessions_UpdateSessionModificationOptions =
    _tagEOS_Sessions_UpdateSessionModificationOptions;
#[doc = " Input parameters for the EOS_Sessions_SendInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_SendInviteOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_SENDINVITE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the session associated with the invite"]
    pub SessionName: *const ::std::os::raw::c_char,
    #[doc = " The Product User ID of the local user sending the invitation"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User of the remote user receiving the invitation"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Sessions_SendInviteOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_SendInvite function."]
pub type EOS_Sessions_SendInviteOptions = _tagEOS_Sessions_SendInviteOptions;
#[doc = " Output parameters for the EOS_Sessions_SendInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_SendInviteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Sessions_SendInvite"]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Sessions_SendInviteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_SendInvite function."]
pub type EOS_Sessions_SendInviteCallbackInfo = _tagEOS_Sessions_SendInviteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Sessions_SendInvite\n @param Data A EOS_Sessions_SendInviteCallbackInfo containing the output information and result"]
pub type EOS_Sessions_OnSendInviteCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Sessions_SendInviteCallbackInfo)>;
#[doc = " Input parameters for the EOS_Sessions_RejectInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_RejectInviteOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_REJECTINVITE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user rejecting the invitation"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The invite ID to reject"]
    pub InviteId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_RejectInviteOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_RejectInvite function."]
pub type EOS_Sessions_RejectInviteOptions = _tagEOS_Sessions_RejectInviteOptions;
#[doc = " Output parameters for the EOS_Sessions_RejectInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_RejectInviteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Sessions_RejectInvite"]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Sessions_RejectInviteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_RejectInvite function."]
pub type EOS_Sessions_RejectInviteCallbackInfo = _tagEOS_Sessions_RejectInviteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Sessions_RejectInvite\n @param Data A EOS_Sessions_RejectInviteCallbackInfo containing the output information and result"]
pub type EOS_Sessions_OnRejectInviteCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Sessions_RejectInviteCallbackInfo)>;
#[doc = " Input parameters for the EOS_Sessions_QueryInvites function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_QueryInvitesOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_QUERYINVITES_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID to query for invitations"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Sessions_QueryInvitesOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_QueryInvites function."]
pub type EOS_Sessions_QueryInvitesOptions = _tagEOS_Sessions_QueryInvitesOptions;
#[doc = " Output parameters for the EOS_Sessions_QueryInvites function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_QueryInvitesCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Sessions_QueryInvites"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User of the local user who made the request"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Sessions_QueryInvitesCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_QueryInvites function."]
pub type EOS_Sessions_QueryInvitesCallbackInfo = _tagEOS_Sessions_QueryInvitesCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Sessions_QueryInvites\n @param Data A EOS_Sessions_QueryInvites CallbackInfo containing the output information and result"]
pub type EOS_Sessions_OnQueryInvitesCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Sessions_QueryInvitesCallbackInfo)>;
#[doc = " Input parameters for the EOS_Sessions_GetInviteCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_GetInviteCountOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_GETINVITECOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who has one or more invitations in the cache"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Sessions_GetInviteCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_GetInviteCount function."]
pub type EOS_Sessions_GetInviteCountOptions = _tagEOS_Sessions_GetInviteCountOptions;
#[doc = " Input parameters for the EOS_Sessions_GetInviteIdByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_GetInviteIdByIndexOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_GETINVITEIDBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who has an invitation in the cache"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Index of the invite ID to retrieve"]
    pub Index: u32,
}
impl Default for _tagEOS_Sessions_GetInviteIdByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_GetInviteIdByIndex function."]
pub type EOS_Sessions_GetInviteIdByIndexOptions = _tagEOS_Sessions_GetInviteIdByIndexOptions;
#[doc = " Input parameters for the EOS_Sessions_CreateSessionSearch function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Sessions_CreateSessionSearchOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_CREATESESSIONSEARCH_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Max number of results to return"]
    pub MaxSearchResults: u32,
}
#[doc = " Input parameters for the EOS_Sessions_CreateSessionSearch function."]
pub type EOS_Sessions_CreateSessionSearchOptions = _tagEOS_Sessions_CreateSessionSearchOptions;
#[doc = " Input parameters for the EOS_Sessions_UpdateSession function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_UpdateSessionOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_UPDATESESSION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Builder handle"]
    pub SessionModificationHandle: EOS_HSessionModification,
}
impl Default for _tagEOS_Sessions_UpdateSessionOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_UpdateSession function."]
pub type EOS_Sessions_UpdateSessionOptions = _tagEOS_Sessions_UpdateSessionOptions;
#[doc = " Output parameters for the EOS_Sessions_UpdateSession function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_UpdateSessionCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Sessions_UpdateSession"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Name of the session that was created/modified"]
    pub SessionName: *const ::std::os::raw::c_char,
    #[doc = " ID of the session that was created/modified"]
    pub SessionId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_UpdateSessionCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_UpdateSession function."]
pub type EOS_Sessions_UpdateSessionCallbackInfo = _tagEOS_Sessions_UpdateSessionCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Sessions_UpdateSession\n @param Data A EOS_Sessions_UpdateSessionCallbackInfo containing the output information and result"]
pub type EOS_Sessions_OnUpdateSessionCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Sessions_UpdateSessionCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Sessions_DestroySession function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_DestroySessionOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_DESTROYSESSION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the session to destroy"]
    pub SessionName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_DestroySessionOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_DestroySession function."]
pub type EOS_Sessions_DestroySessionOptions = _tagEOS_Sessions_DestroySessionOptions;
#[doc = " Output parameters for the EOS_Sessions_DestroySession function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_DestroySessionCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Sessions_DestroySession"]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Sessions_DestroySessionCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_DestroySession function."]
pub type EOS_Sessions_DestroySessionCallbackInfo = _tagEOS_Sessions_DestroySessionCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Sessions_DestroySession\n @param Data A EOS_Sessions_DestroySessionCallbackInfo containing the output information and result"]
pub type EOS_Sessions_OnDestroySessionCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Sessions_DestroySessionCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Sessions_JoinSession function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_JoinSessionOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_JOINSESSION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the session to create after joining session"]
    pub SessionName: *const ::std::os::raw::c_char,
    #[doc = " Session handle to join"]
    pub SessionHandle: EOS_HSessionDetails,
    #[doc = " The Product User ID of the local user who is joining the session"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Determines whether or not this session should be the one associated with the local user's presence information.\n If true, this session will be associated with presence. Only one session at a time can have this flag true.\n This affects the ability of the Social Overlay to show game related actions to take in the user's social graph.\n\n @note The Social Overlay can handle only one of the following three options at a time:\n * using the bPresenceEnabled flags within the Sessions interface\n * using the bPresenceEnabled flags within the Lobby interface\n * using EOS_PresenceModification_SetJoinInfo\n\n @see EOS_PresenceModification_SetJoinInfoOptions\n @see EOS_Lobby_CreateLobbyOptions\n @see EOS_Lobby_JoinLobbyOptions\n @see EOS_Sessions_CreateSessionModificationOptions"]
    pub bPresenceEnabled: EOS_Bool,
}
impl Default for _tagEOS_Sessions_JoinSessionOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_JoinSession function."]
pub type EOS_Sessions_JoinSessionOptions = _tagEOS_Sessions_JoinSessionOptions;
#[doc = " Output parameters for the EOS_Sessions_JoinSession function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_JoinSessionCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Sessions_JoinSession"]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Sessions_JoinSessionCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_JoinSession function."]
pub type EOS_Sessions_JoinSessionCallbackInfo = _tagEOS_Sessions_JoinSessionCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Sessions_JoinSession\n @param Data A EOS_Sessions_JoinSessionCallbackInfo containing the output information and result"]
pub type EOS_Sessions_OnJoinSessionCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Sessions_JoinSessionCallbackInfo)>;
#[doc = " Input parameters for the EOS_Sessions_StartSession function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_StartSessionOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_STARTSESSION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the session to set in progress"]
    pub SessionName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_StartSessionOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_StartSession function."]
pub type EOS_Sessions_StartSessionOptions = _tagEOS_Sessions_StartSessionOptions;
#[doc = " Output parameters for the EOS_Sessions_StartSession function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_StartSessionCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Sessions_StartSession"]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Sessions_StartSessionCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_StartSession function."]
pub type EOS_Sessions_StartSessionCallbackInfo = _tagEOS_Sessions_StartSessionCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Sessions_StartSession\n @param Data A EOS_Sessions_StartSessionCallbackInfo containing the output information and result"]
pub type EOS_Sessions_OnStartSessionCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Sessions_StartSessionCallbackInfo)>;
#[doc = " Input parameters for the EOS_Sessions_EndSession function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_EndSessionOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_ENDSESSION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the session to set as no long in progress"]
    pub SessionName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_EndSessionOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_EndSession function."]
pub type EOS_Sessions_EndSessionOptions = _tagEOS_Sessions_EndSessionOptions;
#[doc = " Output parameters for the EOS_Sessions_EndSession function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_EndSessionCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Sessions_EndSession"]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Sessions_EndSessionCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_EndSession function."]
pub type EOS_Sessions_EndSessionCallbackInfo = _tagEOS_Sessions_EndSessionCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Sessions_EndSession\n @param Data A EOS_Sessions_EndSessionCallbackInfo containing the output information and result"]
pub type EOS_Sessions_OnEndSessionCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Sessions_EndSessionCallbackInfo)>;
#[doc = " Input parameters for the EOS_Sessions_RegisterPlayers function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_RegisterPlayersOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_REGISTERPLAYERS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the session for which to register players"]
    pub SessionName: *const ::std::os::raw::c_char,
    #[doc = " Array of players to register with the session"]
    pub PlayersToRegister: *mut EOS_ProductUserId,
    #[doc = " Number of players in the array"]
    pub PlayersToRegisterCount: u32,
}
impl Default for _tagEOS_Sessions_RegisterPlayersOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_RegisterPlayers function."]
pub type EOS_Sessions_RegisterPlayersOptions = _tagEOS_Sessions_RegisterPlayersOptions;
#[doc = " Output parameters for the EOS_Sessions_RegisterPlayers function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_RegisterPlayersCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Sessions_RegisterPlayers"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The players that were successfully registered"]
    pub RegisteredPlayers: *mut EOS_ProductUserId,
    #[doc = " The number of players successfully registered"]
    pub RegisteredPlayersCount: u32,
    #[doc = " The players that failed to register because they are sanctioned"]
    pub SanctionedPlayers: *mut EOS_ProductUserId,
    #[doc = " The number of players that failed to register because they are sanctioned"]
    pub SanctionedPlayersCount: u32,
}
impl Default for _tagEOS_Sessions_RegisterPlayersCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_RegisterPlayers function."]
pub type EOS_Sessions_RegisterPlayersCallbackInfo = _tagEOS_Sessions_RegisterPlayersCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Sessions_RegisterPlayers\n @param Data A EOS_Sessions_RegisterPlayersCallbackInfo containing the output information and result"]
pub type EOS_Sessions_OnRegisterPlayersCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Sessions_RegisterPlayersCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Sessions_UnregisterPlayers function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_UnregisterPlayersOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_UNREGISTERPLAYERS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the session for which to unregister players"]
    pub SessionName: *const ::std::os::raw::c_char,
    #[doc = " Array of players to unregister from the session"]
    pub PlayersToUnregister: *mut EOS_ProductUserId,
    #[doc = " Number of players in the array"]
    pub PlayersToUnregisterCount: u32,
}
impl Default for _tagEOS_Sessions_UnregisterPlayersOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_UnregisterPlayers function."]
pub type EOS_Sessions_UnregisterPlayersOptions = _tagEOS_Sessions_UnregisterPlayersOptions;
#[doc = " Output parameters for the EOS_Sessions_UnregisterPlayers function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_UnregisterPlayersCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Sessions_UnregisterPlayers"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The players that successfully unregistered"]
    pub UnregisteredPlayers: *mut EOS_ProductUserId,
    #[doc = " The number of players that successfully unregistered"]
    pub UnregisteredPlayersCount: u32,
}
impl Default for _tagEOS_Sessions_UnregisterPlayersCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_UnregisterPlayers function."]
pub type EOS_Sessions_UnregisterPlayersCallbackInfo =
    _tagEOS_Sessions_UnregisterPlayersCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Sessions_UnregisterPlayers\n @param Data A EOS_Sessions_UnregisterPlayersCallbackInfo containing the output information and result"]
pub type EOS_Sessions_OnUnregisterPlayersCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Sessions_UnregisterPlayersCallbackInfo),
>;
#[doc = " Input parameters for the EOS_SessionModification_SetBucketId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionModification_SetBucketIdOptions {
    #[doc = " API Version: Set this to EOS_SESSIONMODIFICATION_SETBUCKETID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The new bucket id associated with the session"]
    pub BucketId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_SessionModification_SetBucketIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_SessionModification_SetBucketId function."]
pub type EOS_SessionModification_SetBucketIdOptions =
    _tagEOS_SessionModification_SetBucketIdOptions;
#[doc = " Input parameters for the EOS_SessionModification_SetHostAddress function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionModification_SetHostAddressOptions {
    #[doc = " API Version: Set this to EOS_SESSIONMODIFICATION_SETHOSTADDRESS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " A string representing the host address for the session, its meaning is up to the application"]
    pub HostAddress: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_SessionModification_SetHostAddressOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_SessionModification_SetHostAddress function."]
pub type EOS_SessionModification_SetHostAddressOptions =
    _tagEOS_SessionModification_SetHostAddressOptions;
#[doc = " Anyone can find this session as long as it isn't full"]
pub const EOS_EOnlineSessionPermissionLevel_EOS_OSPF_PublicAdvertised:
    EOS_EOnlineSessionPermissionLevel = 0;
#[doc = " Players who have access to presence can see this session"]
pub const EOS_EOnlineSessionPermissionLevel_EOS_OSPF_JoinViaPresence:
    EOS_EOnlineSessionPermissionLevel = 1;
#[doc = " Only players with invites registered can see this session"]
pub const EOS_EOnlineSessionPermissionLevel_EOS_OSPF_InviteOnly: EOS_EOnlineSessionPermissionLevel =
    2;
pub const EOS_EOnlineSessionPermissionLevel___EOS_EOnlineSessionPermissionLevel_PAD_INT32__:
    EOS_EOnlineSessionPermissionLevel = 2147483647;
#[doc = " Permission level gets more restrictive further down"]
pub type EOS_EOnlineSessionPermissionLevel = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_SessionModification_SetPermissionLevel function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionModification_SetPermissionLevelOptions {
    #[doc = " API Version: Set this to EOS_SESSIONMODIFICATION_SETPERMISSIONLEVEL_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Permission level to set on the session"]
    pub PermissionLevel: EOS_EOnlineSessionPermissionLevel,
}
impl Default for _tagEOS_SessionModification_SetPermissionLevelOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_SessionModification_SetPermissionLevel function."]
pub type EOS_SessionModification_SetPermissionLevelOptions =
    _tagEOS_SessionModification_SetPermissionLevelOptions;
#[doc = " Input parameters for the EOS_SessionModification_SetJoinInProgressAllowed function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_SessionModification_SetJoinInProgressAllowedOptions {
    #[doc = " API Version: Set this to EOS_SESSIONMODIFICATION_SETJOININPROGRESSALLOWED_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Does the session allow join in progress"]
    pub bAllowJoinInProgress: EOS_Bool,
}
#[doc = " Input parameters for the EOS_SessionModification_SetJoinInProgressAllowed function."]
pub type EOS_SessionModification_SetJoinInProgressAllowedOptions =
    _tagEOS_SessionModification_SetJoinInProgressAllowedOptions;
#[doc = " Input parameters for the EOS_SessionModification_SetMaxPlayers function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_SessionModification_SetMaxPlayersOptions {
    #[doc = " API Version: Set this to EOS_SESSIONMODIFICATION_SETMAXPLAYERS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Max number of players to allow in the session"]
    pub MaxPlayers: u32,
}
#[doc = " Input parameters for the EOS_SessionModification_SetMaxPlayers function."]
pub type EOS_SessionModification_SetMaxPlayersOptions =
    _tagEOS_SessionModification_SetMaxPlayersOptions;
#[doc = " Input parameters for the EOS_SessionModification_SetInvitesAllowed function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_SessionModification_SetInvitesAllowedOptions {
    #[doc = " API Version: Set this to EOS_SESSIONMODIFICATION_SETINVITESALLOWED_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " If true then invites can currently be sent for the associated session"]
    pub bInvitesAllowed: EOS_Bool,
}
#[doc = " Input parameters for the EOS_SessionModification_SetInvitesAllowed function."]
pub type EOS_SessionModification_SetInvitesAllowedOptions =
    _tagEOS_SessionModification_SetInvitesAllowedOptions;
#[doc = " Input parameters for the EOS_SessionModification_SetAllowedPlatformIds function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionModification_SetAllowedPlatformIdsOptions {
    #[doc = " API Version: Set this to EOS_SESSIONMODIFICATION_SETALLOWEDPLATFORMIDS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Array of platform IDs indicating the player platforms allowed to register with the session. Platform IDs are\n found in the EOS header file, e.g. EOS_OPT_Epic. For some platforms, the value will be in the EOS Platform specific\n header file. If null, the session will be unrestricted."]
    pub AllowedPlatformIds: *const u32,
    #[doc = " Number of platform IDs in the array"]
    pub AllowedPlatformIdsCount: u32,
}
impl Default for _tagEOS_SessionModification_SetAllowedPlatformIdsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_SessionModification_SetAllowedPlatformIds function."]
pub type EOS_SessionModification_SetAllowedPlatformIdsOptions =
    _tagEOS_SessionModification_SetAllowedPlatformIdsOptions;
#[doc = " Contains information about both session and search parameter attribution"]
#[repr(C)]
#[derive(Copy, Clone)]
pub struct _tagEOS_Sessions_AttributeData {
    #[doc = " API Version: Set this to EOS_SESSIONS_ATTRIBUTEDATA_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the session attribute"]
    pub Key: *const ::std::os::raw::c_char,
    #[doc = " Value of the session attribute"]
    pub Value: _tagEOS_Sessions_AttributeData__bindgen_ty_1,
    #[doc = " Type of value stored in the union"]
    pub ValueType: EOS_ESessionAttributeType,
}
#[doc = " Value of the session attribute"]
#[repr(C)]
#[derive(Copy, Clone)]
pub union _tagEOS_Sessions_AttributeData__bindgen_ty_1 {
    #[doc = " Stored as an 8 byte integer"]
    pub AsInt64: i64,
    #[doc = " Stored as a double precision floating point"]
    pub AsDouble: f64,
    #[doc = " Stored as a boolean"]
    pub AsBool: EOS_Bool,
    #[doc = " Stored as a null terminated UTF8 string. Should not be nullptr"]
    pub AsUtf8: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_AttributeData__bindgen_ty_1 {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
impl Default for _tagEOS_Sessions_AttributeData {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about both session and search parameter attribution"]
pub type EOS_Sessions_AttributeData = _tagEOS_Sessions_AttributeData;
#[doc = " Input parameters for the EOS_ActiveSession_CopyInfo function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_ActiveSession_CopyInfoOptions {
    #[doc = " API Version: Set this to EOS_ACTIVESESSION_COPYINFO_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_ActiveSession_CopyInfo function."]
pub type EOS_ActiveSession_CopyInfoOptions = _tagEOS_ActiveSession_CopyInfoOptions;
#[doc = " Input parameters for the EOS_ActiveSession_GetRegisteredPlayerCount function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_ActiveSession_GetRegisteredPlayerCountOptions {
    #[doc = " API Version: Set this to EOS_ACTIVESESSION_GETREGISTEREDPLAYERCOUNT_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_ActiveSession_GetRegisteredPlayerCount function."]
pub type EOS_ActiveSession_GetRegisteredPlayerCountOptions =
    _tagEOS_ActiveSession_GetRegisteredPlayerCountOptions;
#[doc = " Input parameters for the EOS_ActiveSession_GetRegisteredPlayerByIndex function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_ActiveSession_GetRegisteredPlayerByIndexOptions {
    #[doc = " API Version: Set this to EOS_ACTIVESESSION_GETREGISTEREDPLAYERBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Index of the registered player to retrieve"]
    pub PlayerIndex: u32,
}
#[doc = " Input parameters for the EOS_ActiveSession_GetRegisteredPlayerByIndex function."]
pub type EOS_ActiveSession_GetRegisteredPlayerByIndexOptions =
    _tagEOS_ActiveSession_GetRegisteredPlayerByIndexOptions;
#[doc = "  An attribution value and its advertisement setting stored with a session."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionDetails_Attribute {
    #[doc = " API Version: Set this to EOS_SESSIONDETAILS_ATTRIBUTE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Key/Value pair describing the attribute"]
    pub Data: *mut EOS_Sessions_AttributeData,
    #[doc = " Is this attribution advertised with the backend or simply stored locally"]
    pub AdvertisementType: EOS_ESessionAttributeAdvertisementType,
}
impl Default for _tagEOS_SessionDetails_Attribute {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = "  An attribution value and its advertisement setting stored with a session."]
pub type EOS_SessionDetails_Attribute = _tagEOS_SessionDetails_Attribute;
unsafe extern "C" {
    #[doc = " Release the memory associated with a session attribute. This must be called on data retrieved from EOS_SessionDetails_CopySessionAttributeByIndex.\n\n @param SessionAttribute - The session attribute to release\n\n @see EOS_SessionDetails_CopySessionAttributeByIndex"]
    pub fn EOS_SessionDetails_Attribute_Release(
        SessionAttribute: *mut EOS_SessionDetails_Attribute,
    );
}
#[doc = " Input parameters for the EOS_SessionModification_AddAttribute function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionModification_AddAttributeOptions {
    #[doc = " API Version: Set this to EOS_SESSIONMODIFICATION_ADDATTRIBUTE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Key/Value pair describing the attribute to add to the session"]
    pub SessionAttribute: *const EOS_Sessions_AttributeData,
    #[doc = " Is this attribution advertised with the backend or simply stored locally"]
    pub AdvertisementType: EOS_ESessionAttributeAdvertisementType,
}
impl Default for _tagEOS_SessionModification_AddAttributeOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_SessionModification_AddAttribute function."]
pub type EOS_SessionModification_AddAttributeOptions =
    _tagEOS_SessionModification_AddAttributeOptions;
#[doc = " Input parameters for the EOS_SessionModification_RemoveAttribute function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionModification_RemoveAttributeOptions {
    #[doc = " API Version: Set this to EOS_SESSIONMODIFICATION_REMOVEATTRIBUTE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Session attribute to remove from the session"]
    pub Key: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_SessionModification_RemoveAttributeOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_SessionModification_RemoveAttribute function."]
pub type EOS_SessionModification_RemoveAttributeOptions =
    _tagEOS_SessionModification_RemoveAttributeOptions;
#[doc = " Input parameters for the EOS_SessionSearch_SetMaxResults function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_SessionSearch_SetMaxResultsOptions {
    #[doc = " API Version: Set this to EOS_SESSIONSEARCH_SETMAXSEARCHRESULTS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Maximum number of search results returned with this query, may not exceed EOS_SESSIONS_MAX_SEARCH_RESULTS"]
    pub MaxSearchResults: u32,
}
#[doc = " Input parameters for the EOS_SessionSearch_SetMaxResults function."]
pub type EOS_SessionSearch_SetMaxResultsOptions = _tagEOS_SessionSearch_SetMaxResultsOptions;
#[doc = " Input parameters for the EOS_SessionSearch_Find function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionSearch_FindOptions {
    #[doc = " API Version: Set this to EOS_SESSIONSEARCH_FIND_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who is searching"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_SessionSearch_FindOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_SessionSearch_Find function."]
pub type EOS_SessionSearch_FindOptions = _tagEOS_SessionSearch_FindOptions;
#[doc = " Output parameters for the EOS_SessionSearch_Find function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionSearch_FindCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_SessionSearch_Find"]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_SessionSearch_FindCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_SessionSearch_Find function."]
pub type EOS_SessionSearch_FindCallbackInfo = _tagEOS_SessionSearch_FindCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_SessionSearch_Find\n @param Data A EOS_SessionSearch_FindCallbackInfo containing the output information and result"]
pub type EOS_SessionSearch_OnFindCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_SessionSearch_FindCallbackInfo)>;
#[doc = " Input parameters for the EOS_SessionSearch_GetSearchResultCount function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_SessionSearch_GetSearchResultCountOptions {
    #[doc = " API Version: Set this to EOS_SESSIONSEARCH_GETSEARCHRESULTCOUNT_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_SessionSearch_GetSearchResultCount function."]
pub type EOS_SessionSearch_GetSearchResultCountOptions =
    _tagEOS_SessionSearch_GetSearchResultCountOptions;
#[doc = " Input parameters for the EOS_SessionSearch_CopySearchResultByIndex function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_SessionSearch_CopySearchResultByIndexOptions {
    #[doc = " API Version: Set this to EOS_SESSIONSEARCH_COPYSEARCHRESULTBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The index of the session to retrieve within the completed search query\n @see EOS_SessionSearch_GetSearchResultCount"]
    pub SessionIndex: u32,
}
#[doc = " Input parameters for the EOS_SessionSearch_CopySearchResultByIndex function."]
pub type EOS_SessionSearch_CopySearchResultByIndexOptions =
    _tagEOS_SessionSearch_CopySearchResultByIndexOptions;
#[doc = " Input parameters for the EOS_SessionSearch_SetSessionId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionSearch_SetSessionIdOptions {
    #[doc = " API Version: Set this to EOS_SESSIONSEARCH_SETSESSIONID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Search sessions for a specific session ID, returning at most one session"]
    pub SessionId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_SessionSearch_SetSessionIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_SessionSearch_SetSessionId function."]
pub type EOS_SessionSearch_SetSessionIdOptions = _tagEOS_SessionSearch_SetSessionIdOptions;
#[doc = " Input parameters for the EOS_SessionSearch_SetTargetUserId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionSearch_SetTargetUserIdOptions {
    #[doc = " API Version: Set this to EOS_SESSIONSEARCH_SETTARGETUSERID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID to find; return any sessions where the user matching this ID is currently registered"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_SessionSearch_SetTargetUserIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_SessionSearch_SetTargetUserId function."]
pub type EOS_SessionSearch_SetTargetUserIdOptions = _tagEOS_SessionSearch_SetTargetUserIdOptions;
#[doc = " Input parameters for the EOS_SessionSearch_SetParameter function.\n\n A search key may be set more than once to make multiple comparisons\n The two comparisons are AND'd together\n (ie, Key GREATER_THAN 5, Key NOT_EQUALS 10)"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionSearch_SetParameterOptions {
    #[doc = " API Version: Set this to EOS_SESSIONSEARCH_SETPARAMETER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Search parameter describing a key and a value to compare"]
    pub Parameter: *const EOS_Sessions_AttributeData,
    #[doc = " The type of comparison to make against the search parameter"]
    pub ComparisonOp: EOS_EOnlineComparisonOp,
}
impl Default for _tagEOS_SessionSearch_SetParameterOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_SessionSearch_SetParameter function.\n\n A search key may be set more than once to make multiple comparisons\n The two comparisons are AND'd together\n (ie, Key GREATER_THAN 5, Key NOT_EQUALS 10)"]
pub type EOS_SessionSearch_SetParameterOptions = _tagEOS_SessionSearch_SetParameterOptions;
#[doc = " Input parameters for the EOS_SessionSearch_RemoveParameter function.\n\n Removal requires both the key and its comparator in order to remove as the same key can be used in more than one operation"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionSearch_RemoveParameterOptions {
    #[doc = " API Version: Set this to EOS_SESSIONSEARCH_REMOVEPARAMETER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Search parameter key to remove from the search"]
    pub Key: *const ::std::os::raw::c_char,
    #[doc = " Search comparison operation associated with the key to remove"]
    pub ComparisonOp: EOS_EOnlineComparisonOp,
}
impl Default for _tagEOS_SessionSearch_RemoveParameterOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_SessionSearch_RemoveParameter function.\n\n Removal requires both the key and its comparator in order to remove as the same key can be used in more than one operation"]
pub type EOS_SessionSearch_RemoveParameterOptions = _tagEOS_SessionSearch_RemoveParameterOptions;
#[doc = " Common settings associated with a single session"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionDetails_Settings {
    #[doc = " API Version: Set this to EOS_SESSIONDETAILS_SETTINGS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The main indexed parameter for this session, can be any string (i.e. \"Region:GameMode\")"]
    pub BucketId: *const ::std::os::raw::c_char,
    #[doc = " Number of total players allowed in the session"]
    pub NumPublicConnections: u32,
    #[doc = " Are players allowed to join the session while it is in the \"in progress\" state"]
    pub bAllowJoinInProgress: EOS_Bool,
    #[doc = " Permission level describing allowed access to the session when joining or searching for the session"]
    pub PermissionLevel: EOS_EOnlineSessionPermissionLevel,
    #[doc = " Are players allowed to send invites for the session"]
    pub bInvitesAllowed: EOS_Bool,
    #[doc = " Are sanctioned players allowed to join - sanctioned players will be rejected if set to true"]
    pub bSanctionsEnabled: EOS_Bool,
    #[doc = " Array of platform IDs indicating the player platforms allowed to register with the session. Platform IDs are\n found in the EOS header file, e.g. EOS_OPT_Epic. For some platforms, the value will be in the EOS Platform specific\n header file. If null, the session will be unrestricted."]
    pub AllowedPlatformIds: *const u32,
    #[doc = " Number of platform IDs in the array"]
    pub AllowedPlatformIdsCount: u32,
}
impl Default for _tagEOS_SessionDetails_Settings {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Common settings associated with a single session"]
pub type EOS_SessionDetails_Settings = _tagEOS_SessionDetails_Settings;
#[doc = " Internal details about a session, found on both active sessions and within search results"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionDetails_Info {
    #[doc = " API Version: Set this to EOS_SESSIONDETAILS_INFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Session ID assigned by the backend service"]
    pub SessionId: *const ::std::os::raw::c_char,
    #[doc = " IP address of this session as visible by the backend service"]
    pub HostAddress: *const ::std::os::raw::c_char,
    #[doc = " Number of remaining open spaces on the session (NumPublicConnections - RegisteredPlayers"]
    pub NumOpenPublicConnections: u32,
    #[doc = " Reference to the additional settings associated with this session"]
    pub Settings: *const EOS_SessionDetails_Settings,
    #[doc = " The Product User ID of the session owner. Null if the session is not owned by a user."]
    pub OwnerUserId: EOS_ProductUserId,
    #[doc = " The client id of the session owner. Null if the session is not owned by a server. The session is owned by a server if EOS_Platform_Options::bIsServer is EOS_TRUE."]
    pub OwnerServerClientId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_SessionDetails_Info {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Internal details about a session, found on both active sessions and within search results"]
pub type EOS_SessionDetails_Info = _tagEOS_SessionDetails_Info;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_SessionDetails_Info structure. This must be called on data retrieved from EOS_SessionDetails_CopyInfo.\n\n @param SessionInfo - The session details structure to be released\n\n @see EOS_SessionDetails_Info\n @see EOS_SessionDetails_CopyInfo"]
    pub fn EOS_SessionDetails_Info_Release(SessionInfo: *mut EOS_SessionDetails_Info);
}
#[doc = " Input parameters for the EOS_SessionDetails_CopyInfo function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_SessionDetails_CopyInfoOptions {
    #[doc = " API Version: Set this to EOS_SESSIONDETAILS_COPYINFO_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_SessionDetails_CopyInfo function."]
pub type EOS_SessionDetails_CopyInfoOptions = _tagEOS_SessionDetails_CopyInfoOptions;
#[doc = " Input parameters for the EOS_SessionDetails_GetSessionAttributeCount function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_SessionDetails_GetSessionAttributeCountOptions {
    #[doc = " API Version: Set this to EOS_SESSIONDETAILS_GETSESSIONATTRIBUTECOUNT_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_SessionDetails_GetSessionAttributeCount function."]
pub type EOS_SessionDetails_GetSessionAttributeCountOptions =
    _tagEOS_SessionDetails_GetSessionAttributeCountOptions;
#[doc = " Input parameters for the EOS_SessionDetails_CopySessionAttributeByIndex function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_SessionDetails_CopySessionAttributeByIndexOptions {
    #[doc = " API Version: Set this to EOS_SESSIONDETAILS_COPYSESSIONATTRIBUTEBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The index of the attribute to retrieve\n @see EOS_SessionDetails_GetSessionAttributeCount"]
    pub AttrIndex: u32,
}
#[doc = " Input parameters for the EOS_SessionDetails_CopySessionAttributeByIndex function."]
pub type EOS_SessionDetails_CopySessionAttributeByIndexOptions =
    _tagEOS_SessionDetails_CopySessionAttributeByIndexOptions;
#[doc = " Input parameters for the EOS_SessionDetails_CopySessionAttributeByKey function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_SessionDetails_CopySessionAttributeByKeyOptions {
    #[doc = " API Version: Set this to EOS_SESSIONDETAILS_COPYSESSIONATTRIBUTEBYKEY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The name of the key to get the session attribution for\n @see EOS_SessionModification_AddAttribute"]
    pub AttrKey: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_SessionDetails_CopySessionAttributeByKeyOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_SessionDetails_CopySessionAttributeByKey function."]
pub type EOS_SessionDetails_CopySessionAttributeByKeyOptions =
    _tagEOS_SessionDetails_CopySessionAttributeByKeyOptions;
#[doc = " Top level details about an active session"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_ActiveSession_Info {
    #[doc = " API Version: Set this to EOS_ACTIVESESSION_INFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the session"]
    pub SessionName: *const ::std::os::raw::c_char,
    #[doc = " The Product User ID of the local user who created or joined the session"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Current state of the session"]
    pub State: EOS_EOnlineSessionState,
    #[doc = " Session details"]
    pub SessionDetails: *const EOS_SessionDetails_Info,
}
impl Default for _tagEOS_ActiveSession_Info {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Top level details about an active session"]
pub type EOS_ActiveSession_Info = _tagEOS_ActiveSession_Info;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_ActiveSession_Info structure. This must be called on data retrieved from EOS_ActiveSession_CopyInfo.\n\n @param ActiveSessionInfo - The active session structure to be released\n\n @see EOS_ActiveSession_Info\n @see EOS_ActiveSession_CopyInfo"]
    pub fn EOS_ActiveSession_Info_Release(ActiveSessionInfo: *mut EOS_ActiveSession_Info);
}
#[doc = " Input parameters for the EOS_Sessions_CopyActiveSessionHandle function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_CopyActiveSessionHandleOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_COPYACTIVESESSIONHANDLE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the session for which to retrieve a session handle"]
    pub SessionName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_CopyActiveSessionHandleOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_CopyActiveSessionHandle function."]
pub type EOS_Sessions_CopyActiveSessionHandleOptions =
    _tagEOS_Sessions_CopyActiveSessionHandleOptions;
#[doc = " Input parameters for the EOS_Sessions_AddNotifySessionInviteReceived function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Sessions_AddNotifySessionInviteReceivedOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_ADDNOTIFYSESSIONINVITERECEIVED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Sessions_AddNotifySessionInviteReceived function."]
pub type EOS_Sessions_AddNotifySessionInviteReceivedOptions =
    _tagEOS_Sessions_AddNotifySessionInviteReceivedOptions;
#[doc = " Output parameters for the EOS_Sessions_OnSessionInviteReceivedCallback function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_SessionInviteReceivedCallbackInfo {
    #[doc = " Context that was passed into EOS_Sessions_AddNotifySessionInviteReceived"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the user who received the invite"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the user who sent the invitation"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Invite ID used to retrieve the actual session details"]
    pub InviteId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_SessionInviteReceivedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_OnSessionInviteReceivedCallback function."]
pub type EOS_Sessions_SessionInviteReceivedCallbackInfo =
    _tagEOS_Sessions_SessionInviteReceivedCallbackInfo;
#[doc = " Function prototype definition for notifications that come from EOS_Sessions_AddNotifySessionInviteReceived\n\n @param Data A EOS_Sessions_SessionInviteReceivedCallbackInfo containing the output information and result"]
pub type EOS_Sessions_OnSessionInviteReceivedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Sessions_SessionInviteReceivedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Sessions_AddNotifySessionInviteAccepted function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Sessions_AddNotifySessionInviteAcceptedOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_ADDNOTIFYSESSIONINVITEACCEPTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Sessions_AddNotifySessionInviteAccepted function."]
pub type EOS_Sessions_AddNotifySessionInviteAcceptedOptions =
    _tagEOS_Sessions_AddNotifySessionInviteAcceptedOptions;
#[doc = " Output parameters for the EOS_Sessions_OnSessionInviteAcceptedCallback function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_SessionInviteAcceptedCallbackInfo {
    #[doc = " Context that was passed into EOS_Sessions_AddNotifySessionInviteAccepted"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Session ID that should be used for joining"]
    pub SessionId: *const ::std::os::raw::c_char,
    #[doc = " The Product User ID of the user who accepted the invitation"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the user who sent the invitation"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Invite ID that was accepted"]
    pub InviteId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_SessionInviteAcceptedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_OnSessionInviteAcceptedCallback function."]
pub type EOS_Sessions_SessionInviteAcceptedCallbackInfo =
    _tagEOS_Sessions_SessionInviteAcceptedCallbackInfo;
#[doc = " Function prototype definition for notifications that come from EOS_Sessions_AddNotifySessionInviteAccepted\n\n @param Data A EOS_Sessions_SessionInviteAcceptedCallbackInfo containing the output information and result\n\n @note The session for the invite must be joined.\n\n @see EOS_Sessions_CopySessionHandleByInviteId\n @see EOS_Sessions_JoinSession"]
pub type EOS_Sessions_OnSessionInviteAcceptedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Sessions_SessionInviteAcceptedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Sessions_AddNotifySessionInviteRejected function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Sessions_AddNotifySessionInviteRejectedOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_ADDNOTIFYSESSIONINVITEREJECTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Sessions_AddNotifySessionInviteRejected function."]
pub type EOS_Sessions_AddNotifySessionInviteRejectedOptions =
    _tagEOS_Sessions_AddNotifySessionInviteRejectedOptions;
#[doc = " Output parameters for the EOS_Sessions_OnSessionInviteRejectedCallback function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_SessionInviteRejectedCallbackInfo {
    #[doc = " Context that was passed into EOS_Sessions_AddNotifySessionInviteRejected"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The invite ID"]
    pub InviteId: *const ::std::os::raw::c_char,
    #[doc = " The Product User ID of the local user who rejected the invitation"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the user who sent the invitation"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Optional session ID"]
    pub SessionId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_SessionInviteRejectedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_OnSessionInviteRejectedCallback function."]
pub type EOS_Sessions_SessionInviteRejectedCallbackInfo =
    _tagEOS_Sessions_SessionInviteRejectedCallbackInfo;
#[doc = " Function prototype definition for notifications that come from EOS_Sessions_AddNotifySessionInviteRejected\n\n @param Data A EOS_Sessions_SessionInviteRejectedCallbackInfo containing the output information and result\n\n @see EOS_Sessions_CopySessionHandleByInviteId\n @see EOS_Sessions_JoinSession"]
pub type EOS_Sessions_OnSessionInviteRejectedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Sessions_SessionInviteRejectedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Sessions_AddNotifyJoinSessionAccepted function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Sessions_AddNotifyJoinSessionAcceptedOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_ADDNOTIFYJOINSESSIONACCEPTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Sessions_AddNotifyJoinSessionAccepted function."]
pub type EOS_Sessions_AddNotifyJoinSessionAcceptedOptions =
    _tagEOS_Sessions_AddNotifyJoinSessionAcceptedOptions;
#[doc = " Output parameters for the EOS_Sessions_OnJoinSessionAcceptedCallback function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_JoinSessionAcceptedCallbackInfo {
    #[doc = " Context that was passed into EOS_Sessions_AddNotifyJoinSessionAccepted"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID for the user who initialized the game"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The UI Event associated with this Join Game event.\n This should be used with EOS_Sessions_CopySessionHandleByUiEventId to get a handle to be used\n when calling EOS_Sessions_JoinSession."]
    pub UiEventId: EOS_UI_EventId,
}
impl Default for _tagEOS_Sessions_JoinSessionAcceptedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_OnJoinSessionAcceptedCallback function."]
pub type EOS_Sessions_JoinSessionAcceptedCallbackInfo =
    _tagEOS_Sessions_JoinSessionAcceptedCallbackInfo;
#[doc = " Function prototype definition for notifications that come from EOS_Sessions_AddNotifyJoinSessionAccepted\n\n @param Data A EOS_Sessions_JoinSessionAcceptedCallbackInfo containing the output information and result\n\n @note The session for the join game must be joined.\n\n @see EOS_Sessions_CopySessionHandleByUiEventId\n @see EOS_Sessions_JoinSession"]
pub type EOS_Sessions_OnJoinSessionAcceptedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Sessions_JoinSessionAcceptedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Sessions_CopySessionHandleByInviteId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_CopySessionHandleByInviteIdOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_COPYSESSIONHANDLEBYINVITEID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Invite ID for which to retrieve a session handle"]
    pub InviteId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_CopySessionHandleByInviteIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_CopySessionHandleByInviteId function."]
pub type EOS_Sessions_CopySessionHandleByInviteIdOptions =
    _tagEOS_Sessions_CopySessionHandleByInviteIdOptions;
#[doc = " Input parameters for the EOS_Sessions_CopySessionHandleByUiEventId function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Sessions_CopySessionHandleByUiEventIdOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_COPYSESSIONHANDLEBYUIEVENTID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " UI Event associated with the session"]
    pub UiEventId: EOS_UI_EventId,
}
#[doc = " Input parameters for the EOS_Sessions_CopySessionHandleByUiEventId function."]
pub type EOS_Sessions_CopySessionHandleByUiEventIdOptions =
    _tagEOS_Sessions_CopySessionHandleByUiEventIdOptions;
#[doc = " Input parameters for the EOS_Sessions_CopySessionHandleForPresence function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_CopySessionHandleForPresenceOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_COPYSESSIONHANDLEFORPRESENCE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user associated with the session"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Sessions_CopySessionHandleForPresenceOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_CopySessionHandleForPresence function."]
pub type EOS_Sessions_CopySessionHandleForPresenceOptions =
    _tagEOS_Sessions_CopySessionHandleForPresenceOptions;
#[doc = " Input parameters for the EOS_Sessions_IsUserInSession function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_IsUserInSessionOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_ISUSERINSESSION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Active session name to search within"]
    pub SessionName: *const ::std::os::raw::c_char,
    #[doc = " Product User ID to search for in the session"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Sessions_IsUserInSessionOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_IsUserInSession function."]
pub type EOS_Sessions_IsUserInSessionOptions = _tagEOS_Sessions_IsUserInSessionOptions;
#[doc = " Input parameters for the EOS_Sessions_DumpSessionState function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_DumpSessionStateOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_DUMPSESSIONSTATE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the session"]
    pub SessionName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_DumpSessionStateOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sessions_DumpSessionState function."]
pub type EOS_Sessions_DumpSessionStateOptions = _tagEOS_Sessions_DumpSessionStateOptions;
#[doc = " Input parameters for the EOS_Sessions_AddNotifyLeaveSessionRequested function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Sessions_AddNotifyLeaveSessionRequestedOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_ADDNOTIFYLEAVESESSIONREQUESTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Sessions_AddNotifyLeaveSessionRequested function."]
pub type EOS_Sessions_AddNotifyLeaveSessionRequestedOptions =
    _tagEOS_Sessions_AddNotifyLeaveSessionRequestedOptions;
#[doc = " Output parameters for the EOS_Sessions_OnLeaveSessionRequestedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_LeaveSessionRequestedCallbackInfo {
    #[doc = " Context that was passed into EOS_Sessions_OnLeaveSessionRequestedCallback"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who received the leave session notification."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Name of the session associated with the leave session request."]
    pub SessionName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_LeaveSessionRequestedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_OnLeaveSessionRequestedCallback Function."]
pub type EOS_Sessions_LeaveSessionRequestedCallbackInfo =
    _tagEOS_Sessions_LeaveSessionRequestedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_Sessions_AddNotifyLeaveSessionRequested.\n\n @param Data A pointer to EOS_Sessions_LeaveSessionRequestedCallbackInfo containing the output information."]
pub type EOS_Sessions_OnLeaveSessionRequestedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Sessions_LeaveSessionRequestedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Sessions_AddNotifySendSessionNativeInviteRequested function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Sessions_AddNotifySendSessionNativeInviteRequestedOptions {
    #[doc = " API Version: Set this to EOS_SESSIONS_ADDNOTIFYSENDSESSIONNATIVEINVITEREQUESTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Sessions_AddNotifySendSessionNativeInviteRequested function."]
pub type EOS_Sessions_AddNotifySendSessionNativeInviteRequestedOptions =
    _tagEOS_Sessions_AddNotifySendSessionNativeInviteRequestedOptions;
#[doc = " Output parameters for the EOS_Sessions_OnSendSessionNativeInviteRequestedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sessions_SendSessionNativeInviteRequestedCallbackInfo {
    #[doc = " Context that was passed into EOS_Sessions_AddNotifySendSessionNativeInviteRequested"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Identifies this event which will need to be acknowledged with EOS_UI_AcknowledgeEventId().\n @see EOS_UI_AcknowledgeEventId"]
    pub UiEventId: EOS_UI_EventId,
    #[doc = " The Product User ID of the local user who is inviting."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Native Platform Account Type. If only a single integrated platform is configured then\n this will always reference that platform."]
    pub TargetNativeAccountType: EOS_IntegratedPlatformType,
    #[doc = " The Native Platform Account ID of the target user being invited."]
    pub TargetUserNativeAccountId: *const ::std::os::raw::c_char,
    #[doc = " Session ID that the user is being invited to"]
    pub SessionId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sessions_SendSessionNativeInviteRequestedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sessions_OnSendSessionNativeInviteRequestedCallback Function."]
pub type EOS_Sessions_SendSessionNativeInviteRequestedCallbackInfo =
    _tagEOS_Sessions_SendSessionNativeInviteRequestedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_Sessions_AddNotifySendSessionNativeInviteRequested\n\n @param Data A EOS_Sessions_SendSessionNativeInviteRequestedCallbackInfo containing the output information and result\n\n @note After processing the callback EOS_UI_AcknowledgeEventId must be called.\n\n @see EOS_UI_AcknowledgeEventId"]
pub type EOS_Sessions_OnSendSessionNativeInviteRequestedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Sessions_SendSessionNativeInviteRequestedCallbackInfo),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_LobbyHandle {
    _unused: [u8; 0],
}
#[doc = " Handle to the lobby interface"]
pub type EOS_HLobby = *mut EOS_LobbyHandle;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_LobbyModificationHandle {
    _unused: [u8; 0],
}
#[doc = " Handle to a lobby modification object"]
pub type EOS_HLobbyModification = *mut EOS_LobbyModificationHandle;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_LobbyDetailsHandle {
    _unused: [u8; 0],
}
#[doc = " Handle to a single lobby"]
pub type EOS_HLobbyDetails = *mut EOS_LobbyDetailsHandle;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_LobbySearchHandle {
    _unused: [u8; 0],
}
#[doc = " Handle to the calls responsible for creating a search object"]
pub type EOS_HLobbySearch = *mut EOS_LobbySearchHandle;
unsafe extern "C" {
    #[doc = " Release the memory associated with a lobby modification. This must be called on data retrieved from EOS_Lobby_UpdateLobbyModification.\n\n @param LobbyModificationHandle - The lobby modification handle to release\n\n @see EOS_Lobby_UpdateLobbyModification"]
    pub fn EOS_LobbyModification_Release(LobbyModificationHandle: EOS_HLobbyModification);
}
unsafe extern "C" {
    #[doc = " Release the memory associated with a single lobby. This must be called on data retrieved from EOS_LobbySearch_CopySearchResultByIndex.\n\n @param LobbyHandle - The lobby handle to release\n\n @see EOS_LobbySearch_CopySearchResultByIndex"]
    pub fn EOS_LobbyDetails_Release(LobbyHandle: EOS_HLobbyDetails);
}
unsafe extern "C" {
    #[doc = " Release the memory associated with a lobby search. This must be called on data retrieved from EOS_Lobby_CreateLobbySearch.\n\n @param LobbySearchHandle - The lobby search handle to release\n\n @see EOS_Lobby_CreateLobbySearch"]
    pub fn EOS_LobbySearch_Release(LobbySearchHandle: EOS_HLobbySearch);
}
#[doc = " All lobbies are referenced by a unique lobby ID"]
pub type EOS_LobbyId = *const ::std::os::raw::c_char;
#[doc = " Anyone can find this lobby as long as it isn't full"]
pub const EOS_ELobbyPermissionLevel_EOS_LPL_PUBLICADVERTISED: EOS_ELobbyPermissionLevel = 0;
#[doc = " Players who have access to presence can see this lobby"]
pub const EOS_ELobbyPermissionLevel_EOS_LPL_JOINVIAPRESENCE: EOS_ELobbyPermissionLevel = 1;
#[doc = " Only players with invites registered can see this lobby"]
pub const EOS_ELobbyPermissionLevel_EOS_LPL_INVITEONLY: EOS_ELobbyPermissionLevel = 2;
pub const EOS_ELobbyPermissionLevel___EOS_ELobbyPermissionLevel_PAD_INT32__:
    EOS_ELobbyPermissionLevel = 2147483647;
#[doc = " Permission level gets more restrictive further down"]
pub type EOS_ELobbyPermissionLevel = ::std::os::raw::c_int;
#[doc = " Data is visible to lobby members, searchable and visible in search results."]
pub const EOS_ELobbyAttributeVisibility_EOS_LAT_PUBLIC: EOS_ELobbyAttributeVisibility = 0;
#[doc = " Data is only visible to the user setting the data. Data is not visible to lobby members, not searchable, and not visible in search results."]
pub const EOS_ELobbyAttributeVisibility_EOS_LAT_PRIVATE: EOS_ELobbyAttributeVisibility = 1;
pub const EOS_ELobbyAttributeVisibility___EOS_ELobbyAttributeVisibility_PAD_INT32__:
    EOS_ELobbyAttributeVisibility = 2147483647;
#[doc = " Advertisement properties for a single attribute associated with a lobby"]
pub type EOS_ELobbyAttributeVisibility = ::std::os::raw::c_int;
#[doc = " The user has joined the lobby"]
pub const EOS_ELobbyMemberStatus_EOS_LMS_JOINED: EOS_ELobbyMemberStatus = 0;
#[doc = " The user has explicitly left the lobby"]
pub const EOS_ELobbyMemberStatus_EOS_LMS_LEFT: EOS_ELobbyMemberStatus = 1;
#[doc = " The user has unexpectedly left the lobby"]
pub const EOS_ELobbyMemberStatus_EOS_LMS_DISCONNECTED: EOS_ELobbyMemberStatus = 2;
#[doc = " The user has been kicked from the lobby"]
pub const EOS_ELobbyMemberStatus_EOS_LMS_KICKED: EOS_ELobbyMemberStatus = 3;
#[doc = " The user has been promoted to lobby owner"]
pub const EOS_ELobbyMemberStatus_EOS_LMS_PROMOTED: EOS_ELobbyMemberStatus = 4;
#[doc = " The lobby has been closed and user has been removed"]
pub const EOS_ELobbyMemberStatus_EOS_LMS_CLOSED: EOS_ELobbyMemberStatus = 5;
pub const EOS_ELobbyMemberStatus___EOS_ELobbyMemberStatus_PAD_INT32__: EOS_ELobbyMemberStatus =
    2147483647;
#[doc = " Various types of lobby member updates"]
pub type EOS_ELobbyMemberStatus = ::std::os::raw::c_int;
#[doc = " Join RTC Room as soon as user joins the lobby"]
pub const EOS_ELobbyRTCRoomJoinActionType_EOS_LRRJAT_AutomaticJoin:
    EOS_ELobbyRTCRoomJoinActionType = 0;
#[doc = " Do not join RTC Room when joining the lobby. User must manually call Join RTC Room"]
pub const EOS_ELobbyRTCRoomJoinActionType_EOS_LRRJAT_ManualJoin: EOS_ELobbyRTCRoomJoinActionType =
    1;
pub const EOS_ELobbyRTCRoomJoinActionType___EOS_ELobbyRTCRoomJoinActionType_PAD_INT32__:
    EOS_ELobbyRTCRoomJoinActionType = 2147483647;
#[doc = " Defines the type of action to take against RTC room when joining a lobby"]
pub type EOS_ELobbyRTCRoomJoinActionType = ::std::os::raw::c_int;
#[doc = " Contains information about a single lobby."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyDetails_Info {
    #[doc = " API Version: Set this to EOS_LOBBYDETAILS_INFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Lobby ID"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the current owner of the lobby"]
    pub LobbyOwnerUserId: EOS_ProductUserId,
    #[doc = " Permission level of the lobby"]
    pub PermissionLevel: EOS_ELobbyPermissionLevel,
    #[doc = " Current available space"]
    pub AvailableSlots: u32,
    #[doc = " Max allowed members in the lobby"]
    pub MaxMembers: u32,
    #[doc = " If true, users can invite others to this lobby"]
    pub bAllowInvites: EOS_Bool,
    #[doc = " The main indexed parameter for this lobby, can be any string (i.e. \"Region:GameMode\")"]
    pub BucketId: *const ::std::os::raw::c_char,
    #[doc = " Is host migration allowed"]
    pub bAllowHostMigration: EOS_Bool,
    #[doc = " Was a Real-Time Communication (RTC) room enabled at lobby creation?"]
    pub bRTCRoomEnabled: EOS_Bool,
    #[doc = " Is EOS_Lobby_JoinLobbyById allowed"]
    pub bAllowJoinById: EOS_Bool,
    #[doc = " Does rejoining after being kicked require an invite"]
    pub bRejoinAfterKickRequiresInvite: EOS_Bool,
    #[doc = " If true, this lobby will be associated with the local user's presence information."]
    pub bPresenceEnabled: EOS_Bool,
    #[doc = " Array of platform IDs indicating the player platforms allowed to register with the lobby. Platform IDs are\n found in the EOS header file (eos_common.h), for example EOS_OPT_Epic. For some platforms the value will be\n in the EOS Platform specific header file. If null, the lobby will be unrestricted."]
    pub AllowedPlatformIds: *const u32,
    #[doc = " Number of platform IDs in the array"]
    pub AllowedPlatformIdsCount: u32,
}
impl Default for _tagEOS_LobbyDetails_Info {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single lobby."]
pub type EOS_LobbyDetails_Info = _tagEOS_LobbyDetails_Info;
unsafe extern "C" {
    #[doc = " Release the memory associated with a lobby details info. This must be called on data retrieved from EOS_LobbyDetails_CopyInfo.\n\n @param LobbyDetailsInfo - The lobby details info to release\n\n @see EOS_LobbyDetails_CopyInfo"]
    pub fn EOS_LobbyDetails_Info_Release(LobbyDetailsInfo: *mut EOS_LobbyDetails_Info);
}
#[doc = " Input parameters to use with Lobby RTC Rooms."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_LocalRTCOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_LOCALRTCOPTIONS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Flags for the local user in this room. The default is 0 if this struct is not specified. @see EOS_RTC_JoinRoomOptions::Flags"]
    pub Flags: u32,
    #[doc = " Set to EOS_TRUE to enable Manual Audio Input. If manual audio input is enabled, audio recording is not started and the audio buffers\n must be passed manually using EOS_RTCAudio_SendAudio. The default is EOS_FALSE if this struct is not specified."]
    pub bUseManualAudioInput: EOS_Bool,
    #[doc = " Set to EOS_TRUE to enable Manual Audio Output. If manual audio output is enabled, audio rendering is not started and the audio buffers\n must be received with EOS_RTCAudio_AddNotifyAudioBeforeRender and rendered manually. The default is EOS_FALSE if this struct is not\n specified."]
    pub bUseManualAudioOutput: EOS_Bool,
    #[doc = " Set to EOS_TRUE to start the audio input device's stream as muted when first connecting to the RTC room.\n\n It must be manually unmuted with a call to EOS_RTCAudio_UpdateSending. If manual audio output is enabled, this value is ignored.\n The default value is EOS_FALSE if this struct is not specified."]
    pub bLocalAudioDeviceInputStartsMuted: EOS_Bool,
    #[doc = " Reserved field, should be nullptr by default"]
    pub Reserved: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Lobby_LocalRTCOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters to use with Lobby RTC Rooms."]
pub type EOS_Lobby_LocalRTCOptions = _tagEOS_Lobby_LocalRTCOptions;
#[doc = " Input parameters for the EOS_Lobby_CreateLobby function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_CreateLobbyOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_CREATELOBBY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user creating the lobby; this user will automatically join the lobby as its owner"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The maximum number of users who can be in the lobby at a time"]
    pub MaxLobbyMembers: u32,
    #[doc = " The initial permission level of the lobby"]
    pub PermissionLevel: EOS_ELobbyPermissionLevel,
    #[doc = " If true, this lobby will be associated with the local user's presence information. A user's presence can only be associated with one lobby at a time.\n This affects the ability of the Social Overlay to show game related actions to take in the user's social graph.\n\n @note The Social Overlay can handle only one of the following three options at a time:\n * using the bPresenceEnabled flags within the Sessions interface\n * using the bPresenceEnabled flags within the Lobby interface\n * using EOS_PresenceModification_SetJoinInfo\n\n @see EOS_PresenceModification_SetJoinInfoOptions\n @see EOS_Lobby_JoinLobbyOptions\n @see EOS_Lobby_JoinLobbyByIdOptions\n @see EOS_Sessions_CreateSessionModificationOptions\n @see EOS_Sessions_JoinSessionOptions"]
    pub bPresenceEnabled: EOS_Bool,
    #[doc = " Are members of the lobby allowed to invite others"]
    pub bAllowInvites: EOS_Bool,
    #[doc = " Bucket ID associated with the lobby"]
    pub BucketId: *const ::std::os::raw::c_char,
    #[doc = " Is host migration allowed (will the lobby stay open if the original host leaves?)\n NOTE: EOS_Lobby_PromoteMember is still allowed regardless of this setting"]
    pub bDisableHostMigration: EOS_Bool,
    #[doc = " Creates a real-time communication (RTC) room for all members of this lobby. All members of the lobby will automatically join the RTC\n room when they connect to the lobby and they will automatically leave the RTC room when they leave or are removed from the lobby.\n While the joining and leaving of the RTC room is automatic, applications will still need to use the EOS RTC interfaces to handle all\n other functionality for the room.\n\n @see EOS_Lobby_GetRTCRoomName\n @see EOS_Lobby_AddNotifyRTCRoomConnectionChanged"]
    pub bEnableRTCRoom: EOS_Bool,
    #[doc = " (Optional) Allows the local application to set local audio options for the RTC Room if it is enabled. Set this to NULL if the RTC\n RTC room is disabled or you would like to use the defaults."]
    pub LocalRTCOptions: *const EOS_Lobby_LocalRTCOptions,
    #[doc = " (Optional) Set to a globally unique value to override the backend assignment\n If not specified the backend service will assign one to the lobby.  Do not mix and match override and non override settings.\n This value can be of size [EOS_LOBBY_MIN_LOBBYIDOVERRIDE_LENGTH, EOS_LOBBY_MAX_LOBBYIDOVERRIDE_LENGTH]"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " Is EOS_Lobby_JoinLobbyById allowed.\n This is provided to support cases where an integrated platform's invite system is used.\n In these cases the game should provide the lobby ID securely to the invited player.  Such as by attaching the\n lobby ID to the integrated platform's session data or sending the lobby ID within the invite data."]
    pub bEnableJoinById: EOS_Bool,
    #[doc = " Does rejoining after being kicked require an invite?\n When this is set, a kicked player cannot return to the session even if the session was set with\n EOS_LPL_PUBLICADVERTISED.  When this is set, a player with invite privileges must use EOS_Lobby_SendInvite to\n allow the kicked player to return to the session."]
    pub bRejoinAfterKickRequiresInvite: EOS_Bool,
    #[doc = " Array of platform IDs indicating the player platforms allowed to register with the session. Platform IDs are\n found in the EOS header file, e.g. EOS_OPT_Epic. For some platforms, the value will be in the EOS Platform specific\n header file. If null, the lobby will be unrestricted."]
    pub AllowedPlatformIds: *const u32,
    #[doc = " Number of platform IDs in the array"]
    pub AllowedPlatformIdsCount: u32,
    #[doc = " This value indicates whether or not the lobby owner allows crossplay interactions. If false, the lobby owner\n will be treated as allowing crossplay. If it is set to true, AllowedPlatformIds must have a single entry that matches\n the platform of the lobby owner."]
    pub bCrossplayOptOut: EOS_Bool,
    #[doc = " If bEnableRTCRoom is true, this value indicates the action to take against the RTC Room when joining the lobby. This may be used\n to indicate the RTCRoom should be joined immediately or manually at a later time."]
    pub RTCRoomJoinActionType: EOS_ELobbyRTCRoomJoinActionType,
}
impl Default for _tagEOS_Lobby_CreateLobbyOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_CreateLobby function."]
pub type EOS_Lobby_CreateLobbyOptions = _tagEOS_Lobby_CreateLobbyOptions;
#[doc = " Output parameters for the EOS_Lobby_CreateLobby function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_CreateLobbyCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_CreateLobby"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The new lobby's ID"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_CreateLobbyCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_CreateLobby function."]
pub type EOS_Lobby_CreateLobbyCallbackInfo = _tagEOS_Lobby_CreateLobbyCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_CreateLobby\n @param Data A EOS_Lobby_CreateLobby CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnCreateLobbyCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_CreateLobbyCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_DestroyLobby function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_DestroyLobbyOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_DESTROYLOBBY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user requesting destruction of the lobby; this user must currently own the lobby"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The ID of the lobby to destroy"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_DestroyLobbyOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_DestroyLobby function."]
pub type EOS_Lobby_DestroyLobbyOptions = _tagEOS_Lobby_DestroyLobbyOptions;
#[doc = " Output parameters for the EOS_Lobby_DestroyLobby function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_DestroyLobbyCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_DestroyLobby"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The destroyed lobby's ID"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_DestroyLobbyCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_DestroyLobby function."]
pub type EOS_Lobby_DestroyLobbyCallbackInfo = _tagEOS_Lobby_DestroyLobbyCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_DestroyLobby\n @param Data A EOS_Lobby_DestroyLobby CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnDestroyLobbyCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_DestroyLobbyCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_JoinLobby function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_JoinLobbyOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_JOINLOBBY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The handle of the lobby to join"]
    pub LobbyDetailsHandle: EOS_HLobbyDetails,
    #[doc = " The Product User ID of the local user joining the lobby"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " If true, this lobby will be associated with the local user's presence information. A user can only associate one lobby at a time with their presence information.\n This affects the ability of the Social Overlay to show game related actions to take in the user's social graph.\n\n @note The Social Overlay can handle only one of the following three options at a time:\n * using the bPresenceEnabled flags within the Sessions interface\n * using the bPresenceEnabled flags within the Lobby interface\n * using EOS_PresenceModification_SetJoinInfo\n\n @see EOS_PresenceModification_SetJoinInfoOptions\n @see EOS_Lobby_CreateLobbyOptions\n @see EOS_Lobby_JoinLobbyOptions\n @see EOS_Sessions_CreateSessionModificationOptions\n @see EOS_Sessions_JoinSessionOptions"]
    pub bPresenceEnabled: EOS_Bool,
    #[doc = " (Optional) Set this value to override the default local options for the RTC Room, if it is enabled for this lobby. Set this to NULL if\n your application does not use the Lobby RTC Rooms feature, or if you would like to use the default settings. This option is ignored if\n the specified lobby does not have an RTC Room enabled and will not cause errors."]
    pub LocalRTCOptions: *const EOS_Lobby_LocalRTCOptions,
    #[doc = " This value indicates whether or not the local user allows crossplay interactions. If it is false, the local user\n will be treated as allowing crossplay."]
    pub bCrossplayOptOut: EOS_Bool,
    #[doc = " For lobbies with the RTC Room feature enabled, this value indicates the action to take against the RTC Room when joining the lobby. This may be used\n to indicate the RTCRoom should be joined immediately or manually at a later time."]
    pub RTCRoomJoinActionType: EOS_ELobbyRTCRoomJoinActionType,
}
impl Default for _tagEOS_Lobby_JoinLobbyOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_JoinLobby function."]
pub type EOS_Lobby_JoinLobbyOptions = _tagEOS_Lobby_JoinLobbyOptions;
#[doc = " Output parameters for the EOS_Lobby_JoinLobby function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_JoinLobbyCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_JoinLobby"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_JoinLobbyCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_JoinLobby function."]
pub type EOS_Lobby_JoinLobbyCallbackInfo = _tagEOS_Lobby_JoinLobbyCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_JoinLobby\n @param Data A EOS_Lobby_JoinLobby CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnJoinLobbyCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_JoinLobbyCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_JoinLobbyById function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_JoinLobbyByIdOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_JOINLOBBYBYID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the local user joining the lobby"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " If true, this lobby will be associated with the user's presence information. A user can only associate one lobby at a time with their presence information.\n This affects the ability of the Social Overlay to show game related actions to take in the user's social graph.\n\n @note The Social Overlay can handle only one of the following three options at a time:\n * using the bPresenceEnabled flags within the Sessions interface\n * using the bPresenceEnabled flags within the Lobby interface\n * using EOS_PresenceModification_SetJoinInfo\n\n @see EOS_PresenceModification_SetJoinInfoOptions\n @see EOS_Lobby_CreateLobbyOptions\n @see EOS_Lobby_JoinLobbyOptions\n @see EOS_Lobby_JoinLobbyByIdOptions\n @see EOS_Sessions_CreateSessionModificationOptions\n @see EOS_Sessions_JoinSessionOptions"]
    pub bPresenceEnabled: EOS_Bool,
    #[doc = " (Optional) Set this value to override the default local options for the RTC Room, if it is enabled for this lobby. Set this to NULL if\n your application does not use the Lobby RTC Rooms feature, or if you would like to use the default settings. This option is ignored if\n the specified lobby does not have an RTC Room enabled and will not cause errors."]
    pub LocalRTCOptions: *const EOS_Lobby_LocalRTCOptions,
    #[doc = " This value indicates whether or not the local user allows crossplay interactions. If it is false, the local user\n will be treated as allowing crossplay."]
    pub bCrossplayOptOut: EOS_Bool,
    #[doc = " For lobbies with the RTC Room feature enabled, this value indicates the action to take against the RTC Room when joining the lobby. This may be used\n to indicate the RTCRoom should be joined immediately or manually at a later time."]
    pub RTCRoomJoinActionType: EOS_ELobbyRTCRoomJoinActionType,
}
impl Default for _tagEOS_Lobby_JoinLobbyByIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_JoinLobbyById function."]
pub type EOS_Lobby_JoinLobbyByIdOptions = _tagEOS_Lobby_JoinLobbyByIdOptions;
#[doc = " Output parameters for the EOS_Lobby_JoinLobbyById function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_JoinLobbyByIdCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_JoinLobbyById"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_JoinLobbyByIdCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_JoinLobbyById function."]
pub type EOS_Lobby_JoinLobbyByIdCallbackInfo = _tagEOS_Lobby_JoinLobbyByIdCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_JoinLobbyById\n @param Data A EOS_Lobby_JoinLobbyById CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnJoinLobbyByIdCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_JoinLobbyByIdCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_LeaveLobby function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_LeaveLobbyOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_LEAVELOBBY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user leaving the lobby"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_LeaveLobbyOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_LeaveLobby function."]
pub type EOS_Lobby_LeaveLobbyOptions = _tagEOS_Lobby_LeaveLobbyOptions;
#[doc = " Output parameters for the EOS_Lobby_LeaveLobby function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_LeaveLobbyCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_LeaveLobby"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_LeaveLobbyCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_LeaveLobby function."]
pub type EOS_Lobby_LeaveLobbyCallbackInfo = _tagEOS_Lobby_LeaveLobbyCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_LeaveLobby\n @param Data A EOS_Lobby_LeaveLobby CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnLeaveLobbyCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_LeaveLobbyCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_UpdateLobbyModification function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_UpdateLobbyModificationOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_UPDATELOBBYMODIFICATION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the local user making modifications. Must be the owner to modify lobby data, but any lobby member can modify their own attributes."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_UpdateLobbyModificationOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_UpdateLobbyModification function."]
pub type EOS_Lobby_UpdateLobbyModificationOptions = _tagEOS_Lobby_UpdateLobbyModificationOptions;
#[doc = " Input parameters for the EOS_Lobby_UpdateLobby function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_UpdateLobbyOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_UPDATELOBBY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Builder handle"]
    pub LobbyModificationHandle: EOS_HLobbyModification,
}
impl Default for _tagEOS_Lobby_UpdateLobbyOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_UpdateLobby function."]
pub type EOS_Lobby_UpdateLobbyOptions = _tagEOS_Lobby_UpdateLobbyOptions;
#[doc = " Output parameters for the EOS_Lobby_UpdateLobby function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_UpdateLobbyCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_UpdateLobby"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_UpdateLobbyCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_UpdateLobby function."]
pub type EOS_Lobby_UpdateLobbyCallbackInfo = _tagEOS_Lobby_UpdateLobbyCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_UpdateLobby\n @param Data A EOS_Lobby_UpdateLobby CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnUpdateLobbyCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_UpdateLobbyCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_JoinRTCRoom function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_JoinRTCRoomOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_JOINRTCROOM_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the lobby to join the RTC Room of"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the local user in the lobby"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Allows the local application to set local audio options for the RTC Room if it is enabled.\n Only updates audio options when explicitly set; does not provide defaults."]
    pub LocalRTCOptions: *const EOS_Lobby_LocalRTCOptions,
}
impl Default for _tagEOS_Lobby_JoinRTCRoomOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_JoinRTCRoom function."]
pub type EOS_Lobby_JoinRTCRoomOptions = _tagEOS_Lobby_JoinRTCRoomOptions;
#[doc = " Output parameters for the EOS_Lobby_JoinRTCRoom function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_JoinRTCRoomCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_JoinRTCRoom"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_JoinRTCRoomCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_JoinRTCRoom function."]
pub type EOS_Lobby_JoinRTCRoomCallbackInfo = _tagEOS_Lobby_JoinRTCRoomCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_JoinRTCRoom\n @param Data A EOS_Lobby_JoinRTCRoom CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnJoinRTCRoomCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_JoinRTCRoomCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_LeaveRTCRoom function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_LeaveRTCRoomOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_LEAVERTCROOM_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the lobby owning the RTC Room to leave"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the local user in the lobby"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_LeaveRTCRoomOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_LeaveRTCRoom function."]
pub type EOS_Lobby_LeaveRTCRoomOptions = _tagEOS_Lobby_LeaveRTCRoomOptions;
#[doc = " Output parameters for the EOS_Lobby_LeaveRTCRoom function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_LeaveRTCRoomCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_LeaveRTCRoom"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_LeaveRTCRoomCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_LeaveRTCRoom function."]
pub type EOS_Lobby_LeaveRTCRoomCallbackInfo = _tagEOS_Lobby_LeaveRTCRoomCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_LeaveRTCRoom\n @param Data A EOS_Lobby_LeaveRTCRoom CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnLeaveRTCRoomCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_LeaveRTCRoomCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_PromoteMember function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_PromoteMemberOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_PROMOTEMEMBER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the local user making the request"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the member to promote to owner of the lobby"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_PromoteMemberOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_PromoteMember function."]
pub type EOS_Lobby_PromoteMemberOptions = _tagEOS_Lobby_PromoteMemberOptions;
#[doc = " Output parameters for the EOS_Lobby_PromoteMember function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_PromoteMemberCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_PromoteMember"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby where the user was promoted"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_PromoteMemberCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_PromoteMember function."]
pub type EOS_Lobby_PromoteMemberCallbackInfo = _tagEOS_Lobby_PromoteMemberCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_PromoteMember\n @param Data A EOS_Lobby_PromoteMember CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnPromoteMemberCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_PromoteMemberCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_KickMember function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_KickMemberOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_KICKMEMBER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the local user requesting the removal; this user must be the lobby owner"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the lobby member to remove"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_KickMemberOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_KickMember function."]
pub type EOS_Lobby_KickMemberOptions = _tagEOS_Lobby_KickMemberOptions;
#[doc = " Output parameters for the EOS_Lobby_KickMember function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_KickMemberCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_KickMember"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_KickMemberCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_KickMember function."]
pub type EOS_Lobby_KickMemberCallbackInfo = _tagEOS_Lobby_KickMemberCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_KickMember\n @param Data A EOS_Lobby_KickMember CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnKickMemberCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_KickMemberCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_HardMuteMember function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_HardMuteMemberOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_HARDMUTEMEMBER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the local user requesting the hard mute; this user must be the lobby owner"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the lobby member to hard mute"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " TargetUserId hard mute status (mute on or off)"]
    pub bHardMute: EOS_Bool,
}
impl Default for _tagEOS_Lobby_HardMuteMemberOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_HardMuteMember function."]
pub type EOS_Lobby_HardMuteMemberOptions = _tagEOS_Lobby_HardMuteMemberOptions;
#[doc = " Output parameters for the EOS_Lobby_HardMuteMember function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_HardMuteMemberCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_HardMuteMember"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the lobby member whose mute status has been updated"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_HardMuteMemberCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_HardMuteMember function."]
pub type EOS_Lobby_HardMuteMemberCallbackInfo = _tagEOS_Lobby_HardMuteMemberCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_HardMuteMember\n @param Data A EOS_Lobby_HardMuteMember CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnHardMuteMemberCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_HardMuteMemberCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLobbyUpdateReceived function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Lobby_AddNotifyLobbyUpdateReceivedOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_ADDNOTIFYLOBBYUPDATERECEIVED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLobbyUpdateReceived function."]
pub type EOS_Lobby_AddNotifyLobbyUpdateReceivedOptions =
    _tagEOS_Lobby_AddNotifyLobbyUpdateReceivedOptions;
#[doc = " Output parameters for the EOS_Lobby_OnLobbyUpdateReceivedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_LobbyUpdateReceivedCallbackInfo {
    #[doc = " Context that was passed into EOS_Lobby_AddNotifyLobbyUpdateReceived"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_LobbyUpdateReceivedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_OnLobbyUpdateReceivedCallback Function."]
pub type EOS_Lobby_LobbyUpdateReceivedCallbackInfo = _tagEOS_Lobby_LobbyUpdateReceivedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_Lobby_AddNotifyLobbyUpdateReceived\n\n @param Data A EOS_Lobby_LobbyUpdateReceivedCallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnLobbyUpdateReceivedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Lobby_LobbyUpdateReceivedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLobbyMemberUpdateReceived function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Lobby_AddNotifyLobbyMemberUpdateReceivedOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_ADDNOTIFYLOBBYMEMBERUPDATERECEIVED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLobbyMemberUpdateReceived function."]
pub type EOS_Lobby_AddNotifyLobbyMemberUpdateReceivedOptions =
    _tagEOS_Lobby_AddNotifyLobbyMemberUpdateReceivedOptions;
#[doc = " Output parameters for the EOS_Lobby_OnLobbyMemberUpdateReceivedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_LobbyMemberUpdateReceivedCallbackInfo {
    #[doc = " Context that was passed into EOS_Lobby_AddNotifyLobbyMemberUpdateReceived"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the lobby member"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_LobbyMemberUpdateReceivedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_OnLobbyMemberUpdateReceivedCallback Function."]
pub type EOS_Lobby_LobbyMemberUpdateReceivedCallbackInfo =
    _tagEOS_Lobby_LobbyMemberUpdateReceivedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_Lobby_AddNotifyLobbyMemberUpdateReceived\n\n @param Data A EOS_Lobby_LobbyMemberUpdateReceivedCallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnLobbyMemberUpdateReceivedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Lobby_LobbyMemberUpdateReceivedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLobbyMemberStatusReceived function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Lobby_AddNotifyLobbyMemberStatusReceivedOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_ADDNOTIFYLOBBYMEMBERSTATUSRECEIVED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLobbyMemberStatusReceived function."]
pub type EOS_Lobby_AddNotifyLobbyMemberStatusReceivedOptions =
    _tagEOS_Lobby_AddNotifyLobbyMemberStatusReceivedOptions;
#[doc = " Output parameters for the EOS_Lobby_AddNotifyLobbyMemberStatusReceived function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_LobbyMemberStatusReceivedCallbackInfo {
    #[doc = " Context that was passed into EOS_Lobby_AddNotifyLobbyMemberStatusReceived"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the lobby member"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Latest status of the user"]
    pub CurrentStatus: EOS_ELobbyMemberStatus,
}
impl Default for _tagEOS_Lobby_LobbyMemberStatusReceivedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_AddNotifyLobbyMemberStatusReceived function."]
pub type EOS_Lobby_LobbyMemberStatusReceivedCallbackInfo =
    _tagEOS_Lobby_LobbyMemberStatusReceivedCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_AddNotifyLobbyMemberStatusReceived\n @param Data A EOS_Lobby_LobbyMemberStatusReceivedCallbackInfo CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnLobbyMemberStatusReceivedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Lobby_LobbyMemberStatusReceivedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLobbyInviteReceived function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Lobby_AddNotifyLobbyInviteReceivedOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_ADDNOTIFYLOBBYINVITERECEIVED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLobbyInviteReceived function."]
pub type EOS_Lobby_AddNotifyLobbyInviteReceivedOptions =
    _tagEOS_Lobby_AddNotifyLobbyInviteReceivedOptions;
#[doc = " Output parameters for the EOS_Lobby_OnLobbyInviteReceivedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_LobbyInviteReceivedCallbackInfo {
    #[doc = " Context that was passed into EOS_Lobby_AddNotifyLobbyInviteReceived"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the invitation"]
    pub InviteId: *const ::std::os::raw::c_char,
    #[doc = " The Product User ID of the local user who received the invitation"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the user who sent the invitation"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_LobbyInviteReceivedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_OnLobbyInviteReceivedCallback Function."]
pub type EOS_Lobby_LobbyInviteReceivedCallbackInfo = _tagEOS_Lobby_LobbyInviteReceivedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_Lobby_AddNotifyLobbyInviteReceived\n\n @param Data A EOS_Lobby_LobbyInviteReceivedCallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnLobbyInviteReceivedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Lobby_LobbyInviteReceivedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLobbyInviteAccepted function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Lobby_AddNotifyLobbyInviteAcceptedOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_ADDNOTIFYLOBBYINVITEACCEPTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLobbyInviteAccepted function."]
pub type EOS_Lobby_AddNotifyLobbyInviteAcceptedOptions =
    _tagEOS_Lobby_AddNotifyLobbyInviteAcceptedOptions;
#[doc = " Output parameters for the EOS_Lobby_OnLobbyInviteAcceptedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_LobbyInviteAcceptedCallbackInfo {
    #[doc = " Context that was passed into EOS_Lobby_AddNotifyLobbyInviteAccepted"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The invite ID"]
    pub InviteId: *const ::std::os::raw::c_char,
    #[doc = " The Product User ID of the local user who received the invitation"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the user who sent the invitation"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Lobby ID that the user has been invited to"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_LobbyInviteAcceptedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_OnLobbyInviteAcceptedCallback Function."]
pub type EOS_Lobby_LobbyInviteAcceptedCallbackInfo = _tagEOS_Lobby_LobbyInviteAcceptedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_Lobby_AddNotifyLobbyInviteAccepted\n\n @param Data A EOS_Lobby_LobbyInviteAcceptedCallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnLobbyInviteAcceptedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Lobby_LobbyInviteAcceptedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Lobby_AddNotifyJoinLobbyAccepted function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Lobby_AddNotifyJoinLobbyAcceptedOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_ADDNOTIFYJOINLOBBYACCEPTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Lobby_AddNotifyJoinLobbyAccepted function."]
pub type EOS_Lobby_AddNotifyJoinLobbyAcceptedOptions =
    _tagEOS_Lobby_AddNotifyJoinLobbyAcceptedOptions;
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLobbyInviteRejected function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Lobby_AddNotifyLobbyInviteRejectedOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_ADDNOTIFYLOBBYINVITEREJECTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLobbyInviteRejected function."]
pub type EOS_Lobby_AddNotifyLobbyInviteRejectedOptions =
    _tagEOS_Lobby_AddNotifyLobbyInviteRejectedOptions;
#[doc = " Output parameters for the EOS_Lobby_OnLobbyInviteRejectedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_LobbyInviteRejectedCallbackInfo {
    #[doc = " Context that was passed into EOS_Lobby_AddNotifyLobbyInviteRejected"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The invite ID"]
    pub InviteId: *const ::std::os::raw::c_char,
    #[doc = " The Product User ID of the local user who received the invitation"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the user who sent the invitation"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Lobby ID that the user has been invited to"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_LobbyInviteRejectedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_OnLobbyInviteRejectedCallback Function."]
pub type EOS_Lobby_LobbyInviteRejectedCallbackInfo = _tagEOS_Lobby_LobbyInviteRejectedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_Lobby_AddNotifyLobbyInviteRejected\n\n @param Data A EOS_Lobby_LobbyInviteRejectedCallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnLobbyInviteRejectedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Lobby_LobbyInviteRejectedCallbackInfo),
>;
#[doc = " Output parameters for the EOS_Lobby_OnJoinLobbyAcceptedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_JoinLobbyAcceptedCallbackInfo {
    #[doc = " Context that was passed into EOS_Lobby_AddNotifyJoinLobbyAccepted"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who is joining"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The UI Event associated with this Join Game event.\n This should be used with EOS_Lobby_CopyLobbyDetailsHandleByUiEventId to get a handle to be used\n when calling EOS_Lobby_JoinLobby."]
    pub UiEventId: EOS_UI_EventId,
}
impl Default for _tagEOS_Lobby_JoinLobbyAcceptedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_OnJoinLobbyAcceptedCallback Function."]
pub type EOS_Lobby_JoinLobbyAcceptedCallbackInfo = _tagEOS_Lobby_JoinLobbyAcceptedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_Lobby_AddNotifyJoinLobbyAccepted\n\n @param Data A EOS_Lobby_JoinLobbyAcceptedCallbackInfo containing the output information and result\n\n @note The lobby for the join game must be joined.\n\n @see EOS_Lobby_CopyLobbyDetailsHandleByUiEventId\n @see EOS_Lobby_JoinLobby"]
pub type EOS_Lobby_OnJoinLobbyAcceptedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Lobby_JoinLobbyAcceptedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Lobby_AddNotifySendLobbyNativeInviteRequested function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Lobby_AddNotifySendLobbyNativeInviteRequestedOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_ADDNOTIFYSENDLOBBYNATIVEINVITEREQUESTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Lobby_AddNotifySendLobbyNativeInviteRequested function."]
pub type EOS_Lobby_AddNotifySendLobbyNativeInviteRequestedOptions =
    _tagEOS_Lobby_AddNotifySendLobbyNativeInviteRequestedOptions;
#[doc = " Output parameters for the EOS_Lobby_OnSendLobbyNativeInviteRequestedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_SendLobbyNativeInviteRequestedCallbackInfo {
    #[doc = " Context that was passed into EOS_Lobby_AddNotifySendLobbyNativeInviteRequested"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Identifies this event which will need to be acknowledged with EOS_UI_AcknowledgeEventId().\n @see EOS_UI_AcknowledgeEventId"]
    pub UiEventId: EOS_UI_EventId,
    #[doc = " The Product User ID of the local user who is inviting."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Native Platform Account Type. If only a single integrated platform is configured then\n this will always reference that platform."]
    pub TargetNativeAccountType: EOS_IntegratedPlatformType,
    #[doc = " The Native Platform Account ID of the target user being invited."]
    pub TargetUserNativeAccountId: *const ::std::os::raw::c_char,
    #[doc = " Lobby ID that the user is being invited to"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_SendLobbyNativeInviteRequestedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_OnSendLobbyNativeInviteRequestedCallback Function."]
pub type EOS_Lobby_SendLobbyNativeInviteRequestedCallbackInfo =
    _tagEOS_Lobby_SendLobbyNativeInviteRequestedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_Lobby_AddNotifySendLobbyNativeInviteRequested\n\n @param Data A EOS_Lobby_SendLobbyNativeInviteRequestedCallbackInfo containing the output information and result\n\n @note After processing the callback EOS_UI_AcknowledgeEventId must be called.\n\n @see EOS_UI_AcknowledgeEventId"]
pub type EOS_Lobby_OnSendLobbyNativeInviteRequestedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Lobby_SendLobbyNativeInviteRequestedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Lobby_CopyLobbyDetailsHandleByInviteId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_CopyLobbyDetailsHandleByInviteIdOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_COPYLOBBYDETAILSHANDLEBYINVITEID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of an invitation to join the lobby"]
    pub InviteId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Lobby_CopyLobbyDetailsHandleByInviteIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_CopyLobbyDetailsHandleByInviteId function."]
pub type EOS_Lobby_CopyLobbyDetailsHandleByInviteIdOptions =
    _tagEOS_Lobby_CopyLobbyDetailsHandleByInviteIdOptions;
#[doc = " Input parameters for the EOS_Lobby_CopyLobbyDetailsHandleByUiEventId function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Lobby_CopyLobbyDetailsHandleByUiEventIdOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_COPYLOBBYDETAILSHANDLEBYUIEVENTID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " UI Event associated with the lobby"]
    pub UiEventId: EOS_UI_EventId,
}
#[doc = " Input parameters for the EOS_Lobby_CopyLobbyDetailsHandleByUiEventId function."]
pub type EOS_Lobby_CopyLobbyDetailsHandleByUiEventIdOptions =
    _tagEOS_Lobby_CopyLobbyDetailsHandleByUiEventIdOptions;
#[doc = " Input parameters for the EOS_Lobby_CreateLobbySearch function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Lobby_CreateLobbySearchOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_CREATELOBBYSEARCH_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Maximum number of results allowed from the search"]
    pub MaxResults: u32,
}
#[doc = " Input parameters for the EOS_Lobby_CreateLobbySearch function."]
pub type EOS_Lobby_CreateLobbySearchOptions = _tagEOS_Lobby_CreateLobbySearchOptions;
#[doc = " Input parameters for the EOS_Lobby_SendInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_SendInviteOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_SENDINVITE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the lobby associated with the invitation"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the local user sending the invitation"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the user receiving the invitation"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_SendInviteOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_SendInvite function."]
pub type EOS_Lobby_SendInviteOptions = _tagEOS_Lobby_SendInviteOptions;
#[doc = " Output parameters for the EOS_Lobby_SendInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_SendInviteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_SendInvite"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_SendInviteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_SendInvite function."]
pub type EOS_Lobby_SendInviteCallbackInfo = _tagEOS_Lobby_SendInviteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_SendInvite\n @param Data A EOS_Lobby_SendInvite CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnSendInviteCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_SendInviteCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_RejectInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_RejectInviteOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_REJECTINVITE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the lobby associated with the invitation"]
    pub InviteId: *const ::std::os::raw::c_char,
    #[doc = " The Product User ID of the local user who is rejecting the invitation"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_RejectInviteOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_RejectInvite function."]
pub type EOS_Lobby_RejectInviteOptions = _tagEOS_Lobby_RejectInviteOptions;
#[doc = " Output parameters for the EOS_Lobby_RejectInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_RejectInviteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_RejectInvite"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the invitation being rejected"]
    pub InviteId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Lobby_RejectInviteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_RejectInvite function."]
pub type EOS_Lobby_RejectInviteCallbackInfo = _tagEOS_Lobby_RejectInviteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_RejectInvite\n @param Data A EOS_Lobby_RejectInvite CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnRejectInviteCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_RejectInviteCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_QueryInvites function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_QueryInvitesOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_QUERYINVITES_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user whose invitations you want to retrieve"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_QueryInvitesOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_QueryInvites function."]
pub type EOS_Lobby_QueryInvitesOptions = _tagEOS_Lobby_QueryInvitesOptions;
#[doc = " Output parameters for the EOS_Lobby_QueryInvites function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_QueryInvitesCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Lobby_QueryInvites"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user that made the request"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_QueryInvitesCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_QueryInvites function."]
pub type EOS_Lobby_QueryInvitesCallbackInfo = _tagEOS_Lobby_QueryInvitesCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Lobby_QueryInvites\n @param Data A EOS_Lobby_QueryInvites CallbackInfo containing the output information and result"]
pub type EOS_Lobby_OnQueryInvitesCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Lobby_QueryInvitesCallbackInfo)>;
#[doc = " Input parameters for the EOS_Lobby_GetInviteCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_GetInviteCountOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_GETINVITECOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user whose cached lobby invitations you want to count"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_GetInviteCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_GetInviteCount function."]
pub type EOS_Lobby_GetInviteCountOptions = _tagEOS_Lobby_GetInviteCountOptions;
#[doc = " Input parameters for the EOS_Lobby_GetInviteIdByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_GetInviteIdByIndexOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_GETINVITEIDBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who received the cached invitation"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The index of the invitation ID to retrieve"]
    pub Index: u32,
}
impl Default for _tagEOS_Lobby_GetInviteIdByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_GetInviteIdByIndex function."]
pub type EOS_Lobby_GetInviteIdByIndexOptions = _tagEOS_Lobby_GetInviteIdByIndexOptions;
#[doc = " Input parameters for the EOS_Lobby_CopyLobbyDetailsHandle function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_CopyLobbyDetailsHandleOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_COPYLOBBYDETAILSHANDLE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the lobby"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the local user making the request"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_CopyLobbyDetailsHandleOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_CopyLobbyDetailsHandle function."]
pub type EOS_Lobby_CopyLobbyDetailsHandleOptions = _tagEOS_Lobby_CopyLobbyDetailsHandleOptions;
#[doc = " Input parameters for the EOS_Lobby_GetRTCRoomName function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_GetRTCRoomNameOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_GETRTCROOMNAME_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the lobby to get the RTC Room name for"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the local user in the lobby"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_GetRTCRoomNameOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_GetRTCRoomName function."]
pub type EOS_Lobby_GetRTCRoomNameOptions = _tagEOS_Lobby_GetRTCRoomNameOptions;
#[doc = " Input parameters for the EOS_Lobby_IsRTCRoomConnected function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_IsRTCRoomConnectedOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_ISRTCROOMCONNECTED_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the lobby to get the RTC Room name for"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the local user in the lobby"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_IsRTCRoomConnectedOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_IsRTCRoomConnected function."]
pub type EOS_Lobby_IsRTCRoomConnectedOptions = _tagEOS_Lobby_IsRTCRoomConnectedOptions;
#[doc = " Input parameters for the EOS_Lobby_AddNotifyRTCRoomConnectionChanged function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_AddNotifyRTCRoomConnectionChangedOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_ADDNOTIFYRTCROOMCONNECTIONCHANGED_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the lobby to receive RTC Room connection change notifications for\n This is deprecated and no longer needed. The notification is raised for any LobbyId or LocalUserId. If any filtering is required, the callback struct (EOS_Lobby_RTCRoomConnectionChangedCallbackInfo) has both a LobbyId and LocalUserId field."]
    pub LobbyId_DEPRECATED: EOS_LobbyId,
    #[doc = " The Product User ID of the local user in the lobby\n This is deprecated and no longer needed. The notification is raised for any LobbyId or LocalUserId. If any filtering is required, the callback struct (EOS_Lobby_RTCRoomConnectionChangedCallbackInfo) has both a LobbyId and LocalUserId field."]
    pub LocalUserId_DEPRECATED: EOS_ProductUserId,
}
impl Default for _tagEOS_Lobby_AddNotifyRTCRoomConnectionChangedOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_AddNotifyRTCRoomConnectionChanged function."]
pub type EOS_Lobby_AddNotifyRTCRoomConnectionChangedOptions =
    _tagEOS_Lobby_AddNotifyRTCRoomConnectionChangedOptions;
#[doc = " Output parameters for the EOS_Lobby_AddNotifyRTCRoomConnectionChanged function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_RTCRoomConnectionChangedCallbackInfo {
    #[doc = " Context that was passed into EOS_Lobby_AddNotifyRTCRoomConnectionChanged"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ID of the lobby which had a RTC Room connection state change"]
    pub LobbyId: EOS_LobbyId,
    #[doc = " The Product User ID of the local user who is in the lobby and registered for notifications"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The new connection state of the room"]
    pub bIsConnected: EOS_Bool,
    #[doc = "If bIsConnected is EOS_FALSE, this result will be the reason we were disconnected.\n EOS_Success: The room was left locally. This may be because: the associated lobby was Left or Destroyed, the connection to the lobby was interrupted, or because the SDK is being shutdown. If the lobby connection returns (lobby did not permanently go away), we will reconnect.\n EOS_NoConnection: There was a network issue connecting to the server. We will attempt to reconnect soon.\n EOS_RTC_UserKicked: The user has been kicked by the server. We will not reconnect.\n EOS_RTC_UserBanned: The user has been banned by the server. We will not reconnect.\n EOS_ServiceFailure: A known error occurred during interaction with the server. We will attempt to reconnect soon.\n EOS_UnexpectedError: Unexpected error. We will attempt to reconnect soon."]
    pub DisconnectReason: EOS_EResult,
}
impl Default for _tagEOS_Lobby_RTCRoomConnectionChangedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_AddNotifyRTCRoomConnectionChanged function."]
pub type EOS_Lobby_RTCRoomConnectionChangedCallbackInfo =
    _tagEOS_Lobby_RTCRoomConnectionChangedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_Lobby_AddNotifyRTCRoomConnectionChanged\n\n @param Data containing the connection state of the RTC Room for a lobby\n\n @see EOS_Lobby_IsRTCRoomConnected"]
pub type EOS_Lobby_OnRTCRoomConnectionChangedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Lobby_RTCRoomConnectionChangedCallbackInfo),
>;
#[doc = " Contains information about lobby and lobby member data"]
#[repr(C)]
#[derive(Copy, Clone)]
pub struct _tagEOS_Lobby_AttributeData {
    #[doc = " API Version: Set this to EOS_LOBBY_ATTRIBUTEDATA_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the lobby attribute"]
    pub Key: *const ::std::os::raw::c_char,
    #[doc = " Value of the lobby attribute"]
    pub Value: _tagEOS_Lobby_AttributeData__bindgen_ty_1,
    #[doc = " Type of value stored in the union"]
    pub ValueType: EOS_ELobbyAttributeType,
}
#[doc = " Value of the lobby attribute"]
#[repr(C)]
#[derive(Copy, Clone)]
pub union _tagEOS_Lobby_AttributeData__bindgen_ty_1 {
    #[doc = " Stored as an 8 byte integer"]
    pub AsInt64: i64,
    #[doc = " Stored as a double precision floating point"]
    pub AsDouble: f64,
    #[doc = " Stored as a boolean"]
    pub AsBool: EOS_Bool,
    #[doc = " Stored as a null terminated UTF8 string. Should not be nullptr"]
    pub AsUtf8: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Lobby_AttributeData__bindgen_ty_1 {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
impl Default for _tagEOS_Lobby_AttributeData {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about lobby and lobby member data"]
pub type EOS_Lobby_AttributeData = _tagEOS_Lobby_AttributeData;
#[doc = "  An attribute and its visibility setting stored with a lobby.\n  Used to store both lobby and lobby member data"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_Attribute {
    #[doc = " API Version: Set this to EOS_LOBBY_ATTRIBUTE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Key/Value pair describing the attribute"]
    pub Data: *mut EOS_Lobby_AttributeData,
    #[doc = " Is this attribute public or private to the lobby and its members"]
    pub Visibility: EOS_ELobbyAttributeVisibility,
}
impl Default for _tagEOS_Lobby_Attribute {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = "  An attribute and its visibility setting stored with a lobby.\n  Used to store both lobby and lobby member data"]
pub type EOS_Lobby_Attribute = _tagEOS_Lobby_Attribute;
unsafe extern "C" {
    #[doc = " Release the memory associated with a lobby attribute. This must be called on data retrieved from the various Copy functions in the\n LobbyDetails interface which return an EOS_Lobby_Attribute.\n\n @param LobbyAttribute - The lobby attribute to release\n\n @see EOS_LobbyDetails_CopyAttributeByIndex\n @see EOS_LobbyDetails_CopyAttributeByKey\n @see EOS_LobbyDetails_CopyMemberAttributeByIndex\n @see EOS_LobbyDetails_CopyMemberAttributeByKey"]
    pub fn EOS_Lobby_Attribute_Release(LobbyAttribute: *mut EOS_Lobby_Attribute);
}
#[doc = " Input parameters for the EOS_Lobby_GetConnectString function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_GetConnectStringOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_GETCONNECTSTRING_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user requesting the connection string generated from the lobby; this user must currently own the lobby"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The ID of the lobby to generate a connection string for"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_GetConnectStringOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_GetConnectString function."]
pub type EOS_Lobby_GetConnectStringOptions = _tagEOS_Lobby_GetConnectStringOptions;
#[doc = " Input parameters for the EOS_Lobby_GetConnectString function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_ParseConnectStringOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_PARSECONNECTSTRING_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The connection string to parse"]
    pub ConnectString: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Lobby_ParseConnectStringOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Lobby_GetConnectString function."]
pub type EOS_Lobby_ParseConnectStringOptions = _tagEOS_Lobby_ParseConnectStringOptions;
#[doc = " Input parameters for the EOS_LobbyModification_SetBucketId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyModification_SetBucketIdOptions {
    #[doc = " API Version: Set this to EOS_LOBBYMODIFICATION_SETBUCKETID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The new bucket id associated with the lobby"]
    pub BucketId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_LobbyModification_SetBucketIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbyModification_SetBucketId function."]
pub type EOS_LobbyModification_SetBucketIdOptions = _tagEOS_LobbyModification_SetBucketIdOptions;
#[doc = " Input parameters for the EOS_LobbyModification_SetPermissionLevel function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyModification_SetPermissionLevelOptions {
    #[doc = " API Version: Set this to EOS_LOBBYMODIFICATION_SETPERMISSIONLEVEL_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Permission level of the lobby"]
    pub PermissionLevel: EOS_ELobbyPermissionLevel,
}
impl Default for _tagEOS_LobbyModification_SetPermissionLevelOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbyModification_SetPermissionLevel function."]
pub type EOS_LobbyModification_SetPermissionLevelOptions =
    _tagEOS_LobbyModification_SetPermissionLevelOptions;
#[doc = " Input parameters for the EOS_LobbyModification_SetMaxMembers function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_LobbyModification_SetMaxMembersOptions {
    #[doc = " API Version: Set this to EOS_LOBBYMODIFICATION_SETMAXMEMBERS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " New maximum number of lobby members"]
    pub MaxMembers: u32,
}
#[doc = " Input parameters for the EOS_LobbyModification_SetMaxMembers function."]
pub type EOS_LobbyModification_SetMaxMembersOptions =
    _tagEOS_LobbyModification_SetMaxMembersOptions;
#[doc = " Input parameters for the EOS_LobbyModification_SetInvitesAllowed Function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_LobbyModification_SetInvitesAllowedOptions {
    #[doc = " API Version: Set this to EOS_LOBBYMODIFICATION_SETINVITESALLOWED_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " If true then invites can currently be sent for the associated lobby"]
    pub bInvitesAllowed: EOS_Bool,
}
#[doc = " Input parameters for the EOS_LobbyModification_SetInvitesAllowed Function."]
pub type EOS_LobbyModification_SetInvitesAllowedOptions =
    _tagEOS_LobbyModification_SetInvitesAllowedOptions;
#[doc = " Input parameters for the EOS_LobbyModification_AddAttribute function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyModification_AddAttributeOptions {
    #[doc = " API Version: Set this to EOS_LOBBYMODIFICATION_ADDATTRIBUTE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Key/Value pair describing the attribute to add to the lobby"]
    pub Attribute: *const EOS_Lobby_AttributeData,
    #[doc = " Is this attribute public or private to the lobby and its members"]
    pub Visibility: EOS_ELobbyAttributeVisibility,
}
impl Default for _tagEOS_LobbyModification_AddAttributeOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbyModification_AddAttribute function."]
pub type EOS_LobbyModification_AddAttributeOptions = _tagEOS_LobbyModification_AddAttributeOptions;
#[doc = " Input parameters for the EOS_LobbyModification_RemoveAttribute function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyModification_RemoveAttributeOptions {
    #[doc = " API Version: Set this to EOS_LOBBYMODIFICATION_REMOVEATTRIBUTE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the key"]
    pub Key: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_LobbyModification_RemoveAttributeOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbyModification_RemoveAttribute function."]
pub type EOS_LobbyModification_RemoveAttributeOptions =
    _tagEOS_LobbyModification_RemoveAttributeOptions;
#[doc = " Input parameters for the EOS_LobbyModification_AddMemberAttribute function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyModification_AddMemberAttributeOptions {
    #[doc = " API Version: Set this to EOS_LOBBYMODIFICATION_ADDMEMBERATTRIBUTE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Key/Value pair describing the attribute to add to the lobby member"]
    pub Attribute: *const EOS_Lobby_AttributeData,
    #[doc = " Is this attribute public or private to the rest of the lobby members"]
    pub Visibility: EOS_ELobbyAttributeVisibility,
}
impl Default for _tagEOS_LobbyModification_AddMemberAttributeOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbyModification_AddMemberAttribute function."]
pub type EOS_LobbyModification_AddMemberAttributeOptions =
    _tagEOS_LobbyModification_AddMemberAttributeOptions;
#[doc = " Input parameters for the EOS_LobbyModification_RemoveMemberAttribute function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyModification_RemoveMemberAttributeOptions {
    #[doc = " API Version: Set this to EOS_LOBBYMODIFICATION_REMOVEMEMBERATTRIBUTE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the key"]
    pub Key: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_LobbyModification_RemoveMemberAttributeOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbyModification_RemoveMemberAttribute function."]
pub type EOS_LobbyModification_RemoveMemberAttributeOptions =
    _tagEOS_LobbyModification_RemoveMemberAttributeOptions;
#[doc = " Input parameters for the EOS_LobbyModification_SetAllowedPlatformIdsOptions function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyModification_SetAllowedPlatformIdsOptions {
    #[doc = " API Version: Set this to EOS_LOBBYMODIFICATION_SETALLOWEDPLATFORMIDS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Array of platform IDs indicating the player platforms allowed to register with the lobby. Platform IDs are\n found in the EOS header file (eos_common.h), for example EOS_OPT_Epic. For some platforms the value will be\n in the EOS Platform specific header file. If null, the lobby will be unrestricted."]
    pub AllowedPlatformIds: *const u32,
    #[doc = " Number of platform IDs in the array"]
    pub AllowedPlatformIdsCount: u32,
}
impl Default for _tagEOS_LobbyModification_SetAllowedPlatformIdsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbyModification_SetAllowedPlatformIdsOptions function."]
pub type EOS_LobbyModification_SetAllowedPlatformIdsOptions =
    _tagEOS_LobbyModification_SetAllowedPlatformIdsOptions;
#[doc = " Input parameters for the EOS_LobbyDetails_GetLobbyOwner function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_LobbyDetails_GetLobbyOwnerOptions {
    #[doc = " API Version: Set this to EOS_LOBBYDETAILS_GETLOBBYOWNER_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_LobbyDetails_GetLobbyOwner function."]
pub type EOS_LobbyDetails_GetLobbyOwnerOptions = _tagEOS_LobbyDetails_GetLobbyOwnerOptions;
#[doc = " Input parameters for the EOS_LobbyDetails_CopyInfo function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_LobbyDetails_CopyInfoOptions {
    #[doc = " API Version: Set this to EOS_LOBBYDETAILS_COPYINFO_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_LobbyDetails_CopyInfo function."]
pub type EOS_LobbyDetails_CopyInfoOptions = _tagEOS_LobbyDetails_CopyInfoOptions;
#[doc = " Input parameters for the EOS_LobbyDetails_GetAttributeCount function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_LobbyDetails_GetAttributeCountOptions {
    #[doc = " API Version: Set this to EOS_LOBBYDETAILS_GETATTRIBUTECOUNT_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_LobbyDetails_GetAttributeCount function."]
pub type EOS_LobbyDetails_GetAttributeCountOptions = _tagEOS_LobbyDetails_GetAttributeCountOptions;
#[doc = " Input parameters for the EOS_LobbyDetails_CopyAttributeByIndex function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_LobbyDetails_CopyAttributeByIndexOptions {
    #[doc = " API Version: Set this to EOS_LOBBYDETAILS_COPYATTRIBUTEBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The index of the attribute to retrieve\n @see EOS_LobbyDetails_GetAttributeCount"]
    pub AttrIndex: u32,
}
#[doc = " Input parameters for the EOS_LobbyDetails_CopyAttributeByIndex function."]
pub type EOS_LobbyDetails_CopyAttributeByIndexOptions =
    _tagEOS_LobbyDetails_CopyAttributeByIndexOptions;
#[doc = " Input parameters for the EOS_LobbyDetails_CopyAttributeByKey function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyDetails_CopyAttributeByKeyOptions {
    #[doc = " API Version: Set this to EOS_LOBBYDETAILS_COPYATTRIBUTEBYKEY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the attribute"]
    pub AttrKey: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_LobbyDetails_CopyAttributeByKeyOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbyDetails_CopyAttributeByKey function."]
pub type EOS_LobbyDetails_CopyAttributeByKeyOptions =
    _tagEOS_LobbyDetails_CopyAttributeByKeyOptions;
#[doc = " Input parameters for the EOS_LobbyDetails_GetMemberAttributeCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyDetails_GetMemberAttributeCountOptions {
    #[doc = " API Version: Set this to EOS_LOBBYDETAILS_GETMEMBERATTRIBUTECOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the lobby member"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_LobbyDetails_GetMemberAttributeCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbyDetails_GetMemberAttributeCount function."]
pub type EOS_LobbyDetails_GetMemberAttributeCountOptions =
    _tagEOS_LobbyDetails_GetMemberAttributeCountOptions;
#[doc = " Input parameters for the EOS_LobbyDetails_CopyMemberAttributeByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyDetails_CopyMemberAttributeByIndexOptions {
    #[doc = " API Version: Set this to EOS_LOBBYDETAILS_COPYMEMBERATTRIBUTEBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the lobby member"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " The index of the attribute to copy"]
    pub AttrIndex: u32,
}
impl Default for _tagEOS_LobbyDetails_CopyMemberAttributeByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbyDetails_CopyMemberAttributeByIndex function."]
pub type EOS_LobbyDetails_CopyMemberAttributeByIndexOptions =
    _tagEOS_LobbyDetails_CopyMemberAttributeByIndexOptions;
#[doc = " Input parameters for the EOS_LobbyDetails_CopyMemberAttributeByKey function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyDetails_CopyMemberAttributeByKeyOptions {
    #[doc = " API Version: Set this to EOS_LOBBYDETAILS_COPYMEMBERATTRIBUTEBYKEY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the lobby member"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Name of the attribute to copy"]
    pub AttrKey: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_LobbyDetails_CopyMemberAttributeByKeyOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbyDetails_CopyMemberAttributeByKey function."]
pub type EOS_LobbyDetails_CopyMemberAttributeByKeyOptions =
    _tagEOS_LobbyDetails_CopyMemberAttributeByKeyOptions;
#[doc = " Input parameters for the EOS_LobbyDetails_GetMemberCount function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_LobbyDetails_GetMemberCountOptions {
    #[doc = " API Version: Set this to EOS_LOBBYDETAILS_GETMEMBERCOUNT_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_LobbyDetails_GetMemberCount function."]
pub type EOS_LobbyDetails_GetMemberCountOptions = _tagEOS_LobbyDetails_GetMemberCountOptions;
#[doc = " Input parameters for the EOS_LobbyDetails_GetMemberByIndex function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_LobbyDetails_GetMemberByIndexOptions {
    #[doc = " API Version: Set this to EOS_LOBBYDETAILS_GETMEMBERBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Index of the member to retrieve"]
    pub MemberIndex: u32,
}
#[doc = " Input parameters for the EOS_LobbyDetails_GetMemberByIndex function."]
pub type EOS_LobbyDetails_GetMemberByIndexOptions = _tagEOS_LobbyDetails_GetMemberByIndexOptions;
#[doc = " Input parameters for the EOS_LobbySearch_Find function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbySearch_FindOptions {
    #[doc = " API Version: Set this to EOS_LOBBYSEARCH_FIND_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the user making the search request"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_LobbySearch_FindOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbySearch_Find function."]
pub type EOS_LobbySearch_FindOptions = _tagEOS_LobbySearch_FindOptions;
#[doc = " Output parameters for the EOS_LobbySearch_Find function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbySearch_FindCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_LobbySearch_Find"]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_LobbySearch_FindCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_LobbySearch_Find function."]
pub type EOS_LobbySearch_FindCallbackInfo = _tagEOS_LobbySearch_FindCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_LobbySearch_Find\n @param Data A EOS_LobbySearch_Find CallbackInfo containing the output information and result"]
pub type EOS_LobbySearch_OnFindCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_LobbySearch_FindCallbackInfo)>;
#[doc = " Input parameters for the EOS_LobbySearch_SetLobbyId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbySearch_SetLobbyIdOptions {
    #[doc = " API Version: Set this to EOS_LOBBYSEARCH_SETLOBBYID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the lobby to find"]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_LobbySearch_SetLobbyIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbySearch_SetLobbyId function."]
pub type EOS_LobbySearch_SetLobbyIdOptions = _tagEOS_LobbySearch_SetLobbyIdOptions;
#[doc = " Input parameters for the EOS_LobbySearch_SetTargetUserId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbySearch_SetTargetUserIdOptions {
    #[doc = " API Version: Set this to EOS_LOBBYSEARCH_SETTARGETUSERID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Search lobbies for given user by Product User ID, returning any lobbies where this user is currently registered"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_LobbySearch_SetTargetUserIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbySearch_SetTargetUserId function."]
pub type EOS_LobbySearch_SetTargetUserIdOptions = _tagEOS_LobbySearch_SetTargetUserIdOptions;
#[doc = " Input parameters for the EOS_LobbySearch_SetParameter function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbySearch_SetParameterOptions {
    #[doc = " API Version: Set this to EOS_LOBBYSEARCH_SETPARAMETER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Search parameter describing a key and a value to compare"]
    pub Parameter: *const EOS_Lobby_AttributeData,
    #[doc = " The type of comparison to make against the search parameter"]
    pub ComparisonOp: EOS_EComparisonOp,
}
impl Default for _tagEOS_LobbySearch_SetParameterOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbySearch_SetParameter function."]
pub type EOS_LobbySearch_SetParameterOptions = _tagEOS_LobbySearch_SetParameterOptions;
#[doc = " Input parameters for the EOS_LobbySearch_RemoveParameter function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbySearch_RemoveParameterOptions {
    #[doc = " API Version: Set this to EOS_LOBBYSEARCH_REMOVEPARAMETER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Search parameter key to remove from the search"]
    pub Key: *const ::std::os::raw::c_char,
    #[doc = " Search comparison operation associated with the key to remove"]
    pub ComparisonOp: EOS_EComparisonOp,
}
impl Default for _tagEOS_LobbySearch_RemoveParameterOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbySearch_RemoveParameter function."]
pub type EOS_LobbySearch_RemoveParameterOptions = _tagEOS_LobbySearch_RemoveParameterOptions;
#[doc = " Input parameters for the EOS_LobbySearch_SetMaxResults function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_LobbySearch_SetMaxResultsOptions {
    #[doc = " API Version: Set this to EOS_LOBBYSEARCH_SETMAXRESULTS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Maximum number of search results to return from the query"]
    pub MaxResults: u32,
}
#[doc = " Input parameters for the EOS_LobbySearch_SetMaxResults function."]
pub type EOS_LobbySearch_SetMaxResultsOptions = _tagEOS_LobbySearch_SetMaxResultsOptions;
#[doc = " Input parameters for the EOS_LobbySearch_GetSearchResultCount function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_LobbySearch_GetSearchResultCountOptions {
    #[doc = " API Version: Set this to EOS_LOBBYSEARCH_GETSEARCHRESULTCOUNT_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_LobbySearch_GetSearchResultCount function."]
pub type EOS_LobbySearch_GetSearchResultCountOptions =
    _tagEOS_LobbySearch_GetSearchResultCountOptions;
#[doc = " Input parameters for the EOS_LobbySearch_CopySearchResultByIndex function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_LobbySearch_CopySearchResultByIndexOptions {
    #[doc = " API Version: Set this to EOS_LOBBYSEARCH_COPYSEARCHRESULTBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The index of the lobby to retrieve within the completed search query\n @see EOS_LobbySearch_GetSearchResultCount"]
    pub LobbyIndex: u32,
}
#[doc = " Input parameters for the EOS_LobbySearch_CopySearchResultByIndex function."]
pub type EOS_LobbySearch_CopySearchResultByIndexOptions =
    _tagEOS_LobbySearch_CopySearchResultByIndexOptions;
#[doc = " Input parameters for the EOS_LobbyDetails_CopyMemberInfo function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyDetails_CopyMemberInfoOptions {
    #[doc = " API Version: Set this to EOS_LOBBYDETAILS_COPYMEMBERINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the lobby member to copy."]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_LobbyDetails_CopyMemberInfoOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_LobbyDetails_CopyMemberInfo function."]
pub type EOS_LobbyDetails_CopyMemberInfoOptions = _tagEOS_LobbyDetails_CopyMemberInfoOptions;
#[doc = " Contains information about a member of a lobby."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_LobbyDetails_MemberInfo {
    #[doc = " API Version: Set this to EOS_LOBBYDETAILS_MEMBERINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the lobby member."]
    pub UserId: EOS_ProductUserId,
    #[doc = " The platform of the lobby member."]
    pub Platform: EOS_OnlinePlatformType,
    #[doc = " Does this member allow crossplay"]
    pub bAllowsCrossplay: EOS_Bool,
}
impl Default for _tagEOS_LobbyDetails_MemberInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a member of a lobby."]
pub type EOS_LobbyDetails_MemberInfo = _tagEOS_LobbyDetails_MemberInfo;
unsafe extern "C" {
    #[doc = " Release the memory associated with a member info. This must be called on data retrieved from EOS_LobbyDetails_CopyMemberInfo.\n\n @param LobbyDetailsMemberInfo - The lobby details member info to release\n\n @see EOS_LobbyDetails_CopyMemberInfo"]
    pub fn EOS_LobbyDetails_MemberInfo_Release(
        LobbyDetailsMemberInfo: *mut EOS_LobbyDetails_MemberInfo,
    );
}
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLeaveLobbyRequested function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Lobby_AddNotifyLeaveLobbyRequestedOptions {
    #[doc = " API Version: Set this to EOS_LOBBY_ADDNOTIFYLEAVELOBBYREQUESTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Lobby_AddNotifyLeaveLobbyRequested function."]
pub type EOS_Lobby_AddNotifyLeaveLobbyRequestedOptions =
    _tagEOS_Lobby_AddNotifyLeaveLobbyRequestedOptions;
#[doc = " Output parameters for the EOS_Lobby_OnLeaveLobbyRequestedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Lobby_LeaveLobbyRequestedCallbackInfo {
    #[doc = " Context that was passed into EOS_Lobby_OnLeaveLobbyRequestedCallback"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who received the leave lobby notification."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Lobby ID associated with the leave lobby request."]
    pub LobbyId: EOS_LobbyId,
}
impl Default for _tagEOS_Lobby_LeaveLobbyRequestedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Lobby_OnLeaveLobbyRequestedCallback Function."]
pub type EOS_Lobby_LeaveLobbyRequestedCallbackInfo = _tagEOS_Lobby_LeaveLobbyRequestedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_Lobby_AddNotifyLeaveLobbyRequested.\n\n @param Data A pointer to EOS_Lobby_LeaveLobbyRequestedCallbackInfo containing the output information."]
pub type EOS_Lobby_OnLeaveLobbyRequestedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Lobby_LeaveLobbyRequestedCallbackInfo),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_UserInfoHandle {
    _unused: [u8; 0],
}
pub type EOS_HUserInfo = *mut EOS_UserInfoHandle;
#[doc = " Input parameters for the EOS_UserInfo_QueryUserInfo function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_QueryUserInfoOptions {
    #[doc = " API Version: Set this to EOS_USERINFO_QUERYUSERINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local player requesting the information"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the player whose information is being retrieved"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UserInfo_QueryUserInfoOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UserInfo_QueryUserInfo function."]
pub type EOS_UserInfo_QueryUserInfoOptions = _tagEOS_UserInfo_QueryUserInfoOptions;
#[doc = " Output parameters for the EOS_UserInfo_QueryUserInfo Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_QueryUserInfoCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_UserInfo_QueryUserInfo"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local player requesting the information"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the player whose information is being retrieved"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UserInfo_QueryUserInfoCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_UserInfo_QueryUserInfo Function."]
pub type EOS_UserInfo_QueryUserInfoCallbackInfo = _tagEOS_UserInfo_QueryUserInfoCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_UserInfo_QueryUserInfo\n @param Data A EOS_UserInfo_QueryUserInfoCallbackInfo containing the output information and result"]
pub type EOS_UserInfo_OnQueryUserInfoCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_UserInfo_QueryUserInfoCallbackInfo),
>;
#[doc = " Input parameters for the EOS_UserInfo_QueryUserInfoByDisplayName function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_QueryUserInfoByDisplayNameOptions {
    #[doc = " API Version: Set this to EOS_USERINFO_QUERYUSERINFOBYDISPLAYNAME_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local player requesting the information"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Raw display name (un-sanitized) of the player being queried"]
    pub DisplayName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_UserInfo_QueryUserInfoByDisplayNameOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UserInfo_QueryUserInfoByDisplayName function."]
pub type EOS_UserInfo_QueryUserInfoByDisplayNameOptions =
    _tagEOS_UserInfo_QueryUserInfoByDisplayNameOptions;
#[doc = " Output parameters for the EOS_UserInfo_QueryUserInfoByDisplayName Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_QueryUserInfoByDisplayNameCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_UserInfo_QueryUserInfoByDisplayName"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local player requesting the information"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the player whose information is being retrieved"]
    pub TargetUserId: EOS_EpicAccountId,
    #[doc = " Display name (un-sanitized) of the player being queried. This memory is only valid during the scope of the callback."]
    pub DisplayName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_UserInfo_QueryUserInfoByDisplayNameCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_UserInfo_QueryUserInfoByDisplayName Function."]
pub type EOS_UserInfo_QueryUserInfoByDisplayNameCallbackInfo =
    _tagEOS_UserInfo_QueryUserInfoByDisplayNameCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_UserInfo_QueryUserInfo\n @param Data A EOS_UserInfo_QueryUserInfoByDisplayNameCallbackInfo containing the output information and result"]
pub type EOS_UserInfo_OnQueryUserInfoByDisplayNameCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_UserInfo_QueryUserInfoByDisplayNameCallbackInfo),
>;
#[doc = " Input parameters for the EOS_UserInfo_QueryUserInfoByExternalAccount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_QueryUserInfoByExternalAccountOptions {
    #[doc = " API Version: Set this to EOS_USERINFO_QUERYUSERINFOBYEXTERNALACCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local player requesting the information"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " External account ID of the user whose information is being retrieved"]
    pub ExternalAccountId: *const ::std::os::raw::c_char,
    #[doc = " Account type of the external user info to query"]
    pub AccountType: EOS_EExternalAccountType,
}
impl Default for _tagEOS_UserInfo_QueryUserInfoByExternalAccountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UserInfo_QueryUserInfoByExternalAccount function."]
pub type EOS_UserInfo_QueryUserInfoByExternalAccountOptions =
    _tagEOS_UserInfo_QueryUserInfoByExternalAccountOptions;
#[doc = " Output parameters for the EOS_UserInfo_QueryUserInfoByExternalAccount Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_QueryUserInfoByExternalAccountCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_UserInfo_QueryUserInfoByExternalAccount"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Epic Account ID of the local player who requested the information"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " External account id of the user whose information has been retrieved"]
    pub ExternalAccountId: *const ::std::os::raw::c_char,
    #[doc = " Account type of the external account id"]
    pub AccountType: EOS_EExternalAccountType,
    #[doc = " Account ID of the player whose information has been retrieved"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UserInfo_QueryUserInfoByExternalAccountCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_UserInfo_QueryUserInfoByExternalAccount Function."]
pub type EOS_UserInfo_QueryUserInfoByExternalAccountCallbackInfo =
    _tagEOS_UserInfo_QueryUserInfoByExternalAccountCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_UserInfo_QueryUserInfoByExternalAccount\n @param Data A EOS_UserInfo_QueryUserInfoByExternalAccountCallbackInfo containing the output information and result"]
pub type EOS_UserInfo_OnQueryUserInfoByExternalAccountCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_UserInfo_QueryUserInfoByExternalAccountCallbackInfo),
>;
#[doc = " A structure that contains the user information. These structures are created by EOS_UserInfo_CopyUserInfo and must be passed to EOS_UserInfo_Release."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo {
    #[doc = " API Version: Set this to EOS_USERINFO_COPYUSERINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user"]
    pub UserId: EOS_EpicAccountId,
    #[doc = " The name of the owner's country. This may be null"]
    pub Country: *const ::std::os::raw::c_char,
    #[doc = " The display name (un-sanitized). This may be null"]
    pub DisplayName: *const ::std::os::raw::c_char,
    #[doc = " The ISO 639 language code for the user's preferred language. This may be null"]
    pub PreferredLanguage: *const ::std::os::raw::c_char,
    #[doc = " A nickname/alias for the target user assigned by the local user. This may be null"]
    pub Nickname: *const ::std::os::raw::c_char,
    #[doc = " The raw display name (sanitized). This may be null"]
    pub DisplayNameSanitized: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_UserInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " A structure that contains the user information. These structures are created by EOS_UserInfo_CopyUserInfo and must be passed to EOS_UserInfo_Release."]
pub type EOS_UserInfo = _tagEOS_UserInfo;
#[doc = " Input parameters for the EOS_UserInfo_CopyUserInfo function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_CopyUserInfoOptions {
    #[doc = " API Version: Set this to EOS_USERINFO_COPYUSERINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local player requesting the information"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the player whose information is being retrieved"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UserInfo_CopyUserInfoOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UserInfo_CopyUserInfo function."]
pub type EOS_UserInfo_CopyUserInfoOptions = _tagEOS_UserInfo_CopyUserInfoOptions;
unsafe extern "C" {
    #[doc = " @param UserInfo - The user info structure to release\n\n @see EOS_UserInfo\n @see EOS_UserInfo_CopyUserInfo"]
    pub fn EOS_UserInfo_Release(UserInfo: *mut EOS_UserInfo);
}
#[doc = " Contains information about a single external user info."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_ExternalUserInfo {
    #[doc = " API Version: Set this to EOS_USERINFO_EXTERNALUSERINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The type of the external account"]
    pub AccountType: EOS_EExternalAccountType,
    #[doc = " The ID of the external account. Can be null"]
    pub AccountId: *const ::std::os::raw::c_char,
    #[doc = " The display name of the external account (un-sanitized). Can be null"]
    pub DisplayName: *const ::std::os::raw::c_char,
    #[doc = " The display name of the external account (sanitized). Can be null"]
    pub DisplayNameSanitized: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_UserInfo_ExternalUserInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single external user info."]
pub type EOS_UserInfo_ExternalUserInfo = _tagEOS_UserInfo_ExternalUserInfo;
#[doc = " Input parameters for the EOS_UserInfo_GetExternalUserInfoCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_GetExternalUserInfoCountOptions {
    #[doc = " API Version: Set this to EOS_USERINFO_GETEXTERNALUSERINFOCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local player requesting the information"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the player whose information is being retrieved"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UserInfo_GetExternalUserInfoCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UserInfo_GetExternalUserInfoCount function."]
pub type EOS_UserInfo_GetExternalUserInfoCountOptions =
    _tagEOS_UserInfo_GetExternalUserInfoCountOptions;
#[doc = " Input parameters for the EOS_UserInfo_CopyExternalUserInfoByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_CopyExternalUserInfoByIndexOptions {
    #[doc = " API Version: Set this to EOS_USERINFO_COPYEXTERNALUSERINFOBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local player requesting the information"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the player whose information is being retrieved"]
    pub TargetUserId: EOS_EpicAccountId,
    #[doc = " Index of the external user info to retrieve from the cache"]
    pub Index: u32,
}
impl Default for _tagEOS_UserInfo_CopyExternalUserInfoByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UserInfo_CopyExternalUserInfoByIndex function."]
pub type EOS_UserInfo_CopyExternalUserInfoByIndexOptions =
    _tagEOS_UserInfo_CopyExternalUserInfoByIndexOptions;
#[doc = " Input parameters for the EOS_UserInfo_CopyExternalUserInfoByAccountType function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_CopyExternalUserInfoByAccountTypeOptions {
    #[doc = " API Version: Set this to EOS_USERINFO_COPYEXTERNALUSERINFOBYACCOUNTTYPE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local player requesting the information"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the player whose information is being retrieved"]
    pub TargetUserId: EOS_EpicAccountId,
    #[doc = " Account type of the external user info to retrieve from the cache"]
    pub AccountType: EOS_EExternalAccountType,
}
impl Default for _tagEOS_UserInfo_CopyExternalUserInfoByAccountTypeOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UserInfo_CopyExternalUserInfoByAccountType function."]
pub type EOS_UserInfo_CopyExternalUserInfoByAccountTypeOptions =
    _tagEOS_UserInfo_CopyExternalUserInfoByAccountTypeOptions;
#[doc = " Input parameters for the EOS_UserInfo_CopyExternalUserInfoByAccountId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_CopyExternalUserInfoByAccountIdOptions {
    #[doc = " API Version: Set this to EOS_USERINFO_COPYEXTERNALUSERINFOBYACCOUNTID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local player requesting the information"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the player whose information is being retrieved"]
    pub TargetUserId: EOS_EpicAccountId,
    #[doc = " The external account ID associated with the (external) user info to retrieve from the cache; cannot be null"]
    pub AccountId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_UserInfo_CopyExternalUserInfoByAccountIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UserInfo_CopyExternalUserInfoByAccountId function."]
pub type EOS_UserInfo_CopyExternalUserInfoByAccountIdOptions =
    _tagEOS_UserInfo_CopyExternalUserInfoByAccountIdOptions;
unsafe extern "C" {
    #[doc = " Release the memory associated with external user info. This must be called on data retrieved from\n EOS_UserInfo_CopyExternalUserInfoByIndexOptions.\n\n @param ExternalUserInfo The external user info to release.\n\n @see EOS_UserInfo_ExternalUserInfo\n @see EOS_UserInfo_CopyExternalUserInfoByIndex"]
    pub fn EOS_UserInfo_ExternalUserInfo_Release(
        ExternalUserInfo: *mut EOS_UserInfo_ExternalUserInfo,
    );
}
#[doc = " A structure that contains the user information. These structures are created by EOS_UserInfo_CopyBestDisplayName or EOS_UserInfo_CopyBestDisplayNameWithPlatform and must be passed to EOS_UserInfo_BestDisplayName_Release."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_BestDisplayName {
    #[doc = " API Version: Set this to EOS_USERINFO_BESTDISPLAYNAME_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user"]
    pub UserId: EOS_EpicAccountId,
    #[doc = " The display name (un-sanitized). This may be null"]
    pub DisplayName: *const ::std::os::raw::c_char,
    #[doc = " The raw display name (sanitized). This may be null"]
    pub DisplayNameSanitized: *const ::std::os::raw::c_char,
    #[doc = " A nickname/alias for the target user assigned by the local user. This may be null"]
    pub Nickname: *const ::std::os::raw::c_char,
    #[doc = " The platform type for the user which corresponds to the display name"]
    pub PlatformType: EOS_OnlinePlatformType,
}
impl Default for _tagEOS_UserInfo_BestDisplayName {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " A structure that contains the user information. These structures are created by EOS_UserInfo_CopyBestDisplayName or EOS_UserInfo_CopyBestDisplayNameWithPlatform and must be passed to EOS_UserInfo_BestDisplayName_Release."]
pub type EOS_UserInfo_BestDisplayName = _tagEOS_UserInfo_BestDisplayName;
unsafe extern "C" {
    #[doc = " Release the memory associated with EOS_UserInfo_BestDisplayName. This must be called on data retrieved from\n EOS_UserInfo_CopyBestDisplayNameWithPlatform.\n\n @param BestDisplayName - The EOS_UserInfo_BestDisplayName structure to release\n\n @see EOS_UserInfo_BestDisplayName\n @see EOS_UserInfo_CopyBestDisplayName\n @see EOS_UserInfo_CopyBestDisplayNameWithPlatform"]
    pub fn EOS_UserInfo_BestDisplayName_Release(BestDisplayName: *mut EOS_UserInfo_BestDisplayName);
}
#[doc = " Input parameters for the EOS_UserInfo_CopyBestDisplayName function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_CopyBestDisplayNameOptions {
    #[doc = " API Version: Set this to EOS_USERINFO_COPYBESTDISPLAYNAME_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local player requesting the information"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the player whose information is being retrieved"]
    pub TargetUserId: EOS_EpicAccountId,
}
impl Default for _tagEOS_UserInfo_CopyBestDisplayNameOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UserInfo_CopyBestDisplayName function."]
pub type EOS_UserInfo_CopyBestDisplayNameOptions = _tagEOS_UserInfo_CopyBestDisplayNameOptions;
#[doc = " Input parameters for the EOS_UserInfo_CopyBestDisplayNameWithPlatform function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_UserInfo_CopyBestDisplayNameWithPlatformOptions {
    #[doc = " API Version: Set this to EOS_USERINFO_COPYBESTDISPLAYNAMEWITHPLATFORM_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the local player requesting the information"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The Epic Account ID of the player whose information is being retrieved"]
    pub TargetUserId: EOS_EpicAccountId,
    #[doc = " The platform type of the player whose information is being retrieved"]
    pub TargetPlatformType: EOS_OnlinePlatformType,
}
impl Default for _tagEOS_UserInfo_CopyBestDisplayNameWithPlatformOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_UserInfo_CopyBestDisplayNameWithPlatform function."]
pub type EOS_UserInfo_CopyBestDisplayNameWithPlatformOptions =
    _tagEOS_UserInfo_CopyBestDisplayNameWithPlatformOptions;
#[doc = " Input parameters for the EOS_UserInfo_GetLocalPlatformType function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_UserInfo_GetLocalPlatformTypeOptions {
    #[doc = " API Version: Set this to EOS_USERINFO_GETLOCALPLATFORMTYPE_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_UserInfo_GetLocalPlatformType function."]
pub type EOS_UserInfo_GetLocalPlatformTypeOptions = _tagEOS_UserInfo_GetLocalPlatformTypeOptions;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_PlayerDataStorageHandle {
    _unused: [u8; 0],
}
pub type EOS_HPlayerDataStorage = *mut EOS_PlayerDataStorageHandle;
#[doc = " Metadata information for a specific file"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_FileMetadata {
    #[doc = " API Version: Set this to EOS_PLAYERDATASTORAGE_FILEMETADATA_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The total size of the file in bytes (Includes file header in addition to file contents)"]
    pub FileSizeBytes: u32,
    #[doc = " The MD5 Hash of the entire file (including additional file header), in hex digits"]
    pub MD5Hash: *const ::std::os::raw::c_char,
    #[doc = " The file's name"]
    pub Filename: *const ::std::os::raw::c_char,
    #[doc = " The POSIX timestamp when the file was saved last time or EOS_PLAYERDATASTORAGE_TIME_UNDEFINED if the time is undefined.\n It will be undefined after a file is written and uploaded at first before a query operation is completed."]
    pub LastModifiedTime: i64,
    #[doc = " The size of data (payload) in file in unencrypted (original) form."]
    pub UnencryptedDataSizeBytes: u32,
}
impl Default for _tagEOS_PlayerDataStorage_FileMetadata {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Metadata information for a specific file"]
pub type EOS_PlayerDataStorage_FileMetadata = _tagEOS_PlayerDataStorage_FileMetadata;
unsafe extern "C" {
    #[doc = " Free the memory used by the file metadata"]
    pub fn EOS_PlayerDataStorage_FileMetadata_Release(
        FileMetadata: *mut EOS_PlayerDataStorage_FileMetadata,
    );
}
#[doc = " Input data for the EOS_PlayerDataStorage_QueryFile function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_QueryFileOptions {
    #[doc = " API Version: Set this to EOS_PLAYERDATASTORAGE_QUERYFILE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user requesting file metadata"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The name of the file being queried"]
    pub Filename: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_PlayerDataStorage_QueryFileOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the EOS_PlayerDataStorage_QueryFile function"]
pub type EOS_PlayerDataStorage_QueryFileOptions = _tagEOS_PlayerDataStorage_QueryFileOptions;
#[doc = " Data containing information about a query file request"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_QueryFileCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful request, other codes indicate an error"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into the file query request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who initiated this request"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_PlayerDataStorage_QueryFileCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing information about a query file request"]
pub type EOS_PlayerDataStorage_QueryFileCallbackInfo =
    _tagEOS_PlayerDataStorage_QueryFileCallbackInfo;
#[doc = " Callback for when EOS_PlayerDataStorage_QueryFile completes"]
pub type EOS_PlayerDataStorage_OnQueryFileCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_PlayerDataStorage_QueryFileCallbackInfo),
>;
#[doc = " Input data for the EOS_PlayerDataStorage_QueryFileList function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_QueryFileListOptions {
    #[doc = " API Version: Set this to EOS_PLAYERDATASTORAGE_QUERYFILELIST_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who requested file metadata"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_PlayerDataStorage_QueryFileListOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the EOS_PlayerDataStorage_QueryFileList function"]
pub type EOS_PlayerDataStorage_QueryFileListOptions =
    _tagEOS_PlayerDataStorage_QueryFileListOptions;
#[doc = " Data containing information about a query file list request"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_QueryFileListCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful request, other codes indicate an error"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into the file query request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who initiated this request"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " A count of files that were found, if successful"]
    pub FileCount: u32,
}
impl Default for _tagEOS_PlayerDataStorage_QueryFileListCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing information about a query file list request"]
pub type EOS_PlayerDataStorage_QueryFileListCallbackInfo =
    _tagEOS_PlayerDataStorage_QueryFileListCallbackInfo;
#[doc = " Callback for when EOS_PlayerDataStorage_QueryFileList completes"]
pub type EOS_PlayerDataStorage_OnQueryFileListCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_PlayerDataStorage_QueryFileListCallbackInfo),
>;
#[doc = " Input data for the EOS_PlayerDataStorage_GetFileMetadataCount function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_GetFileMetadataCountOptions {
    #[doc = " API Version: Set this to EOS_PLAYERDATASTORAGE_GETFILEMETADATACOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who is requesting file metadata"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_PlayerDataStorage_GetFileMetadataCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the EOS_PlayerDataStorage_GetFileMetadataCount function"]
pub type EOS_PlayerDataStorage_GetFileMetadataCountOptions =
    _tagEOS_PlayerDataStorage_GetFileMetadataCountOptions;
#[doc = " Input data for the CopyFileMetadataAtIndex function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_CopyFileMetadataAtIndexOptions {
    #[doc = " API Version: Set this to EOS_PLAYERDATASTORAGE_COPYFILEMETADATAATINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who is requesting file metadata"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The index to get data for"]
    pub Index: u32,
}
impl Default for _tagEOS_PlayerDataStorage_CopyFileMetadataAtIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the CopyFileMetadataAtIndex function"]
pub type EOS_PlayerDataStorage_CopyFileMetadataAtIndexOptions =
    _tagEOS_PlayerDataStorage_CopyFileMetadataAtIndexOptions;
#[doc = " Input data for the CopyFileMetadataByFilename function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_CopyFileMetadataByFilenameOptions {
    #[doc = " API Version: Set this to EOS_PLAYERDATASTORAGE_COPYFILEMETADATABYFILENAME_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who is requesting file metadata"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The file's name to get data for"]
    pub Filename: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_PlayerDataStorage_CopyFileMetadataByFilenameOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the CopyFileMetadataByFilename function"]
pub type EOS_PlayerDataStorage_CopyFileMetadataByFilenameOptions =
    _tagEOS_PlayerDataStorage_CopyFileMetadataByFilenameOptions;
#[doc = " Input data for the EOS_PlayerDataStorage_DuplicateFile function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_DuplicateFileOptions {
    #[doc = " API Version: Set this to EOS_PLAYERDATASTORAGE_DUPLICATEFILE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who authorized the duplication of the requested file; must be the original file's owner"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The name of the existing file to duplicate"]
    pub SourceFilename: *const ::std::os::raw::c_char,
    #[doc = " The name of the new file"]
    pub DestinationFilename: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_PlayerDataStorage_DuplicateFileOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the EOS_PlayerDataStorage_DuplicateFile function"]
pub type EOS_PlayerDataStorage_DuplicateFileOptions =
    _tagEOS_PlayerDataStorage_DuplicateFileOptions;
#[doc = " Data containing the result information for a duplicate file request"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_DuplicateFileCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful request, other codes indicate an error"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into the file duplicate request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who initiated this request"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_PlayerDataStorage_DuplicateFileCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result information for a duplicate file request"]
pub type EOS_PlayerDataStorage_DuplicateFileCallbackInfo =
    _tagEOS_PlayerDataStorage_DuplicateFileCallbackInfo;
#[doc = " Callback for when EOS_PlayerDataStorage_DuplicateFile completes"]
pub type EOS_PlayerDataStorage_OnDuplicateFileCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_PlayerDataStorage_DuplicateFileCallbackInfo),
>;
#[doc = " Input data for the EOS_PlayerDataStorage_DeleteFile function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_DeleteFileOptions {
    #[doc = " API Version: Set this to EOS_PLAYERDATASTORAGE_DELETEFILE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who authorizes deletion of the file; must be the file's owner"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The name of the file to delete"]
    pub Filename: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_PlayerDataStorage_DeleteFileOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the EOS_PlayerDataStorage_DeleteFile function"]
pub type EOS_PlayerDataStorage_DeleteFileOptions = _tagEOS_PlayerDataStorage_DeleteFileOptions;
#[doc = " Data containing the result information for a delete file request"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_DeleteFileCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful request, other codes indicate an error"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into the file deletion request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who initiated this request"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_PlayerDataStorage_DeleteFileCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result information for a delete file request"]
pub type EOS_PlayerDataStorage_DeleteFileCallbackInfo =
    _tagEOS_PlayerDataStorage_DeleteFileCallbackInfo;
#[doc = " Callback for when EOS_PlayerDataStorage_DeleteFile completes"]
pub type EOS_PlayerDataStorage_OnDeleteFileCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_PlayerDataStorage_DeleteFileCallbackInfo),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_PlayerDataStorageFileTransferRequestHandle {
    _unused: [u8; 0],
}
#[doc = " Handle type to a File Request"]
pub type EOS_HPlayerDataStorageFileTransferRequest =
    *mut EOS_PlayerDataStorageFileTransferRequestHandle;
unsafe extern "C" {
    #[doc = " Free the memory used by a cloud-storage file request handle. This will not cancel a request in progress."]
    pub fn EOS_PlayerDataStorageFileTransferRequest_Release(
        PlayerDataStorageFileTransferHandle: EOS_HPlayerDataStorageFileTransferRequest,
    );
}
#[doc = " Data containing the information about a file transfer in progress (or one that has completed)"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_FileTransferProgressCallbackInfo {
    #[doc = " Client-specified data passed into the file request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who initiated this request"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The file name of the file being transferred"]
    pub Filename: *const ::std::os::raw::c_char,
    #[doc = " Amount of bytes transferred so far in this request, out of TotalFileSizeBytes"]
    pub BytesTransferred: u32,
    #[doc = " The total size of the file being transferred (Includes file header in addition to file contents, can be slightly more than expected)"]
    pub TotalFileSizeBytes: u32,
}
impl Default for _tagEOS_PlayerDataStorage_FileTransferProgressCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the information about a file transfer in progress (or one that has completed)"]
pub type EOS_PlayerDataStorage_FileTransferProgressCallbackInfo =
    _tagEOS_PlayerDataStorage_FileTransferProgressCallbackInfo;
#[doc = " Callback for when there is a progress update for a file transfer in progress"]
pub type EOS_PlayerDataStorage_OnFileTransferProgressCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_PlayerDataStorage_FileTransferProgressCallbackInfo),
>;
#[doc = " Signifies the data was read successfully, and we should continue to the next chunk if possible"]
pub const EOS_PlayerDataStorage_EReadResult_EOS_RR_ContinueReading:
    EOS_PlayerDataStorage_EReadResult = 1;
#[doc = " Signifies there was a failure reading the data, and the request should end"]
pub const EOS_PlayerDataStorage_EReadResult_EOS_RR_FailRequest: EOS_PlayerDataStorage_EReadResult =
    2;
#[doc = " Signifies the request should be canceled, but not due to an error"]
pub const EOS_PlayerDataStorage_EReadResult_EOS_RR_CancelRequest:
    EOS_PlayerDataStorage_EReadResult = 3;
pub const EOS_PlayerDataStorage_EReadResult___EOS_PlayerDataStorage_EReadResult_PAD_INT32__:
    EOS_PlayerDataStorage_EReadResult = 2147483647;
#[doc = " Return results for EOS_PlayerDataStorage_OnReadFileDataCallback callbacks to return"]
pub type EOS_PlayerDataStorage_EReadResult = ::std::os::raw::c_int;
#[doc = " Data containing data for a chunk of a file being read"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_ReadFileDataCallbackInfo {
    #[doc = " Client-specified data passed into the file request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who initiated this request"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The file name being read"]
    pub Filename: *const ::std::os::raw::c_char,
    #[doc = " The total file size of the file being read"]
    pub TotalFileSizeBytes: u32,
    #[doc = " Is this chunk the last chunk of data?"]
    pub bIsLastChunk: EOS_Bool,
    #[doc = " The length of DataChunk in bytes that can be safely read"]
    pub DataChunkLengthBytes: u32,
    #[doc = " Pointer to the start of data to be read"]
    pub DataChunk: *const ::std::os::raw::c_void,
}
impl Default for _tagEOS_PlayerDataStorage_ReadFileDataCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing data for a chunk of a file being read"]
pub type EOS_PlayerDataStorage_ReadFileDataCallbackInfo =
    _tagEOS_PlayerDataStorage_ReadFileDataCallbackInfo;
#[doc = " Callback for when we have data ready to be read from the requested file. It is undefined how often this will be called during a single tick.\n\n @param Data Struct containing a chunk of data to read, as well as some metadata for the file being read\n @return The result of the read operation. If this value is not EOS_RR_ContinueReading, this callback will not be called again for the same request"]
pub type EOS_PlayerDataStorage_OnReadFileDataCallback = ::std::option::Option<
    unsafe extern "C" fn(
        Data: *const EOS_PlayerDataStorage_ReadFileDataCallbackInfo,
    ) -> EOS_PlayerDataStorage_EReadResult,
>;
#[doc = " Input data for the EOS_PlayerDataStorage_ReadFile function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_ReadFileOptions {
    #[doc = " API Version: Set this to EOS_PLAYERDATASTORAGE_READFILE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who is reading the requested file"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The file name to read; this file must already exist"]
    pub Filename: *const ::std::os::raw::c_char,
    #[doc = " The maximum amount of data in bytes should be available to read in a single EOS_PlayerDataStorage_OnReadFileDataCallback call"]
    pub ReadChunkLengthBytes: u32,
    #[doc = " Callback function that handles data as it comes in, and can stop the transfer early"]
    pub ReadFileDataCallback: EOS_PlayerDataStorage_OnReadFileDataCallback,
    #[doc = " Optional callback function to be informed of download progress, if the file is not already locally cached; if provided, this will be called at least once before completion if the request is successfully started"]
    pub FileTransferProgressCallback: EOS_PlayerDataStorage_OnFileTransferProgressCallback,
}
impl Default for _tagEOS_PlayerDataStorage_ReadFileOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the EOS_PlayerDataStorage_ReadFile function"]
pub type EOS_PlayerDataStorage_ReadFileOptions = _tagEOS_PlayerDataStorage_ReadFileOptions;
#[doc = " Data containing the result of a read file request"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_ReadFileCallbackInfo {
    #[doc = " The result code for the operation.\n EOS_Success: The request was successful.\n EOS_Canceled: The request was canceled.\n EOS_TooManyRequests: There are too many requests in progress for the local user at this time.\n EOS_AlreadyPending: There is another requests in progress for the specified file by this user.\n EOS_CacheDirectoryMissing: The cache directory was not set when calling EOS_Platform_Create.\n EOS_CacheDirectoryInvalid: The cache directory provided when calling EOS_Platform_Create was invalid.\n EOS_PlayerDataStorage_UserThrottled: There were too many requests to the Data Storage service recently by the local user. The application must wait some time before trying again.\n EOS_PlayerDataStorage_EncryptionKeyNotSet: The encryption key value was not set when calling EOS_Platform_Create.\n EOS_PlayerDataStorage_FileCorrupted: The downloaded or cached file was corrupted or invalid in some way. What exactly is wrong with the file is returned in the logs (potentially retryable).\n EOS_InvalidState: The read operation is not allowed (e.g. when application is suspended).\n EOS_UnexpectedError: An unexpected error occurred either downloading, or reading the downloaded file. This most commonly means there were file IO issues such as: permission issues, disk is full, etc. (potentially retryable)"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into the file read request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who initiated this request"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The filename of the file that has been finished reading"]
    pub Filename: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_PlayerDataStorage_ReadFileCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result of a read file request"]
pub type EOS_PlayerDataStorage_ReadFileCallbackInfo =
    _tagEOS_PlayerDataStorage_ReadFileCallbackInfo;
#[doc = " Callback for when EOS_PlayerDataStorage_ReadFile completes"]
pub type EOS_PlayerDataStorage_OnReadFileCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_PlayerDataStorage_ReadFileCallbackInfo),
>;
#[doc = " Signifies the data was written successfully, and we should write the data the file"]
pub const EOS_PlayerDataStorage_EWriteResult_EOS_WR_ContinueWriting:
    EOS_PlayerDataStorage_EWriteResult = 1;
#[doc = " Signifies all data has now been written successfully, and we should upload the data to the cloud"]
pub const EOS_PlayerDataStorage_EWriteResult_EOS_WR_CompleteRequest:
    EOS_PlayerDataStorage_EWriteResult = 2;
#[doc = " Signifies there was a failure writing the data, and the request should end"]
pub const EOS_PlayerDataStorage_EWriteResult_EOS_WR_FailRequest:
    EOS_PlayerDataStorage_EWriteResult = 3;
#[doc = " Signifies the request should be canceled, but not due to an error"]
pub const EOS_PlayerDataStorage_EWriteResult_EOS_WR_CancelRequest:
    EOS_PlayerDataStorage_EWriteResult = 4;
pub const EOS_PlayerDataStorage_EWriteResult___EOS_PlayerDataStorage_EWriteResult_PAD_INT32__:
    EOS_PlayerDataStorage_EWriteResult = 2147483647;
#[doc = " Return results for EOS_PlayerDataStorage_OnWriteFileDataCallback callbacks to return"]
pub type EOS_PlayerDataStorage_EWriteResult = ::std::os::raw::c_int;
#[doc = " Data containing data for a chunk of a file being written"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_WriteFileDataCallbackInfo {
    #[doc = " Client-specified data passed into the file write request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who initiated this request"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The file name that is being written to"]
    pub Filename: *const ::std::os::raw::c_char,
    #[doc = " The maximum amount of data in bytes that can be written safely to DataBuffer"]
    pub DataBufferLengthBytes: u32,
}
impl Default for _tagEOS_PlayerDataStorage_WriteFileDataCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing data for a chunk of a file being written"]
pub type EOS_PlayerDataStorage_WriteFileDataCallbackInfo =
    _tagEOS_PlayerDataStorage_WriteFileDataCallbackInfo;
#[doc = " Callback for when we are ready to get more data to be written into the requested file. It is undefined how often this will be called during a single tick.\n\n @param Data Struct containing metadata for the file being written to, as well as the max length in bytes that can be safely written to DataBuffer\n @param OutDataBuffer A buffer to write data into, to be appended to the end of the file that is being written to. The maximum length of this value is provided in the Info parameter. The number of bytes written to this buffer should be set in OutDataWritten.\n @param OutDataWritten The length of the data written to OutDataBuffer. This must be less than or equal than the DataBufferLengthBytes provided in the Info parameter\n @return The result of the write operation. If this value is not EOS_WR_ContinueWriting, this callback will not be called again for the same request. If this is set to EOS_WR_FailRequest or EOS_WR_CancelRequest, all data written during the request will not be saved"]
pub type EOS_PlayerDataStorage_OnWriteFileDataCallback = ::std::option::Option<
    unsafe extern "C" fn(
        Data: *const EOS_PlayerDataStorage_WriteFileDataCallbackInfo,
        OutDataBuffer: *mut ::std::os::raw::c_void,
        OutDataWritten: *mut u32,
    ) -> EOS_PlayerDataStorage_EWriteResult,
>;
#[doc = " Input data for the EOS_PlayerDataStorage_WriteFile function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_WriteFileOptions {
    #[doc = " API Version: Set this to EOS_PLAYERDATASTORAGE_WRITEFILE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user who is writing the requested file to the cloud"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The name of the file to write; if this file already exists, the contents will be replaced if the write request completes successfully"]
    pub Filename: *const ::std::os::raw::c_char,
    #[doc = " Requested maximum amount of data (in bytes) that can be written to the file per tick"]
    pub ChunkLengthBytes: u32,
    #[doc = " Callback function that provides chunks of data to be written into the requested file"]
    pub WriteFileDataCallback: EOS_PlayerDataStorage_OnWriteFileDataCallback,
    #[doc = " Optional callback function to inform the application of upload progress; will be called at least once if set"]
    pub FileTransferProgressCallback: EOS_PlayerDataStorage_OnFileTransferProgressCallback,
}
impl Default for _tagEOS_PlayerDataStorage_WriteFileOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the EOS_PlayerDataStorage_WriteFile function"]
pub type EOS_PlayerDataStorage_WriteFileOptions = _tagEOS_PlayerDataStorage_WriteFileOptions;
#[doc = " The result information for a request to write data to a file"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_WriteFileCallbackInfo {
    #[doc = " The result code for the operation.\n EOS_Success: The request was successful.\n EOS_Canceled: The request was canceled.\n EOS_TooManyRequests: There are too many requests in progress for the local user at this time.\n EOS_AlreadyPending: There is another requests in progress for the specified file by this user.\n EOS_CacheDirectoryMissing: The cache directory was not set when calling EOS_Platform_Create.\n EOS_CacheDirectoryInvalid: The cache directory provided when calling EOS_Platform_Create was invalid.\n EOS_PlayerDataStorage_UserThrottled: There were too many requests to the Data Storage service recently by the local user. The application must wait some time before trying again.\n EOS_PlayerDataStorage_EncryptionKeyNotSet: The encryption key value was not set when calling EOS_Platform_Create.\n EOS_InvalidState: The read operation is not allowed (e.g. when application is suspended).\n EOS_UnexpectedError: An unexpected error occurred either downloading, or reading the downloaded file. This most commonly means there were file IO issues such as: permission issues, disk is full, etc. (potentially retryable)"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into the file write request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local user who initiated this request"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The file name that is being written to"]
    pub Filename: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_PlayerDataStorage_WriteFileCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " The result information for a request to write data to a file"]
pub type EOS_PlayerDataStorage_WriteFileCallbackInfo =
    _tagEOS_PlayerDataStorage_WriteFileCallbackInfo;
#[doc = " Callback for when EOS_PlayerDataStorage_WriteFile completes"]
pub type EOS_PlayerDataStorage_OnWriteFileCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_PlayerDataStorage_WriteFileCallbackInfo),
>;
#[doc = " Input data for the EOS_TitleStorage_DeleteCache function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_DeleteCacheOptions {
    #[doc = " API Version: Set this to EOS_PLAYERDATASTORAGE_DELETECACHE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the local user who is deleting his cache"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_PlayerDataStorage_DeleteCacheOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the EOS_TitleStorage_DeleteCache function"]
pub type EOS_PlayerDataStorage_DeleteCacheOptions = _tagEOS_PlayerDataStorage_DeleteCacheOptions;
#[doc = " Structure containing the result of a delete cache operation"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_PlayerDataStorage_DeleteCacheCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful request, other codes indicate an error"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into the delete cache request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Product User ID of the local user who initiated this request"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_PlayerDataStorage_DeleteCacheCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing the result of a delete cache operation"]
pub type EOS_PlayerDataStorage_DeleteCacheCallbackInfo =
    _tagEOS_PlayerDataStorage_DeleteCacheCallbackInfo;
#[doc = " Callback for when EOS_PlayerDataStorage_DeleteCache completes"]
pub type EOS_PlayerDataStorage_OnDeleteCacheCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_PlayerDataStorage_DeleteCacheCallbackInfo),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_TitleStorageHandle {
    _unused: [u8; 0],
}
pub type EOS_HTitleStorage = *mut EOS_TitleStorageHandle;
#[doc = " Metadata information for a specific file"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_FileMetadata {
    #[doc = " API Version: Set this to EOS_TITLESTORAGE_FILEMETADATA_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The total size of the file in bytes (Includes file header in addition to file contents)."]
    pub FileSizeBytes: u32,
    #[doc = " The MD5 Hash of the entire file (including additional file header), in hex digits"]
    pub MD5Hash: *const ::std::os::raw::c_char,
    #[doc = " The file's name"]
    pub Filename: *const ::std::os::raw::c_char,
    #[doc = " The size of data (payload) in file in unencrypted (original) form."]
    pub UnencryptedDataSizeBytes: u32,
}
impl Default for _tagEOS_TitleStorage_FileMetadata {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Metadata information for a specific file"]
pub type EOS_TitleStorage_FileMetadata = _tagEOS_TitleStorage_FileMetadata;
unsafe extern "C" {
    #[doc = " Free the memory used by the file metadata"]
    pub fn EOS_TitleStorage_FileMetadata_Release(FileMetadata: *mut EOS_TitleStorage_FileMetadata);
}
#[doc = " Input data for the EOS_TitleStorage_QueryFile function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_QueryFileOptions {
    #[doc = " API Version: Set this to EOS_TITLESTORAGE_QUERYFILE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the local user requesting file metadata (optional)"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The requested file's name"]
    pub Filename: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_TitleStorage_QueryFileOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the EOS_TitleStorage_QueryFile function"]
pub type EOS_TitleStorage_QueryFileOptions = _tagEOS_TitleStorage_QueryFileOptions;
#[doc = " Structure containing information about a query file request"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_QueryFileCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful request, other codes indicate an error"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into the file query request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Product User ID of the local user who initiated this request (optional, will only be present in case it was provided during operation start)"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_TitleStorage_QueryFileCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about a query file request"]
pub type EOS_TitleStorage_QueryFileCallbackInfo = _tagEOS_TitleStorage_QueryFileCallbackInfo;
#[doc = " Callback for when EOS_TitleStorage_QueryFile completes"]
pub type EOS_TitleStorage_OnQueryFileCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_TitleStorage_QueryFileCallbackInfo),
>;
#[doc = " Input data for the EOS_TitleStorage_QueryFileList function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_QueryFileListOptions {
    #[doc = " API Version: Set this to EOS_TITLESTORAGE_QUERYFILELIST_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the local user who requested file metadata (optional)"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " List of tags to use for lookup."]
    pub ListOfTags: *const *const ::std::os::raw::c_char,
    #[doc = " Number of tags specified in ListOfTags"]
    pub ListOfTagsCount: u32,
}
impl Default for _tagEOS_TitleStorage_QueryFileListOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the EOS_TitleStorage_QueryFileList function"]
pub type EOS_TitleStorage_QueryFileListOptions = _tagEOS_TitleStorage_QueryFileListOptions;
#[doc = " Structure containing information about a query file list request"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_QueryFileListCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful request, other codes indicate an error"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into the file query request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Product User ID of the local user who initiated this request (optional, will only be present in case it was provided during operation start)"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " A count of files that were found, if successful"]
    pub FileCount: u32,
}
impl Default for _tagEOS_TitleStorage_QueryFileListCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing information about a query file list request"]
pub type EOS_TitleStorage_QueryFileListCallbackInfo =
    _tagEOS_TitleStorage_QueryFileListCallbackInfo;
#[doc = " Callback for when EOS_TitleStorage_QueryFileList completes"]
pub type EOS_TitleStorage_OnQueryFileListCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_TitleStorage_QueryFileListCallbackInfo),
>;
#[doc = " Input data for the EOS_TitleStorage_GetFileMetadataCount function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_GetFileMetadataCountOptions {
    #[doc = " API Version: Set this to EOS_TITLESTORAGE_GETFILEMETADATACOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the local user who is requesting file metadata (optional)"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_TitleStorage_GetFileMetadataCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the EOS_TitleStorage_GetFileMetadataCount function"]
pub type EOS_TitleStorage_GetFileMetadataCountOptions =
    _tagEOS_TitleStorage_GetFileMetadataCountOptions;
#[doc = " Input data for the CopyFileMetadataAtIndex function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_CopyFileMetadataAtIndexOptions {
    #[doc = " API Version: Set this to EOS_TITLESTORAGE_COPYFILEMETADATAATINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the local user who is requesting file metadata (optional)"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The index to get data for"]
    pub Index: u32,
}
impl Default for _tagEOS_TitleStorage_CopyFileMetadataAtIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the CopyFileMetadataAtIndex function"]
pub type EOS_TitleStorage_CopyFileMetadataAtIndexOptions =
    _tagEOS_TitleStorage_CopyFileMetadataAtIndexOptions;
#[doc = " Input data for the CopyFileMetadataByFilename function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_CopyFileMetadataByFilenameOptions {
    #[doc = " API Version: Set this to EOS_TITLESTORAGE_COPYFILEMETADATABYFILENAME_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the local user who is requesting file metadata (optional)"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The file's name to get data for"]
    pub Filename: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_TitleStorage_CopyFileMetadataByFilenameOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the CopyFileMetadataByFilename function"]
pub type EOS_TitleStorage_CopyFileMetadataByFilenameOptions =
    _tagEOS_TitleStorage_CopyFileMetadataByFilenameOptions;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_TitleStorageFileTransferRequestHandle {
    _unused: [u8; 0],
}
#[doc = " Handle type to a File Request"]
pub type EOS_HTitleStorageFileTransferRequest = *mut EOS_TitleStorageFileTransferRequestHandle;
unsafe extern "C" {
    #[doc = " Free the memory used by a cloud-storage file request handle. This will not cancel a request in progress."]
    pub fn EOS_TitleStorageFileTransferRequest_Release(
        TitleStorageFileTransferHandle: EOS_HTitleStorageFileTransferRequest,
    );
}
#[doc = " Structure containing the information about a file transfer in progress (or one that has completed)"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_FileTransferProgressCallbackInfo {
    #[doc = " Client-specified data passed into the file request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Product User ID of the local user who initiated this request (optional, will only be present in case it was provided during operation start)"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The file name of the file being transferred"]
    pub Filename: *const ::std::os::raw::c_char,
    #[doc = " Amount of bytes transferred so far in this request, out of TotalFileSizeBytes"]
    pub BytesTransferred: u32,
    #[doc = " The total size of the file being transferred (Includes file header in addition to file contents, can be slightly more than expected)"]
    pub TotalFileSizeBytes: u32,
}
impl Default for _tagEOS_TitleStorage_FileTransferProgressCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing the information about a file transfer in progress (or one that has completed)"]
pub type EOS_TitleStorage_FileTransferProgressCallbackInfo =
    _tagEOS_TitleStorage_FileTransferProgressCallbackInfo;
#[doc = " Callback for when there is a progress update for a file transfer in progress"]
pub type EOS_TitleStorage_OnFileTransferProgressCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_TitleStorage_FileTransferProgressCallbackInfo),
>;
#[doc = " Signifies the data was read successfully, and we should continue to the next chunk if possible"]
pub const EOS_TitleStorage_EReadResult_EOS_TS_RR_ContinueReading: EOS_TitleStorage_EReadResult = 1;
#[doc = " Signifies there was a failure reading the data, and the request should end"]
pub const EOS_TitleStorage_EReadResult_EOS_TS_RR_FailRequest: EOS_TitleStorage_EReadResult = 2;
#[doc = " Signifies the request should be canceled, but not due to an error"]
pub const EOS_TitleStorage_EReadResult_EOS_TS_RR_CancelRequest: EOS_TitleStorage_EReadResult = 3;
pub const EOS_TitleStorage_EReadResult___EOS_TitleStorage_EReadResult_PAD_INT32__:
    EOS_TitleStorage_EReadResult = 2147483647;
#[doc = " Return results for EOS_TitleStorage_OnReadFileDataCallback callbacks"]
pub type EOS_TitleStorage_EReadResult = ::std::os::raw::c_int;
#[doc = " Structure containing data for a chunk of a file being read"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_ReadFileDataCallbackInfo {
    #[doc = " Client-specified data passed into the file request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Product User ID of the local user who initiated this request (optional, will only be present in case it was provided during operation start)"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The file name being read"]
    pub Filename: *const ::std::os::raw::c_char,
    #[doc = " The total file size of the file being read"]
    pub TotalFileSizeBytes: u32,
    #[doc = " Is this chunk the last chunk of data?"]
    pub bIsLastChunk: EOS_Bool,
    #[doc = " The length of DataChunk in bytes that can be safely read"]
    pub DataChunkLengthBytes: u32,
    #[doc = " Pointer to the start of data to be read"]
    pub DataChunk: *const ::std::os::raw::c_void,
}
impl Default for _tagEOS_TitleStorage_ReadFileDataCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing data for a chunk of a file being read"]
pub type EOS_TitleStorage_ReadFileDataCallbackInfo = _tagEOS_TitleStorage_ReadFileDataCallbackInfo;
#[doc = " Callback for when we have data ready to be read from the requested file. It is undefined how often this will be called during a single tick.\n\n @param Data Struct containing a chunk of data to read, as well as some metadata for the file being read\n @return The result of the read operation. If this value is not EOS_TS_RR_ContinueReading, this callback will not be called again for the same request"]
pub type EOS_TitleStorage_OnReadFileDataCallback = ::std::option::Option<
    unsafe extern "C" fn(
        Data: *const EOS_TitleStorage_ReadFileDataCallbackInfo,
    ) -> EOS_TitleStorage_EReadResult,
>;
#[doc = " Input data for the EOS_TitleStorage_ReadFile function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_ReadFileOptions {
    #[doc = " API Version: Set this to EOS_TITLESTORAGE_READFILE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the local user who is reading the requested file (optional)"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The file name to read; this file must already exist"]
    pub Filename: *const ::std::os::raw::c_char,
    #[doc = " The maximum amount of data in bytes should be available to read in a single EOS_TitleStorage_OnReadFileDataCallback call"]
    pub ReadChunkLengthBytes: u32,
    #[doc = " Callback function to handle copying read data"]
    pub ReadFileDataCallback: EOS_TitleStorage_OnReadFileDataCallback,
    #[doc = " Optional callback function to be informed of download progress, if the file is not already locally cached. If set, this will be called at least once before completion if the request is successfully started"]
    pub FileTransferProgressCallback: EOS_TitleStorage_OnFileTransferProgressCallback,
}
impl Default for _tagEOS_TitleStorage_ReadFileOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the EOS_TitleStorage_ReadFile function"]
pub type EOS_TitleStorage_ReadFileOptions = _tagEOS_TitleStorage_ReadFileOptions;
#[doc = " Structure containing the result of a read file request"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_ReadFileCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful request, other codes indicate an error"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into the file read request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Product User ID of the local user who initiated this request (optional, will only be present in case it was provided during operation start)"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The filename of the file that has been finished reading"]
    pub Filename: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_TitleStorage_ReadFileCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing the result of a read file request"]
pub type EOS_TitleStorage_ReadFileCallbackInfo = _tagEOS_TitleStorage_ReadFileCallbackInfo;
#[doc = " Callback for when EOS_TitleStorage_ReadFile completes"]
pub type EOS_TitleStorage_OnReadFileCompleteCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_TitleStorage_ReadFileCallbackInfo)>;
#[doc = " Input data for the EOS_TitleStorage_DeleteCache function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_DeleteCacheOptions {
    #[doc = " API Version: Set this to EOS_TITLESTORAGE_DELETECACHE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the local user who is deleting his cache (optional)"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_TitleStorage_DeleteCacheOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input data for the EOS_TitleStorage_DeleteCache function"]
pub type EOS_TitleStorage_DeleteCacheOptions = _tagEOS_TitleStorage_DeleteCacheOptions;
#[doc = " Structure containing the result of a delete cache operation"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_TitleStorage_DeleteCacheCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful request, other codes indicate an error"]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into the delete cache request"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Product User ID of the local user who initiated this request (optional, will only be present in case it was provided during operation start)"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_TitleStorage_DeleteCacheCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing the result of a delete cache operation"]
pub type EOS_TitleStorage_DeleteCacheCallbackInfo = _tagEOS_TitleStorage_DeleteCacheCallbackInfo;
#[doc = " Callback for when EOS_TitleStorage_DeleteCache completes"]
pub type EOS_TitleStorage_OnDeleteCacheCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_TitleStorage_DeleteCacheCallbackInfo),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_ConnectHandle {
    _unused: [u8; 0],
}
pub type EOS_HConnect = *mut EOS_ConnectHandle;
#[doc = " A structure that contains external login credentials.\n\n This is part of the input structure EOS_Connect_LoginOptions.\n\n @see EOS_EExternalCredentialType\n @see EOS_Connect_Login"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_Credentials {
    #[doc = " API Version: Set this to EOS_CONNECT_CREDENTIALS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " External token associated with the user logging in."]
    pub Token: *const ::std::os::raw::c_char,
    #[doc = " Type of external login; identifies the auth method to use."]
    pub Type: EOS_EExternalCredentialType,
}
impl Default for _tagEOS_Connect_Credentials {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " A structure that contains external login credentials.\n\n This is part of the input structure EOS_Connect_LoginOptions.\n\n @see EOS_EExternalCredentialType\n @see EOS_Connect_Login"]
pub type EOS_Connect_Credentials = _tagEOS_Connect_Credentials;
#[doc = " Additional information about the local user."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_UserLoginInfo {
    #[doc = " API Version: Set this to EOS_CONNECT_USERLOGININFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The user's display name on the identity provider systems as UTF-8 encoded null-terminated string.\n The length of the name can be at maximum up to EOS_CONNECT_USERLOGININFO_DISPLAYNAME_MAX_LENGTH bytes.\n\n As the display name passed here is client-controlled and not part of user authentication tokens,\n it is only treated as non-authoritative informational data to be used by some of the feature services.\n For example displaying player names in Leaderboards rankings."]
    pub DisplayName: *const ::std::os::raw::c_char,
    #[doc = " Nintendo Service Account ID Token (NSA ID).\n\n This field is required to be set and only used when running on the Nintendo Switch device,\n and the user is being authenticated using any other credential type than EOS_ECT_NINTENDO_NSA_ID_TOKEN.\n\n In order to use the Lobbies and Sessions interfaces, a valid NSA ID Token is required to be provided\n for the active local Nintendo Switch user. Otherwise, attempting to use either of the Lobbies or\n Sessions interfaces will return the EOS_Permission_OnlinePlayRestricted error result."]
    pub NsaIdToken: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Connect_UserLoginInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Additional information about the local user."]
pub type EOS_Connect_UserLoginInfo = _tagEOS_Connect_UserLoginInfo;
#[doc = " Input parameters for the EOS_Connect_Login function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_LoginOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_LOGIN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Credentials specified for a given login method"]
    pub Credentials: *const EOS_Connect_Credentials,
    #[doc = " Additional information about the local user.\n\n This field is required to be set and used when authenticating the user using Amazon, Apple, Google, Nintendo Account, Nintendo Service Account, Oculus or the Device ID feature login.\n It is also required for using the Lobbies and Sessions interfaces when running on the Nintendo Switch device, and using any other credential type than EOS_ECT_NINTENDO_NSA_ID_TOKEN.\n In all other cases, set this field to NULL."]
    pub UserLoginInfo: *const EOS_Connect_UserLoginInfo,
}
impl Default for _tagEOS_Connect_LoginOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_Login function."]
pub type EOS_Connect_LoginOptions = _tagEOS_Connect_LoginOptions;
#[doc = " Output parameters for the EOS_Connect_Login function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_LoginCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Connect_Login."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " If login was successful, this is the Product User ID of the local player that logged in."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " If the user was not found with credentials passed into EOS_Connect_Login,\n this continuance token can be passed to either EOS_Connect_CreateUser\n or EOS_Connect_LinkAccount to continue the flow."]
    pub ContinuanceToken: EOS_ContinuanceToken,
}
impl Default for _tagEOS_Connect_LoginCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Connect_Login function."]
pub type EOS_Connect_LoginCallbackInfo = _tagEOS_Connect_LoginCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Connect_Login.\n\n @param Data A EOS_Connect_LoginCallbackInfo containing the output information and result."]
pub type EOS_Connect_OnLoginCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Connect_LoginCallbackInfo)>;
#[doc = " Input parameters for the EOS_Connect_Logout API"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_LogoutOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_LOGOUT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the player to logout"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_LogoutOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_Logout API"]
pub type EOS_Connect_LogoutOptions = _tagEOS_Connect_LogoutOptions;
#[doc = " Output parameters for the EOS_Connect_Logout function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_LogoutCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Connect_Logout."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the player that is being logged out."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_LogoutCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Connect_Logout function."]
pub type EOS_Connect_LogoutCallbackInfo = _tagEOS_Connect_LogoutCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Connect_Logout\n\n @param Data A EOS_Connect_LogoutCallbackInfo containing the result."]
pub type EOS_Connect_OnLogoutCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Connect_LogoutCallbackInfo)>;
#[doc = " Input parameters for the EOS_Connect_CreateUser function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_CreateUserOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_CREATEUSER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Continuance token from previous call to EOS_Connect_Login"]
    pub ContinuanceToken: EOS_ContinuanceToken,
}
impl Default for _tagEOS_Connect_CreateUserOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_CreateUser function."]
pub type EOS_Connect_CreateUserOptions = _tagEOS_Connect_CreateUserOptions;
#[doc = " Output parameters for the EOS_Connect_CreateUser function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_CreateUserCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Connect_CreateUser."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " If the operation succeeded, this is the Product User ID of the local user who was created."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_CreateUserCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Connect_CreateUser function."]
pub type EOS_Connect_CreateUserCallbackInfo = _tagEOS_Connect_CreateUserCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Connect_CreateUser.\n\n @param Data A EOS_Connect_CreateUserCallbackInfo containing the output information and result."]
pub type EOS_Connect_OnCreateUserCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Connect_CreateUserCallbackInfo)>;
#[doc = " Input parameters for the EOS_Connect_LinkAccount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_LinkAccountOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_LINKACCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The existing logged in product user for which to link the external account described by the continuance token."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Continuance token from previous call to EOS_Connect_Login."]
    pub ContinuanceToken: EOS_ContinuanceToken,
}
impl Default for _tagEOS_Connect_LinkAccountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_LinkAccount function."]
pub type EOS_Connect_LinkAccountOptions = _tagEOS_Connect_LinkAccountOptions;
#[doc = " Output parameters for the EOS_Connect_LinkAccount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_LinkAccountCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Connect_LinkAccount."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the existing, logged-in user whose account was linked (on success)."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_LinkAccountCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Connect_LinkAccount function."]
pub type EOS_Connect_LinkAccountCallbackInfo = _tagEOS_Connect_LinkAccountCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Connect_LinkAccount.\n\n @param Data A EOS_Connect_LinkAccountCallbackInfo containing the output information and result."]
pub type EOS_Connect_OnLinkAccountCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Connect_LinkAccountCallbackInfo)>;
#[doc = " Input parameters for the EOS_Connect_UnlinkAccount Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_UnlinkAccountOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_UNLINKACCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Existing logged in product user that is subject for the unlinking operation.\n The external account that was used to login to the product user will be unlinked from the owning keychain.\n\n On a successful operation, the product user will be logged out as the external account used to authenticate the user was unlinked from the owning keychain."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_UnlinkAccountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_UnlinkAccount Function."]
pub type EOS_Connect_UnlinkAccountOptions = _tagEOS_Connect_UnlinkAccountOptions;
#[doc = " Output parameters for the EOS_Connect_UnlinkAccount Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_UnlinkAccountCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Connect_UnlinkAccount."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The product user that was subject for the unlinking operation.\n\n On a successful operation, the local authentication session for the product user will have been invalidated.\n As such, the LocalUserId value will no longer be valid in any context unless the user is logged into it again."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_UnlinkAccountCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Connect_UnlinkAccount Function."]
pub type EOS_Connect_UnlinkAccountCallbackInfo = _tagEOS_Connect_UnlinkAccountCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Connect_UnlinkAccount.\n\n @param Data A EOS_Connect_UnlinkAccountCallbackInfo containing the output information and result"]
pub type EOS_Connect_OnUnlinkAccountCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Connect_UnlinkAccountCallbackInfo)>;
#[doc = " Input parameters for the EOS_Connect_CreateDeviceId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_CreateDeviceIdOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_CREATEDEVICEID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " A freeform text description identifying the device type and model,\n which can be used in account linking management to allow the player\n and customer support to identify different devices linked to an EOS\n user keychain. For example 'iPhone 6S' or 'PC Windows'.\n\n The input string must be in UTF-8 character format, with a maximum\n length of 64 characters. Longer string will be silently truncated.\n\n This field is required to be present."]
    pub DeviceModel: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Connect_CreateDeviceIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_CreateDeviceId function."]
pub type EOS_Connect_CreateDeviceIdOptions = _tagEOS_Connect_CreateDeviceIdOptions;
#[doc = " Output parameters for the EOS_Connect_CreateDeviceId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_CreateDeviceIdCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Connect_CreateDeviceId."]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Connect_CreateDeviceIdCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Connect_CreateDeviceId function."]
pub type EOS_Connect_CreateDeviceIdCallbackInfo = _tagEOS_Connect_CreateDeviceIdCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Connect_CreateDeviceId.\n\n @param Data A EOS_Connect_CreateDeviceIdCallbackInfo containing the output information and result."]
pub type EOS_Connect_OnCreateDeviceIdCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Connect_CreateDeviceIdCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Connect_DeleteDeviceId function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Connect_DeleteDeviceIdOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_DELETEDEVICEID_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Connect_DeleteDeviceId function."]
pub type EOS_Connect_DeleteDeviceIdOptions = _tagEOS_Connect_DeleteDeviceIdOptions;
#[doc = " Output parameters for the EOS_Connect_DeleteDeviceId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_DeleteDeviceIdCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Connect_DeleteDeviceId"]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Connect_DeleteDeviceIdCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Connect_DeleteDeviceId function."]
pub type EOS_Connect_DeleteDeviceIdCallbackInfo = _tagEOS_Connect_DeleteDeviceIdCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Connect_DeleteDeviceId.\n\n @param Data A EOS_Connect_DeleteDeviceIdCallbackInfo containing the output information and result."]
pub type EOS_Connect_OnDeleteDeviceIdCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Connect_DeleteDeviceIdCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Connect_TransferDeviceIdAccount Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_TransferDeviceIdAccountOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_TRANSFERDEVICEIDACCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The primary product user id, currently logged in, that is already associated with a real external user account (such as Epic Games, PlayStation(TM)Network, Xbox Live and other).\n\n The account linking keychain that owns this product user will be preserved and receive\n the Device ID login credentials under it."]
    pub PrimaryLocalUserId: EOS_ProductUserId,
    #[doc = " The product user id, currently logged in, that has been originally created using the anonymous local Device ID login type,\n and whose Device ID login will be transferred to the keychain of the PrimaryLocalUserId."]
    pub LocalDeviceUserId: EOS_ProductUserId,
    #[doc = " Specifies which EOS_ProductUserId (i.e. game progression) will be preserved in the operation.\n\n After a successful transfer operation, subsequent logins using the same external account or\n the same local Device ID login will return user session for the ProductUserIdToPreserve.\n\n Set to either PrimaryLocalUserId or LocalDeviceUserId."]
    pub ProductUserIdToPreserve: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_TransferDeviceIdAccountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_TransferDeviceIdAccount Function."]
pub type EOS_Connect_TransferDeviceIdAccountOptions =
    _tagEOS_Connect_TransferDeviceIdAccountOptions;
#[doc = " Output parameters for the EOS_Connect_TransferDeviceIdAccount Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_TransferDeviceIdAccountCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Connect_TransferDeviceIdAccount."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The ProductUserIdToPreserve that was passed to the original EOS_Connect_TransferDeviceIdAccount call.\n\n On successful operation, this EOS_ProductUserId will have a valid authentication session\n and the other EOS_ProductUserId value has been discarded and lost forever.\n\n The application should remove any registered notification callbacks for the discarded EOS_ProductUserId as obsolete."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_TransferDeviceIdAccountCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Connect_TransferDeviceIdAccount Function."]
pub type EOS_Connect_TransferDeviceIdAccountCallbackInfo =
    _tagEOS_Connect_TransferDeviceIdAccountCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Connect_TransferDeviceIdAccount.\n\n @param Data A EOS_Connect_TransferDeviceIdAccountCallbackInfo containing the output information and result."]
pub type EOS_Connect_OnTransferDeviceIdAccountCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Connect_TransferDeviceIdAccountCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Connect_QueryExternalAccountMappings function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_QueryExternalAccountMappingsOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_QUERYEXTERNALACCOUNTMAPPINGS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the existing, logged-in user who is querying account mappings."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " External auth service supplying the account IDs in string form."]
    pub AccountIdType: EOS_EExternalAccountType,
    #[doc = " An array of external account IDs to map to the product user ID representation."]
    pub ExternalAccountIds: *mut *const ::std::os::raw::c_char,
    #[doc = " Number of account IDs to query."]
    pub ExternalAccountIdCount: u32,
}
impl Default for _tagEOS_Connect_QueryExternalAccountMappingsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_QueryExternalAccountMappings function."]
pub type EOS_Connect_QueryExternalAccountMappingsOptions =
    _tagEOS_Connect_QueryExternalAccountMappingsOptions;
#[doc = " Output parameters for the EOS_Connect_QueryExternalAccountMappings function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_QueryExternalAccountMappingsCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Connect_QueryExternalAccountMappings."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the existing, logged-in user who made the request."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_QueryExternalAccountMappingsCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Connect_QueryExternalAccountMappings function."]
pub type EOS_Connect_QueryExternalAccountMappingsCallbackInfo =
    _tagEOS_Connect_QueryExternalAccountMappingsCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Connect_QueryExternalAccountMappings.\n\n @param Data A EOS_Connect_QueryExternalAccountMappingsCallbackInfo containing the output information and result."]
pub type EOS_Connect_OnQueryExternalAccountMappingsCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Connect_QueryExternalAccountMappingsCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Connect_GetExternalAccountMapping function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_GetExternalAccountMappingsOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_GETEXTERNALACCOUNTMAPPING_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the existing, logged-in user who is querying account mappings."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " External auth service supplying the account IDs in string form."]
    pub AccountIdType: EOS_EExternalAccountType,
    #[doc = " Target user to retrieve the mapping for, as an external account ID."]
    pub TargetExternalUserId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Connect_GetExternalAccountMappingsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_GetExternalAccountMapping function."]
pub type EOS_Connect_GetExternalAccountMappingsOptions =
    _tagEOS_Connect_GetExternalAccountMappingsOptions;
#[doc = " Input parameters for the EOS_Connect_QueryProductUserIdMappings function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_QueryProductUserIdMappingsOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_QUERYPRODUCTUSERIDMAPPINGS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Game Clients set this field to the Product User ID of the local authenticated user querying account mappings.\n Game Servers set this field to NULL. Usage is allowed given that the configured client policy for server credentials permit it."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Deprecated - all external mappings are included in this call, it is no longer necessary to specify this value."]
    pub AccountIdType_DEPRECATED: EOS_EExternalAccountType,
    #[doc = " An array of Product User IDs to query for the given external account representation."]
    pub ProductUserIds: *mut EOS_ProductUserId,
    #[doc = " Number of Product User IDs to query."]
    pub ProductUserIdCount: u32,
}
impl Default for _tagEOS_Connect_QueryProductUserIdMappingsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_QueryProductUserIdMappings function."]
pub type EOS_Connect_QueryProductUserIdMappingsOptions =
    _tagEOS_Connect_QueryProductUserIdMappingsOptions;
#[doc = " Output parameters for the EOS_Connect_QueryProductUserIdMappings function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_QueryProductUserIdMappingsCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Connect_QueryProductUserIdMappings."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The local Product User ID that was passed with the input options."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_QueryProductUserIdMappingsCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Connect_QueryProductUserIdMappings function."]
pub type EOS_Connect_QueryProductUserIdMappingsCallbackInfo =
    _tagEOS_Connect_QueryProductUserIdMappingsCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Connect_QueryProductUserIdMappings.\n\n @param Data A EOS_Connect_QueryProductUserIdMappingsCallbackInfo containing the output information and result."]
pub type EOS_Connect_OnQueryProductUserIdMappingsCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Connect_QueryProductUserIdMappingsCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Connect_GetProductUserIdMapping function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_GetProductUserIdMappingOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_GETPRODUCTUSERIDMAPPING_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the existing, logged-in user that is querying account mappings."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " External auth service mapping to retrieve."]
    pub AccountIdType: EOS_EExternalAccountType,
    #[doc = " The Product User ID of the user whose information is being requested."]
    pub TargetProductUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_GetProductUserIdMappingOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_GetProductUserIdMapping function."]
pub type EOS_Connect_GetProductUserIdMappingOptions =
    _tagEOS_Connect_GetProductUserIdMappingOptions;
#[doc = " Input parameters for the EOS_Connect_GetProductUserExternalAccountCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_GetProductUserExternalAccountCountOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_GETPRODUCTUSEREXTERNALACCOUNTCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID to look for when getting external account info count from the cache."]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_GetProductUserExternalAccountCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_GetProductUserExternalAccountCount function."]
pub type EOS_Connect_GetProductUserExternalAccountCountOptions =
    _tagEOS_Connect_GetProductUserExternalAccountCountOptions;
#[doc = " Input parameters for the EOS_Connect_CopyProductUserExternalAccountByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_CopyProductUserExternalAccountByIndexOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_COPYPRODUCTUSEREXTERNALACCOUNTBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID to look for when copying external account info from the cache."]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Index of the external account info to retrieve from the cache."]
    pub ExternalAccountInfoIndex: u32,
}
impl Default for _tagEOS_Connect_CopyProductUserExternalAccountByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_CopyProductUserExternalAccountByIndex function."]
pub type EOS_Connect_CopyProductUserExternalAccountByIndexOptions =
    _tagEOS_Connect_CopyProductUserExternalAccountByIndexOptions;
#[doc = " Input parameters for the EOS_Connect_CopyProductUserExternalAccountByAccountType function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_CopyProductUserExternalAccountByAccountTypeOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_COPYPRODUCTUSEREXTERNALACCOUNTBYACCOUNTTYPE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID to look for when copying external account info from the cache."]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " External auth service account type to look for when copying external account info from the cache."]
    pub AccountIdType: EOS_EExternalAccountType,
}
impl Default for _tagEOS_Connect_CopyProductUserExternalAccountByAccountTypeOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_CopyProductUserExternalAccountByAccountType function."]
pub type EOS_Connect_CopyProductUserExternalAccountByAccountTypeOptions =
    _tagEOS_Connect_CopyProductUserExternalAccountByAccountTypeOptions;
#[doc = " Input parameters for the EOS_Connect_CopyProductUserExternalAccountByAccountId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_CopyProductUserExternalAccountByAccountIdOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_COPYPRODUCTUSEREXTERNALACCOUNTBYACCOUNTID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID to look for when copying external account info from the cache."]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " External auth service account ID to look for when copying external account info from the cache."]
    pub AccountId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Connect_CopyProductUserExternalAccountByAccountIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_CopyProductUserExternalAccountByAccountId function."]
pub type EOS_Connect_CopyProductUserExternalAccountByAccountIdOptions =
    _tagEOS_Connect_CopyProductUserExternalAccountByAccountIdOptions;
#[doc = " Input parameters for the EOS_Connect_CopyProductUserInfo function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_CopyProductUserInfoOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_COPYPRODUCTUSERINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product user ID to look for when copying external account info from the cache."]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_CopyProductUserInfoOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_CopyProductUserInfo function."]
pub type EOS_Connect_CopyProductUserInfoOptions = _tagEOS_Connect_CopyProductUserInfoOptions;
#[doc = " Contains information about an external account linked with a Product User ID."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_ExternalAccountInfo {
    #[doc = " API Version: Set this to EOS_CONNECT_EXTERNALACCOUNTINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the target user."]
    pub ProductUserId: EOS_ProductUserId,
    #[doc = " Display name, can be null if not set."]
    pub DisplayName: *const ::std::os::raw::c_char,
    #[doc = " External account ID.\n\n May be set to an empty string if the AccountIdType of another user belongs\n to different account system than the local user's authenticated account.\n The availability of this field is dependent on account system specifics."]
    pub AccountId: *const ::std::os::raw::c_char,
    #[doc = " The identity provider that owns the external account."]
    pub AccountIdType: EOS_EExternalAccountType,
    #[doc = " The POSIX timestamp for the time the user last logged in, or EOS_CONNECT_TIME_UNDEFINED."]
    pub LastLoginTime: i64,
}
impl Default for _tagEOS_Connect_ExternalAccountInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about an external account linked with a Product User ID."]
pub type EOS_Connect_ExternalAccountInfo = _tagEOS_Connect_ExternalAccountInfo;
unsafe extern "C" {
    #[doc = " Release the memory associated with an external account info. This must be called on data retrieved from\n EOS_Connect_CopyProductUserExternalAccountByIndex, EOS_Connect_CopyProductUserExternalAccountByAccountType,\n EOS_Connect_CopyProductUserExternalAccountByAccountId or EOS_Connect_CopyProductUserInfo.\n\n @param ExternalAccountInfo The external account info data to release.\n\n @see EOS_Connect_CopyProductUserExternalAccountByIndex\n @see EOS_Connect_CopyProductUserExternalAccountByAccountType\n @see EOS_Connect_CopyProductUserExternalAccountByAccountId\n @see EOS_Connect_CopyProductUserInfo"]
    pub fn EOS_Connect_ExternalAccountInfo_Release(
        ExternalAccountInfo: *mut EOS_Connect_ExternalAccountInfo,
    );
}
#[doc = " Structure containing information for the auth expiration notification callback."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Connect_AddNotifyAuthExpirationOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_ADDNOTIFYAUTHEXPIRATION_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Structure containing information for the auth expiration notification callback."]
pub type EOS_Connect_AddNotifyAuthExpirationOptions =
    _tagEOS_Connect_AddNotifyAuthExpirationOptions;
#[doc = " Output parameters for the EOS_Connect_OnAuthExpirationCallback function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_AuthExpirationCallbackInfo {
    #[doc = " Context that was passed into EOS_Connect_AddNotifyAuthExpiration."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local player whose status has changed."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_AuthExpirationCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Connect_OnAuthExpirationCallback function."]
pub type EOS_Connect_AuthExpirationCallbackInfo = _tagEOS_Connect_AuthExpirationCallbackInfo;
#[doc = " Function prototype definition for notifications that come from EOS_Connect_AddNotifyAuthExpiration.\n\n @param Data A EOS_Connect_AuthExpirationCallbackInfo containing the output information and result."]
pub type EOS_Connect_OnAuthExpirationCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Connect_AuthExpirationCallbackInfo),
>;
#[doc = " Structure containing information or the connect user login status change callback."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Connect_AddNotifyLoginStatusChangedOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_ADDNOTIFYLOGINSTATUSCHANGED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Structure containing information or the connect user login status change callback."]
pub type EOS_Connect_AddNotifyLoginStatusChangedOptions =
    _tagEOS_Connect_AddNotifyLoginStatusChangedOptions;
#[doc = " Output parameters for the EOS_Connect_OnLoginStatusChangedCallback function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_LoginStatusChangedCallbackInfo {
    #[doc = " Context that was passed into EOS_Connect_AddNotifyLoginStatusChanged."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the local player whose status has changed."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The status prior to the change."]
    pub PreviousStatus: EOS_ELoginStatus,
    #[doc = " The status at the time of the notification."]
    pub CurrentStatus: EOS_ELoginStatus,
}
impl Default for _tagEOS_Connect_LoginStatusChangedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Connect_OnLoginStatusChangedCallback function."]
pub type EOS_Connect_LoginStatusChangedCallbackInfo =
    _tagEOS_Connect_LoginStatusChangedCallbackInfo;
#[doc = " Function prototype definition for notifications that come from EOS_Connect_AddNotifyLoginStatusChanged.\n\n @param Data A EOS_Connect_LoginStatusChangedCallbackInfo containing the output information and result."]
pub type EOS_Connect_OnLoginStatusChangedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Connect_LoginStatusChangedCallbackInfo),
>;
#[doc = " A structure that contains an ID token.\n These structures are created by EOS_Connect_CopyIdToken and must be passed to EOS_Connect_IdToken_Release."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_IdToken {
    #[doc = " API Version: Set this to EOS_CONNECT_IDTOKEN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID described by the ID token.\n Use EOS_ProductUserId_FromString to populate this field when validating a received ID token."]
    pub ProductUserId: EOS_ProductUserId,
    #[doc = " The ID token as a Json Web Token (JWT) string."]
    pub JsonWebToken: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Connect_IdToken {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " A structure that contains an ID token.\n These structures are created by EOS_Connect_CopyIdToken and must be passed to EOS_Connect_IdToken_Release."]
pub type EOS_Connect_IdToken = _tagEOS_Connect_IdToken;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_Connect_IdToken structure. This must be called on data retrieved from EOS_Connect_CopyIdToken.\n\n @param IdToken The ID token structure to be released.\n\n @see EOS_Connect_IdToken\n @see EOS_Connect_CopyIdToken"]
    pub fn EOS_Connect_IdToken_Release(IdToken: *mut EOS_Connect_IdToken);
}
#[doc = " Input parameters for the EOS_Connect_CopyIdToken function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_CopyIdTokenOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_COPYIDTOKEN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The local Product User ID whose ID token should be copied."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Connect_CopyIdTokenOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_CopyIdToken function."]
pub type EOS_Connect_CopyIdTokenOptions = _tagEOS_Connect_CopyIdTokenOptions;
#[doc = " Input parameters for the EOS_Connect_VerifyIdToken function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_VerifyIdTokenOptions {
    #[doc = " API Version: Set this to EOS_CONNECT_VERIFYIDTOKEN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID token to verify.\n Use EOS_ProductUserId_FromString to populate the ProductUserId field of this struct."]
    pub IdToken: *const EOS_Connect_IdToken,
}
impl Default for _tagEOS_Connect_VerifyIdTokenOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Connect_VerifyIdToken function."]
pub type EOS_Connect_VerifyIdTokenOptions = _tagEOS_Connect_VerifyIdTokenOptions;
#[doc = " Output parameters for the EOS_Connect_VerifyIdToken Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Connect_VerifyIdTokenCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Connect_VerifyIdToken"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID associated with the ID token."]
    pub ProductUserId: EOS_ProductUserId,
    #[doc = " Flag set to indicate whether account information is available.\n Applications must always first check this value to be set before attempting\n to read the AccountType, AccountId, Platform and DeviceType fields.\n\n This flag is always false for users that authenticated using EOS Connect Device ID."]
    pub bIsAccountInfoPresent: EOS_Bool,
    #[doc = " The identity provider that the user authenticated with to EOS Connect.\n\n If bIsAccountInfoPresent is set, this field describes the external account type."]
    pub AccountIdType: EOS_EExternalAccountType,
    #[doc = " The external account ID of the authenticated user.\n\n This value may be set to an empty string."]
    pub AccountId: *const ::std::os::raw::c_char,
    #[doc = " Platform that the user is connected from.\n\n This value may be set to an empty string."]
    pub Platform: *const ::std::os::raw::c_char,
    #[doc = " Identifies the device type that the user is connected from.\n Can be used to securely verify that the user is connected through a real Console device.\n\n This value may be set to an empty string."]
    pub DeviceType: *const ::std::os::raw::c_char,
    #[doc = " Client ID of the authorized client."]
    pub ClientId: *const ::std::os::raw::c_char,
    #[doc = " Product ID."]
    pub ProductId: *const ::std::os::raw::c_char,
    #[doc = " Sandbox ID."]
    pub SandboxId: *const ::std::os::raw::c_char,
    #[doc = " Deployment ID."]
    pub DeploymentId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Connect_VerifyIdTokenCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Connect_VerifyIdToken Function."]
pub type EOS_Connect_VerifyIdTokenCallbackInfo = _tagEOS_Connect_VerifyIdTokenCallbackInfo;
#[doc = " Function prototype definition for callbacks passed into EOS_Connect_VerifyIdToken.\n\n @param Data A EOS_Connect_VerifyIdTokenCallbackInfo containing the output information and result."]
pub type EOS_Connect_OnVerifyIdTokenCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Connect_VerifyIdTokenCallbackInfo)>;
unsafe extern "C" {
    #[doc = " Login/Authenticate given a valid set of external auth credentials.\n\n @param Options structure containing the external account credentials and type to use during the login operation.\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate.\n @param CompletionDelegate a callback that is fired when the login operation completes, either successfully or in error.\n\n @see EOS_Connect_LoginOptions\n @see EOS_Connect_OnLoginCallback"]
    pub fn EOS_Connect_Login(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_LoginOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Connect_OnLoginCallback,
    );
}
unsafe extern "C" {
    #[doc = " Logout a currently logged in user.\n NOTE: Access tokens for Product User IDs cannot be revoked. This operation really just cleans up state for the Product User ID and locally discards any associated access token.\n\n @param Options Structure containing the input parameters for the operation\n @param ClientData Arbitrary data that is passed back to the caller in the CompletionDelegate.\n @param CompletionDelegate A callback that is fired when the operation completes, either successfully or in error.\n\n @see EOS_Connect_LogoutOptions\n @see EOS_Connect_OnLogoutCallback"]
    pub fn EOS_Connect_Logout(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_LogoutOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Connect_OnLogoutCallback,
    );
}
unsafe extern "C" {
    #[doc = " Create an account association with the Epic Online Service as a product user given their external auth credentials.\n\n @param Options structure containing a continuance token from a \"user not found\" response during Login (always try login first).\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate.\n @param CompletionDelegate a callback that is fired when the create operation completes, either successfully or in error.\n\n @see EOS_Connect_CreateUserOptions\n @see EOS_Connect_OnCreateUserCallback"]
    pub fn EOS_Connect_CreateUser(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_CreateUserOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Connect_OnCreateUserCallback,
    );
}
unsafe extern "C" {
    #[doc = " Link a set of external auth credentials with an existing product user on the Epic Online Service.\n\n @param Options structure containing a continuance token from a \"user not found\" response during Login (always try login first) and a currently logged in user not already associated with this external auth provider.\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate.\n @param CompletionDelegate a callback that is fired when the link operation completes, either successfully or in error.\n\n @see EOS_Connect_LinkAccountOptions\n @see EOS_Connect_OnLinkAccountCallback"]
    pub fn EOS_Connect_LinkAccount(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_LinkAccountOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Connect_OnLinkAccountCallback,
    );
}
unsafe extern "C" {
    #[doc = " Unlink external auth credentials from the owning keychain of a logged in product user.\n\n This function allows recovering the user from scenarios where they have accidentally proceeded to creating\n a new product user for the local native user account, instead of linking it with an existing keychain that\n they have previously created by playing the game (or another game owned by the organization) on another platform.\n\n In such scenario, after the initial platform login and a new product user creation, the user wishes to re-login\n using other set of external auth credentials to connect with their existing game progression data. In order to\n allow automatic login also on the current platform, they will need to unlink the accidentally created new keychain\n and product user and then use the EOS_Connect_Login and EOS_Connect_LinkAccount APIs to link the local native platform\n account with that previously created existing product user and its owning keychain.\n\n In another scenario, the user may simply want to disassociate the account that they have logged in with from the current\n keychain that it is linked with, perhaps to link it against another keychain or to separate the game progressions again.\n\n In order to protect against account theft, it is only possible to unlink user accounts that have been authenticated\n and logged in to the product user in the current session. This prevents a malicious actor from gaining access to one\n of the linked accounts and using it to remove all other accounts linked with the keychain. This also prevents a malicious\n actor from replacing the unlinked account with their own corresponding account on the same platform, as the unlinking\n operation will ensure that any existing authentication session cannot be used to re-link and overwrite the entry without\n authenticating with one of the other linked accounts in the keychain. These restrictions limit the potential attack surface\n related to account theft scenarios.\n\n @param Options structure containing operation input parameters.\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate.\n @param CompletionDelegate a callback that is fired when the unlink operation completes, either successfully or in error.\n\n @see EOS_Connect_UnlinkAccountOptions\n @see EOS_Connect_OnUnlinkAccountCallback"]
    pub fn EOS_Connect_UnlinkAccount(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_UnlinkAccountOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Connect_OnUnlinkAccountCallback,
    );
}
unsafe extern "C" {
    #[doc = " Create a new unique pseudo-account that can be used to identify the current user profile on the local device.\n\n This function is intended to be used by mobile games and PC games that wish to allow\n a new user to start playing without requiring to login to the game using any user identity.\n In addition to this, the Device ID feature is used to automatically login the local user\n also when they have linked at least one external user account(s) with the local Device ID.\n\n It is possible to link many devices with the same user's account keyring using the Device ID feature.\n\n Linking a device later or immediately with a real user account will ensure that the player\n will not lose their progress if they switch devices or lose the device at some point,\n as they will be always able to login with one of their linked real accounts and also link\n another new device with the user account associations keychain. Otherwise, without having\n at least one permanent user account linked to the Device ID, the player would lose all of their\n game data and progression permanently should something happen to their device or the local\n user profile on the device.\n\n After a successful one-time CreateDeviceId operation, the game can login the local user\n automatically on subsequent game starts with EOS_Connect_Login using the EOS_ECT_DEVICEID_ACCESS_TOKEN\n credentials type. If a Device ID already exists for the local user on the device then EOS_DuplicateNotAllowed\n error result is returned and the caller should proceed to calling EOS_Connect_Login directly.\n\n @param Options structure containing operation input parameters.\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate.\n @param CompletionDelegate a callback that is fired when the create operation completes, either successfully or in error.\n\n @see EOS_Connect_CreateDeviceIdOptions\n @see EOS_Connect_OnCreateDeviceIdCallback"]
    pub fn EOS_Connect_CreateDeviceId(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_CreateDeviceIdOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Connect_OnCreateDeviceIdCallback,
    );
}
unsafe extern "C" {
    #[doc = " Delete any existing Device ID access credentials for the current user profile on the local device.\n\n The deletion is permanent and it is not possible to recover lost game data and progression\n if the Device ID had not been linked with at least one real external user account.\n\n On Android and iOS devices, uninstalling the application will automatically delete any local\n Device ID credentials created by the application.\n\n On Desktop platforms (Linux, macOS, Windows), Device ID credentials are not automatically deleted.\n Applications may re-use existing Device ID credentials for the local OS user when the application is\n re-installed, or call the DeleteDeviceId API on the first run to ensure a fresh start for the user.\n\n @param Options structure containing operation input parameters\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate a callback that is fired when the delete operation completes, either successfully or in error\n\n @see EOS_Connect_DeleteDeviceIdOptions\n @see EOS_Connect_OnDeleteDeviceIdCallback"]
    pub fn EOS_Connect_DeleteDeviceId(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_DeleteDeviceIdOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Connect_OnDeleteDeviceIdCallback,
    );
}
unsafe extern "C" {
    #[doc = " Transfer a Device ID pseudo-account and the product user associated with it into another\n keychain linked with real user accounts (such as Epic Games, PlayStation(TM)Network, Xbox Live, and other).\n\n This function allows transferring a product user, i.e. the local user's game progression\n backend data from a Device ID owned keychain into a keychain with real user accounts\n linked to it. The transfer of Device ID owned product user into a keychain of real user\n accounts allows persisting the user's game data on the backend in the event that they\n would lose access to the local device or otherwise switch to another device or platform.\n\n This function is only applicable in the situation of where the local user first plays\n the game using the anonymous Device ID login, then later logs in using a real user\n account that they have also already used to play the same game or another game under the\n same organization within Epic Online Services. In such situation, while normally the login\n attempt with a real user account would return EOS_InvalidUser and an EOS_ContinuanceToken\n and allow calling the EOS_Connect_LinkAccount API to link it with the Device ID's keychain,\n instead the login operation succeeds and finds an existing user because the association\n already exists. Because the user cannot have two product users simultaneously to play with,\n the game should prompt the user to choose which profile to keep and which one to discard\n permanently. Based on the user choice, the game may then proceed to transfer the Device ID\n login into the keychain that is persistent and backed by real user accounts, and if the user\n chooses so, move the product user as well into the destination keychain and overwrite the\n existing previous product user with it. To clarify, moving the product user with the Device ID\n login in this way into a persisted keychain allows to preserve the so far only locally persisted\n game progression and thus protect the user against a case where they lose access to the device.\n\n On success, the completion callback will return the preserved EOS_ProductUserId that remains\n logged in while the discarded EOS_ProductUserId has been invalidated and deleted permanently.\n Consecutive logins using the existing Device ID login type or the external account will\n connect the user to the same backend data belonging to the preserved EOS_ProductUserId.\n\n Example walkthrough: Cross-platform mobile game using the anonymous Device ID login.\n\n For onboarding new users, the game will attempt to always automatically login the local user\n by calling EOS_Connect_Login using the EOS_ECT_DEVICEID_ACCESS_TOKEN login type. If the local\n Device ID credentials are not found, and the game wants a frictionless entry for the first time\n user experience, the game will automatically call EOS_Connect_CreateDeviceId to create new\n Device ID pseudo-account and then login the local user into it. Consecutive game starts will\n thus automatically login the user to their locally persisted Device ID account.\n\n The user starts playing anonymously using the Device ID login type and makes significant game progress.\n Later, they login using an external account that they have already used previously for the\n same game perhaps on another platform, or another game owned by the same organization.\n In such case, EOS_Connect_Login will automatically login the user to their existing account\n linking keychain and create automatically a new empty product user for this product.\n\n In order for the user to use their existing previously created keychain and have the locally\n created Device ID login reference to that keychain instead, the user's current product user\n needs to be moved to be under that keychain so that their existing game progression will be\n preserved. To do so, the game can call EOS_Connect_TransferDeviceIdAccount to transfer the\n Device ID login and the product user associated with it into the other keychain that has real\n external user account(s) linked to it. Note that it is important that the game either automatically\n checks that the other product user does not have any meaningful progression data, or otherwise\n will prompt the user to make the choice on which game progression to preserve and which can\n be discarded permanently. The other product user will be discarded permanently and cannot be\n recovered, so it is very important that the user is guided to make the right choice to avoid\n accidental loss of all game progression.\n\n @see EOS_Connect_TransferDeviceIdAccountOptions\n @see EOS_Connect_OnTransferDeviceIdAccountCallback\n @see EOS_Connect_Login\n @see EOS_Connect_CreateDeviceId\n\n @param Options structure containing the logged in product users and specifying which one will be preserved.\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate.\n @param CompletionDelegate a callback that is fired when the transfer operation completes, either successfully or in error."]
    pub fn EOS_Connect_TransferDeviceIdAccount(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_TransferDeviceIdAccountOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Connect_OnTransferDeviceIdAccountCallback,
    );
}
unsafe extern "C" {
    #[doc = " Retrieve the equivalent Product User IDs from a list of external account IDs from supported account providers.\n The values will be cached and retrievable through EOS_Connect_GetExternalAccountMapping.\n\n @note A common use case is to query other users who are connected through the same account system as the local user.\n Queries using external account IDs of another account system may not be available, depending on the account system specifics.\n\n @param Options structure containing a list of external account IDs, in string form, to query for the Product User ID representation.\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate.\n @param CompletionDelegate a callback that is fired when the query operation completes, either successfully or in error.\n\n @see EOS_Connect_QueryExternalAccountMappingsOptions\n @see EOS_Connect_OnQueryExternalAccountMappingsCallback"]
    pub fn EOS_Connect_QueryExternalAccountMappings(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_QueryExternalAccountMappingsOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Connect_OnQueryExternalAccountMappingsCallback,
    );
}
unsafe extern "C" {
    #[doc = " Retrieve the equivalent external account mappings from a list of Product User IDs.\n\n The values will be cached and retrievable via EOS_Connect_GetProductUserIdMapping, EOS_Connect_CopyProductUserExternalAccountByIndex,\n EOS_Connect_CopyProductUserExternalAccountByAccountType or EOS_Connect_CopyProductUserExternalAccountByAccountId.\n\n @see EOS_Connect_QueryProductUserIdMappingsOptions\n @see EOS_Connect_OnQueryProductUserIdMappingsCallback\n @see EOS_Connect_ExternalAccountInfo\n @see EOS_Connect_GetProductUserExternalAccountCount\n @see EOS_Connect_GetProductUserIdMapping\n @see EOS_Connect_CopyProductUserExternalAccountByIndex\n @see EOS_Connect_CopyProductUserExternalAccountByAccountType\n @see EOS_Connect_CopyProductUserExternalAccountByAccountId\n @see EOS_Connect_CopyProductUserInfo\n\n @param Options structure containing a list of Product User IDs to query for the external account representation.\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate.\n @param CompletionDelegate a callback that is fired when the query operation completes, either successfully or in error."]
    pub fn EOS_Connect_QueryProductUserIdMappings(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_QueryProductUserIdMappingsOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Connect_OnQueryProductUserIdMappingsCallback,
    );
}
unsafe extern "C" {
    #[doc = " Fetch a Product User ID that maps to an external account ID cached from a previous query.\n\n @param Options structure containing the local user and target external account ID.\n\n @see EOS_Connect_GetExternalAccountMappingsOptions\n\n @return The Product User ID, previously retrieved from the backend service, for the given target external account."]
    pub fn EOS_Connect_GetExternalAccountMapping(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_GetExternalAccountMappingsOptions,
    ) -> EOS_ProductUserId;
}
unsafe extern "C" {
    #[doc = " Fetch an external account ID, in string form, that maps to a given Product User ID.\n\n @param Options structure containing the local user and target Product User ID.\n @param OutBuffer The buffer into which the external account ID data should be written. The buffer must be long enough to hold a string of EOS_CONNECT_EXTERNAL_ACCOUNT_ID_MAX_LENGTH.\n @param InOutBufferLength The size of the OutBuffer in characters.\n                          The input buffer should include enough space to be null-terminated.\n                          When the function returns, this parameter will be filled with the length of the string copied into OutBuffer.\n\n @see EOS_Connect_GetProductUserIdMappingOptions\n\n @return An EOS_EResult that indicates the external account ID was copied into the OutBuffer.\n - EOS_Success if the information is available and passed out in OutUserInfo.\n - EOS_InvalidParameters if you pass a null pointer for the out parameter.\n - EOS_NotFound if the mapping doesn't exist or hasn't been queried yet.\n - EOS_LimitExceeded if the OutBuffer is not large enough to receive the external account ID. InOutBufferLength contains the required minimum length to perform the operation successfully."]
    pub fn EOS_Connect_GetProductUserIdMapping(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_GetProductUserIdMappingOptions,
        OutBuffer: *mut ::std::os::raw::c_char,
        InOutBufferLength: *mut i32,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Fetch the number of linked external accounts for a Product User ID.\n\n @param Options The Options associated with retrieving the external account info count.\n\n @see EOS_Connect_GetProductUserExternalAccountCountOptions\n @see EOS_Connect_CopyProductUserExternalAccountByIndex\n\n @return Number of external accounts or 0 otherwise."]
    pub fn EOS_Connect_GetProductUserExternalAccountCount(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_GetProductUserExternalAccountCountOptions,
    ) -> u32;
}
unsafe extern "C" {
    #[doc = " Fetch information about an external account linked to a Product User ID.\n On a successful call, the caller must release the returned structure using the EOS_Connect_ExternalAccountInfo_Release API.\n\n @param Options Structure containing the target index.\n @param OutExternalAccountInfo The external account info data for the user with given index.\n\n @see EOS_Connect_CopyProductUserExternalAccountByIndexOptions\n @see EOS_Connect_ExternalAccountInfo\n @see EOS_Connect_ExternalAccountInfo_Release\n\n @return An EOS_EResult that indicates the external account data was copied into the OutExternalAccountInfo.\n - EOS_Success if the information is available and passed out in OutExternalAccountInfo.\n - EOS_InvalidParameters if you pass a null pointer for the out parameter.\n - EOS_NotFound if the account data doesn't exist or hasn't been queried yet."]
    pub fn EOS_Connect_CopyProductUserExternalAccountByIndex(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_CopyProductUserExternalAccountByIndexOptions,
        OutExternalAccountInfo: *mut *mut EOS_Connect_ExternalAccountInfo,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Fetch information about an external account of a specific type linked to a Product User ID.\n On a successful call, the caller must release the returned structure using the EOS_Connect_ExternalAccountInfo_Release API.\n\n @param Options Structure containing the target external account type.\n @param OutExternalAccountInfo The external account info data for the user with given external account type.\n\n @see EOS_Connect_CopyProductUserExternalAccountByAccountTypeOptions\n @see EOS_Connect_ExternalAccountInfo\n @see EOS_Connect_ExternalAccountInfo_Release\n\n @return An EOS_EResult that indicates the external account data was copied into the OutExternalAccountInfo.\n - EOS_Success if the information is available and passed out in OutExternalAccountInfo.\n - EOS_InvalidParameters if you pass a null pointer for the out parameter.\n - EOS_NotFound if the account data doesn't exist or hasn't been queried yet."]
    pub fn EOS_Connect_CopyProductUserExternalAccountByAccountType(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_CopyProductUserExternalAccountByAccountTypeOptions,
        OutExternalAccountInfo: *mut *mut EOS_Connect_ExternalAccountInfo,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Fetch information about an external account linked to a Product User ID.\n On a successful call, the caller must release the returned structure using the EOS_Connect_ExternalAccountInfo_Release API.\n\n @param Options Structure containing the target external account ID.\n @param OutExternalAccountInfo The external account info data for the user with given external account ID.\n\n @see EOS_Connect_CopyProductUserExternalAccountByAccountIdOptions\n @see EOS_Connect_ExternalAccountInfo\n @see EOS_Connect_ExternalAccountInfo_Release\n\n @return An EOS_EResult that indicates the external account data was copied into the OutExternalAccountInfo.\n - EOS_Success if the information is available and passed out in OutExternalAccountInfo.\n - EOS_InvalidParameters if you pass a null pointer for the out parameter.\n - EOS_NotFound if the account data doesn't exist or hasn't been queried yet."]
    pub fn EOS_Connect_CopyProductUserExternalAccountByAccountId(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_CopyProductUserExternalAccountByAccountIdOptions,
        OutExternalAccountInfo: *mut *mut EOS_Connect_ExternalAccountInfo,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Fetch information about a Product User, using the external account that they most recently logged in with as the reference.\n On a successful call, the caller must release the returned structure using the EOS_Connect_ExternalAccountInfo_Release API.\n\n @param Options Structure containing the target external account ID.\n @param OutExternalAccountInfo The external account info data last logged in for the user.\n\n @see EOS_Connect_CopyProductUserInfoOptions\n @see EOS_Connect_ExternalAccountInfo\n @see EOS_Connect_ExternalAccountInfo_Release\n\n @return An EOS_EResult that indicates the external account data was copied into the OutExternalAccountInfo.\n - EOS_Success if the information is available and passed out in OutExternalAccountInfo.\n - EOS_InvalidParameters if you pass a null pointer for the out parameter.\n - EOS_NotFound if the account data doesn't exist or hasn't been queried yet."]
    pub fn EOS_Connect_CopyProductUserInfo(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_CopyProductUserInfoOptions,
        OutExternalAccountInfo: *mut *mut EOS_Connect_ExternalAccountInfo,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Fetch the number of product users that are logged in.\n\n @return the number of product users logged in."]
    pub fn EOS_Connect_GetLoggedInUsersCount(Handle: EOS_HConnect) -> i32;
}
unsafe extern "C" {
    #[doc = " Fetch a Product User ID that is logged in. This Product User ID is in the Epic Online Services namespace.\n\n @param Index an index into the list of logged in users. If the index is out of bounds, the returned Product User ID will be invalid.\n\n @return the Product User ID associated with the index passed."]
    pub fn EOS_Connect_GetLoggedInUserByIndex(
        Handle: EOS_HConnect,
        Index: i32,
    ) -> EOS_ProductUserId;
}
unsafe extern "C" {
    #[doc = " Fetches the login status for an Product User ID.  This Product User ID is considered logged in as long as the underlying access token has not expired.\n\n @param LocalUserId the Product User ID of the user being queried.\n\n @return the enum value of a user's login status."]
    pub fn EOS_Connect_GetLoginStatus(
        Handle: EOS_HConnect,
        LocalUserId: EOS_ProductUserId,
    ) -> EOS_ELoginStatus;
}
unsafe extern "C" {
    #[doc = " Register to receive upcoming authentication expiration notifications.\n Notification is approximately 1 minute prior to expiration.\n Call EOS_Connect_Login again with valid third party credentials to refresh access.\n\n @note If the returned NotificationId is valid, you must call EOS_Connect_RemoveNotifyAuthExpiration when you no longer wish to have your NotificationHandler called.\n\n @param Options structure containing the API version of the callback to use.\n @param ClientData arbitrary data that is passed back to you in the callback.\n @param Notification a callback that is fired when the authentication is about to expire.\n\n @see EOS_Connect_AddNotifyAuthExpirationOptions\n @see EOS_Connect_OnAuthExpirationCallback\n\n @return handle representing the registered callback."]
    pub fn EOS_Connect_AddNotifyAuthExpiration(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_AddNotifyAuthExpirationOptions,
        ClientData: *mut ::std::os::raw::c_void,
        Notification: EOS_Connect_OnAuthExpirationCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Unregister from receiving expiration notifications.\n\n @param InId handle representing the registered callback."]
    pub fn EOS_Connect_RemoveNotifyAuthExpiration(Handle: EOS_HConnect, InId: EOS_NotificationId);
}
unsafe extern "C" {
    #[doc = " Register to receive user login status updates.\n @note If the returned NotificationId is valid, you must call EOS_Connect_RemoveNotifyLoginStatusChanged when you no longer wish to have your NotificationHandler called.\n\n @param Options structure containing the API version of the callback to use.\n @param ClientData arbitrary data that is passed back to you in the callback.\n @param Notification a callback that is fired when the login status for a user changes.\n\n @see EOS_Connect_AddNotifyLoginStatusChangedOptions\n @see EOS_Connect_OnLoginStatusChangedCallback\n\n @return handle representing the registered callback."]
    pub fn EOS_Connect_AddNotifyLoginStatusChanged(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_AddNotifyLoginStatusChangedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        Notification: EOS_Connect_OnLoginStatusChangedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Unregister from receiving user login status updates.\n\n @param InId handle representing the registered callback."]
    pub fn EOS_Connect_RemoveNotifyLoginStatusChanged(
        Handle: EOS_HConnect,
        InId: EOS_NotificationId,
    );
}
unsafe extern "C" {
    #[doc = " Fetches an ID token for a Product User ID.\n\n @param Options Structure containing information about the ID token to copy.\n @param OutIdToken The ID token for the given user, if it exists and is valid; use EOS_Connect_IdToken_Release when finished.\n\n @see EOS_Connect_CopyIdTokenOptions\n @see EOS_Connect_IdToken\n @see EOS_Connect_IdToken_Release\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the information is available and passed out in OutIdToken.\n - EOS_InvalidParameters if you pass a null pointer for the out parameter.\n - EOS_NotFound if the ID token is not found or expired."]
    pub fn EOS_Connect_CopyIdToken(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_CopyIdTokenOptions,
        OutIdToken: *mut *mut EOS_Connect_IdToken,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Verify a given ID token for authenticity and validity.\n\n @param Options structure containing information about the ID token to verify.\n @param ClientData arbitrary data that is passed back to you in the callback.\n @param CompletionDelegate a callback that is fired when the operation completes, either successfully or in error.\n\n @see EOS_Connect_VerifyIdTokenOptions\n @see EOS_Connect_OnVerifyIdTokenCallback"]
    pub fn EOS_Connect_VerifyIdToken(
        Handle: EOS_HConnect,
        Options: *const EOS_Connect_VerifyIdTokenOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Connect_OnVerifyIdTokenCallback,
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_AchievementsHandle {
    _unused: [u8; 0],
}
pub type EOS_HAchievements = *mut EOS_AchievementsHandle;
#[doc = " Input parameters for the EOS_Achievements_QueryDefinitions function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_QueryDefinitionsOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_QUERYDEFINITIONS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID for user who is querying definitions.\n The localized text returned will be based on the locale code of the given user if they have a linked Epic Account ID.\n The localized text returned can also be overridden using EOS_Platform_SetOverrideLocaleCode to override the locale.\n If the locale code is not overridden and LocalUserId is not valid, default text will be returned."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Deprecated"]
    pub EpicUserId_DEPRECATED: EOS_EpicAccountId,
    #[doc = " Deprecated"]
    pub HiddenAchievementIds_DEPRECATED: *mut *const ::std::os::raw::c_char,
    #[doc = " Deprecated"]
    pub HiddenAchievementsCount_DEPRECATED: u32,
}
impl Default for _tagEOS_Achievements_QueryDefinitionsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Achievements_QueryDefinitions function."]
pub type EOS_Achievements_QueryDefinitionsOptions = _tagEOS_Achievements_QueryDefinitionsOptions;
#[doc = " Contains information about a collection of stat threshold data.\n\n The threshold will depend on the stat aggregate type:\n   LATEST (Tracks the latest value)\n   MAX (Tracks the maximum value)\n   MIN (Tracks the minimum value)\n   SUM (Generates a rolling sum of the value)\n\n @see EOS_Achievements_Definition"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_StatThresholds {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_STATTHRESHOLDS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The name of the stat."]
    pub Name: *const ::std::os::raw::c_char,
    #[doc = " The value that the stat must surpass to satisfy the requirement for unlocking an achievement."]
    pub Threshold: i32,
}
impl Default for _tagEOS_Achievements_StatThresholds {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a collection of stat threshold data.\n\n The threshold will depend on the stat aggregate type:\n   LATEST (Tracks the latest value)\n   MAX (Tracks the maximum value)\n   MIN (Tracks the minimum value)\n   SUM (Generates a rolling sum of the value)\n\n @see EOS_Achievements_Definition"]
pub type EOS_Achievements_StatThresholds = _tagEOS_Achievements_StatThresholds;
#[doc = " Contains information about a collection of stat info data.\n\n @see EOS_Achievements_PlayerAchievement"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_PlayerStatInfo {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_PLAYERSTATINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The name of the stat."]
    pub Name: *const ::std::os::raw::c_char,
    #[doc = " The current value of the stat."]
    pub CurrentValue: i32,
    #[doc = " The threshold value of the stat, used in determining when to unlock an achievement."]
    pub ThresholdValue: i32,
}
impl Default for _tagEOS_Achievements_PlayerStatInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a collection of stat info data.\n\n @see EOS_Achievements_PlayerAchievement"]
pub type EOS_Achievements_PlayerStatInfo = _tagEOS_Achievements_PlayerStatInfo;
#[doc = " Contains information about a single achievement definition with localized text."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_DefinitionV2 {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_DEFINITIONV2_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Achievement ID that can be used to uniquely identify the achievement."]
    pub AchievementId: *const ::std::os::raw::c_char,
    #[doc = " Localized display name for the achievement when it has been unlocked."]
    pub UnlockedDisplayName: *const ::std::os::raw::c_char,
    #[doc = " Localized description for the achievement when it has been unlocked."]
    pub UnlockedDescription: *const ::std::os::raw::c_char,
    #[doc = " Localized display name for the achievement when it is locked or hidden."]
    pub LockedDisplayName: *const ::std::os::raw::c_char,
    #[doc = " Localized description for the achievement when it is locked or hidden."]
    pub LockedDescription: *const ::std::os::raw::c_char,
    #[doc = " Localized flavor text that can be used by the game in an arbitrary manner. This may be null if there is no data configured in the dev portal."]
    pub FlavorText: *const ::std::os::raw::c_char,
    #[doc = " URL of an icon to display for the achievement when it is unlocked. This may be null if there is no data configured in the dev portal."]
    pub UnlockedIconURL: *const ::std::os::raw::c_char,
    #[doc = " URL of an icon to display for the achievement when it is locked or hidden. This may be null if there is no data configured in the dev portal."]
    pub LockedIconURL: *const ::std::os::raw::c_char,
    #[doc = " EOS_TRUE if the achievement is hidden; EOS_FALSE otherwise."]
    pub bIsHidden: EOS_Bool,
    #[doc = " The number of stat thresholds used to monitor progress towards this achievement."]
    pub StatThresholdsCount: u32,
    #[doc = " Array of `EOS_Achievements_StatThresholds` that need to be satisfied to unlock this achievement. Consists of Name and Threshold Value."]
    pub StatThresholds: *const EOS_Achievements_StatThresholds,
}
impl Default for _tagEOS_Achievements_DefinitionV2 {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single achievement definition with localized text."]
pub type EOS_Achievements_DefinitionV2 = _tagEOS_Achievements_DefinitionV2;
unsafe extern "C" {
    #[doc = " Release the memory associated with EOS_Achievements_DefinitionV2. This must be called on data retrieved from\n EOS_Achievements_CopyAchievementDefinitionV2ByIndex or EOS_Achievements_CopyAchievementDefinitionV2ByAchievementId.\n\n @param AchievementDefinition - The achievement definition to release.\n\n @see EOS_Achievements_DefinitionV2\n @see EOS_Achievements_CopyAchievementDefinitionV2ByIndex\n @see EOS_Achievements_CopyAchievementDefinitionV2ByAchievementId"]
    pub fn EOS_Achievements_DefinitionV2_Release(
        AchievementDefinition: *mut EOS_Achievements_DefinitionV2,
    );
}
#[doc = " Input parameters for the EOS_Achievements_GetAchievementDefinitionCount function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Achievements_GetAchievementDefinitionCountOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_GETACHIEVEMENTDEFINITIONCOUNT_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Achievements_GetAchievementDefinitionCount function."]
pub type EOS_Achievements_GetAchievementDefinitionCountOptions =
    _tagEOS_Achievements_GetAchievementDefinitionCountOptions;
#[doc = " Input parameters for the EOS_Achievements_CopyAchievementDefinitionByIndex function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Achievements_CopyAchievementDefinitionV2ByIndexOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_COPYACHIEVEMENTDEFINITIONV2BYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Index of the achievement definition to retrieve from the cache."]
    pub AchievementIndex: u32,
}
#[doc = " Input parameters for the EOS_Achievements_CopyAchievementDefinitionByIndex function."]
pub type EOS_Achievements_CopyAchievementDefinitionV2ByIndexOptions =
    _tagEOS_Achievements_CopyAchievementDefinitionV2ByIndexOptions;
#[doc = " Input parameters for the EOS_Achievements_CopyAchievementDefinitionV2ByAchievementId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_CopyAchievementDefinitionV2ByAchievementIdOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_COPYACHIEVEMENTDEFINITIONV2BYACHIEVEMENTID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Achievement ID to look for when copying the definition from the cache."]
    pub AchievementId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Achievements_CopyAchievementDefinitionV2ByAchievementIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Achievements_CopyAchievementDefinitionV2ByAchievementId function."]
pub type EOS_Achievements_CopyAchievementDefinitionV2ByAchievementIdOptions =
    _tagEOS_Achievements_CopyAchievementDefinitionV2ByAchievementIdOptions;
#[doc = " Data containing the result information for a query definitions request."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_OnQueryDefinitionsCompleteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " User-defined context that was passed into EOS_Achievements_QueryDefinitions."]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Achievements_OnQueryDefinitionsCompleteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result information for a query definitions request."]
pub type EOS_Achievements_OnQueryDefinitionsCompleteCallbackInfo =
    _tagEOS_Achievements_OnQueryDefinitionsCompleteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Achievements_QueryDefinitions\n @param Data An EOS_Achievements_OnQueryDefinitionsCompleteCallbackInfo containing the output information and result"]
pub type EOS_Achievements_OnQueryDefinitionsCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Achievements_OnQueryDefinitionsCompleteCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Achievements_QueryPlayerAchievements function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_QueryPlayerAchievementsOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_QUERYPLAYERACHIEVEMENTS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID for the user whose achievements are to be retrieved."]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " The Product User ID for the user who is querying for player achievements. For a Dedicated Server this should be null."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Achievements_QueryPlayerAchievementsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Achievements_QueryPlayerAchievements function."]
pub type EOS_Achievements_QueryPlayerAchievementsOptions =
    _tagEOS_Achievements_QueryPlayerAchievementsOptions;
#[doc = " Contains information about a single player achievement."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_PlayerAchievement {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_PLAYERACHIEVEMENT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " This achievement's unique identifier."]
    pub AchievementId: *const ::std::os::raw::c_char,
    #[doc = " Progress towards completing this achievement (as a percentage)."]
    pub Progress: f64,
    #[doc = " The POSIX timestamp when the achievement was unlocked. If the achievement has not been unlocked, this value will be EOS_ACHIEVEMENTS_ACHIEVEMENT_UNLOCKTIME_UNDEFINED."]
    pub UnlockTime: i64,
    #[doc = " The number of player stat info entries associated with this achievement."]
    pub StatInfoCount: i32,
    #[doc = " Array of EOS_Achievements_PlayerStatInfo structures containing information about stat thresholds used to unlock the achievement and the player's current values for those stats."]
    pub StatInfo: *const EOS_Achievements_PlayerStatInfo,
    #[doc = " Localized display name for the achievement based on this specific player's current progress on the achievement.\n @note The current progress is updated when EOS_Achievements_QueryPlayerAchievements succeeds and when an achievement is unlocked."]
    pub DisplayName: *const ::std::os::raw::c_char,
    #[doc = " Localized description for the achievement based on this specific player's current progress on the achievement.\n @note The current progress is updated when EOS_Achievements_QueryPlayerAchievements succeeds and when an achievement is unlocked."]
    pub Description: *const ::std::os::raw::c_char,
    #[doc = " URL of an icon to display for the achievement based on this specific player's current progress on the achievement. This may be null if there is no data configured in the dev portal.\n @note The current progress is updated when EOS_Achievements_QueryPlayerAchievements succeeds and when an achievement is unlocked."]
    pub IconURL: *const ::std::os::raw::c_char,
    #[doc = " Localized flavor text that can be used by the game in an arbitrary manner. This may be null if there is no data configured in the dev portal."]
    pub FlavorText: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Achievements_PlayerAchievement {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single player achievement."]
pub type EOS_Achievements_PlayerAchievement = _tagEOS_Achievements_PlayerAchievement;
#[doc = " Input parameters for the EOS_Achievements_GetPlayerAchievementCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_GetPlayerAchievementCountOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_GETPLAYERACHIEVEMENTCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID for the user whose achievement count is being retrieved."]
    pub UserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Achievements_GetPlayerAchievementCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Achievements_GetPlayerAchievementCount function."]
pub type EOS_Achievements_GetPlayerAchievementCountOptions =
    _tagEOS_Achievements_GetPlayerAchievementCountOptions;
#[doc = " Input parameters for the EOS_Achievements_CopyPlayerAchievementByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_CopyPlayerAchievementByIndexOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_COPYPLAYERACHIEVEMENTBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID for the user whose achievement is to be retrieved."]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " The index of the player achievement data to retrieve from the cache."]
    pub AchievementIndex: u32,
    #[doc = " The Product User ID for the user who is querying for a player achievement. For a Dedicated Server this should be null."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Achievements_CopyPlayerAchievementByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Achievements_CopyPlayerAchievementByIndex function."]
pub type EOS_Achievements_CopyPlayerAchievementByIndexOptions =
    _tagEOS_Achievements_CopyPlayerAchievementByIndexOptions;
#[doc = " Input parameters for the EOS_Achievements_CopyPlayerAchievementByAchievementId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_CopyPlayerAchievementByAchievementIdOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_COPYPLAYERACHIEVEMENTBYACHIEVEMENTID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID for the user whose achievement is to be retrieved."]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Achievement ID to search for when retrieving player achievement data from the cache."]
    pub AchievementId: *const ::std::os::raw::c_char,
    #[doc = " The Product User ID for the user who is querying for a player achievement. For a Dedicated Server this should be null."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Achievements_CopyPlayerAchievementByAchievementIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Achievements_CopyPlayerAchievementByAchievementId function."]
pub type EOS_Achievements_CopyPlayerAchievementByAchievementIdOptions =
    _tagEOS_Achievements_CopyPlayerAchievementByAchievementIdOptions;
unsafe extern "C" {
    #[doc = " Release the memory associated with a player achievement. This must be called on data retrieved from\n EOS_Achievements_CopyPlayerAchievementByIndex or EOS_Achievements_CopyPlayerAchievementByAchievementId.\n\n @param Achievement - The achievement data to release.\n\n @see EOS_Achievements_PlayerAchievement\n @see EOS_Achievements_CopyPlayerAchievementByIndex\n @see EOS_Achievements_CopyPlayerAchievementByAchievementId"]
    pub fn EOS_Achievements_PlayerAchievement_Release(
        Achievement: *mut EOS_Achievements_PlayerAchievement,
    );
}
#[doc = " Data containing the result information for querying a player's achievements request."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_OnQueryPlayerAchievementsCompleteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Achievements_QueryPlayerAchievements."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID whose achievements were retrieved."]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the user who initiated this request. For a Dedicated Server this should be null."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Achievements_OnQueryPlayerAchievementsCompleteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result information for querying a player's achievements request."]
pub type EOS_Achievements_OnQueryPlayerAchievementsCompleteCallbackInfo =
    _tagEOS_Achievements_OnQueryPlayerAchievementsCompleteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Achievements_QueryPlayerAchievements\n\n @param Data An EOS_Achievements_OnQueryPlayerAchievementsCompleteCallbackInfo containing the output information and result\n\n @see EOS_Achievements_PlayerAchievement_Release"]
pub type EOS_Achievements_OnQueryPlayerAchievementsCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(
        Data: *const EOS_Achievements_OnQueryPlayerAchievementsCompleteCallbackInfo,
    ),
>;
#[doc = " Input parameters for the EOS_Achievements_UnlockAchievements function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_UnlockAchievementsOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_UNLOCKACHIEVEMENTS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID for the user whose achievements we want to unlock."]
    pub UserId: EOS_ProductUserId,
    #[doc = " An array of Achievement IDs to unlock."]
    pub AchievementIds: *mut *const ::std::os::raw::c_char,
    #[doc = " The number of achievements to unlock."]
    pub AchievementsCount: u32,
}
impl Default for _tagEOS_Achievements_UnlockAchievementsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Achievements_UnlockAchievements function."]
pub type EOS_Achievements_UnlockAchievementsOptions =
    _tagEOS_Achievements_UnlockAchievementsOptions;
#[doc = " Data containing the result information for unlocking achievements request."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_OnUnlockAchievementsCompleteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Achievements_UnlockAchievements."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the user who initiated this request."]
    pub UserId: EOS_ProductUserId,
    #[doc = " The number of achievements that the operation unlocked."]
    pub AchievementsCount: u32,
}
impl Default for _tagEOS_Achievements_OnUnlockAchievementsCompleteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result information for unlocking achievements request."]
pub type EOS_Achievements_OnUnlockAchievementsCompleteCallbackInfo =
    _tagEOS_Achievements_OnUnlockAchievementsCompleteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Achievements_UnlockAchievements\n @param Data An EOS_Achievements_OnUnlockAchievementsCompleteCallbackInfo containing the output information and result"]
pub type EOS_Achievements_OnUnlockAchievementsCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Achievements_OnUnlockAchievementsCompleteCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Achievements_AddNotifyAchievementsUnlocked function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Achievements_AddNotifyAchievementsUnlockedV2Options {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_ADDNOTIFYACHIEVEMENTSUNLOCKEDV2_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Achievements_AddNotifyAchievementsUnlocked function."]
pub type EOS_Achievements_AddNotifyAchievementsUnlockedV2Options =
    _tagEOS_Achievements_AddNotifyAchievementsUnlockedV2Options;
#[doc = " Output parameters for the EOS_Achievements_OnAchievementsUnlockedCallbackV2 Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_OnAchievementsUnlockedCallbackV2Info {
    #[doc = " Context that was passed into EOS_Achievements_AddNotifyAchievementsUnlocked"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID for the user who received the unlocked achievements notification"]
    pub UserId: EOS_ProductUserId,
    #[doc = " The Achievement ID for the achievement that was unlocked. Pass this to EOS_Achievements_CopyPlayerAchievementByAchievementId to get the full achievement information."]
    pub AchievementId: *const ::std::os::raw::c_char,
    #[doc = " POSIX timestamp when the achievement was unlocked."]
    pub UnlockTime: i64,
}
impl Default for _tagEOS_Achievements_OnAchievementsUnlockedCallbackV2Info {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Achievements_OnAchievementsUnlockedCallbackV2 Function."]
pub type EOS_Achievements_OnAchievementsUnlockedCallbackV2Info =
    _tagEOS_Achievements_OnAchievementsUnlockedCallbackV2Info;
#[doc = " Function prototype definition for notifications that come from EOS_Achievements_AddNotifyAchievementsUnlockedV2\n\n @param Data An EOS_Achievements_OnAchievementsUnlockedCallbackV2Info containing the output information and result"]
pub type EOS_Achievements_OnAchievementsUnlockedCallbackV2 = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Achievements_OnAchievementsUnlockedCallbackV2Info),
>;
#[doc = " Contains information about a single achievement definition with localized text."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_Definition {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_DEFINITION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Achievement ID that can be used to uniquely identify the achievement."]
    pub AchievementId: *const ::std::os::raw::c_char,
    #[doc = " Text representing the Name to display in-game when achievement has been unlocked."]
    pub DisplayName: *const ::std::os::raw::c_char,
    #[doc = " Text representing the description to display in-game when achievement has been unlocked."]
    pub Description: *const ::std::os::raw::c_char,
    #[doc = " Text representing the name to display in-game when achievement is locked."]
    pub LockedDisplayName: *const ::std::os::raw::c_char,
    #[doc = " Text representing the description of what needs to be done to trigger the unlock of this achievement."]
    pub LockedDescription: *const ::std::os::raw::c_char,
    #[doc = " Text representing the description to display in-game when achievement is hidden."]
    pub HiddenDescription: *const ::std::os::raw::c_char,
    #[doc = " Text representing the description of what happens when the achievement is unlocked."]
    pub CompletionDescription: *const ::std::os::raw::c_char,
    #[doc = " Text representing the icon to display in-game when achievement is unlocked."]
    pub UnlockedIconId: *const ::std::os::raw::c_char,
    #[doc = " Text representing the icon to display in-game when achievement is locked."]
    pub LockedIconId: *const ::std::os::raw::c_char,
    #[doc = " True if achievement is hidden, false otherwise."]
    pub bIsHidden: EOS_Bool,
    #[doc = " The number of stat thresholds."]
    pub StatThresholdsCount: i32,
    #[doc = " Array of stat thresholds that need to be satisfied to unlock the achievement."]
    pub StatThresholds: *const EOS_Achievements_StatThresholds,
}
impl Default for _tagEOS_Achievements_Definition {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single achievement definition with localized text."]
pub type EOS_Achievements_Definition = _tagEOS_Achievements_Definition;
unsafe extern "C" {
    #[doc = " Release the memory associated with achievement definitions. This must be called on data retrieved from\n EOS_Achievements_CopyAchievementDefinitionByIndex or EOS_Achievements_CopyAchievementDefinitionByAchievementId.\n\n @param AchievementDefinition - The achievement definition to release.\n\n @see EOS_Achievements_Definition\n @see EOS_Achievements_CopyAchievementDefinitionByIndex\n @see EOS_Achievements_CopyAchievementDefinitionByAchievementId"]
    pub fn EOS_Achievements_Definition_Release(
        AchievementDefinition: *mut EOS_Achievements_Definition,
    );
}
#[doc = " Input parameters for the EOS_Achievements_CopyAchievementDefinitionByIndex function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Achievements_CopyAchievementDefinitionByIndexOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_COPYDEFINITIONBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Index of the achievement definition to retrieve from the cache"]
    pub AchievementIndex: u32,
}
#[doc = " Input parameters for the EOS_Achievements_CopyAchievementDefinitionByIndex function."]
pub type EOS_Achievements_CopyAchievementDefinitionByIndexOptions =
    _tagEOS_Achievements_CopyAchievementDefinitionByIndexOptions;
#[doc = " Input parameters for the EOS_Achievements_CopyAchievementDefinitionByAchievementId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_CopyAchievementDefinitionByAchievementIdOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_COPYDEFINITIONBYACHIEVEMENTID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Achievement ID to look for when copying definition from the cache"]
    pub AchievementId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Achievements_CopyAchievementDefinitionByAchievementIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Achievements_CopyAchievementDefinitionByAchievementId function."]
pub type EOS_Achievements_CopyAchievementDefinitionByAchievementIdOptions =
    _tagEOS_Achievements_CopyAchievementDefinitionByAchievementIdOptions;
#[doc = " Contains information about a single unlocked achievement."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_UnlockedAchievement {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_UNLOCKEDACHIEVEMENT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Achievement ID that can be used to uniquely identify the unlocked achievement."]
    pub AchievementId: *const ::std::os::raw::c_char,
    #[doc = " If not EOS_ACHIEVEMENTS_ACHIEVEMENT_UNLOCKTIME_UNDEFINED then this is the POSIX timestamp that the achievement was unlocked."]
    pub UnlockTime: i64,
}
impl Default for _tagEOS_Achievements_UnlockedAchievement {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single unlocked achievement."]
pub type EOS_Achievements_UnlockedAchievement = _tagEOS_Achievements_UnlockedAchievement;
#[doc = " Input parameters for the EOS_Achievements_GetUnlockedAchievementCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_GetUnlockedAchievementCountOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_GETUNLOCKEDACHIEVEMENTCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID for which to retrieve the unlocked achievement count"]
    pub UserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Achievements_GetUnlockedAchievementCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Achievements_GetUnlockedAchievementCount function."]
pub type EOS_Achievements_GetUnlockedAchievementCountOptions =
    _tagEOS_Achievements_GetUnlockedAchievementCountOptions;
#[doc = " Input parameters for the EOS_Achievements_CopyUnlockedAchievementByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_CopyUnlockedAchievementByIndexOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_COPYUNLOCKEDACHIEVEMENTBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID for the user who is copying the unlocked achievement"]
    pub UserId: EOS_ProductUserId,
    #[doc = " Index of the unlocked achievement to retrieve from the cache"]
    pub AchievementIndex: u32,
}
impl Default for _tagEOS_Achievements_CopyUnlockedAchievementByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Achievements_CopyUnlockedAchievementByIndex function."]
pub type EOS_Achievements_CopyUnlockedAchievementByIndexOptions =
    _tagEOS_Achievements_CopyUnlockedAchievementByIndexOptions;
#[doc = " Input parameters for the EOS_Achievements_CopyUnlockedAchievementByAchievementId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_CopyUnlockedAchievementByAchievementIdOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_COPYUNLOCKEDACHIEVEMENTBYACHIEVEMENTID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID for the user who is copying the unlocked achievement"]
    pub UserId: EOS_ProductUserId,
    #[doc = " AchievementId of the unlocked achievement to retrieve from the cache"]
    pub AchievementId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Achievements_CopyUnlockedAchievementByAchievementIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Achievements_CopyUnlockedAchievementByAchievementId function."]
pub type EOS_Achievements_CopyUnlockedAchievementByAchievementIdOptions =
    _tagEOS_Achievements_CopyUnlockedAchievementByAchievementIdOptions;
#[doc = " Input parameters for the EOS_Achievements_AddNotifyAchievementsUnlocked function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Achievements_AddNotifyAchievementsUnlockedOptions {
    #[doc = " API Version: Set this to EOS_ACHIEVEMENTS_ADDNOTIFYACHIEVEMENTSUNLOCKED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Achievements_AddNotifyAchievementsUnlocked function."]
pub type EOS_Achievements_AddNotifyAchievementsUnlockedOptions =
    _tagEOS_Achievements_AddNotifyAchievementsUnlockedOptions;
#[doc = " Output parameters for the EOS_Achievements_OnAchievementsUnlockedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Achievements_OnAchievementsUnlockedCallbackInfo {
    #[doc = " Context that was passed into EOS_Achievements_AddNotifyAchievementsUnlocked"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID for the user who received the unlocked achievements notification"]
    pub UserId: EOS_ProductUserId,
    #[doc = " The number of achievements."]
    pub AchievementsCount: u32,
    #[doc = " This member is not used and will always be set to NULL."]
    pub AchievementIds: *mut *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Achievements_OnAchievementsUnlockedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Achievements_OnAchievementsUnlockedCallback Function."]
pub type EOS_Achievements_OnAchievementsUnlockedCallbackInfo =
    _tagEOS_Achievements_OnAchievementsUnlockedCallbackInfo;
#[doc = " Function prototype definition for notifications that come from EOS_Achievements_AddNotifyAchievementsUnlocked\n\n @param Data A EOS_Achievements_OnAchievementsUnlockedCallbackInfo containing the output information and result"]
pub type EOS_Achievements_OnAchievementsUnlockedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Achievements_OnAchievementsUnlockedCallbackInfo),
>;
unsafe extern "C" {
    #[doc = " Release the memory associated with an unlocked achievement. This must be called on data retrieved from\n EOS_Achievements_CopyUnlockedAchievementByIndex or EOS_Achievements_CopyUnlockedAchievementByAchievementId.\n\n @param Achievement - The unlocked achievement data to release.\n\n @see EOS_Achievements_UnlockedAchievement\n @see EOS_Achievements_CopyUnlockedAchievementByIndex\n @see EOS_Achievements_CopyUnlockedAchievementByAchievementId"]
    pub fn EOS_Achievements_UnlockedAchievement_Release(
        Achievement: *mut EOS_Achievements_UnlockedAchievement,
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_StatsHandle {
    _unused: [u8; 0],
}
pub type EOS_HStats = *mut EOS_StatsHandle;
#[doc = " Contains information about a single stat to ingest."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Stats_IngestData {
    #[doc = " API Version: Set this to EOS_STATS_INGESTDATA_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The name of the stat to ingest."]
    pub StatName: *const ::std::os::raw::c_char,
    #[doc = " The amount to ingest the stat."]
    pub IngestAmount: i32,
}
impl Default for _tagEOS_Stats_IngestData {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single stat to ingest."]
pub type EOS_Stats_IngestData = _tagEOS_Stats_IngestData;
#[doc = " Input parameters for the EOS_Stats_IngestStat function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Stats_IngestStatOptions {
    #[doc = " API Version: Set this to EOS_STATS_INGESTSTAT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user requesting the ingest.  Set to null for dedicated server."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Stats to ingest."]
    pub Stats: *const EOS_Stats_IngestData,
    #[doc = " The number of stats to ingest, may not exceed EOS_STATS_MAX_INGEST_STATS."]
    pub StatsCount: u32,
    #[doc = " The Product User ID for the user whose stat is being ingested."]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Stats_IngestStatOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Stats_IngestStat function."]
pub type EOS_Stats_IngestStatOptions = _tagEOS_Stats_IngestStatOptions;
#[doc = " Data containing the result information for an ingest stat request.\n\n NOTE: A result code of EOS_Success indicates the ingest request\n reached the server successfully, but does not guarantee successful processing.\n For example, if an incorrect StatName value is provided in the ingest call,\n processing may still fail.\n"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Stats_IngestStatCompleteCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned for a successful request, other codes indicate an error."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Stats_IngestStat."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID for the user requesting the ingest"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID for the user whose stat is being ingested"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Stats_IngestStatCompleteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result information for an ingest stat request.\n\n NOTE: A result code of EOS_Success indicates the ingest request\n reached the server successfully, but does not guarantee successful processing.\n For example, if an incorrect StatName value is provided in the ingest call,\n processing may still fail.\n"]
pub type EOS_Stats_IngestStatCompleteCallbackInfo = _tagEOS_Stats_IngestStatCompleteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Stats_IngestStat\n @param Data A EOS_Stats_IngestStatCompleteCallbackInfo containing the output information and result"]
pub type EOS_Stats_OnIngestStatCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Stats_IngestStatCompleteCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Stats_QueryStats function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Stats_QueryStatsOptions {
    #[doc = " API Version: Set this to EOS_STATS_QUERYSTATS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user requesting the stats. Set to null for dedicated server."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " If not EOS_STATS_TIME_UNDEFINED then this is the POSIX timestamp for start time (Optional - set to EOS_STATS_TIME_UNDEFINED to ignore this parameter)."]
    pub StartTime: i64,
    #[doc = " If not EOS_STATS_TIME_UNDEFINED then this is the POSIX timestamp for end time (Optional - set to EOS_STATS_TIME_UNDEFINED to ignore this parameter)."]
    pub EndTime: i64,
    #[doc = " An array of stat names to query for (Optional - set to nullptr to query for all stats)."]
    pub StatNames: *mut *const ::std::os::raw::c_char,
    #[doc = " The number of stat names included in query (Optional - set to 0 when querying for all stats), may not exceed EOS_STATS_MAX_QUERY_STATS."]
    pub StatNamesCount: u32,
    #[doc = " The Product User ID for the user whose stats are being retrieved"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Stats_QueryStatsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Stats_QueryStats function."]
pub type EOS_Stats_QueryStatsOptions = _tagEOS_Stats_QueryStatsOptions;
#[doc = " Contains information about a single player stat."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Stats_Stat {
    #[doc = " API Version: Set this to EOS_STATS_STAT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the stat."]
    pub Name: *const ::std::os::raw::c_char,
    #[doc = " If not EOS_STATS_TIME_UNDEFINED then this is the POSIX timestamp for start time."]
    pub StartTime: i64,
    #[doc = " If not EOS_STATS_TIME_UNDEFINED then this is the POSIX timestamp for end time."]
    pub EndTime: i64,
    #[doc = " Current value for the stat."]
    pub Value: i32,
}
impl Default for _tagEOS_Stats_Stat {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single player stat."]
pub type EOS_Stats_Stat = _tagEOS_Stats_Stat;
#[doc = " Input parameters for the EOS_Stats_GetStatsCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Stats_GetStatCountOptions {
    #[doc = " API Version: Set this to EOS_STATS_GETSTATSCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID for the user whose stats are being counted"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Stats_GetStatCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Stats_GetStatsCount function."]
pub type EOS_Stats_GetStatCountOptions = _tagEOS_Stats_GetStatCountOptions;
#[doc = " Input parameters for the EOS_Stats_CopyStatByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Stats_CopyStatByIndexOptions {
    #[doc = " API Version: Set this to EOS_STATS_COPYSTATBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the user who owns the stat"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Index of the stat to retrieve from the cache"]
    pub StatIndex: u32,
}
impl Default for _tagEOS_Stats_CopyStatByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Stats_CopyStatByIndex function."]
pub type EOS_Stats_CopyStatByIndexOptions = _tagEOS_Stats_CopyStatByIndexOptions;
#[doc = " Input parameters for the EOS_Stats_CopyStatByName function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Stats_CopyStatByNameOptions {
    #[doc = " API Version: Set this to EOS_STATS_COPYSTATBYNAME_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the user who owns the stat"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Name of the stat to retrieve from the cache"]
    pub Name: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Stats_CopyStatByNameOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Stats_CopyStatByName function."]
pub type EOS_Stats_CopyStatByNameOptions = _tagEOS_Stats_CopyStatByNameOptions;
unsafe extern "C" {
    #[doc = " Release the memory associated with a stat. This must be called on data retrieved from EOS_Stats_CopyStatByIndex or EOS_Stats_CopyStatByName.\n\n @param Stat - The stat data to release.\n\n @see EOS_Stats_Stat\n @see EOS_Stats_CopyStatByIndex\n @see EOS_Stats_CopyStatByName"]
    pub fn EOS_Stats_Stat_Release(Stat: *mut EOS_Stats_Stat);
}
#[doc = " Data containing the result information for querying a player's stats request."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Stats_OnQueryStatsCompleteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Stats_QueryStats"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the user who initiated this request"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Product User ID whose stats which were retrieved"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Stats_OnQueryStatsCompleteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result information for querying a player's stats request."]
pub type EOS_Stats_OnQueryStatsCompleteCallbackInfo =
    _tagEOS_Stats_OnQueryStatsCompleteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Stats_QueryStats\n\n @param Data A EOS_Stats_OnQueryStatsCompleteCallbackInfo containing the output information and result\n\n @see EOS_Stats_Stat_Release"]
pub type EOS_Stats_OnQueryStatsCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Stats_OnQueryStatsCompleteCallbackInfo),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_LeaderboardsHandle {
    _unused: [u8; 0],
}
pub type EOS_HLeaderboards = *mut EOS_LeaderboardsHandle;
#[doc = " Input parameters for the EOS_Leaderboards_QueryLeaderboardDefinitions function.\n StartTime and EndTime are optional parameters, they can be used to limit the list of definitions\n to overlap the time window specified."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_QueryLeaderboardDefinitionsOptions {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_QUERYLEADERBOARDDEFINITIONS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " An optional POSIX timestamp for the leaderboard's start time, or EOS_LEADERBOARDS_TIME_UNDEFINED"]
    pub StartTime: i64,
    #[doc = " An optional POSIX timestamp for the leaderboard's end time, or EOS_LEADERBOARDS_TIME_UNDEFINED"]
    pub EndTime: i64,
    #[doc = " Product User ID for user who is querying definitions.\n Must be set when using a client policy that requires a valid logged in user.\n Not used for Dedicated Server where no user is available."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Leaderboards_QueryLeaderboardDefinitionsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Leaderboards_QueryLeaderboardDefinitions function.\n StartTime and EndTime are optional parameters, they can be used to limit the list of definitions\n to overlap the time window specified."]
pub type EOS_Leaderboards_QueryLeaderboardDefinitionsOptions =
    _tagEOS_Leaderboards_QueryLeaderboardDefinitionsOptions;
#[doc = " Minimum"]
pub const EOS_ELeaderboardAggregation_EOS_LA_Min: EOS_ELeaderboardAggregation = 0;
#[doc = " Maximum"]
pub const EOS_ELeaderboardAggregation_EOS_LA_Max: EOS_ELeaderboardAggregation = 1;
#[doc = " Sum"]
pub const EOS_ELeaderboardAggregation_EOS_LA_Sum: EOS_ELeaderboardAggregation = 2;
#[doc = " Latest"]
pub const EOS_ELeaderboardAggregation_EOS_LA_Latest: EOS_ELeaderboardAggregation = 3;
pub const EOS_ELeaderboardAggregation___EOS_ELeaderboardAggregation_PAD_INT32__:
    EOS_ELeaderboardAggregation = 2147483647;
#[doc = " An enumeration of the different leaderboard aggregation types."]
pub type EOS_ELeaderboardAggregation = ::std::os::raw::c_int;
#[doc = " Contains information about a single leaderboard definition"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_Definition {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_DEFINITION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Unique ID to identify leaderboard."]
    pub LeaderboardId: *const ::std::os::raw::c_char,
    #[doc = " Name of stat used to rank leaderboard."]
    pub StatName: *const ::std::os::raw::c_char,
    #[doc = " Aggregation used to sort leaderboard."]
    pub Aggregation: EOS_ELeaderboardAggregation,
    #[doc = " The POSIX timestamp for the start time, or EOS_LEADERBOARDS_TIME_UNDEFINED."]
    pub StartTime: i64,
    #[doc = " The POSIX timestamp for the end time, or EOS_LEADERBOARDS_TIME_UNDEFINED."]
    pub EndTime: i64,
}
impl Default for _tagEOS_Leaderboards_Definition {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single leaderboard definition"]
pub type EOS_Leaderboards_Definition = _tagEOS_Leaderboards_Definition;
#[doc = " Input parameters for the EOS_Leaderboards_GetLeaderboardDefinitionCount function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Leaderboards_GetLeaderboardDefinitionCountOptions {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_GETLEADERBOARDDEFINITIONCOUNT_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Leaderboards_GetLeaderboardDefinitionCount function."]
pub type EOS_Leaderboards_GetLeaderboardDefinitionCountOptions =
    _tagEOS_Leaderboards_GetLeaderboardDefinitionCountOptions;
#[doc = " Input parameters for the EOS_Leaderboards_CopyLeaderboardDefinitionByIndex function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Leaderboards_CopyLeaderboardDefinitionByIndexOptions {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_COPYLEADERBOARDDEFINITIONBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Index of the leaderboard definition to retrieve from the cache"]
    pub LeaderboardIndex: u32,
}
#[doc = " Input parameters for the EOS_Leaderboards_CopyLeaderboardDefinitionByIndex function."]
pub type EOS_Leaderboards_CopyLeaderboardDefinitionByIndexOptions =
    _tagEOS_Leaderboards_CopyLeaderboardDefinitionByIndexOptions;
#[doc = " Input parameters for the EOS_Leaderboards_CopyLeaderboardDefinitionByLeaderboardId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_CopyLeaderboardDefinitionByLeaderboardIdOptions {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_COPYLEADERBOARDDEFINITIONBYLEADERBOARDID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the leaderboard whose definition you want to copy from the cache"]
    pub LeaderboardId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Leaderboards_CopyLeaderboardDefinitionByLeaderboardIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Leaderboards_CopyLeaderboardDefinitionByLeaderboardId function."]
pub type EOS_Leaderboards_CopyLeaderboardDefinitionByLeaderboardIdOptions =
    _tagEOS_Leaderboards_CopyLeaderboardDefinitionByLeaderboardIdOptions;
unsafe extern "C" {
    #[doc = " Release the memory associated with a leaderboard definition. This must be called on data retrieved from\n EOS_Leaderboards_CopyLeaderboardDefinitionByIndex or EOS_Leaderboards_CopyLeaderboardDefinitionByLeaderboardId.\n\n @param LeaderboardDefinition - The Leaderboard definition to release.\n\n @see EOS_Leaderboards_Definition\n @see EOS_Leaderboards_CopyLeaderboardDefinitionByIndex\n @see EOS_Leaderboards_CopyLeaderboardDefinitionByLeaderboardId"]
    pub fn EOS_Leaderboards_Definition_Release(
        LeaderboardDefinition: *mut EOS_Leaderboards_Definition,
    );
}
#[doc = " Data containing the result information for a query leaderboard definitions request."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_OnQueryLeaderboardDefinitionsCompleteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Leaderboards_QueryLeaderboardDefinitions."]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Leaderboards_OnQueryLeaderboardDefinitionsCompleteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result information for a query leaderboard definitions request."]
pub type EOS_Leaderboards_OnQueryLeaderboardDefinitionsCompleteCallbackInfo =
    _tagEOS_Leaderboards_OnQueryLeaderboardDefinitionsCompleteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Leaderboards_QueryLeaderboardDefinitions\n @param Data A EOS_Leaderboards_OnQueryLeaderboardDefinitionsCompleteCallbackInfo containing the output information and result"]
pub type EOS_Leaderboards_OnQueryLeaderboardDefinitionsCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(
        Data: *const EOS_Leaderboards_OnQueryLeaderboardDefinitionsCompleteCallbackInfo,
    ),
>;
#[doc = " Contains information about a single stat to query with user scores."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_UserScoresQueryStatInfo {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_USERSCORESQUERYSTATINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The name of the stat to query."]
    pub StatName: *const ::std::os::raw::c_char,
    #[doc = " Aggregation used to sort the cached user scores."]
    pub Aggregation: EOS_ELeaderboardAggregation,
}
impl Default for _tagEOS_Leaderboards_UserScoresQueryStatInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single stat to query with user scores."]
pub type EOS_Leaderboards_UserScoresQueryStatInfo = _tagEOS_Leaderboards_UserScoresQueryStatInfo;
#[doc = " Input parameters for the EOS_Leaderboards_QueryLeaderboardUserScores function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_QueryLeaderboardUserScoresOptions {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_QUERYLEADERBOARDUSERSCORES_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " An array of Product User IDs indicating the users whose scores you want to retrieve"]
    pub UserIds: *const EOS_ProductUserId,
    #[doc = " The number of users included in query"]
    pub UserIdsCount: u32,
    #[doc = " The stats to be collected, along with the sorting method to use when determining rank order for each stat"]
    pub StatInfo: *const EOS_Leaderboards_UserScoresQueryStatInfo,
    #[doc = " The number of stats to query"]
    pub StatInfoCount: u32,
    #[doc = " An optional POSIX timestamp, or EOS_LEADERBOARDS_TIME_UNDEFINED; results will only include scores made after this time"]
    pub StartTime: i64,
    #[doc = " An optional POSIX timestamp, or EOS_LEADERBOARDS_TIME_UNDEFINED; results will only include scores made before this time"]
    pub EndTime: i64,
    #[doc = " Product User ID for user who is querying user scores.\n Must be set when using a client policy that requires a valid logged in user.\n Not used for Dedicated Server where no user is available."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Leaderboards_QueryLeaderboardUserScoresOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Leaderboards_QueryLeaderboardUserScores function."]
pub type EOS_Leaderboards_QueryLeaderboardUserScoresOptions =
    _tagEOS_Leaderboards_QueryLeaderboardUserScoresOptions;
#[doc = " Contains information about a single leaderboard user score"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_LeaderboardUserScore {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_LEADERBOARDUSERSCORE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the user who got this score"]
    pub UserId: EOS_ProductUserId,
    #[doc = " Leaderboard score"]
    pub Score: i32,
}
impl Default for _tagEOS_Leaderboards_LeaderboardUserScore {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single leaderboard user score"]
pub type EOS_Leaderboards_LeaderboardUserScore = _tagEOS_Leaderboards_LeaderboardUserScore;
#[doc = " Input parameters for the EOS_Leaderboards_GetLeaderboardUserScoreCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_GetLeaderboardUserScoreCountOptions {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_GETLEADERBOARDUSERSCORECOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of stat used to rank leaderboard."]
    pub StatName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Leaderboards_GetLeaderboardUserScoreCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Leaderboards_GetLeaderboardUserScoreCount function."]
pub type EOS_Leaderboards_GetLeaderboardUserScoreCountOptions =
    _tagEOS_Leaderboards_GetLeaderboardUserScoreCountOptions;
#[doc = " Input parameters for the EOS_Leaderboards_CopyLeaderboardUserScoreByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_CopyLeaderboardUserScoreByIndexOptions {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_COPYLEADERBOARDUSERSCOREBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Index of the sorted leaderboard user score to retrieve from the cache."]
    pub LeaderboardUserScoreIndex: u32,
    #[doc = " Name of the stat used to rank the leaderboard."]
    pub StatName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Leaderboards_CopyLeaderboardUserScoreByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Leaderboards_CopyLeaderboardUserScoreByIndex function."]
pub type EOS_Leaderboards_CopyLeaderboardUserScoreByIndexOptions =
    _tagEOS_Leaderboards_CopyLeaderboardUserScoreByIndexOptions;
#[doc = " Input parameters for the EOS_Leaderboards_CopyLeaderboardUserScoreByUserId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_CopyLeaderboardUserScoreByUserIdOptions {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_COPYLEADERBOARDUSERSCOREBYUSERID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID to look for when copying leaderboard score data from the cache"]
    pub UserId: EOS_ProductUserId,
    #[doc = " The name of the stat that is used to rank this leaderboard"]
    pub StatName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Leaderboards_CopyLeaderboardUserScoreByUserIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Leaderboards_CopyLeaderboardUserScoreByUserId function."]
pub type EOS_Leaderboards_CopyLeaderboardUserScoreByUserIdOptions =
    _tagEOS_Leaderboards_CopyLeaderboardUserScoreByUserIdOptions;
unsafe extern "C" {
    #[doc = " Release the memory associated with leaderboard user score. This must be called on data retrieved from\n EOS_Leaderboards_CopyLeaderboardUserScoreByIndex or EOS_Leaderboards_CopyLeaderboardUserScoreByUserId.\n\n @param LeaderboardUserScore - The Leaderboard user score to release.\n\n @see EOS_Leaderboards_LeaderboardUserScore\n @see EOS_Leaderboards_CopyLeaderboardUserScoreByIndex\n @see EOS_Leaderboards_CopyLeaderboardUserScoreByUserId"]
    pub fn EOS_Leaderboards_LeaderboardUserScore_Release(
        LeaderboardUserScore: *mut EOS_Leaderboards_LeaderboardUserScore,
    );
}
#[doc = " Data containing the result information for a query leaderboard user scores request."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_OnQueryLeaderboardUserScoresCompleteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Leaderboards_QueryLeaderboardUserScores."]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Leaderboards_OnQueryLeaderboardUserScoresCompleteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result information for a query leaderboard user scores request."]
pub type EOS_Leaderboards_OnQueryLeaderboardUserScoresCompleteCallbackInfo =
    _tagEOS_Leaderboards_OnQueryLeaderboardUserScoresCompleteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Leaderboards_QueryLeaderboardUserScores\n @param Data A EOS_Leaderboards_OnQueryLeaderboardUserScoresCompleteCallbackInfo containing the output information and result"]
pub type EOS_Leaderboards_OnQueryLeaderboardUserScoresCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(
        Data: *const EOS_Leaderboards_OnQueryLeaderboardUserScoresCompleteCallbackInfo,
    ),
>;
#[doc = " Input parameters for the EOS_Leaderboards_QueryLeaderboardRanks function.\n\n @see EOS_Leaderboards_Definition"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_QueryLeaderboardRanksOptions {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_QUERYLEADERBOARDRANKS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The ID of the leaderboard whose information you want to retrieve."]
    pub LeaderboardId: *const ::std::os::raw::c_char,
    #[doc = " Product User ID for user who is querying ranks.\n Must be set when using a client policy that requires a valid logged in user.\n Not used for Dedicated Server where no user is available."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Leaderboards_QueryLeaderboardRanksOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Leaderboards_QueryLeaderboardRanks function.\n\n @see EOS_Leaderboards_Definition"]
pub type EOS_Leaderboards_QueryLeaderboardRanksOptions =
    _tagEOS_Leaderboards_QueryLeaderboardRanksOptions;
#[doc = " Contains information about a single leaderboard record"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_LeaderboardRecord {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_LEADERBOARDRECORD_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID associated with this record"]
    pub UserId: EOS_ProductUserId,
    #[doc = " Sorted position on leaderboard"]
    pub Rank: u32,
    #[doc = " Leaderboard score"]
    pub Score: i32,
    #[doc = " The latest display name seen for the user since they last time logged in. This is empty if the user does not have a display name set."]
    pub UserDisplayName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Leaderboards_LeaderboardRecord {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single leaderboard record"]
pub type EOS_Leaderboards_LeaderboardRecord = _tagEOS_Leaderboards_LeaderboardRecord;
#[doc = " Input parameters for the EOS_Leaderboards_GetLeaderboardRecordCount function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Leaderboards_GetLeaderboardRecordCountOptions {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_GETLEADERBOARDRECORDCOUNT_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_Leaderboards_GetLeaderboardRecordCount function."]
pub type EOS_Leaderboards_GetLeaderboardRecordCountOptions =
    _tagEOS_Leaderboards_GetLeaderboardRecordCountOptions;
#[doc = " Input parameters for the EOS_Leaderboards_CopyLeaderboardRecordByIndex function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_Leaderboards_CopyLeaderboardRecordByIndexOptions {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_COPYLEADERBOARDRECORDBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Index of the leaderboard record to retrieve from the cache"]
    pub LeaderboardRecordIndex: u32,
}
#[doc = " Input parameters for the EOS_Leaderboards_CopyLeaderboardRecordByIndex function."]
pub type EOS_Leaderboards_CopyLeaderboardRecordByIndexOptions =
    _tagEOS_Leaderboards_CopyLeaderboardRecordByIndexOptions;
#[doc = " Input parameters for the EOS_Leaderboards_CopyLeaderboardRecordByUserId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_CopyLeaderboardRecordByUserIdOptions {
    #[doc = " API Version: Set this to EOS_LEADERBOARDS_COPYLEADERBOARDRECORDBYUSERID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Leaderboard data will be copied from the cache if it relates to the user matching this Product User ID"]
    pub UserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Leaderboards_CopyLeaderboardRecordByUserIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Leaderboards_CopyLeaderboardRecordByUserId function."]
pub type EOS_Leaderboards_CopyLeaderboardRecordByUserIdOptions =
    _tagEOS_Leaderboards_CopyLeaderboardRecordByUserIdOptions;
unsafe extern "C" {
    #[doc = " Release the memory associated with leaderboard record. This must be called on data retrieved from\n EOS_Leaderboards_CopyLeaderboardRecordByIndex or EOS_Leaderboards_CopyLeaderboardRecordByUserId.\n\n @param LeaderboardRecord - The Leaderboard record to release.\n\n @see EOS_Leaderboards_LeaderboardRecord\n @see EOS_Leaderboards_CopyLeaderboardRecordByIndex\n @see EOS_Leaderboards_CopyLeaderboardRecordByUserId"]
    pub fn EOS_Leaderboards_LeaderboardRecord_Release(
        LeaderboardRecord: *mut EOS_Leaderboards_LeaderboardRecord,
    );
}
#[doc = " Data containing the result information for a query leaderboard ranks request."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Leaderboards_OnQueryLeaderboardRanksCompleteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Leaderboards_QueryLeaderboardRanks."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Leaderboard ID for the leaderboard that was queried."]
    pub LeaderboardId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Leaderboards_OnQueryLeaderboardRanksCompleteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result information for a query leaderboard ranks request."]
pub type EOS_Leaderboards_OnQueryLeaderboardRanksCompleteCallbackInfo =
    _tagEOS_Leaderboards_OnQueryLeaderboardRanksCompleteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Leaderboards_QueryLeaderboardRanks\n @param Data A EOS_Leaderboards_OnQueryLeaderboardRanksCompleteCallbackInfo containing the output information and result"]
pub type EOS_Leaderboards_OnQueryLeaderboardRanksCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Leaderboards_OnQueryLeaderboardRanksCompleteCallbackInfo),
>;
unsafe extern "C" {
    #[doc = " Do not use. Alias to the previous API name for backwards compatibility in compilation."]
    pub fn EOS_Leaderboards_LeaderboardDefinition_Release(
        LeaderboardDefinition: *mut EOS_Leaderboards_Definition,
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_ModsHandle {
    _unused: [u8; 0],
}
pub type EOS_HMods = *mut EOS_ModsHandle;
#[doc = " EOS_Mod_Identifier is used to identify a mod."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Mod_Identifier {
    #[doc = " API Version: Set this to EOS_MOD_IDENTIFIER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product namespace id in which this mod item exists"]
    pub NamespaceId: *const ::std::os::raw::c_char,
    #[doc = " Item id of the Mod"]
    pub ItemId: *const ::std::os::raw::c_char,
    #[doc = " Artifact id of the Mod"]
    pub ArtifactId: *const ::std::os::raw::c_char,
    #[doc = " Represent mod item title."]
    pub Title: *const ::std::os::raw::c_char,
    #[doc = " Represent mod item version."]
    pub Version: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Mod_Identifier {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " EOS_Mod_Identifier is used to identify a mod."]
pub type EOS_Mod_Identifier = _tagEOS_Mod_Identifier;
#[doc = " Input parameters for the EOS_Mods_InstallMod Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Mods_InstallModOptions {
    #[doc = " API Version: Set this to EOS_MODS_INSTALLMOD_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user for which the mod should be installed"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The mod to install"]
    pub Mod: *const EOS_Mod_Identifier,
    #[doc = " Indicates whether the mod should be uninstalled after exiting the game or not."]
    pub bRemoveAfterExit: EOS_Bool,
}
impl Default for _tagEOS_Mods_InstallModOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Mods_InstallMod Function."]
pub type EOS_Mods_InstallModOptions = _tagEOS_Mods_InstallModOptions;
#[doc = " Output parameters for the EOS_Mods_InstallMod Function. These parameters are received through the callback provided to EOS_Mods_InstallMod"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Mods_InstallModCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned if the installation was successful, otherwise one of the error codes is returned."]
    pub ResultCode: EOS_EResult,
    #[doc = " The Epic Account ID of the user for which mod installation was requested"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Context that is passed into EOS_Mods_InstallMod"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Mod for which installation was requested"]
    pub Mod: *const EOS_Mod_Identifier,
}
impl Default for _tagEOS_Mods_InstallModCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Mods_InstallMod Function. These parameters are received through the callback provided to EOS_Mods_InstallMod"]
pub type EOS_Mods_InstallModCallbackInfo = _tagEOS_Mods_InstallModCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Mods_InstallMod\n @param Data A EOS_Mods_InstallModCallbackInfo containing the output information and result"]
pub type EOS_Mods_OnInstallModCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Mods_InstallModCallbackInfo)>;
#[doc = " Input parameters for the EOS_Mods_UninstallMod Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Mods_UninstallModOptions {
    #[doc = " API Version: Set this to EOS_MODS_UNINSTALLMOD_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user for which the mod should be uninstalled"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The mod to uninstall"]
    pub Mod: *const EOS_Mod_Identifier,
}
impl Default for _tagEOS_Mods_UninstallModOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Mods_UninstallMod Function."]
pub type EOS_Mods_UninstallModOptions = _tagEOS_Mods_UninstallModOptions;
#[doc = " Output parameters for the EOS_Mods_UninstallMod Function. These parameters are received through the callback provided to EOS_Mods_UninstallMod"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Mods_UninstallModCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned if the uninstallation was successful, otherwise one of the error codes is returned."]
    pub ResultCode: EOS_EResult,
    #[doc = " The Epic Account ID of the user for which mod uninstallation was requested"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Context that is passed into EOS_Mods_UninstallMod"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Mod for which uninstallation was requested"]
    pub Mod: *const EOS_Mod_Identifier,
}
impl Default for _tagEOS_Mods_UninstallModCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Mods_UninstallMod Function. These parameters are received through the callback provided to EOS_Mods_UninstallMod"]
pub type EOS_Mods_UninstallModCallbackInfo = _tagEOS_Mods_UninstallModCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Mods_UninstallMod\n @param Data A EOS_Mods_UninstallModCallbackInfo containing the output information and result"]
pub type EOS_Mods_OnUninstallModCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Mods_UninstallModCallbackInfo)>;
#[doc = " Installed mods"]
pub const EOS_EModEnumerationType_EOS_MET_INSTALLED: EOS_EModEnumerationType = 0;
#[doc = " All available mods"]
pub const EOS_EModEnumerationType_EOS_MET_ALL_AVAILABLE: EOS_EModEnumerationType = 1;
pub const EOS_EModEnumerationType___EOS_EModEnumerationType_PAD_INT32__: EOS_EModEnumerationType =
    2147483647;
#[doc = " The type of mod enumeration."]
pub type EOS_EModEnumerationType = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_Mods_EnumerateMods Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Mods_EnumerateModsOptions {
    #[doc = " API Version: Set this to EOS_MODS_ENUMERATEMODS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user for which the mod should be enumerated"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Type of the mods to enumerate"]
    pub Type: EOS_EModEnumerationType,
}
impl Default for _tagEOS_Mods_EnumerateModsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Mods_EnumerateMods Function."]
pub type EOS_Mods_EnumerateModsOptions = _tagEOS_Mods_EnumerateModsOptions;
#[doc = " Output parameters for the EOS_Mods_EnumerateMods Function. These parameters are received through the callback provided to EOS_Mods_EnumerateMods"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Mods_EnumerateModsCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned if the enumeration was successful, otherwise one of the error codes is returned."]
    pub ResultCode: EOS_EResult,
    #[doc = " The Epic Account ID of the user for which mod enumeration was requested"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Context that is passed into EOS_Mods_EnumerateMods"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Type of the enumerated mods"]
    pub Type: EOS_EModEnumerationType,
}
impl Default for _tagEOS_Mods_EnumerateModsCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Mods_EnumerateMods Function. These parameters are received through the callback provided to EOS_Mods_EnumerateMods"]
pub type EOS_Mods_EnumerateModsCallbackInfo = _tagEOS_Mods_EnumerateModsCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Mods_EnumerateMods\n @param Data A EOS_Mods_EnumerateModsCallbackInfo containing the output information and result"]
pub type EOS_Mods_OnEnumerateModsCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Mods_EnumerateModsCallbackInfo)>;
#[doc = " Data for the EOS_Mods_CopyModInfo function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Mods_CopyModInfoOptions {
    #[doc = " API Version: Set this to EOS_MODS_COPYMODINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user for which mods should be copied"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Type of the enumerated mod to copy"]
    pub Type: EOS_EModEnumerationType,
}
impl Default for _tagEOS_Mods_CopyModInfoOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_Mods_CopyModInfo function."]
pub type EOS_Mods_CopyModInfoOptions = _tagEOS_Mods_CopyModInfoOptions;
#[doc = " Data for the EOS_Mods_CopyModInfo function.\n\n @see EOS_Mods_CopyModInfo\n @see EOS_Mods_ModInfo_Release"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Mods_ModInfo {
    #[doc = " API Version: Set this to EOS_MODS_MODINFO_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The count of enumerated mods"]
    pub ModsCount: i32,
    #[doc = " The array of enumerated mods or NULL if no such type of mods were enumerated"]
    pub Mods: *mut EOS_Mod_Identifier,
    #[doc = " Type of the mods"]
    pub Type: EOS_EModEnumerationType,
}
impl Default for _tagEOS_Mods_ModInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data for the EOS_Mods_CopyModInfo function.\n\n @see EOS_Mods_CopyModInfo\n @see EOS_Mods_ModInfo_Release"]
pub type EOS_Mods_ModInfo = _tagEOS_Mods_ModInfo;
unsafe extern "C" {
    #[doc = " Release the memory associated with an EOS_Mods_ModInfo structure and its sub-objects. This must be called on data retrieved from EOS_Mods_CopyModInfo.\n\n @param ModInfo the info structure to be release\n\n @see EOS_Mods_ModInfo\n @see EOS_Mods_CopyModInfo"]
    pub fn EOS_Mods_ModInfo_Release(ModInfo: *mut EOS_Mods_ModInfo);
}
#[doc = " Input parameters for the EOS_Mods_UpdateMod Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Mods_UpdateModOptions {
    #[doc = " API Version: Set this to EOS_MODS_UPDATEMOD_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Epic Account ID of the user for which the mod should be updated"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " The mod to update"]
    pub Mod: *const EOS_Mod_Identifier,
}
impl Default for _tagEOS_Mods_UpdateModOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Mods_UpdateMod Function."]
pub type EOS_Mods_UpdateModOptions = _tagEOS_Mods_UpdateModOptions;
#[doc = " Output parameters for the EOS_Mods_UpdateMod Function. These parameters are received through the callback provided to EOS_Mods_UpdateMod"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Mods_UpdateModCallbackInfo {
    #[doc = " Result code for the operation. EOS_Success is returned if the request to update was successful, otherwise one of the error codes is returned."]
    pub ResultCode: EOS_EResult,
    #[doc = " The Epic Account ID of the user for which mod update was requested"]
    pub LocalUserId: EOS_EpicAccountId,
    #[doc = " Context that is passed into EOS_Mods_UpdateMod"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Mod for which update was requested"]
    pub Mod: *const EOS_Mod_Identifier,
}
impl Default for _tagEOS_Mods_UpdateModCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Mods_UpdateMod Function. These parameters are received through the callback provided to EOS_Mods_UpdateMod"]
pub type EOS_Mods_UpdateModCallbackInfo = _tagEOS_Mods_UpdateModCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Mods_UpdateMod\n @param Data A EOS_Mods_UpdateModCallbackInfo containing the output information and result"]
pub type EOS_Mods_OnUpdateModCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_Mods_UpdateModCallbackInfo)>;
#[doc = " Arbitrary data that is a unique local identifier for\n a single remote client or peer.\n\n Typically this is a pointer to an object describing the\n player, but it can be anything that is locally unique."]
pub type EOS_AntiCheatCommon_ClientHandle = *mut ::std::os::raw::c_void;
#[doc = " An ordinary player that requires anti-cheat client protection to play"]
pub const EOS_EAntiCheatCommonClientType_EOS_ACCCT_ProtectedClient: EOS_EAntiCheatCommonClientType =
    0;
#[doc = " The player does not need the anti-cheat client to play because of their platform or other factors"]
pub const EOS_EAntiCheatCommonClientType_EOS_ACCCT_UnprotectedClient:
    EOS_EAntiCheatCommonClientType = 1;
#[doc = " The client is an AI bot, not an actual human"]
pub const EOS_EAntiCheatCommonClientType_EOS_ACCCT_AIBot: EOS_EAntiCheatCommonClientType = 2;
pub const EOS_EAntiCheatCommonClientType___EOS_EAntiCheatCommonClientType_PAD_INT32__:
    EOS_EAntiCheatCommonClientType = 2147483647;
#[doc = " Flags describing the type of a remote client"]
pub type EOS_EAntiCheatCommonClientType = ::std::os::raw::c_int;
#[doc = " Unknown platform"]
pub const EOS_EAntiCheatCommonClientPlatform_EOS_ACCCP_Unknown: EOS_EAntiCheatCommonClientPlatform =
    0;
#[doc = " The client is playing on Windows"]
pub const EOS_EAntiCheatCommonClientPlatform_EOS_ACCCP_Windows: EOS_EAntiCheatCommonClientPlatform =
    1;
#[doc = " The client is playing on Mac"]
pub const EOS_EAntiCheatCommonClientPlatform_EOS_ACCCP_Mac: EOS_EAntiCheatCommonClientPlatform = 2;
#[doc = " The client is playing on Linux"]
pub const EOS_EAntiCheatCommonClientPlatform_EOS_ACCCP_Linux: EOS_EAntiCheatCommonClientPlatform =
    3;
#[doc = " The client is playing on an Xbox device"]
pub const EOS_EAntiCheatCommonClientPlatform_EOS_ACCCP_Xbox: EOS_EAntiCheatCommonClientPlatform = 4;
#[doc = " The client is playing on a PlayStation device"]
pub const EOS_EAntiCheatCommonClientPlatform_EOS_ACCCP_PlayStation:
    EOS_EAntiCheatCommonClientPlatform = 5;
#[doc = " The client is playing on a Nintendo device"]
pub const EOS_EAntiCheatCommonClientPlatform_EOS_ACCCP_Nintendo:
    EOS_EAntiCheatCommonClientPlatform = 6;
#[doc = " The client is playing on iOS"]
pub const EOS_EAntiCheatCommonClientPlatform_EOS_ACCCP_iOS: EOS_EAntiCheatCommonClientPlatform = 7;
#[doc = " The client is playing on Android"]
pub const EOS_EAntiCheatCommonClientPlatform_EOS_ACCCP_Android: EOS_EAntiCheatCommonClientPlatform =
    8;
pub const EOS_EAntiCheatCommonClientPlatform___EOS_EAntiCheatCommonClientPlatform_PAD_INT32__:
    EOS_EAntiCheatCommonClientPlatform = 2147483647;
#[doc = " Flags describing the platform of a remote client, if known"]
pub type EOS_EAntiCheatCommonClientPlatform = ::std::os::raw::c_int;
#[doc = " Not used"]
pub const EOS_EAntiCheatCommonClientAction_EOS_ACCCA_Invalid: EOS_EAntiCheatCommonClientAction = 0;
#[doc = " The client/peer must be removed from the current game session"]
pub const EOS_EAntiCheatCommonClientAction_EOS_ACCCA_RemovePlayer:
    EOS_EAntiCheatCommonClientAction = 1;
pub const EOS_EAntiCheatCommonClientAction___EOS_EAntiCheatCommonClientAction_PAD_INT32__:
    EOS_EAntiCheatCommonClientAction = 2147483647;
#[doc = " Anti-cheat action values. Applicable to both clients and remote peers."]
pub type EOS_EAntiCheatCommonClientAction = ::std::os::raw::c_int;
#[doc = " Not used"]
pub const EOS_EAntiCheatCommonClientActionReason_EOS_ACCCAR_Invalid:
    EOS_EAntiCheatCommonClientActionReason = 0;
#[doc = " An internal error occurred"]
pub const EOS_EAntiCheatCommonClientActionReason_EOS_ACCCAR_InternalError:
    EOS_EAntiCheatCommonClientActionReason = 1;
#[doc = " An anti-cheat message received from the client/peer was corrupt or invalid"]
pub const EOS_EAntiCheatCommonClientActionReason_EOS_ACCCAR_InvalidMessage:
    EOS_EAntiCheatCommonClientActionReason = 2;
#[doc = " The client/peer's anti-cheat authentication failed"]
pub const EOS_EAntiCheatCommonClientActionReason_EOS_ACCCAR_AuthenticationFailed:
    EOS_EAntiCheatCommonClientActionReason = 3;
#[doc = " The client/peer failed to load the anti-cheat module at startup"]
pub const EOS_EAntiCheatCommonClientActionReason_EOS_ACCCAR_NullClient:
    EOS_EAntiCheatCommonClientActionReason = 4;
#[doc = " The client/peer's anti-cheat heartbeat was not received"]
pub const EOS_EAntiCheatCommonClientActionReason_EOS_ACCCAR_HeartbeatTimeout:
    EOS_EAntiCheatCommonClientActionReason = 5;
#[doc = " The client/peer failed an anti-cheat client runtime check"]
pub const EOS_EAntiCheatCommonClientActionReason_EOS_ACCCAR_ClientViolation:
    EOS_EAntiCheatCommonClientActionReason = 6;
#[doc = " The client/peer failed an anti-cheat backend runtime check"]
pub const EOS_EAntiCheatCommonClientActionReason_EOS_ACCCAR_BackendViolation:
    EOS_EAntiCheatCommonClientActionReason = 7;
#[doc = " The client/peer is temporarily blocked from playing on this game server"]
pub const EOS_EAntiCheatCommonClientActionReason_EOS_ACCCAR_TemporaryCooldown:
    EOS_EAntiCheatCommonClientActionReason = 8;
#[doc = " The client/peer is temporarily banned"]
pub const EOS_EAntiCheatCommonClientActionReason_EOS_ACCCAR_TemporaryBanned:
    EOS_EAntiCheatCommonClientActionReason = 9;
#[doc = " The client/peer is permanently banned"]
pub const EOS_EAntiCheatCommonClientActionReason_EOS_ACCCAR_PermanentBanned:
    EOS_EAntiCheatCommonClientActionReason = 10;
pub const EOS_EAntiCheatCommonClientActionReason___EOS_EAntiCheatCommonClientActionReason_PAD_INT32__ : EOS_EAntiCheatCommonClientActionReason = 2147483647 ;
#[doc = " Anti-cheat action reasons. Applicable to both clients and remote peers."]
pub type EOS_EAntiCheatCommonClientActionReason = ::std::os::raw::c_int;
#[doc = " Not used"]
pub const EOS_EAntiCheatCommonClientAuthStatus_EOS_ACCCAS_Invalid:
    EOS_EAntiCheatCommonClientAuthStatus = 0;
#[doc = " The client/peer's anti-cheat functionality has been validated by this game server"]
pub const EOS_EAntiCheatCommonClientAuthStatus_EOS_ACCCAS_LocalAuthComplete:
    EOS_EAntiCheatCommonClientAuthStatus = 1;
#[doc = " The client/peer's anti-cheat functionality has been validated by the anti-cheat backend service"]
pub const EOS_EAntiCheatCommonClientAuthStatus_EOS_ACCCAS_RemoteAuthComplete:
    EOS_EAntiCheatCommonClientAuthStatus = 2;
pub const EOS_EAntiCheatCommonClientAuthStatus___EOS_EAntiCheatCommonClientAuthStatus_PAD_INT32__ : EOS_EAntiCheatCommonClientAuthStatus = 2147483647 ;
#[doc = " The client/peer's anti-cheat authentication status"]
pub type EOS_EAntiCheatCommonClientAuthStatus = ::std::os::raw::c_int;
#[doc = " No particular flags relevant for this client"]
pub const EOS_EAntiCheatCommonClientFlags_EOS_ACCCF_None: EOS_EAntiCheatCommonClientFlags = 0;
#[doc = " The client has admin privileges on the game server"]
pub const EOS_EAntiCheatCommonClientFlags_EOS_ACCCF_Admin: EOS_EAntiCheatCommonClientFlags = 1;
pub const EOS_EAntiCheatCommonClientFlags___EOS_EAntiCheatCommonClientFlags_PAD_INT32__:
    EOS_EAntiCheatCommonClientFlags = 2147483647;
#[doc = " Flags describing a remote client. These can be updated during a play session"]
pub type EOS_EAntiCheatCommonClientFlags = ::std::os::raw::c_int;
#[doc = " Unknown input device"]
pub const EOS_EAntiCheatCommonClientInput_EOS_ACCCI_Unknown: EOS_EAntiCheatCommonClientInput = 0;
#[doc = " The client is using mouse and keyboard"]
pub const EOS_EAntiCheatCommonClientInput_EOS_ACCCI_MouseKeyboard: EOS_EAntiCheatCommonClientInput =
    1;
#[doc = " The client is using a gamepad or game controller"]
pub const EOS_EAntiCheatCommonClientInput_EOS_ACCCI_Gamepad: EOS_EAntiCheatCommonClientInput = 2;
#[doc = " The client is using a touch input device (e.g. phone/tablet screen)"]
pub const EOS_EAntiCheatCommonClientInput_EOS_ACCCI_TouchInput: EOS_EAntiCheatCommonClientInput = 3;
pub const EOS_EAntiCheatCommonClientInput___EOS_EAntiCheatCommonClientInput_PAD_INT32__:
    EOS_EAntiCheatCommonClientInput = 2147483647;
#[doc = " Flags describing the input device used by a remote client, if known. These can be updated during a play session."]
pub type EOS_EAntiCheatCommonClientInput = ::std::os::raw::c_int;
#[doc = " Not used"]
pub const EOS_EAntiCheatCommonEventType_EOS_ACCET_Invalid: EOS_EAntiCheatCommonEventType = 0;
#[doc = " A general game event that is not specific to any individual player.\n Low memory use which is constant with respect to the number of players."]
pub const EOS_EAntiCheatCommonEventType_EOS_ACCET_GameEvent: EOS_EAntiCheatCommonEventType = 1;
#[doc = " An event that is logically associated with a specific player. Events logged in\n this category require a specific ClientHandle to which they will be attached.\n Higher memory use which scales according to the number of players."]
pub const EOS_EAntiCheatCommonEventType_EOS_ACCET_PlayerEvent: EOS_EAntiCheatCommonEventType = 2;
pub const EOS_EAntiCheatCommonEventType___EOS_EAntiCheatCommonEventType_PAD_INT32__:
    EOS_EAntiCheatCommonEventType = 2147483647;
#[doc = " Types supported for custom gameplay behavior events.\n These have a considerable impact on performance"]
pub type EOS_EAntiCheatCommonEventType = ::std::os::raw::c_int;
#[doc = " Not used"]
pub const EOS_EAntiCheatCommonEventParamType_EOS_ACCEPT_Invalid:
    EOS_EAntiCheatCommonEventParamType = 0;
#[doc = " EOS_AntiCheatCommon_ClientHandle"]
pub const EOS_EAntiCheatCommonEventParamType_EOS_ACCEPT_ClientHandle:
    EOS_EAntiCheatCommonEventParamType = 1;
#[doc = " const char*"]
pub const EOS_EAntiCheatCommonEventParamType_EOS_ACCEPT_String: EOS_EAntiCheatCommonEventParamType =
    2;
#[doc = " uint32_t"]
pub const EOS_EAntiCheatCommonEventParamType_EOS_ACCEPT_UInt32: EOS_EAntiCheatCommonEventParamType =
    3;
#[doc = " int32_t"]
pub const EOS_EAntiCheatCommonEventParamType_EOS_ACCEPT_Int32: EOS_EAntiCheatCommonEventParamType =
    4;
#[doc = " uint64_t"]
pub const EOS_EAntiCheatCommonEventParamType_EOS_ACCEPT_UInt64: EOS_EAntiCheatCommonEventParamType =
    5;
#[doc = " int64_t"]
pub const EOS_EAntiCheatCommonEventParamType_EOS_ACCEPT_Int64: EOS_EAntiCheatCommonEventParamType =
    6;
#[doc = " EOS_AntiCheatCommon_Vec3f"]
pub const EOS_EAntiCheatCommonEventParamType_EOS_ACCEPT_Vector3f:
    EOS_EAntiCheatCommonEventParamType = 7;
#[doc = " EOS_AntiCheatCommon_Quat"]
pub const EOS_EAntiCheatCommonEventParamType_EOS_ACCEPT_Quat: EOS_EAntiCheatCommonEventParamType =
    8;
#[doc = " float"]
pub const EOS_EAntiCheatCommonEventParamType_EOS_ACCEPT_Float: EOS_EAntiCheatCommonEventParamType =
    9;
pub const EOS_EAntiCheatCommonEventParamType___EOS_EAntiCheatCommonEventParamType_PAD_INT32__:
    EOS_EAntiCheatCommonEventParamType = 2147483647;
#[doc = " Types supported for custom gameplay behavior event parameters"]
pub type EOS_EAntiCheatCommonEventParamType = ::std::os::raw::c_int;
#[doc = " No particular competition type applies"]
pub const EOS_EAntiCheatCommonGameRoundCompetitionType_EOS_ACCGRCT_None:
    EOS_EAntiCheatCommonGameRoundCompetitionType = 0;
#[doc = " Casual unranked play"]
pub const EOS_EAntiCheatCommonGameRoundCompetitionType_EOS_ACCGRCT_Casual:
    EOS_EAntiCheatCommonGameRoundCompetitionType = 1;
#[doc = " Ranked play, usually with skill based matchmaking"]
pub const EOS_EAntiCheatCommonGameRoundCompetitionType_EOS_ACCGRCT_Ranked:
    EOS_EAntiCheatCommonGameRoundCompetitionType = 2;
#[doc = " Organized competitive play like a tournament"]
pub const EOS_EAntiCheatCommonGameRoundCompetitionType_EOS_ACCGRCT_Competitive:
    EOS_EAntiCheatCommonGameRoundCompetitionType = 3;
pub const EOS_EAntiCheatCommonGameRoundCompetitionType___EOS_EAntiCheatCommonGameRoundCompetitionType_PAD_INT32__ : EOS_EAntiCheatCommonGameRoundCompetitionType = 2147483647 ;
#[doc = " Flags describing the type of competition taking place"]
pub type EOS_EAntiCheatCommonGameRoundCompetitionType = ::std::os::raw::c_int;
#[doc = " No particular state applies"]
pub const EOS_EAntiCheatCommonPlayerMovementState_EOS_ACCPMS_None:
    EOS_EAntiCheatCommonPlayerMovementState = 0;
#[doc = " Player is crouching"]
pub const EOS_EAntiCheatCommonPlayerMovementState_EOS_ACCPMS_Crouching:
    EOS_EAntiCheatCommonPlayerMovementState = 1;
#[doc = " Player is prone"]
pub const EOS_EAntiCheatCommonPlayerMovementState_EOS_ACCPMS_Prone:
    EOS_EAntiCheatCommonPlayerMovementState = 2;
#[doc = " Player is mounted in a vehicle or similar"]
pub const EOS_EAntiCheatCommonPlayerMovementState_EOS_ACCPMS_Mounted:
    EOS_EAntiCheatCommonPlayerMovementState = 3;
#[doc = " Player is swimming in a fluid volume"]
pub const EOS_EAntiCheatCommonPlayerMovementState_EOS_ACCPMS_Swimming:
    EOS_EAntiCheatCommonPlayerMovementState = 4;
#[doc = " Player is falling under the effects of gravity, such as when jumping or walking off the edge of a surface"]
pub const EOS_EAntiCheatCommonPlayerMovementState_EOS_ACCPMS_Falling:
    EOS_EAntiCheatCommonPlayerMovementState = 5;
#[doc = " Player is flying, ignoring the effects of gravity"]
pub const EOS_EAntiCheatCommonPlayerMovementState_EOS_ACCPMS_Flying:
    EOS_EAntiCheatCommonPlayerMovementState = 6;
#[doc = " Player is on a ladder"]
pub const EOS_EAntiCheatCommonPlayerMovementState_EOS_ACCPMS_OnLadder:
    EOS_EAntiCheatCommonPlayerMovementState = 7;
pub const EOS_EAntiCheatCommonPlayerMovementState___EOS_EAntiCheatCommonPlayerMovementState_PAD_INT32__ : EOS_EAntiCheatCommonPlayerMovementState = 2147483647 ;
#[doc = " Details of a player's movement state"]
pub type EOS_EAntiCheatCommonPlayerMovementState = ::std::os::raw::c_int;
#[doc = " No particular source relevant"]
pub const EOS_EAntiCheatCommonPlayerTakeDamageSource_EOS_ACCPTDS_None:
    EOS_EAntiCheatCommonPlayerTakeDamageSource = 0;
#[doc = " Damage caused by a player controlled character"]
pub const EOS_EAntiCheatCommonPlayerTakeDamageSource_EOS_ACCPTDS_Player:
    EOS_EAntiCheatCommonPlayerTakeDamageSource = 1;
#[doc = " Damage caused by a non-player character such as an AI enemy"]
pub const EOS_EAntiCheatCommonPlayerTakeDamageSource_EOS_ACCPTDS_NonPlayerCharacter:
    EOS_EAntiCheatCommonPlayerTakeDamageSource = 2;
#[doc = " Damage caused by the world (falling off level, into lava, etc)"]
pub const EOS_EAntiCheatCommonPlayerTakeDamageSource_EOS_ACCPTDS_World:
    EOS_EAntiCheatCommonPlayerTakeDamageSource = 3;
pub const EOS_EAntiCheatCommonPlayerTakeDamageSource___EOS_EAntiCheatCommonPlayerTakeDamageSource_PAD_INT32__ : EOS_EAntiCheatCommonPlayerTakeDamageSource = 2147483647 ;
#[doc = " The source of a damage event"]
pub type EOS_EAntiCheatCommonPlayerTakeDamageSource = ::std::os::raw::c_int;
#[doc = " No particular type relevant"]
pub const EOS_EAntiCheatCommonPlayerTakeDamageType_EOS_ACCPTDT_None:
    EOS_EAntiCheatCommonPlayerTakeDamageType = 0;
#[doc = " Damage caused by a point source such as a bullet or melee attack"]
pub const EOS_EAntiCheatCommonPlayerTakeDamageType_EOS_ACCPTDT_PointDamage:
    EOS_EAntiCheatCommonPlayerTakeDamageType = 1;
#[doc = " Damage caused by a radial source such as an explosion"]
pub const EOS_EAntiCheatCommonPlayerTakeDamageType_EOS_ACCPTDT_RadialDamage:
    EOS_EAntiCheatCommonPlayerTakeDamageType = 2;
#[doc = " Damage over time such as bleeding, poison, etc"]
pub const EOS_EAntiCheatCommonPlayerTakeDamageType_EOS_ACCPTDT_DamageOverTime:
    EOS_EAntiCheatCommonPlayerTakeDamageType = 3;
pub const EOS_EAntiCheatCommonPlayerTakeDamageType___EOS_EAntiCheatCommonPlayerTakeDamageType_PAD_INT32__ : EOS_EAntiCheatCommonPlayerTakeDamageType = 2147483647 ;
#[doc = " Type of damage applied in a damage event"]
pub type EOS_EAntiCheatCommonPlayerTakeDamageType = ::std::os::raw::c_int;
#[doc = " No direct state change consequence for the victim"]
pub const EOS_EAntiCheatCommonPlayerTakeDamageResult_EOS_ACCPTDR_None:
    EOS_EAntiCheatCommonPlayerTakeDamageResult = 0;
#[doc = " Deprecated - use more specific values below instead"]
pub const EOS_EAntiCheatCommonPlayerTakeDamageResult_EOS_ACCPTDR_Downed_DEPRECATED:
    EOS_EAntiCheatCommonPlayerTakeDamageResult = 1;
#[doc = " Deprecated - use more specific values below instead"]
pub const EOS_EAntiCheatCommonPlayerTakeDamageResult_EOS_ACCPTDR_Eliminated_DEPRECATED:
    EOS_EAntiCheatCommonPlayerTakeDamageResult = 2;
#[doc = " Player character transitioned from a normal state to temporarily incapacitated and requires assistance to recover."]
pub const EOS_EAntiCheatCommonPlayerTakeDamageResult_EOS_ACCPTDR_NormalToDowned:
    EOS_EAntiCheatCommonPlayerTakeDamageResult = 3;
#[doc = " Player character transitioned from a normal state to permanently incapacitated and cannot recover (e.g. dead)."]
pub const EOS_EAntiCheatCommonPlayerTakeDamageResult_EOS_ACCPTDR_NormalToEliminated:
    EOS_EAntiCheatCommonPlayerTakeDamageResult = 4;
#[doc = " Player character transitioned from a temporarily incapacitated state to permanently incapacitated and cannot recover (e.g. dead)."]
pub const EOS_EAntiCheatCommonPlayerTakeDamageResult_EOS_ACCPTDR_DownedToEliminated:
    EOS_EAntiCheatCommonPlayerTakeDamageResult = 5;
pub const EOS_EAntiCheatCommonPlayerTakeDamageResult___EOS_EAntiCheatCommonPlayerTakeDamageResult_PAD_INT32__ : EOS_EAntiCheatCommonPlayerTakeDamageResult = 2147483647 ;
#[doc = " The result of a damage event, if any"]
pub type EOS_EAntiCheatCommonPlayerTakeDamageResult = ::std::os::raw::c_int;
#[doc = " Vector using left-handed coordinate system (as in Unreal Engine)"]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_Vec3f {
    #[doc = " X axis coordinate - forward direction"]
    pub x: f32,
    #[doc = " Y axis coordinate - right direction"]
    pub y: f32,
    #[doc = " Z axis coordinate - up direction"]
    pub z: f32,
}
#[doc = " Vector using left-handed coordinate system (as in Unreal Engine)"]
pub type EOS_AntiCheatCommon_Vec3f = _tagEOS_AntiCheatCommon_Vec3f;
#[doc = " Quaternion using left-handed coordinate system (as in Unreal Engine)"]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_Quat {
    #[doc = " W component - scalar part"]
    pub w: f32,
    #[doc = " X component - forward direction"]
    pub x: f32,
    #[doc = " Y component - right direction"]
    pub y: f32,
    #[doc = " Z component - up direction"]
    pub z: f32,
}
#[doc = " Quaternion using left-handed coordinate system (as in Unreal Engine)"]
pub type EOS_AntiCheatCommon_Quat = _tagEOS_AntiCheatCommon_Quat;
#[doc = " Structure containing details about a new message that must be dispatched to a connected client/peer."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_OnMessageToClientCallbackInfo {
    #[doc = " Caller-specified context data"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The identifier of the client/peer that this message must be delivered to. See the RegisterClient and RegisterPeer functions."]
    pub ClientHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " The message data that must be sent to the client"]
    pub MessageData: *const ::std::os::raw::c_void,
    #[doc = " The size in bytes of MessageData"]
    pub MessageDataSizeBytes: u32,
}
impl Default for _tagEOS_AntiCheatCommon_OnMessageToClientCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing details about a new message that must be dispatched to a connected client/peer."]
pub type EOS_AntiCheatCommon_OnMessageToClientCallbackInfo =
    _tagEOS_AntiCheatCommon_OnMessageToClientCallbackInfo;
#[doc = " Structure containing details about a required client/peer action"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_OnClientActionRequiredCallbackInfo {
    #[doc = " Caller-specified context data"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The identifier of the client/peer that this action applies to. See the RegisterClient and RegisterPeer functions."]
    pub ClientHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " The action that must be applied to the specified client/peer"]
    pub ClientAction: EOS_EAntiCheatCommonClientAction,
    #[doc = " Code indicating the reason for the action. This can be displayed to the affected player."]
    pub ActionReasonCode: EOS_EAntiCheatCommonClientActionReason,
    #[doc = " String containing details about the action reason. This can be displayed to the affected player."]
    pub ActionReasonDetailsString: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_AntiCheatCommon_OnClientActionRequiredCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing details about a required client/peer action"]
pub type EOS_AntiCheatCommon_OnClientActionRequiredCallbackInfo =
    _tagEOS_AntiCheatCommon_OnClientActionRequiredCallbackInfo;
#[doc = " Structure containing details about a client/peer authentication status change"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_OnClientAuthStatusChangedCallbackInfo {
    #[doc = " Caller-specified context data"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The identifier of the client/peer that this status change applies to. See the RegisterClient and RegisterPeer functions."]
    pub ClientHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " The client/peer's new authentication status"]
    pub ClientAuthStatus: EOS_EAntiCheatCommonClientAuthStatus,
}
impl Default for _tagEOS_AntiCheatCommon_OnClientAuthStatusChangedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing details about a client/peer authentication status change"]
pub type EOS_AntiCheatCommon_OnClientAuthStatusChangedCallbackInfo =
    _tagEOS_AntiCheatCommon_OnClientAuthStatusChangedCallbackInfo;
#[doc = " Input parameters for the EOS_AntiCheatServer_SetClientDetails function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_SetClientDetailsOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCOMMON_SETCLIENTDETAILS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value used in RegisterClient/RegisterPeer"]
    pub ClientHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " General flags associated with this client, if any"]
    pub ClientFlags: EOS_EAntiCheatCommonClientFlags,
    #[doc = " Input device being used by this client, if known"]
    pub ClientInputMethod: EOS_EAntiCheatCommonClientInput,
}
impl Default for _tagEOS_AntiCheatCommon_SetClientDetailsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_SetClientDetails function."]
pub type EOS_AntiCheatCommon_SetClientDetailsOptions =
    _tagEOS_AntiCheatCommon_SetClientDetailsOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_SetGameSessionId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_SetGameSessionIdOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCOMMON_SETGAMESESSIONID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Game session identifier"]
    pub GameSessionId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_AntiCheatCommon_SetGameSessionIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_SetGameSessionId function."]
pub type EOS_AntiCheatCommon_SetGameSessionIdOptions =
    _tagEOS_AntiCheatCommon_SetGameSessionIdOptions;
#[doc = " Register Event Parameter Definition."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_RegisterEventParamDef {
    #[doc = " Parameter name. Allowed characters are 0-9, A-Z, a-z, '_', '-'"]
    pub ParamName: *const ::std::os::raw::c_char,
    #[doc = " Parameter type"]
    pub ParamType: EOS_EAntiCheatCommonEventParamType,
}
impl Default for _tagEOS_AntiCheatCommon_RegisterEventParamDef {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Register Event Parameter Definition."]
pub type EOS_AntiCheatCommon_RegisterEventParamDef = _tagEOS_AntiCheatCommon_RegisterEventParamDef;
#[doc = " Input parameters for the EOS_AntiCheatServer_RegisterEvent function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_RegisterEventOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCOMMON_REGISTEREVENT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Unique event identifier. Must be >= EOS_ANTICHEATCOMMON_REGISTEREVENT_CUSTOMEVENTBASE."]
    pub EventId: u32,
    #[doc = " Name of the custom event. Allowed characters are 0-9, A-Z, a-z, '_', '-'"]
    pub EventName: *const ::std::os::raw::c_char,
    #[doc = " Type of the custom event"]
    pub EventType: EOS_EAntiCheatCommonEventType,
    #[doc = " Number of parameters described in ParamDefs. Must be equal to or less than EOS_ANTICHEATCOMMON_REGISTEREVENT_MAX_PARAMDEFSCOUNT."]
    pub ParamDefsCount: u32,
    #[doc = " Pointer to an array of EOS_AntiCheatCommon_RegisterEventParamDef with ParamDefsCount elements"]
    pub ParamDefs: *const EOS_AntiCheatCommon_RegisterEventParamDef,
}
impl Default for _tagEOS_AntiCheatCommon_RegisterEventOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_RegisterEvent function."]
pub type EOS_AntiCheatCommon_RegisterEventOptions = _tagEOS_AntiCheatCommon_RegisterEventOptions;
#[doc = " Log Event Parameter."]
#[repr(C)]
#[derive(Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_LogEventParamPair {
    #[doc = " Parameter type"]
    pub ParamValueType: EOS_EAntiCheatCommonEventParamType,
    #[doc = " Parameter value"]
    pub ParamValue: _tagEOS_AntiCheatCommon_LogEventParamPair__bindgen_ty_1,
}
#[doc = " Parameter value"]
#[repr(C)]
#[derive(Copy, Clone)]
pub union _tagEOS_AntiCheatCommon_LogEventParamPair__bindgen_ty_1 {
    #[doc = " Client handle."]
    pub ClientHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " The value as a string.\n Will be truncated if longer than EOS_ANTICHEATCOMMON_LOGEVENT_STRING_MAX_LENGTH bytes."]
    pub String: *const ::std::os::raw::c_char,
    #[doc = " The value as a uint32_t."]
    pub UInt32: u32,
    #[doc = " The value as an int32_t."]
    pub Int32: i32,
    #[doc = " The value as a uint64_t."]
    pub UInt64: u64,
    #[doc = " The value as an int64_t."]
    pub Int64: i64,
    #[doc = " The value as an EOS_AntiCheatCommon_Vec3f."]
    pub Vec3f: EOS_AntiCheatCommon_Vec3f,
    #[doc = " The value as an EOS_AntiCheatCommon_Quat."]
    pub Quat: EOS_AntiCheatCommon_Quat,
    #[doc = " The value as a float."]
    pub Float: f32,
}
impl Default for _tagEOS_AntiCheatCommon_LogEventParamPair__bindgen_ty_1 {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
impl Default for _tagEOS_AntiCheatCommon_LogEventParamPair {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Log Event Parameter."]
pub type EOS_AntiCheatCommon_LogEventParamPair = _tagEOS_AntiCheatCommon_LogEventParamPair;
#[doc = " Input parameters for the EOS_AntiCheatServer_LogEvent function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_LogEventOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCOMMON_LOGEVENT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Optional client who this event is primarily associated with. If not applicable, use 0."]
    pub ClientHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " Unique event identifier previously configured in RegisterEvent"]
    pub EventId: u32,
    #[doc = " Number of parameters described in Params"]
    pub ParamsCount: u32,
    #[doc = " Set of parameter types previously configured in RegisterEvent, and their values"]
    pub Params: *const EOS_AntiCheatCommon_LogEventParamPair,
}
impl Default for _tagEOS_AntiCheatCommon_LogEventOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_LogEvent function."]
pub type EOS_AntiCheatCommon_LogEventOptions = _tagEOS_AntiCheatCommon_LogEventOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_LogGameRoundStart function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_LogGameRoundStartOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCOMMON_LOGGAMEROUNDSTART_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Optional game session or match identifier useful for some backend API integrations"]
    pub SessionIdentifier: *const ::std::os::raw::c_char,
    #[doc = " Optional name of the map being played"]
    pub LevelName: *const ::std::os::raw::c_char,
    #[doc = " Optional name of the game mode being played"]
    pub ModeName: *const ::std::os::raw::c_char,
    #[doc = " Optional length of the game round to be played, in seconds. If none, use 0."]
    pub RoundTimeSeconds: u32,
    #[doc = " Type of competition for this game round"]
    pub CompetitionType: EOS_EAntiCheatCommonGameRoundCompetitionType,
}
impl Default for _tagEOS_AntiCheatCommon_LogGameRoundStartOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_LogGameRoundStart function."]
pub type EOS_AntiCheatCommon_LogGameRoundStartOptions =
    _tagEOS_AntiCheatCommon_LogGameRoundStartOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_LogGameRoundEnd function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_LogGameRoundEndOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCOMMON_LOGGAMEROUNDEND_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Optional identifier for the winning team"]
    pub WinningTeamId: u32,
}
#[doc = " Input parameters for the EOS_AntiCheatServer_LogGameRoundEnd function."]
pub type EOS_AntiCheatCommon_LogGameRoundEndOptions =
    _tagEOS_AntiCheatCommon_LogGameRoundEndOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerSpawn function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_LogPlayerSpawnOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCOMMON_LOGPLAYERSPAWN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value used in RegisterClient/RegisterPeer"]
    pub SpawnedPlayerHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " Optional identifier for the player's team. If none, use 0."]
    pub TeamId: u32,
    #[doc = " Optional identifier for the player's character. If none, use 0."]
    pub CharacterId: u32,
}
impl Default for _tagEOS_AntiCheatCommon_LogPlayerSpawnOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerSpawn function."]
pub type EOS_AntiCheatCommon_LogPlayerSpawnOptions = _tagEOS_AntiCheatCommon_LogPlayerSpawnOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerDespawn function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_LogPlayerDespawnOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCOMMON_LOGPLAYERDESPAWN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value used in RegisterClient/RegisterPeer"]
    pub DespawnedPlayerHandle: EOS_AntiCheatCommon_ClientHandle,
}
impl Default for _tagEOS_AntiCheatCommon_LogPlayerDespawnOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerDespawn function."]
pub type EOS_AntiCheatCommon_LogPlayerDespawnOptions =
    _tagEOS_AntiCheatCommon_LogPlayerDespawnOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerRevive function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_LogPlayerReviveOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCOMMON_LOGPLAYERREVIVE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value used in RegisterClient/RegisterPeer"]
    pub RevivedPlayerHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " Locally unique value used in RegisterClient/RegisterPeer"]
    pub ReviverPlayerHandle: EOS_AntiCheatCommon_ClientHandle,
}
impl Default for _tagEOS_AntiCheatCommon_LogPlayerReviveOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerRevive function."]
pub type EOS_AntiCheatCommon_LogPlayerReviveOptions =
    _tagEOS_AntiCheatCommon_LogPlayerReviveOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerTick function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_LogPlayerTickOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCOMMON_LOGPLAYERTICK_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value used in RegisterClient/RegisterPeer"]
    pub PlayerHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " Player character's current world position as a 3D vector. This should be the center of the character."]
    pub PlayerPosition: *mut EOS_AntiCheatCommon_Vec3f,
    #[doc = " Player camera's current world rotation as a quaternion."]
    pub PlayerViewRotation: *mut EOS_AntiCheatCommon_Quat,
    #[doc = " True if the player's view is zoomed (e.g. using a sniper rifle), otherwise false"]
    pub bIsPlayerViewZoomed: EOS_Bool,
    #[doc = " Player's current health value"]
    pub PlayerHealth: f32,
    #[doc = " Any movement state applicable"]
    pub PlayerMovementState: EOS_EAntiCheatCommonPlayerMovementState,
    #[doc = " Player camera's current world position as a 3D vector."]
    pub PlayerViewPosition: *mut EOS_AntiCheatCommon_Vec3f,
}
impl Default for _tagEOS_AntiCheatCommon_LogPlayerTickOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerTick function."]
pub type EOS_AntiCheatCommon_LogPlayerTickOptions = _tagEOS_AntiCheatCommon_LogPlayerTickOptions;
#[doc = " Log Player Use Weapon Data."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_LogPlayerUseWeaponData {
    #[doc = " Locally unique value used in RegisterClient/RegisterPeer"]
    pub PlayerHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " Attack origin world position as a 3D vector"]
    pub PlayerPosition: *mut EOS_AntiCheatCommon_Vec3f,
    #[doc = " Attack direction as a quaternion"]
    pub PlayerViewRotation: *mut EOS_AntiCheatCommon_Quat,
    #[doc = " True if the player's view is zoomed (e.g. using a sniper rifle), otherwise false"]
    pub bIsPlayerViewZoomed: EOS_Bool,
    #[doc = " Set to true if the player is using a melee attack, otherwise false"]
    pub bIsMeleeAttack: EOS_Bool,
    #[doc = " Name of the weapon used. Will be truncated to EOS_ANTICHEATCOMMON_LOGPLAYERUSEWEAPON_WEAPONNAME_MAX_LENGTH bytes if longer."]
    pub WeaponName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_AntiCheatCommon_LogPlayerUseWeaponData {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Log Player Use Weapon Data."]
pub type EOS_AntiCheatCommon_LogPlayerUseWeaponData =
    _tagEOS_AntiCheatCommon_LogPlayerUseWeaponData;
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerUseWeapon function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_LogPlayerUseWeaponOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCOMMON_LOGPLAYERUSEWEAPON_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Struct containing detailed information about a weapon use event"]
    pub UseWeaponData: *mut EOS_AntiCheatCommon_LogPlayerUseWeaponData,
}
impl Default for _tagEOS_AntiCheatCommon_LogPlayerUseWeaponOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerUseWeapon function."]
pub type EOS_AntiCheatCommon_LogPlayerUseWeaponOptions =
    _tagEOS_AntiCheatCommon_LogPlayerUseWeaponOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerUseAbility function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_LogPlayerUseAbilityOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCOMMON_LOGPLAYERUSEABILITY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value used in RegisterClient/RegisterPeer"]
    pub PlayerHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " Game defined unique identifier for the ability being used"]
    pub AbilityId: u32,
    #[doc = " Duration of the ability effect in milliseconds. If not applicable, use 0."]
    pub AbilityDurationMs: u32,
    #[doc = " Cooldown until the ability can be used again in milliseconds. If not applicable, use 0."]
    pub AbilityCooldownMs: u32,
}
impl Default for _tagEOS_AntiCheatCommon_LogPlayerUseAbilityOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerUseAbility function."]
pub type EOS_AntiCheatCommon_LogPlayerUseAbilityOptions =
    _tagEOS_AntiCheatCommon_LogPlayerUseAbilityOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerTakeDamage function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatCommon_LogPlayerTakeDamageOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCOMMON_LOGPLAYERTAKEDAMAGE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value used in RegisterClient/RegisterPeer"]
    pub VictimPlayerHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " Victim player character's world position as a 3D vector. This should be the center of the character."]
    pub VictimPlayerPosition: *mut EOS_AntiCheatCommon_Vec3f,
    #[doc = " Victim player camera's world rotation as a quaternion."]
    pub VictimPlayerViewRotation: *mut EOS_AntiCheatCommon_Quat,
    #[doc = " Locally unique value used in RegisterClient/RegisterPeer if applicable, otherwise 0."]
    pub AttackerPlayerHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " Attacker player character's world position as a 3D vector if applicable, otherwise NULL."]
    pub AttackerPlayerPosition: *mut EOS_AntiCheatCommon_Vec3f,
    #[doc = " Attacker player camera's world rotation as a quaternion if applicable, otherwise NULL."]
    pub AttackerPlayerViewRotation: *mut EOS_AntiCheatCommon_Quat,
    #[doc = " True if the damage was applied instantly at the time of attack from the game\n simulation's perspective, otherwise false (simulated ballistics, arrow, etc)."]
    pub bIsHitscanAttack: EOS_Bool,
    #[doc = " True if there is a visible line of sight between the attacker and the victim at the time\n that damage is being applied, false if there is an obstacle like a wall or terrain in\n the way. For some situations like melee or hitscan weapons this is trivially\n true, for others like projectiles with simulated physics it may not be e.g. a player\n could fire a slow moving projectile and then move behind cover before it strikes.\n\n This can be an estimate, or can simply be always set to true if it is not feasible\n to compute in your game."]
    pub bHasLineOfSight: EOS_Bool,
    #[doc = " True if this was a critical hit that causes extra damage (e.g. headshot)"]
    pub bIsCriticalHit: EOS_Bool,
    #[doc = " Deprecated - use DamagePosition instead"]
    pub HitBoneId_DEPRECATED: u32,
    #[doc = " Number of health points that the victim lost due to this damage event"]
    pub DamageTaken: f32,
    #[doc = " Number of health points that the victim has remaining after this damage event"]
    pub HealthRemaining: f32,
    #[doc = " Source of the damage event"]
    pub DamageSource: EOS_EAntiCheatCommonPlayerTakeDamageSource,
    #[doc = " Type of the damage being applied"]
    pub DamageType: EOS_EAntiCheatCommonPlayerTakeDamageType,
    #[doc = " Result of the damage for the victim, if any"]
    pub DamageResult: EOS_EAntiCheatCommonPlayerTakeDamageResult,
    #[doc = " PlayerUseWeaponData associated with this damage event if available, otherwise NULL"]
    pub PlayerUseWeaponData: *mut EOS_AntiCheatCommon_LogPlayerUseWeaponData,
    #[doc = " Time in milliseconds since the associated PlayerUseWeaponData event occurred if available, otherwise 0"]
    pub TimeSincePlayerUseWeaponMs: u32,
    #[doc = " World position where damage hit the victim as a 3D vector if available, otherwise NULL"]
    pub DamagePosition: *mut EOS_AntiCheatCommon_Vec3f,
    #[doc = " Attacker player camera's world position as a 3D vector if applicable, otherwise NULL"]
    pub AttackerPlayerViewPosition: *mut EOS_AntiCheatCommon_Vec3f,
}
impl Default for _tagEOS_AntiCheatCommon_LogPlayerTakeDamageOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_LogPlayerTakeDamage function."]
pub type EOS_AntiCheatCommon_LogPlayerTakeDamageOptions =
    _tagEOS_AntiCheatCommon_LogPlayerTakeDamageOptions;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_AntiCheatClientHandle {
    _unused: [u8; 0],
}
pub type EOS_HAntiCheatClient = *mut EOS_AntiCheatClientHandle;
#[doc = " Not used"]
pub const EOS_EAntiCheatClientMode_EOS_ACCM_Invalid: EOS_EAntiCheatClientMode = 0;
#[doc = " Dedicated or listen server mode"]
pub const EOS_EAntiCheatClientMode_EOS_ACCM_ClientServer: EOS_EAntiCheatClientMode = 1;
#[doc = " Full mesh peer-to-peer mode"]
pub const EOS_EAntiCheatClientMode_EOS_ACCM_PeerToPeer: EOS_EAntiCheatClientMode = 2;
pub const EOS_EAntiCheatClientMode___EOS_EAntiCheatClientMode_PAD_INT32__:
    EOS_EAntiCheatClientMode = 2147483647;
#[doc = " Operating modes"]
pub type EOS_EAntiCheatClientMode = ::std::os::raw::c_int;
#[doc = " Not used"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_Invalid: EOS_EAntiCheatClientViolationType =
    0;
#[doc = " An anti-cheat asset integrity catalog file could not be found"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_IntegrityCatalogNotFound:
    EOS_EAntiCheatClientViolationType = 1;
#[doc = " An anti-cheat asset integrity catalog file is corrupt or invalid"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_IntegrityCatalogError:
    EOS_EAntiCheatClientViolationType = 2;
#[doc = " An anti-cheat asset integrity catalog file's certificate has been revoked."]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_IntegrityCatalogCertificateRevoked:
    EOS_EAntiCheatClientViolationType = 3;
#[doc = " The primary anti-cheat asset integrity catalog does not include an entry for the game's\n main executable, which is required."]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_IntegrityCatalogMissingMainExecutable:
    EOS_EAntiCheatClientViolationType = 4;
#[doc = " A disallowed game file modification was detected"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_GameFileMismatch:
    EOS_EAntiCheatClientViolationType = 5;
#[doc = " A disallowed game file removal was detected"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_RequiredGameFileNotFound:
    EOS_EAntiCheatClientViolationType = 6;
#[doc = " A disallowed game file addition was detected"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_UnknownGameFileForbidden:
    EOS_EAntiCheatClientViolationType = 7;
#[doc = " A system file failed an integrity check"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_SystemFileUntrusted:
    EOS_EAntiCheatClientViolationType = 8;
#[doc = " A disallowed code module was loaded into the game process"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_ForbiddenModuleLoaded:
    EOS_EAntiCheatClientViolationType = 9;
#[doc = " A disallowed game process memory modification was detected"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_CorruptedMemory:
    EOS_EAntiCheatClientViolationType = 10;
#[doc = " A disallowed tool was detected running in the system"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_ForbiddenToolDetected:
    EOS_EAntiCheatClientViolationType = 11;
#[doc = " An internal anti-cheat integrity check failed"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_InternalAntiCheatViolation:
    EOS_EAntiCheatClientViolationType = 12;
#[doc = " Integrity checks on messages between the game client and game server, or between peers, failed"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_CorruptedNetworkMessageFlow:
    EOS_EAntiCheatClientViolationType = 13;
#[doc = " The game is running inside a disallowed virtual machine"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_VirtualMachineNotAllowed:
    EOS_EAntiCheatClientViolationType = 14;
#[doc = " A forbidden operating system configuration was detected"]
pub const EOS_EAntiCheatClientViolationType_EOS_ACCVT_ForbiddenSystemConfiguration:
    EOS_EAntiCheatClientViolationType = 15;
pub const EOS_EAntiCheatClientViolationType___EOS_EAntiCheatClientViolationType_PAD_INT32__:
    EOS_EAntiCheatClientViolationType = 2147483647;
#[doc = " Anti-cheat integrity violation types"]
pub type EOS_EAntiCheatClientViolationType = ::std::os::raw::c_int;
#[doc = " Structure containing details about a new message that must be dispatched to the game server."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_OnMessageToServerCallbackInfo {
    #[doc = " Caller-specified context data"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The message data that must be sent to the server"]
    pub MessageData: *const ::std::os::raw::c_void,
    #[doc = " The size in bytes of MessageData"]
    pub MessageDataSizeBytes: u32,
}
impl Default for _tagEOS_AntiCheatClient_OnMessageToServerCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing details about a new message that must be dispatched to the game server."]
pub type EOS_AntiCheatClient_OnMessageToServerCallbackInfo =
    _tagEOS_AntiCheatClient_OnMessageToServerCallbackInfo;
#[doc = " Structure containing details about integrity violation related to the local client"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_OnClientIntegrityViolatedCallbackInfo {
    #[doc = " Caller-specified context data"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Code describing the violation that occurred"]
    pub ViolationType: EOS_EAntiCheatClientViolationType,
    #[doc = " String describing the violation which should be displayed to the user"]
    pub ViolationMessage: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_AntiCheatClient_OnClientIntegrityViolatedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Structure containing details about integrity violation related to the local client"]
pub type EOS_AntiCheatClient_OnClientIntegrityViolatedCallbackInfo =
    _tagEOS_AntiCheatClient_OnClientIntegrityViolatedCallbackInfo;
#[doc = " Callback issued when a new message must be dispatched to the game server.\n\n Messages contain opaque binary data and must be transmitted\n to the game server using the game's own networking layer, then delivered\n to the server anti-cheat instance using the EOS_AntiCheatServer_ReceiveMessageFromClient function.\n The upper limit of the message size is EOS_ANTICHEATCLIENT_ONMESSAGETOSERVERCALLBACK_MAX_MESSAGE_SIZE.\n\n This callback is always issued from within EOS_Platform_Tick on its calling thread."]
pub type EOS_AntiCheatClient_OnMessageToServerCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_AntiCheatClient_OnMessageToServerCallbackInfo),
>;
#[doc = " Callback issued when the local client triggers an integrity violation.\n\n The message contains descriptive string of up to 256 characters and must be displayed to the player.\n\n This callback is always issued from within EOS_Platform_Tick on its calling thread."]
pub type EOS_AntiCheatClient_OnClientIntegrityViolatedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_AntiCheatClient_OnClientIntegrityViolatedCallbackInfo),
>;
#[doc = " Callback issued when a new message must be dispatched to a connected peer.\n\n Messages contain opaque binary data and must be transmitted\n to the correct peer using the game's own networking layer, then delivered\n to the client anti-cheat instance using the EOS_AntiCheatClient_ReceiveMessageFromPeer function.\n The upper limit of the message size is EOS_ANTICHEATCLIENT_ONMESSAGETOPEERCALLBACK_MAX_MESSAGE_SIZE.\n\n This callback is always issued from within EOS_Platform_Tick on its calling thread."]
pub type EOS_AntiCheatClient_OnMessageToPeerCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_AntiCheatCommon_OnMessageToClientCallbackInfo),
>;
#[doc = " Callback issued when an action must be applied to a connected peer.\n This callback is always issued from within EOS_Platform_Tick on its calling thread."]
pub type EOS_AntiCheatClient_OnPeerActionRequiredCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_AntiCheatCommon_OnClientActionRequiredCallbackInfo),
>;
#[doc = " Optional callback issued when a connected peer's authentication status has changed.\n This callback is always issued from within EOS_Platform_Tick on its calling thread."]
pub type EOS_AntiCheatClient_OnPeerAuthStatusChangedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_AntiCheatCommon_OnClientAuthStatusChangedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_AntiCheatClient_AddNotifyMessageToServer function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_AddNotifyMessageToServerOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_ADDNOTIFYMESSAGETOSERVER_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_AntiCheatClient_AddNotifyMessageToServer function."]
pub type EOS_AntiCheatClient_AddNotifyMessageToServerOptions =
    _tagEOS_AntiCheatClient_AddNotifyMessageToServerOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_AddNotifyMessageToPeer function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_AddNotifyMessageToPeerOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_ADDNOTIFYMESSAGETOPEER_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_AntiCheatClient_AddNotifyMessageToPeer function."]
pub type EOS_AntiCheatClient_AddNotifyMessageToPeerOptions =
    _tagEOS_AntiCheatClient_AddNotifyMessageToPeerOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_AddNotifyPeerActionRequired function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_AddNotifyPeerActionRequiredOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_ADDNOTIFYPEERACTIONREQUIRED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_AntiCheatClient_AddNotifyPeerActionRequired function."]
pub type EOS_AntiCheatClient_AddNotifyPeerActionRequiredOptions =
    _tagEOS_AntiCheatClient_AddNotifyPeerActionRequiredOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_AddNotifyPeerAuthStatusChanged function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_AddNotifyPeerAuthStatusChangedOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_ADDNOTIFYPEERAUTHSTATUSCHANGED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_AntiCheatClient_AddNotifyPeerAuthStatusChanged function."]
pub type EOS_AntiCheatClient_AddNotifyPeerAuthStatusChangedOptions =
    _tagEOS_AntiCheatClient_AddNotifyPeerAuthStatusChangedOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_AddNotifyClientIntegrityViolated function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_AddNotifyClientIntegrityViolatedOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_ADDNOTIFYPEERAUTHSTATUSCHANGED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_AntiCheatClient_AddNotifyClientIntegrityViolated function."]
pub type EOS_AntiCheatClient_AddNotifyClientIntegrityViolatedOptions =
    _tagEOS_AntiCheatClient_AddNotifyClientIntegrityViolatedOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_BeginSession function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_BeginSessionOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_BEGINSESSION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Logged in user identifier from earlier call to EOS_Connect_Login family of functions"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Operating mode"]
    pub Mode: EOS_EAntiCheatClientMode,
}
impl Default for _tagEOS_AntiCheatClient_BeginSessionOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatClient_BeginSession function."]
pub type EOS_AntiCheatClient_BeginSessionOptions = _tagEOS_AntiCheatClient_BeginSessionOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_EndSession function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_EndSessionOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_ENDSESSION_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_AntiCheatClient_EndSession function."]
pub type EOS_AntiCheatClient_EndSessionOptions = _tagEOS_AntiCheatClient_EndSessionOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_Reserved01 function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_Reserved01Options {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_RESERVED01_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_AntiCheatClient_Reserved01 function."]
pub type EOS_AntiCheatClient_Reserved01Options = _tagEOS_AntiCheatClient_Reserved01Options;
#[doc = " Input parameters for the EOS_AntiCheatClient_Reserved02 function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_Reserved02Options {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_RESERVED02_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Field reserved for future use"]
    pub Reserved1: i64,
    #[doc = " Field reserved for future use"]
    pub Reserved2: u32,
    #[doc = " Field reserved for future use"]
    pub Reserved3: u32,
    #[doc = " Field reserved for future use"]
    pub Reserved4: *const ::std::os::raw::c_void,
}
impl Default for _tagEOS_AntiCheatClient_Reserved02Options {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatClient_Reserved02 function."]
pub type EOS_AntiCheatClient_Reserved02Options = _tagEOS_AntiCheatClient_Reserved02Options;
#[doc = " Input parameters for the EOS_AntiCheatClient_GetModuleBuildId function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_GetModuleBuildIdOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_GETMODULEBUILDID_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_AntiCheatClient_GetModuleBuildId function."]
pub type EOS_AntiCheatClient_GetModuleBuildIdOptions =
    _tagEOS_AntiCheatClient_GetModuleBuildIdOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_AddExternalIntegrityCatalog function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_AddExternalIntegrityCatalogOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_ADDEXTERNALINTEGRITYCATALOG_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " UTF-8 path to the .bin catalog file to add"]
    pub PathToBinFile: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_AntiCheatClient_AddExternalIntegrityCatalogOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatClient_AddExternalIntegrityCatalog function."]
pub type EOS_AntiCheatClient_AddExternalIntegrityCatalogOptions =
    _tagEOS_AntiCheatClient_AddExternalIntegrityCatalogOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_ReceiveMessageFromServer function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_ReceiveMessageFromServerOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_RECEIVEMESSAGEFROMSERVER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The size of the data received"]
    pub DataLengthBytes: u32,
    #[doc = " The data received"]
    pub Data: *const ::std::os::raw::c_void,
}
impl Default for _tagEOS_AntiCheatClient_ReceiveMessageFromServerOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatClient_ReceiveMessageFromServer function."]
pub type EOS_AntiCheatClient_ReceiveMessageFromServerOptions =
    _tagEOS_AntiCheatClient_ReceiveMessageFromServerOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_GetProtectMessageOutputLength function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_GetProtectMessageOutputLengthOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_GETPROTECTMESSAGEOUTPUTLENGTH_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Length in bytes of input"]
    pub DataLengthBytes: u32,
}
#[doc = " Input parameters for the EOS_AntiCheatClient_GetProtectMessageOutputLength function."]
pub type EOS_AntiCheatClient_GetProtectMessageOutputLengthOptions =
    _tagEOS_AntiCheatClient_GetProtectMessageOutputLengthOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_ProtectMessage function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_ProtectMessageOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_PROTECTMESSAGE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Length in bytes of input"]
    pub DataLengthBytes: u32,
    #[doc = " The data to encrypt"]
    pub Data: *const ::std::os::raw::c_void,
    #[doc = " The size in bytes of OutBuffer"]
    pub OutBufferSizeBytes: u32,
}
impl Default for _tagEOS_AntiCheatClient_ProtectMessageOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatClient_ProtectMessage function."]
pub type EOS_AntiCheatClient_ProtectMessageOptions = _tagEOS_AntiCheatClient_ProtectMessageOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_UnprotectMessage function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_UnprotectMessageOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_UNPROTECTMESSAGE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Length in bytes of input"]
    pub DataLengthBytes: u32,
    #[doc = " The data to decrypt"]
    pub Data: *const ::std::os::raw::c_void,
    #[doc = " The size in bytes of OutBuffer"]
    pub OutBufferSizeBytes: u32,
}
impl Default for _tagEOS_AntiCheatClient_UnprotectMessageOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatClient_UnprotectMessage function."]
pub type EOS_AntiCheatClient_UnprotectMessageOptions =
    _tagEOS_AntiCheatClient_UnprotectMessageOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_RegisterPeerOptions function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_RegisterPeerOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_REGISTERPEER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value describing the remote user (e.g. a player object pointer)"]
    pub PeerHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " Type of remote user being registered"]
    pub ClientType: EOS_EAntiCheatCommonClientType,
    #[doc = " Remote user's platform, if known"]
    pub ClientPlatform: EOS_EAntiCheatCommonClientPlatform,
    #[doc = " Time in seconds to allow newly registered peers to send the initial message containing their token.\n Minimum value: EOS_ANTICHEATCLIENT_REGISTERPEER_MIN_AUTHENTICATIONTIMEOUT\n Maximum value: EOS_ANTICHEATCLIENT_REGISTERPEER_MAX_AUTHENTICATIONTIMEOUT"]
    pub AuthenticationTimeout: u32,
    #[doc = " Deprecated - use PeerProductUserId instead"]
    pub AccountId_DEPRECATED: *const ::std::os::raw::c_char,
    #[doc = " Optional IP address for the remote user. May be null if not available.\n IPv4 format: \"0.0.0.0\"\n IPv6 format: \"0:0:0:0:0:0:0:0\""]
    pub IpAddress: *const ::std::os::raw::c_char,
    #[doc = " EOS_ProductUserId Identifier for the remote user"]
    pub PeerProductUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_AntiCheatClient_RegisterPeerOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatClient_RegisterPeerOptions function."]
pub type EOS_AntiCheatClient_RegisterPeerOptions = _tagEOS_AntiCheatClient_RegisterPeerOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_UnregisterPeer function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_UnregisterPeerOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_UNREGISTERPEER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value describing the remote user, as previously passed to EOS_AntiCheatClient_RegisterPeer"]
    pub PeerHandle: EOS_AntiCheatCommon_ClientHandle,
}
impl Default for _tagEOS_AntiCheatClient_UnregisterPeerOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatClient_UnregisterPeer function."]
pub type EOS_AntiCheatClient_UnregisterPeerOptions = _tagEOS_AntiCheatClient_UnregisterPeerOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_ReceiveMessageFromPeer function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_ReceiveMessageFromPeerOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_RECEIVEMESSAGEFROMPEER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The handle describing the sender of this message"]
    pub PeerHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " The size of the data received"]
    pub DataLengthBytes: u32,
    #[doc = " The data received"]
    pub Data: *const ::std::os::raw::c_void,
}
impl Default for _tagEOS_AntiCheatClient_ReceiveMessageFromPeerOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatClient_ReceiveMessageFromPeer function."]
pub type EOS_AntiCheatClient_ReceiveMessageFromPeerOptions =
    _tagEOS_AntiCheatClient_ReceiveMessageFromPeerOptions;
#[doc = " Input parameters for the EOS_AntiCheatClient_PollStatus function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatClient_PollStatusOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATCLIENT_POLLSTATUS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The size of OutMessage in bytes. Recommended size is 256 bytes."]
    pub OutMessageLength: u32,
}
#[doc = " Input parameters for the EOS_AntiCheatClient_PollStatus function."]
pub type EOS_AntiCheatClient_PollStatusOptions = _tagEOS_AntiCheatClient_PollStatusOptions;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_AntiCheatServerHandle {
    _unused: [u8; 0],
}
pub type EOS_HAntiCheatServer = *mut EOS_AntiCheatServerHandle;
#[doc = " Callback issued when a new message must be dispatched to a connected client.\n\n Messages contain opaque binary data and must be transmitted to the correct client\n using the game's own networking layer, then delivered to the client anti-cheat instance\n using the EOS_AntiCheatClient_ReceiveMessageFromServer function.\n The upper limit of the message size is EOS_ANTICHEATSERVER_ONMESSAGETOCLIENTCALLBACK_MAX_MESSAGE_SIZE.\n\n This callback is always issued from within EOS_Platform_Tick on its calling thread."]
pub type EOS_AntiCheatServer_OnMessageToClientCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_AntiCheatCommon_OnMessageToClientCallbackInfo),
>;
#[doc = " Callback issued when an action must be applied to a connected client.\n This callback is always issued from within EOS_Platform_Tick on its calling thread."]
pub type EOS_AntiCheatServer_OnClientActionRequiredCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_AntiCheatCommon_OnClientActionRequiredCallbackInfo),
>;
#[doc = " Optional callback issued when a connected client's authentication status has changed.\n This callback is always issued from within EOS_Platform_Tick on its calling thread."]
pub type EOS_AntiCheatServer_OnClientAuthStatusChangedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_AntiCheatCommon_OnClientAuthStatusChangedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_AntiCheatServer_AddNotifyMessageToClient function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatServer_AddNotifyMessageToClientOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATSERVER_ADDNOTIFYMESSAGETOCLIENT_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_AntiCheatServer_AddNotifyMessageToClient function."]
pub type EOS_AntiCheatServer_AddNotifyMessageToClientOptions =
    _tagEOS_AntiCheatServer_AddNotifyMessageToClientOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_AddNotifyClientActionRequired function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatServer_AddNotifyClientActionRequiredOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATSERVER_ADDNOTIFYCLIENTACTIONREQUIRED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_AntiCheatServer_AddNotifyClientActionRequired function."]
pub type EOS_AntiCheatServer_AddNotifyClientActionRequiredOptions =
    _tagEOS_AntiCheatServer_AddNotifyClientActionRequiredOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_AddNotifyClientAuthStatusChanged function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatServer_AddNotifyClientAuthStatusChangedOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATSERVER_ADDNOTIFYCLIENTAUTHSTATUSCHANGED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_AntiCheatServer_AddNotifyClientAuthStatusChanged function."]
pub type EOS_AntiCheatServer_AddNotifyClientAuthStatusChangedOptions =
    _tagEOS_AntiCheatServer_AddNotifyClientAuthStatusChangedOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_BeginSession function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatServer_BeginSessionOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATSERVER_BEGINSESSION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Time in seconds to allow newly registered clients to complete anti-cheat authentication.\n Recommended value: 60\n Minimum value: EOS_ANTICHEATSERVER_BEGINSESSION_MIN_REGISTERTIMEOUT\n Maximum value: EOS_ANTICHEATSERVER_BEGINSESSION_MAX_REGISTERTIMEOUT"]
    pub RegisterTimeoutSeconds: u32,
    #[doc = " Optional name of this game server"]
    pub ServerName: *const ::std::os::raw::c_char,
    #[doc = " Gameplay data collection APIs such as LogPlayerTick will be enabled if set to true.\n If you do not use these APIs you should set this value to false to reduce memory use."]
    pub bEnableGameplayData: EOS_Bool,
    #[doc = " The Product User ID of the local user who is associated with this session. Dedicated servers should set this to null."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_AntiCheatServer_BeginSessionOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_BeginSession function."]
pub type EOS_AntiCheatServer_BeginSessionOptions = _tagEOS_AntiCheatServer_BeginSessionOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_EndSession function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatServer_EndSessionOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATSERVER_ENDSESSION_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_AntiCheatServer_EndSession function."]
pub type EOS_AntiCheatServer_EndSessionOptions = _tagEOS_AntiCheatServer_EndSessionOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_RegisterClient function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatServer_RegisterClientOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATSERVER_REGISTERCLIENT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value describing the remote user (e.g. a player object pointer)"]
    pub ClientHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " Type of remote user being registered"]
    pub ClientType: EOS_EAntiCheatCommonClientType,
    #[doc = " Remote user's platform, if known"]
    pub ClientPlatform: EOS_EAntiCheatCommonClientPlatform,
    #[doc = " DEPRECATED - New code should set this to null and specify UserId instead.\n\n Identifier for the remote user. This is typically a string representation of an\n account ID, but it can be any string which is both unique (two different users will never\n have the same string) and consistent (if the same user connects to this game session\n twice, the same string will be used) in the scope of a single protected game session."]
    pub AccountId_DEPRECATED: *const ::std::os::raw::c_char,
    #[doc = " Optional IP address for the remote user. May be null if not available.\n IPv4 format: \"0.0.0.0\"\n IPv6 format: \"0:0:0:0:0:0:0:0\""]
    pub IpAddress: *const ::std::os::raw::c_char,
    #[doc = " The Product User ID for the remote user who is being registered."]
    pub UserId: EOS_ProductUserId,
    #[doc = " Reserved for future use. Must be set to 0."]
    pub Reserved01: i32,
}
impl Default for _tagEOS_AntiCheatServer_RegisterClientOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_RegisterClient function."]
pub type EOS_AntiCheatServer_RegisterClientOptions = _tagEOS_AntiCheatServer_RegisterClientOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_UnregisterClient function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatServer_UnregisterClientOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATSERVER_UNREGISTERCLIENT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value describing the remote user, as previously passed to RegisterClient"]
    pub ClientHandle: EOS_AntiCheatCommon_ClientHandle,
}
impl Default for _tagEOS_AntiCheatServer_UnregisterClientOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_UnregisterClient function."]
pub type EOS_AntiCheatServer_UnregisterClientOptions =
    _tagEOS_AntiCheatServer_UnregisterClientOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_ReceiveMessageFromClient function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatServer_ReceiveMessageFromClientOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATSERVER_RECEIVEMESSAGEFROMCLIENT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value describing the corresponding remote user, as previously passed to RegisterClient"]
    pub ClientHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " The size of the data received"]
    pub DataLengthBytes: u32,
    #[doc = " The data received"]
    pub Data: *const ::std::os::raw::c_void,
}
impl Default for _tagEOS_AntiCheatServer_ReceiveMessageFromClientOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_ReceiveMessageFromClient function."]
pub type EOS_AntiCheatServer_ReceiveMessageFromClientOptions =
    _tagEOS_AntiCheatServer_ReceiveMessageFromClientOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_SetClientNetworkState function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatServer_SetClientNetworkStateOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATSERVER_SETCLIENTNETWORKSTATE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value describing the remote user (e.g. a player object pointer)"]
    pub ClientHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " True if the network is functioning normally, false if temporarily interrupted"]
    pub bIsNetworkActive: EOS_Bool,
}
impl Default for _tagEOS_AntiCheatServer_SetClientNetworkStateOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_SetClientNetworkState function."]
pub type EOS_AntiCheatServer_SetClientNetworkStateOptions =
    _tagEOS_AntiCheatServer_SetClientNetworkStateOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_GetProtectMessageOutputLength function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_AntiCheatServer_GetProtectMessageOutputLengthOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATSERVER_GETPROTECTMESSAGEOUTPUTLENGTH_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Length in bytes of input"]
    pub DataLengthBytes: u32,
}
#[doc = " Input parameters for the EOS_AntiCheatServer_GetProtectMessageOutputLength function."]
pub type EOS_AntiCheatServer_GetProtectMessageOutputLengthOptions =
    _tagEOS_AntiCheatServer_GetProtectMessageOutputLengthOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_ProtectMessage function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatServer_ProtectMessageOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATSERVER_PROTECTMESSAGE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value describing the remote user to whom the message will be sent"]
    pub ClientHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " Length in bytes of input"]
    pub DataLengthBytes: u32,
    #[doc = " The data to encrypt"]
    pub Data: *const ::std::os::raw::c_void,
    #[doc = " The size in bytes of OutBuffer"]
    pub OutBufferSizeBytes: u32,
}
impl Default for _tagEOS_AntiCheatServer_ProtectMessageOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_ProtectMessage function."]
pub type EOS_AntiCheatServer_ProtectMessageOptions = _tagEOS_AntiCheatServer_ProtectMessageOptions;
#[doc = " Input parameters for the EOS_AntiCheatServer_UnprotectMessage function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_AntiCheatServer_UnprotectMessageOptions {
    #[doc = " API Version: Set this to EOS_ANTICHEATSERVER_UNPROTECTMESSAGE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Locally unique value describing the remote user from whom the message was received"]
    pub ClientHandle: EOS_AntiCheatCommon_ClientHandle,
    #[doc = " Length in bytes of input"]
    pub DataLengthBytes: u32,
    #[doc = " The data to decrypt"]
    pub Data: *const ::std::os::raw::c_void,
    #[doc = " The size in bytes of OutBuffer"]
    pub OutBufferSizeBytes: u32,
}
impl Default for _tagEOS_AntiCheatServer_UnprotectMessageOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_AntiCheatServer_UnprotectMessage function."]
pub type EOS_AntiCheatServer_UnprotectMessageOptions =
    _tagEOS_AntiCheatServer_UnprotectMessageOptions;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_ReportsHandle {
    _unused: [u8; 0],
}
pub type EOS_HReports = *mut EOS_ReportsHandle;
#[doc = " Not used"]
pub const EOS_EPlayerReportsCategory_EOS_PRC_Invalid: EOS_EPlayerReportsCategory = 0;
#[doc = " The reported player is cheating"]
pub const EOS_EPlayerReportsCategory_EOS_PRC_Cheating: EOS_EPlayerReportsCategory = 1;
#[doc = " The reported player is exploiting the game"]
pub const EOS_EPlayerReportsCategory_EOS_PRC_Exploiting: EOS_EPlayerReportsCategory = 2;
#[doc = " The reported player has an offensive profile, name, etc"]
pub const EOS_EPlayerReportsCategory_EOS_PRC_OffensiveProfile: EOS_EPlayerReportsCategory = 3;
#[doc = " The reported player is being abusive in chat"]
pub const EOS_EPlayerReportsCategory_EOS_PRC_VerbalAbuse: EOS_EPlayerReportsCategory = 4;
#[doc = " The reported player is scamming other players"]
pub const EOS_EPlayerReportsCategory_EOS_PRC_Scamming: EOS_EPlayerReportsCategory = 5;
#[doc = " The reported player is spamming chat"]
pub const EOS_EPlayerReportsCategory_EOS_PRC_Spamming: EOS_EPlayerReportsCategory = 6;
#[doc = " The player is being reported for something else"]
pub const EOS_EPlayerReportsCategory_EOS_PRC_Other: EOS_EPlayerReportsCategory = 7;
pub const EOS_EPlayerReportsCategory___EOS_EPlayerReportsCategory_PAD_INT32__:
    EOS_EPlayerReportsCategory = 2147483647;
#[doc = " An enumeration of the different player behavior categories that can be reported."]
pub type EOS_EPlayerReportsCategory = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_Reports_SendPlayerBehaviorReport function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Reports_SendPlayerBehaviorReportOptions {
    #[doc = " API Version: Set this to EOS_REPORTS_SENDPLAYERBEHAVIORREPORT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the reporting player"]
    pub ReporterUserId: EOS_ProductUserId,
    #[doc = " Product User ID of the reported player."]
    pub ReportedUserId: EOS_ProductUserId,
    #[doc = " Category for the player report."]
    pub Category: EOS_EPlayerReportsCategory,
    #[doc = " Optional plain text string associated with the report as UTF-8 encoded null-terminated string.\n\n The length of the message can be at maximum up to EOS_REPORTS_REPORTMESSAGE_MAX_LENGTH bytes\n and any excess characters will be truncated upon sending the report."]
    pub Message: *const ::std::os::raw::c_char,
    #[doc = " Optional JSON string associated with the report as UTF-8 encoded null-terminated string.\n This is intended as a way to associate arbitrary structured context information with a report.\n\n This string needs to be valid JSON, report will fail otherwise.\n The length of the context can be at maximum up to EOS_REPORTS_REPORTCONTEXT_MAX_LENGTH bytes, not including the null terminator, report will fail otherwise."]
    pub Context: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Reports_SendPlayerBehaviorReportOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Reports_SendPlayerBehaviorReport function."]
pub type EOS_Reports_SendPlayerBehaviorReportOptions =
    _tagEOS_Reports_SendPlayerBehaviorReportOptions;
#[doc = " Output parameters for the EOS_Reports_SendPlayerBehaviorReport function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Reports_SendPlayerBehaviorReportCompleteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Reports_SendPlayerBehaviorReport."]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_Reports_SendPlayerBehaviorReportCompleteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Reports_SendPlayerBehaviorReport function."]
pub type EOS_Reports_SendPlayerBehaviorReportCompleteCallbackInfo =
    _tagEOS_Reports_SendPlayerBehaviorReportCompleteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Reports_SendPlayerBehaviorReport.\n @param Data A EOS_Reports_SendPlayerBehaviorReportCompleteCallbackInfo containing the output information and result."]
pub type EOS_Reports_OnSendPlayerBehaviorReportCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Reports_SendPlayerBehaviorReportCompleteCallbackInfo),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_SanctionsHandle {
    _unused: [u8; 0],
}
pub type EOS_HSanctions = *mut EOS_SanctionsHandle;
#[doc = " Contains information about a single player sanction."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sanctions_PlayerSanction {
    #[doc = " API Version: Set this to EOS_SANCTIONS_PLAYERSANCTION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The POSIX timestamp when the sanction was placed"]
    pub TimePlaced: i64,
    #[doc = " The action associated with this sanction"]
    pub Action: *const ::std::os::raw::c_char,
    #[doc = " The POSIX timestamp when the sanction will expire. If the sanction is permanent, this will be 0."]
    pub TimeExpires: i64,
    #[doc = " A unique identifier for this specific sanction"]
    pub ReferenceId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sanctions_PlayerSanction {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a single player sanction."]
pub type EOS_Sanctions_PlayerSanction = _tagEOS_Sanctions_PlayerSanction;
#[doc = " Input parameters for the EOS_Sanctions_QueryActivePlayerSanctions API."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sanctions_QueryActivePlayerSanctionsOptions {
    #[doc = " API Version: Set this to EOS_SANCTIONS_QUERYACTIVEPLAYERSANCTIONS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the user whose active sanctions are to be retrieved."]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the local user who initiated this request. Dedicated servers should set this to null."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Sanctions_QueryActivePlayerSanctionsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sanctions_QueryActivePlayerSanctions API."]
pub type EOS_Sanctions_QueryActivePlayerSanctionsOptions =
    _tagEOS_Sanctions_QueryActivePlayerSanctionsOptions;
#[doc = " Output parameters for the EOS_Sanctions_QueryActivePlayerSanctions function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sanctions_QueryActivePlayerSanctionsCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Sanctions_QueryActivePlayerSanctions."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Target Product User ID that was passed to EOS_Sanctions_QueryActivePlayerSanctions."]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " The Product User ID of the local user who initiated this request, if applicable."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Sanctions_QueryActivePlayerSanctionsCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sanctions_QueryActivePlayerSanctions function."]
pub type EOS_Sanctions_QueryActivePlayerSanctionsCallbackInfo =
    _tagEOS_Sanctions_QueryActivePlayerSanctionsCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_Sanctions_QueryActivePlayerSanctions\n @param Data A EOS_Sanctions_QueryActivePlayerSanctionsCallbackInfo containing the output information and result"]
pub type EOS_Sanctions_OnQueryActivePlayerSanctionsCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Sanctions_QueryActivePlayerSanctionsCallbackInfo),
>;
#[doc = " Input parameters for the EOS_Sanctions_GetPlayerSanctionCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sanctions_GetPlayerSanctionCountOptions {
    #[doc = " API Version: Set this to EOS_SANCTIONS_GETPLAYERSANCTIONCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the user whose sanction count should be returned"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_Sanctions_GetPlayerSanctionCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sanctions_GetPlayerSanctionCount function."]
pub type EOS_Sanctions_GetPlayerSanctionCountOptions =
    _tagEOS_Sanctions_GetPlayerSanctionCountOptions;
#[doc = " Input parameters for the EOS_Sanctions_CopyPlayerSanctionByIndex function"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sanctions_CopyPlayerSanctionByIndexOptions {
    #[doc = " API Version: Set this to EOS_SANCTIONS_COPYPLAYERSANCTIONBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the user whose active sanctions are to be copied"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Index of the sanction to retrieve from the cache"]
    pub SanctionIndex: u32,
}
impl Default for _tagEOS_Sanctions_CopyPlayerSanctionByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sanctions_CopyPlayerSanctionByIndex function"]
pub type EOS_Sanctions_CopyPlayerSanctionByIndexOptions =
    _tagEOS_Sanctions_CopyPlayerSanctionByIndexOptions;
unsafe extern "C" {
    #[doc = " Release the memory associated with a player sanction.\n This must be called on data retrieved from EOS_Sanctions_CopyPlayerSanctionByIndex.\n\n @param Sanction - The sanction data to release.\n\n @see EOS_Sanctions_PlayerSanction\n @see EOS_Sanctions_CopyPlayerSanctionByIndex"]
    pub fn EOS_Sanctions_PlayerSanction_Release(Sanction: *mut EOS_Sanctions_PlayerSanction);
}
#[doc = " Not used"]
pub const EOS_ESanctionAppealReason_EOS_SAR_Invalid: EOS_ESanctionAppealReason = 0;
#[doc = " Incorrectly placed sanction"]
pub const EOS_ESanctionAppealReason_EOS_SAR_IncorrectSanction: EOS_ESanctionAppealReason = 1;
#[doc = " The account was compromised, typically this means stolen"]
pub const EOS_ESanctionAppealReason_EOS_SAR_CompromisedAccount: EOS_ESanctionAppealReason = 2;
#[doc = " The punishment is considered too severe by the user"]
pub const EOS_ESanctionAppealReason_EOS_SAR_UnfairPunishment: EOS_ESanctionAppealReason = 3;
#[doc = " The user admits to rulebreaking, but still appeals for forgiveness"]
pub const EOS_ESanctionAppealReason_EOS_SAR_AppealForForgiveness: EOS_ESanctionAppealReason = 4;
pub const EOS_ESanctionAppealReason___EOS_ESanctionAppealReason_PAD_INT32__:
    EOS_ESanctionAppealReason = 2147483647;
#[doc = " Sanction appeal reason codes"]
pub type EOS_ESanctionAppealReason = ::std::os::raw::c_int;
#[doc = " Input parameters for the EOS_Sanctions_CreatePlayerSanctionAppeal function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sanctions_CreatePlayerSanctionAppealOptions {
    #[doc = " API Version: Set this to EOS_SANCTIONS_CREATEPLAYERSANCTIONAPPEAL_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user sending their own sanction appeal."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Reason code for the appeal."]
    pub Reason: EOS_ESanctionAppealReason,
    #[doc = " A unique identifier for the specific sanction"]
    pub ReferenceId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sanctions_CreatePlayerSanctionAppealOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_Sanctions_CreatePlayerSanctionAppeal function."]
pub type EOS_Sanctions_CreatePlayerSanctionAppealOptions =
    _tagEOS_Sanctions_CreatePlayerSanctionAppealOptions;
#[doc = " Output parameters for the EOS_Sanctions_CreatePlayerSanctionAppealCallbackInfo function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_Sanctions_CreatePlayerSanctionAppealCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_Sanctions_CreatePlayerSanctionAppeal."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " A unique identifier for the specific sanction that was appealed"]
    pub ReferenceId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_Sanctions_CreatePlayerSanctionAppealCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_Sanctions_CreatePlayerSanctionAppealCallbackInfo function."]
pub type EOS_Sanctions_CreatePlayerSanctionAppealCallbackInfo =
    _tagEOS_Sanctions_CreatePlayerSanctionAppealCallbackInfo;
#[doc = " Function definition for callbacks passed to EOS_Sanctions_CreatePlayerSanctionAppeal.\n @param Data - EOS_Sanctions_CreatePlayerSanctionAppealCallbackInfo containing the output information and result."]
pub type EOS_Sanctions_CreatePlayerSanctionAppealCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_Sanctions_CreatePlayerSanctionAppealCallbackInfo),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_KWSHandle {
    _unused: [u8; 0],
}
pub type EOS_HKWS = *mut EOS_KWSHandle;
#[doc = " Permission has been granted"]
pub const EOS_EKWSPermissionStatus_EOS_KPS_GRANTED: EOS_EKWSPermissionStatus = 0;
#[doc = " Permission has been rejected"]
pub const EOS_EKWSPermissionStatus_EOS_KPS_REJECTED: EOS_EKWSPermissionStatus = 1;
#[doc = " Permission is still pending approval"]
pub const EOS_EKWSPermissionStatus_EOS_KPS_PENDING: EOS_EKWSPermissionStatus = 2;
pub const EOS_EKWSPermissionStatus___EOS_EKWSPermissionStatus_PAD_INT32__:
    EOS_EKWSPermissionStatus = 2147483647;
#[doc = " An enumeration of the different permission statuses."]
pub type EOS_EKWSPermissionStatus = ::std::os::raw::c_int;
#[doc = " Contains information about a KWS permission status."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_PermissionStatus {
    #[doc = " API Version: Set this to EOS_KWS_PERMISSIONSTATUS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Name of the permission"]
    pub Name: *const ::std::os::raw::c_char,
    #[doc = " Status of the permission"]
    pub Status: EOS_EKWSPermissionStatus,
}
impl Default for _tagEOS_KWS_PermissionStatus {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a KWS permission status."]
pub type EOS_KWS_PermissionStatus = _tagEOS_KWS_PermissionStatus;
unsafe extern "C" {
    #[doc = " Release the memory associated with a KWS permission status. This must be called on data retrieved from EOS_KWS_CopyPermissionByIndex.\n\n @param PermissionStatus - A pointer to the KWS permission status to release\n\n @see EOS_KWS_CopyPermissionByIndex"]
    pub fn EOS_KWS_PermissionStatus_Release(PermissionStatus: *mut EOS_KWS_PermissionStatus);
}
#[doc = " Input parameters for the EOS_KWS_QueryAgeGate function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_KWS_QueryAgeGateOptions {
    #[doc = " API Version: Set this to EOS_KWS_QUERYAGEGATE_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_KWS_QueryAgeGate function."]
pub type EOS_KWS_QueryAgeGateOptions = _tagEOS_KWS_QueryAgeGateOptions;
#[doc = " Output parameters for the EOS_KWS_QueryAgeGate Function. These parameters are received through the callback provided to EOS_KWS_QueryAgeGate"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_QueryAgeGateCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_KWS_QueryAgeGate"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Country code determined for this request based on the local client's ip address that the backend resolves"]
    pub CountryCode: *const ::std::os::raw::c_char,
    #[doc = " Age of consent in the given country"]
    pub AgeOfConsent: u32,
}
impl Default for _tagEOS_KWS_QueryAgeGateCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_KWS_QueryAgeGate Function. These parameters are received through the callback provided to EOS_KWS_QueryAgeGate"]
pub type EOS_KWS_QueryAgeGateCallbackInfo = _tagEOS_KWS_QueryAgeGateCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_KWS_QueryAgeGate\n @param Data A EOS_KWS_QueryAgeGateCallbackInfo containing the output information and result"]
pub type EOS_KWS_OnQueryAgeGateCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_KWS_QueryAgeGateCallbackInfo)>;
#[doc = " Input parameters for the EOS_KWS_CreateUser function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_CreateUserOptions {
    #[doc = " API Version: Set this to EOS_KWS_CREATEUSER_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Local user creating a KWS entry"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Date of birth in ISO8601 form (YYYY-MM-DD)"]
    pub DateOfBirth: *const ::std::os::raw::c_char,
    #[doc = " Parent email"]
    pub ParentEmail: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_KWS_CreateUserOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_KWS_CreateUser function."]
pub type EOS_KWS_CreateUserOptions = _tagEOS_KWS_CreateUserOptions;
#[doc = " Output parameters for the EOS_KWS_CreateUserOptions Function. These parameters are received through the callback provided to EOS_KWS_CreateUser"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_CreateUserCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_KWS_CreateUser"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Local user that created a KWS entry"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " KWS UserId created"]
    pub KWSUserId: *const ::std::os::raw::c_char,
    #[doc = " Is this user a minor"]
    pub bIsMinor: EOS_Bool,
}
impl Default for _tagEOS_KWS_CreateUserCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_KWS_CreateUserOptions Function. These parameters are received through the callback provided to EOS_KWS_CreateUser"]
pub type EOS_KWS_CreateUserCallbackInfo = _tagEOS_KWS_CreateUserCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_KWS_CreateUser\n @param Data A EOS_KWS_CreateUserCallbackInfo containing the output information and result"]
pub type EOS_KWS_OnCreateUserCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_KWS_CreateUserCallbackInfo)>;
#[doc = " Input parameters for the EOS_KWS_QueryPermissions function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_QueryPermissionsOptions {
    #[doc = " API Version: Set this to EOS_KWS_QUERYPERMISSIONS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Local user querying their permissions"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_KWS_QueryPermissionsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_KWS_QueryPermissions function."]
pub type EOS_KWS_QueryPermissionsOptions = _tagEOS_KWS_QueryPermissionsOptions;
#[doc = " Output parameters for the EOS_KWS_QueryPermissionsOptions Function. These parameters are received through the callback provided to EOS_KWS_QueryPermissions"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_QueryPermissionsCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_KWS_QueryPermissions"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Local user querying their permissions"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " KWS UserId created"]
    pub KWSUserId: *const ::std::os::raw::c_char,
    #[doc = " Date of birth in ISO8601 form (YYYY-MM-DD)"]
    pub DateOfBirth: *const ::std::os::raw::c_char,
    #[doc = " Is this user a minor"]
    pub bIsMinor: EOS_Bool,
    #[doc = " Parent email. This value may be set to an empty string if the originally registered email recipient declined to be the right person to give consent."]
    pub ParentEmail: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_KWS_QueryPermissionsCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_KWS_QueryPermissionsOptions Function. These parameters are received through the callback provided to EOS_KWS_QueryPermissions"]
pub type EOS_KWS_QueryPermissionsCallbackInfo = _tagEOS_KWS_QueryPermissionsCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_KWS_QueryPermissions\n @param Data A EOS_KWS_QueryPermissionsCallbackInfo containing the output information and result"]
pub type EOS_KWS_OnQueryPermissionsCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_KWS_QueryPermissionsCallbackInfo)>;
#[doc = " Input parameters for the EOS_KWS_UpdateParentEmail function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_UpdateParentEmailOptions {
    #[doc = " API Version: Set this to EOS_KWS_UPDATEPARENTEMAIL_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Local user updating parental information"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " New parent email"]
    pub ParentEmail: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_KWS_UpdateParentEmailOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_KWS_UpdateParentEmail function."]
pub type EOS_KWS_UpdateParentEmailOptions = _tagEOS_KWS_UpdateParentEmailOptions;
#[doc = " Output parameters for the EOS_KWS_UpdateParentEmailOptions Function. These parameters are received through the callback provided to EOS_KWS_UpdateParentEmail"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_UpdateParentEmailCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_KWS_UpdateParentEmail"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Local user updating their parental email"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_KWS_UpdateParentEmailCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_KWS_UpdateParentEmailOptions Function. These parameters are received through the callback provided to EOS_KWS_UpdateParentEmail"]
pub type EOS_KWS_UpdateParentEmailCallbackInfo = _tagEOS_KWS_UpdateParentEmailCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_KWS_UpdateParentEmail\n @param Data A EOS_KWS_UpdateParentEmailCallbackInfo containing the output information and result"]
pub type EOS_KWS_OnUpdateParentEmailCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_KWS_UpdateParentEmailCallbackInfo)>;
#[doc = " Input parameters for the EOS_KWS_RequestPermissions function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_RequestPermissionsOptions {
    #[doc = " API Version: Set this to EOS_KWS_REQUESTPERMISSIONS_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Local user requesting new permissions"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The number of permissions to request, may not exceed EOS_KWS_MAX_PERMISSIONS. Only new permissions need be included."]
    pub PermissionKeyCount: u32,
    #[doc = " Names of the permissions to request (Setup with KWS)"]
    pub PermissionKeys: *mut *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_KWS_RequestPermissionsOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_KWS_RequestPermissions function."]
pub type EOS_KWS_RequestPermissionsOptions = _tagEOS_KWS_RequestPermissionsOptions;
#[doc = " Output parameters for the EOS_KWS_RequestPermissionsOptions Function. These parameters are received through the callback provided to EOS_KWS_RequestPermissions"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_RequestPermissionsCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_KWS_RequestPermissions"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Local user requesting new permissions"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_KWS_RequestPermissionsCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_KWS_RequestPermissionsOptions Function. These parameters are received through the callback provided to EOS_KWS_RequestPermissions"]
pub type EOS_KWS_RequestPermissionsCallbackInfo = _tagEOS_KWS_RequestPermissionsCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_KWS_RequestPermissions\n @param Data A EOS_KWS_RequestPermissionsCallbackInfo containing the output information and result"]
pub type EOS_KWS_OnRequestPermissionsCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_KWS_RequestPermissionsCallbackInfo),
>;
#[doc = " Input parameters for the EOS_KWS_GetPermissionsCount function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_GetPermissionsCountOptions {
    #[doc = " API Version: Set this to EOS_KWS_GETPERMISSIONSCOUNT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user whose permissions are being accessed"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_KWS_GetPermissionsCountOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_KWS_GetPermissionsCount function."]
pub type EOS_KWS_GetPermissionsCountOptions = _tagEOS_KWS_GetPermissionsCountOptions;
#[doc = " Input parameters for the EOS_KWS_CopyPermissionByIndex function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_CopyPermissionByIndexOptions {
    #[doc = " API Version: Set this to EOS_KWS_COPYPERMISSIONBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user whose permissions are being accessed"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The index of the permission to get."]
    pub Index: u32,
}
impl Default for _tagEOS_KWS_CopyPermissionByIndexOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_KWS_CopyPermissionByIndex function."]
pub type EOS_KWS_CopyPermissionByIndexOptions = _tagEOS_KWS_CopyPermissionByIndexOptions;
#[doc = " Input parameters for the EOS_KWS_GetPermissionByKey function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_GetPermissionByKeyOptions {
    #[doc = " API Version: Set this to EOS_KWS_GETPERMISSIONBYKEY_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user getting permissions"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Permission name to query"]
    pub Key: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_KWS_GetPermissionByKeyOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_KWS_GetPermissionByKey function."]
pub type EOS_KWS_GetPermissionByKeyOptions = _tagEOS_KWS_GetPermissionByKeyOptions;
#[doc = " Input parameters for the EOS_KWS_AddNotifyPermissionsUpdateReceived function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_KWS_AddNotifyPermissionsUpdateReceivedOptions {
    #[doc = " API Version: Set this to EOS_KWS_ADDNOTIFYPERMISSIONSUPDATERECEIVED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_KWS_AddNotifyPermissionsUpdateReceived function."]
pub type EOS_KWS_AddNotifyPermissionsUpdateReceivedOptions =
    _tagEOS_KWS_AddNotifyPermissionsUpdateReceivedOptions;
#[doc = " Output parameters for the EOS_KWS_OnPermissionsUpdateReceivedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_KWS_PermissionsUpdateReceivedCallbackInfo {
    #[doc = " Context that was passed into EOS_KWS_AddNotifyPermissionsUpdateReceived"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Recipient Local user id"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Recipient's associated KWS UserId"]
    pub KWSUserId: *const ::std::os::raw::c_char,
    #[doc = " Date of birth in ISO8601 form (YYYY-MM-DD)"]
    pub DateOfBirth: *const ::std::os::raw::c_char,
    #[doc = " Is this user a minor"]
    pub bIsMinor: EOS_Bool,
    #[doc = " Parent email. This value may be set to an empty string if the originally registered email recipient declined to be the right person to give consent."]
    pub ParentEmail: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_KWS_PermissionsUpdateReceivedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_KWS_OnPermissionsUpdateReceivedCallback Function."]
pub type EOS_KWS_PermissionsUpdateReceivedCallbackInfo =
    _tagEOS_KWS_PermissionsUpdateReceivedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_KWS_AddNotifyPermissionsUpdateReceived\n\n @param Data A EOS_KWS_PermissionsUpdateReceivedCallbackInfo containing the output information and result"]
pub type EOS_KWS_OnPermissionsUpdateReceivedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_KWS_PermissionsUpdateReceivedCallbackInfo),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_RTCHandle {
    _unused: [u8; 0],
}
pub type EOS_HRTC = *mut EOS_RTCHandle;
#[doc = " Participant joined the room"]
pub const EOS_ERTCParticipantStatus_EOS_RTCPS_Joined: EOS_ERTCParticipantStatus = 0;
#[doc = " Participant left the room"]
pub const EOS_ERTCParticipantStatus_EOS_RTCPS_Left: EOS_ERTCParticipantStatus = 1;
pub const EOS_ERTCParticipantStatus___EOS_ERTCParticipantStatus_PAD_INT32__:
    EOS_ERTCParticipantStatus = 2147483647;
#[doc = " Participant RTC's status change"]
pub type EOS_ERTCParticipantStatus = ::std::os::raw::c_int;
#[doc = " This struct is used to call EOS_RTC_JoinRoom."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_JoinRoomOptions {
    #[doc = " API Version: Set this to EOS_RTC_JOINROOM_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The product user id of the user trying to request this operation."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room the user would like to join."]
    pub RoomName: *const ::std::os::raw::c_char,
    #[doc = " The room the user would like to join."]
    pub ClientBaseUrl: *const ::std::os::raw::c_char,
    #[doc = " Authorization credential token to join the room."]
    pub ParticipantToken: *const ::std::os::raw::c_char,
    #[doc = " The participant id used to join the room. If set to NULL the LocalUserId will be used instead."]
    pub ParticipantId: EOS_ProductUserId,
    #[doc = " Join room flags, e.g. EOS_RTC_JOINROOMFLAGS_ENABLE_ECHO. This is a bitwise-or union of the defined flags."]
    pub Flags: u32,
    #[doc = " Enable or disable Manual Audio Input. If manual audio input is enabled audio recording is not started and the audio\n buffers must be passed manually using EOS_RTCAudio_SendAudio."]
    pub bManualAudioInputEnabled: EOS_Bool,
    #[doc = " Enable or disable Manual Audio Output. If manual audio output is enabled audio rendering is not started and the audio\n buffers must be received with EOS_RTCAudio_AddNotifyAudioBeforeRender and rendered manually."]
    pub bManualAudioOutputEnabled: EOS_Bool,
}
impl Default for _tagEOS_RTC_JoinRoomOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is used to call EOS_RTC_JoinRoom."]
pub type EOS_RTC_JoinRoomOptions = _tagEOS_RTC_JoinRoomOptions;
#[doc = " This struct is used to get information about a specific option."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_Option {
    #[doc = " API Version: Set this to EOS_RTC_OPTION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The unique key of the option. The max size of the string is EOS_RTC_OPTION_KEY_MAXCHARCOUNT."]
    pub Key: *const ::std::os::raw::c_char,
    #[doc = " The value of the option. The max size of the string is EOS_RTC_OPTION_VALUE_MAXCHARCOUNT."]
    pub Value: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTC_Option {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is used to get information about a specific option."]
pub type EOS_RTC_Option = _tagEOS_RTC_Option;
#[doc = " This struct is passed in with a call to EOS_RTC_OnJoinRoomCallback."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_JoinRoomCallbackInfo {
    #[doc = " This returns:\n EOS_Success if the channel was successfully joined.\n EOS_NoConnection: unable to connect to RTC servers (retryable).\n EOS_InvalidAuth: if the token is invalid (not retryable).\n EOS_RTC_TooManyParticipants: if the room cannot accept more participants (not retryable).\n EOS_AccessDenied: if the room name belongs to the Lobby voice system (not retryable).\n EOS_UnexpectedError otherwise (retryable)."]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into EOS_RTC_JoinRoom."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the user who initiated this request."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room the user was trying to join."]
    pub RoomName: *const ::std::os::raw::c_char,
    #[doc = " The room option items count."]
    pub RoomOptionsCount: u32,
    #[doc = " The room option items."]
    pub RoomOptions: *const EOS_RTC_Option,
}
impl Default for _tagEOS_RTC_JoinRoomCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is passed in with a call to EOS_RTC_OnJoinRoomCallback."]
pub type EOS_RTC_JoinRoomCallbackInfo = _tagEOS_RTC_JoinRoomCallbackInfo;
#[doc = " Callback for completion of room join request."]
pub type EOS_RTC_OnJoinRoomCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_RTC_JoinRoomCallbackInfo)>;
#[doc = " This struct is used to call EOS_RTC_LeaveRoom."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_LeaveRoomOptions {
    #[doc = " API Version: Set this to EOS_RTC_LEAVEROOM_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the user requesting to leave the room"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room to leave."]
    pub RoomName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTC_LeaveRoomOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is used to call EOS_RTC_LeaveRoom."]
pub type EOS_RTC_LeaveRoomOptions = _tagEOS_RTC_LeaveRoomOptions;
#[doc = " This struct is passed in with a call to EOS_RTC_OnLeaveRoomCallback."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_LeaveRoomCallbackInfo {
    #[doc = " This returns:\n EOS_Success if the channel was successfully left.\n EOS_AccessDenied if the room name belongs to the Lobby voice system.\n EOS_UnexpectedError otherwise."]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into EOS_RTC_LeaveRoomOptions."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the user who initiated this request."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room the user was trying to leave."]
    pub RoomName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTC_LeaveRoomCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is passed in with a call to EOS_RTC_OnLeaveRoomCallback."]
pub type EOS_RTC_LeaveRoomCallbackInfo = _tagEOS_RTC_LeaveRoomCallbackInfo;
#[doc = " Callback for completion of room leave request."]
pub type EOS_RTC_OnLeaveRoomCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_RTC_LeaveRoomCallbackInfo)>;
#[doc = " This struct is passed in with a call to EOS_RTC_BlockParticipant."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_BlockParticipantOptions {
    #[doc = " API Version: Set this to EOS_RTC_BLOCKPARTICIPANT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID of the user trying to request this operation."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room the users should be blocked on."]
    pub RoomName: *const ::std::os::raw::c_char,
    #[doc = " Product User ID of the participant to block"]
    pub ParticipantId: EOS_ProductUserId,
    #[doc = " Block or unblock the participant"]
    pub bBlocked: EOS_Bool,
}
impl Default for _tagEOS_RTC_BlockParticipantOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is passed in with a call to EOS_RTC_BlockParticipant."]
pub type EOS_RTC_BlockParticipantOptions = _tagEOS_RTC_BlockParticipantOptions;
#[doc = " This struct is passed in with a call to EOS_RTC_OnBlockParticipantCallback."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_BlockParticipantCallbackInfo {
    #[doc = " This returns:\n EOS_Success if the channel was successfully blocked.\n EOS_UnexpectedError otherwise."]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into EOS_RTC_BlockParticipant."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the user who initiated this request."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room the users should be blocked on."]
    pub RoomName: *const ::std::os::raw::c_char,
    #[doc = " The Product User ID of the participant being blocked"]
    pub ParticipantId: EOS_ProductUserId,
    #[doc = " The block state that should have been set"]
    pub bBlocked: EOS_Bool,
}
impl Default for _tagEOS_RTC_BlockParticipantCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is passed in with a call to EOS_RTC_OnBlockParticipantCallback."]
pub type EOS_RTC_BlockParticipantCallbackInfo = _tagEOS_RTC_BlockParticipantCallbackInfo;
#[doc = " Callback for completion of block participants request."]
pub type EOS_RTC_OnBlockParticipantCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_RTC_BlockParticipantCallbackInfo)>;
#[doc = " This struct is used to call EOS_RTC_AddNotifyDisconnected."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_AddNotifyDisconnectedOptions {
    #[doc = " API Version: Set this to EOS_RTC_ADDNOTIFYDISCONNECTED_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the user trying to request this operation."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room this event is registered on."]
    pub RoomName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTC_AddNotifyDisconnectedOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is used to call EOS_RTC_AddNotifyDisconnected."]
pub type EOS_RTC_AddNotifyDisconnectedOptions = _tagEOS_RTC_AddNotifyDisconnectedOptions;
#[doc = " This struct is passed in with a call to EOS_RTC_AddNotifyDisconnected registered event."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_DisconnectedCallbackInfo {
    #[doc = " This returns:\n EOS_Success The room was left cleanly.\n EOS_NoConnection: There was a network issue connecting to the server (retryable).\n EOS_RTC_UserKicked: The user has been kicked by the server (retryable).\n EOS_ServiceFailure: A known error occurred during interaction with the server (retryable).\n EOS_UnexpectedError Unexpected error (retryable)."]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into EOS_RTC_AddNotifyDisconnected."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the user who initiated this request."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room associated with this event."]
    pub RoomName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTC_DisconnectedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is passed in with a call to EOS_RTC_AddNotifyDisconnected registered event."]
pub type EOS_RTC_DisconnectedCallbackInfo = _tagEOS_RTC_DisconnectedCallbackInfo;
#[doc = " Function prototype definition for notifications that come from EOS_RTC_AddNotifyDisconnected\n\n @param Data A EOS_RTC_DisconnectedCallbackInfo containing the output information and result"]
pub type EOS_RTC_OnDisconnectedCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_RTC_DisconnectedCallbackInfo)>;
#[doc = " This struct is used to get information about a specific participant metadata item."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_ParticipantMetadata {
    #[doc = " API Version: Set this to EOS_RTC_PARTICIPANTMETADATA_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The unique key of this metadata item. The max size of the string is EOS_RTC_PARTICIPANTMETADATA_KEY_MAXCHARCOUNT."]
    pub Key: *const ::std::os::raw::c_char,
    #[doc = " The value of this metadata item. The max size of the string is EOS_RTC_PARTICIPANTMETADATA_VALUE_MAXCHARCOUNT."]
    pub Value: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTC_ParticipantMetadata {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is used to get information about a specific participant metadata item."]
pub type EOS_RTC_ParticipantMetadata = _tagEOS_RTC_ParticipantMetadata;
#[doc = " This struct is used to call EOS_RTC_AddNotifyParticipantStatusChanged."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_AddNotifyParticipantStatusChangedOptions {
    #[doc = " API Version: Set this to EOS_RTC_ADDNOTIFYPARTICIPANTSTATUSCHANGED_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the user trying to request this operation."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room this event is registered on."]
    pub RoomName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTC_AddNotifyParticipantStatusChangedOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is used to call EOS_RTC_AddNotifyParticipantStatusChanged."]
pub type EOS_RTC_AddNotifyParticipantStatusChangedOptions =
    _tagEOS_RTC_AddNotifyParticipantStatusChangedOptions;
#[doc = " This struct is passed in with a call to EOS_RTC_AddNotifyParticipantStatusChanged registered event."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_ParticipantStatusChangedCallbackInfo {
    #[doc = " Client-specified data passed into EOS_RTC_AddNotifyParticipantStatusChanged."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the user who initiated this request."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room associated with this event."]
    pub RoomName: *const ::std::os::raw::c_char,
    #[doc = " The participant whose status changed."]
    pub ParticipantId: EOS_ProductUserId,
    #[doc = " What status change occurred"]
    pub ParticipantStatus: EOS_ERTCParticipantStatus,
    #[doc = " The participant metadata items count.\n This is only set for the first notification where ParticipantStatus is EOS_RTCPS_Joined. Subsequent notifications\n such as when bParticipantInBlocklist changes will not contain any metadata."]
    pub ParticipantMetadataCount: u32,
    #[doc = " The participant metadata items.\n This is only set for the first notification where ParticipantStatus is EOS_RTCPS_Joined. Subsequent notifications\n such as when bParticipantInBlocklist changes will not contain any metadata."]
    pub ParticipantMetadata: *const EOS_RTC_ParticipantMetadata,
    #[doc = " The participant's block list status, if ParticipantStatus is EOS_RTCPS_Joined.\n This is set to true if the participant is in any of the local user's applicable block lists,\n such Epic block list or any of the current platform's block lists.\n It can be used to detect when an internal automatic RTC block is applied because of trust and safety restrictions."]
    pub bParticipantInBlocklist: EOS_Bool,
}
impl Default for _tagEOS_RTC_ParticipantStatusChangedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is passed in with a call to EOS_RTC_AddNotifyParticipantStatusChanged registered event."]
pub type EOS_RTC_ParticipantStatusChangedCallbackInfo =
    _tagEOS_RTC_ParticipantStatusChangedCallbackInfo;
#[doc = " Function prototype definition for notifications that come from EOS_RTC_AddNotifyParticipantStatusChanged\n\n @param Data A EOS_RTC_ParticipantStatusChangedCallbackInfo containing the output information and result"]
pub type EOS_RTC_OnParticipantStatusChangedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_RTC_ParticipantStatusChangedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_RTC_AddNotifyRoomBeforeJoin function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_AddNotifyRoomBeforeJoinOptions {
    #[doc = " API Version: Set this to EOS_RTC_ADDNOTIFYROOMBEFOREJOIN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the user trying to request this operation."]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_RTC_AddNotifyRoomBeforeJoinOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_RTC_AddNotifyRoomBeforeJoin function."]
pub type EOS_RTC_AddNotifyRoomBeforeJoinOptions = _tagEOS_RTC_AddNotifyRoomBeforeJoinOptions;
#[doc = " This struct is passed in with a call to EOS_RTC_AddNotifyRoomBeforeJoin registered event."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_RoomBeforeJoinCallbackInfo {
    #[doc = " Context that was passed into EOS_RTC_AddNotifyRoomBeforeJoin"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the user who initiated this request."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room associated with this event."]
    pub RoomName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTC_RoomBeforeJoinCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is passed in with a call to EOS_RTC_AddNotifyRoomBeforeJoin registered event."]
pub type EOS_RTC_RoomBeforeJoinCallbackInfo = _tagEOS_RTC_RoomBeforeJoinCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_RTC_AddNotifyRoomBeforeJoin\n\n @param Data containing the RTC room name which is about to be created and joined."]
pub type EOS_RTC_OnRoomBeforeJoinCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_RTC_RoomBeforeJoinCallbackInfo)>;
#[doc = " This struct is used to call EOS_RTC_SetSetting\n\n Available values of SettingName:\n - DisableEchoCancelation: Disables the use of echo cancellation for the audio channel. Default \"False\".\n - DisableNoiseSupression: Disables the use of noise suppression for the audio channel. Default \"False\".\n - DisableAutoGainControl: Disables the use of auto gain control for the audio channel. Default \"False\".\n - DisableDtx: Allows to disable the use of DTX.  Default \"False\"."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_SetSettingOptions {
    #[doc = " API Version: Set this to EOS_RTC_SETSETTING_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Setting that should be set."]
    pub SettingName: *const ::std::os::raw::c_char,
    #[doc = " Value to set the setting to."]
    pub SettingValue: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTC_SetSettingOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is used to call EOS_RTC_SetSetting\n\n Available values of SettingName:\n - DisableEchoCancelation: Disables the use of echo cancellation for the audio channel. Default \"False\".\n - DisableNoiseSupression: Disables the use of noise suppression for the audio channel. Default \"False\".\n - DisableAutoGainControl: Disables the use of auto gain control for the audio channel. Default \"False\".\n - DisableDtx: Allows to disable the use of DTX.  Default \"False\"."]
pub type EOS_RTC_SetSettingOptions = _tagEOS_RTC_SetSettingOptions;
#[doc = " This struct is used to call EOS_RTC_SetRoomSetting\n\n Available values of SettingName:\n - DisableEchoCancelation: Disables the use of echo cancellation for the audio channel. Default \"False\".\n - DisableNoiseSupression: Disables the use of noise suppression for the audio channel. Default \"False\".\n - DisableAutoGainControl: Disables the use of auto gain control for the audio channel. Default \"False\".\n - DisableDtx: Allows to disable the use of DTX.  Default \"False\"."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_SetRoomSettingOptions {
    #[doc = " API Version: Set this to EOS_RTC_SETROOMSETTING_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the user trying to request this operation."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room the setting will be applied to."]
    pub RoomName: *const ::std::os::raw::c_char,
    #[doc = " Setting that should be set."]
    pub SettingName: *const ::std::os::raw::c_char,
    #[doc = " Value to set the setting to."]
    pub SettingValue: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTC_SetRoomSettingOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is used to call EOS_RTC_SetRoomSetting\n\n Available values of SettingName:\n - DisableEchoCancelation: Disables the use of echo cancellation for the audio channel. Default \"False\".\n - DisableNoiseSupression: Disables the use of noise suppression for the audio channel. Default \"False\".\n - DisableAutoGainControl: Disables the use of auto gain control for the audio channel. Default \"False\".\n - DisableDtx: Allows to disable the use of DTX.  Default \"False\"."]
pub type EOS_RTC_SetRoomSettingOptions = _tagEOS_RTC_SetRoomSettingOptions;
#[doc = " This struct is used to call EOS_RTC_AddNotifyRoomStatisticsUpdated."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_AddNotifyRoomStatisticsUpdatedOptions {
    #[doc = " API Version: Set this to EOS_RTC_ADDNOTIFYROOMSTATISTICSUPDATED_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the user trying to request this operation."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room this event is registered on."]
    pub RoomName: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTC_AddNotifyRoomStatisticsUpdatedOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is used to call EOS_RTC_AddNotifyRoomStatisticsUpdated."]
pub type EOS_RTC_AddNotifyRoomStatisticsUpdatedOptions =
    _tagEOS_RTC_AddNotifyRoomStatisticsUpdatedOptions;
#[doc = " This struct is passed in with a call to EOS_RTC_AddNotifyRoomStatisticsUpdated registered event."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTC_RoomStatisticsUpdatedInfo {
    #[doc = " Client-specified data passed into EOS_RTC_AddNotifyRoomStatisticsUpdated."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " The Product User ID of the user who initiated this request."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The room associated with this event."]
    pub RoomName: *const ::std::os::raw::c_char,
    #[doc = " Statistics in JSON format"]
    pub Statistic: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTC_RoomStatisticsUpdatedInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " This struct is passed in with a call to EOS_RTC_AddNotifyRoomStatisticsUpdated registered event."]
pub type EOS_RTC_RoomStatisticsUpdatedInfo = _tagEOS_RTC_RoomStatisticsUpdatedInfo;
#[doc = " Function prototype definition for notifications that come from EOS_RTC_AddNotifyRoomStatisticsUpdated\n\n @param Data A EOS_RTC_RoomStatisticsUpdatedInfo containing the output information and result"]
pub type EOS_RTC_OnRoomStatisticsUpdatedCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_RTC_RoomStatisticsUpdatedInfo)>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_RTCAdminHandle {
    _unused: [u8; 0],
}
pub type EOS_HRTCAdmin = *mut EOS_RTCAdminHandle;
#[doc = " Input parameters for the EOS_RTCAdmin_QueryJoinRoomToken function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTCAdmin_QueryJoinRoomTokenOptions {
    #[doc = " API Version: Set this to EOS_RTCADMIN_QUERYJOINROOMTOKEN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Product User ID for local user who is querying join room tokens."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Room name to request a token for."]
    pub RoomName: *const ::std::os::raw::c_char,
    #[doc = " An array of Product User IDs indicating the users to retrieve a token for."]
    pub TargetUserIds: *mut EOS_ProductUserId,
    #[doc = " The number of users included in the query."]
    pub TargetUserIdsCount: u32,
    #[doc = " Array of IP Addresses, one for each of the users we're querying tokens for.\n There should be TargetUserIdsCount Ip Addresses, you can set an entry to NULL if not known.\n If TargetUserIpAddresses is set to NULL IP Addresses will be ignored.\n IPv4 format: \"0.0.0.0\"\n IPv6 format: \"0:0:0:0:0:0:0:0\""]
    pub TargetUserIpAddresses: *mut *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTCAdmin_QueryJoinRoomTokenOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_RTCAdmin_QueryJoinRoomToken function."]
pub type EOS_RTCAdmin_QueryJoinRoomTokenOptions = _tagEOS_RTCAdmin_QueryJoinRoomTokenOptions;
#[doc = " Data containing the result information for a query join room token request."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTCAdmin_QueryJoinRoomTokenCompleteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_RTCAdmin_QueryJoinRoomToken."]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Room the request was made for."]
    pub RoomName: *const ::std::os::raw::c_char,
    #[doc = " URL passed to backend to join room."]
    pub ClientBaseUrl: *const ::std::os::raw::c_char,
    #[doc = " If the query completed successfully, this contains an identifier that should be used to retrieve the tokens.\n This identifier is only valid for the duration of the callback.\n\n @see EOS_RTCAdmin_CopyUserTokenByIndex\n @see EOS_RTCAdmin_CopyUserTokenByUserId"]
    pub QueryId: u32,
    #[doc = " How many token received as result of the query"]
    pub TokenCount: u32,
}
impl Default for _tagEOS_RTCAdmin_QueryJoinRoomTokenCompleteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result information for a query join room token request."]
pub type EOS_RTCAdmin_QueryJoinRoomTokenCompleteCallbackInfo =
    _tagEOS_RTCAdmin_QueryJoinRoomTokenCompleteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_RTCAdmin_QueryJoinRoomToken\n @param Data An EOS_RTCAdmin_QueryJoinRoomTokenCompleteCallbackInfo containing the output information and result"]
pub type EOS_RTCAdmin_OnQueryJoinRoomTokenCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_RTCAdmin_QueryJoinRoomTokenCompleteCallbackInfo),
>;
#[doc = " Contains information about a collection of user tokens for joining a room."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTCAdmin_UserToken {
    #[doc = " API Version: Set this to EOS_RTCADMIN_USERTOKEN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID for the user who owns this user token."]
    pub ProductUserId: EOS_ProductUserId,
    #[doc = " Access token to enable a user to join a room"]
    pub Token: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_RTCAdmin_UserToken {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Contains information about a collection of user tokens for joining a room."]
pub type EOS_RTCAdmin_UserToken = _tagEOS_RTCAdmin_UserToken;
#[doc = " Input parameters for the EOS_RTCAdmin_CopyUserTokenByIndex function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_RTCAdmin_CopyUserTokenByIndexOptions {
    #[doc = " API Version: Set this to EOS_RTCADMIN_COPYUSERTOKENBYINDEX_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Index of the user token to retrieve from the cache."]
    pub UserTokenIndex: u32,
    #[doc = " Query identifier received as part of a previous query.\n @see EOS_RTCAdmin_QueryJoinRoomTokenCompleteCallbackInfo"]
    pub QueryId: u32,
}
#[doc = " Input parameters for the EOS_RTCAdmin_CopyUserTokenByIndex function."]
pub type EOS_RTCAdmin_CopyUserTokenByIndexOptions = _tagEOS_RTCAdmin_CopyUserTokenByIndexOptions;
#[doc = " Input parameters for the EOS_RTCAdmin_CopyUserTokenByUserId function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTCAdmin_CopyUserTokenByUserIdOptions {
    #[doc = " API Version: Set this to EOS_RTCADMIN_COPYUSERTOKENBYUSERID_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID for the user whose user token we're copying."]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Query identifier received as part of a previous query.\n @see EOS_RTCAdmin_QueryJoinRoomTokenCompleteCallbackInfo"]
    pub QueryId: u32,
}
impl Default for _tagEOS_RTCAdmin_CopyUserTokenByUserIdOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_RTCAdmin_CopyUserTokenByUserId function."]
pub type EOS_RTCAdmin_CopyUserTokenByUserIdOptions = _tagEOS_RTCAdmin_CopyUserTokenByUserIdOptions;
unsafe extern "C" {
    #[doc = " Release the memory associated with EOS_RTCAdmin_UserToken. This must be called on data retrieved from\n EOS_RTCAdmin_CopyUserTokenByIndex or EOS_RTCAdmin_CopyUserTokenByUserId.\n\n @param UserToken - The user token to release.\n\n @see EOS_RTCAdmin_UserToken\n @see EOS_RTCAdmin_CopyUserTokenByIndex\n @see EOS_RTCAdmin_CopyUserTokenByUserId"]
    pub fn EOS_RTCAdmin_UserToken_Release(UserToken: *mut EOS_RTCAdmin_UserToken);
}
#[doc = " Input parameters for the EOS_RTCAdmin_Kick function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTCAdmin_KickOptions {
    #[doc = " API Version: Set this to EOS_RTCADMIN_KICK_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Room name to kick the participant from"]
    pub RoomName: *const ::std::os::raw::c_char,
    #[doc = " Product User ID of the participant to kick from the room"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_RTCAdmin_KickOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_RTCAdmin_Kick function."]
pub type EOS_RTCAdmin_KickOptions = _tagEOS_RTCAdmin_KickOptions;
#[doc = " Data containing the result information for a kick participant request."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTCAdmin_KickCompleteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into the kick request"]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_RTCAdmin_KickCompleteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result information for a kick participant request."]
pub type EOS_RTCAdmin_KickCompleteCallbackInfo = _tagEOS_RTCAdmin_KickCompleteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_RTCAdmin_Kick\n @param Data An EOS_RTCAdmin_KickCompleteCallbackInfo containing the output information and result"]
pub type EOS_RTCAdmin_OnKickCompleteCallback =
    ::std::option::Option<unsafe extern "C" fn(Data: *const EOS_RTCAdmin_KickCompleteCallbackInfo)>;
#[doc = " Input parameters for the EOS_RTCAdmin_SetParticipantHardMute function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTCAdmin_SetParticipantHardMuteOptions {
    #[doc = " API Version: Set this to EOS_RTCADMIN_SETPARTICIPANTHARDMUTE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Room to kick the participant from"]
    pub RoomName: *const ::std::os::raw::c_char,
    #[doc = " Product User ID of the participant to hard mute for every participant in the room."]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Hard mute status (Mute on or off)"]
    pub bMute: EOS_Bool,
}
impl Default for _tagEOS_RTCAdmin_SetParticipantHardMuteOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_RTCAdmin_SetParticipantHardMute function."]
pub type EOS_RTCAdmin_SetParticipantHardMuteOptions =
    _tagEOS_RTCAdmin_SetParticipantHardMuteOptions;
#[doc = " Data containing the result information for a hard mute request."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_RTCAdmin_SetParticipantHardMuteCompleteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Client-specified data passed into the hard mute request"]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_RTCAdmin_SetParticipantHardMuteCompleteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Data containing the result information for a hard mute request."]
pub type EOS_RTCAdmin_SetParticipantHardMuteCompleteCallbackInfo =
    _tagEOS_RTCAdmin_SetParticipantHardMuteCompleteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_RTCAdmin_SetParticipantHardMute\n @param Data An EOS_RTCAdmin_SetParticipantHardMuteCompleteCallbackInfo containing the output information and result"]
pub type EOS_RTCAdmin_OnSetParticipantHardMuteCompleteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_RTCAdmin_SetParticipantHardMuteCompleteCallbackInfo),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_ProgressionSnapshotHandle {
    _unused: [u8; 0],
}
#[doc = " Handle to the ProgressionSnapshot interface"]
pub type EOS_HProgressionSnapshot = *mut EOS_ProgressionSnapshotHandle;
#[doc = " Input parameters for the EOS_ProgressionSnapshot_BeginSnapshot function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_ProgressionSnapshot_BeginSnapshotOptions {
    #[doc = " API Version: Set this to EOS_PROGRESSIONSNAPSHOT_BEGINSNAPSHOT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user to whom the key/value pair belong"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_ProgressionSnapshot_BeginSnapshotOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_ProgressionSnapshot_BeginSnapshot function."]
pub type EOS_ProgressionSnapshot_BeginSnapshotOptions =
    _tagEOS_ProgressionSnapshot_BeginSnapshotOptions;
#[doc = " Input parameters for the EOS_ProgressionSnapshot_AddProgression function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_ProgressionSnapshot_AddProgressionOptions {
    #[doc = " API Version: Set this to EOS_PROGRESSIONSNAPSHOT_ADDPROGRESSION_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Snapshot Id received via a EOS_ProgressionSnapshot_BeginSnapshot function."]
    pub SnapshotId: u32,
    #[doc = " The key in a key/value pair of progression entry"]
    pub Key: *const ::std::os::raw::c_char,
    #[doc = " The value in a key/value pair of progression entry"]
    pub Value: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_ProgressionSnapshot_AddProgressionOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_ProgressionSnapshot_AddProgression function."]
pub type EOS_ProgressionSnapshot_AddProgressionOptions =
    _tagEOS_ProgressionSnapshot_AddProgressionOptions;
#[doc = " Input parameters for the EOS_ProgressionSnapshot_SubmitSnapshot function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_ProgressionSnapshot_SubmitSnapshotOptions {
    #[doc = " API Version: Set this to EOS_PROGRESSIONSNAPSHOT_SUBMITSNAPSHOT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Snapshot Id received via a EOS_ProgressionSnapshot_BeginSnapshot function."]
    pub SnapshotId: u32,
}
#[doc = " Input parameters for the EOS_ProgressionSnapshot_SubmitSnapshot function."]
pub type EOS_ProgressionSnapshot_SubmitSnapshotOptions =
    _tagEOS_ProgressionSnapshot_SubmitSnapshotOptions;
#[doc = " Input parameters for the EOS_ProgressionSnapshot_EndSnapshot function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_ProgressionSnapshot_EndSnapshotOptions {
    #[doc = " API Version: Set this to EOS_PROGRESSIONSNAPSHOT_ENDSNAPSHOT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Snapshot Id received via a EOS_ProgressionSnapshot_BeginSnapshot function."]
    pub SnapshotId: u32,
}
#[doc = " Input parameters for the EOS_ProgressionSnapshot_EndSnapshot function."]
pub type EOS_ProgressionSnapshot_EndSnapshotOptions =
    _tagEOS_ProgressionSnapshot_EndSnapshotOptions;
#[doc = " Output parameters for the EOS_ProgressionSnapshot_SubmitSnapshot Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_ProgressionSnapshot_SubmitSnapshotCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " The Snapshot Id used in the Submit function."]
    pub SnapshotId: u32,
    #[doc = " Context that was passed into EOS_ProgressionSnapshot_SubmitSnapshot."]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_ProgressionSnapshot_SubmitSnapshotCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_ProgressionSnapshot_SubmitSnapshot Function."]
pub type EOS_ProgressionSnapshot_SubmitSnapshotCallbackInfo =
    _tagEOS_ProgressionSnapshot_SubmitSnapshotCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_ProgressionSnapshot_SubmitSnapshot\n @param Data A EOS_ProgressionSnapshot_SubmitSnapshotCallbackInfo containing the output information and result"]
pub type EOS_ProgressionSnapshot_OnSubmitSnapshotCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_ProgressionSnapshot_SubmitSnapshotCallbackInfo),
>;
#[doc = " Input parameters for the EOS_ProgressionSnapshot_DeleteSnapshot function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_ProgressionSnapshot_DeleteSnapshotOptions {
    #[doc = " API Version: Set this to EOS_PROGRESSIONSNAPSHOT_DELETESNAPSHOT_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " The Product User ID of the local user to whom the key/value pair belong"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_ProgressionSnapshot_DeleteSnapshotOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_ProgressionSnapshot_DeleteSnapshot function."]
pub type EOS_ProgressionSnapshot_DeleteSnapshotOptions =
    _tagEOS_ProgressionSnapshot_DeleteSnapshotOptions;
#[doc = " Output parameters for the EOS_ProgressionSnapshot_DeleteSnapshot Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_ProgressionSnapshot_DeleteSnapshotCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " The Product User ID of the local user to whom the key/value pair belong"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Context that was passed into EOS_ProgressionSnapshot_SubmitSnapshot."]
    pub ClientData: *mut ::std::os::raw::c_void,
}
impl Default for _tagEOS_ProgressionSnapshot_DeleteSnapshotCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_ProgressionSnapshot_DeleteSnapshot Function."]
pub type EOS_ProgressionSnapshot_DeleteSnapshotCallbackInfo =
    _tagEOS_ProgressionSnapshot_DeleteSnapshotCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_ProgressionSnapshot_DeleteSnapshot\n @param Data A EOS_ProgressionSnapshot_DeleteSnapshotCallbackInfo containing the output information and result"]
pub type EOS_ProgressionSnapshot_OnDeleteSnapshotCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_ProgressionSnapshot_DeleteSnapshotCallbackInfo),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EOS_CustomInvitesHandle {
    _unused: [u8; 0],
}
#[doc = " Handle to the custom invites interface"]
pub type EOS_HCustomInvites = *mut EOS_CustomInvitesHandle;
#[doc = " Input parameters for the EOS_CustomInvites_SetCustomInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_SetCustomInviteOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_SETCUSTOMINVITE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Local user creating / sending a Custom Invite"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " String payload for the Custom Invite (must be less than EOS_CUSTOMINVITES_MAX_PAYLOAD_LENGTH)"]
    pub Payload: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_CustomInvites_SetCustomInviteOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_CustomInvites_SetCustomInvite function."]
pub type EOS_CustomInvites_SetCustomInviteOptions = _tagEOS_CustomInvites_SetCustomInviteOptions;
#[doc = " Input parameters for the EOS_CustomInvites_SendCustomInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_SendCustomInviteOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_SENDCUSTOMINVITE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Local user sending a CustomInvite"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Users to whom the invites should be sent"]
    pub TargetUserIds: *mut EOS_ProductUserId,
    #[doc = " The number of users we are sending to"]
    pub TargetUserIdsCount: u32,
}
impl Default for _tagEOS_CustomInvites_SendCustomInviteOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_CustomInvites_SendCustomInvite function."]
pub type EOS_CustomInvites_SendCustomInviteOptions = _tagEOS_CustomInvites_SendCustomInviteOptions;
#[doc = " Output parameters for the EOS_CustomInvites_SendCustomInvite Function. These parameters are received through the callback provided to EOS_CustomInvites_SendCustomInvite"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_SendCustomInviteCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_CustomInvites_SendCustomInvite"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Local user sending a CustomInvite"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Users to whom the invites were successfully sent (can be different than original call if an invite for same Payload was previously sent)"]
    pub TargetUserIds: *mut EOS_ProductUserId,
    #[doc = " The number of users we are sending to"]
    pub TargetUserIdsCount: u32,
}
impl Default for _tagEOS_CustomInvites_SendCustomInviteCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_CustomInvites_SendCustomInvite Function. These parameters are received through the callback provided to EOS_CustomInvites_SendCustomInvite"]
pub type EOS_CustomInvites_SendCustomInviteCallbackInfo =
    _tagEOS_CustomInvites_SendCustomInviteCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_CustomInvites_SendCustomInvite\n @param Data A EOS_CustomInvites_SendCustomInviteCallbackInfo containing the output information and result"]
pub type EOS_CustomInvites_OnSendCustomInviteCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_CustomInvites_SendCustomInviteCallbackInfo),
>;
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifyCustomInviteReceived function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_CustomInvites_AddNotifyCustomInviteReceivedOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_ADDNOTIFYCUSTOMINVITERECEIVED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifyCustomInviteReceived function."]
pub type EOS_CustomInvites_AddNotifyCustomInviteReceivedOptions =
    _tagEOS_CustomInvites_AddNotifyCustomInviteReceivedOptions;
#[doc = " Output parameters for the EOS_CustomInvites_OnCustomInviteReceivedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_OnCustomInviteReceivedCallbackInfo {
    #[doc = " Context that was passed into EOS_CustomInvites_AddNotifyCustomInviteReceived"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " User that sent this custom invite"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Recipient Local user id"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Id of the received Custom Invite"]
    pub CustomInviteId: *const ::std::os::raw::c_char,
    #[doc = " Payload of the received Custom Invite"]
    pub Payload: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_CustomInvites_OnCustomInviteReceivedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_CustomInvites_OnCustomInviteReceivedCallback Function."]
pub type EOS_CustomInvites_OnCustomInviteReceivedCallbackInfo =
    _tagEOS_CustomInvites_OnCustomInviteReceivedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_CustomInvites_AddNotifyCustomInviteReceived\n\n @param Data A EOS_CustomInvites_OnCustomInviteReceivedCallbackInfo containing the output information and result"]
pub type EOS_CustomInvites_OnCustomInviteReceivedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_CustomInvites_OnCustomInviteReceivedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifyCustomInviteAccepted function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_CustomInvites_AddNotifyCustomInviteAcceptedOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_ADDNOTIFYCUSTOMINVITEACCEPTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifyCustomInviteAccepted function."]
pub type EOS_CustomInvites_AddNotifyCustomInviteAcceptedOptions =
    _tagEOS_CustomInvites_AddNotifyCustomInviteAcceptedOptions;
#[doc = " Output parameters for the EOS_CustomInvites_OnCustomInviteAcceptedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_OnCustomInviteAcceptedCallbackInfo {
    #[doc = " Context that was passed into EOS_CustomInvites_AddNotifyCustomInviteAccepted"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " User that sent the custom invite"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Recipient Local user id"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Id of the accepted Custom Invite"]
    pub CustomInviteId: *const ::std::os::raw::c_char,
    #[doc = " Payload of the accepted Custom Invite"]
    pub Payload: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_CustomInvites_OnCustomInviteAcceptedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_CustomInvites_OnCustomInviteAcceptedCallback Function."]
pub type EOS_CustomInvites_OnCustomInviteAcceptedCallbackInfo =
    _tagEOS_CustomInvites_OnCustomInviteAcceptedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_CustomInvites_AddNotifyCustomInviteAccepted\n\n @param Data A EOS_CustomInvites_OnCustomInviteAcceptedCallbackInfo containing the output information and result"]
pub type EOS_CustomInvites_OnCustomInviteAcceptedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_CustomInvites_OnCustomInviteAcceptedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifyCustomInviteRejected function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_CustomInvites_AddNotifyCustomInviteRejectedOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_ADDNOTIFYCUSTOMINVITEREJECTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifyCustomInviteRejected function."]
pub type EOS_CustomInvites_AddNotifyCustomInviteRejectedOptions =
    _tagEOS_CustomInvites_AddNotifyCustomInviteRejectedOptions;
#[doc = " Output parameters for the EOS_CustomInvites_OnCustomInviteRejectedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_CustomInviteRejectedCallbackInfo {
    #[doc = " Context that was passed into EOS_CustomInvites_AddNotifyCustomInviteRejected"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " User that sent the custom invite"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Recipient Local user id"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Id of the rejected Custom Invite"]
    pub CustomInviteId: *const ::std::os::raw::c_char,
    #[doc = " Payload of the rejected Custom Invite"]
    pub Payload: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_CustomInvites_CustomInviteRejectedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_CustomInvites_OnCustomInviteRejectedCallback Function."]
pub type EOS_CustomInvites_CustomInviteRejectedCallbackInfo =
    _tagEOS_CustomInvites_CustomInviteRejectedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_CustomInvites_AddNotifyCustomInviteRejected\n\n @param Data A EOS_CustomInvites_CustomInviteRejectedCallbackInfo containing the output information and result"]
pub type EOS_CustomInvites_OnCustomInviteRejectedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_CustomInvites_CustomInviteRejectedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_CustomInvites_FinalizeInvite function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_FinalizeInviteOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_FINALIZEINVITE_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " User that sent the custom invite"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Recipient Local user id"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Id of the Custom Invite accepted"]
    pub CustomInviteId: *const ::std::os::raw::c_char,
    #[doc = " Result of the Processing operation, transmitted to Social Overlay if applicable"]
    pub ProcessingResult: EOS_EResult,
}
impl Default for _tagEOS_CustomInvites_FinalizeInviteOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_CustomInvites_FinalizeInvite function."]
pub type EOS_CustomInvites_FinalizeInviteOptions = _tagEOS_CustomInvites_FinalizeInviteOptions;
#[doc = " Input parameters for the EOS_CustomInvites_SendRequestToJoin function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_SendRequestToJoinOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_SENDREQUESTTOJOIN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Local user Requesting an Invite"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Recipient of Request Invite"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_CustomInvites_SendRequestToJoinOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_CustomInvites_SendRequestToJoin function."]
pub type EOS_CustomInvites_SendRequestToJoinOptions =
    _tagEOS_CustomInvites_SendRequestToJoinOptions;
#[doc = " Output parameters for the EOS_CustomInvites_SendRequestToJoin Function. These parameters are received through the callback provided to EOS_CustomInvites_SendRequestToJoin"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_SendRequestToJoinCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_CustomInvites_SendRequestToJoin"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Local user requesting an invite"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Recipient of Request Invite"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_CustomInvites_SendRequestToJoinCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_CustomInvites_SendRequestToJoin Function. These parameters are received through the callback provided to EOS_CustomInvites_SendRequestToJoin"]
pub type EOS_CustomInvites_SendRequestToJoinCallbackInfo =
    _tagEOS_CustomInvites_SendRequestToJoinCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_CustomInvites_SendRequestToJoin\n @param Data A EOS_CustomInvites_SendCustomInviteCallbackInfo containing the output information and result"]
pub type EOS_CustomInvites_OnSendRequestToJoinCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_CustomInvites_SendRequestToJoinCallbackInfo),
>;
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifyRequestToJoinResponseReceived function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_CustomInvites_AddNotifyRequestToJoinResponseReceivedOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_ADDNOTIFYREQUESTTOJOINRESPONSERECEIVED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifyRequestToJoinResponseReceived function."]
pub type EOS_CustomInvites_AddNotifyRequestToJoinResponseReceivedOptions =
    _tagEOS_CustomInvites_AddNotifyRequestToJoinResponseReceivedOptions;
#[doc = " The target of the invite request has accepted."]
pub const EOS_ERequestToJoinResponse_EOS_RTJR_ACCEPTED: EOS_ERequestToJoinResponse = 0;
#[doc = " The target of the invite request has rejected."]
pub const EOS_ERequestToJoinResponse_EOS_RTJR_REJECTED: EOS_ERequestToJoinResponse = 1;
pub const EOS_ERequestToJoinResponse___EOS_ERequestToJoinResponse_PAD_INT32__:
    EOS_ERequestToJoinResponse = 2147483647;
#[doc = " Response to an invite request."]
pub type EOS_ERequestToJoinResponse = ::std::os::raw::c_int;
#[doc = " Output parameters for the EOS_CustomInvites_OnRequestToJoinResponseReceivedCallback function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_RequestToJoinResponseReceivedCallbackInfo {
    #[doc = " Context that was passed into EOS_CustomInvites_AddNotifyRequestToJoinResponseReceived"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " User that sent this response"]
    pub FromUserId: EOS_ProductUserId,
    #[doc = " Recipient Local user id"]
    pub ToUserId: EOS_ProductUserId,
    #[doc = " The Intent associated with this response"]
    pub Response: EOS_ERequestToJoinResponse,
}
impl Default for _tagEOS_CustomInvites_RequestToJoinResponseReceivedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_CustomInvites_OnRequestToJoinResponseReceivedCallback function."]
pub type EOS_CustomInvites_RequestToJoinResponseReceivedCallbackInfo =
    _tagEOS_CustomInvites_RequestToJoinResponseReceivedCallbackInfo;
#[doc = " Function prototype definition for notifications that come from EOS_CustomInvites_AddNotifyRequestToJoinResponseReceived\n\n @param Data A EOS_CustomInvites_RequestToJoinResponseReceivedCallbackInfo containing the output information and result"]
pub type EOS_CustomInvites_OnRequestToJoinResponseReceivedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_CustomInvites_RequestToJoinResponseReceivedCallbackInfo),
>;
#[doc = " Input parameters for the AddNotifyRequestToJoinReceived function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_CustomInvites_AddNotifyRequestToJoinReceivedOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_ADDNOTIFYREQUESTTOJOINRECEIVED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the AddNotifyRequestToJoinReceived function."]
pub type EOS_CustomInvites_AddNotifyRequestToJoinReceivedOptions =
    _tagEOS_CustomInvites_AddNotifyRequestToJoinReceivedOptions;
#[doc = " Output parameters for the EOS_CustomInvites_AddNotifyRequestToJoinReceived function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_RequestToJoinReceivedCallbackInfo {
    #[doc = " Context that was passed into EOS_CustomInvites_AddNotifyRequestToJoinReceived"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " User that sent this response"]
    pub FromUserId: EOS_ProductUserId,
    #[doc = " Recipient Local user id"]
    pub ToUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_CustomInvites_RequestToJoinReceivedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_CustomInvites_AddNotifyRequestToJoinReceived function."]
pub type EOS_CustomInvites_RequestToJoinReceivedCallbackInfo =
    _tagEOS_CustomInvites_RequestToJoinReceivedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_CustomInvites_AddNotifyRequestToJoinReceived\n\n @param Data A EOS_CustomInvites_RequestToJoinReceivedCallbackInfo containing the output information and result"]
pub type EOS_CustomInvites_OnRequestToJoinReceivedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_CustomInvites_RequestToJoinReceivedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_CustomInvites_AcceptRequestToJoin function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_AcceptRequestToJoinOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_ACCEPTREQUESTTOJOIN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Local user accepting a request to join"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Target user that sent original request to join"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_CustomInvites_AcceptRequestToJoinOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_CustomInvites_AcceptRequestToJoin function."]
pub type EOS_CustomInvites_AcceptRequestToJoinOptions =
    _tagEOS_CustomInvites_AcceptRequestToJoinOptions;
#[doc = " Output parameters for the EOS_CustomInvites_AcceptRequestToJoin Function. These parameters are received through the callback provided to EOS_CustomInvites_AcceptRequestToJoin"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_AcceptRequestToJoinCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_CustomInvites_AcceptRequestToJoin"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Local user accepting an invite request"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Target user that sent original invite request"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_CustomInvites_AcceptRequestToJoinCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_CustomInvites_AcceptRequestToJoin Function. These parameters are received through the callback provided to EOS_CustomInvites_AcceptRequestToJoin"]
pub type EOS_CustomInvites_AcceptRequestToJoinCallbackInfo =
    _tagEOS_CustomInvites_AcceptRequestToJoinCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_CustomInvites_AcceptRequestToJoin\n @param Data A EOS_CustomInvites_AcceptRequestToJoinCallbackInfo containing the output information and result"]
pub type EOS_CustomInvites_OnAcceptRequestToJoinCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_CustomInvites_AcceptRequestToJoinCallbackInfo),
>;
#[doc = " Input parameters for the EOS_CustomInvites_RejectRequestToJoin function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_RejectRequestToJoinOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_REJECTREQUESTTOJOIN_API_LATEST."]
    pub ApiVersion: i32,
    #[doc = " Local user declining an invite request"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Target user that sent original invite request"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_CustomInvites_RejectRequestToJoinOptions {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Input parameters for the EOS_CustomInvites_RejectRequestToJoin function."]
pub type EOS_CustomInvites_RejectRequestToJoinOptions =
    _tagEOS_CustomInvites_RejectRequestToJoinOptions;
#[doc = " Output parameters for the EOS_CustomInvites_RejectRequestToJoin Function. These parameters are received through the callback provided to EOS_CustomInvites_RejectRequestToJoin"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_RejectRequestToJoinCallbackInfo {
    #[doc = " The EOS_EResult code for the operation. EOS_Success indicates that the operation succeeded; other codes indicate errors."]
    pub ResultCode: EOS_EResult,
    #[doc = " Context that was passed into EOS_CustomInvites_RejectRequestToJoin"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Local user declining a request to join"]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " Target user that sent original request to join"]
    pub TargetUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_CustomInvites_RejectRequestToJoinCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_CustomInvites_RejectRequestToJoin Function. These parameters are received through the callback provided to EOS_CustomInvites_RejectRequestToJoin"]
pub type EOS_CustomInvites_RejectRequestToJoinCallbackInfo =
    _tagEOS_CustomInvites_RejectRequestToJoinCallbackInfo;
#[doc = " Function prototype definition for callbacks passed to EOS_CustomInvites_RejectRequestToJoin\n @param Data A EOS_CustomInvites_OnRejectRequestToJoinCallback containing the output information and result"]
pub type EOS_CustomInvites_OnRejectRequestToJoinCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_CustomInvites_RejectRequestToJoinCallbackInfo),
>;
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifySendCustomNativeInviteRequested function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_CustomInvites_AddNotifySendCustomNativeInviteRequestedOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_ADDNOTIFYSENDCUSTOMNATIVEINVITEREQUESTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifySendCustomNativeInviteRequested function."]
pub type EOS_CustomInvites_AddNotifySendCustomNativeInviteRequestedOptions =
    _tagEOS_CustomInvites_AddNotifySendCustomNativeInviteRequestedOptions;
#[doc = " Output parameters for the EOS_CustomInvites_OnSendCustomNativeInviteRequestedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_SendCustomNativeInviteRequestedCallbackInfo {
    #[doc = " Context that was passed into EOS_CustomInvites_AddNotifySendCustomNativeInviteRequested"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " Identifies this event which will need to be acknowledged with EOS_UI_AcknowledgeEventId().\n @see EOS_UI_AcknowledgeEventId"]
    pub UiEventId: EOS_UI_EventId,
    #[doc = " The Product User ID of the local user who is inviting."]
    pub LocalUserId: EOS_ProductUserId,
    #[doc = " The Native Platform Account Type. If only a single integrated platform is configured then\n this will always reference that platform."]
    pub TargetNativeAccountType: EOS_IntegratedPlatformType,
    #[doc = " The Native Platform Account ID of the target user being invited."]
    pub TargetUserNativeAccountId: *const ::std::os::raw::c_char,
    #[doc = " Invite ID that the user is being invited to"]
    pub InviteId: *const ::std::os::raw::c_char,
}
impl Default for _tagEOS_CustomInvites_SendCustomNativeInviteRequestedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_CustomInvites_OnSendCustomNativeInviteRequestedCallback Function."]
pub type EOS_CustomInvites_SendCustomNativeInviteRequestedCallbackInfo =
    _tagEOS_CustomInvites_SendCustomNativeInviteRequestedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_CustomInvites_AddNotifySendCustomNativeInviteRequested\n\n @param Data A EOS_CustomInvites_SendCustomNativeInviteRequestedCallbackInfo containing the output information and result\n\n @note After processing the callback EOS_UI_AcknowledgeEventId must be called.\n\n @see EOS_UI_AcknowledgeEventId"]
pub type EOS_CustomInvites_OnSendCustomNativeInviteRequestedCallback = ::std::option::Option<
    unsafe extern "C" fn(
        Data: *const EOS_CustomInvites_SendCustomNativeInviteRequestedCallbackInfo,
    ),
>;
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifyRequestToJoinAccepted function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_CustomInvites_AddNotifyRequestToJoinAcceptedOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_ADDNOTIFYREQUESTTOJOINACCEPTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifyRequestToJoinAccepted function."]
pub type EOS_CustomInvites_AddNotifyRequestToJoinAcceptedOptions =
    _tagEOS_CustomInvites_AddNotifyRequestToJoinAcceptedOptions;
#[doc = " Output parameters for the EOS_CustomInvites_OnRequestToJoinAcceptedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_OnRequestToJoinAcceptedCallbackInfo {
    #[doc = " Context that was passed into EOS_CustomInvites_AddNotifyRequestToJoinAccepted"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " User that sent the request to join"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Local user ID of the Request to Join recipient"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_CustomInvites_OnRequestToJoinAcceptedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_CustomInvites_OnRequestToJoinAcceptedCallback Function."]
pub type EOS_CustomInvites_OnRequestToJoinAcceptedCallbackInfo =
    _tagEOS_CustomInvites_OnRequestToJoinAcceptedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_CustomInvites_AddNotifyRequestToJoinAccepted\n\n @param Data A EOS_CustomInvites_OnRequestToJoinAcceptedCallbackInfo containing the output information and result"]
pub type EOS_CustomInvites_OnRequestToJoinAcceptedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_CustomInvites_OnRequestToJoinAcceptedCallbackInfo),
>;
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifyRequestToJoinRejected function."]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct _tagEOS_CustomInvites_AddNotifyRequestToJoinRejectedOptions {
    #[doc = " API Version: Set this to EOS_CUSTOMINVITES_ADDNOTIFYREQUESTTOJOINREJECTED_API_LATEST."]
    pub ApiVersion: i32,
}
#[doc = " Input parameters for the EOS_CustomInvites_AddNotifyRequestToJoinRejected function."]
pub type EOS_CustomInvites_AddNotifyRequestToJoinRejectedOptions =
    _tagEOS_CustomInvites_AddNotifyRequestToJoinRejectedOptions;
#[doc = " Output parameters for the EOS_CustomInvites_OnRequestToJoinRejectedCallback Function."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _tagEOS_CustomInvites_OnRequestToJoinRejectedCallbackInfo {
    #[doc = " Context that was passed into EOS_CustomInvites_AddNotifyCustomInviteRejected"]
    pub ClientData: *mut ::std::os::raw::c_void,
    #[doc = " User that sent the custom invite"]
    pub TargetUserId: EOS_ProductUserId,
    #[doc = " Recipient Local user id"]
    pub LocalUserId: EOS_ProductUserId,
}
impl Default for _tagEOS_CustomInvites_OnRequestToJoinRejectedCallbackInfo {
    fn default() -> Self {
        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
#[doc = " Output parameters for the EOS_CustomInvites_OnRequestToJoinRejectedCallback Function."]
pub type EOS_CustomInvites_OnRequestToJoinRejectedCallbackInfo =
    _tagEOS_CustomInvites_OnRequestToJoinRejectedCallbackInfo;
#[doc = " Function prototype definition for notifications that comes from EOS_CustomInvites_AddNotifyRequestToJoinRejected\n\n @param Data A EOS_CustomInvites_OnRequestToJoinRejectedCallbackInfo containing the output information and result"]
pub type EOS_CustomInvites_OnRequestToJoinRejectedCallback = ::std::option::Option<
    unsafe extern "C" fn(Data: *const EOS_CustomInvites_OnRequestToJoinRejectedCallbackInfo),
>;
unsafe extern "C" {
    #[doc = " Notify the platform instance to do work. This function must be called frequently in order for the services provided by the SDK to properly\n function. For tick-based applications, it is usually desirable to call this once per-tick."]
    pub fn EOS_Platform_Tick(Handle: EOS_HPlatform);
}
unsafe extern "C" {
    #[doc = " Get a handle to the Metrics Interface.\n @return EOS_HMetrics handle\n\n @see eos_metrics.h\n @see eos_metrics_types.h"]
    pub fn EOS_Platform_GetMetricsInterface(Handle: EOS_HPlatform) -> EOS_HMetrics;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Auth Interface.\n @return EOS_HAuth handle\n\n @see eos_auth.h\n @see eos_auth_types.h"]
    pub fn EOS_Platform_GetAuthInterface(Handle: EOS_HPlatform) -> EOS_HAuth;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Connect Interface.\n @return EOS_HConnect handle\n\n @see eos_connect.h\n @see eos_connect_types.h"]
    pub fn EOS_Platform_GetConnectInterface(Handle: EOS_HPlatform) -> EOS_HConnect;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Ecom Interface.\n @return EOS_HEcom handle\n\n @see eos_ecom.h\n @see eos_ecom_types.h"]
    pub fn EOS_Platform_GetEcomInterface(Handle: EOS_HPlatform) -> EOS_HEcom;
}
unsafe extern "C" {
    #[doc = " Get a handle to the UI Interface.\n @return EOS_HUI handle\n\n @see eos_ui.h\n @see eos_ui_types.h"]
    pub fn EOS_Platform_GetUIInterface(Handle: EOS_HPlatform) -> EOS_HUI;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Friends Interface.\n @return EOS_HFriends handle\n\n @see eos_friends.h\n @see eos_friends_types.h"]
    pub fn EOS_Platform_GetFriendsInterface(Handle: EOS_HPlatform) -> EOS_HFriends;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Presence Interface.\n @return EOS_HPresence handle\n\n @see eos_presence.h\n @see eos_presence_types.h"]
    pub fn EOS_Platform_GetPresenceInterface(Handle: EOS_HPlatform) -> EOS_HPresence;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Sessions Interface.\n @return EOS_HSessions handle\n\n @see eos_sessions.h\n @see eos_sessions_types.h"]
    pub fn EOS_Platform_GetSessionsInterface(Handle: EOS_HPlatform) -> EOS_HSessions;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Lobby Interface.\n @return EOS_HLobby handle\n\n @see eos_lobby.h\n @see eos_lobby_types.h"]
    pub fn EOS_Platform_GetLobbyInterface(Handle: EOS_HPlatform) -> EOS_HLobby;
}
unsafe extern "C" {
    #[doc = " Get a handle to the UserInfo Interface.\n @return EOS_HUserInfo handle\n\n @see eos_userinfo.h\n @see eos_userinfo_types.h"]
    pub fn EOS_Platform_GetUserInfoInterface(Handle: EOS_HPlatform) -> EOS_HUserInfo;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Peer-to-Peer Networking Interface.\n @return EOS_HP2P handle\n\n @see eos_p2p.h\n @see eos_p2p_types.h"]
    pub fn EOS_Platform_GetP2PInterface(Handle: EOS_HPlatform) -> EOS_HP2P;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Real Time Communications Interface (RTC).\n From the RTC interface you can retrieve the handle to the audio interface (RTCAudio), which is a component of RTC.\n @return EOS_HRTC handle\n\n @see EOS_RTC_GetAudioInterface\n @see eos_rtc.h\n @see eos_rtc_types.h"]
    pub fn EOS_Platform_GetRTCInterface(Handle: EOS_HPlatform) -> EOS_HRTC;
}
unsafe extern "C" {
    #[doc = " Get a handle to the RTC Admin interface\n @return EOS_HRTCAdmin handle\n\n @see eos_rtc_admin.h\n @see eos_rtc_admin_types.h"]
    pub fn EOS_Platform_GetRTCAdminInterface(Handle: EOS_HPlatform) -> EOS_HRTCAdmin;
}
unsafe extern "C" {
    #[doc = " Get a handle to the PlayerDataStorage Interface.\n @return EOS_HPlayerDataStorage handle\n\n @see eos_playerdatastorage.h\n @see eos_playerdatastorage_types.h"]
    pub fn EOS_Platform_GetPlayerDataStorageInterface(
        Handle: EOS_HPlatform,
    ) -> EOS_HPlayerDataStorage;
}
unsafe extern "C" {
    #[doc = " Get a handle to the TitleStorage Interface.\n @return EOS_HTitleStorage handle\n\n @see eos_titlestorage.h\n @see eos_titlestorage_types.h"]
    pub fn EOS_Platform_GetTitleStorageInterface(Handle: EOS_HPlatform) -> EOS_HTitleStorage;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Achievements Interface.\n @return EOS_HAchievements handle\n\n @see eos_achievements.h\n @see eos_achievements_types.h"]
    pub fn EOS_Platform_GetAchievementsInterface(Handle: EOS_HPlatform) -> EOS_HAchievements;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Stats Interface.\n @return EOS_HStats handle\n\n @see eos_stats.h\n @see eos_stats_types.h"]
    pub fn EOS_Platform_GetStatsInterface(Handle: EOS_HPlatform) -> EOS_HStats;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Leaderboards Interface.\n @return EOS_HLeaderboards handle\n\n @see eos_leaderboards.h\n @see eos_leaderboards_types.h"]
    pub fn EOS_Platform_GetLeaderboardsInterface(Handle: EOS_HPlatform) -> EOS_HLeaderboards;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Mods Interface.\n @return EOS_HMods handle\n\n @see eos_mods.h\n @see eos_mods_types.h"]
    pub fn EOS_Platform_GetModsInterface(Handle: EOS_HPlatform) -> EOS_HMods;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Anti-Cheat Client Interface.\n @return EOS_HAntiCheatClient handle\n\n @see eos_anticheatclient.h\n @see eos_anticheatclient_types.h"]
    pub fn EOS_Platform_GetAntiCheatClientInterface(Handle: EOS_HPlatform) -> EOS_HAntiCheatClient;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Anti-Cheat Server Interface.\n @return EOS_HAntiCheatServer handle\n\n @see eos_anticheatserver.h\n @see eos_anticheatserver_types.h"]
    pub fn EOS_Platform_GetAntiCheatServerInterface(Handle: EOS_HPlatform) -> EOS_HAntiCheatServer;
}
unsafe extern "C" {
    #[doc = " Get a handle to the ProgressionSnapshot Interface.\n @return EOS_HProgressionSnapshot handle\n\n @see eos_progressionsnapshot.h\n @see eos_progressionsnapshot_types.h"]
    pub fn EOS_Platform_GetProgressionSnapshotInterface(
        Handle: EOS_HPlatform,
    ) -> EOS_HProgressionSnapshot;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Reports Interface.\n @return EOS_HReports handle\n\n @see eos_reports.h\n @see eos_reports_types.h"]
    pub fn EOS_Platform_GetReportsInterface(Handle: EOS_HPlatform) -> EOS_HReports;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Sanctions Interface.\n @return EOS_HSanctions handle\n\n @see eos_sanctions.h\n @see eos_sanctions_types.h"]
    pub fn EOS_Platform_GetSanctionsInterface(Handle: EOS_HPlatform) -> EOS_HSanctions;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Kids Web Service Interface.\n @return EOS_HKWS handle\n\n @see eos_kws.h\n @see eos_kws_types.h"]
    pub fn EOS_Platform_GetKWSInterface(Handle: EOS_HPlatform) -> EOS_HKWS;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Custom Invites Interface.\n @return EOS_HCustomInvites handle\n\n @see eos_custominvites.h\n @see eos_custominvites_types.h"]
    pub fn EOS_Platform_GetCustomInvitesInterface(Handle: EOS_HPlatform) -> EOS_HCustomInvites;
}
unsafe extern "C" {
    #[doc = " Get a handle to the Integrated Platform Interface.\n @return EOS_HIntegratedPlatform handle\n\n @see eos_integratedplatform.h\n @see eos_integratedplatform_types.h"]
    pub fn EOS_Platform_GetIntegratedPlatformInterface(
        Handle: EOS_HPlatform,
    ) -> EOS_HIntegratedPlatform;
}
unsafe extern "C" {
    #[doc = " This only will return the value set as the override otherwise EOS_NotFound is returned.\n This is not currently used for anything internally.\n\n @param LocalUserId The account to use for lookup if no override exists.\n @param OutBuffer The buffer into which the character data should be written.  The buffer must be long enough to hold a string of EOS_COUNTRYCODE_MAX_LENGTH.\n @param InOutBufferLength The size of the OutBuffer in characters.\n                          The input buffer should include enough space to be null-terminated.\n                          When the function returns, this parameter will be filled with the length of the string copied into OutBuffer.\n\n @return An EOS_EResult that indicates whether the active country code string was copied into the OutBuffer.\n - EOS_Success if the information is available and passed out in OutBuffer\n - EOS_InvalidParameters if you pass a null pointer for the out parameter\n - EOS_NotFound if there is not an override country code for the user.\n - EOS_LimitExceeded - The OutBuffer is not large enough to receive the country code string. InOutBufferLength contains the required minimum length to perform the operation successfully.\n\n @see eos_ecom.h\n @see EOS_COUNTRYCODE_MAX_LENGTH"]
    pub fn EOS_Platform_GetActiveCountryCode(
        Handle: EOS_HPlatform,
        LocalUserId: EOS_EpicAccountId,
        OutBuffer: *mut ::std::os::raw::c_char,
        InOutBufferLength: *mut i32,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Get the active locale code that the SDK will send to services which require it.\n This returns the override value otherwise it will use the locale code of the given user.\n This is used for localization. This follows ISO 639.\n\n @param LocalUserId The account to use for lookup if no override exists.\n @param OutBuffer The buffer into which the character data should be written.  The buffer must be long enough to hold a string of EOS_LOCALECODE_MAX_LENGTH.\n @param InOutBufferLength The size of the OutBuffer in characters.\n                          The input buffer should include enough space to be null-terminated.\n                          When the function returns, this parameter will be filled with the length of the string copied into OutBuffer.\n\n @return An EOS_EResult that indicates whether the active locale code string was copied into the OutBuffer.\n - EOS_Success if the information is available and passed out in OutBuffer\n - EOS_InvalidParameters if you pass a null pointer for the out parameter\n - EOS_NotFound if there is neither an override nor an available locale code for the user.\n - EOS_LimitExceeded - The OutBuffer is not large enough to receive the locale code string. InOutBufferLength contains the required minimum length to perform the operation successfully.\n\n @see eos_ecom.h\n @see EOS_LOCALECODE_MAX_LENGTH"]
    pub fn EOS_Platform_GetActiveLocaleCode(
        Handle: EOS_HPlatform,
        LocalUserId: EOS_EpicAccountId,
        OutBuffer: *mut ::std::os::raw::c_char,
        InOutBufferLength: *mut i32,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Get the override country code that the SDK will send to services which require it.\n This is not currently used for anything internally.\n\n @param OutBuffer The buffer into which the character data should be written.  The buffer must be long enough to hold a string of EOS_COUNTRYCODE_MAX_LENGTH.\n @param InOutBufferLength The size of the OutBuffer in characters.\n                          The input buffer should include enough space to be null-terminated.\n                          When the function returns, this parameter will be filled with the length of the string copied into OutBuffer.\n\n @return An EOS_EResult that indicates whether the override country code string was copied into the OutBuffer.\n - EOS_Success if the information is available and passed out in OutBuffer\n - EOS_InvalidParameters if you pass a null pointer for the out parameter\n - EOS_LimitExceeded - The OutBuffer is not large enough to receive the country code string. InOutBufferLength contains the required minimum length to perform the operation successfully.\n\n @see eos_ecom.h\n @see EOS_COUNTRYCODE_MAX_LENGTH"]
    pub fn EOS_Platform_GetOverrideCountryCode(
        Handle: EOS_HPlatform,
        OutBuffer: *mut ::std::os::raw::c_char,
        InOutBufferLength: *mut i32,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Get the override locale code that the SDK will send to services which require it.\n This is used for localization. This follows ISO 639.\n\n @param OutBuffer The buffer into which the character data should be written.  The buffer must be long enough to hold a string of EOS_LOCALECODE_MAX_LENGTH.\n @param InOutBufferLength The size of the OutBuffer in characters.\n                          The input buffer should include enough space to be null-terminated.\n                          When the function returns, this parameter will be filled with the length of the string copied into OutBuffer.\n\n @return An EOS_EResult that indicates whether the override locale code string was copied into the OutBuffer.\n - EOS_Success if the information is available and passed out in OutBuffer\n - EOS_InvalidParameters if you pass a null pointer for the out parameter\n - EOS_LimitExceeded - The OutBuffer is not large enough to receive the locale code string. InOutBufferLength contains the required minimum length to perform the operation successfully.\n\n @see eos_ecom.h\n @see EOS_LOCALECODE_MAX_LENGTH"]
    pub fn EOS_Platform_GetOverrideLocaleCode(
        Handle: EOS_HPlatform,
        OutBuffer: *mut ::std::os::raw::c_char,
        InOutBufferLength: *mut i32,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Set the override country code that the SDK will send to services which require it.\n This is not currently used for anything internally.\n\n @return An EOS_EResult that indicates whether the override country code string was saved.\n - EOS_Success if the country code was overridden\n - EOS_InvalidParameters if you pass an invalid country code\n\n @see eos_ecom.h\n @see EOS_COUNTRYCODE_MAX_LENGTH"]
    pub fn EOS_Platform_SetOverrideCountryCode(
        Handle: EOS_HPlatform,
        NewCountryCode: *const ::std::os::raw::c_char,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Set the override locale code that the SDK will send to services which require it.\n This is used for localization. This follows ISO 639.\n\n @return An EOS_EResult that indicates whether the override locale code string was saved.\n - EOS_Success if the locale code was overridden\n - EOS_InvalidParameters if you pass an invalid locale code\n\n @see eos_ecom.h\n @see EOS_LOCALECODE_MAX_LENGTH"]
    pub fn EOS_Platform_SetOverrideLocaleCode(
        Handle: EOS_HPlatform,
        NewLocaleCode: *const ::std::os::raw::c_char,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Checks if the app was launched through the Epic Games Launcher, and relaunches it through the Epic Games Launcher if it wasn't.\n\n NOTE: During the call to EOS_Platform_Create, the command line that was used to launch the app is inspected, and if it is\n recognized as coming from the Epic Games Launcher, an environment variable is set to 1. The name of the environment variable\n is defined by EOS_PLATFORM_CHECKFORLAUNCHERANDRESTART_ENV_VAR.\n\n You can force the EOS_Platform_CheckForLauncherAndRestart API to relaunch the title by\n explicitly unsetting this environment variable before calling EOS_Platform_CheckForLauncherAndRestart.\n\n @return An EOS_EResult is returned to indicate success or an error.\n\n EOS_Success is returned if the app is being restarted. You should quit your process as soon as possible.\n EOS_NoChange is returned if the app was already launched through the Epic Launcher, and no action needs to be taken.\n EOS_UnexpectedError is returned if the LauncherCheck module failed to initialize, or the module tried and failed to restart the app."]
    pub fn EOS_Platform_CheckForLauncherAndRestart(Handle: EOS_HPlatform) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Windows only.\n Checks that the application is ready to use desktop crossplay functionality, with the necessary prerequisites having been met.\n\n This function verifies that the application was launched through the Bootstrapper application,\n the redistributable service has been installed and is running in the background,\n and that the overlay has been loaded successfully.\n\n On Windows, the desktop crossplay functionality is required to use Epic accounts login\n with applications that are distributed outside the Epic Games Store.\n\n @param Options input structure that specifies the API version.\n @param OutDesktopCrossplayStatusInfo output structure to receive the desktop crossplay status information.\n\n @return An EOS_EResult is returned to indicate success or an error.\n - EOS_NotImplemented is returned on non-Windows platforms.\n\n @see EOS_Platform_GetDesktopCrossplayStatusOptions\n @see EOS_Platform_DesktopCrossplayStatusInfo"]
    pub fn EOS_Platform_GetDesktopCrossplayStatus(
        Handle: EOS_HPlatform,
        Options: *const EOS_Platform_GetDesktopCrossplayStatusOptions,
        OutDesktopCrossplayStatusInfo: *mut EOS_Platform_DesktopCrossplayStatusInfo,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Notify a change in application state.\n\n @note Calling SetApplicationStatus must happen before Tick when foregrounding for the cases where we won't get the background notification.\n\n @param NewStatus The new status for the application.\n\n @return An EOS_EResult that indicates whether we changed the application status successfully.\n - EOS_Success if the application was changed successfully.\n - EOS_InvalidParameters if the value of NewStatus is invalid.\n - EOS_NotImplemented if EOS_AS_BackgroundConstrained or EOS_AS_BackgroundUnconstrained are attempted to be set on platforms that do not have such application states."]
    pub fn EOS_Platform_SetApplicationStatus(
        Handle: EOS_HPlatform,
        NewStatus: EOS_EApplicationStatus,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Retrieves the current application state as told to the SDK by the application.\n\n @return The current application status."]
    pub fn EOS_Platform_GetApplicationStatus(Handle: EOS_HPlatform) -> EOS_EApplicationStatus;
}
unsafe extern "C" {
    #[doc = " Notify a change in network state.\n\n @param NewStatus The new network status.\n\n @return An EOS_EResult that indicates whether we changed the network status successfully.\n - EOS_Success if the network was changed successfully.\n - EOS_InvalidParameters if the value of NewStatus is invalid."]
    pub fn EOS_Platform_SetNetworkStatus(
        Handle: EOS_HPlatform,
        NewStatus: EOS_ENetworkStatus,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Retrieves the current network state as told to the SDK by the application.\n\n @return The current network status."]
    pub fn EOS_Platform_GetNetworkStatus(Handle: EOS_HPlatform) -> EOS_ENetworkStatus;
}
unsafe extern "C" {
    #[doc = " Login/Authenticate with user credentials.\n\n @param Options structure containing the account credentials to use during the login operation\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate a callback that is fired when the login operation completes, either successfully or in error\n\n @see EOS_Auth_LoginOptions\n @see EOS_Auth_OnLoginCallback"]
    pub fn EOS_Auth_Login(
        Handle: EOS_HAuth,
        Options: *const EOS_Auth_LoginOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Auth_OnLoginCallback,
    );
}
unsafe extern "C" {
    #[doc = " Signs the player out of the online service.\n\n @param Options structure containing information about which account to log out.\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate a callback that is fired when the logout operation completes, either successfully or in error\n\n @see EOS_Auth_LogoutOptions\n @see EOS_Auth_OnLogoutCallback"]
    pub fn EOS_Auth_Logout(
        Handle: EOS_HAuth,
        Options: *const EOS_Auth_LogoutOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Auth_OnLogoutCallback,
    );
}
unsafe extern "C" {
    #[doc = " Link external account by continuing previous login attempt with a continuance token.\n\n The user will be presented with Epic Accounts onboarding flow managed by the SDK.\n\n On success, the user will be logged in at the completion of this action.\n This will commit this external account to the Epic Account and cannot be undone in the SDK.\n\n @param Options structure containing the account credentials to use during the link account operation\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate a callback that is fired when the link account operation completes, either successfully or in error\n\n @see EOS_Auth_LinkAccountOptions\n @see EOS_Auth_OnLinkAccountCallback"]
    pub fn EOS_Auth_LinkAccount(
        Handle: EOS_HAuth,
        Options: *const EOS_Auth_LinkAccountOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Auth_OnLinkAccountCallback,
    );
}
unsafe extern "C" {
    #[doc = " Deletes a previously received and locally stored persistent auth access token for the currently logged in user of the local device.\n\n On Desktop and Mobile platforms, the access token is deleted from the keychain of the local user and a backend request is made to revoke the token on the authentication server.\n On Console platforms, even though the caller is responsible for storing and deleting the access token on the local device,\n this function should still be called with the access token before its deletion to make the best effort in attempting to also revoke it on the authentication server.\n If the function would fail on Console, the caller should still proceed as normal to delete the access token locally as intended.\n\n @param Options structure containing operation input parameters\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate a callback that is fired when the deletion operation completes, either successfully or in error\n\n @see EOS_Auth_DeletePersistentAuthOptions\n @see EOS_Auth_OnDeletePersistentAuthCallback"]
    pub fn EOS_Auth_DeletePersistentAuth(
        Handle: EOS_HAuth,
        Options: *const EOS_Auth_DeletePersistentAuthOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Auth_OnDeletePersistentAuthCallback,
    );
}
unsafe extern "C" {
    #[doc = " Contact the backend service to verify validity of an existing user auth token.\n This function is intended for server-side use only.\n\n @param Options structure containing information about the auth token being verified\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate a callback that is fired when the logout operation completes, either successfully or in error\n\n @see EOS_Auth_VerifyUserAuthOptions\n @see EOS_Auth_OnVerifyUserAuthCallback\n @see EOS_Auth_CopyUserAuthToken"]
    pub fn EOS_Auth_VerifyUserAuth(
        Handle: EOS_HAuth,
        Options: *const EOS_Auth_VerifyUserAuthOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Auth_OnVerifyUserAuthCallback,
    );
}
unsafe extern "C" {
    #[doc = " Fetch the number of accounts that are logged in.\n\n @return the number of accounts logged in."]
    pub fn EOS_Auth_GetLoggedInAccountsCount(Handle: EOS_HAuth) -> i32;
}
unsafe extern "C" {
    #[doc = " Fetch an Epic Account ID that is logged in.\n\n @param Index An index into the list of logged in accounts. If the index is out of bounds, the returned Epic Account ID will be invalid.\n\n @return The Epic Account ID associated with the index passed"]
    pub fn EOS_Auth_GetLoggedInAccountByIndex(Handle: EOS_HAuth, Index: i32) -> EOS_EpicAccountId;
}
unsafe extern "C" {
    #[doc = " Fetches the login status for an Epic Account ID.\n\n @param LocalUserId The Epic Account ID of the user being queried\n\n @return The enum value of a user's login status"]
    pub fn EOS_Auth_GetLoginStatus(
        Handle: EOS_HAuth,
        LocalUserId: EOS_EpicAccountId,
    ) -> EOS_ELoginStatus;
}
unsafe extern "C" {
    #[doc = " Fetch a user auth token for an Epic Account ID.\n\n A user authentication token allows any code with possession (backend/client) to perform certain actions on behalf of the user.\n Because of this, for the purposes of user identity verification, the EOS_Auth_CopyIdToken API should be used instead.\n\n @param Options Structure containing the api version of CopyUserAuthToken to use\n @param LocalUserId The Epic Account ID of the user being queried\n @param OutUserAuthToken The auth token for the given user, if it exists and is valid; use EOS_Auth_Token_Release when finished\n\n @see EOS_Auth_CopyUserAuthTokenOptions\n @see EOS_Auth_Token\n @see EOS_Auth_Token_Release\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the information is available and passed out in OutUserAuthToken\n - EOS_InvalidParameters if you pass a null pointer for the out parameter\n - EOS_NotFound if the auth token is not found or expired.\n"]
    pub fn EOS_Auth_CopyUserAuthToken(
        Handle: EOS_HAuth,
        Options: *const EOS_Auth_CopyUserAuthTokenOptions,
        LocalUserId: EOS_EpicAccountId,
        OutUserAuthToken: *mut *mut EOS_Auth_Token,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Fetch an ID token for an Epic Account ID.\n\n ID tokens are used to securely verify user identities with online services.\n The most common use case is using an ID token to authenticate the local user by their selected account ID,\n which is the account ID that should be used to access any game-scoped data for the current application.\n\n An ID token for the selected account ID of a locally authenticated user will always be readily available.\n To retrieve it for the selected account ID, you can use EOS_Auth_CopyIdToken directly after a successful user login.\n\n @param Options Structure containing the account ID for which to copy an ID token.\n @param OutIdToken An ID token for the given user, if it exists and is valid; use EOS_Auth_IdToken_Release when finished.\n\n @see EOS_Auth_CopyIdTokenOptions\n @see EOS_Auth_IdToken\n @see EOS_Auth_IdToken_Release\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the information is available and passed out in OutUserIdToken\n - EOS_InvalidParameters if you pass a null pointer for the out parameter\n - EOS_NotFound if the Id token is not found or expired.\n"]
    pub fn EOS_Auth_CopyIdToken(
        Handle: EOS_HAuth,
        Options: *const EOS_Auth_CopyIdTokenOptions,
        OutIdToken: *mut *mut EOS_Auth_IdToken,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Query the backend for an ID token that describes one of the merged account IDs of a local authenticated user.\n\n The ID token can be used to impersonate a merged account ID when communicating with online services.\n\n An ID token for the selected account ID of a locally authenticated user will always be readily available and does not need to be queried explicitly.\n\n @param Options Structure containing the merged account ID for which to query an ID token.\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate.\n @param CompletionDelegate A callback that is fired when the operation completes, either successfully or in error.\n\n @see EOS_Auth_QueryIdTokenOptions\n @see EOS_Auth_OnQueryIdTokenCallback"]
    pub fn EOS_Auth_QueryIdToken(
        Handle: EOS_HAuth,
        Options: *const EOS_Auth_QueryIdTokenOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Auth_OnQueryIdTokenCallback,
    );
}
unsafe extern "C" {
    #[doc = " Verify a given ID token for authenticity and validity.\n\n @param Options Structure containing information about the ID token to verify.\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the operation completes, either successfully or in error.\n\n @see EOS_Auth_VerifyIdTokenOptions\n @see EOS_Auth_OnVerifyIdTokenCallback"]
    pub fn EOS_Auth_VerifyIdToken(
        Handle: EOS_HAuth,
        Options: *const EOS_Auth_VerifyIdTokenOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Auth_OnVerifyIdTokenCallback,
    );
}
unsafe extern "C" {
    #[doc = " Fetch the selected account ID to the current application for a local authenticated user.\n\n @param LocalUserId The account ID of a currently logged in account.\n @param OutSelectedAccountId The selected account ID corresponding to the given account ID.\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the user is logged in and the information is available.\n - EOS_InvalidParameters if the output parameter is NULL.\n - EOS_InvalidUser if the input account ID is not locally known.\n - EOS_InvalidAuth if the input account ID is not locally logged in.\n - EOS_NotFound otherwise."]
    pub fn EOS_Auth_GetSelectedAccountId(
        Handle: EOS_HAuth,
        LocalUserId: EOS_EpicAccountId,
        OutSelectedAccountId: *mut EOS_EpicAccountId,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Fetch the number of merged accounts for a given logged in account.\n\n @param LocalUserId The account ID of a currently logged in account.\n\n @return the number of merged accounts for the logged in account."]
    pub fn EOS_Auth_GetMergedAccountsCount(
        Handle: EOS_HAuth,
        LocalUserId: EOS_EpicAccountId,
    ) -> u32;
}
unsafe extern "C" {
    #[doc = " Fetch one of the merged account IDs for a given logged in account.\n\n @param LocalUserId The account ID of a currently logged in account.\n @param Index An index into the list of merged accounts. If the index is out of bounds, the returned Epic Account ID will be invalid.\n\n @return The Epic Account ID associated with the index passed."]
    pub fn EOS_Auth_GetMergedAccountByIndex(
        Handle: EOS_HAuth,
        LocalUserId: EOS_EpicAccountId,
        Index: u32,
    ) -> EOS_EpicAccountId;
}
unsafe extern "C" {
    #[doc = " Register to receive login status updates.\n @note If the returned NotificationId is valid, you must call EOS_Auth_RemoveNotifyLoginStatusChanged when you no longer wish to have your NotificationHandler called.\n\n @param Options structure containing the api version of AddNotifyLoginStatusChanged to use\n @param ClientData arbitrary data that is passed back to you in the callback\n @param Notification a callback that is fired when the login status for a user changes\n\n @see EOS_Auth_AddNotifyLoginStatusChangedOptions\n @see EOS_Auth_OnLoginStatusChangedCallback\n\n @return handle representing the registered callback"]
    pub fn EOS_Auth_AddNotifyLoginStatusChanged(
        Handle: EOS_HAuth,
        Options: *const EOS_Auth_AddNotifyLoginStatusChangedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        Notification: EOS_Auth_OnLoginStatusChangedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Unregister from receiving login status updates.\n\n @param InId handle representing the registered callback"]
    pub fn EOS_Auth_RemoveNotifyLoginStatusChanged(Handle: EOS_HAuth, InId: EOS_NotificationId);
}
unsafe extern "C" {
    #[doc = " Creates a lobby and adds the user to the lobby membership.  There is no data associated with the lobby at the start and can be added vis EOS_Lobby_UpdateLobbyModification\n\n If the lobby is successfully created with an RTC Room enabled, the lobby system will automatically join and maintain the connection to the RTC room as long as the\n local user remains in the lobby. Applications can use the EOS_Lobby_GetRTCRoomName to get the name of the RTC Room associated with a lobby, which may be used with\n many of the functions in the RTC interface. This can be useful to: register for notifications for talking status; to mute or unmute the local user's audio output;\n to block or unblock room participants; to set local audio device settings; and more.\n\n @param Options Required fields for the creation of a lobby such as a user count and its starting advertised state\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the create operation completes, either successfully or in error\n\n @see EOS_Lobby_CreateLobbyOptions\n @see EOS_Lobby_OnCreateLobbyCallback"]
    pub fn EOS_Lobby_CreateLobby(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_CreateLobbyOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnCreateLobbyCallback,
    );
}
unsafe extern "C" {
    #[doc = " Destroy a lobby given a lobby ID\n\n @param Options Structure containing information about the lobby to be destroyed\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the destroy operation completes, either successfully or in error\n\n @see EOS_Lobby_DestroyLobbyOptions\n @see EOS_Lobby_OnDestroyLobbyCallback"]
    pub fn EOS_Lobby_DestroyLobby(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_DestroyLobbyOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnDestroyLobbyCallback,
    );
}
unsafe extern "C" {
    #[doc = " Join a lobby, creating a local instance under a given lobby ID.  Backend will validate various conditions to make sure it is possible to join the lobby.\n\n If the lobby is successfully join has an RTC Room enabled, the lobby system will automatically join and maintain the connection to the RTC room as long as the\n local user remains in the lobby. Applications can use the EOS_Lobby_GetRTCRoomName to get the name of the RTC Room associated with a lobby, which may be used with\n many of the functions in the RTC interface. This can be useful to: register for notifications for talking status; to mute or unmute the local user's audio output;\n to block or unblock room participants; to set local audio device settings; and more.\n\n @param Options Structure containing information about the lobby to be joined\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the join operation completes, either successfully or in error\n\n @see EOS_Lobby_JoinLobbyOptions\n @see EOS_Lobby_OnJoinLobbyCallback"]
    pub fn EOS_Lobby_JoinLobby(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_JoinLobbyOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnJoinLobbyCallback,
    );
}
unsafe extern "C" {
    #[doc = " This is a special case of EOS_Lobby_JoinLobby.  It should only be used if the lobby has had Join-by-ID enabled.\n Additionally, Join-by-ID should only be enabled to support native invites on an integrated platform.\n\n @param Options Structure containing information about the lobby to be joined\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the join operation completes, either successfully or in error\n\n @see EOS_Lobby_JoinLobbyByIdOptions\n @see EOS_Lobby_OnJoinLobbyByIdCallback\n @see EOS_Lobby_JoinLobby"]
    pub fn EOS_Lobby_JoinLobbyById(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_JoinLobbyByIdOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnJoinLobbyByIdCallback,
    );
}
unsafe extern "C" {
    #[doc = " Leave a lobby given a lobby ID\n\n If the lobby you are leaving had an RTC Room enabled, leaving the lobby will also automatically leave the RTC room.\n\n @param Options Structure containing information about the lobby to be left\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the leave operation completes, either successfully or in error\n\n @see EOS_Lobby_LeaveLobbyOptions\n @see EOS_Lobby_OnLeaveLobbyCallback"]
    pub fn EOS_Lobby_LeaveLobby(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_LeaveLobbyOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnLeaveLobbyCallback,
    );
}
unsafe extern "C" {
    #[doc = " Creates a lobby modification handle (EOS_HLobbyModification). The lobby modification handle is used to modify an existing lobby and can be applied with EOS_Lobby_UpdateLobby.\n The EOS_HLobbyModification must be released by calling EOS_LobbyModification_Release once it is no longer needed.\n\n @param Options Required fields such as lobby ID\n @param OutLobbyModificationHandle Pointer to a Lobby Modification Handle only set if successful\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if we successfully created the Lobby Modification Handle pointed at in OutLobbyModificationHandle, or an error result if the input data was invalid\n - EOS_InvalidParameters if any of the options are incorrect\n\n @see EOS_LobbyModification_Release\n @see EOS_Lobby_UpdateLobby\n @see EOS_Lobby_UpdateLobbyModificationOptions\n @see EOS_HLobbyModification"]
    pub fn EOS_Lobby_UpdateLobbyModification(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_UpdateLobbyModificationOptions,
        OutLobbyModificationHandle: *mut EOS_HLobbyModification,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Update a lobby given a lobby modification handle created by EOS_Lobby_UpdateLobbyModification\n\n @param Options Structure containing information about the lobby to be updated\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the update operation completes, either successfully or in error\n\n @see EOS_Lobby_UpdateLobbyOptions\n @see EOS_Lobby_OnUpdateLobbyCallback"]
    pub fn EOS_Lobby_UpdateLobby(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_UpdateLobbyOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnUpdateLobbyCallback,
    );
}
unsafe extern "C" {
    #[doc = " Promote an existing member of the lobby to owner, allowing them to make lobby data modifications\n\n @param Options Structure containing information about the lobby and member to be promoted\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the promotion operation completes, either successfully or in error\n\n @see EOS_Lobby_PromoteMemberOptions\n @see EOS_Lobby_OnPromoteMemberCallback"]
    pub fn EOS_Lobby_PromoteMember(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_PromoteMemberOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnPromoteMemberCallback,
    );
}
unsafe extern "C" {
    #[doc = " Kick an existing member from the lobby\n\n @param Options Structure containing information about the lobby and member to be kicked\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the kick operation completes, either successfully or in error\n\n @see EOS_Lobby_KickMemberOptions\n @see EOS_Lobby_OnKickMemberCallback"]
    pub fn EOS_Lobby_KickMember(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_KickMemberOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnKickMemberCallback,
    );
}
unsafe extern "C" {
    #[doc = " Hard mute an existing member in the lobby, can't speak but can hear other members of the lobby\n\n @param Options Structure containing information about the lobby and member to be hard muted\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the hard mute operation completes, either successfully or in error\n\n @see EOS_Lobby_HardMuteMemberOptions\n @see EOS_Lobby_OnHardMuteMemberCallback"]
    pub fn EOS_Lobby_HardMuteMember(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_HardMuteMemberOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnHardMuteMemberCallback,
    );
}
unsafe extern "C" {
    #[doc = " Register to receive notifications when a lobby owner updates the attributes associated with the lobby.\n @note If the returned NotificationId is valid, you must call EOS_Lobby_RemoveNotifyLobbyUpdateReceived when you no longer wish to have your NotificationHandler called.\n\n @param Options Structure containing information about the request.\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate.\n @param NotificationFn A callback that is fired when a a notification is received.\n\n @return handle representing the registered callback\n\n @see EOS_Lobby_AddNotifyLobbyUpdateReceivedOptions\n @see EOS_Lobby_OnLobbyUpdateReceivedCallback"]
    pub fn EOS_Lobby_AddNotifyLobbyUpdateReceived(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_AddNotifyLobbyUpdateReceivedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        NotificationFn: EOS_Lobby_OnLobbyUpdateReceivedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Unregister from receiving notifications when a lobby changes its data.\n\n @param InId Handle representing the registered callback"]
    pub fn EOS_Lobby_RemoveNotifyLobbyUpdateReceived(Handle: EOS_HLobby, InId: EOS_NotificationId);
}
unsafe extern "C" {
    #[doc = " Register to receive notifications when a lobby member updates the attributes associated with themselves inside the lobby.\n @note If the returned NotificationId is valid, you must call EOS_Lobby_RemoveNotifyLobbyMemberUpdateReceived when you no longer wish to have your NotificationHandler called.\n\n @param Options Structure containing information about the request.\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate.\n @param NotificationFn A callback that is fired when a a notification is received.\n\n @return handle representing the registered callback\n\n @see EOS_Lobby_AddNotifyLobbyMemberUpdateReceivedOptions\n @see EOS_Lobby_OnLobbyMemberUpdateReceivedCallback"]
    pub fn EOS_Lobby_AddNotifyLobbyMemberUpdateReceived(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_AddNotifyLobbyMemberUpdateReceivedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        NotificationFn: EOS_Lobby_OnLobbyMemberUpdateReceivedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Unregister from receiving notifications when lobby members change their data.\n\n @param InId Handle representing the registered callback"]
    pub fn EOS_Lobby_RemoveNotifyLobbyMemberUpdateReceived(
        Handle: EOS_HLobby,
        InId: EOS_NotificationId,
    );
}
unsafe extern "C" {
    #[doc = " Register to receive notifications about the changing status of lobby members.\n @note If the returned NotificationId is valid, you must call EOS_Lobby_RemoveNotifyLobbyMemberStatusReceived when you no longer wish to have your NotificationHandler called.\n\n @param Options Structure containing information about the request.\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate.\n @param NotificationFn A callback that is fired when a a notification is received.\n\n @return handle representing the registered callback\n\n @see EOS_Lobby_AddNotifyLobbyMemberStatusReceivedOptions\n @see EOS_Lobby_OnLobbyMemberStatusReceivedCallback"]
    pub fn EOS_Lobby_AddNotifyLobbyMemberStatusReceived(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_AddNotifyLobbyMemberStatusReceivedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        NotificationFn: EOS_Lobby_OnLobbyMemberStatusReceivedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Unregister from receiving notifications when lobby members status change.\n\n @param InId Handle representing the registered callback"]
    pub fn EOS_Lobby_RemoveNotifyLobbyMemberStatusReceived(
        Handle: EOS_HLobby,
        InId: EOS_NotificationId,
    );
}
unsafe extern "C" {
    #[doc = " Send an invite to another user.  User must be a member of the lobby or else the call will fail\n\n @param Options Structure containing information about the lobby and user to invite\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the send invite operation completes, either successfully or in error\n\n @see EOS_Lobby_SendInviteOptions\n @see EOS_Lobby_OnSendInviteCallback"]
    pub fn EOS_Lobby_SendInvite(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_SendInviteOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnSendInviteCallback,
    );
}
unsafe extern "C" {
    #[doc = " Reject an invite from another user.\n\n @param Options Structure containing information about the invite to reject\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the reject invite operation completes, either successfully or in error\n\n @see EOS_Lobby_RejectInviteOptions\n @see EOS_Lobby_OnRejectInviteCallback"]
    pub fn EOS_Lobby_RejectInvite(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_RejectInviteOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnRejectInviteCallback,
    );
}
unsafe extern "C" {
    #[doc = " Retrieve all existing invites for a single user\n\n @param Options Structure containing information about the invites to query\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the query invites operation completes, either successfully or in error\n\n @see EOS_Lobby_QueryInvitesOptions\n @see EOS_Lobby_OnQueryInvitesCallback"]
    pub fn EOS_Lobby_QueryInvites(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_QueryInvitesOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnQueryInvitesCallback,
    );
}
unsafe extern "C" {
    #[doc = " Get the number of known invites for a given user\n\n @param Options the Options associated with retrieving the current invite count\n\n @return number of known invites for a given user or 0 if there is an error\n\n @see EOS_Lobby_GetInviteCountOptions"]
    pub fn EOS_Lobby_GetInviteCount(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_GetInviteCountOptions,
    ) -> u32;
}
unsafe extern "C" {
    #[doc = " Retrieve an invite ID from a list of active invites for a given user\n\n @param Options Structure containing the input parameters\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the input is valid and an invite ID was returned\n - EOS_InvalidParameters if any of the options are incorrect\n - EOS_NotFound if the invite doesn't exist\n\n @see EOS_Lobby_GetInviteCount\n @see EOS_Lobby_CopyLobbyDetailsHandleByInviteId\n\n @see EOS_Lobby_GetInviteIdByIndexOptions"]
    pub fn EOS_Lobby_GetInviteIdByIndex(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_GetInviteIdByIndexOptions,
        OutBuffer: *mut ::std::os::raw::c_char,
        InOutBufferLength: *mut i32,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Create a lobby search handle.  This handle may be modified to include various search parameters.\n Searching is possible in three methods, all mutually exclusive\n - set the lobby ID to find a specific lobby\n - set the target user ID to find a specific user\n - set lobby parameters to find an array of lobbies that match the search criteria\n\n @param Options Structure containing required parameters such as the maximum number of search results\n @param OutLobbySearchHandle The new search handle or null if there was an error creating the search handle\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the search creation completes successfully\n - EOS_InvalidParameters if any of the options are incorrect\n\n @see EOS_Lobby_CreateLobbySearchOptions\n @see EOS_HLobbySearch"]
    pub fn EOS_Lobby_CreateLobbySearch(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_CreateLobbySearchOptions,
        OutLobbySearchHandle: *mut EOS_HLobbySearch,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Register to receive notifications about lobby invites sent to local users.\n @note If the returned NotificationId is valid, you must call EOS_Lobby_RemoveNotifyLobbyInviteReceived when you no longer wish to have your NotificationHandler called.\n\n @param Options Structure containing information about the request.\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate.\n @param NotificationFn A callback that is fired when a a notification is received.\n\n @return handle representing the registered callback\n\n @see EOS_Lobby_AddNotifyLobbyInviteReceivedOptions\n @see EOS_Lobby_OnLobbyInviteReceivedCallback"]
    pub fn EOS_Lobby_AddNotifyLobbyInviteReceived(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_AddNotifyLobbyInviteReceivedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        NotificationFn: EOS_Lobby_OnLobbyInviteReceivedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Unregister from receiving notifications when a user receives a lobby invitation.\n\n @param InId Handle representing the registered callback"]
    pub fn EOS_Lobby_RemoveNotifyLobbyInviteReceived(Handle: EOS_HLobby, InId: EOS_NotificationId);
}
unsafe extern "C" {
    #[doc = " Register to receive notifications about lobby invites accepted by local user via the overlay.\n @note If the returned NotificationId is valid, you must call EOS_Lobby_RemoveNotifyLobbyInviteAccepted when you no longer wish to have your NotificationHandler called.\n\n @param Options Structure containing information about the request.\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate.\n @param NotificationFn A callback that is fired when a a notification is received.\n\n @return handle representing the registered callback\n\n @see EOS_Lobby_AddNotifyLobbyInviteAcceptedOptions\n @see EOS_Lobby_OnLobbyInviteAcceptedCallback"]
    pub fn EOS_Lobby_AddNotifyLobbyInviteAccepted(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_AddNotifyLobbyInviteAcceptedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        NotificationFn: EOS_Lobby_OnLobbyInviteAcceptedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Unregister from receiving notifications when a user accepts a lobby invitation via the overlay.\n\n @param InId Handle representing the registered callback"]
    pub fn EOS_Lobby_RemoveNotifyLobbyInviteAccepted(Handle: EOS_HLobby, InId: EOS_NotificationId);
}
unsafe extern "C" {
    #[doc = " Register to receive notifications about lobby invites rejected by local user.\n @note If the returned NotificationId is valid, you must call EOS_Lobby_RemoveNotifyLobbyInviteRejected when you no longer wish to have your NotificationHandler called.\n\n @param Options Structure containing information about the request.\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate.\n @param NotificationFn A callback that is fired when a a notification is received.\n\n @return handle representing the registered callback\n\n @see EOS_Lobby_AddNotifyLobbyInviteRejectedOptions\n @see EOS_Lobby_OnLobbyInviteRejectedCallback"]
    pub fn EOS_Lobby_AddNotifyLobbyInviteRejected(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_AddNotifyLobbyInviteRejectedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        NotificationFn: EOS_Lobby_OnLobbyInviteRejectedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Unregister from receiving notifications when a user rejects a lobby invitation via the overlay.\n\n @param InId Handle representing the registered callback"]
    pub fn EOS_Lobby_RemoveNotifyLobbyInviteRejected(Handle: EOS_HLobby, InId: EOS_NotificationId);
}
unsafe extern "C" {
    #[doc = " Register to receive notifications about lobby \"JOIN\" performed by local user (when no invite) via the overlay.\n @note If the returned NotificationId is valid, you must call EOS_Lobby_RemoveNotifyJoinLobbyAccepted when you no longer wish to have your NotificationHandler called.\n\n @param Options Structure containing information about the request.\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate.\n @param NotificationFn A callback that is fired when a notification is received.\n\n @return handle representing the registered callback\n\n @see EOS_Lobby_AddNotifyJoinLobbyAcceptedOptions\n @see EOS_Lobby_OnJoinLobbyAcceptedCallback"]
    pub fn EOS_Lobby_AddNotifyJoinLobbyAccepted(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_AddNotifyJoinLobbyAcceptedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        NotificationFn: EOS_Lobby_OnJoinLobbyAcceptedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Unregister from receiving notifications when a user accepts a lobby invitation via the overlay.\n\n @param InId Handle representing the registered callback"]
    pub fn EOS_Lobby_RemoveNotifyJoinLobbyAccepted(Handle: EOS_HLobby, InId: EOS_NotificationId);
}
unsafe extern "C" {
    #[doc = " Register to receive notifications about a lobby \"INVITE\" performed by a local user via the overlay.\n This is only needed when a configured integrated platform has EOS_IPMF_DisableSDKManagedSessions set.  The EOS SDK will\n then use the state of EOS_IPMF_PreferEOSIdentity and EOS_IPMF_PreferIntegratedIdentity to determine when the NotificationFn is\n called.\n\n @note If the returned NotificationId is valid, you must call EOS_Lobby_RemoveNotifySendLobbyNativeInviteRequested when you no longer wish to have your NotificationHandler called.\n\n @param Options Structure containing information about the request.\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate.\n @param NotificationFn A callback that is fired when a notification is received.\n\n @return handle representing the registered callback\n\n @see EOS_IPMF_DisableSDKManagedSessions\n @see EOS_IPMF_PreferEOSIdentity\n @see EOS_IPMF_PreferIntegratedIdentity\n\n @see EOS_Lobby_AddNotifySendLobbyNativeInviteRequestedOptions\n @see EOS_Lobby_OnSendLobbyNativeInviteRequestedCallback"]
    pub fn EOS_Lobby_AddNotifySendLobbyNativeInviteRequested(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_AddNotifySendLobbyNativeInviteRequestedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        NotificationFn: EOS_Lobby_OnSendLobbyNativeInviteRequestedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Unregister from receiving notifications when a user requests a send invite via the overlay.\n\n @param InId Handle representing the registered callback"]
    pub fn EOS_Lobby_RemoveNotifySendLobbyNativeInviteRequested(
        Handle: EOS_HLobby,
        InId: EOS_NotificationId,
    );
}
unsafe extern "C" {
    #[doc = " EOS_Lobby_CopyLobbyDetailsHandleByInviteId is used to immediately retrieve a handle to the lobby information from after notification of an invite\n If the call returns an EOS_Success result, the out parameter, OutLobbyDetailsHandle, must be passed to EOS_LobbyDetails_Release to release the memory associated with it.\n\n @param Options Structure containing the input parameters\n @param OutLobbyDetailsHandle out parameter used to receive the lobby handle\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the information is available and passed out in OutLobbyDetailsHandle\n - EOS_InvalidParameters if you pass an invalid invite ID or a null pointer for the out parameter\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n - EOS_NotFound If the invite ID cannot be found\n\n @see EOS_Lobby_CopyLobbyDetailsHandleByInviteIdOptions\n @see EOS_HLobbyDetails\n @see EOS_LobbyDetails_Release"]
    pub fn EOS_Lobby_CopyLobbyDetailsHandleByInviteId(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_CopyLobbyDetailsHandleByInviteIdOptions,
        OutLobbyDetailsHandle: *mut EOS_HLobbyDetails,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " EOS_Lobby_CopyLobbyDetailsHandleByUiEventId is used to immediately retrieve a handle to the lobby information from after notification of a join game\n If the call returns an EOS_Success result, the out parameter, OutLobbyDetailsHandle, must be passed to EOS_LobbyDetails_Release to release the memory associated with it.\n\n @param Options Structure containing the input parameters\n @param OutLobbyDetailsHandle out parameter used to receive the lobby handle\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the information is available and passed out in OutLobbyDetailsHandle\n - EOS_InvalidParameters if you pass an invalid ui event ID\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n - EOS_NotFound If the invite ID cannot be found\n\n @see EOS_Lobby_CopyLobbyDetailsHandleByUiEventIdOptions\n @see EOS_HLobbyDetails\n @see EOS_LobbyDetails_Release"]
    pub fn EOS_Lobby_CopyLobbyDetailsHandleByUiEventId(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_CopyLobbyDetailsHandleByUiEventIdOptions,
        OutLobbyDetailsHandle: *mut EOS_HLobbyDetails,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Create a handle to an existing lobby.\n If the call returns an EOS_Success result, the out parameter, OutLobbyDetailsHandle, must be passed to EOS_LobbyDetails_Release to release the memory associated with it.\n\n @param Options Structure containing information about the lobby to retrieve\n @param OutLobbyDetailsHandle The new active lobby handle or null if there was an error\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the lobby handle was created successfully\n - EOS_InvalidParameters if any of the options are incorrect\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n - EOS_NotFound if the lobby doesn't exist\n\n @see EOS_Lobby_CopyLobbyDetailsHandleOptions\n @see EOS_HLobbyDetails"]
    pub fn EOS_Lobby_CopyLobbyDetailsHandle(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_CopyLobbyDetailsHandleOptions,
        OutLobbyDetailsHandle: *mut EOS_HLobbyDetails,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Get the name of the RTC room associated with a specific lobby a local user belongs to.\n\n This value can be used whenever you need a RoomName value in the RTC_* suite of functions. RTC Room Names must not be used with\n EOS_RTC_JoinRoom, EOS_RTC_LeaveRoom, or EOS_RTC_AddNotifyDisconnected. Doing so will return EOS_AccessDenied or\n EOS_INVALID_NOTIFICATIONID if used with those functions.\n\n This function will only succeed when called on a lobby the local user is currently a member of.\n\n @param Options Structure containing information about the RTC room name to retrieve\n @param OutBuffer The buffer to store the null-terminated room name string within\n @param InOutBufferLength In: The maximum amount of writable chars in OutBuffer, Out: The minimum amount of chars needed in OutBuffer to store the RTC room name (including the null-terminator)\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if a room exists for the specified lobby, there was enough space in OutBuffer, and the name was written successfully\n - EOS_NotFound if the lobby does not exist\n - EOS_Disabled if the lobby exists, but did not have the RTC Room feature enabled when created\n - EOS_InvalidParameters if you pass a null pointer on invalid length for any of the parameters\n - EOS_LimitExceeded The OutBuffer is not large enough to receive the room name. InOutBufferLength contains the required minimum length to perform the operation successfully.\n\n @see EOS_Lobby_GetRTCRoomNameOptions"]
    pub fn EOS_Lobby_GetRTCRoomName(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_GetRTCRoomNameOptions,
        OutBuffer: *mut ::std::os::raw::c_char,
        InOutBufferLength: *mut u32,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Joins the RTC room associated with a specific lobby a local user belongs to.\n\n This function will only succeed when called on a lobby that has the RTC Room feature enabled.\n Clients may check if the RTC Room feature is enabled by inspecting the value of EOS_LobbyDetails_Info::bRTCRoomEnabled.\n\n @param Options Structure containing information about which lobby a local user should join the RTC Room for\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the join RTC Room operation completes, either successfully or in error\n\n @see EOS_Lobby_JoinRTCRoomOptions\n @see EOS_Lobby_OnJoinRTCRoomCallback"]
    pub fn EOS_Lobby_JoinRTCRoom(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_JoinRTCRoomOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnJoinRTCRoomCallback,
    );
}
unsafe extern "C" {
    #[doc = " Leaves the RTC room associated with a specific lobby a local user belongs to.\n\n This function will only succeed when called on a lobby that has the RTC Room feature enabled.\n Clients may check if the RTC Room feature is enabled by inspecting the value of EOS_LobbyDetails_Info::bRTCRoomEnabled.\n\n @param Options Structure containing information about which lobby a local user should leave the RTC Room for\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the leave RTC Room operation completes, either successfully or in error\n\n @see EOS_Lobby_LeaveRTCRoomOptions\n @see EOS_Lobby_OnLeaveRTCRoomCallback"]
    pub fn EOS_Lobby_LeaveRTCRoom(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_LeaveRTCRoomOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_Lobby_OnLeaveRTCRoomCallback,
    );
}
unsafe extern "C" {
    #[doc = " Get the current connection status of the RTC Room for a lobby.\n\n The RTC Room connection status is independent of the lobby connection status, however the lobby system will attempt to keep\n them consistent, automatically connecting to the RTC room after joining a lobby which has an associated RTC room and disconnecting\n from the RTC room when a lobby is left or disconnected.\n\n This function will only succeed when called on a lobby the local user is currently a member of.\n\n @param Options Structure containing information about the lobby to query the RTC Room connection status for\n @param bOutIsConnected If the result is EOS_Success, this will be set to EOS_TRUE if we are connected, or EOS_FALSE if we are not yet connected.\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if we are connected to the specified lobby, the input options and parameters were valid and we were able to write to bOutIsConnected successfully.\n - EOS_NotFound if the lobby doesn't exist\n - EOS_Disabled if the lobby exists, but did not have the RTC Room feature enabled when created\n - EOS_InvalidParameters if bOutIsConnected is NULL, or any other parameters are NULL or invalid\n\n @see EOS_Lobby_AddNotifyRTCRoomConnectionChanged\n @see EOS_Lobby_IsRTCRoomConnectedOptions"]
    pub fn EOS_Lobby_IsRTCRoomConnected(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_IsRTCRoomConnectedOptions,
        bOutIsConnected: *mut EOS_Bool,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Register to receive notifications of when the RTC Room for a particular lobby has a connection status change.\n\n The RTC Room connection status is independent of the lobby connection status, however the lobby system will attempt to keep\n them consistent, automatically connecting to the RTC room after joining a lobby which has an associated RTC room and disconnecting\n from the RTC room when a lobby is left or disconnected.\n\n This notification is entirely informational and requires no action in response by the application. If the connected status is offline\n (bIsConnected is EOS_FALSE), the connection will automatically attempt to reconnect. The purpose of this notification is to allow\n applications to show the current connection status of the RTC room when the connection is not established.\n\n Unlike EOS_RTC_AddNotifyDisconnected, EOS_RTC_LeaveRoom should not be called when the RTC room is disconnected.\n\n This function will only succeed when called on a lobby the local user is currently a member of.\n\n @param Options Structure containing information about the lobby to receive updates about\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate.\n @param NotificationFn The function to call if the RTC Room's connection status changes\n\n @return A valid notification ID if the NotificationFn was successfully registered, or EOS_INVALID_NOTIFICATIONID if the input was invalid, the lobby did not exist, or the lobby did not have an RTC room.\n\n @see EOS_Lobby_RemoveNotifyRTCRoomConnectionChanged\n @see EOS_Lobby_AddNotifyRTCRoomConnectionChangedOptions\n @see EOS_Lobby_OnRTCRoomConnectionChangedCallback"]
    pub fn EOS_Lobby_AddNotifyRTCRoomConnectionChanged(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_AddNotifyRTCRoomConnectionChangedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        NotificationFn: EOS_Lobby_OnRTCRoomConnectionChangedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Unregister from receiving notifications when an RTC Room's connection status changes.\n\n This should be called when the local user is leaving a lobby.\n\n @param InId Handle representing the registered callback\n\n @see EOS_Lobby_AddNotifyRTCRoomConnectionChanged"]
    pub fn EOS_Lobby_RemoveNotifyRTCRoomConnectionChanged(
        Handle: EOS_HLobby,
        InId: EOS_NotificationId,
    );
}
unsafe extern "C" {
    #[doc = " Get the Connection string for an EOS lobby. The connection string describes the presence of a player in terms of game state.\n Xbox platforms expect titles to embed this into their MultiplayerActivity at creation.\n When present, the SDK will use this value to populate session presence in the social overlay and facilitate platform invitations.\n\n @param Options Structure containing the input parameters. API version, the LobbyID of the lobby to generate the string from and the PUID of the requesting user.\n @param OutBuffer The buffer to store the null-terminated ConnectString within\n @param InOutBufferLength In: The maximum amount of writable chars in OutBuffer see EOS_LOBBY_GETCONNECTSTRING_BUFFER_SIZE, Out: The minimum amount of chars needed in OutBuffer to store the ConnectString (including the null-terminator). May be set to zero depending on the error result.\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if retrieving the string was successful.\n - EOS_InvalidParameters if the OutBuffer or InOutBufferLength are null.\n - EOS_IncompatibleVersion if the API version passed in is incorrect.\n - EOS_NotFound if no lobby is found matching the LobbyID and PUID provided.\n - EOS_LimitExceeded if the provided InOutBufferLength is too small to contain the resulting string.\n\n @see EOS_Lobby_GetConnectStringOptions"]
    pub fn EOS_Lobby_GetConnectString(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_GetConnectStringOptions,
        OutBuffer: *mut ::std::os::raw::c_char,
        InOutBufferLength: *mut u32,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Parse the ConnectString for an EOS lobby invitation to extract just the lobby ID.\n Used for joining a lobby from a connection string (as generated by GetConnectString) found in a platform invitation or presence.\n\n @param Options Structure containing the input parameters. API version and ConnectString.\n @param OutBuffer The buffer to store the null-terminated lobby ID within\n @param InOutBufferLength In: The maximum amount of writable chars in OutBuffer see EOS_LOBBY_PARSECONNECTSTRING_BUFFER_SIZE, Out: The minimum amount of chars needed in OutBuffer to store the LobbyID (including the null-terminator). May be set to zero depending on the error result.\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if retrieving the string was successful.\n - EOS_InvalidParameters if the OutBuffer or InOutBufferLength are null.\n - EOS_IncompatibleVersion if the API version passed in is incorrect.\n - EOS_LimitExceeded if the provided InOutBufferLength is too small to contain the resulting string.\n\n @see EOS_Lobby_ParseConnectStringOptions"]
    pub fn EOS_Lobby_ParseConnectString(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_ParseConnectStringOptions,
        OutBuffer: *mut ::std::os::raw::c_char,
        InOutBufferLength: *mut u32,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Register to receive notifications about leave lobby requests performed by the local user via the overlay.\n When user requests to leave the lobby in the social overlay, the SDK does not automatically leave the lobby, it is up to the game to perform any necessary cleanup and call the EOS_Lobby_LeaveLobby method using the lobbyId sent in the notification function.\n @note If the returned NotificationId is valid, you must call EOS_Lobby_RemoveNotifyLeaveLobbyRequested when you no longer wish to have your NotificationHandler called.\n\n @param Options Structure containing information about the request.\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate.\n @param NotificationFn A callback that is fired when a notification is received.\n\n @return handle representing the registered callback\n\n @see EOS_Lobby_AddNotifyLeaveLobbyRequestedOptions\n @see EOS_Lobby_OnLeaveLobbyRequestedCallback"]
    pub fn EOS_Lobby_AddNotifyLeaveLobbyRequested(
        Handle: EOS_HLobby,
        Options: *const EOS_Lobby_AddNotifyLeaveLobbyRequestedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        NotificationFn: EOS_Lobby_OnLeaveLobbyRequestedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Unregister from receiving notifications when a user performs a leave lobby action via the overlay.\n\n @param InId Handle representing the registered callback"]
    pub fn EOS_Lobby_RemoveNotifyLeaveLobbyRequested(Handle: EOS_HLobby, InId: EOS_NotificationId);
}
unsafe extern "C" {
    #[doc = " Set the bucket ID associated with this lobby.\n Values such as region, game mode, etc can be combined here depending on game need.\n Setting this is strongly recommended to improve search performance.\n\n @param Options Options associated with the bucket ID of the lobby\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if setting this parameter was successful\n - EOS_InvalidParameters if the bucket ID is invalid or null\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbyModification_SetBucketIdOptions"]
    pub fn EOS_LobbyModification_SetBucketId(
        Handle: EOS_HLobbyModification,
        Options: *const EOS_LobbyModification_SetBucketIdOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Set the permissions associated with this lobby.\n The permissions range from \"public\" to \"invite only\" and are described by EOS_ELobbyPermissionLevel\n\n @param Options Options associated with the permission level of the lobby\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if setting this parameter was successful\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbyModification_SetPermissionLevelOptions"]
    pub fn EOS_LobbyModification_SetPermissionLevel(
        Handle: EOS_HLobbyModification,
        Options: *const EOS_LobbyModification_SetPermissionLevelOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Set the maximum number of members allowed in this lobby.\n When updating the lobby, it is not possible to reduce this number below the current number of existing members\n\n @param Options Options associated with max number of members in this lobby\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if setting this parameter was successful\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbyModification_SetMaxMembersOptions"]
    pub fn EOS_LobbyModification_SetMaxMembers(
        Handle: EOS_HLobbyModification,
        Options: *const EOS_LobbyModification_SetMaxMembersOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Allows enabling or disabling invites for this lobby.\n The lobby will also need to have `bPresenceEnabled` true.\n\n @param Options Options associated with invites allowed flag for this lobby.\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if setting this parameter was successful\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbyModification_SetInvitesAllowedOptions"]
    pub fn EOS_LobbyModification_SetInvitesAllowed(
        Handle: EOS_HLobbyModification,
        Options: *const EOS_LobbyModification_SetInvitesAllowedOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Associate an attribute with this lobby\n An attribute is something may be public or private with the lobby.\n If public, it can be queried for in a search, otherwise the data remains known only to lobby members\n\n @param Options Options to set the attribute and its visibility state\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if setting this parameter was successful\n - EOS_InvalidParameters if the attribute is missing information or otherwise invalid\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbyModification_AddAttributeOptions"]
    pub fn EOS_LobbyModification_AddAttribute(
        Handle: EOS_HLobbyModification,
        Options: *const EOS_LobbyModification_AddAttributeOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Remove an attribute associated with the lobby\n\n @param Options Specify the key of the attribute to remove\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if removing this parameter was successful\n - EOS_InvalidParameters if the key is null or empty\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbyModification_RemoveAttributeOptions"]
    pub fn EOS_LobbyModification_RemoveAttribute(
        Handle: EOS_HLobbyModification,
        Options: *const EOS_LobbyModification_RemoveAttributeOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Associate an attribute with a member of the lobby\n Lobby member data is always private to the lobby\n\n @param Options Options to set the attribute and its visibility state\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if setting this parameter was successful\n - EOS_InvalidParameters if the attribute is missing information or otherwise invalid\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbyModification_AddMemberAttributeOptions"]
    pub fn EOS_LobbyModification_AddMemberAttribute(
        Handle: EOS_HLobbyModification,
        Options: *const EOS_LobbyModification_AddMemberAttributeOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Remove an attribute associated with of member of the lobby\n\n @param Options Specify the key of the member attribute to remove\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if removing this parameter was successful\n - EOS_InvalidParameters if the key is null or empty\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbyModification_RemoveMemberAttributeOptions"]
    pub fn EOS_LobbyModification_RemoveMemberAttribute(
        Handle: EOS_HLobbyModification,
        Options: *const EOS_LobbyModification_RemoveMemberAttributeOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Set the Allowed Platform IDs for the lobby\n\n @param Options Options associated with allowed Platform IDs for this lobby\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if setting this parameter was successful\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n - EOS_InvalidParameters if the AllowedPlatformIds array is null but the count is 0 or if the count is greater than 0 and the array is null.\n\n @see EOS_LobbyModification_SetAllowedPlatformIdsOptions"]
    pub fn EOS_LobbyModification_SetAllowedPlatformIds(
        Handle: EOS_HLobbyModification,
        Options: *const EOS_LobbyModification_SetAllowedPlatformIdsOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Get the product user ID of the current owner for a given lobby\n\n @param Options Structure containing the input parameters\n\n @return the product user ID for the lobby owner or null if the input parameters are invalid\n\n @see EOS_LobbyDetails_GetLobbyOwnerOptions"]
    pub fn EOS_LobbyDetails_GetLobbyOwner(
        Handle: EOS_HLobbyDetails,
        Options: *const EOS_LobbyDetails_GetLobbyOwnerOptions,
    ) -> EOS_ProductUserId;
}
unsafe extern "C" {
    #[doc = " EOS_LobbyDetails_CopyInfo is used to immediately retrieve a copy of lobby information from a given source such as a existing lobby or a search result.\n If the call returns an EOS_Success result, the out parameter, OutLobbyDetailsInfo, must be passed to EOS_LobbyDetails_Info_Release to release the memory associated with it.\n\n @param Options Structure containing the input parameters\n @param OutLobbyDetailsInfo Out parameter used to receive the EOS_LobbyDetails_Info structure.\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the information is available and passed out in OutLobbyDetailsInfo\n - EOS_InvalidParameters if you pass a null pointer for the out parameter\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbyDetails_Info\n @see EOS_LobbyDetails_CopyInfoOptions\n @see EOS_LobbyDetails_Info_Release"]
    pub fn EOS_LobbyDetails_CopyInfo(
        Handle: EOS_HLobbyDetails,
        Options: *const EOS_LobbyDetails_CopyInfoOptions,
        OutLobbyDetailsInfo: *mut *mut EOS_LobbyDetails_Info,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " EOS_LobbyDetails_CopyMemberInfo is used to immediately retrieve a copy of lobby member information from an existing lobby.\n If the call returns an EOS_Success result, the out parameter, OutLobbyDetailsMemberInfo, must be passed to EOS_LobbyDetails_MemberInfo_Release to release the memory associated with it.\n Note: this information is only available if you are actively in the lobby.  It is not available for search results.\n\n @param Options Structure containing the input parameters\n @param OutLobbyDetailsMemberInfo Out parameter used to receive the EOS_LobbyDetails_Info structure.\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the information is available and passed out in OutLobbyMemberDetailsInfo\n - EOS_InvalidParameters if you pass a null pointer for the out parameter\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n - EOS_NotFound if searching for a target user ID returns no results\n\n @see EOS_LobbyDetails_MemberInfo\n @see EOS_LobbyDetails_CopyMemberInfoOptions\n @see EOS_LobbyDetails_MemberInfo_Release"]
    pub fn EOS_LobbyDetails_CopyMemberInfo(
        Handle: EOS_HLobbyDetails,
        Options: *const EOS_LobbyDetails_CopyMemberInfoOptions,
        OutLobbyDetailsMemberInfo: *mut *mut EOS_LobbyDetails_MemberInfo,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Get the number of attributes associated with this lobby\n\n @param Options the Options associated with retrieving the attribute count\n\n @return number of attributes on the lobby or 0 if there is an error\n\n @see EOS_LobbyDetails_GetAttributeCountOptions"]
    pub fn EOS_LobbyDetails_GetAttributeCount(
        Handle: EOS_HLobbyDetails,
        Options: *const EOS_LobbyDetails_GetAttributeCountOptions,
    ) -> u32;
}
unsafe extern "C" {
    #[doc = " EOS_LobbyDetails_CopyAttributeByIndex is used to immediately retrieve a copy of a lobby attribute from a given source such as a existing lobby or a search result.\n If the call returns an EOS_Success result, the out parameter, OutAttribute, must be passed to EOS_Lobby_Attribute_Release to release the memory associated with it.\n\n @param Options Structure containing the input parameters\n @param OutAttribute Out parameter used to receive the EOS_Lobby_Attribute structure.\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the information is available and passed out in OutAttribute\n - EOS_InvalidParameters if you pass a null pointer for the out parameter\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_Lobby_Attribute\n @see EOS_LobbyDetails_CopyAttributeByIndexOptions\n @see EOS_Lobby_Attribute_Release"]
    pub fn EOS_LobbyDetails_CopyAttributeByIndex(
        Handle: EOS_HLobbyDetails,
        Options: *const EOS_LobbyDetails_CopyAttributeByIndexOptions,
        OutAttribute: *mut *mut EOS_Lobby_Attribute,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " EOS_LobbyDetails_CopyAttributeByKey is used to immediately retrieve a copy of a lobby attribute from a given source such as a existing lobby or a search result.\n If the call returns an EOS_Success result, the out parameter, OutAttribute, must be passed to EOS_Lobby_Attribute_Release to release the memory associated with it.\n\n @param Options Structure containing the input parameters\n @param OutAttribute Out parameter used to receive the EOS_Lobby_Attribute structure.\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the information is available and passed out in OutAttribute\n - EOS_InvalidParameters if you pass a null pointer for the out parameter\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_Lobby_Attribute\n @see EOS_LobbyDetails_CopyAttributeByKeyOptions\n @see EOS_Lobby_Attribute_Release"]
    pub fn EOS_LobbyDetails_CopyAttributeByKey(
        Handle: EOS_HLobbyDetails,
        Options: *const EOS_LobbyDetails_CopyAttributeByKeyOptions,
        OutAttribute: *mut *mut EOS_Lobby_Attribute,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Get the number of members associated with this lobby\n\n @param Options the Options associated with retrieving the member count\n\n @return number of members in the existing lobby or 0 if there is an error\n\n @see EOS_LobbyDetails_GetMemberCountOptions"]
    pub fn EOS_LobbyDetails_GetMemberCount(
        Handle: EOS_HLobbyDetails,
        Options: *const EOS_LobbyDetails_GetMemberCountOptions,
    ) -> u32;
}
unsafe extern "C" {
    #[doc = " EOS_LobbyDetails_GetMemberByIndex is used to immediately retrieve individual members registered with a lobby.\n Note: this information is only available if you are actively in the lobby.  It is not available for search results.\n\n @param Options Structure containing the input parameters\n\n @return the product user ID for the registered member at a given index or null if that index is invalid\n\n @see EOS_LobbyDetails_GetMemberCount\n @see EOS_LobbyDetails_GetMemberByIndexOptions"]
    pub fn EOS_LobbyDetails_GetMemberByIndex(
        Handle: EOS_HLobbyDetails,
        Options: *const EOS_LobbyDetails_GetMemberByIndexOptions,
    ) -> EOS_ProductUserId;
}
unsafe extern "C" {
    #[doc = " EOS_LobbyDetails_GetMemberAttributeCount is used to immediately retrieve the attribute count for members in a lobby.\n Note: this information is only available if you are actively in the lobby.  It is not available for search results.\n\n @param Options Structure containing the input parameters\n\n @return the number of attributes associated with a given lobby member or 0 if that member is invalid\n\n @see EOS_LobbyDetails_GetMemberCount\n @see EOS_LobbyDetails_GetMemberAttributeCountOptions"]
    pub fn EOS_LobbyDetails_GetMemberAttributeCount(
        Handle: EOS_HLobbyDetails,
        Options: *const EOS_LobbyDetails_GetMemberAttributeCountOptions,
    ) -> u32;
}
unsafe extern "C" {
    #[doc = " EOS_LobbyDetails_CopyMemberAttributeByIndex is used to immediately retrieve a copy of a lobby member attribute from an existing lobby.\n If the call returns an EOS_Success result, the out parameter, OutAttribute, must be passed to EOS_Lobby_Attribute_Release to release the memory associated with it.\n Note: this information is only available if you are actively in the lobby.  It is not available for search results.\n\n @param Options Structure containing the input parameters\n @param OutAttribute Out parameter used to receive the EOS_Lobby_Attribute structure.\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the information is available and passed out in OutAttribute\n - EOS_InvalidParameters if you pass a null pointer for the out parameter\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_Lobby_Attribute\n @see EOS_LobbyDetails_CopyMemberAttributeByIndexOptions\n @see EOS_Lobby_Attribute_Release"]
    pub fn EOS_LobbyDetails_CopyMemberAttributeByIndex(
        Handle: EOS_HLobbyDetails,
        Options: *const EOS_LobbyDetails_CopyMemberAttributeByIndexOptions,
        OutAttribute: *mut *mut EOS_Lobby_Attribute,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " EOS_LobbyDetails_CopyMemberAttributeByKey is used to immediately retrieve a copy of a lobby member attribute from an existing lobby.\n If the call returns an EOS_Success result, the out parameter, OutAttribute, must be passed to EOS_Lobby_Attribute_Release to release the memory associated with it.\n Note: this information is only available if you are actively in the lobby.  It is not available for search results.\n\n @param Options Structure containing the input parameters\n @param OutAttribute Out parameter used to receive the EOS_Lobby_Attribute structure.\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the information is available and passed out in OutAttribute\n - EOS_InvalidParameters if you pass a null pointer for the out parameter\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_Lobby_Attribute\n @see EOS_LobbyDetails_CopyMemberAttributeByKeyOptions\n @see EOS_Lobby_Attribute_Release"]
    pub fn EOS_LobbyDetails_CopyMemberAttributeByKey(
        Handle: EOS_HLobbyDetails,
        Options: *const EOS_LobbyDetails_CopyMemberAttributeByKeyOptions,
        OutAttribute: *mut *mut EOS_Lobby_Attribute,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Find lobbies matching the search criteria setup via this lobby search handle.\n When the operation completes, this handle will have the search results that can be parsed\n\n @param Options Structure containing information about the search criteria to use\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate A callback that is fired when the search operation completes, either successfully or in error\n\n @see EOS_LobbySearch_FindOptions\n @see EOS_LobbySearch_OnFindCallback"]
    pub fn EOS_LobbySearch_Find(
        Handle: EOS_HLobbySearch,
        Options: *const EOS_LobbySearch_FindOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_LobbySearch_OnFindCallback,
    );
}
unsafe extern "C" {
    #[doc = " Set a lobby ID to find and will return at most one search result.  Setting TargetUserId or SearchParameters will result in EOS_LobbySearch_Find failing\n\n @param Options A specific lobby ID for which to search\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if setting this lobby ID was successful\n - EOS_InvalidParameters if the lobby ID is invalid or null\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbySearch_SetLobbyIdOptions"]
    pub fn EOS_LobbySearch_SetLobbyId(
        Handle: EOS_HLobbySearch,
        Options: *const EOS_LobbySearch_SetLobbyIdOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Set a target user ID to find.  Setting LobbyId or SearchParameters will result in EOS_LobbySearch_Find failing\n @note a search result will only be found if this user is in a public lobby\n\n @param Options a specific target user ID to find\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if setting this target user ID was successful\n - EOS_InvalidParameters if the target user ID is invalid or null\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbySearch_SetTargetUserIdOptions"]
    pub fn EOS_LobbySearch_SetTargetUserId(
        Handle: EOS_HLobbySearch,
        Options: *const EOS_LobbySearch_SetTargetUserIdOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Add a parameter to an array of search criteria combined via an implicit AND operator.  Setting LobbyId or TargetUserId will result in EOS_LobbySearch_Find failing\n\n @param Options a search parameter and its comparison op\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if setting this search parameter was successful\n - EOS_InvalidParameters if the search criteria is invalid or null\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbySearch_SetParameterOptions\n @see EOS_Lobby_AttributeData\n @see EOS_EComparisonOp"]
    pub fn EOS_LobbySearch_SetParameter(
        Handle: EOS_HLobbySearch,
        Options: *const EOS_LobbySearch_SetParameterOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Remove a parameter from the array of search criteria.\n\n @params Options a search parameter key name to remove\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if removing this search parameter was successful\n - EOS_InvalidParameters if the search key is invalid or null\n - EOS_NotFound if the parameter was not a part of the search criteria\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbySearch_RemoveParameterOptions"]
    pub fn EOS_LobbySearch_RemoveParameter(
        Handle: EOS_HLobbySearch,
        Options: *const EOS_LobbySearch_RemoveParameterOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Set the maximum number of search results to return in the query, can't be more than EOS_LOBBY_MAX_SEARCH_RESULTS\n\n @param Options maximum number of search results to return in the query\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if setting the max results was successful\n - EOS_InvalidParameters if the number of results requested is invalid\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbySearch_SetMaxResultsOptions"]
    pub fn EOS_LobbySearch_SetMaxResults(
        Handle: EOS_HLobbySearch,
        Options: *const EOS_LobbySearch_SetMaxResultsOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Get the number of search results found by the search parameters in this search\n\n @param Options Options associated with the search count\n\n @return return the number of search results found by the query or 0 if search is not complete\n\n @see EOS_LobbySearch_GetSearchResultCountOptions"]
    pub fn EOS_LobbySearch_GetSearchResultCount(
        Handle: EOS_HLobbySearch,
        Options: *const EOS_LobbySearch_GetSearchResultCountOptions,
    ) -> u32;
}
unsafe extern "C" {
    #[doc = " EOS_LobbySearch_CopySearchResultByIndex is used to immediately retrieve a handle to the lobby information from a given search result.\n If the call returns an EOS_Success result, the out parameter, OutLobbyDetailsHandle, must be passed to EOS_LobbyDetails_Release to release the memory associated with it.\n\n @param Options Structure containing the input parameters\n @param OutLobbyDetailsHandle out parameter used to receive the lobby details handle\n\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success if the information is available and passed out in OutLobbyDetailsHandle\n - EOS_InvalidParameters if you pass an invalid index or a null pointer for the out parameter\n - EOS_IncompatibleVersion if the API version passed in is incorrect\n\n @see EOS_LobbySearch_CopySearchResultByIndexOptions\n @see EOS_HLobbyDetails\n @see EOS_LobbyDetails_Release"]
    pub fn EOS_LobbySearch_CopySearchResultByIndex(
        Handle: EOS_HLobbySearch,
        Options: *const EOS_LobbySearch_CopySearchResultByIndexOptions,
        OutLobbyDetailsHandle: *mut EOS_HLobbyDetails,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Send a packet to a peer at the specified address. If there is already an open connection to this peer, it will be\n sent immediately. If there is no open connection, an attempt to connect to the peer will be made. An EOS_Success\n result only means the data was accepted to be sent, not that it has been successfully delivered to the peer.\n\n @param Options Information about the data being sent, by who, to who\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success           - If packet was queued to be sent successfully\n - EOS_InvalidParameters - If input was invalid\n - EOS_LimitExceeded     - If amount of data being sent is too large, or the outgoing packet queue was full\n - EOS_NoConnection      - If bDisableAutoAcceptConnection was set to EOS_TRUE and the connection was not currently accepted (call EOS_P2P_AcceptConnection first, or set bDisableAutoAcceptConnection to EOS_FALSE)\n\n @see EOS_P2P_SendPacketOptions"]
    pub fn EOS_P2P_SendPacket(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_SendPacketOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Gets the size of the packet that will be returned by ReceivePacket for a particular user, if there is any available\n packets to be retrieved.\n\n @param Options Information about who is requesting the size of their next packet\n @param OutPacketSizeBytes The amount of bytes required to store the data of the next packet for the requested user\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success - If OutPacketSizeBytes was successfully set and there is data to be received\n - EOS_InvalidParameters - If input was invalid\n - EOS_NotFound  - If there are no packets available for the requesting user\n\n @see EOS_P2P_GetNextReceivedPacketSizeOptions"]
    pub fn EOS_P2P_GetNextReceivedPacketSize(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_GetNextReceivedPacketSizeOptions,
        OutPacketSizeBytes: *mut u32,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Receive the next packet for the local user, and information associated with this packet, if it exists.\n\n @param Options Information about who is requesting the size of their next packet, and how much data can be stored safely\n @param OutPeerId The Remote User who sent data. Only set if there was a packet to receive.\n @param OutSocketId The Socket ID of the data that was sent. Only set if there was a packet to receive.\n @param OutChannel The channel the data was sent on. Only set if there was a packet to receive.\n @param OutData Buffer to store the data being received. Must be at least EOS_P2P_GetNextReceivedPacketSize in length or data will be truncated\n @param OutBytesWritten The amount of bytes written to OutData. Only set if there was a packet to receive.\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success - If the packet was received successfully\n - EOS_InvalidParameters - If input was invalid\n - EOS_NotFound - If there are no packets available for the requesting user\n\n @see EOS_P2P_GetNextReceivedPacketSize\n @see EOS_P2P_ReceivePacketOptions"]
    pub fn EOS_P2P_ReceivePacket(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_ReceivePacketOptions,
        OutPeerId: *mut EOS_ProductUserId,
        OutSocketId: *mut EOS_P2P_SocketId,
        OutChannel: *mut u8,
        OutData: *mut ::std::os::raw::c_void,
        OutBytesWritten: *mut u32,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Listen for incoming connection requests on a particular Socket ID, or optionally all Socket IDs. The bound function\n will only be called if the connection has not already been accepted.\n If the network status changes from offline or disabled to online, you must call this function again.\n @param Options Information about who would like notifications, and (optionally) only for a specific socket\n @param ClientData This value is returned to the caller when ConnectionRequestHandler is invoked\n @param ConnectionRequestHandler The callback to be fired when we receive a connection request\n @return A valid notification ID if successfully bound, or EOS_INVALID_NOTIFICATIONID otherwise\n\n @see EOS_P2P_RemoveNotifyPeerConnectionRequest\n @see EOS_P2P_AddNotifyPeerConnectionRequestOptions\n @see EOS_P2P_OnIncomingConnectionRequestCallback"]
    pub fn EOS_P2P_AddNotifyPeerConnectionRequest(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_AddNotifyPeerConnectionRequestOptions,
        ClientData: *mut ::std::os::raw::c_void,
        ConnectionRequestHandler: EOS_P2P_OnIncomingConnectionRequestCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Stop listening for connection requests on a previously bound handler.\n\n @param NotificationId The previously bound notification ID\n\n @see EOS_P2P_AddNotifyPeerConnectionRequest"]
    pub fn EOS_P2P_RemoveNotifyPeerConnectionRequest(
        Handle: EOS_HP2P,
        NotificationId: EOS_NotificationId,
    );
}
unsafe extern "C" {
    #[doc = " Listen for when a connection is established. This is fired when we first connect to a peer, when we reconnect to a peer after a connection interruption,\n and when our underlying network connection type changes (for example, from a direct connection to relay, or vice versa). Network Connection Type changes\n will always be broadcast with a EOS_CET_Reconnection connection type, even if the connection was not interrupted.\n If the network status changes from offline or disabled to online, you must call this function again.\n\n @param Options Information about who would like notifications about established connections, and for which socket\n @param ClientData This value is returned to the caller when ConnectionEstablishedHandler is invoked\n @param ConnectionEstablishedHandler The callback to be fired when a connection has been established\n @return A valid notification ID if successfully bound, or EOS_INVALID_NOTIFICATIONID otherwise\n\n @see EOS_P2P_AddNotifyPeerConnectionEstablishedOptions\n @see EOS_P2P_OnPeerConnectionEstablishedCallback\n @see EOS_P2P_AddNotifyPeerConnectionInterrupted\n @see EOS_P2P_AddNotifyPeerConnectionClosed\n @see EOS_P2P_RemoveNotifyPeerConnectionEstablished"]
    pub fn EOS_P2P_AddNotifyPeerConnectionEstablished(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_AddNotifyPeerConnectionEstablishedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        ConnectionEstablishedHandler: EOS_P2P_OnPeerConnectionEstablishedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Stop notifications for connections being established on a previously bound handler.\n\n @param NotificationId The previously bound notification ID\n\n @see EOS_P2P_AddNotifyPeerConnectionEstablished"]
    pub fn EOS_P2P_RemoveNotifyPeerConnectionEstablished(
        Handle: EOS_HP2P,
        NotificationId: EOS_NotificationId,
    );
}
unsafe extern "C" {
    #[doc = " Listen for when a previously opened connection is interrupted. The connection will automatically attempt to reestablish, but it may not be successful.\n\n If a connection reconnects, it will trigger the P2P PeerConnectionEstablished notification with the EOS_CET_Reconnection connection type.\n If a connection fails to reconnect, it will trigger the P2P PeerConnectionClosed notification.\n Packets remain queued during connection interruptions. When a connection closes, packets are flushed. This includes reliable packets.\n\n @param Options Information about who would like notifications about interrupted connections, and for which socket\n @param ClientData This value is returned to the caller when ConnectionInterruptedHandler is invoked\n @param ConnectionInterruptedHandler The callback to be fired when an open connection has been interrupted\n @return A valid notification ID if successfully bound, or EOS_INVALID_NOTIFICATIONID otherwise\n\n @see EOS_P2P_AddNotifyPeerConnectionInterruptedOptions\n @see EOS_P2P_OnPeerConnectionInterruptedCallback\n @see EOS_P2P_AddNotifyPeerConnectionEstablished\n @see EOS_P2P_AddNotifyPeerConnectionClosed\n @see EOS_P2P_RemoveNotifyPeerConnectionInterrupted"]
    pub fn EOS_P2P_AddNotifyPeerConnectionInterrupted(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_AddNotifyPeerConnectionInterruptedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        ConnectionInterruptedHandler: EOS_P2P_OnPeerConnectionInterruptedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Stop notifications for connections being interrupted on a previously bound handler.\n\n @param NotificationId The previously bound notification ID\n\n @see EOS_P2P_AddNotifyPeerConnectionInterrupted"]
    pub fn EOS_P2P_RemoveNotifyPeerConnectionInterrupted(
        Handle: EOS_HP2P,
        NotificationId: EOS_NotificationId,
    );
}
unsafe extern "C" {
    #[doc = " Listen for when a previously accepted connection that was either open or pending is closed.\n When a connection closes, packets are flushed. This includes reliable packets.\n\n @param Options Information about who would like notifications about closed connections, and for which socket\n @param ClientData This value is returned to the caller when ConnectionClosedHandler is invoked\n @param ConnectionClosedHandler The callback to be fired when an open connection has been closed\n @return A valid notification ID if successfully bound, or EOS_INVALID_NOTIFICATIONID otherwise\n\n @see EOS_P2P_AddNotifyPeerConnectionClosedOptions\n @see EOS_P2P_OnRemoteConnectionClosedCallback\n @see EOS_P2P_AddNotifyPeerConnectionEstablished\n @see EOS_P2P_AddNotifyPeerConnectionInterrupted\n @see EOS_P2P_RemoveNotifyPeerConnectionClosed"]
    pub fn EOS_P2P_AddNotifyPeerConnectionClosed(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_AddNotifyPeerConnectionClosedOptions,
        ClientData: *mut ::std::os::raw::c_void,
        ConnectionClosedHandler: EOS_P2P_OnRemoteConnectionClosedCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Stop notifications for connections being closed on a previously bound handler.\n\n @param NotificationId The previously bound notification ID\n\n @see EOS_P2P_AddNotifyPeerConnectionClosed"]
    pub fn EOS_P2P_RemoveNotifyPeerConnectionClosed(
        Handle: EOS_HP2P,
        NotificationId: EOS_NotificationId,
    );
}
unsafe extern "C" {
    #[doc = " Accept or Request a connection with a specific peer on a specific Socket ID.\n\n If this connection was not already locally accepted, we will securely message the peer, and trigger a PeerConnectionRequest notification notifying\n them of the connection request. If the PeerConnectionRequest notification is not bound for all Socket IDs or for the requested Socket ID in particular,\n the request will be silently ignored.\n\n If the remote peer accepts the connection, a notification will be broadcast to the EOS_P2P_AddNotifyPeerConnectionEstablished when the connection is\n ready to send packets.\n\n If multiple Socket IDs are accepted with one peer, they will share one physical socket.\n\n Even if a connection is already locally accepted, EOS_Success will still be returned if the input was valid.\n\n @param Options Information about who would like to accept a connection, and which connection\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success - if the provided data is valid\n - EOS_InvalidParameters - if the provided data is invalid\n\n @see EOS_P2P_AcceptConnectionOptions"]
    pub fn EOS_P2P_AcceptConnection(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_AcceptConnectionOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " For all (or optionally one specific) Socket ID(s) with a specific peer: stop receiving packets, drop any locally queued packets, and if no other\n Socket ID is using the connection with the peer, close the underlying connection.\n\n If your application wants to migrate an existing connection with a peer it already connected to, it is recommended to call EOS_P2P_AcceptConnection\n with the new Socket ID first before calling EOS_P2P_CloseConnection, to prevent the shared physical socket from being torn down prematurely.\n\n @param Options Information about who would like to close a connection, and which connection.\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success - if the provided data is valid\n - EOS_InvalidParameters - if the provided data is invalid\n\n @see EOS_P2P_CloseConnectionOptions"]
    pub fn EOS_P2P_CloseConnection(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_CloseConnectionOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Close any open Connections for a specific Peer Connection ID.\n\n @param Options Information about who would like to close connections, and by what socket ID\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success - if the provided data is valid\n - EOS_InvalidParameters - if the provided data is invalid\n\n @see EOS_P2P_CloseConnectionsOptions"]
    pub fn EOS_P2P_CloseConnections(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_CloseConnectionsOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Query the current NAT-type of our connection.\n\n @param Options Information about what version of the EOS_P2P_QueryNATType API is supported\n @param ClientData arbitrary data that is passed back to you in the CompletionDelegate\n @param CompletionDelegate The callback to be fired when we finish querying our NAT type\n\n @see EOS_P2P_QueryNATTypeOptions\n @see EOS_P2P_OnQueryNATTypeCompleteCallback"]
    pub fn EOS_P2P_QueryNATType(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_QueryNATTypeOptions,
        ClientData: *mut ::std::os::raw::c_void,
        CompletionDelegate: EOS_P2P_OnQueryNATTypeCompleteCallback,
    );
}
unsafe extern "C" {
    #[doc = " Get our last-queried NAT-type, if it has been successfully queried.\n\n @param Options Information about what version of the EOS_P2P_GetNATType API is supported\n @param OutNATType The queried NAT Type, or unknown if unknown\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success - if we have cached data\n - EOS_NotFound - If we do not have queried data cached\n\n @see EOS_P2P_GetNATTypeOptions"]
    pub fn EOS_P2P_GetNATType(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_GetNATTypeOptions,
        OutNATType: *mut EOS_ENATType,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Set how relay servers are to be used. This setting does not immediately apply to existing connections, but may apply to existing\n connections if the connection requires renegotiation.\n\n @param Options Information about relay server config options\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success - if the options were set successfully\n - EOS_InvalidParameters - if the options are invalid in some way\n\n @see EOS_P2P_SetRelayControlOptions\n @see EOS_ERelayControl"]
    pub fn EOS_P2P_SetRelayControl(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_SetRelayControlOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Get the current relay control setting.\n\n @param Options Information about what version of the EOS_P2P_GetRelayControl API is supported\n @param OutRelayControl The relay control setting currently configured\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success - if the input was valid\n - EOS_InvalidParameters - if the input was invalid in some way\n\n @see EOS_P2P_GetRelayControlOptions\n @see EOS_ERelayControl"]
    pub fn EOS_P2P_GetRelayControl(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_GetRelayControlOptions,
        OutRelayControl: *mut EOS_ERelayControl,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Set configuration options related to network ports.\n\n @param Options Information about network ports config options\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success - if the options were set successfully\n - EOS_InvalidParameters - if the options are invalid in some way\n\n @see EOS_P2P_SetPortRangeOptions"]
    pub fn EOS_P2P_SetPortRange(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_SetPortRangeOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Get the current chosen port and the amount of other ports to try above the chosen port if the chosen port is unavailable.\n\n @param Options Information about what version of the EOS_P2P_GetPortRange API is supported\n @param OutPort The port that will be tried first\n @param OutNumAdditionalPortsToTry The amount of ports to try above the value in OutPort, if OutPort is unavailable\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success - if the input options were valid\n - EOS_InvalidParameters - if the input was invalid in some way\n\n @see EOS_P2P_GetPortRangeOptions"]
    pub fn EOS_P2P_GetPortRange(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_GetPortRangeOptions,
        OutPort: *mut u16,
        OutNumAdditionalPortsToTry: *mut u16,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Sets the maximum packet queue sizes that packets waiting to be sent or received can use. If the packet queue\n size is made smaller than the current queue size while there are packets in the queue that would push this\n packet size over, existing packets are kept but new packets may not be added to the full queue until enough\n packets are sent or received.\n\n @param Options Information about packet queue size\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success - if the input options were valid\n - EOS_InvalidParameters - if the input was invalid in some way\n\n @see EOS_P2P_SetPacketQueueSizeOptions"]
    pub fn EOS_P2P_SetPacketQueueSize(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_SetPacketQueueSizeOptions,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Gets the current cached information related to the incoming and outgoing packet queues.\n\n @param Options Information about what version of the EOS_P2P_GetPacketQueueInfo API is supported\n @param OutPacketQueueInfo The current information of the incoming and outgoing packet queues\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success - if the input options were valid\n - EOS_InvalidParameters - if the input was invalid in some way\n\n @see EOS_P2P_GetPacketQueueInfoOptions\n @see EOS_P2P_PacketQueueInfo"]
    pub fn EOS_P2P_GetPacketQueueInfo(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_GetPacketQueueInfoOptions,
        OutPacketQueueInfo: *mut EOS_P2P_PacketQueueInfo,
    ) -> EOS_EResult;
}
unsafe extern "C" {
    #[doc = " Listen for when our packet queue has become full. This event gives an opportunity to read packets to make\n room for new incoming packets. If this event fires and no packets are read by calling EOS_P2P_ReceivePacket\n or the packet queue size is not increased by EOS_P2P_SetPacketQueueSize, any packets that are received after\n this event are discarded until there is room again in the queue.\n\n @param Options Information about what version of the EOS_P2P_AddNotifyIncomingPacketQueueFull API is supported\n @param ClientData Arbitrary data that is passed back to you in the CompletionDelegate\n @param IncomingPacketQueueFullHandler The callback to be fired when the incoming packet queue is full\n @return A valid notification ID if successfully bound, or EOS_INVALID_NOTIFICATIONID otherwise\n\n @see EOS_P2P_AddNotifyIncomingPacketQueueFullOptions\n @see EOS_P2P_OnIncomingPacketQueueFullCallback"]
    pub fn EOS_P2P_AddNotifyIncomingPacketQueueFull(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_AddNotifyIncomingPacketQueueFullOptions,
        ClientData: *mut ::std::os::raw::c_void,
        IncomingPacketQueueFullHandler: EOS_P2P_OnIncomingPacketQueueFullCallback,
    ) -> EOS_NotificationId;
}
unsafe extern "C" {
    #[doc = " Stop listening for full incoming packet queue events on a previously bound handler.\n\n @param NotificationId The previously bound notification ID"]
    pub fn EOS_P2P_RemoveNotifyIncomingPacketQueueFull(
        Handle: EOS_HP2P,
        NotificationId: EOS_NotificationId,
    );
}
unsafe extern "C" {
    #[doc = " Clear queued incoming and outgoing packets.\n\n @param Options Information about which queues should be cleared\n @return EOS_EResult containing the result of the operation.\n Possible result codes:\n - EOS_Success - if the input options were valid (even if queues were empty and no packets where cleared)\n - EOS_IncompatibleVersion - if wrong API version\n - EOS_InvalidUser - if an invalid/remote user was used\n - EOS_InvalidParameters - if input was invalid in other way\n\n @see EOS_P2P_ClearPacketQueueOptions"]
    pub fn EOS_P2P_ClearPacketQueue(
        Handle: EOS_HP2P,
        Options: *const EOS_P2P_ClearPacketQueueOptions,
    ) -> EOS_EResult;
}
