namespace PixelSecurity.Core.Events
{

	// [TypeInfo RVA: 0x0]
	public class GameEvent`1 : Object
	{
		private readonly System.Collections.Generic.List<System.Action<TArgs>> _listeners; // 0x0

		// RVA: 0x2FEEE94 VA: 0x78186D9E94
		protected override void Finalize();
		/*
		 *   (*(code *)param_2[2])(*param_2,param_2,param_1,0,0);
		 *   return;
		 */
		// RVA: 0x2FEF5D8 VA: 0x78186DA5D8
		public void AddListener(System.Action<TArgs> listener);
		/*
		 *   undefined8 uStack_8;
		 *
		 *   uStack_8 = param_2;
		 *   (*(code *)param_3[2])(*param_3,param_3,param_1,&uStack_8,0);
		 *   return;
		 */
		// RVA: 0x2FEF5D8 VA: 0x78186DA5D8
		public void RemoveListener(System.Action<TArgs> listener);
		/*
		 *   undefined8 uStack_8;
		 *
		 *   uStack_8 = param_2;
		 *   (*(code *)param_3[2])(*param_3,param_3,param_1,&uStack_8,0);
		 *   return;
		 */
		// RVA: 0x2FEEE94 VA: 0x78186D9E94
		public void RemoveAllListeners();
		/*
		 *   (*(code *)param_2[2])(*param_2,param_2,param_1,0,0);
		 *   return;
		 */
		// RVA: 0x3151514 VA: 0x781883C514
		public void Invoke(TArgs arguments, bool inverted);
		/*
		 *   ulong uVar1;
		 *   undefined8 uVar2;
		 *   long lVar3;
		 *   long extraout_x1;
		 *   ulong uStack_68;
		 *   undefined8 uStack_60;
		 *   ulong uStack_58;
		 *   ulong uStack_50;
		 *   undefined8 uStack_48;
		 *   ulong uStack_40;
		 *   undefined8 uStack_30;
		 *
		 *   uVar2 = func_0x0324811c(&UNK_0135f5af);
		 *   func_0x03246e3c(uVar2,0);
		 *   uStack_30 = 0x325152c;
		 *   func_0x03204ad0(&uStack_50,&UNK_0135f5af);
		 *   if ((extraout_x1 != 0) && (*(long *)(extraout_x1 + 0x18) != 0)) {
		 *     func_0x0324eee0(&uStack_68,extraout_x1);
		 *     if ((uStack_50 & 1) != 0) {
		 *       func_0x06cb3df0(uStack_40);
		 *     }
		 *     uStack_48 = uStack_60;
		 *     uStack_50 = uStack_68;
		 *     uStack_40 = uStack_58;
		 *   }
		 *   uVar1 = (ulong)&uStack_50 | 1;
		 *   if ((uStack_50 & 1) != 0) {
		 *     uVar1 = uStack_40;
		 *   }
		 *   uVar2 = func_0x0324811c(uVar1);
		 *   uVar2 = func_0x03246e3c(uVar2,0);
		 *   if ((uStack_50 & 1) != 0) {
		 *     func_0x06cb3df0(uStack_40);
		 *   }
		 *   func_0x032ed34c(uVar2);
		 *   lVar3 = func_0x03251624();
		 *   if (lVar3 == 0) {
		 *     lVar3 = func_0x06cb3e10(0x20);
		 *     *(undefined8 *)(lVar3 + 8) = 0;
		 *     func_0x03227278(lVar3 + 0x10,0,0);
		 *     *(undefined4 *)(lVar3 + 0x18) = 0;
		 *   }
		 *   return lVar3;
		 */
		// RVA: 0x2FEEE94 VA: 0x78186D9E94
		private void CleanupListeners();
		/*
		 *   (*(code *)param_2[2])(*param_2,param_2,param_1,0,0);
		 *   return;
		 */
		// RVA: 0x2FEEE94 VA: 0x78186D9E94
		public void .ctor();
		/*
		 *   (*(code *)param_2[2])(*param_2,param_2,param_1,0,0);
		 *   return;
		 */
	}
}
