using System;
using UnityEngine;
using Bidon.Mediation;

public class BidonSdkProvider : ISdkProvider
{
    public event EventHandler OnInitialized;

    private IBannerAdProvider _bannerAdProvider;
    private IRewardedAdProvider _rewardedAdProvider;
    private IInterstitialAdProvider _interstitialAdProvider;

#if UNITY_IOS
    private const string BidonAppKey = "BIDON_APP_KEY_IOS";
#else
    private const string BidonAppKey = "BIDON_APP_KEY_ANDROID";
#endif

    public void Initialize()
    {
        AdHelper.Log("[BidonSdkProvider] [Method] Initialize()");

        BidonSdk.Instance.SetLogLevel(Debug.isDebugBuild ? BidonLogLevel.Verbose : BidonLogLevel.Off);
        BidonSdk.Instance.SetBaseUrl("https://b.appbaqend.com");
        BidonSdk.Instance.RegisterDefaultAdapters();

        BidonSdk.Instance.OnInitializationFinished += (_, _) => OnInitialized?.Invoke(this, EventArgs.Empty);

        BidonSdk.Instance.Initialize(BidonAppKey);
    }

    public IBannerAdProvider GetBannerAdProvider()
    {
        AdHelper.Log("[BidonSdkProvider] [Method] GetBannerAdProvider()");

        return _bannerAdProvider ??= new BidonBannerAdProvider(AdConfig.BidonBannerAdAuctionKey);
    }

    public IRewardedAdProvider GetRewardedAdProvider()
    {
        AdHelper.Log("[BidonSdkProvider] [Method] GetRewardedAdProvider()");

        return _rewardedAdProvider ??= new BidonRewardedAdProvider(AdConfig.BidonRewardedAdAuctionKey);
    }

    public IInterstitialAdProvider GetInterstitialAdProvider()
    {
        AdHelper.Log("[BidonSdkProvider] [Method] GetInterstitialAdProvider()");

        return _interstitialAdProvider ??= new BidonInterstitialAdProvider(AdConfig.BidonInterstitialAdAuctionKey);
    }
}
