using SharedKernel.Results;
namespace Application.Abstractions.Kyc;
///
/// NICE 통합인증 API 클라이언트. (token / url / result 3개 endpoint 호출 + 복호화)
///
/// 가이드: .claude/plan/nice-auth-integration.md
///
public interface INiceAuthClient
{
///
/// access_token 발급 (24시간 유효 — 내부에서 Redis 캐시).
/// 운영자는 직접 호출할 일 거의 없음 — RequestAuthUrl/GetResult 가 내부에서 호출.
///
Task> GetTokenAsync(CancellationToken ct);
///
/// 표준창에 띄울 auth_url 발급. transaction_id 는 10분 유효.
/// 가맹점은 응답의 (AuthUrl, TransactionId, RequestNo, Ticket, Iterators) 를 NiceAuthSession 에 저장.
///
///
/// 가맹점 NiceAuthSession.SessionToken. NICE return_url path segment 로 embed 되어 callback 매칭에 사용.
/// (Backend 가 NiceAuthOptions.ReturnUrl base 에 자동 append)
///
Task> RequestAuthUrlAsync(string sessionToken, CancellationToken ct);
///
/// NICE 표준창 인증 완료 후 result 호출 + 복호화. 성공 시 사용자 정보 반환.
///
/// ticket / iterators 는 시점 token 발급의 값
/// (NiceAuthSession 에 보관한 값) 을 그대로 전달해야 함.
///
Task> GetResultAsync(
string requestNo,
string transactionId,
string webTransactionId,
string ticket,
int iterators,
CancellationToken ct);
}