using System;
using System.Threading.Tasks;
using Unity.Services.Core.Internal;
using Unity.Services.Core.Scheduler.Internal;
using Unity.Services.Mediation.Platform;
namespace Unity.Services.Mediation
{
///
/// Class to be instantiated in order to show a Rewarded Ad.
///
public sealed class RewardedAd : IRewardedAd
{
internal const double k_ReloadDelay = 1.0;
///
/// Event to be triggered by the adapter when an Ad is loaded.
///
public event EventHandler OnLoaded;
///
/// Event to be triggered by the adapter when an Ad fails to load.
///
public event EventHandler OnFailedLoad;
///
/// Event to be triggered by the adapter when a Rewarded Ad is shown.
///
public event EventHandler OnShowed;
///
/// Event to be triggered by the adapter when the user clicks on the RewardedAd.
///
public event EventHandler OnClicked;
///
/// Event to be triggered by the adapter when the RewardedAd is closed.
///
public event EventHandler OnClosed;
///
/// Event to be triggered by the adapter when the RewardedAd has an error.
///
public event EventHandler OnFailedShow;
///
/// Event to be triggered by the adapter when a reward needs to be issued.
///
public event EventHandler OnUserRewarded;
///
///Gets the state of the RewardedAd.
///
public AdState AdState => m_RewardedAdImpl.AdState;
///
/// Gets the id of the ad unit.
///
public string AdUnitId => m_RewardedAdImpl.AdUnitId;
IPlatformRewardedAd m_RewardedAdImpl;
TaskCompletionSource