/*
 * ************************************************************************
 *
 * ADOBE SYSTEMS INCORPORATED
 * Copyright 2013 Adobe Systems Incorporated
 * All Rights Reserved.
 * NOTICE:  Adobe permits you to use, modify, and distribute this file in accordance with the 
 * terms of the Adobe license agreement accompanying it.  If you have received this file from a 
 * source other than Adobe, then your use, modification, or distribution of it requires the prior 
 * written permission of Adobe.
 *
 **************************************************************************
 */

package com.adobe.primetime.reference.config;

import com.adobe.mediacore.metadata.AdSignalingMode;
import com.adobe.mediacore.metadata.AdvertisingMetadata;

public interface IAdConfig {

	/**
	 * Determine if advertising workflow is enabled
	 * 
	 * @return true if ad workflow is enabled, false otherwise
	 */
	public boolean isAdvertisingWorkflowEnabled();

	/**
	 * Type of custom ad factory
	 *
	 * @return String the type of custom ad factory type that should be created
	 */
	public String getCustomAdFactoryType();

	/**
	 * Determine if the ads should be clickable
	 * 
	 * @return true if clickable ad feature is enabled, false otherwise
	 */
	public boolean isClickableAdsEnabled();

	/**
	 * Get Auditidue meta data
	 * 
	 * @return AdvertisingMetadata object contains Auditude configuration
	 */
	public AdvertisingMetadata getMetadata();

	/**
	 * Get the list of custom ad tags. These are the custom tag names for ad
	 * replacement.
	 * 
	 * @return an array of ad cue tags
	 */
	public String[] getAdTags();

	/**
	 * Get the default ad signaling mode from config
	 * 
	 * @return AdSignalingMode the default signaling mode
	 */
	public AdSignalingMode getDefaultAdSignalingMode();

	/**
	 * Determine if delayed ad loading is used.
	 * With delayed ad loading, the TVSDK will resolve only
	 * the initial ads and transition the player status to PREPARED.
	 * The rest of the ads are resolved during playback.
	 *
	 * @return true if delayed ad loading is used,
	 * false if delayed ad loading is disabled.
	 */
	boolean useDelayAdLoading();

	/**
	 * Determine whether or not to include pre-roll ads
	 *
	 * @return true if pre-rolls are enabled,
	 * false if pre-rolls are disabled.
	 */
	boolean hasPreroll();

}
