#ifndef _P1_IMAGE_SDK_COMMON_ERROR_CODES_H
#define _P1_IMAGE_SDK_COMMON_ERROR_CODES_H

namespace P1
{
namespace ImageSdk
{

	// NOTE: DO NOT CHANGE THE VALUE OF THE ENUMWERATIONS
	//       C# depends on the values, so it will stop working if the values change
    //-----------------------------------------
	enum [[nodiscard]] ErrorCode
	{
		kNoError = 0,
		kSuccess = kNoError,

		P1ImageSDKReturn_UnknownError = 1,
		kErrorUnknown = P1ImageSDKReturn_UnknownError,

		P1ImageSDKReturn_GenericError = 2,

		P1ImageSDKReturn_ParametersError = 3,

		kErrorInvalidParameter = 4,

		P1ImageSDKReturn_FileOpenError = 5,
		kErrorFileOpen = 6,

		P1ImageSDKReturn_RamFileOpenError = 7,
		P1ImageSDKReturn_BufferSizeError = 8,
		kErrorBufferSize = P1ImageSDKReturn_BufferSizeError,

		P1ImageSDKReturn_ReadImageError = 9,
		kErrorImageRead = P1ImageSDKReturn_ReadImageError,

		P1ImageSDKReturn_WriteImageError = 10,
		kErrorImageWrite = P1ImageSDKReturn_WriteImageError,

		kErrorSdkStateInvalid = 11,
		kErrorAssertionFailed = 12,
		kErrorImageProcessing = 13,

		kErrorTagNotFound = 14,
		kErrorTagTypeInvalid = 15,
		kErrorTagReadFailed = 16,

		kErrorThumbnailReadFailed = 17,

		kErrorAbiBoundaryConsistency = 18,

		kErrorNotInitialized = 19,

		kErrorTagXmpParsing = 20,

		kErrorConfigurationModelPersistance = 21,

		kErrorStitchingProblem = 22,
		kErrorIllegalImageFileForStitching = 23,
		kErrorImageIsNotTheExpected = 24,
		kErrorCalibrationProblem = 25,
		kErrorStackingProblem = 26,
		kErrorCannotCreateStitcher = 27,
		kErrorStitcherObjectNotValid = 28,
		kErrorStackerObjectNotValid = 29,

		kErrorImageExport = 30,

		kErrorIllegalValue = 31,
		kErrorOutOfMemory = 32,

		kErrorBusy = 33,

		kErrorDllFileNotFound = 34,

		kErrorParameterIsNull = 35,

		kErrorHistogramNotValid = 36,

		kErrorObjectNotFound = 37,
		kErrorObjectOperationFailed = 38
	};


} } // P1::CameraSdk

#endif // _P1_IMAGE_SDK_COMMON_ERROR_CODES_H
