using System.Collections.Generic;
using System.Windows.Forms;

namespace QCRPG.Framework;

public abstract class BuilderBase
{
	protected string name;

	protected string dutName;

	protected Logger logger;

	protected GooierBase gooier;

	protected List<WorkerThreadBase> workerThreads = new List<WorkerThreadBase>();

	protected PacketListBase packetList;

	protected APIBase api;

	protected ScripterBase scripter;

	protected Configurer configurer;

	protected bool deviceEmulationMode;

	protected DeviceEmulationModeConfigSettings deviceEmulationModeConfigSettings = new DeviceEmulationModeConfigSettings();

	protected PacketAutoResponder packetAutoResponder;

	public string Name => name;

	public string DutName => dutName;

	public Logger Logger => logger;

	public GooierBase Gooier => gooier;

	public List<WorkerThreadBase> WorkerThreads => workerThreads;

	public PacketListBase PacketList => packetList;

	public APIBase API => api;

	public ScripterBase Scripter => scripter;

	public Configurer Configurer => configurer;

	public abstract void BuildTSL(PacketReceiveMode packetReceiveMode, bool deviceEmulationMode = false, int dutNumber = 1, bool commandLineMode = false, bool automationMode = false);

	public virtual void SetCombinedScripter(CombinedScripter combinedScripter)
	{
	}

	public virtual void SetDeviceListView(ListView listView)
	{
	}

	public virtual void ApplicationReady()
	{
	}

	public virtual bool DeviceEmulationModeIsSupported()
	{
		return false;
	}
}
