﻿using System;
using System.Collections.Generic;

using Platform101XP.Entities;

namespace Platform101XP.Platforms
{
    public interface IPlatform
    {
        Token GetToken();
        Account GetAccount();
        Product GetProduct(string productId);
        void Initialize();
        void ShowTroublesDialog();
        void Authorize();
        void ShowProfile();
        void PurchaseProduct(string productId, string serverId, Dictionary<string, string> properties);
        void ApplicationReview();
        void ForcedApplicationReview();
        void ApplicationInvite();
        void SendInviteLink(string eventName);
        void GetSocialFriends();
        void LogEvent(string message);
        void SendEventToAnalytic(string eventName, Dictionary<string, string> eventProperties);
        void ShowMessage(string message);
        void FinishPurchase(PurchaseResult purchaseResult);
        void RestoreProducts();
        void PrefetchProduct(string productId);
        void GetProducts(List<string> productIds);
        void CrashLog(string tag, string text);
        void ShowWebStore(Dictionary<string, string> purchaseProperties, List<string> allowedLocale);
        void CheckMobilePurchase(string itemName);
        void TrackSentryEvent(string eventName, Dictionary<string, object> values);
        void TrackSentryException(Exception exception);

        // MARK: Advertising

        void LoadRewardedAd(string id);
        void ShowRewardedAd();
        bool IsRewardedVideoLoaded();

        void LoadInterstitialAd(string id);
        void ShowInterstitialAd();
        bool IsInterstitialAdLoaded();

        void LoadBannerAd(string id);
        void ShowBannerAd();
        void HideBannerAd();
        bool IsBannerAdLoaded();

        void LoadRewardedInterstitialAd(string id);
        void ShowRewardedInterstitialAd();

        void ResetConsentInformation();
    }
}
