//
//  Common.h
//
//  Copyright © 2024 Jumio Corporation. All rights reserved.
//

#import <Foundation/Foundation.h>

#if __cplusplus
#define JDACLIENT_EXPORT extern "C" __attribute__ ((visibility ("default")))
#else
#define JDACLIENT_EXPORT __attribute__ ((visibility ("default")))
#endif

NS_ASSUME_NONNULL_BEGIN


// DAEventName

typedef NSString* JDAEventName NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(JDAEvent.Name);

JDACLIENT_EXPORT JDAEventName const JDAEventSessionStart;
JDACLIENT_EXPORT JDAEventName const JDAEventNearPhotinusStart;
JDACLIENT_EXPORT JDAEventName const JDAEventNearPhotinusEnd;
JDACLIENT_EXPORT JDAEventName const JDAEventFarPhotinusStart;
JDACLIENT_EXPORT JDAEventName const JDAEventFarPhotinusEnd;
JDACLIENT_EXPORT JDAEventName const JDAEventPhotinusPattern;
JDACLIENT_EXPORT JDAEventName const JDAEventCameraInfo;
JDACLIENT_EXPORT JDAEventName const JDAEventVisorInfo;
JDACLIENT_EXPORT JDAEventName const JDAEventPoseStart;
JDACLIENT_EXPORT JDAEventName const JDAEventPoseReady;
JDACLIENT_EXPORT JDAEventName const JDAEventCameraLivenessStart;
JDACLIENT_EXPORT JDAEventName const JDAEventCameraLivenessReqStatus;
JDACLIENT_EXPORT JDAEventName const JDAEventCameraLivenessEnd;


// DAResponseName

typedef NSString* JDAResponseName NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(JDAResponse.Name);

JDACLIENT_EXPORT JDAResponseName const JDAResponsePose;
JDACLIENT_EXPORT JDAResponseName const JDAResponseServerDataBlob;
JDACLIENT_EXPORT JDAResponseName const JDAResponseUXMessage;
JDACLIENT_EXPORT JDAResponseName const JDAResponseCameraLivenessStatus;


// DAEventAttributeName

typedef NSString* JDAEventAttributeName NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(JDAEventAttribute.Name);

JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeCameraMatrix;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeTargetDepth;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeRoll;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributePitch;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeYaw;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributePseudoPitch;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributePseudoYaw;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeDistance;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeOffsetX;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeOffsetY;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeVisorPoints;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeFaceBrightness;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeServerData;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeFaceROI;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeIOD;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeShift;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeSequenceID;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeDisplayMessage;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributePhotinusColor;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeCameraCommand;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeUICommand;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeUXProgress;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeLivenessBlob;
JDACLIENT_EXPORT JDAEventAttributeName const JDAEventAttributeCaptureError;

typedef NSString* JDAUXMessage NS_TYPED_EXTENSIBLE_ENUM;

JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageStart;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFinish;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageMoreCapturesNeeded;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFaceNoneDetected;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFaceHoldStillInitial;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFaceHoldStill;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFaceMoveCloser;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFaceMoveAway;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFaceTiltUp;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFaceTiltDown;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFaceTiltLeft;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFaceTiltRight;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFaceNotUpright;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFaceKeepCenter;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFaceKeepCenterSevere;
JDACLIENT_EXPORT JDAUXMessage const JDAUXMessageFaceStopMovement;

typedef NSString* JDACameraCommand NS_TYPED_EXTENSIBLE_ENUM;

JDACLIENT_EXPORT JDACameraCommand const JDACameraCommandLockExposureAndWhiteBalance;
JDACLIENT_EXPORT JDACameraCommand const JDACameraCommandUnlockExposureAndWhiteBalance;


typedef NSString* JDAUICommand NS_TYPED_EXTENSIBLE_ENUM;

JDACLIENT_EXPORT JDAUICommand const JDAUICommandHintMoveAway;
JDACLIENT_EXPORT JDAUICommand const JDAUICommandHintMoveCloser;


typedef NSString* JDAMode NS_TYPED_EXTENSIBLE_ENUM;

JDACLIENT_EXPORT JDAMode const JDAModeFaceFinder;
JDACLIENT_EXPORT JDAMode const JDAModePhotinusMA;
JDACLIENT_EXPORT JDAMode const JDAModePremium;
JDACLIENT_EXPORT JDAMode const JDAModeStandard;

JDACLIENT_EXPORT NSExceptionName const JDAInvalidOperationException;

NS_ASSUME_NONNULL_END
