using System.Runtime.InteropServices;

namespace QC.QSPRAutomationInterface;

[ComVisible(true)]
public interface ITestNode
{
	[DispId(30)]
	int Checked { get; set; }

	[DispId(1)]
	TestNode AddTest(string realName, string newTestName);

	[DispId(2)]
	int CreatePreConditionOnTestParam(string conditionName, string testName, string paramName, int conditionSign, int valueType, object value);

	[DispId(3)]
	int CreatePostConditionOnTestParam(string conditionName, string paramName, int conditionSign, int valueType, object value);

	[DispId(4)]
	int CreatePreConditionOnTestResult(string conditionName, string testName, int testResult);

	[DispId(5)]
	int CreatePostConditionOnTestResult(string conditionName, int testResult);

	[DispId(6)]
	int CreatePreConditionOnGlobal(string conditionName, string globalName, int conditionSign, int valueType, object value);

	[DispId(7)]
	int CreatePostConditionOnGlobal(string conditionName, string globalName, int conditionSign, int valueType, object value);

	[DispId(8)]
	int AssignPreCondition(string Formula, int RunWhenConditionMet);

	[DispId(9)]
	int AssignPostCondition(string Formula, int RunWhenConditionMet, int Action, string BranchToTestName);

	[DispId(10)]
	int EnablePreCondition(int enableCondition);

	[DispId(11)]
	int EnablePostCondition(int enableCondition);

	[DispId(12)]
	int SetTestProperty(string propertyName, object value);

	[DispId(13)]
	int IsValid();

	[DispId(14)]
	int ExportToTextFile(string filePath, int includeProperties, int includeParameters, int includeGlobalVals, int includeNotes, int includeLoop);

	[DispId(15)]
	int SetTestParameter(string ParamName, object newVal, string lowerLimit, string upperLimit);

	[DispId(16)]
	TestNode CreateFolder(string subFolderName);

	[DispId(17)]
	int SetLoopType(int countdownValue, string parameterName, string loopValue, int loopType);

	[DispId(18)]
	object GetTestParameterValue(string ParamName, int ConvertToString);

	[DispId(19)]
	int SetTestParamLimit(string ParamName, string LimitValue, int LimitType);

	[DispId(20)]
	string GetTestParamLimit(string ParamName, int LimitType);

	[DispId(21)]
	string GetTestParamUnits(string ParamName);

	[DispId(22)]
	int SetTestParamUnits(string ParamName, string Units);

	[DispId(23)]
	object GetTestPropertyValue(string propertyName, int ConvertToString);

	[DispId(24)]
	TestNode GetNextNode();

	[DispId(25)]
	TestNode GetFirstChild();

	[DispId(26)]
	TestNode GetLastChild();

	[DispId(27)]
	TestNode GetPreviousSibling();

	[DispId(28)]
	TestNode GetNextSibling();

	[DispId(29)]
	int IsFolder();

	[DispId(31)]
	TestNode GetParentFolder();

	[DispId(32)]
	string GetLoopNames();

	[DispId(33)]
	int EnableLoopRow(int rowID, int enableRow);

	[DispId(34)]
	int SetParamLoop(string paramName, string paramValue, string testToUpdate, string loopName);

	[DispId(35)]
	string GetLoopRowsEnabled();

	[DispId(36)]
	string GetParamLoopedTestName(string loopName);

	[DispId(37)]
	string GetLoopParamName(string loopName);

	[DispId(38)]
	TestNode AddTestAtPosition(string realName, string newTestName, int position);

	[DispId(39)]
	TestNode CopyTest(string DestinationFolder, string newTestName, int position);

	[DispId(40)]
	int SetTestParamGvGet(string ParamName, string GvName);

	[DispId(41)]
	int SetTestParamGvSet(string ParamName, string GvName);

	[DispId(42)]
	int SetTestParamGvGetLL(string ParamName, string GvName);

	[DispId(43)]
	int SetTestParamGvGetUL(string ParamName, string GvName);

	[DispId(55)]
	int EnableLoopValues(string LoopName, string Values, int Enable);

	[DispId(56)]
	string GetLoopValues(string LoopName);

	[DispId(57)]
	int EnableDataLogging(int EnableDataLogging, string ParamName);

	[DispId(97)]
	string GetLastError();

	[DispId(98)]
	string LastCallInfo();
}
