using System;
using System.Collections.Generic;
using UnityEditor.AddressableAssets.Settings;
using UnityEngine;
namespace UnityEditor.AddressableAssets.HostingServices
{
///
/// implementations serve Addressable content from the Unity Editor to players running
/// locally or on devices with network access to the Editor.
///
public interface IHostingService
{
///
/// Get the list of root directories being served by this hosting service
///
List HostingServiceContentRoots { get; }
///
/// Get a map of all profile variables and their current values
///
Dictionary ProfileVariables { get; }
///
/// Get a boolean that indicates if this hosting service is running
///
bool IsHostingServiceRunning { get; }
///
/// Start the hosting service
///
void StartHostingService();
///
/// Stop the hosting service
///
void StopHostingService();
///
/// Called by the HostingServicesManager before a domain reload, giving the hosting service
/// an opportunity to persist state information.
///
/// A key/value pair data store for use in persisting state information
void OnBeforeSerialize(KeyDataStore dataStore);
///
/// Called immediatley following a domain reload by the HostingServicesManager, for restoring state information
/// after the service is recreated.
///
/// A key/value pair data store for use in restoring state information
void OnAfterDeserialize(KeyDataStore dataStore);
///
/// Expand special variables from Addressable profiles
///
/// Key name to match
/// replacement string value for key, or null if no match
string EvaluateProfileString(string key);
///
/// The ILogger instance to use for debug log output
///
ILogger Logger { get; set; }
///
/// Draw configuration GUI elements
///
// ReSharper disable once InconsistentNaming
void OnGUI();
///
/// Set by the HostingServicesManager, primarily used to disambiguate multiple instances of the same service
/// in the GUI.
///
string DescriptiveName { get; set; }
///
/// uniquely identifies this service within the scope of the HostingServicesManager
///
int InstanceId { get; set; }
}
}