//
//  KGErrorCode.h
//  KakaoGame SDK
//
//  Created by Ronaldo Kim on 2016. 9. 19..
//  Copyright (c) 2016. Kakao Corp. All rights reserved.
//

#ifndef IS_SUCCESS
#define IS_SUCCESS( error ) ( error == nil || (error.code == KGErrorSuccess) )
#endif

extern NSString *const KGErrorDomain;       /**< @brief 카카오 게임 에러 도메인. */

typedef NS_ENUM(NSInteger, KGErrorCode)
{
	KGErrorSuccess = 200,                   	/**< @brief 성공 (200). */

	KGErrorBadRequest = 400,                	/**< @brief 잘못된 요청 (400). */
	KGErrorAuthFailure = 401,               	/**< @brief 인증 실패 (401). */
	KGErrorForbidden = 403,                 	/**< @brief 허용되지 않는 요청 (403). */
	KGErrorNotFound = 404,                  	/**< @brief 지원하지 않는 기능 (404). */
	KGErrorNotExistData = 406,              	/**< @brief 존재하지 않는 데이터 검색 요청 (406). */
	KGErrorAlreadyUsedIdpAccount = 406,     	/**< @brief 이미 사용중인 IDP 계정 (406). */
	KGErrorConflictData = 409,              	/**< @brief 데이터 중복 발생 (409). */
	KGErrorPreconditionFailed = 412,        	/**< @brief 로그인 데이터 삭제 필요한 경우의 오류 코드. (412). */
	KGErrorServiceUnavailable = 473,        	/**< @brief 서비스 사용 불가(점검) (473). */
	KGErrorInternalError = 500,             	/**< @brief 서버 시스템 내부 오류 (500). */

	KGErrorNetworkFailure = 1001,           	/**< @brief 네트워크 오류 발생 (1001). */
	KGErrorServerTimeout = 2001,            	/**< @brief 서버 타임아웃 (2001). */
	KGErrorServerException = 2002,          	/**< @brief 서버 동작 중 예외 발생 (2002). */
	KGErrorServerInvalidResponse = 2003,    	/**< @brief 서버에서 잘못된 응답을 전송함 (2003). */
	KGErrorServerConnectionFailed = 2004,   	/**< @brief 서버 커넥션 실패 (2004). */

	KGErrorInitializationFailed = 3000,     	/**< @brief 초기화 실패 (3000). */
	KGErrorNotInitialized = 3001,           	/**< @brief 초기화되지 않음 (3001). */
	KGErrorNotAuthorized = 3002,            	/**< @brief 인증 되지 않은 상태 (3002). */
	KGErrorAlreadyAuthorized = 3003,        	/**< @brief 이미 인증된 상태 (3003). */

	KGErrorInvalidParameter = 4000,         	/**< @brief 파라미터 오류 (4000). */
	KGErrorClientException = 4001,          	/**< @brief 클라이언트 동작 중 예외 발생 (4001). */
	KGErrorInvalidState = 4002,             	/**< @brief 상태 오류 (4002). */
	KGErrorInProgress = 4003,               	/**< @brief 이미 진행중 오류 (4003). */
	KGErrorIdpAuthFailure = 4010,           	/**< @brief IDP 인증 실패 (4010). */
    KGErrorDeviceRegistrationRequired   = 4011, /**< @brief 기기 인증을 필수로 진행해야 서버에 접속할 수 있는 유저 (4011). */
	KGErrorPlayerMarketRefundPunishment = 4060,	/**< @brief 사용자 처벌(마켓 환불 유저)(4060). */
	KGErrorBlockedCountryCode = 4070,			/**< @brief 차단된 국가코드로 로그인 오류(4070). */
	KGErrorBlockedIPAddress = 4080,				/**< @brief 차단된 IP Adress로 로그인시 오류(4080). */

	KGErrorNotSupported = 5001,             	/**< @brief 지원하지 않음 (5001). */
	KGErrorDeviceNotificationSettingOff = 5002,	/**< @brief 디바이스 푸시 설정이 꺼져있음 (5002). */
	
	KGErrorAPINotExists = 6001,					/**< @brief 존재하지 않는 API 호출시 발생.(6001). */
	
	KGErrorInvalidAuthorized = 6100,			/**< @brief 웹 상점 요청에 대한 인증 실패 오류 (6100). */
	KGErrorInvalidItemId = 6101,				/**< @brief itemId가 유효하지 않음.(6101). */
	KGErrorInvalidTransactionId = 6102,			/**< @brief transactionId가 유효하지 않음. (6102). */
	KGErrorInvalidPurchaseToken = 6103,			/**< @brief purchaseToken이 유효하지 않음. (6103). */
	KGErrorIncompletePayment = 6104,			/**< @brief 결제가 완료되지 않음 (6104). */
	KGErrorAlreadyCompleteOrder = 6105,			/**< @brief 아이템이 이미 지급되었음. (6105). */
	KGErrorPaymentFailed = 6106,				/**< @brief 웹 결제 화면에서 결제처리가 실패 되었음. (6106). */
	
	KGErrorExceedMonthlyUsage = 7001,       	/**< @brief 월간 허용된 사용량을 초과 (7001). */
	KGErrorExceedDailyUsage = 7002,        	 	/**< @brief 일간 허용된 사용량을 초과 (7002). */
	KGErrorExceedMaxUploadSize = 7003,     	 	/**< @brief 최대 업로드 사이즈를 초과 (7003). */
	KGErrorExceedMaxUploadNumber = 7004,    	/**< @brief 최대 업로드 개수를 초과 (7004). */

	KGErrorMessageSettingDisabled = 7101,   	/**< @brief 메시지 수신 차단 상태 (7101). */

	KGErrorKakaoTalkNotInstalled = 7201,    	/**< @brief 카카오톡이 설치되어있지 않음 (7201). */

	KGErrorNotKakaoTalkUser = 7202,         	/**< @brief 카카오톡 유저가 아님 (7202). */
	KGErrorUnderAgePlayer = 7203,         		/**< @brief 나이 제한 유저 (7203). */
	KGErrorAgreementRequired = 7204,        	/**< @brief CI 동의 팝업창에서 동의 하지 않음 (7204). */
	
	KGErrorFailSendMessageInMultiPicker = 7301,	/**< @brief 멀티 피커에서 선택한 모든 유저에게 메시지 전송 실패 (7301)  */

	KGErrorFacebookNotInstalled = 8001,			/**< @brief 페이스북 앱이 설치되어있지 않음 (8001). */
	
	KGErrorUserCanceled = 9001,             	/**< @brief 사용자가 취소함 (9001). */
	KGErrorAppTerminate = 9900,             	/**< @brief 앱 종료 상황 (9900). */

	KGErrorUnknown = 9999,                  	/**< @brief 알 수 없는 오류 (9999). */

	KGErrorCouponInvalid = 403,             	/**< @brief 유효하지 않은 쿠폰 (403). */
	KGErrorCouponUsed = 460,                	/**< @brief 이미 사용된 쿠폰 (460). */
	KGErrorCouponSoldOut = 461,             	/**< @brief 전체 수량이 모두 소진됨 (461). */
	KGErrorCouponExpired = 462,             	/**< @brief 유효기간 만료 (462). */
	KGErrorCouponExceed = 463,              	/**< @brief 계정당 사용횟수 초과 (463). */
	KGErrorCouponNotOwner = 464,            	/**< @brief 다른 player에게 지정되어 있는 쿠폰 (464). */
	KGErrorCouponInProgressing = 465,       	/**< @brief 쿠폰 처리중 (465). */
	KGErrorCouponCountOver = 469,       		/**< @brief 쿠폰 입력횟수 초과 (469). */
	KGErrorCouponServerError = 503,         	/**< @brief 서버 에러 (503). */

	KGErrorPlayerPunishment = 461,          	/**< @brief 사용자 처벌 (461). */
	KGErrorPlayerProtection = 462,				/**< @brief 사용자 보호 조치 (462). */
	KGErrorPlayerUnregistered = 463,        	/**< @brief 사용자 탈퇴 (463). */
	KGErrorAccountCreationLimit = 493,			/**< @brief 계정 생성 제한  (483). */
	KGErrorMinorsPlayer = 494,         			/**< @brief 미성년자 유저 제한  (494). */
    
    KGErrorNoData = 410,                        /**< @brief 등록된 데이터가 없음 (410). */
};
