namespace Application.Abstractions.Payment;

/// <summary>프론트엔드에 전달할 클라이언트 설정</summary>
public sealed record DanalClientConfig(
    string ClientKey,
    string MerchantID
);

/// <summary>결제 승인 결과 (다날 API 응답 전체)</summary>
public sealed record DanalConfirmResult(
    bool Success,
    string? Code,
    string? Message,
    string? TransactionID,
    string? OrderName,
    int? TotalAmount,
    int? DiscountAmount,
    string? UserName,
    // 카드
    string? TransDate,
    string? TransTime,
    string? CardCode,
    string? CardName,
    string? CardNo,
    byte? InstallmentMonths,
    string? ApproveNo,
    // 휴대폰
    string? ApprovalDateTime,
    string? AuthKey,
    // 계좌이체
    string? AccountNumber,
    string? BankCode,
    string? UserId,
    string? UserEmail,
    // 가상계좌
    string? BankName,
    string? ExpireDate,
    string? ExpireTime,
    string? VirtualAccountNumber,
    string? UseCashReceipt
);

/// <summary>결제 취소 결과 (다날 API 응답 전체)</summary>
public sealed record DanalCancelResult(
    bool Success,
    string? Code,
    string? Message,
    string? OriginalTransactionID,
    int? CancelledAmount,
    string? TransDate,
    string? TransTime,
    string? Balance,
    string? RemainedAmount,
    string? ApprovalDateTime
);