using SVSim.EmulatedEntrypoint.Models.Dtos.Responses.ArenaTwoPick;

namespace SVSim.EmulatedEntrypoint.Services;

public interface IArenaTwoPickService
{
    Task<TopResponseDto> GetTopAsync(long viewerId);
    Task<EntryResponseDto> EntryAsync(long viewerId, int consumeItemType);
    Task<ClassChooseResponseDto> ChooseClassAsync(long viewerId, int classId);
    Task<CardChooseResponseDto> ChooseCardAsync(long viewerId, long selectedId);
    Task<FinishResponseDto> RetireAsync(long viewerId);
    Task<FinishResponseDto> FinishAsync(long viewerId);
    Task<BattleFinishResultDto> RecordBattleResultAsync(long viewerId, bool isWin);
}

public class ArenaTwoPickException : Exception
{
    public string ErrorCode { get; }
    public ArenaTwoPickException(string errorCode) : base(errorCode) { ErrorCode = errorCode; }
}
