using System;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
namespace Unity.Services.Mediation
{
///
/// Interface of a Rewarded Ad on the platform side.
///
interface IPlatformRewardedAd : IDisposable
{
///
/// Event to be triggered by the adapter when an Ad is loaded.
///
event EventHandler OnLoaded;
///
/// Event to be triggered by the adapter when an Ad fails to load.
///
event EventHandler OnFailedLoad;
///
/// Event to be triggered by the adapter when a Rewarded Ad is shown.
///
event EventHandler OnShowed;
///
/// Event to be triggered by the adapter when the user clicks on the RewardedAd.
///
event EventHandler OnClicked;
///
/// Event to be triggered by the adapter when the RewardedAd is closed.
///
event EventHandler OnClosed;
///
/// Event to be triggered by the adapter when the RewardedAd has an error.
///
event EventHandler OnFailedShow;
///
/// Event to be triggered by the adapter when a reward needs to be issued.
///
event EventHandler OnUserRewarded;
///
///Gets the state of the RewardedAd
///
AdState AdState { get; }
///
/// Gets the id of the ad unit.
///
string AdUnitId { get; }
///
/// Method to tell the Mediation SDK to load an Ad.
///
void Load();
///
/// Method to tell the Mediation SDK to show the loaded Ad.
///
/// Optional, allows setting optional parameters for showing a rewarded ad.
void Show(RewardedAdShowOptions showOptions = null);
}
}