using System.Runtime.InteropServices;

namespace QC.QSPRSchedulerWrapper;

[ComVisible(true)]
public interface ITestTree
{
	string LastError { get; }

	int ErrorsExist { get; }

	void RunTree();

	void RerunFailed();

	bool CanRerun();

	void RunTest(string testName);

	void StopTest();

	void AbortTest();

	void RunTreeInteractive();

	int GetExecutionStatus();

	TestInfo GetNextTestInfo();

	int RunNextTest();

	void SetNextTestResult(int status);

	void SetLoopValuesByRow(string folderName, int rowID, string[] values, int valueCount);

	void SelectLoopRows(string folderName, bool set, int startRowId, int endRowId = -1);

	void DeleteLoopRow(string folderName, int rowID);

	void DeleteLoopName(string folderName, string loopname);

	void SelectLoopRowWithValue(string folderName, string loopname, string loopValue, bool set = true);

	void SetParameterValue(string paramname, string paramvalue, string testname = "", bool isPartialName = false);

	void GetParameterValue(string testName, string paramName, out string paramValue);

	void SelectTestToRun(string testName, bool selectedToRun = true);

	void SelectTestFromFolderToRun(string folderName, string testName, bool selectedToRun = true);

	void GetAllFolderTests(string folderName, out string[] tests, out int testCount);

	void GetAllChildTests(string folderName, out string[] tests, out int testCount);

	int GetLoopRowCount(string folderName);

	int SaveTree(string treename = "");

	int SetFolderPosition(int insertPosition);

	QSPRTestNode GetTestNode(string testName);

	int AddDotNetDll(string dllPath);

	int DeleteTest(string TestName);

	int Save();

	int SaveAs(string treeFilePath);

	int SaveAsQSPRFormat(string treeFilePath);

	int PauseTree();

	int ResumeTree();
}
