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

#import <KakaoGame/KGPlayer.h>

/**
 * @brief KGLocalPlayer클래스는 로컬(자신의) 플레이어의 정보를 다룬다.<br>
 * KGPlayer를 상속받는다.
 */
@interface KGLocalPlayer : KGPlayer

/**
 * @brief 현재 로컬 플레이어 정보를 가져온다.
 *
 * @return 현재 로컬 플레이어 정보.
 */
+ (instancetype)currentPlayer;

/**
 * @brief 현재 로컬 플레이어의 멤버키 정보를 가져온다.
 *
 * @return 현재 로컬 플레이어 멤버키
 */
- (NSString *)memberKey;

/**
 * @brief 로컬 플레이어의 커스텀 속성의 저장을 요청한다.
 *
 * @param aProperty 속성 값.
 * @param aKey 속성 키.
 * @param completionHandler 완료 핸들러 [error:저장 결과].
 */
- (void)saveCustomProperty:(NSString *)aProperty
                    forKey:(NSString *)aKey
         completionHandler:(void(^)(NSError *error))completionHandler;

/**
 * @brief 로컬 플레이어의 커스텀 속성의 저장을 요청한다.
 *
 * @param properties 속성 데이터.
 * @param completionHandler 완료 핸들러 [error:저장 결과].
 */
- (void)saveCustomProperties:(NSDictionary *)properties completionHandler:(void (^)(NSError *error))completionHandler;

/**
 * @brief 로컬 플레이어의 약관 정보를 가져온다.
 *
 * @param completionHandler 완료 핸들러 [error:저장 결과][agreements:플레이어의 현재 약관 정보 목록].
 */
- (void)getAgreementsWithCompletionHandler:(void (^)(NSError *error, NSDictionary<NSString *, NSString *> *agreements))completionHandler;

/**
 * @brief 로컬 플레이어의 약관 정보 설정을 요청한다.
 *
 * @param agreements 약관 정보.
 * @param completionHandler 완료 핸들러 [error:저장 결과].
 */
- (void)setAgreementsWithAgreements:(NSDictionary<NSString *, NSString *> *)agreements completionHandler:(void (^)(NSError *error))completionHandler;

/**
 * @brief 결제 검증용 UUID를 가져온다.
 *
 * @param completionHandler 완료 핸들러 [error:요청 결과][paymentUserId: 결제 검증용 UUID].
 */
- (void)getPaymentUserIdWithCompletionHandler:(void (^)(NSError *error, NSString *paymentUserId))completionHandler;

@end
