using System;
using Semver;
using Umbraco.Core.Exceptions;
using Umbraco.Core.Sync;
namespace Umbraco.Core
{
///
/// Represents the state of the Umbraco runtime.
///
public interface IRuntimeState
{
///
/// Gets the version of the executing code.
///
Version Version { get; }
///
/// Gets the version comment of the executing code.
///
string VersionComment { get; }
///
/// Gets the semantic version of the executing code.
///
SemVersion SemanticVersion { get; }
///
/// Gets a value indicating whether the application is running in debug mode.
///
bool Debug { get; }
///
/// Gets a value indicating whether the runtime is the current main domain.
///
bool IsMainDom { get; }
///
/// Get the server's current role.
///
ServerRole ServerRole { get; }
///
/// Gets the Umbraco application url.
///
/// This is eg "http://www.example.com".
Uri ApplicationUrl { get; }
///
/// Gets the Umbraco application virtual path.
///
/// This is either "/" or eg "/virtual".
string ApplicationVirtualPath { get; }
///
/// Gets the runtime level of execution.
///
RuntimeLevel Level { get; }
///
/// Gets the current migration state.
///
string CurrentMigrationState { get; }
///
/// Gets the final migration state.
///
string FinalMigrationState { get; }
///
/// Gets the exception that caused the boot to fail.
///
BootFailedException BootFailedException { get; }
}
}