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

namespace Steam4NET
{

	[StructLayout(LayoutKind.Sequential,Pack=4)]
	public class IClientContentServerVTable
	{
		public IntPtr GetHSteamUser0;
		public IntPtr GetSteamID1;
		public IntPtr LogOn2;
		public IntPtr LogOff3;
		public IntPtr BLoggedOn4;
		public IntPtr GetLogonState5;
		public IntPtr BConnected6;
		public IntPtr RaiseConnectionPriority7;
		public IntPtr ResetConnectionPriority8;
		public IntPtr SetCellID9;
		public IntPtr SendClientContentAuthRequest10;
		public IntPtr BCheckTicket11;
		private IntPtr DTorIClientContentServer12;
	};
	
	[InteropHelp.InterfaceVersion("CLIENTCONTENTSERVER_INTERFACE_VERSION001")]
	public class IClientContentServer : InteropHelp.NativeWrapper<IClientContentServerVTable>
	{
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeGetHSteamUser( IntPtr thisptr );
		public Int32 GetHSteamUser(  ) 
		{
			return this.GetFunction<NativeGetHSteamUser>( this.Functions.GetHSteamUser0 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeGetSteamID( IntPtr thisptr, ref UInt64 retarg );
		public CSteamID GetSteamID(  ) 
		{
			UInt64 ret = 0; this.GetFunction<NativeGetSteamID>( this.Functions.GetSteamID1 )( this.ObjectAddress, ref ret ); return new CSteamID(ret);
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeLogOnU( IntPtr thisptr, UInt32 uContentServerID );
		public void LogOn( UInt32 uContentServerID ) 
		{
			this.GetFunction<NativeLogOnU>( this.Functions.LogOn2 )( this.ObjectAddress, uContentServerID ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeLogOff( IntPtr thisptr );
		public void LogOff(  ) 
		{
			this.GetFunction<NativeLogOff>( this.Functions.LogOff3 )( this.ObjectAddress ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeBLoggedOn( IntPtr thisptr );
		public bool BLoggedOn(  ) 
		{
			return this.GetFunction<NativeBLoggedOn>( this.Functions.BLoggedOn4 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate ELogonState NativeGetLogonState( IntPtr thisptr );
		public ELogonState GetLogonState(  ) 
		{
			return this.GetFunction<NativeGetLogonState>( this.Functions.GetLogonState5 )( this.ObjectAddress ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeBConnected( IntPtr thisptr );
		public bool BConnected(  ) 
		{
			return this.GetFunction<NativeBConnected>( this.Functions.BConnected6 )( this.ObjectAddress ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate Int32 NativeRaiseConnectionPriorityE( IntPtr thisptr, EConnectionPriority eConnectionPriority );
		public Int32 RaiseConnectionPriority( EConnectionPriority eConnectionPriority ) 
		{
			return this.GetFunction<NativeRaiseConnectionPriorityE>( this.Functions.RaiseConnectionPriority7 )( this.ObjectAddress, eConnectionPriority ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeResetConnectionPriorityI( IntPtr thisptr, Int32 hRaiseConnectionPriorityPrev );
		public void ResetConnectionPriority( Int32 hRaiseConnectionPriorityPrev ) 
		{
			this.GetFunction<NativeResetConnectionPriorityI>( this.Functions.ResetConnectionPriority8 )( this.ObjectAddress, hRaiseConnectionPriorityPrev ); 
		}
		
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate void NativeSetCellIDU( IntPtr thisptr, UInt32 cellID );
		public void SetCellID( UInt32 cellID ) 
		{
			this.GetFunction<NativeSetCellIDU>( this.Functions.SetCellID9 )( this.ObjectAddress, cellID ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeSendClientContentAuthRequestCUBUB( IntPtr thisptr, UInt64 steamID, UInt32 unContentID, [MarshalAs(UnmanagedType.I1)] bool bUseToken, UInt64 ulSessionToken, [MarshalAs(UnmanagedType.I1)] bool bTokenPresent );
		public bool SendClientContentAuthRequest( CSteamID steamID, UInt32 unContentID, bool bUseToken, UInt64 ulSessionToken, bool bTokenPresent ) 
		{
			return this.GetFunction<NativeSendClientContentAuthRequestCUBUB>( this.Functions.SendClientContentAuthRequest10 )( this.ObjectAddress, steamID.ConvertToUint64(), unContentID, bUseToken, ulSessionToken, bTokenPresent ); 
		}
		
		[return: MarshalAs(UnmanagedType.I1)]
		[UnmanagedFunctionPointer(CallingConvention.ThisCall)] private delegate bool NativeBCheckTicketCUBU( IntPtr thisptr, UInt64 steamID, UInt32 uContentID, Byte[] pvTicketData, UInt32 cubTicketLength );
		public bool BCheckTicket( CSteamID steamID, UInt32 uContentID, Byte[] pvTicketData ) 
		{
			return this.GetFunction<NativeBCheckTicketCUBU>( this.Functions.BCheckTicket11 )( this.ObjectAddress, steamID.ConvertToUint64(), uContentID, pvTicketData, (UInt32) pvTicketData.Length ); 
		}
		
	};
}
