using System;
using System.Collections.Generic;
using Mono.Cecil;
namespace BepInEx.Preloader.Patching
{
	/// 
	///     A single assembly patcher.
	/// 
	internal class PatcherPlugin
	{
		public TypeDefinition Type { get; set; }
		/// 
		///     Target assemblies to patch.
		/// 
		public Func> TargetDLLs { get; set; } = null;
		/// 
		///     Initializer method that is run before any patching occurs.
		/// 
		public Action Initializer { get; set; } = null;
		/// 
		///     Finalizer method that is run after all patching is done.
		/// 
		public Action Finalizer { get; set; } = null;
		/// 
		///     The main patcher method that is called on every DLL defined in .
		/// 
		public AssemblyPatcherDelegate Patcher { get; set; } = null;
		/// 
		///     Name of the patcher.
		/// 
		public string Name { get; set; } = string.Empty;
	}
}