//Used by VrtcalIos to talk to symbols defined in VRTInterface.mm

#if UNITY_IOS

using System;
using System.Runtime.InteropServices;


// Externs used by the iOS component.
public class VrtcalExterns
{
    [DllImport("__Internal")]
    internal static extern void VRTUInitializeSdk(
        int appId,

        VrtcalIos.VRTUSdkInitializedCallback sdkInitializedCallback,
        VrtcalIos.VRTUSdkInitializationFailedWithErrorCallback sdkInitializationFailedWithErrorCallback,

        VrtcalIos.VRTUBannerAdLoadedCallback bannerAdLoadedCallback, 
        VrtcalIos.VRTUBannerAdFailedToLoadCallback bannerAdFailedToLoadCallback,
        VrtcalIos.VRTUBannerVideoStartedCallback bannerVideoStartedCallback,
        VrtcalIos.VRTUBannerVideoCompletedCallback bannerVideoCompletedCallback,
        VrtcalIos.VRTUBannerAdClickedCallback bannerAdClickedCallback,
        VrtcalIos.VRTUBannerAdWillLeaveApplicationCallback bannerAdWillLeaveApplicationCallback,
        VrtcalIos.VRTUBannerAdWillPresentModalCallback bannerAdWillPresentModalCallback,
        VrtcalIos.VRTUBannerAdDidPresentModalCallback bannerAdDidPresentModalCallback,
        VrtcalIos.VRTUBannerAdWillDismissModalCallback bannerAdWillDismissModalCallback,
        VrtcalIos.VRTUBannerAdDidDismissModalCallback bannerAdDidDismissModalCallback,
        
        VrtcalIos.VRTUInterstitialAdLoadedCallback interstitialAdLoadedCallback, 
        VrtcalIos.VRTUInterstitialAdFailedToLoadCallback interstitialAdFailedToLoadCallback,
        VrtcalIos.VRTUInterstitialAdWillShowCallback interstitialAdWillShowCallback,
        VrtcalIos.VRTUInterstitialAdDidShowCallback interstitialAdDidShowCallback,
        VrtcalIos.VRTUInterstitialAdFailedToShowCallback interstitialAdFailedToShowCallback,
        VrtcalIos.VRTUInterstitialVideoStartedCallback interstitialVideoStartedCallback,
        VrtcalIos.VRTUInterstitialVideoCompletedCallback interstitialVideoCompletedCallback,
        VrtcalIos.VRTUInterstitialAdClickedCallback interstitialAdClickedCallback,
        VrtcalIos.VRTUInterstitialAdWillLeaveApplicationCallback interstitialAdWillLeaveApplicationCallback,      
        VrtcalIos.VRTUInterstitialAdWillDismissCallback interstitialAdWillDismissCallback,
        VrtcalIos.VRTUInterstitialAdDidDismissCallback interstitialAdDidDismissCallback
    );

    //PII
    [DllImport("__Internal")]
    internal static extern void VRTUSetPiiData(string data);

    [DllImport("__Internal")]
    internal static extern void VRTUSetPiiDataTypes(string types);

    //Banner
    [DllImport("__Internal")]
    internal static extern void VRTUBannerLoad(int zoneId, float x, float y, float width, float height);

    [DllImport("__Internal")]
    internal static extern void VRTUBannerLoadTop(int zoneId, float width, float height);

    [DllImport("__Internal")]
    internal static extern void VRTUBannerLoadBottom(int zoneId, float width, float height);

    [DllImport("__Internal")]
    internal static extern void VRTUBannerMove(int zoneId, float x, float y);

    [DllImport("__Internal")]
    internal static extern void VRTUBannerDestroy(int zoneId);


    //Interstitial
    [DllImport("__Internal")]
    internal static extern void VRTUInterstitialLoad(int zoneId);

    [DllImport("__Internal")]
    internal static extern void VRTUInterstitialShow(int zoneId);

    [DllImport("__Internal")]
    internal static extern void VRTUInterstitialDestroy(int zoneId);
}


#endif