// This file is automatically generated.
using System;
using System.Text;
using System.Runtime.InteropServices;

namespace Steam4NET
{

	[StructLayout(LayoutKind.Sequential,Pack=4)]
	public class IClientMatchmakingServersVTable
	{
		public IntPtr RequestInternetServerList0;
		public IntPtr RequestLANServerList1;
		public IntPtr RequestFriendsServerList2;
		public IntPtr RequestFavoritesServerList3;
		public IntPtr RequestHistoryServerList4;
		public IntPtr RequestSpectatorServerList5;
		public IntPtr ReleaseRequest6;
		public IntPtr GetServerDetails7;
		public IntPtr CancelQuery8;
		public IntPtr RefreshQuery9;
		public IntPtr IsRefreshing10;
		public IntPtr GetServerCount11;
		public IntPtr RefreshServer12;
		public IntPtr PingServer13;
		public IntPtr PlayerDetails14;
		public IntPtr ServerRules15;
		public IntPtr CancelServerQuery16;
		public IntPtr _RequestXxxServerList_v00117;
		public IntPtr _GetServerDetails_v00118;
		public IntPtr _CancelQuery_v00119;
		public IntPtr _RefreshQuery_v00120;
		public IntPtr _IsRefreshing_v00121;
		public IntPtr _GetServerCount_v00122;
		public IntPtr _RefreshServer_v00123;
		private IntPtr DTorIClientMatchmakingServers24;
	};
	
	[InteropHelp.InterfaceVersion("CLIENTMATCHMAKINGSERVERS_INTERFACE_VERSION001")]
	public class IClientMatchmakingServers : InteropHelp.NativeWrapper<IClientMatchmakingServersVTable>
	{
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate IntPtr NativeRequestInternetServerListUMUI( IntPtr thisptr, UInt32 iApp, ref MatchMakingKeyValuePair_t ppchFilters, UInt32 nFilters, ref ISteamMatchmakingServerListResponse002 pRequestServersResponse );
		public TClass RequestInternetServerList<TClass>( UInt32 iApp, ref MatchMakingKeyValuePair_t ppchFilters, UInt32 nFilters, ref ISteamMatchmakingServerListResponse002 pRequestServersResponse ) where TClass : InteropHelp.INativeWrapper, new()
		{
			return InteropHelp.CastInterface<TClass>( this.GetFunction<NativeRequestInternetServerListUMUI>( this.Functions.RequestInternetServerList0 )( this.ObjectAddress, iApp, ref ppchFilters, nFilters, ref pRequestServersResponse ) ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate IntPtr NativeRequestLANServerListUI( IntPtr thisptr, UInt32 iApp, ref ISteamMatchmakingServerListResponse002 pRequestServersResponse );
		public TClass RequestLANServerList<TClass>( UInt32 iApp, ref ISteamMatchmakingServerListResponse002 pRequestServersResponse ) where TClass : InteropHelp.INativeWrapper, new()
		{
			return InteropHelp.CastInterface<TClass>( this.GetFunction<NativeRequestLANServerListUI>( this.Functions.RequestLANServerList1 )( this.ObjectAddress, iApp, ref pRequestServersResponse ) ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate IntPtr NativeRequestFriendsServerListUMUI( IntPtr thisptr, UInt32 iApp, ref MatchMakingKeyValuePair_t ppchFilters, UInt32 nFilters, ref ISteamMatchmakingServerListResponse002 pRequestServersResponse );
		public TClass RequestFriendsServerList<TClass>( UInt32 iApp, ref MatchMakingKeyValuePair_t ppchFilters, UInt32 nFilters, ref ISteamMatchmakingServerListResponse002 pRequestServersResponse ) where TClass : InteropHelp.INativeWrapper, new()
		{
			return InteropHelp.CastInterface<TClass>( this.GetFunction<NativeRequestFriendsServerListUMUI>( this.Functions.RequestFriendsServerList2 )( this.ObjectAddress, iApp, ref ppchFilters, nFilters, ref pRequestServersResponse ) ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate IntPtr NativeRequestFavoritesServerListUMUI( IntPtr thisptr, UInt32 iApp, ref MatchMakingKeyValuePair_t ppchFilters, UInt32 nFilters, ref ISteamMatchmakingServerListResponse002 pRequestServersResponse );
		public TClass RequestFavoritesServerList<TClass>( UInt32 iApp, ref MatchMakingKeyValuePair_t ppchFilters, UInt32 nFilters, ref ISteamMatchmakingServerListResponse002 pRequestServersResponse ) where TClass : InteropHelp.INativeWrapper, new()
		{
			return InteropHelp.CastInterface<TClass>( this.GetFunction<NativeRequestFavoritesServerListUMUI>( this.Functions.RequestFavoritesServerList3 )( this.ObjectAddress, iApp, ref ppchFilters, nFilters, ref pRequestServersResponse ) ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate IntPtr NativeRequestHistoryServerListUMUI( IntPtr thisptr, UInt32 iApp, ref MatchMakingKeyValuePair_t ppchFilters, UInt32 nFilters, ref ISteamMatchmakingServerListResponse002 pRequestServersResponse );
		public TClass RequestHistoryServerList<TClass>( UInt32 iApp, ref MatchMakingKeyValuePair_t ppchFilters, UInt32 nFilters, ref ISteamMatchmakingServerListResponse002 pRequestServersResponse ) where TClass : InteropHelp.INativeWrapper, new()
		{
			return InteropHelp.CastInterface<TClass>( this.GetFunction<NativeRequestHistoryServerListUMUI>( this.Functions.RequestHistoryServerList4 )( this.ObjectAddress, iApp, ref ppchFilters, nFilters, ref pRequestServersResponse ) ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate IntPtr NativeRequestSpectatorServerListUMUI( IntPtr thisptr, UInt32 iApp, ref MatchMakingKeyValuePair_t ppchFilters, UInt32 nFilters, ref ISteamMatchmakingServerListResponse002 pRequestServersResponse );
		public TClass RequestSpectatorServerList<TClass>( UInt32 iApp, ref MatchMakingKeyValuePair_t ppchFilters, UInt32 nFilters, ref ISteamMatchmakingServerListResponse002 pRequestServersResponse ) where TClass : InteropHelp.INativeWrapper, new()
		{
			return InteropHelp.CastInterface<TClass>( this.GetFunction<NativeRequestSpectatorServerListUMUI>( this.Functions.RequestSpectatorServerList5 )( this.ObjectAddress, iApp, ref ppchFilters, nFilters, ref pRequestServersResponse ) ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeReleaseRequestB( IntPtr thisptr, Byte[] hServerListRequest );
		public void ReleaseRequest( Byte[] hServerListRequest ) 
		{
			this.GetFunction<NativeReleaseRequestB>( this.Functions.ReleaseRequest6 )( this.ObjectAddress, hServerListRequest ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate gameserveritem_t NativeGetServerDetailsBI( IntPtr thisptr, Byte[] hServerListRequest, Int32 iServer );
		public gameserveritem_t GetServerDetails( Byte[] hServerListRequest ) 
		{
			return this.GetFunction<NativeGetServerDetailsBI>( this.Functions.GetServerDetails7 )( this.ObjectAddress, hServerListRequest, (Int32) hServerListRequest.Length ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeCancelQueryB( IntPtr thisptr, Byte[] hServerListRequest );
		public void CancelQuery( Byte[] hServerListRequest ) 
		{
			this.GetFunction<NativeCancelQueryB>( this.Functions.CancelQuery8 )( this.ObjectAddress, hServerListRequest ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeRefreshQueryB( IntPtr thisptr, Byte[] hServerListRequest );
		public void RefreshQuery( Byte[] hServerListRequest ) 
		{
			this.GetFunction<NativeRefreshQueryB>( this.Functions.RefreshQuery9 )( this.ObjectAddress, hServerListRequest ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeIsRefreshingB( IntPtr thisptr, Byte[] hServerListRequest );
		public bool IsRefreshing( Byte[] hServerListRequest ) 
		{
			return this.GetFunction<NativeIsRefreshingB>( this.Functions.IsRefreshing10 )( this.ObjectAddress, hServerListRequest ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetServerCountB( IntPtr thisptr, Byte[] hServerListRequest );
		public Int32 GetServerCount( Byte[] hServerListRequest ) 
		{
			return this.GetFunction<NativeGetServerCountB>( this.Functions.GetServerCount11 )( this.ObjectAddress, hServerListRequest ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeRefreshServerBI( IntPtr thisptr, Byte[] hServerListRequest, Int32 iServer );
		public void RefreshServer( Byte[] hServerListRequest ) 
		{
			this.GetFunction<NativeRefreshServerBI>( this.Functions.RefreshServer12 )( this.ObjectAddress, hServerListRequest, (Int32) hServerListRequest.Length ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativePingServerUUI( IntPtr thisptr, UInt32 unIP, UInt16 usPort, ref ISteamMatchmakingPingResponse pRequestServersResponse );
		public Int32 PingServer( UInt32 unIP, UInt16 usPort, ref ISteamMatchmakingPingResponse pRequestServersResponse ) 
		{
			return this.GetFunction<NativePingServerUUI>( this.Functions.PingServer13 )( this.ObjectAddress, unIP, usPort, ref pRequestServersResponse ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativePlayerDetailsUUI( IntPtr thisptr, UInt32 unIP, UInt16 usPort, ref ISteamMatchmakingPlayersResponse pRequestServersResponse );
		public Int32 PlayerDetails( UInt32 unIP, UInt16 usPort, ref ISteamMatchmakingPlayersResponse pRequestServersResponse ) 
		{
			return this.GetFunction<NativePlayerDetailsUUI>( this.Functions.PlayerDetails14 )( this.ObjectAddress, unIP, usPort, ref pRequestServersResponse ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeServerRulesUUI( IntPtr thisptr, UInt32 unIP, UInt16 usPort, ref ISteamMatchmakingRulesResponse pRequestServersResponse );
		public Int32 ServerRules( UInt32 unIP, UInt16 usPort, ref ISteamMatchmakingRulesResponse pRequestServersResponse ) 
		{
			return this.GetFunction<NativeServerRulesUUI>( this.Functions.ServerRules15 )( this.ObjectAddress, unIP, usPort, ref pRequestServersResponse ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeCancelServerQueryI( IntPtr thisptr, Int32 hServerQuery );
		public void CancelServerQuery( Int32 hServerQuery ) 
		{
			this.GetFunction<NativeCancelServerQueryI>( this.Functions.CancelServerQuery16 )( this.ObjectAddress, hServerQuery ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void Native_RequestXxxServerList_v001EUMUI( IntPtr thisptr, EMatchMakingType eType, UInt32 iApp, ref MatchMakingKeyValuePair_t ppchFilters, UInt32 nFilters, ref ISteamMatchmakingServerListResponse001 pRequestServersResponse );
		public void _RequestXxxServerList_v001( EMatchMakingType eType, UInt32 iApp, ref MatchMakingKeyValuePair_t ppchFilters, UInt32 nFilters, ref ISteamMatchmakingServerListResponse001 pRequestServersResponse ) 
		{
			this.GetFunction<Native_RequestXxxServerList_v001EUMUI>( this.Functions._RequestXxxServerList_v00117 )( this.ObjectAddress, eType, iApp, ref ppchFilters, nFilters, ref pRequestServersResponse ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate gameserveritem_t Native_GetServerDetails_v001EI( IntPtr thisptr, EMatchMakingType eType, Int32 iServer );
		public gameserveritem_t _GetServerDetails_v001( EMatchMakingType eType, Int32 iServer ) 
		{
			return this.GetFunction<Native_GetServerDetails_v001EI>( this.Functions._GetServerDetails_v00118 )( this.ObjectAddress, eType, iServer ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void Native_CancelQuery_v001E( IntPtr thisptr, EMatchMakingType eType );
		public void _CancelQuery_v001( EMatchMakingType eType ) 
		{
			this.GetFunction<Native_CancelQuery_v001E>( this.Functions._CancelQuery_v00119 )( this.ObjectAddress, eType ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void Native_RefreshQuery_v001E( IntPtr thisptr, EMatchMakingType eType );
		public void _RefreshQuery_v001( EMatchMakingType eType ) 
		{
			this.GetFunction<Native_RefreshQuery_v001E>( this.Functions._RefreshQuery_v00120 )( this.ObjectAddress, eType ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool Native_IsRefreshing_v001E( IntPtr thisptr, EMatchMakingType eType );
		public bool _IsRefreshing_v001( EMatchMakingType eType ) 
		{
			return this.GetFunction<Native_IsRefreshing_v001E>( this.Functions._IsRefreshing_v00121 )( this.ObjectAddress, eType ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 Native_GetServerCount_v001E( IntPtr thisptr, EMatchMakingType eType );
		public Int32 _GetServerCount_v001( EMatchMakingType eType ) 
		{
			return this.GetFunction<Native_GetServerCount_v001E>( this.Functions._GetServerCount_v00122 )( this.ObjectAddress, eType ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void Native_RefreshServer_v001EI( IntPtr thisptr, EMatchMakingType eType, Int32 iServer );
		public void _RefreshServer_v001( EMatchMakingType eType, Int32 iServer ) 
		{
			this.GetFunction<Native_RefreshServer_v001EI>( this.Functions._RefreshServer_v00123 )( this.ObjectAddress, eType, iServer ); 
		}
		
	};
}
