import { Container } from './container';
import type { UtilityClass, UtilityObject } from './type/utils';
import type { APP_CONFIG, IServiceProvider } from './type/types';
/**
 * Application 核心应用
 * @extends Container
 * @author SunnyXu <xy@ztes.com>
 */
export declare class Application extends Container {
    private static VERSION;
    private adapters;
    private providers;
    /**
     * lifecycle
     * 生命周期
     * @private
     */
    private static lifecycle;
    /**
     * getterProviders Providers 获取器
     */
    getterProviders(): IServiceProvider[];
    /**
     * getProviders
     * 获取
     * @protected
     */
    private static getProviders;
    /**
     * setterProviders Providers
     * 设置器
     * @param providers
     */
    setterProviders(providers: IServiceProvider[]): void;
    /**
     * setProviders
     * 设置
     * @param providers
     */
    static setProviders(providers: IServiceProvider[]): void;
    /**
     * registerProvider
     * @description 注册服务提供者
     * @param Provider
     */
    static registerProvider(Provider: any): void;
    /**
     * registerProviders
     * 批量注册
     * @param providers
     */
    static registerProviders(providers: IServiceProvider[]): void;
    /**
     * config
     * 配置
     * @param {Object} config
     * @param {String} name
     */
    static setConfig(name: string, config: UtilityObject): void;
    /**
     * getConfig
     * 获取
     * @param name
     * @param {Object} def 默认值
     */
    static getConfig(name: string, def?: any): UtilityObject;
    /**
     * setAppConfig
     * 设置App配置
     * @param config
     */
    static setAppConfig(config: APP_CONFIG): void;
    /**
     * getAppConfig
     * 获取App配置
     * @param name
     * @description 遵守getAppConfig中参数值和返回值的约定
     */
    static getAppConfig<T extends keyof APP_CONFIG>(name: T): APP_CONFIG[T];
    /**
     * bindAdapter
     * @description zh-CN 绑定适配器
     * @param Adapter
     * @param payload
     */
    static bindAdapter(Adapter: UtilityClass, payload?: UtilityObject): void;
    /**
     * setAdapter
     * 新增
     * @param adapter
     * @param instance
     * @protected
     */
    setterAdapter(adapter: UtilityClass, instance: UtilityObject): void;
    /**
     * static getAdapter
     * 获取适配器
     * @param adapter 必须是个类
     * @return instance
     */
    static getAdapter(adapter: UtilityClass): any;
    /**
     * static getAdapter
     * 适配器 获取器
     * @param adapter
     */
    getterAdapter(adapter: UtilityClass): any;
    /**
     * getService
     * 获取服务实例
     * @param serviceName
     */
    static getService<T>(serviceName: string): T;
    /**
     * Application instance
     * 获取应用实例
     * @description 应该使用Proxy进行拦截，目前先放行
     */
    static getInstance(): Application;
    /**
     * App run
     * 框架应用运行
     * @param {CallableFunction} callback
     */
    static run(callback?: CallableFunction): void;
}
