using System;
using System.Collections.Generic;
using Abp.Application.Features;
using Abp.Auditing;
using Abp.BackgroundJobs;
using Abp.Dependency;
using Abp.Domain.Uow;
using Abp.EntityHistory;
using Abp.Events.Bus;
using Abp.Notifications;
using Abp.Resources.Embedded;
using Abp.Runtime.Caching.Configuration;
namespace Abp.Configuration.Startup
{
///
/// Used to configure ABP and modules on startup.
///
public interface IAbpStartupConfiguration : IDictionaryBasedConfig
{
///
/// Gets the IOC manager associated with this configuration.
///
IIocManager IocManager { get; }
///
/// Used to set localization configuration.
///
ILocalizationConfiguration Localization { get; }
///
/// Used to configure navigation.
///
INavigationConfiguration Navigation { get; }
///
/// Used to configure .
///
IEventBusConfiguration EventBus { get; }
///
/// Used to configure auditing.
///
IAuditingConfiguration Auditing { get; }
///
/// Used to configure caching.
///
ICachingConfiguration Caching { get; }
///
/// Used to configure multi-tenancy.
///
IMultiTenancyConfig MultiTenancy { get; }
///
/// Used to configure authorization.
///
IAuthorizationConfiguration Authorization { get; }
///
/// Used to configure validation.
///
IValidationConfiguration Validation { get; }
///
/// Used to configure settings.
///
ISettingsConfiguration Settings { get; }
///
/// Gets/sets default connection string used by ORM module.
/// It can be name of a connection string in application's config file or can be full connection string.
///
string DefaultNameOrConnectionString { get; set; }
///
/// Used to configure modules.
/// Modules can write extension methods to to add module specific configurations.
///
IModuleConfigurations Modules { get; }
///
/// Used to configure unit of work defaults.
///
IUnitOfWorkDefaultOptions UnitOfWork { get; }
///
/// Used to configure features.
///
IFeatureConfiguration Features { get; }
///
/// Used to configure background job system.
///
IBackgroundJobConfiguration BackgroundJobs { get; }
///
/// Used to configure notification system.
///
INotificationConfiguration Notifications { get; }
///
/// Used to configure embedded resources.
///
IEmbeddedResourcesConfiguration EmbeddedResources { get; }
///
/// Used to configure entity history.
///
IEntityHistoryConfiguration EntityHistory { get; }
///
/// Used to replace a service type.
/// Given should register an implementation for the .
///
/// The type to be replaced.
/// Replace action.
void ReplaceService(Type type, Action replaceAction);
///
/// Gets a configuration object.
///
T Get();
IList CustomConfigProviders { get; }
Dictionary GetCustomConfig();
}
}