using System;
using System.Collections.Generic;
using System.Drawing;

namespace QC.QMSCT;

public interface IUnitProgrammerInterface : IDisposable
{
	UnitProgrammerGenericSetup GenericSetup { get; set; }

	UnitProgrammerTechnicalSetup TechnicalSetup { get; set; }

	int COMPortAtStart { get; set; }

	int COMPortAfterPowerCycle { get; set; }

	string SerialNumber { get; set; }

	string TestPlanFilePath { get; set; }

	int TestTimeoutSeconds { get; set; }

	int TestTimeoutSecondsOffset { get; set; }

	string PanelSpecificGV { get; set; }

	string ErrorCode { get; }

	string SubErrorCode { get; }

	string EngineName { get; set; }

	Dictionary<string, string> TechnologySpecificGV { set; }

	bool IsTestTreeValid { get; }

	bool IsProcessAlive { get; }

	int Index { get; set; }

	Color BackGroundColor { get; set; }

	event EventHandler<TextEventArgs> OnReceiveSN;

	event EventHandler<TextEventArgs> OnModifyTestTimeout;

	event EventHandler OnStarted;

	event EventHandler OnShown;

	event EventHandler OnHidden;

	event EventHandler OnExited;

	event EventHandler<TestResultEventArgs> OnDone;

	event EventHandler<LogEventArgs> OnSetStatus;

	event EventHandler<TextEventArgs> OnDisplayStatus;

	event EventHandler<TextEventArgs> OnTestItemStarted;

	event EventHandler<TestResultEventArgs> OnTestItemDone;

	bool ValidateEngineEnvironment();

	bool EnableShow();

	bool EnableHide();

	bool EnableAbort();

	bool EnableStop();

	bool Show();

	bool Hide();

	bool Abort();

	bool Stop();

	void Start();

	void RunTest();

	void Close();
}
